commit dfb8ec0208cc3e1beb0731f3a3fe0d8c6ff9d65c Author: david Date: Wed Sep 12 14:11:44 2007 +0000 Migración a Delphi2007 y DA5 git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/branches/D2007-DA5@21 0c75b7a4-871f-7646-8a2f-f78d34cc349f diff --git a/Build/Build.fbl5 b/Build/Build.fbl5 new file mode 100644 index 00000000..c3a82472 Binary files /dev/null and b/Build/Build.fbl5 differ diff --git a/Build/Build.fbp5 b/Build/Build.fbp5 new file mode 100644 index 00000000..8a6318ba --- /dev/null +++ b/Build/Build.fbp5 @@ -0,0 +1,2848 @@ + + + + + + base.fbz5 + + + 0 + + + + False + True + Main + {4C1B4E5D-F42F-4877-9F28-41B527858954} + + FinalBuilderAction + 0 + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 0 + + False + True + True + True + ftString + False + True + False + + 0 + smNone + %FBPROJECTDIR% + False + 0 + 1000 + False + project_path + + + + + 0 + {78526C82-A8E7-42B3-8C9D-1E229C79D915} + + + True + False + True + False + True + False + + 0 + False + 0 + 1000 + False + True + 2 + + True + True + + project_path + \Build + + False + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 8388736 + + + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + + + True + True + False + False + True + + + True + False + + False + + True + False + True + + 0 + False + + + 0 + 0 + tpNormal + True + 1000 + rcEqualTo + 0 + %source_path% + False + True + 1 + True + + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 8388736 + + + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + True + False + _aux_path + False + True + False + + + + 0 + False + 0 + 1000 + True + False + + + + 0 + + True + True + %_aux_path% + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + + 0 + + True + True + _aux_path + False + True + False + + 0 + False + 0 + 1000 + False + + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 0 + + + + True + True + True + False + True + False + False + + 0 + False + 0 + 1000 + False + + + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + Servidor + 0 + + Servidor + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + %project_path%\Resources\Iconos\Servidor.ico + False + True + False + True + False + False + False + False + False + False + False + True + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Servidor\FactuGES_Server.dpr + True + 0 + + + rcBorland + 1000 + %source_path%\Servidor\ + False + True + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + True + + + + False + False + False + False + False + True + False + False + + + + + False + + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + True + %output_path%\Servidor + False + + False + fa8 + False + False + .\ + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + .\ + False + False + True + + + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + 16711680 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + # + 16711680 + + # + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + Base + 8388736 + + Base + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 2 + 0 + 0 + False + 0 + %source_path%\Base\BaseD10.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %base_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + True + False + + True + True + True + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + 0 + 0 + False + 0 + %source_path%\ControlesBase\ControlesBaseD10.dpk + True + 3 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %base_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + True + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\Parametros\Cliente\Parametros.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %base_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 3 + 1048576 + 16384 + + True + True + %output_path%\Cliente + False + + False + fa8 + True + False + + True + True + True + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + 0 + 0 + False + 0 + %source_path%\Usuarios\Usuarios.dpk + True + 3 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 3 + 1048576 + 16384 + + True + True + %output_path%\Cliente + False + + False + fa8 + True + False + + True + True + True + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Configuracion\Configuracion.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 3 + 1048576 + 16384 + + True + True + %output_path%\Cliente + False + + False + fa8 + True + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + Módulos + 8388736 + + Módulos + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\FicherosEDI\Cliente\FicherosEDI.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + True + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\VentasTerminadas\Cliente\VentasTerminadas.dpk + True + 3 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + True + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + True + False + + True + True + True + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\VentasProceso\Cliente\VentasProceso.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\ReferenciaGenerica\Cliente\ReferenciaGenerica.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\Recepciones\Cliente\Recepciones.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\Devoluciones\Cliente\Devoluciones.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\Traspasos\Cliente\Traspasos.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + False + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Release + False + + + True + True + + False + + False + False + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Modulos\Stock\Cliente\Stock.dpk + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usPackages,usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + %package_path% + + + + False + %modules_dcp_path% + False + + False + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path% + 0 + False + 3 + 1048576 + 16384 + + True + True + %output_path%\Cliente + False + + False + fa8 + False + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + False + True + + + + + Cliente + 8388736 + + Cliente + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + + 0 + + True + True + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + %project_path%\Resources\Iconos\Cliente.ico + False + True + False + True + False + False + False + False + False + False + False + False + 3081 + + 1 + 0 + 0 + False + 0 + %source_path%\Cliente\AdminPV.dpr + True + 0 + + + rcBorland + 1000 + + False + True + True + False + [usCompiler,usLinker,usVersionInfo] + True + True + + + + False + False + True + False + False + True + False + False + + + + DEBUG + False + + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path%;%modules_dcp_path% + 0 + True + 0 + 1048576 + 16384 + + True + True + %output_path%\Cliente + False + BaseD10;Configuracion;ControlesBaseD10;Usuarios;FicherosEDI;VentasProceso;VentasTerminadas;ReferenciaGenerica + False + fa8 + True + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + .\ + False + True + True + + + + + + + + 0 + + True + False + False + True + True + 0 + 1252 + 12 + Debug + False + + + True + True + + False + %project_path%\Resources\Iconos\CargaEDI.ico + False + False + True + True + False + False + False + False + False + False + False + False + 3082 + + 2 + 0 + 0 + False + 0 + %source_path%\CargaEDI\CargaEDI.dpr + True + 0 + + + rcBorland + 1000 + + False + False + False + False + [usCompiler,usLinker,usVersionInfo] + False + False + + + + False + False + False + False + False + True + False + False + + + + + False + + True + + True + + False + True + False + False + True + 4194304 + False + False + False + True + %library_path%;%modules_dcp_path% + 0 + True + 3 + 1048576 + 16384 + + True + True + %output_path%\Cliente + False + BaseD10;Configuracion;FicherosEDI + False + fa8 + True + False + + True + True + False + False + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + True + True + + + + + + + 0 + + + + False + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + {A78530B0-8E25-4ACF-BCD0-410E385473A0} + + + + + True + False + True + False + True + False + + 0 + False + 0 + 1000 + False + True + 2 + %output_path%\Debug\Servidor\FactuGES_Server.exe + + True + True + False + True + True + True + False + False + False + + + + + 0 + {A78530B0-8E25-4ACF-BCD0-410E385473A0} + + + + + True + False + True + False + True + False + + 0 + False + 0 + 1000 + False + True + 2 + %output_path%\Debug\Cliente\FactuGES.exe + + True + True + False + True + True + True + False + False + False + + + + + + 8388736 + + + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + 0 + + False + True + True + False + False + %source_path%\Informes\*.* + True + False + True + False + + 0 + False + False + 0 + False + 1000 + False + %output_path%\Servidor\Informes + True + + + + + + 0 + + True + False + True + efHTML + False + True + True + True + True + True + True + True + True + False + + 0 + False + + + %project_path%\Build\buildlog.html + 0 + 1000 + False + + + + + + True + False + OnFailure + {BA6B406D-5FE5-4FF9-8D33-0459EBECDF95} + + FinalBuilderAction + 0 + + True + True + False + True + False + + 0 + False + 0 + 1000 + False + + + + + Project + + %project_path%\Output\Debug + True + False + False + output_path + vtProject + + + + + False + False + False + search_path + vtProject + + + + %DELPHI2007DIR%\Lib;%library_3rdparty_path% + True + False + False + library_path + vtProject + + + %output_path%\Cliente + True + False + False + package_path + vtProject + + + + + False + True + False + project_path + vtProject + + + %source_path%\Lib + True + False + False + modules_dcp_path + vtProject + + + %source_path%\Lib + True + False + False + base_dcp_path + vtProject + + + %DELPHI2007% + False + False + False + DELPHI + vtProject + + + %project_path%\Source + True + False + False + source_path + vtProject + + + %DELPHI2007DIR%\Lib\Indy10;%project_path%\Lib;%project_path%\Lib\RemObjects\RemObjects_SDK;%project_path%\Lib\RemObjects\Data_Abstract;%project_path%\Lib\CCPack;%project_path%\Lib\CFPack;%project_path%\Lib\GUISDK;%project_path%\Lib\PluginSDK;%project_path%\Lib\DevExpressVCL;%project_path%\Lib\FastReport3;%project_path%\Lib\JCL;%project_path%\Lib\JVCL;%project_path%\Lib\PngComponents;%project_path%\Lib\cxIntl5;%project_path%\Lib\cxIntlPrintSys3;%project_path%\Lib\TB2k+TBX;%project_path%\Lib\Mustangpeak\MPCommonLib;%project_path%\Lib\Mustangpeak\EasyListview; + True + False + False + library_3rdparty_path + vtProject + + + C:\Varela_D2007\Output + True + False + False + path_aux + vtProject + + + + False + False + False + _aux_path + vtProject + + + + diff --git a/Build/Build.fbv b/Build/Build.fbv new file mode 100644 index 00000000..7c0b3370 --- /dev/null +++ b/Build/Build.fbv @@ -0,0 +1 @@ + diff --git a/Build/Build.fbw b/Build/Build.fbw new file mode 100644 index 00000000..e69de29b diff --git a/Build/Build.lck b/Build/Build.lck new file mode 100644 index 00000000..20d5cb86 Binary files /dev/null and b/Build/Build.lck differ diff --git a/Database/FACTUGES.FDB b/Database/FACTUGES.FDB new file mode 100644 index 00000000..6dda0c85 Binary files /dev/null and b/Database/FACTUGES.FDB differ diff --git a/Database/FACTUGES.FDB_ b/Database/FACTUGES.FDB_ new file mode 100644 index 00000000..e8c72d9d Binary files /dev/null and b/Database/FACTUGES.FDB_ differ diff --git a/Database/SCRIPT para migración tecsitel.TXT b/Database/SCRIPT para migración tecsitel.TXT new file mode 100644 index 00000000..c43427db --- /dev/null +++ b/Database/SCRIPT para migración tecsitel.TXT @@ -0,0 +1,303 @@ +delete from contactos_categorias; +delete from contactos_direcciones; +delete from contactos_datos_banco; +delete from clientes_dtos_proveedores; +delete from agentes_comisiones; +delete from clientes_datos; +delete from proveedores_datos; +delete from personal_datos; + +delete from pedidos_cliente_detalles; +delete from albaranes_cliente_detalles; +delete from facturas_cliente_detalles; +delete from pagos_cliente; +delete from facturas_cliente; +delete from albaranes_cliente; +delete from pedidos_cliente; + +delete from pedidos_proveedor_detalles; +delete from albaranes_proveedor_detalles; +delete from facturas_proveedor_detalles; +delete from pagos_proveedor; +delete from facturas_proveedor; +delete from albaranes_proveedor; +delete from pedidos_proveedor; + +delete from comisiones_liquidadas; +delete from contactos; + + +Extract MetaData con cmapos blob, lanzar script en nueva base de datos + +CREATE TABLE PROVEEDORES ( + CODIGO VARCHAR(10) NOT NULL, + NIFCIF VARCHAR(10) CHARACTER SET ISO8859_1, + NOMBRE VARCHAR(100) CHARACTER SET ISO8859_1, + CALLE VARCHAR(150) CHARACTER SET ISO8859_1, + NUMERO VARCHAR(20) CHARACTER SET ISO8859_1, + PISO VARCHAR(20) CHARACTER SET ISO8859_1, + CODIGOPOSTAL VARCHAR(5) CHARACTER SET ISO8859_1, + POBLACION VARCHAR(40) CHARACTER SET ISO8859_1, + PROVINCIA VARCHAR(30) CHARACTER SET ISO8859_1, + TELEFONO1 VARCHAR(30) CHARACTER SET ISO8859_1, + TELEFONO2 VARCHAR(30) CHARACTER SET ISO8859_1, + FAX VARCHAR(30) CHARACTER SET ISO8859_1, + CORREO VARCHAR(60) CHARACTER SET ISO8859_1, + PERSONACONTACTO VARCHAR(100) CHARACTER SET ISO8859_1, + OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ISO8859_1, + CODIGOCLIENTE VARCHAR(10), + ETIQUETADO SMALLINT, + ULTIMOCAMBIO TIMESTAMP +); + +ALTER TABLE PROVEEDORES ADD CONSTRAINT PK_PROVEEDORES PRIMARY KEY (CODIGO); + +CREATE TABLE SUCURSALESPROVEEDOR ( + CODIGOPROVEEDOR VARCHAR(10) NOT NULL, + CODIGO SMALLINT NOT NULL, + CALLE VARCHAR(150), + NUMERO VARCHAR(20), + PISO VARCHAR(20), + CODIGOPOSTAL VARCHAR(5), + POBLACION VARCHAR(40), + PROVINCIA VARCHAR(30), + TELEFONO1 VARCHAR(30), + TELEFONO2 VARCHAR(30), + FAX VARCHAR(30), + CORREO VARCHAR(60), + PERSONACONTACTO VARCHAR(100) +); +ALTER TABLE SUCURSALESPROVEEDOR ADD CONSTRAINT PK_SUCURSALESPROVEEDOR PRIMARY KEY (CODIGOPROVEEDOR, CODIGO); +ALTER TABLE SUCURSALESPROVEEDOR ADD FOREIGN KEY (CODIGOPROVEEDOR) REFERENCES PROVEEDORES (CODIGO) ON DELETE CASCADE ON UPDATE NO ACTION; + + +COMMIT WORK; + +/*DATOS*/ + + +Poner generador de ID_CONTACTOS a 1 + +DECLARE EXTERNAL FUNCTION substr + CSTRING(255), SMALLINT, SMALLINT + RETURNS CSTRING(255) FREE_IT + ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf'; + + +insert into CONTACTOS +(ID, REFERENCIA, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, +FAX, EMAIL_1, PERSONA_CONTACTO, NOTAS) + +select +GEN_ID(GEN_CONTACTOS_ID, 1), +proveedores.CODIGO AS REFERENCIA, +proveedores.NIFCIF AS NIF_CIF, +proveedores.NOMBRE AS NOMBRE, +(COALESCE(proveedores.CALLE,'') || ', ' || COALESCE(proveedores.NUMERO,'') || ' ' || COALESCE(proveedores.PISO,'')) AS CALLE, +proveedores.POBLACION AS POBLACION, +proveedores.PROVINCIA AS PROVINCIA, +proveedores.CODIGOPOSTAL AS CODIGO_POSTAL, +substr(proveedores.TELEFONO1,1,25) AS TELEFONO_1, +substr(proveedores.TELEFONO2,1,25) AS TELEFONO_2, +substr(proveedores.FAX,1,25) AS FAX, +proveedores.CORREO AS EMAIL_1, +proveedores.PERSONACONTACTO AS PERSONA_CONTACTO, +proveedores.OBSERVACIONES AS NOTAS + +from proveedores; + +insert into contactos_categorias +(ID_CONTACTO, ID_CATEGORIA) +select ID, 2 +from contactos; + +insert into proveedores_datos +(ID_PROVEEDOR, ID_TIPO_IVA) +select CONTACTOS.ID, 2 +from CONTACTOS +left join contactos_categorias on contactos_categorias.id_contacto = contactos.id +where contactos_categorias.id_categoria = 2 + +delete from proveedores_datos +where proveedores_datos.id_proveedor in ( +select CONTACTOS.ID +from CONTACTOS +left join proveedores on proveedores.codigo = contactos.referencia +WHERE proveedores.CODIGOCLIENTE is not null); + +insert into proveedores_datos +(ID_PROVEEDOR, ID_TIPO_IVA, CODIGO_ASIGNADO) + +select CONTACTOS.ID, 2, proveedores.CODIGOCLIENTE +from CONTACTOS +left join proveedores on proveedores.codigo = contactos.referencia +WHERE proveedores.CODIGOCLIENTE is not null; + +INSERT INTO CONTACTOS_DIRECCIONES +(ID, ID_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO, + TELEFONO, MOVIL, FAX, EMAIL) + +//Insertamos la sucursales de los proveedores +select +GEN_ID(GEN_CONTACTOS_DIR_ID, 1), +contactos.id AS ID_CONTACTO, +(COALESCE(sucursalesproveedor.CALLE,'') || ', ' || COALESCE(sucursalesproveedor.NUMERO,'') || ' ' || COALESCE(sucursalesproveedor.PISO,'')) AS CALLE, +sucursalesproveedor.POBLACION AS POBLACION, +sucursalesproveedor.PROVINCIA AS PROVINCIA, +sucursalesproveedor.CODIGOPOSTAL AS CODIGO_POSTAL, +sucursalesproveedor.PERSONACONTACTO AS PERSONA_CONTACTO, +substr(sucursalesproveedor.TELEFONO1,1,25) AS TELEFONO, +substr(sucursalesproveedor.TELEFONO2,1,25) AS MOVIL, +substr(sucursalesproveedor.FAX,1,25) AS FAX, +sucursalesproveedor.CORREO AS EMAIL + +from sucursalesproveedor +left join contactos on contactos.referencia = sucursalesproveedor.codigoproveedor +left join contactos_categorias on contactos_categorias.id_contacto = contactos.id +where contactos_categorias.id_categoria = 2 +and (COALESCE(sucursalesproveedor.CALLE,'') || ', ' || COALESCE(sucursalesproveedor.NUMERO,'') || ' ' || COALESCE(sucursalesproveedor.PISO,'')) <> ',' + + + +Extract MetaData con cmapos blob, lanzar script en nueva base de datos + +CREATE TABLE CLIENTES ( + CODIGO VARCHAR(10) NOT NULL, + NIFCIF VARCHAR(10) CHARACTER SET ISO8859_1, + NOMBRE VARCHAR(100) CHARACTER SET ISO8859_1, + CALLE VARCHAR(150) CHARACTER SET ISO8859_1, + NUMERO VARCHAR(20) CHARACTER SET ISO8859_1, + PISO VARCHAR(20) CHARACTER SET ISO8859_1, + CODIGOPOSTAL VARCHAR(5) CHARACTER SET ISO8859_1, + POBLACION VARCHAR(40) CHARACTER SET ISO8859_1, + PROVINCIA VARCHAR(30) CHARACTER SET ISO8859_1, + TELEFONO1 VARCHAR(30) CHARACTER SET ISO8859_1, + TELEFONO2 VARCHAR(30) CHARACTER SET ISO8859_1, + FAX VARCHAR(30) CHARACTER SET ISO8859_1, + CORREO VARCHAR(60) CHARACTER SET ISO8859_1, + PERSONACONTACTO VARCHAR(100) CHARACTER SET ISO8859_1, + OBSERVACIONES BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET ISO8859_1, + BANCO VARCHAR(100) CHARACTER SET ISO8859_1, + IVA FLOAT DEFAULT 0, + DESCUENTO FLOAT DEFAULT 0, + TIPOCLIENTE VARCHAR(50) CHARACTER SET ISO8859_1, + ETIQUETADO SMALLINT, + ULTIMOCAMBIO TIMESTAMP +); +ALTER TABLE CLIENTES ADD CONSTRAINT PK_CLIENTES PRIMARY KEY (CODIGO); + +CREATE TABLE SUCURSALESCLIENTE ( + CODIGOCLIENTE VARCHAR(10) NOT NULL, + CODIGO SMALLINT NOT NULL, + CALLE VARCHAR(150), + NUMERO VARCHAR(20), + PISO VARCHAR(20), + CODIGOPOSTAL VARCHAR(5), + POBLACION VARCHAR(40), + PROVINCIA VARCHAR(30), + TELEFONO1 VARCHAR(30), + TELEFONO2 VARCHAR(30), + FAX VARCHAR(30), + CORREO VARCHAR(60), + PERSONACONTACTO VARCHAR(100) +); +ALTER TABLE SUCURSALESCLIENTE ADD CONSTRAINT PK_SUCURSALESCLIENTE PRIMARY KEY (CODIGOCLIENTE, CODIGO); +ALTER TABLE SUCURSALESCLIENTE ADD FOREIGN KEY (CODIGOCLIENTE) REFERENCES CLIENTES (CODIGO) ON DELETE CASCADE ON UPDATE NO ACTION; + + +insert into CONTACTOS +(ID, REFERENCIA, NIF_CIF, NOMBRE, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, +FAX, EMAIL_1, PERSONA_CONTACTO, NOTAS) + +select +GEN_ID(GEN_CONTACTOS_ID, 1), +clientes.CODIGO AS REFERENCIA, +clientes.NIFCIF AS NIF_CIF, +clientes.NOMBRE AS NOMBRE, +(COALESCE(clientes.CALLE,'') || ', ' || COALESCE(clientes.NUMERO,'') || ' ' || COALESCE(clientes.PISO,'')) AS CALLE, +clientes.POBLACION AS POBLACION, +clientes.PROVINCIA AS PROVINCIA, +clientes.CODIGOPOSTAL AS CODIGO_POSTAL, +substr(clientes.TELEFONO1,1,25) AS TELEFONO_1, +substr(clientes.TELEFONO2,1,25) AS TELEFONO_2, +substr(clientes.FAX,1,25) AS FAX, +clientes.CORREO AS EMAIL_1, +clientes.PERSONACONTACTO AS PERSONA_CONTACTO, +clientes.OBSERVACIONES AS NOTAS + +from clientes; + + +insert into contactos_categorias +(ID_CONTACTO, ID_CATEGORIA) +select ID, 1 +from contactos +where ID not in (select ID_CONTACTO from contactos_categorias); + + +MIRAR SI TODOS LOS CLIENTES TIENEN DESCUENTO NULL +select * +from clientes +where descuento is not null; + + +MIRAR SI TODOS LOS CLIENTES TIENEN IVA 16% +select DISTINCT IVA +from clientes; + +//Establecemos el tipo de iva al 16 para todos los clientes +insert into clientes_datos +(ID_CLIENTE, ID_TIPO_IVA) +select CONTACTOS.ID, 2 +from CONTACTOS +left join contactos_categorias on contactos_categorias.id_contacto = contactos.id +where contactos_categorias.id_categoria = 1; + +SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 1; + + +insert into contactos_datos_banco +(ID, ID_contacto, titular) + +select GEN_ID(GEN_CONTACTOS_DATOS_BANCO_ID, 1), CONTACTOS.ID, clientes.banco +from CONTACTOS +left join clientes on clientes.codigo = contactos.referencia +WHERE clientes.banco is not null; + + +//Insertamos la distintas sucursales de cliente +INSERT INTO CONTACTOS_DIRECCIONES +(ID, ID_CONTACTO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL, PERSONA_CONTACTO, + TELEFONO, MOVIL, FAX, EMAIL) + +select + +GEN_ID(GEN_CONTACTOS_DIR_ID, 1), +contactos.id AS ID_CONTACTO, +(COALESCE(sucursalescliente.CALLE,'') || ', ' || COALESCE(sucursalescliente.NUMERO,'') || ' ' || COALESCE(sucursalescliente.PISO,'')) AS CALLE, +sucursalescliente.POBLACION AS POBLACION, +sucursalescliente.PROVINCIA AS PROVINCIA, +sucursalescliente.CODIGOPOSTAL AS CODIGO_POSTAL, +sucursalescliente.PERSONACONTACTO AS PERSONA_CONTACTO, +substr(sucursalescliente.TELEFONO1,1,25) AS TELEFONO, +substr(sucursalescliente.TELEFONO2,1,25) AS MOVIL, +substr(sucursalescliente.FAX,1,25) AS FAX, +sucursalescliente.CORREO AS EMAIL + +from sucursalescliente +left join contactos on contactos.referencia = sucursalescliente.codigocliente +left join contactos_categorias on contactos_categorias.id_contacto = contactos.id +where contactos_categorias.id_categoria = 1 +and (COALESCE(sucursalescliente.CALLE,'') || ', ' || COALESCE(sucursalescliente.NUMERO,'') || ' ' || COALESCE(sucursalescliente.PISO,'')) <> ',' + + +drop table sucursalesproveedor; +DROP TABLE PROVEEDORES; +drop table sucursalescliente; +DROP TABLE CLIENTES; + + +insert into empresas_contactos +(ID_empresa, ID_contacto) +select 1, id +from contactos; \ No newline at end of file diff --git a/Database/VISTAS.SQL b/Database/VISTAS.SQL new file mode 100644 index 00000000..528a81e7 --- /dev/null +++ b/Database/VISTAS.SQL @@ -0,0 +1,287 @@ +DROP VIEW V_EMPLEADOS; +DROP VIEW V_PROVEEDORES; +DROP VIEW V_CLIENTES; +DROP VIEW V_CONTACTOS; + + + +CREATE VIEW V_CONTACTOS( + ID, + ID_CATEGORIA, + NIF_CIF, + NOMBRE, + PERSONA_CONTACTO, + CALLE, + POBLACION, + PROVINCIA, + CODIGO_POSTAL, + TELEFONO_1, + TELEFONO_2, + MOVIL_1, + MOVIL_2, + FAX, + EMAIL_1, + EMAIL_2, + PAGINA_WEB, + NOTAS, + FECHA_ALTA, + FECHA_MODIFICACION, + USUARIO, + ID_EMPRESA, + REFERENCIA) +AS +SELECT CONTACTOS.ID, + CONTACTOS_CATEGORIAS.ID_CATEGORIA, + CONTACTOS.NIF_CIF, + CONTACTOS.NOMBRE, + CONTACTOS.PERSONA_CONTACTO, + CONTACTOS.CALLE, + CONTACTOS.POBLACION, + CONTACTOS.PROVINCIA, + CONTACTOS.CODIGO_POSTAL, + CONTACTOS.TELEFONO_1, + CONTACTOS.TELEFONO_2, + CONTACTOS.MOVIL_1, + CONTACTOS.MOVIL_2, + CONTACTOS.FAX, + CONTACTOS.EMAIL_1, + CONTACTOS.EMAIL_2, + CONTACTOS.PAGINA_WEB, + CONTACTOS.NOTAS, + CONTACTOS.FECHA_ALTA, + CONTACTOS.FECHA_MODIFICACION, + CONTACTOS.USUARIO, + EMPRESAS_CONTACTOS.ID_EMPRESA, + CONTACTOS.REFERENCIA +FROM CONTACTOS + INNER JOIN CONTACTOS_CATEGORIAS ON (CONTACTOS_CATEGORIAS.ID_CONTACTO = + CONTACTOS.ID) + INNER JOIN EMPRESAS_CONTACTOS ON (EMPRESAS_CONTACTOS.ID_CONTACTO = + CONTACTOS.ID); + + +CREATE VIEW V_CLIENTES( + ID, + ID_CATEGORIA, + NIF_CIF, + NOMBRE, + PERSONA_CONTACTO, + CALLE, + POBLACION, + PROVINCIA, + CODIGO_POSTAL, + TELEFONO_1, + TELEFONO_2, + MOVIL_1, + MOVIL_2, + FAX, + EMAIL_1, + EMAIL_2, + PAGINA_WEB, + NOTAS, + FECHA_ALTA, + FECHA_MODIFICACION, + USUARIO, + ID_EMPRESA, + REFERENCIA, + GRUPO_CLIENTE, + NOMBRE_COMERCIAL, + VENCIMIENTO_FACTURAS, + BLOQUEADO, + REGIMEN_IVA, + MOTIVO_BLOQUEO, + RECARGO_EQUIVALENCIA, + ID_TIPO_IVA, + ID_FORMA_PAGO, + TIENDA_WEB) +AS +SELECT + V_CONTACTOS.ID, + V_CONTACTOS.ID_CATEGORIA, + V_CONTACTOS.NIF_CIF, + V_CONTACTOS.NOMBRE, + V_CONTACTOS.PERSONA_CONTACTO, + V_CONTACTOS.CALLE, + V_CONTACTOS.POBLACION, + V_CONTACTOS.PROVINCIA, + V_CONTACTOS.CODIGO_POSTAL, + V_CONTACTOS.TELEFONO_1, + V_CONTACTOS.TELEFONO_2, + V_CONTACTOS.MOVIL_1, + V_CONTACTOS.MOVIL_2, + V_CONTACTOS.FAX, + V_CONTACTOS.EMAIL_1, + V_CONTACTOS.EMAIL_2, + V_CONTACTOS.PAGINA_WEB, + V_CONTACTOS.NOTAS, + V_CONTACTOS.FECHA_ALTA, + V_CONTACTOS.FECHA_MODIFICACION, + V_CONTACTOS.USUARIO, + V_CONTACTOS.ID_EMPRESA, + V_CONTACTOS.REFERENCIA, + CLIENTES_DATOS.GRUPO_CLIENTE, + CLIENTES_DATOS.NOMBRE_COMERCIAL, + CLIENTES_DATOS.VENCIMIENTO_FACTURAS, + CLIENTES_DATOS.BLOQUEADO, + CLIENTES_DATOS.REGIMEN_IVA, + CLIENTES_DATOS.MOTIVO_BLOQUEO, + CLIENTES_DATOS.RECARGO_EQUIVALENCIA, + CLIENTES_DATOS.ID_TIPO_IVA, + CLIENTES_DATOS.ID_FORMA_PAGO, + CLIENTES_DATOS.TIENDA_WEB +FROM + V_CONTACTOS + LEFT OUTER JOIN CLIENTES_DATOS ON (V_CONTACTOS.ID = CLIENTES_DATOS.ID_CLIENTE) +WHERE + V_CONTACTOS.ID_CATEGORIA = 1; + + +CREATE VIEW V_PROVEEDORES( + ID, + ID_CATEGORIA, + NIF_CIF, + NOMBRE, + PERSONA_CONTACTO, + CALLE, + POBLACION, + PROVINCIA, + CODIGO_POSTAL, + TELEFONO_1, + TELEFONO_2, + MOVIL_1, + MOVIL_2, + FAX, + EMAIL_1, + EMAIL_2, + PAGINA_WEB, + NOTAS, + FECHA_ALTA, + FECHA_MODIFICACION, + USUARIO, + ID_EMPRESA, + REFERENCIA, + DESCUENTO, + DESCRIPCION_PROVEEDOR, + CODIGO_ASIGNADO, + GRUPO_PROVEEDOR, + REGIMEN_IVA, + ID_TIPO_IVA, + ID_FORMA_PAGO, + TIENDA_WEB, + HOMOLOGADO, + CERTIFICACION) +AS +SELECT + V_CONTACTOS.ID, + V_CONTACTOS.ID_CATEGORIA, + V_CONTACTOS.NIF_CIF, + V_CONTACTOS.NOMBRE, + V_CONTACTOS.PERSONA_CONTACTO, + V_CONTACTOS.CALLE, + V_CONTACTOS.POBLACION, + V_CONTACTOS.PROVINCIA, + V_CONTACTOS.CODIGO_POSTAL, + V_CONTACTOS.TELEFONO_1, + V_CONTACTOS.TELEFONO_2, + V_CONTACTOS.MOVIL_1, + V_CONTACTOS.MOVIL_2, + V_CONTACTOS.FAX, + V_CONTACTOS.EMAIL_1, + V_CONTACTOS.EMAIL_2, + V_CONTACTOS.PAGINA_WEB, + V_CONTACTOS.NOTAS, + V_CONTACTOS.FECHA_ALTA, + V_CONTACTOS.FECHA_MODIFICACION, + V_CONTACTOS.USUARIO, + V_CONTACTOS.ID_EMPRESA, + V_CONTACTOS.REFERENCIA, + PROVEEDORES_DATOS.DESCUENTO, + PROVEEDORES_DATOS.DESCRIPCION_PROVEEDOR, + PROVEEDORES_DATOS.CODIGO_ASIGNADO, + PROVEEDORES_DATOS.GRUPO_PROVEEDOR, + PROVEEDORES_DATOS.REGIMEN_IVA, + PROVEEDORES_DATOS.ID_TIPO_IVA, + PROVEEDORES_DATOS.ID_FORMA_PAGO, + PROVEEDORES_DATOS.TIENDA_WEB, + PROVEEDORES_DATOS.HOMOLOGADO, + PROVEEDORES_DATOS.CERTIFICACION +FROM + PROVEEDORES_DATOS + INNER JOIN V_CONTACTOS ON (PROVEEDORES_DATOS.ID_PROVEEDOR = V_CONTACTOS.ID) +WHERE + V_CONTACTOS.ID_CATEGORIA = 2; + + +CREATE VIEW V_EMPLEADOS( + ID, + ID_CATEGORIA, + NIF_CIF, + NOMBRE, + PERSONA_CONTACTO, + CALLE, + POBLACION, + PROVINCIA, + CODIGO_POSTAL, + TELEFONO_1, + TELEFONO_2, + MOVIL_1, + MOVIL_2, + FAX, + EMAIL_1, + EMAIL_2, + PAGINA_WEB, + NOTAS, + FECHA_ALTA, + FECHA_MODIFICACION, + USUARIO, + ID_EMPRESA, + REFERENCIA, + FECHA_NACIMIENTO, + CATEGORIA, + FECHA_ALTA_EMPRESA, + FORMACION_BASE, + FORMACION_COMPLE, + FORMACION_RECIBIDA, + EXPERIENCIA) +AS +SELECT V_CONTACTOS.ID, + V_CONTACTOS.ID_CATEGORIA, + V_CONTACTOS.NIF_CIF, + V_CONTACTOS.NOMBRE, + V_CONTACTOS.PERSONA_CONTACTO, + V_CONTACTOS.CALLE, + V_CONTACTOS.POBLACION, + V_CONTACTOS.PROVINCIA, + V_CONTACTOS.CODIGO_POSTAL, + V_CONTACTOS.TELEFONO_1, + V_CONTACTOS.TELEFONO_2, + V_CONTACTOS.MOVIL_1, + V_CONTACTOS.MOVIL_2, + V_CONTACTOS.FAX, + V_CONTACTOS.EMAIL_1, + V_CONTACTOS.EMAIL_2, + V_CONTACTOS.PAGINA_WEB, + V_CONTACTOS.NOTAS, + V_CONTACTOS.FECHA_ALTA, + V_CONTACTOS.FECHA_MODIFICACION, + V_CONTACTOS.USUARIO, + V_CONTACTOS.ID_EMPRESA, + V_CONTACTOS.REFERENCIA, + + EMPLEADOS_DATOS.FECHA_NACIMIENTO, + EMPLEADOS_DATOS.CATEGORIA, + EMPLEADOS_DATOS.FECHA_ALTA_EMPRESA, + EMPLEADOS_DATOS.FORMACION_BASE, + EMPLEADOS_DATOS.FORMACION_COMPLE, + EMPLEADOS_DATOS.FORMACION_RECIBIDA, + EMPLEADOS_DATOS.EXPERIENCIA + +FROM V_CONTACTOS +INNER JOIN EMPLEADOS_DATOS ON (EMPLEADOS_DATOS.ID_EMPLEADO = V_CONTACTOS.ID) + +WHERE V_CONTACTOS.ID_CATEGORIA = 3; + + + + + diff --git a/Database/factuges.sql b/Database/factuges.sql new file mode 100644 index 00000000..e2617120 --- /dev/null +++ b/Database/factuges.sql @@ -0,0 +1,918 @@ +CREATE DOMAIN TIPO_ID AS INTEGER; +CREATE DOMAIN TIPO_PERFIL AS VARCHAR(15); +CREATE DOMAIN TIPO_USUARIO AS VARCHAR(20); +CREATE DOMAIN TIPO_PASSWORD AS VARCHAR(10); +CREATE DOMAIN TIPO_NOTAS AS BLOB SUB_TYPE TEXT; +CREATE DOMAIN TIPO_BINARIO AS BLOB SUB_TYPE 0 SEGMENT SIZE 80; +CREATE DOMAIN TIPO_IMPORTE AS NUMERIC(11, 2); +CREATE DOMAIN TIPO_PORCENTAJE AS FLOAT; +CREATE DOMAIN TIPO_CONCEPTO AS VARCHAR(2000); +CREATE DOMAIN TIPO_BOOLEANO AS SMALLINT; + +CREATE TABLE CONFIGURACION ( + CODIGO VARCHAR(50) NOT NULL, + VALOR VARCHAR(255) NOT NULL, + ID_EMPRESA TIPO_ID +); + +CREATE TABLE REFERENCIAS ( + CODIGO VARCHAR(50) NOT NULL, + VALOR VARCHAR(255) NOT NULL, + ID_EMPRESA TIPO_ID +); + + +CREATE TABLE EMPRESAS ( + ID TIPO_ID NOT NULL, + NIF_CIF VARCHAR(15), + NOMBRE VARCHAR(255), + RAZON_SOCIAL VARCHAR(255), + CALLE VARCHAR(255), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + TELEFONO_1 VARCHAR(25), + TELEFONO_2 VARCHAR(25), + MOVIL_1 VARCHAR(25), + MOVIL_2 VARCHAR(25), + FAX VARCHAR(25), + EMAIL_1 VARCHAR(255), + EMAIL_2 VARCHAR(255), + PAGINA_WEB VARCHAR(255), + NOTAS TIPO_NOTAS, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO, + LOGOTIPO TIPO_BINARIO, + REGISTRO_MERCANTIL VARCHAR(255), + IVA TIPO_PORCENTAJE +); + +ALTER TABLE EMPRESAS ADD CONSTRAINT +PK_EMPRESAS +PRIMARY KEY (ID); + +CREATE GENERATOR GEN_EMPRESAS_ID; +SET GENERATOR GEN_EMPRESAS_ID TO 1; + + +CREATE TABLE PERFILES ( + ID TIPO_ID NOT NULL, + PERFIL TIPO_PERFIL NOT NULL +); + +ALTER TABLE PERFILES +ADD CONSTRAINT PK_PERFILES PRIMARY KEY (ID); + +CREATE GENERATOR GEN_PERFILES_ID; +SET GENERATOR GEN_PERFILES_ID TO 1; + + +CREATE TABLE USUARIOS ( + ID TIPO_ID NOT NULL, + USUARIO TIPO_USUARIO NOT NULL, + PASS TIPO_PASSWORD, + ACTIVO TIPO_BOOLEANO, + LAST_LOGIN TIMESTAMP +); + +ALTER TABLE USUARIOS +ADD CONSTRAINT PK_USUARIOS PRIMARY KEY (ID); + +CREATE GENERATOR GEN_USUARIOS_ID; +SET GENERATOR GEN_USUARIOS_ID TO 1; + + +CREATE TABLE PERFILES_USUARIOS ( + ID_PERFIL TIPO_ID NOT NULL, + ID_USUARIO TIPO_ID NOT NULL +); + +ALTER TABLE PERFILES_USUARIOS +ADD CONSTRAINT PK_PERFILES_USUARIOS PRIMARY KEY (ID_PERFIL, ID_USUARIO); + + +CREATE TABLE CATEGORIAS ( + ID TIPO_ID NOT NULL, + CATEGORIA VARCHAR(255) NOT NULL +); + +ALTER TABLE CATEGORIAS +ADD CONSTRAINT PK_CATEGORIAS PRIMARY KEY (ID); + +CREATE GENERATOR GEN_CATEGORIAS_ID; +SET GENERATOR GEN_CATEGORIAS_ID TO 1; + + +CREATE TABLE CONTACTOS ( + ID TIPO_ID NOT NULL, + REFERENCIA VARCHAR(255), + NIF_CIF VARCHAR(15), + NOMBRE VARCHAR(255) NOT NULL, + CALLE VARCHAR(255), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + TELEFONO_1 VARCHAR(25), + TELEFONO_2 VARCHAR(25), + MOVIL_1 VARCHAR(25), + MOVIL_2 VARCHAR(25), + FAX VARCHAR(25), + EMAIL_1 VARCHAR(255), + EMAIL_2 VARCHAR(255), + PAGINA_WEB VARCHAR(255), + NOTAS TIPO_NOTAS, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + +ALTER TABLE CONTACTOS +ADD CONSTRAINT PK_CONTACTOS PRIMARY KEY (ID); + +CREATE GENERATOR GEN_CONTACTOS_ID; +SET GENERATOR GEN_CONTACTOS_ID TO 1; + +CREATE TRIGGER TRI_INSERT_CONTACTOS FOR CONTACTOS +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +CREATE TRIGGER TRI_UPDATE_CONTACTOS FOR CONTACTOS +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE TABLE CONTACTOS_CATEGORIAS ( + ID_CONTACTO TIPO_ID NOT NULL, + ID_CATEGORIA TIPO_ID NOT NULL +); + +ALTER TABLE CONTACTOS_CATEGORIAS +ADD CONSTRAINT PK_CONTACTOS_CATEGORIAS PRIMARY KEY (ID_CONTACTO, ID_CATEGORIA); + +CREATE TABLE CONTACTOS_DATOS_BANCO ( + ID TIPO_ID NOT NULL, + ID_CONTACTO TIPO_ID NOT NULL, + TITULAR VARCHAR(255), + ENTIDAD VARCHAR(15), + SUCURSAL VARCHAR(15), + DC VARCHAR(15), + CUENTA VARCHAR(15) +); + +ALTER TABLE CONTACTOS_DATOS_BANCO +ADD CONSTRAINT PK_CONTACTOS_DATOS_BANCO PRIMARY KEY (ID); + +CREATE INDEX IDX_CONTACTOS_DATOS_BANCO +ON CONTACTOS_DATOS_BANCO (ID_CONTACTO); + +CREATE GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID; +SET GENERATOR GEN_CONTACTOS_DATOS_BANCO_ID TO 1; + + +CREATE TABLE CONTACTOS_DIRECCIONES ( + ID TIPO_ID NOT NULL, + ID_CONTACTO TIPO_ID NOT NULL, + CALLE VARCHAR(255), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + PERSONA_CONTACTO VARCHAR(255) +); + +ALTER TABLE CONTACTOS_DIRECCIONES +ADD CONSTRAINT PK_CONTACTOS_DIR PRIMARY KEY (ID); + +CREATE GENERATOR GEN_CONTACTOS_DIR_ID; +SET GENERATOR GEN_CONTACTOS_DIR_ID TO 1; + + +CREATE TABLE CLIENTES_DATOS ( + ID_CLIENTE TIPO_ID NOT NULL, + ID_AGENTE TIPO_ID, + BLOQUEADO TIPO_BOOLEANO DEFAULT 0 NOT NULL, + GRUPO_CLIENTE VARCHAR(255), + PORTE TIPO_IMPORTE, + NOMBRE_COMERCIAL VARCHAR(255), + VENCIMIENTO_FACTURAS INTEGER, + RECARGO_EQUIVALENCIA TIPO_PORCENTAJE, + REGIMEN_IVA TIPO_PORCENTAJE +); + +ALTER TABLE CLIENTES_DATOS +ADD CONSTRAINT PK_CLIENTES_DATOS PRIMARY KEY (ID_CLIENTE); + +CREATE TABLE CLIENTES_GRUPOS ( + DESCRIPCION VARCHAR(255) +); + +CREATE TABLE PROVEEDORES_DATOS ( + ID_PROVEEDOR TIPO_ID NOT NULL, + DESCUENTO TIPO_PORCENTAJE, + REGIMEN_IVA TIPO_PORCENTAJE +); + +ALTER TABLE PROVEEDORES_DATOS +ADD CONSTRAINT PK_PROVEEDORES_DATOS PRIMARY KEY (ID_PROVEEDOR); + +CREATE TABLE EMPRESAS_CONTACTOS ( + ID_EMPRESA TIPO_ID NOT NULL, + ID_CONTACTO TIPO_ID NOT NULL +); + +ALTER TABLE EMPRESAS_CONTACTOS ADD CONSTRAINT +PK_EMPRESAS_CONTACTOS +PRIMARY KEY (ID_EMPRESA, ID_CONTACTO); + + +CREATE TABLE EMPRESAS_USUARIOS ( + ID_EMPRESA TIPO_ID NOT NULL, + ID_USUARIO TIPO_ID NOT NULL +); + +ALTER TABLE EMPRESAS_USUARIOS ADD CONSTRAINT +PK_EMPRESAS_USUARIOS +PRIMARY KEY (ID_EMPRESA, ID_USUARIO); + + +CREATE TABLE FACTURAS_CLIENTE ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + ID_CONTRATO TIPO_ID, + REFERENCIA VARCHAR(255), + FECHA_FACTURA DATE, + VENCIMIENTO INTEGER, + SITUACION VARCHAR(255), + FECHA_PAGADO DATE, + BASE_IMPONIBLE TIPO_IMPORTE, + DESCUENTO TIPO_PORCENTAJE, + IMPORTE_DESCUENTO TIPO_IMPORTE, + IVA TIPO_PORCENTAJE, + IMPORTE_IVA TIPO_IMPORTE, + IMPORTE_TOTAL TIPO_IMPORTE, + OBSERVACIONES TIPO_NOTAS, + FORMA_PAGO TIPO_NOTAS, + ID_CLIENTE TIPO_ID, + NIF_CIF VARCHAR(15), + NOMBRE VARCHAR(255), + CALLE VARCHAR(255), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); +ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT PK_FACTURAS_CLIENTE PRIMARY KEY (ID); + +ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_CONTACTOS FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE FACTURAS_CLIENTE ADD CONSTRAINT FK_FACTURAS_CLIENTE_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; + +CREATE GENERATOR GEN_FACTURAS_CLIENTE_ID; +SET GENERATOR GEN_FACTURAS_CLIENTE_ID TO 1; + +CREATE TRIGGER TRI_INSERT_FACTURAS_CLIENTE FOR FACTURAS_CLIENTE +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +CREATE TRIGGER TRI_UPDATE_FACTURAS_CLIENTE FOR FACTURAS_CLIENTE +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + +CREATE TABLE FACTURAS_CLIENTE_DETALLES ( + ID TIPO_ID NOT NULL, + ID_FACTURA TIPO_ID NOT NULL, + POSICION INTEGER, + TIPO_DETALLE VARCHAR(10), + CONCEPTO TIPO_CONCEPTO, + CANTIDAD INTEGER, + IMPORTE_UNIDAD TIPO_IMPORTE, + IMPORTE_TOTAL TIPO_IMPORTE, + VISIBLE TIPO_BOOLEANO, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP +); +ALTER TABLE FACTURAS_CLIENTE_DETALLES ADD CONSTRAINT PK_FACTURAS_CLIENTE_DETALLES PRIMARY KEY (ID); + +CREATE GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID; +SET GENERATOR GEN_FACTURA_CLIENTE_DETALLES_ID TO 1; + +CREATE TRIGGER TRI_INSERT_FACTURAS_CLIENTE_DET FOR FACTURAS_CLIENTE_DETALLES +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + + +CREATE TRIGGER TRI_UPDATE_FACTURAS_CLIENTE_DET FOR FACTURAS_CLIENTE_DETALLES +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + + + +CREATE TABLE ALMACENES ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID NOT NULL, + NOMBRE VARCHAR(255), + CALLE VARCHAR(255), + PROVINCIA VARCHAR(255), + POBLACION VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + TELEFONO VARCHAR(25), + MOVIL VARCHAR(25), + FAX VARCHAR(25), + PERSONA_CONTACTO VARCHAR(255), + OBSERVACIONES TIPO_NOTAS, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + +ALTER TABLE ALMACENES ADD CONSTRAINT PK_ALMACENES PRIMARY KEY (ID); + +ALTER TABLE ALMACENES ADD CONSTRAINT FK_ALMACENES_EMPRESAS FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; + +CREATE GENERATOR GEN_ALMACENES_ID; +SET GENERATOR GEN_ALMACENES_ID TO 1; + +CREATE TRIGGER TRI_INSERT_ALMACENES FOR ALMACENES +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + + +CREATE TRIGGER TRI_UPDATE_ALMACENES FOR ALMACENES +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE TABLE FAMILIAS ( + DESCRIPCION VARCHAR(255) +); + +CREATE TABLE ARTICULOS ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + REFERENCIA VARCHAR(255), + DESCRIPCION VARCHAR(255), + FAMILIA VARCHAR(255), + IMAGEN TIPO_BINARIO, + COMISIONABLE TIPO_BOOLEANO, + ID_PROVEEDOR TIPO_ID, + REFERENCIA_PROV VARCHAR(255), + PRECIO_COSTE TIPO_IMPORTE, + DESCUENTO TIPO_PORCENTAJE, + PRECIO_NETO TIPO_IMPORTE, + PRECIO_PORTE TIPO_IMPORTE, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + + +ALTER TABLE ARTICULOS ADD CONSTRAINT PK_ARTICULOS PRIMARY KEY (ID); +ALTER TABLE ARTICULOS ADD CONSTRAINT FK_ARTICULOS_EMPRESA FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; + +CREATE GENERATOR GEN_ARTICULOS_ID; +SET GENERATOR GEN_ARTICULOS_ID TO 1; + + +CREATE TRIGGER TRI_INSERT_ARTICULOS FOR ARTICULOS +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +CREATE TRIGGER TRI_UPDATE_ARTICULOS FOR ARTICULOS +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + +CREATE TABLE PEDIDOS_PROVEEDOR ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + ID_PROVEEDOR TIPO_ID, + REFERENCIA VARCHAR(255), + FECHA_PEDIDO DATE, + FECHA_CONFIRMACION DATE, + FECHA_ENTREGA DATE, + SITUACION VARCHAR(255), + ID_ALMACEN TIPO_ID, + DIRECCION_ENTREGA TIPO_NOTAS, + OBSERVACIONES TIPO_NOTAS, + IMPORTE_TOTAL TIPO_IMPORTE, + INCIDENCIAS TIPO_NOTAS, + INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + +ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR PRIMARY KEY (ID); +ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); +ALTER TABLE PEDIDOS_PROVEEDOR ADD CONSTRAINT FK_PEDIDOS_PROVEEDOR2 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID); + +CREATE TRIGGER TRI_INSERT_PEDIDOS_PROVEEDOR FOR PEDIDOS_PROVEEDOR +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + + +CREATE TRIGGER TRI_UPDATE_PEDIDOS_PROVEEDOR FOR PEDIDOS_PROVEEDOR +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + +CREATE TABLE PEDIDOS_PROVEEDOR_DETALLES ( + ID TIPO_ID NOT NULL, + ID_PEDIDO TIPO_ID NOT NULL, + POSICION INTEGER, + TIPO_DETALLE VARCHAR(10), + REFERENCIA VARCHAR(255), + ID_ARTICULO TIPO_ID, + CONCEPTO TIPO_CONCEPTO, + CANTIDAD INTEGER, + IMPORTE_UNIDAD TIPO_IMPORTE, + IMPORTE_TOTAL TIPO_IMPORTE, + VISIBLE TIPO_BOOLEANO, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP +); + +ALTER TABLE PEDIDOS_PROVEEDOR_DETALLES ADD CONSTRAINT PK_PEDIDOS_PROVEEDOR_DETALLES PRIMARY KEY (ID); + + +CREATE TRIGGER TRI_INSERT_PEDIDOS_PROV_DET FOR PEDIDOS_PROVEEDOR_DETALLES +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +CREATE TRIGGER TRI_UPDATE_PEDIDOS_PROV_DET FOR PEDIDOS_PROVEEDOR_DETALLES +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + +CREATE TABLE PEDIDOS_CLIENTE ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + ID_CLIENTE TIPO_ID, + REFERENCIA VARCHAR(255), + FECHA_PEDIDO DATE, + FECHA_CONFIRMACION DATE, + FECHA_ENTREGA DATE, + CALLE VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + PERSONA_CONTACTO VARCHAR(255), + TELEFONO VARCHAR(25), + OBSERVACIONES TIPO_NOTAS, + IMPORTE_TOTAL TIPO_IMPORTE, + INCIDENCIAS TIPO_NOTAS, + INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + +ALTER TABLE PEDIDOS_CLIENTE ADD CONSTRAINT PK_PEDIDOS_CLIENTE PRIMARY KEY (ID); + + +CREATE GENERATOR GEN_PEDIDOS_PROV_ID; +SET GENERATOR GEN_PEDIDOS_PROV_ID TO 1; + +CREATE TRIGGER TRI_INSERT_PEDIDOS_CLIENTE FOR PEDIDOS_CLIENTE +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +CREATE TRIGGER TRI_UPDATE_PEDIDOS_CLIENTE FOR PEDIDOS_CLIENTE +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + +CREATE TABLE PEDIDOS_CLIENTE_DETALLES ( + ID TIPO_ID NOT NULL, + ID_PEDIDO TIPO_ID NOT NULL, + POSICION INTEGER, + TIPO_DETALLE VARCHAR(10), + REFERENCIA VARCHAR(255), + ID_ARTICULO TIPO_ID, + CONCEPTO TIPO_CONCEPTO, + CANTIDAD INTEGER, + IMPORTE_UNIDAD TIPO_IMPORTE, + IMPORTE_TOTAL TIPO_IMPORTE, + VISIBLE TIPO_BOOLEANO, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP +); + +ALTER TABLE PEDIDOS_CLIENTE_DETALLES ADD CONSTRAINT PK_PEDIDOS_CLIENTE_DETALLES PRIMARY KEY (ID); + + +CREATE GENERATOR GEN_PEDIDOS_CLI_ID; +SET GENERATOR GEN_PEDIDOS_CLI_ID TO 1; + +CREATE TRIGGER TRI_INSERT_PEDIDOS_CLI_DET FOR PEDIDOS_CLIENTE_DETALLES +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +CREATE TRIGGER TRI_UPDATE_PEDIDOS_CLI_DET FOR PEDIDOS_CLIENTE_DETALLES +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + + +CREATE TABLE INVENTARIO ( + ID TIPO_ID NOT NULL, + ID_ARTICULO TIPO_ID, + ID_ALMACEN TIPO_ID, + ID_PEDIDO_PROVEEDOR TIPO_ID, + ID_PEDIDO_CLIENTE TIPO_ID +); + +ALTER TABLE INVENTARIO ADD CONSTRAINT PK_INVENTARIO PRIMARY KEY (ID); +ALTER TABLE INVENTARIO ADD CONSTRAINT FK_INVENTARIO_ALMACENES FOREIGN KEY (ID_ALMACEN) REFERENCES ALMACENES (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE INVENTARIO ADD CONSTRAINT FK_INVENTARIO_ARTICULOS FOREIGN KEY (ID_ARTICULO) REFERENCES ARTICULOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE INVENTARIO ADD CONSTRAINT FK_INVENTARIO_PEDIDOS_PRO FOREIGN KEY (ID_PEDIDO_PROVEEDOR) REFERENCES PEDIDOS_PROVEEDOR (ID) ON DELETE SET NULL ON UPDATE CASCADE; + +CREATE GENERATOR GEN_INVENTARIO_ID; +SET GENERATOR GEN_INVENTARIO_ID TO 1; + + +CREATE TABLE ALBARANES_CLIENTE ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + ID_CLIENTE TIPO_ID, + FECHA_ALBARAN DATE, + ID_PEDIDO TIPO_ID, + ID_FACTURA TIPO_ID, + REFERENCIA VARCHAR(255), + CALLE VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + PERSONA_CONTACTO VARCHAR(255), + TELEFONO VARCHAR(25), + BASE_IMPONIBLE TIPO_IMPORTE, + DESCUENTO TIPO_PORCENTAJE, + IMPORTE_DESCUENTO TIPO_IMPORTE, + IVA TIPO_PORCENTAJE, + IMPORTE_IVA TIPO_IMPORTE, + IMPORTE_TOTAL TIPO_IMPORTE, + OBSERVACIONES TIPO_NOTAS, + FORMA_PAGO TIPO_NOTAS, + INCIDENCIAS TIPO_NOTAS, + INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + +ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT PK_ALBARAN_CLIENTE PRIMARY KEY (ID); +ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE1 FOREIGN KEY (ID_CLIENTE) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE ALBARANES_CLIENTE ADD CONSTRAINT FK_ALBARAN_CLIENTE4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; + +CREATE GENERATOR GEN_ALBARANES_CLI_ID; +SET GENERATOR GEN_ALBARANES_CLI_ID TO 1; + +/* Trigger: TRI_INSERT_ALBARANES_CLIENTE */ +CREATE TRIGGER TRI_INSERT_ALBARANES_CLIENTE FOR ALBARANES_CLIENTE ACTIVE BEFORE INSERT POSITION 0 AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_ALBARANES_CLIENTE */ +CREATE TRIGGER TRI_UPDATE_ALBARANES_CLIENTE FOR ALBARANES_CLIENTE ACTIVE BEFORE UPDATE POSITION 0 AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + +CREATE TABLE ALBARANES_CLIENTE_DETALLES ( + ID TIPO_ID NOT NULL, + ID_ALBARAN TIPO_ID NOT NULL, + POSICION INTEGER, + TIPO_DETALLE VARCHAR(10), + ID_ARTICULO TIPO_ID, + CONCEPTO TIPO_CONCEPTO, + CANTIDAD INTEGER, + IMPORTE_UNIDAD TIPO_IMPORTE, + DESCUENTO TIPO_PORCENTAJE, + IMPORTE_TOTAL TIPO_IMPORTE, + VISIBLE TIPO_BOOLEANO, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP +); + +ALTER TABLE ALBARANES_CLIENTE_DETALLES ADD CONSTRAINT PK_ALBARANES_CLIENTE_DETALLES PRIMARY KEY (ID); + +CREATE GENERATOR GEN_ALBARANES_CLI_DETALLES_ID; +SET GENERATOR GEN_ALBARANES_CLI_DETALLES_ID TO 1; + +/* Trigger: TRI_INSERT_ALBARANES_CLI_DET */ +CREATE TRIGGER TRI_INSERT_ALBARANES_CLI_DET FOR ALBARANES_CLIENTE_DETALLES ACTIVE BEFORE INSERT POSITION 0 AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_ALBARANES_CLI_DET */ +CREATE TRIGGER TRI_UPDATE_ALBARANES_CLI_DET FOR ALBARANES_CLIENTE_DETALLES ACTIVE BEFORE UPDATE POSITION 0 AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE TABLE ALBARANES_PROVEEDOR ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + ID_PROVEEDOR TIPO_ID, + FECHA_ALBARAN DATE, + ID_PEDIDO TIPO_ID, + ID_FACTURA TIPO_ID, + REFERENCIA VARCHAR(255), + CALLE VARCHAR(255), + CODIGO_POSTAL VARCHAR(10), + POBLACION VARCHAR(255), + PROVINCIA VARCHAR(255), + PERSONA_CONTACTO VARCHAR(255), + TELEFONO VARCHAR(25), + BASE_IMPONIBLE TIPO_IMPORTE, + DESCUENTO TIPO_PORCENTAJE, + IMPORTE_DESCUENTO TIPO_IMPORTE, + IVA TIPO_PORCENTAJE, + IMPORTE_IVA TIPO_IMPORTE, + IMPORTE_TOTAL TIPO_IMPORTE, + OBSERVACIONES TIPO_NOTAS, + FORMA_PAGO TIPO_NOTAS, + INCIDENCIAS TIPO_NOTAS, + INCIDENCIAS_ACTIVAS SMALLINT DEFAULT 0 NOT NULL, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP, + USUARIO TIPO_USUARIO +); + +ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT PK_ALBARAN_PROVEEDOR PRIMARY KEY (ID); +ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR1 FOREIGN KEY (ID_PROVEEDOR) REFERENCES CONTACTOS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR2 FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR3 FOREIGN KEY (ID_PEDIDO) REFERENCES PEDIDOS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; +ALTER TABLE ALBARANES_PROVEEDOR ADD CONSTRAINT FK_ALBARAN_PROVEEDOR4 FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION; + +CREATE GENERATOR GEN_ALBARANES_PRO_ID; +SET GENERATOR GEN_ALBARANES_PRO_ID TO 1; + +/* Trigger: TRI_INSERT_ALBARANES_PROVEEDOR */ +CREATE TRIGGER TRI_INSERT_ALBARANES_PROVEEDOR FOR ALBARANES_PROVEEDOR ACTIVE BEFORE INSERT POSITION 0 AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_ALBARANES_PROVEEDOR */ +CREATE TRIGGER TRI_UPDATE_ALBARANES_PROVEEDOR FOR ALBARANES_PROVEEDOR +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE TABLE ALBARANES_PROVEEDOR_DETALLES ( + ID TIPO_ID NOT NULL, + ID_ALBARAN TIPO_ID NOT NULL, + POSICION INTEGER, + TIPO_DETALLE VARCHAR(10), + ID_ARTICULO TIPO_ID, + CONCEPTO TIPO_CONCEPTO, + CANTIDAD INTEGER, + IMPORTE_UNIDAD TIPO_IMPORTE, + DESCUENTO TIPO_PORCENTAJE, + IMPORTE_TOTAL TIPO_IMPORTE, + VISIBLE TIPO_BOOLEANO, + FECHA_ALTA TIMESTAMP, + FECHA_MODIFICACION TIMESTAMP +); + +ALTER TABLE ALBARANES_PROVEEDOR_DETALLES ADD CONSTRAINT PK_ALBARANES_PROVEEDOR_DETALLES PRIMARY KEY (ID); + +CREATE GENERATOR GEN_ALBARANES_PRO_DETALLES_ID; +SET GENERATOR GEN_ALBARANES_PRO_DETALLES_ID TO 1; + +/* Trigger: TRI_INSERT_ALBARANES_PRO_DET */ +CREATE TRIGGER TRI_INSERT_ALBARANES_PRO_DET FOR ALBARANES_PROVEEDOR_DETALLES ACTIVE BEFORE INSERT POSITION 0 AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_ALBARANES_PRO_DET */ +CREATE TRIGGER TRI_UPDATE_ALBARANES_PRO_DET FOR ALBARANES_PROVEEDOR_DETALLES ACTIVE BEFORE UPDATE POSITION 0 AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + + + +CREATE TABLE REMESAS_CLIENTE ( + ID TIPO_ID NOT NULL, + ID_EMPRESA TIPO_ID, + REFERENCIA VARCHAR(255), + FECHA_REMESA DATE, + IMPORTE_TOTAL TIPO_IMPORTE, + DESCRIPCION VARCHAR(255), + FECHA_ALTA DATE, + FECHA_MODIFICACION DATE, + USUARIO TIPO_USUARIO, + ID_DATOS_BANCO TIPO_ID +); +ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT PK_REMESAS_CLIENTE PRIMARY KEY (ID); +ALTER TABLE REMESAS_CLIENTE ADD CONSTRAINT FK_REMESAS_CLIENTE FOREIGN KEY (ID_EMPRESA) REFERENCES EMPRESAS (ID); + +/* Trigger: TRI_INSERT_REMESAS_CLIENTE */ +CREATE TRIGGER TRI_INSERT_REMESAS_CLIENTE FOR REMESAS_CLIENTE +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_REMESAS_CLI */ +CREATE TRIGGER TRI_UPDATE_REMESAS_CLI FOR REMESAS_CLIENTE +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE GENERATOR GEN_REMESAS_CLIENTE_ID; +SET GENERATOR GEN_REMESAS_CLIENTE_ID TO 1; + +CREATE TABLE RECIBOS_CLIENTE ( + ID TIPO_ID NOT NULL, + ID_FACTURA TIPO_ID, + REFERENCIA VARCHAR(255), + FECHA_EMISION DATE, + FECHA_VENCIMIENTO DATE, + DESCRIPCION VARCHAR(255), + OBSERVACIONES VARCHAR(255), + IMPORTE TIPO_IMPORTE, + OTROS_GASTOS TIPO_IMPORTE, + FECHA_ALTA DATE, + FECHA_MODIFICACION DATE, + USUARIO TIPO_USUARIO, + ID_REMESA TIPO_ID +); +ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT PK_RECIBOS_CLIENTE PRIMARY KEY (ID); +ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE FOREIGN KEY (ID_FACTURA) REFERENCES FACTURAS_CLIENTE (ID) ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE RECIBOS_CLIENTE ADD CONSTRAINT FK_RECIBOS_CLIENTE2 FOREIGN KEY (ID_REMESA) REFERENCES REMESAS_CLIENTE (ID) ON DELETE SET NULL ON UPDATE SET NULL; + +/* Trigger: TRI_INSERT_RECIBOS_CLIENTE */ +CREATE TRIGGER TRI_INSERT_RECIBOS_CLIENTE FOR RECIBOS_CLIENTE +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_RECIBOS_CLIENTE */ +CREATE TRIGGER TRI_UPDATE_RECIBOS_CLIENTE FOR RECIBOS_CLIENTE +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE GENERATOR GEN_RECIBOS_CLIENTE_ID; +SET GENERATOR GEN_RECIBOS_CLIENTE_ID TO 1; + +CREATE TABLE PAGOS_CLIENTE ( + ID TIPO_ID NOT NULL, + ID_RECIBO TIPO_ID, + TIPO VARCHAR(255), + FECHA_PAGO DATE, + TITULAR VARCHAR(255), + ENTIDAD VARCHAR(15), + SUCURSAL VARCHAR(15), + DC VARCHAR(15), + CUENTA VARCHAR(15), + FECHA_ALTA DATE, + FECHA_MODIFICACION DATE, + USUARIO TIPO_USUARIO +); +ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT PK_PAGOS_CLIENTE PRIMARY KEY (ID); +ALTER TABLE PAGOS_CLIENTE ADD CONSTRAINT FK_PAGOS_CLIENTE FOREIGN KEY (ID_RECIBO) REFERENCES RECIBOS_CLIENTE (ID); + +/* Trigger: TRI_INSERT_PAGOS_CLIENTE */ +CREATE TRIGGER TRI_INSERT_PAGOS_CLIENTE FOR PAGOS_CLIENTE +ACTIVE BEFORE INSERT POSITION 0 +AS +begin + NEW.FECHA_ALTA = current_timestamp; + NEW.FECHA_MODIFICACION = Null; +end; + +/* Trigger: TRI_UPDATE_PAGOS_CLIENTE */ +CREATE TRIGGER TRI_UPDATE_PAGOS_CLIENTE FOR PAGOS_CLIENTE +ACTIVE BEFORE UPDATE POSITION 0 +AS +begin + NEW.FECHA_MODIFICACION = current_timestamp; +end; + +CREATE GENERATOR GEN_PAGOS_CLIENTE_ID; +SET GENERATOR GEN_PAGOS_CLIENTE_ID TO 1; + +DECLARE EXTERNAL FUNCTION MOD + INTEGER, + INTEGER +RETURNS DOUBLE PRECISION BY VALUE +ENTRY_POINT 'IB_UDF_mod' MODULE_NAME 'ib_udf'; + + +CREATE TABLE MOVIMIENTOS ( + ID TIPO_ID NOT NULL, + ID_ALMACEN TIPO_ID, + ID_ARTICULO TIPO_ID, + FECHA_MOVIMIENTO DATE, + TIPO VARCHAR(1), + CANTIDAD INTEGER, + CAUSA TIPO_CONCEPTO +); +ALTER TABLE MOVIMIENTOS ADD CONSTRAINT PK_MOVIMIENTOS PRIMARY KEY (ID); +ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS FOREIGN KEY (ID_ARTICULO) REFERENCES ARTICULOS (ID); +ALTER TABLE MOVIMIENTOS ADD CONSTRAINT FK_MOVIMIENTOS2 FOREIGN KEY (ID_ALMACEN) REFERENCES ALMACENES (ID); +CREATE INDEX MOVIMIENTOS_IDX1 ON MOVIMIENTOS (TIPO); + + + +/****************************************************************************/ +/* INSERTAR DATOS */ + +INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (1, 'CLIENTE'); +INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (2, 'PROVEEDOR'); +INSERT INTO CATEGORIAS (ID, CATEGORIA) VALUES (3, 'AGENTE'); + +COMMIT; + + +INSERT INTO REFERENCIAS (CODIGO, VALOR, ID_EMPRESA) VALUES('REF_FACTURAS_CLIENTE', '2007/001', 1); +COMMIT; \ No newline at end of file diff --git a/Database/udfs/funciones.pas b/Database/udfs/funciones.pas new file mode 100644 index 00000000..c6d8a08f --- /dev/null +++ b/Database/udfs/funciones.pas @@ -0,0 +1,40 @@ +unit funciones; + +interface + +function RtfToText(Cadena: PChar): PChar; cdecl; export; + +implementation + +uses + SysUtils; + +function RtfToText(Cadena: PChar): PChar; +var + i: integer; + CadenaAux1: String; + +begin + //Si no tiene ninguna llave no esta guardado como rtf + if (Pos('{', Cadena) = 0) then + Result := Cadena + else + //Esta guardado com rtf + begin + //Quitamos todo lo que est antes de \fs1x + i := Pos('\fs', Cadena); + CadenaAux1 := Copy(Cadena, i, StrLen(Cadena)-1); + + //Quitamos la parte de delante \fs1x + i:= Pos(' ', CadenaAux1); + CadenaAux1 := Copy(PChar(CadenaAux1), i+1, StrLen(PChar(CadenaAux1))-1); + + //Quitamos todo lo de la parte de atras a partir de la primera barra \ que tengamos + i:= Pos('\', CadenaAux1); + CadenaAux1 := Copy(PChar(CadenaAux1), 0, i-1); + + Result := PChar(CadenaAux1); + end; +end; + +end. diff --git a/Database/udfs/udf_RtfToText.bdsproj b/Database/udfs/udf_RtfToText.bdsproj new file mode 100644 index 00000000..959bb9b2 --- /dev/null +++ b/Database/udfs/udf_RtfToText.bdsproj @@ -0,0 +1,498 @@ + + + + + + + + + + + + udf_RtfToText.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + + + + + + EUREKALOG;EUREKALOG_VER5 + + False + + + + + + False + + + True + False + + + + $00000000 + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + Muststang Peak EasyListview Runtime Package + RemObjects Pascal Script - RemObjects SDK 3.0 Integration + + + + diff --git a/Database/udfs/udf_RtfToText.dll b/Database/udfs/udf_RtfToText.dll new file mode 100644 index 00000000..e6642a63 Binary files /dev/null and b/Database/udfs/udf_RtfToText.dll differ diff --git a/Database/udfs/udf_RtfToText.dpr b/Database/udfs/udf_RtfToText.dpr new file mode 100644 index 00000000..d3689bcf --- /dev/null +++ b/Database/udfs/udf_RtfToText.dpr @@ -0,0 +1,18 @@ +library udf_RtfToText; + +uses + ExceptionLog, + ComServ, + funciones in 'funciones.pas'; + +exports + DllGetClassObject, + DllCanUnloadNow, + DllRegisterServer, + DllUnregisterServer, + RtfToText; + +{$R *.RES} + +begin +end. diff --git a/Database/udfs/udf_RtfToText.drc b/Database/udfs/udf_RtfToText.drc new file mode 100644 index 00000000..0375cb35 --- /dev/null +++ b/Database/udfs/udf_RtfToText.drc @@ -0,0 +1,252 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define ComConst_SOleError 65408 +#define ComConst_SNoMethod 65409 +#define ComConst_SVarNotObject 65410 +#define ComConst_STooManyParams 65411 +#define ComConst_SAutomationWarning 65412 +#define ComConst_SNoCloseActiveServer1 65413 +#define ComConst_SNoCloseActiveServer2 65414 +#define RTLConsts_SAssignError 65424 +#define RTLConsts_SCheckSynchronizeError 65425 +#define RTLConsts_SDuplicateString 65426 +#define RTLConsts_SFCreateErrorEx 65427 +#define RTLConsts_SFOpenErrorEx 65428 +#define RTLConsts_SInvalidPropertyValue 65429 +#define RTLConsts_SListCapacityError 65430 +#define RTLConsts_SListCountError 65431 +#define RTLConsts_SListIndexError 65432 +#define RTLConsts_SMemoryStreamError 65433 +#define RTLConsts_SReadError 65434 +#define RTLConsts_SSeekNotImplemented 65435 +#define RTLConsts_SSortedListError 65436 +#define RTLConsts_SWriteError 65437 +#define RTLConsts_SThreadCreateError 65438 +#define RTLConsts_SThreadError 65439 +#define SysConst_SLongMonthNameNov 65440 +#define SysConst_SLongMonthNameDec 65441 +#define SysConst_SShortDayNameSun 65442 +#define SysConst_SShortDayNameMon 65443 +#define SysConst_SShortDayNameTue 65444 +#define SysConst_SShortDayNameWed 65445 +#define SysConst_SShortDayNameThu 65446 +#define SysConst_SShortDayNameFri 65447 +#define SysConst_SShortDayNameSat 65448 +#define SysConst_SLongDayNameSun 65449 +#define SysConst_SLongDayNameMon 65450 +#define SysConst_SLongDayNameTue 65451 +#define SysConst_SLongDayNameWed 65452 +#define SysConst_SLongDayNameThu 65453 +#define SysConst_SLongDayNameFri 65454 +#define SysConst_SLongDayNameSat 65455 +#define SysConst_SShortMonthNameJul 65456 +#define SysConst_SShortMonthNameAug 65457 +#define SysConst_SShortMonthNameSep 65458 +#define SysConst_SShortMonthNameOct 65459 +#define SysConst_SShortMonthNameNov 65460 +#define SysConst_SShortMonthNameDec 65461 +#define SysConst_SLongMonthNameJan 65462 +#define SysConst_SLongMonthNameFeb 65463 +#define SysConst_SLongMonthNameMar 65464 +#define SysConst_SLongMonthNameApr 65465 +#define SysConst_SLongMonthNameMay 65466 +#define SysConst_SLongMonthNameJun 65467 +#define SysConst_SLongMonthNameJul 65468 +#define SysConst_SLongMonthNameAug 65469 +#define SysConst_SLongMonthNameSep 65470 +#define SysConst_SLongMonthNameOct 65471 +#define SysConst_SVarUnexpected 65472 +#define SysConst_SExternalException 65473 +#define SysConst_SAssertionFailed 65474 +#define SysConst_SIntfCastError 65475 +#define SysConst_SSafecallException 65476 +#define SysConst_SAssertError 65477 +#define SysConst_SAbstractError 65478 +#define SysConst_SModuleAccessViolation 65479 +#define SysConst_SOSError 65480 +#define SysConst_SUnkOSError 65481 +#define SysConst_SShortMonthNameJan 65482 +#define SysConst_SShortMonthNameFeb 65483 +#define SysConst_SShortMonthNameMar 65484 +#define SysConst_SShortMonthNameApr 65485 +#define SysConst_SShortMonthNameMay 65486 +#define SysConst_SShortMonthNameJun 65487 +#define SysConst_SDispatchError 65488 +#define SysConst_SReadAccess 65489 +#define SysConst_SWriteAccess 65490 +#define SysConst_SFormatTooLong 65491 +#define SysConst_SVarArrayCreate 65492 +#define SysConst_SVarArrayBounds 65493 +#define SysConst_SVarArrayLocked 65494 +#define SysConst_SInvalidVarCast 65495 +#define SysConst_SInvalidVarOp 65496 +#define SysConst_SInvalidVarOpWithHResultWithPrefix 65497 +#define SysConst_SVarTypeCouldNotConvert 65498 +#define SysConst_SVarTypeConvertOverflow 65499 +#define SysConst_SVarOverflow 65500 +#define SysConst_SVarInvalid 65501 +#define SysConst_SVarBadType 65502 +#define SysConst_SVarNotImplemented 65503 +#define SysConst_SInvalidOp 65504 +#define SysConst_SZeroDivide 65505 +#define SysConst_SOverflow 65506 +#define SysConst_SUnderflow 65507 +#define SysConst_SInvalidPointer 65508 +#define SysConst_SInvalidCast 65509 +#define SysConst_SAccessViolationArg3 65510 +#define SysConst_SAccessViolationNoArg 65511 +#define SysConst_SStackOverflow 65512 +#define SysConst_SControlC 65513 +#define SysConst_SPrivilege 65514 +#define SysConst_SOperationAborted 65515 +#define SysConst_SException 65516 +#define SysConst_SExceptTitle 65517 +#define SysConst_SInvalidFormat 65518 +#define SysConst_SArgumentMissing 65519 +#define SysConst_SInvalidInteger 65520 +#define SysConst_SInvalidDateTime 65521 +#define SysConst_STimeEncodeError 65522 +#define SysConst_SDateEncodeError 65523 +#define SysConst_SOutOfMemory 65524 +#define SysConst_SInOutError 65525 +#define SysConst_SFileNotFound 65526 +#define SysConst_SInvalidFilename 65527 +#define SysConst_STooManyOpenFiles 65528 +#define SysConst_SAccessDenied 65529 +#define SysConst_SEndOfFile 65530 +#define SysConst_SDiskFull 65531 +#define SysConst_SInvalidInput 65532 +#define SysConst_SDivByZero 65533 +#define SysConst_SRangeError 65534 +#define SysConst_SIntOverflow 65535 +STRINGTABLE +BEGIN + ComConst_SOleError, "OLE error %.8x" + ComConst_SNoMethod, "Method '%s' not supported by automation object" + ComConst_SVarNotObject, "Variant does not reference an automation object" + ComConst_STooManyParams, "Dispatch methods do not support more than 64 parameters" + ComConst_SAutomationWarning, "COM Server Warning" + ComConst_SNoCloseActiveServer1, "There are still active COM objects in this application. One or more clients may have references to these objects, so manually closing " + ComConst_SNoCloseActiveServer2, "this application may cause those client application(s) to fail.\r\n\r\nAre you sure you want to close this application?" + RTLConsts_SAssignError, "Cannot assign a %s to a %s" + RTLConsts_SCheckSynchronizeError, "CheckSynchronize called from thread $%x, which is NOT the main thread" + RTLConsts_SDuplicateString, "String list does not allow duplicates" + RTLConsts_SFCreateErrorEx, "Cannot create file \"%s\". %s" + RTLConsts_SFOpenErrorEx, "Cannot open file \"%s\". %s" + RTLConsts_SInvalidPropertyValue, "Invalid property value" + RTLConsts_SListCapacityError, "List capacity out of bounds (%d)" + RTLConsts_SListCountError, "List count out of bounds (%d)" + RTLConsts_SListIndexError, "List index out of bounds (%d)" + RTLConsts_SMemoryStreamError, "Out of memory while expanding memory stream" + RTLConsts_SReadError, "Stream read error" + RTLConsts_SSeekNotImplemented, "%s.Seek not implemented" + RTLConsts_SSortedListError, "Operation not allowed on sorted list" + RTLConsts_SWriteError, "Stream write error" + RTLConsts_SThreadCreateError, "Thread creation error: %s" + RTLConsts_SThreadError, "Thread Error: %s (%d)" + SysConst_SLongMonthNameNov, "November" + SysConst_SLongMonthNameDec, "December" + SysConst_SShortDayNameSun, "Sun" + SysConst_SShortDayNameMon, "Mon" + SysConst_SShortDayNameTue, "Tue" + SysConst_SShortDayNameWed, "Wed" + SysConst_SShortDayNameThu, "Thu" + SysConst_SShortDayNameFri, "Fri" + SysConst_SShortDayNameSat, "Sat" + SysConst_SLongDayNameSun, "Sunday" + SysConst_SLongDayNameMon, "Monday" + SysConst_SLongDayNameTue, "Tuesday" + SysConst_SLongDayNameWed, "Wednesday" + SysConst_SLongDayNameThu, "Thursday" + SysConst_SLongDayNameFri, "Friday" + SysConst_SLongDayNameSat, "Saturday" + SysConst_SShortMonthNameJul, "Jul" + SysConst_SShortMonthNameAug, "Aug" + SysConst_SShortMonthNameSep, "Sep" + SysConst_SShortMonthNameOct, "Oct" + SysConst_SShortMonthNameNov, "Nov" + SysConst_SShortMonthNameDec, "Dec" + SysConst_SLongMonthNameJan, "January" + SysConst_SLongMonthNameFeb, "February" + SysConst_SLongMonthNameMar, "March" + SysConst_SLongMonthNameApr, "April" + SysConst_SLongMonthNameMay, "May" + SysConst_SLongMonthNameJun, "June" + SysConst_SLongMonthNameJul, "July" + SysConst_SLongMonthNameAug, "August" + SysConst_SLongMonthNameSep, "September" + SysConst_SLongMonthNameOct, "October" + SysConst_SVarUnexpected, "Unexpected variant error" + SysConst_SExternalException, "External exception %x" + SysConst_SAssertionFailed, "Assertion failed" + SysConst_SIntfCastError, "Interface not supported" + SysConst_SSafecallException, "Exception in safecall method" + SysConst_SAssertError, "%s (%s, line %d)" + SysConst_SAbstractError, "Abstract Error" + SysConst_SModuleAccessViolation, "Access violation at address %p in module '%s'. %s of address %p" + SysConst_SOSError, "System Error. Code: %d.\r\n%s" + SysConst_SUnkOSError, "A call to an OS function failed" + SysConst_SShortMonthNameJan, "Jan" + SysConst_SShortMonthNameFeb, "Feb" + SysConst_SShortMonthNameMar, "Mar" + SysConst_SShortMonthNameApr, "Apr" + SysConst_SShortMonthNameMay, "May" + SysConst_SShortMonthNameJun, "Jun" + SysConst_SDispatchError, "Variant method calls not supported" + SysConst_SReadAccess, "Read" + SysConst_SWriteAccess, "Write" + SysConst_SFormatTooLong, "Format string too long" + SysConst_SVarArrayCreate, "Error creating variant or safe array" + SysConst_SVarArrayBounds, "Variant or safe array index out of bounds" + SysConst_SVarArrayLocked, "Variant or safe array is locked" + SysConst_SInvalidVarCast, "Invalid variant type conversion" + SysConst_SInvalidVarOp, "Invalid variant operation" + SysConst_SInvalidVarOpWithHResultWithPrefix, "Invalid variant operation (%s%.8x)\n%s" + SysConst_SVarTypeCouldNotConvert, "Could not convert variant of type (%s) into type (%s)" + SysConst_SVarTypeConvertOverflow, "Overflow while converting variant of type (%s) into type (%s)" + SysConst_SVarOverflow, "Variant overflow" + SysConst_SVarInvalid, "Invalid argument" + SysConst_SVarBadType, "Invalid variant type" + SysConst_SVarNotImplemented, "Operation not supported" + SysConst_SInvalidOp, "Invalid floating point operation" + SysConst_SZeroDivide, "Floating point division by zero" + SysConst_SOverflow, "Floating point overflow" + SysConst_SUnderflow, "Floating point underflow" + SysConst_SInvalidPointer, "Invalid pointer operation" + SysConst_SInvalidCast, "Invalid class typecast" + SysConst_SAccessViolationArg3, "Access violation at address %p. %s of address %p" + SysConst_SAccessViolationNoArg, "Access violation" + SysConst_SStackOverflow, "Stack overflow" + SysConst_SControlC, "Control-C hit" + SysConst_SPrivilege, "Privileged instruction" + SysConst_SOperationAborted, "Operation aborted" + SysConst_SException, "Exception %s in module %s at %p.\r\n%s%s\r\n" + SysConst_SExceptTitle, "Application Error" + SysConst_SInvalidFormat, "Format '%s' invalid or incompatible with argument" + SysConst_SArgumentMissing, "No argument for format '%s'" + SysConst_SInvalidInteger, "'%s' is not a valid integer value" + SysConst_SInvalidDateTime, "'%s' is not a valid date and time" + SysConst_STimeEncodeError, "Invalid argument to time encode" + SysConst_SDateEncodeError, "Invalid argument to date encode" + SysConst_SOutOfMemory, "Out of memory" + SysConst_SInOutError, "I/O error %d" + SysConst_SFileNotFound, "File not found" + SysConst_SInvalidFilename, "Invalid filename" + SysConst_STooManyOpenFiles, "Too many open files" + SysConst_SAccessDenied, "File access denied" + SysConst_SEndOfFile, "Read beyond end of file" + SysConst_SDiskFull, "Disk full" + SysConst_SInvalidInput, "Invalid numeric input" + SysConst_SDivByZero, "Division by zero" + SysConst_SRangeError, "Range check error" + SysConst_SIntOverflow, "Integer overflow" +END + diff --git a/Database/udfs/udf_RtfToText.res b/Database/udfs/udf_RtfToText.res new file mode 100644 index 00000000..4f907139 Binary files /dev/null and b/Database/udfs/udf_RtfToText.res differ diff --git a/Database/udfs/udf_RtfToText.sql b/Database/udfs/udf_RtfToText.sql new file mode 100644 index 00000000..dadc0eb7 --- /dev/null +++ b/Database/udfs/udf_RtfToText.sql @@ -0,0 +1,4 @@ +DECLARE EXTERNAL FUNCTION F_RTFTOTEXT + CSTRING(254) +RETURNS CSTRING(254) +ENTRY_POINT 'RtfToText' MODULE_NAME 'udf_RtfToText.dll'; \ No newline at end of file diff --git a/Installer/Actualizacion/Actualización.iss b/Installer/Actualizacion/Actualización.iss new file mode 100644 index 00000000..acbc51b9 --- /dev/null +++ b/Installer/Actualizacion/Actualización.iss @@ -0,0 +1,99 @@ +[Setup] +AppName=FactuGES +AppVerName=FactuGES 2.2.2 +AppPublisher=Rodax Software S.L. +AppPublisherURL=http://www.rodax-software.com +AppSupportURL=http://www.rodax-software.com +AppUpdatesURL=http://www.rodax-software.com +OutputBaseFilename=instalar +Compression=lzma +SolidCompression=yes +CreateAppDir=no +Uninstallable=no +DisableStartupPrompt=yes +DisableFinishedPage=yes + +[Languages] +Name: "sp"; MessagesFile: "compiler:languages\Spanish.isl" + +[Files] +Source: "files\*"; DestDir: {code:GetDir}; CopyMode: alwaysoverwrite; Flags: uninsneveruninstall overwritereadonly +;Source: "files\Informes\*"; DestDir: "{code:GetDir}\Informes\"; Flags: ignoreversion recursesubdirs createallsubdirs +;Source: "files\Financiacion\*"; DestDir: "{code:GetDir}\Financiacion\"; Flags: ignoreversion recursesubdirs createallsubdirs + +[Registry] +;Root: HKLM; Subkey: "Software\FactuGES\Update"; ValueType: string; ValueName: "edLocation_Text"; ValueData: "http://www.rodax-software.com/luisleon/update"; Flags: createvalueifdoesntexist + +[Code] +var + TipoActualizacion : String; + Ruta : String; + VerAnterior : String; + VerNueva : String; + +function GetDir(Param: String): String; +begin + Result := Ruta; +end; + +procedure HacerBackupVerAnterior; +var + RutaBack : String; + FindRec: TFindRec; +begin + RutaBack := Ruta + 'Otras versiones\' + VerAnterior + '\'; + + ForceDirectories(RutaBack); + ForceDirectories(RutaBack + 'Informes'); + + FileCopy(Ruta + 'FactuGES.exe', RutaBack + 'FactuGES.exe', FALSE); + if FindFirst(ExpandConstant(Ruta + 'Informes\*.*'), FindRec) then begin + try + repeat + // Don't count directories + if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then + FileCopy(Ruta + 'Informes\' + FindRec.Name, RutaBack + 'Informes\' + FindRec.Name, FALSE); + until not FindNext(FindRec); + finally + FindClose(FindRec); + end; + end; +end; + +{function NextButtonClick(CurPageID: Integer): Boolean; +begin + if CurPageID = 1 then + begin + if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\FactuGES\Update', + 'TipoActualizacion', TipoActualizacion) then + Abort; + + if not DirExists(Ruta) then + Abort; + + if TipoActualizacion = 'INTERNET' then + HacerBackupVerAnterior(); + end; + Result := True; +end;} + +function InitializeSetup(): Boolean; +var + p: HWND; +begin + // Comprobar que FactuGES no est en ejecucin + p := FindWindowByWindowName('FactuGES'); + if p > 0 then + begin + MsgBox('Debe salir de FactuGES para poder instalar esta actualizacin',mbInformation, MB_OK); + Result := False + end + else begin + // Comprobar que la ruta del programa est en el registro + Result := RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\FactuGES', 'Ruta', Ruta); + end; +end; + + + + diff --git a/Installer/Actualizacion/Files/FactuGES.exe b/Installer/Actualizacion/Files/FactuGES.exe new file mode 100644 index 00000000..6dbab3ba Binary files /dev/null and b/Installer/Actualizacion/Files/FactuGES.exe differ diff --git a/Installer/Actualizacion/Output/instalar.exe b/Installer/Actualizacion/Output/instalar.exe new file mode 100644 index 00000000..71bf12e8 Binary files /dev/null and b/Installer/Actualizacion/Output/instalar.exe differ diff --git a/Resources/Iconos/Agenda/16x16/Date-Time.png b/Resources/Iconos/Agenda/16x16/Date-Time.png new file mode 100644 index 00000000..fe95a0f6 Binary files /dev/null and b/Resources/Iconos/Agenda/16x16/Date-Time.png differ diff --git a/Resources/Iconos/Agenda/16x16/Thumbs.db b/Resources/Iconos/Agenda/16x16/Thumbs.db new file mode 100644 index 00000000..fd97e6f1 Binary files /dev/null and b/Resources/Iconos/Agenda/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Agenda/24x24/Date-Time.png b/Resources/Iconos/Agenda/24x24/Date-Time.png new file mode 100644 index 00000000..665b7acd Binary files /dev/null and b/Resources/Iconos/Agenda/24x24/Date-Time.png differ diff --git a/Resources/Iconos/Agenda/24x24/Thumbs.db b/Resources/Iconos/Agenda/24x24/Thumbs.db new file mode 100644 index 00000000..56c6f900 Binary files /dev/null and b/Resources/Iconos/Agenda/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Agenda/28x28/Date-Time.png b/Resources/Iconos/Agenda/28x28/Date-Time.png new file mode 100644 index 00000000..90f2320b Binary files /dev/null and b/Resources/Iconos/Agenda/28x28/Date-Time.png differ diff --git a/Resources/Iconos/Agenda/28x28/Thumbs.db b/Resources/Iconos/Agenda/28x28/Thumbs.db new file mode 100644 index 00000000..1c607da2 Binary files /dev/null and b/Resources/Iconos/Agenda/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Agenda/Thumbs.db b/Resources/Iconos/Agenda/Thumbs.db new file mode 100644 index 00000000..fdd120a1 Binary files /dev/null and b/Resources/Iconos/Agenda/Thumbs.db differ diff --git a/Resources/Iconos/Albaranes/16x16/Letters patent.png b/Resources/Iconos/Albaranes/16x16/Letters patent.png new file mode 100644 index 00000000..2a70568e Binary files /dev/null and b/Resources/Iconos/Albaranes/16x16/Letters patent.png differ diff --git a/Resources/Iconos/Albaranes/16x16/Thumbs.db b/Resources/Iconos/Albaranes/16x16/Thumbs.db new file mode 100644 index 00000000..f690aed5 Binary files /dev/null and b/Resources/Iconos/Albaranes/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Albaranes/16x16/pagado.png b/Resources/Iconos/Albaranes/16x16/pagado.png new file mode 100644 index 00000000..274231ad Binary files /dev/null and b/Resources/Iconos/Albaranes/16x16/pagado.png differ diff --git a/Resources/Iconos/Albaranes/24x24/Letters patent.png b/Resources/Iconos/Albaranes/24x24/Letters patent.png new file mode 100644 index 00000000..f82a076d Binary files /dev/null and b/Resources/Iconos/Albaranes/24x24/Letters patent.png differ diff --git a/Resources/Iconos/Albaranes/24x24/Thumbs.db b/Resources/Iconos/Albaranes/24x24/Thumbs.db new file mode 100644 index 00000000..ee9196c8 Binary files /dev/null and b/Resources/Iconos/Albaranes/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Albaranes/28x28/Letters patent.png b/Resources/Iconos/Albaranes/28x28/Letters patent.png new file mode 100644 index 00000000..4b30b6f9 Binary files /dev/null and b/Resources/Iconos/Albaranes/28x28/Letters patent.png differ diff --git a/Resources/Iconos/Albaranes/28x28/Thumbs.db b/Resources/Iconos/Albaranes/28x28/Thumbs.db new file mode 100644 index 00000000..6012de94 Binary files /dev/null and b/Resources/Iconos/Albaranes/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Almacenes/16x16/Box-Closed-2.png b/Resources/Iconos/Almacenes/16x16/Box-Closed-2.png new file mode 100644 index 00000000..35c88b20 Binary files /dev/null and b/Resources/Iconos/Almacenes/16x16/Box-Closed-2.png differ diff --git a/Resources/Iconos/Almacenes/16x16/Thumbs.db b/Resources/Iconos/Almacenes/16x16/Thumbs.db new file mode 100644 index 00000000..ea2f89bc Binary files /dev/null and b/Resources/Iconos/Almacenes/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Almacenes/16x16/nuevoalmacen.png b/Resources/Iconos/Almacenes/16x16/nuevoalmacen.png new file mode 100644 index 00000000..0d7d5b88 Binary files /dev/null and b/Resources/Iconos/Almacenes/16x16/nuevoalmacen.png differ diff --git a/Resources/Iconos/Almacenes/24x24/Box-Closed-2.png b/Resources/Iconos/Almacenes/24x24/Box-Closed-2.png new file mode 100644 index 00000000..7aeec56a Binary files /dev/null and b/Resources/Iconos/Almacenes/24x24/Box-Closed-2.png differ diff --git a/Resources/Iconos/Almacenes/24x24/Thumbs.db b/Resources/Iconos/Almacenes/24x24/Thumbs.db new file mode 100644 index 00000000..3bc4c822 Binary files /dev/null and b/Resources/Iconos/Almacenes/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Almacenes/24x24/nuevoalmacen.png b/Resources/Iconos/Almacenes/24x24/nuevoalmacen.png new file mode 100644 index 00000000..1ddababc Binary files /dev/null and b/Resources/Iconos/Almacenes/24x24/nuevoalmacen.png differ diff --git a/Resources/Iconos/Almacenes/28x28/Box-Closed-2.png b/Resources/Iconos/Almacenes/28x28/Box-Closed-2.png new file mode 100644 index 00000000..89db7f40 Binary files /dev/null and b/Resources/Iconos/Almacenes/28x28/Box-Closed-2.png differ diff --git a/Resources/Iconos/Almacenes/28x28/Thumbs.db b/Resources/Iconos/Almacenes/28x28/Thumbs.db new file mode 100644 index 00000000..1e617685 Binary files /dev/null and b/Resources/Iconos/Almacenes/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Artículos/16x16/Image.png b/Resources/Iconos/Artículos/16x16/Image.png new file mode 100644 index 00000000..1c2bd1bd Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/Image.png differ diff --git a/Resources/Iconos/Artículos/16x16/Insert.png b/Resources/Iconos/Artículos/16x16/Insert.png new file mode 100644 index 00000000..a6dde0f0 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/Insert.png differ diff --git a/Resources/Iconos/Artículos/16x16/Note-Edit.png b/Resources/Iconos/Artículos/16x16/Note-Edit.png new file mode 100644 index 00000000..ae682883 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/Note-Edit.png differ diff --git a/Resources/Iconos/Artículos/16x16/Remove.png b/Resources/Iconos/Artículos/16x16/Remove.png new file mode 100644 index 00000000..332ae886 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/Remove.png differ diff --git a/Resources/Iconos/Artículos/16x16/Swap.png b/Resources/Iconos/Artículos/16x16/Swap.png new file mode 100644 index 00000000..bf54e00c Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/Swap.png differ diff --git a/Resources/Iconos/Artículos/16x16/Thumbs.db b/Resources/Iconos/Artículos/16x16/Thumbs.db new file mode 100644 index 00000000..83cbe0c8 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Artículos/16x16/articulos.png b/Resources/Iconos/Artículos/16x16/articulos.png new file mode 100644 index 00000000..acbaca94 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/articulos.png differ diff --git a/Resources/Iconos/Artículos/16x16/comisionable.png b/Resources/Iconos/Artículos/16x16/comisionable.png new file mode 100644 index 00000000..0b5765e6 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/comisionable.png differ diff --git a/Resources/Iconos/Artículos/16x16/liberar.png b/Resources/Iconos/Artículos/16x16/liberar.png new file mode 100644 index 00000000..0f05e979 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/liberar.png differ diff --git a/Resources/Iconos/Artículos/16x16/no_comisionable.png b/Resources/Iconos/Artículos/16x16/no_comisionable.png new file mode 100644 index 00000000..187e6add Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/no_comisionable.png differ diff --git a/Resources/Iconos/Artículos/16x16/recibirpedido.png b/Resources/Iconos/Artículos/16x16/recibirpedido.png new file mode 100644 index 00000000..8d0db7f4 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/recibirpedido.png differ diff --git a/Resources/Iconos/Artículos/16x16/reservar.png b/Resources/Iconos/Artículos/16x16/reservar.png new file mode 100644 index 00000000..475c2f85 Binary files /dev/null and b/Resources/Iconos/Artículos/16x16/reservar.png differ diff --git a/Resources/Iconos/Artículos/24x24/Image.png b/Resources/Iconos/Artículos/24x24/Image.png new file mode 100644 index 00000000..e7e2e3af Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/Image.png differ diff --git a/Resources/Iconos/Artículos/24x24/Insert.png b/Resources/Iconos/Artículos/24x24/Insert.png new file mode 100644 index 00000000..55fa057d Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/Insert.png differ diff --git a/Resources/Iconos/Artículos/24x24/Note-Edit.png b/Resources/Iconos/Artículos/24x24/Note-Edit.png new file mode 100644 index 00000000..639ffa64 Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/Note-Edit.png differ diff --git a/Resources/Iconos/Artículos/24x24/Remove.png b/Resources/Iconos/Artículos/24x24/Remove.png new file mode 100644 index 00000000..96872cd0 Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/Remove.png differ diff --git a/Resources/Iconos/Artículos/24x24/Swap.png b/Resources/Iconos/Artículos/24x24/Swap.png new file mode 100644 index 00000000..12cece46 Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/Swap.png differ diff --git a/Resources/Iconos/Artículos/24x24/Thumbs.db b/Resources/Iconos/Artículos/24x24/Thumbs.db new file mode 100644 index 00000000..e555100c Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Artículos/24x24/articulos.png b/Resources/Iconos/Artículos/24x24/articulos.png new file mode 100644 index 00000000..c638dfe6 Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/articulos.png differ diff --git a/Resources/Iconos/Artículos/24x24/liberar.png b/Resources/Iconos/Artículos/24x24/liberar.png new file mode 100644 index 00000000..40be1394 Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/liberar.png differ diff --git a/Resources/Iconos/Artículos/24x24/recibirpedido.png b/Resources/Iconos/Artículos/24x24/recibirpedido.png new file mode 100644 index 00000000..87a39a09 Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/recibirpedido.png differ diff --git a/Resources/Iconos/Artículos/24x24/reservar.png b/Resources/Iconos/Artículos/24x24/reservar.png new file mode 100644 index 00000000..a380fe5e Binary files /dev/null and b/Resources/Iconos/Artículos/24x24/reservar.png differ diff --git a/Resources/Iconos/Artículos/28x28/Image.png b/Resources/Iconos/Artículos/28x28/Image.png new file mode 100644 index 00000000..08988ff5 Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/Image.png differ diff --git a/Resources/Iconos/Artículos/28x28/Insert.png b/Resources/Iconos/Artículos/28x28/Insert.png new file mode 100644 index 00000000..1cf6ee4e Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/Insert.png differ diff --git a/Resources/Iconos/Artículos/28x28/Note-Edit.png b/Resources/Iconos/Artículos/28x28/Note-Edit.png new file mode 100644 index 00000000..c30be680 Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/Note-Edit.png differ diff --git a/Resources/Iconos/Artículos/28x28/Remove.png b/Resources/Iconos/Artículos/28x28/Remove.png new file mode 100644 index 00000000..f4f4bb20 Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/Remove.png differ diff --git a/Resources/Iconos/Artículos/28x28/Swap.png b/Resources/Iconos/Artículos/28x28/Swap.png new file mode 100644 index 00000000..2e23a78d Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/Swap.png differ diff --git a/Resources/Iconos/Artículos/28x28/Thumbs.db b/Resources/Iconos/Artículos/28x28/Thumbs.db new file mode 100644 index 00000000..376d1ba3 Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Artículos/28x28/articulos.png b/Resources/Iconos/Artículos/28x28/articulos.png new file mode 100644 index 00000000..95147f2d Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/articulos.png differ diff --git a/Resources/Iconos/Artículos/28x28/liberar.png b/Resources/Iconos/Artículos/28x28/liberar.png new file mode 100644 index 00000000..bd5c233d Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/liberar.png differ diff --git a/Resources/Iconos/Artículos/28x28/recibirpedido.png b/Resources/Iconos/Artículos/28x28/recibirpedido.png new file mode 100644 index 00000000..15c59857 Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/recibirpedido.png differ diff --git a/Resources/Iconos/Artículos/28x28/reservar.png b/Resources/Iconos/Artículos/28x28/reservar.png new file mode 100644 index 00000000..06ba9c55 Binary files /dev/null and b/Resources/Iconos/Artículos/28x28/reservar.png differ diff --git a/Resources/Iconos/Asientos/16x16/Cerrar.png b/Resources/Iconos/Asientos/16x16/Cerrar.png new file mode 100644 index 00000000..e0a26441 Binary files /dev/null and b/Resources/Iconos/Asientos/16x16/Cerrar.png differ diff --git a/Resources/Iconos/Asientos/16x16/Thumbs.db b/Resources/Iconos/Asientos/16x16/Thumbs.db new file mode 100644 index 00000000..1ee38c01 Binary files /dev/null and b/Resources/Iconos/Asientos/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Asientos/16x16/Tick.png b/Resources/Iconos/Asientos/16x16/Tick.png new file mode 100644 index 00000000..5d813a49 Binary files /dev/null and b/Resources/Iconos/Asientos/16x16/Tick.png differ diff --git a/Resources/Iconos/Asientos/24x24/Cerrar.png b/Resources/Iconos/Asientos/24x24/Cerrar.png new file mode 100644 index 00000000..f421f369 Binary files /dev/null and b/Resources/Iconos/Asientos/24x24/Cerrar.png differ diff --git a/Resources/Iconos/Asientos/24x24/Thumbs.db b/Resources/Iconos/Asientos/24x24/Thumbs.db new file mode 100644 index 00000000..7196d4f2 Binary files /dev/null and b/Resources/Iconos/Asientos/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Asientos/24x24/Tick.png b/Resources/Iconos/Asientos/24x24/Tick.png new file mode 100644 index 00000000..87126802 Binary files /dev/null and b/Resources/Iconos/Asientos/24x24/Tick.png differ diff --git a/Resources/Iconos/Asientos/28x28/Cerrar.png b/Resources/Iconos/Asientos/28x28/Cerrar.png new file mode 100644 index 00000000..f690bb7a Binary files /dev/null and b/Resources/Iconos/Asientos/28x28/Cerrar.png differ diff --git a/Resources/Iconos/Asientos/28x28/Thumbs.db b/Resources/Iconos/Asientos/28x28/Thumbs.db new file mode 100644 index 00000000..096feb0a Binary files /dev/null and b/Resources/Iconos/Asientos/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Asientos/28x28/Tick.png b/Resources/Iconos/Asientos/28x28/Tick.png new file mode 100644 index 00000000..293b401e Binary files /dev/null and b/Resources/Iconos/Asientos/28x28/Tick.png differ diff --git a/Resources/Iconos/Contactos/16x16/Box-Open-2.png b/Resources/Iconos/Contactos/16x16/Box-Open-2.png new file mode 100644 index 00000000..8e304185 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Box-Open-2.png differ diff --git a/Resources/Iconos/Contactos/16x16/Comisiones.png b/Resources/Iconos/Contactos/16x16/Comisiones.png new file mode 100644 index 00000000..ce0f6285 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Comisiones.png differ diff --git a/Resources/Iconos/Contactos/16x16/Contact-Add.png b/Resources/Iconos/Contactos/16x16/Contact-Add.png new file mode 100644 index 00000000..28bd71ce Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Contact-Add.png differ diff --git a/Resources/Iconos/Contactos/16x16/Contact-Edit.png b/Resources/Iconos/Contactos/16x16/Contact-Edit.png new file mode 100644 index 00000000..c413b8b3 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Contact-Edit.png differ diff --git a/Resources/Iconos/Contactos/16x16/Contact.png b/Resources/Iconos/Contactos/16x16/Contact.png new file mode 100644 index 00000000..00e503ff Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Contact.png differ diff --git a/Resources/Iconos/Contactos/16x16/Contact2.png b/Resources/Iconos/Contactos/16x16/Contact2.png new file mode 100644 index 00000000..c005eb1c Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Contact2.png differ diff --git a/Resources/Iconos/Contactos/16x16/Contact3.png b/Resources/Iconos/Contactos/16x16/Contact3.png new file mode 100644 index 00000000..38b7fcdd Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Contact3.png differ diff --git a/Resources/Iconos/Contactos/16x16/Contact4.png b/Resources/Iconos/Contactos/16x16/Contact4.png new file mode 100644 index 00000000..0c12c3d8 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Contact4.png differ diff --git a/Resources/Iconos/Contactos/16x16/Currency.png b/Resources/Iconos/Contactos/16x16/Currency.png new file mode 100644 index 00000000..5ecaee85 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Currency.png differ diff --git a/Resources/Iconos/Contactos/16x16/Internet.png b/Resources/Iconos/Contactos/16x16/Internet.png new file mode 100644 index 00000000..1e96cc50 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Internet.png differ diff --git a/Resources/Iconos/Contactos/16x16/Lock.png b/Resources/Iconos/Contactos/16x16/Lock.png new file mode 100644 index 00000000..5b243007 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Lock.png differ diff --git a/Resources/Iconos/Contactos/16x16/Mail.png b/Resources/Iconos/Contactos/16x16/Mail.png new file mode 100644 index 00000000..640a3883 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Mail.png differ diff --git a/Resources/Iconos/Contactos/16x16/Proveedor-Add.png b/Resources/Iconos/Contactos/16x16/Proveedor-Add.png new file mode 100644 index 00000000..102e3413 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Proveedor-Add.png differ diff --git a/Resources/Iconos/Contactos/16x16/Thumbs.db b/Resources/Iconos/Contactos/16x16/Thumbs.db new file mode 100644 index 00000000..d9d837fd Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Contactos/16x16/Unlock.png b/Resources/Iconos/Contactos/16x16/Unlock.png new file mode 100644 index 00000000..74c6a486 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/Unlock.png differ diff --git a/Resources/Iconos/Contactos/16x16/User.png b/Resources/Iconos/Contactos/16x16/User.png new file mode 100644 index 00000000..ee6f2a7b Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/User.png differ diff --git a/Resources/Iconos/Contactos/16x16/User2.png b/Resources/Iconos/Contactos/16x16/User2.png new file mode 100644 index 00000000..3b33831c Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/User2.png differ diff --git a/Resources/Iconos/Contactos/16x16/User3.png b/Resources/Iconos/Contactos/16x16/User3.png new file mode 100644 index 00000000..6a5b5ce7 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/User3.png differ diff --git a/Resources/Iconos/Contactos/16x16/User4.png b/Resources/Iconos/Contactos/16x16/User4.png new file mode 100644 index 00000000..d501e3ae Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/User4.png differ diff --git a/Resources/Iconos/Contactos/16x16/grupos.png b/Resources/Iconos/Contactos/16x16/grupos.png new file mode 100644 index 00000000..5238f9b8 Binary files /dev/null and b/Resources/Iconos/Contactos/16x16/grupos.png differ diff --git a/Resources/Iconos/Contactos/24x24/Box-Open-2.png b/Resources/Iconos/Contactos/24x24/Box-Open-2.png new file mode 100644 index 00000000..99594467 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Box-Open-2.png differ diff --git a/Resources/Iconos/Contactos/24x24/Comisiones.png b/Resources/Iconos/Contactos/24x24/Comisiones.png new file mode 100644 index 00000000..f0be9b40 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Comisiones.png differ diff --git a/Resources/Iconos/Contactos/24x24/Contact-Add.png b/Resources/Iconos/Contactos/24x24/Contact-Add.png new file mode 100644 index 00000000..5aefd121 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Contact-Add.png differ diff --git a/Resources/Iconos/Contactos/24x24/Contact-Edit.png b/Resources/Iconos/Contactos/24x24/Contact-Edit.png new file mode 100644 index 00000000..4ab86515 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Contact-Edit.png differ diff --git a/Resources/Iconos/Contactos/24x24/Contact.png b/Resources/Iconos/Contactos/24x24/Contact.png new file mode 100644 index 00000000..3272bfdd Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Contact.png differ diff --git a/Resources/Iconos/Contactos/24x24/Contact2.png b/Resources/Iconos/Contactos/24x24/Contact2.png new file mode 100644 index 00000000..4a64469b Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Contact2.png differ diff --git a/Resources/Iconos/Contactos/24x24/Contact3.png b/Resources/Iconos/Contactos/24x24/Contact3.png new file mode 100644 index 00000000..8fdf0236 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Contact3.png differ diff --git a/Resources/Iconos/Contactos/24x24/Contact4.png b/Resources/Iconos/Contactos/24x24/Contact4.png new file mode 100644 index 00000000..b9b58b32 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Contact4.png differ diff --git a/Resources/Iconos/Contactos/24x24/Currency.png b/Resources/Iconos/Contactos/24x24/Currency.png new file mode 100644 index 00000000..af28329e Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Currency.png differ diff --git a/Resources/Iconos/Contactos/24x24/Lock.png b/Resources/Iconos/Contactos/24x24/Lock.png new file mode 100644 index 00000000..546a3cb5 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Lock.png differ diff --git a/Resources/Iconos/Contactos/24x24/Thumbs.db b/Resources/Iconos/Contactos/24x24/Thumbs.db new file mode 100644 index 00000000..f5421e10 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Contactos/24x24/Unlock.png b/Resources/Iconos/Contactos/24x24/Unlock.png new file mode 100644 index 00000000..6fb233fc Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/Unlock.png differ diff --git a/Resources/Iconos/Contactos/24x24/grupos.png b/Resources/Iconos/Contactos/24x24/grupos.png new file mode 100644 index 00000000..d23ba6e3 Binary files /dev/null and b/Resources/Iconos/Contactos/24x24/grupos.png differ diff --git a/Resources/Iconos/Contactos/28x28/Box-Open-2.png b/Resources/Iconos/Contactos/28x28/Box-Open-2.png new file mode 100644 index 00000000..e88310c2 Binary files /dev/null and b/Resources/Iconos/Contactos/28x28/Box-Open-2.png differ diff --git a/Resources/Iconos/Contactos/28x28/Currency.png b/Resources/Iconos/Contactos/28x28/Currency.png new file mode 100644 index 00000000..0d7259cc Binary files /dev/null and b/Resources/Iconos/Contactos/28x28/Currency.png differ diff --git a/Resources/Iconos/Contactos/28x28/Lock.png b/Resources/Iconos/Contactos/28x28/Lock.png new file mode 100644 index 00000000..079d7c56 Binary files /dev/null and b/Resources/Iconos/Contactos/28x28/Lock.png differ diff --git a/Resources/Iconos/Contactos/28x28/Thumbs.db b/Resources/Iconos/Contactos/28x28/Thumbs.db new file mode 100644 index 00000000..89067f96 Binary files /dev/null and b/Resources/Iconos/Contactos/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Contactos/28x28/Unlock.png b/Resources/Iconos/Contactos/28x28/Unlock.png new file mode 100644 index 00000000..6ef3e1b0 Binary files /dev/null and b/Resources/Iconos/Contactos/28x28/Unlock.png differ diff --git a/Resources/Iconos/Contactos/28x28/grupos.png b/Resources/Iconos/Contactos/28x28/grupos.png new file mode 100644 index 00000000..5dcccce4 Binary files /dev/null and b/Resources/Iconos/Contactos/28x28/grupos.png differ diff --git a/Resources/Iconos/Cuentas/16x16/Book-Open.png b/Resources/Iconos/Cuentas/16x16/Book-Open.png new file mode 100644 index 00000000..83113786 Binary files /dev/null and b/Resources/Iconos/Cuentas/16x16/Book-Open.png differ diff --git a/Resources/Iconos/Cuentas/16x16/Books.png b/Resources/Iconos/Cuentas/16x16/Books.png new file mode 100644 index 00000000..eaf0f6dd Binary files /dev/null and b/Resources/Iconos/Cuentas/16x16/Books.png differ diff --git a/Resources/Iconos/Cuentas/16x16/Thumbs.db b/Resources/Iconos/Cuentas/16x16/Thumbs.db new file mode 100644 index 00000000..8b5e7933 Binary files /dev/null and b/Resources/Iconos/Cuentas/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Cuentas/24x24/Book-Open.png b/Resources/Iconos/Cuentas/24x24/Book-Open.png new file mode 100644 index 00000000..e6c602eb Binary files /dev/null and b/Resources/Iconos/Cuentas/24x24/Book-Open.png differ diff --git a/Resources/Iconos/Cuentas/24x24/Books.png b/Resources/Iconos/Cuentas/24x24/Books.png new file mode 100644 index 00000000..a845dfc7 Binary files /dev/null and b/Resources/Iconos/Cuentas/24x24/Books.png differ diff --git a/Resources/Iconos/Cuentas/24x24/Thumbs.db b/Resources/Iconos/Cuentas/24x24/Thumbs.db new file mode 100644 index 00000000..613b3ee3 Binary files /dev/null and b/Resources/Iconos/Cuentas/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Cuentas/28x28/Book-Open.png b/Resources/Iconos/Cuentas/28x28/Book-Open.png new file mode 100644 index 00000000..d7efe07f Binary files /dev/null and b/Resources/Iconos/Cuentas/28x28/Book-Open.png differ diff --git a/Resources/Iconos/Cuentas/28x28/Books.png b/Resources/Iconos/Cuentas/28x28/Books.png new file mode 100644 index 00000000..64136d3f Binary files /dev/null and b/Resources/Iconos/Cuentas/28x28/Books.png differ diff --git a/Resources/Iconos/Cuentas/28x28/Thumbs.db b/Resources/Iconos/Cuentas/28x28/Thumbs.db new file mode 100644 index 00000000..dd588db6 Binary files /dev/null and b/Resources/Iconos/Cuentas/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Factuges.ico b/Resources/Iconos/Factuges.ico new file mode 100644 index 00000000..9e11815d Binary files /dev/null and b/Resources/Iconos/Factuges.ico differ diff --git a/Resources/Iconos/Facturas de cliente/16x16/Invoice.png b/Resources/Iconos/Facturas de cliente/16x16/Invoice.png new file mode 100644 index 00000000..1e2e9cce Binary files /dev/null and b/Resources/Iconos/Facturas de cliente/16x16/Invoice.png differ diff --git a/Resources/Iconos/Facturas de cliente/16x16/Thumbs.db b/Resources/Iconos/Facturas de cliente/16x16/Thumbs.db new file mode 100644 index 00000000..4d09a87b Binary files /dev/null and b/Resources/Iconos/Facturas de cliente/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Facturas de cliente/24x24/Invoice.png b/Resources/Iconos/Facturas de cliente/24x24/Invoice.png new file mode 100644 index 00000000..c24cd70a Binary files /dev/null and b/Resources/Iconos/Facturas de cliente/24x24/Invoice.png differ diff --git a/Resources/Iconos/Facturas de cliente/24x24/Thumbs.db b/Resources/Iconos/Facturas de cliente/24x24/Thumbs.db new file mode 100644 index 00000000..7047bebc Binary files /dev/null and b/Resources/Iconos/Facturas de cliente/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Facturas de cliente/28x28/Invoice.png b/Resources/Iconos/Facturas de cliente/28x28/Invoice.png new file mode 100644 index 00000000..045a1f70 Binary files /dev/null and b/Resources/Iconos/Facturas de cliente/28x28/Invoice.png differ diff --git a/Resources/Iconos/Facturas de cliente/28x28/Thumbs.db b/Resources/Iconos/Facturas de cliente/28x28/Thumbs.db new file mode 100644 index 00000000..00a72925 Binary files /dev/null and b/Resources/Iconos/Facturas de cliente/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Familias/16x16/00473.png b/Resources/Iconos/Familias/16x16/00473.png new file mode 100644 index 00000000..e40fffcf Binary files /dev/null and b/Resources/Iconos/Familias/16x16/00473.png differ diff --git a/Resources/Iconos/Familias/16x16/Thumbs.db b/Resources/Iconos/Familias/16x16/Thumbs.db new file mode 100644 index 00000000..d4079277 Binary files /dev/null and b/Resources/Iconos/Familias/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Generales/16x16/09378.bmp b/Resources/Iconos/Generales/16x16/09378.bmp new file mode 100644 index 00000000..248fc742 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/09378.bmp differ diff --git a/Resources/Iconos/Generales/16x16/09378.png b/Resources/Iconos/Generales/16x16/09378.png new file mode 100644 index 00000000..7e795992 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/09378.png differ diff --git a/Resources/Iconos/Generales/16x16/About.png b/Resources/Iconos/Generales/16x16/About.png new file mode 100644 index 00000000..32635dbb Binary files /dev/null and b/Resources/Iconos/Generales/16x16/About.png differ diff --git a/Resources/Iconos/Generales/16x16/Align-Centre-2.png b/Resources/Iconos/Generales/16x16/Align-Centre-2.png new file mode 100644 index 00000000..d4f9ffd3 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Align-Centre-2.png differ diff --git a/Resources/Iconos/Generales/16x16/Align-Left-2.png b/Resources/Iconos/Generales/16x16/Align-Left-2.png new file mode 100644 index 00000000..63565ffe Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Align-Left-2.png differ diff --git a/Resources/Iconos/Generales/16x16/Align-Right-2.png b/Resources/Iconos/Generales/16x16/Align-Right-2.png new file mode 100644 index 00000000..3cd5ad91 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Align-Right-2.png differ diff --git a/Resources/Iconos/Generales/16x16/Añadir-capítulo.png b/Resources/Iconos/Generales/16x16/Añadir-capítulo.png new file mode 100644 index 00000000..16e9ab93 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Añadir-capítulo.png differ diff --git a/Resources/Iconos/Generales/16x16/Añadir-material.png b/Resources/Iconos/Generales/16x16/Añadir-material.png new file mode 100644 index 00000000..d43ef4ac Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Añadir-material.png differ diff --git a/Resources/Iconos/Generales/16x16/Back.png b/Resources/Iconos/Generales/16x16/Back.png new file mode 100644 index 00000000..31194b54 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Back.png differ diff --git a/Resources/Iconos/Generales/16x16/Bold.png b/Resources/Iconos/Generales/16x16/Bold.png new file mode 100644 index 00000000..fde06b45 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Bold.png differ diff --git a/Resources/Iconos/Generales/16x16/Box-Closed.png b/Resources/Iconos/Generales/16x16/Box-Closed.png new file mode 100644 index 00000000..189b83f2 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Box-Closed.png differ diff --git a/Resources/Iconos/Generales/16x16/Box-Open-2.png b/Resources/Iconos/Generales/16x16/Box-Open-2.png new file mode 100644 index 00000000..8e304185 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Box-Open-2.png differ diff --git a/Resources/Iconos/Generales/16x16/Card-Copy.png b/Resources/Iconos/Generales/16x16/Card-Copy.png new file mode 100644 index 00000000..0da221c6 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Card-Copy.png differ diff --git a/Resources/Iconos/Generales/16x16/Clear.png b/Resources/Iconos/Generales/16x16/Clear.png new file mode 100644 index 00000000..2062c27e Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Clear.png differ diff --git a/Resources/Iconos/Generales/16x16/Copy.png b/Resources/Iconos/Generales/16x16/Copy.png new file mode 100644 index 00000000..7067e8d9 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Copy.png differ diff --git a/Resources/Iconos/Generales/16x16/Cut.png b/Resources/Iconos/Generales/16x16/Cut.png new file mode 100644 index 00000000..3bb4451f Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Cut.png differ diff --git a/Resources/Iconos/Generales/16x16/Debug-Breakpoint.png b/Resources/Iconos/Generales/16x16/Debug-Breakpoint.png new file mode 100644 index 00000000..464fcd71 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Debug-Breakpoint.png differ diff --git a/Resources/Iconos/Generales/16x16/Debug-Watch-Delete.png b/Resources/Iconos/Generales/16x16/Debug-Watch-Delete.png new file mode 100644 index 00000000..8e2e6a1a Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Debug-Watch-Delete.png differ diff --git a/Resources/Iconos/Generales/16x16/Debug-Watch.png b/Resources/Iconos/Generales/16x16/Debug-Watch.png new file mode 100644 index 00000000..5976f758 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Debug-Watch.png differ diff --git a/Resources/Iconos/Generales/16x16/Delete copia.bmp b/Resources/Iconos/Generales/16x16/Delete copia.bmp new file mode 100644 index 00000000..5cf5cd87 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Delete copia.bmp differ diff --git a/Resources/Iconos/Generales/16x16/Delete.png b/Resources/Iconos/Generales/16x16/Delete.png new file mode 100644 index 00000000..cb27f309 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Delete.png differ diff --git a/Resources/Iconos/Generales/16x16/Distribute-Rows Evenly.png b/Resources/Iconos/Generales/16x16/Distribute-Rows Evenly.png new file mode 100644 index 00000000..42c647ba Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Distribute-Rows Evenly.png differ diff --git a/Resources/Iconos/Generales/16x16/Edit.png b/Resources/Iconos/Generales/16x16/Edit.png new file mode 100644 index 00000000..a4431dd7 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Edit.png differ diff --git a/Resources/Iconos/Generales/16x16/Execute.png b/Resources/Iconos/Generales/16x16/Execute.png new file mode 100644 index 00000000..f70dc846 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Execute.png differ diff --git a/Resources/Iconos/Generales/16x16/Exit.png b/Resources/Iconos/Generales/16x16/Exit.png new file mode 100644 index 00000000..21613aa8 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Exit.png differ diff --git a/Resources/Iconos/Generales/16x16/Form-New.png b/Resources/Iconos/Generales/16x16/Form-New.png new file mode 100644 index 00000000..d0e676a3 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Form-New.png differ diff --git a/Resources/Iconos/Generales/16x16/Format-Font.png b/Resources/Iconos/Generales/16x16/Format-Font.png new file mode 100644 index 00000000..d3040cdd Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Format-Font.png differ diff --git a/Resources/Iconos/Generales/16x16/Forward.png b/Resources/Iconos/Generales/16x16/Forward.png new file mode 100644 index 00000000..2a17743d Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Forward.png differ diff --git a/Resources/Iconos/Generales/16x16/Home.png b/Resources/Iconos/Generales/16x16/Home.png new file mode 100644 index 00000000..199e9cd5 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Home.png differ diff --git a/Resources/Iconos/Generales/16x16/Italic.png b/Resources/Iconos/Generales/16x16/Italic.png new file mode 100644 index 00000000..c5efeb35 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Italic.png differ diff --git a/Resources/Iconos/Generales/16x16/Minus.png b/Resources/Iconos/Generales/16x16/Minus.png new file mode 100644 index 00000000..ad8a7d0d Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Minus.png differ diff --git a/Resources/Iconos/Generales/16x16/New.png b/Resources/Iconos/Generales/16x16/New.png new file mode 100644 index 00000000..adfecfe6 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/New.png differ diff --git a/Resources/Iconos/Generales/16x16/Outline-Collapse.png b/Resources/Iconos/Generales/16x16/Outline-Collapse.png new file mode 100644 index 00000000..95ded088 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Outline-Collapse.png differ diff --git a/Resources/Iconos/Generales/16x16/Outline-Expand.png b/Resources/Iconos/Generales/16x16/Outline-Expand.png new file mode 100644 index 00000000..17cbe65a Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Outline-Expand.png differ diff --git a/Resources/Iconos/Generales/16x16/Outline-Move Down.png b/Resources/Iconos/Generales/16x16/Outline-Move Down.png new file mode 100644 index 00000000..09fdc688 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Outline-Move Down.png differ diff --git a/Resources/Iconos/Generales/16x16/Outline-Move Up.png b/Resources/Iconos/Generales/16x16/Outline-Move Up.png new file mode 100644 index 00000000..4678faca Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Outline-Move Up.png differ diff --git a/Resources/Iconos/Generales/16x16/Parcel.png b/Resources/Iconos/Generales/16x16/Parcel.png new file mode 100644 index 00000000..eb0ef92f Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Parcel.png differ diff --git a/Resources/Iconos/Generales/16x16/Paste.png b/Resources/Iconos/Generales/16x16/Paste.png new file mode 100644 index 00000000..f1cbee68 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Paste.png differ diff --git a/Resources/Iconos/Generales/16x16/Plus copia.bmp b/Resources/Iconos/Generales/16x16/Plus copia.bmp new file mode 100644 index 00000000..df1c069a Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Plus copia.bmp differ diff --git a/Resources/Iconos/Generales/16x16/Plus.png b/Resources/Iconos/Generales/16x16/Plus.png new file mode 100644 index 00000000..cab9e8e7 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Plus.png differ diff --git a/Resources/Iconos/Generales/16x16/Preview.png b/Resources/Iconos/Generales/16x16/Preview.png new file mode 100644 index 00000000..a1ee549e Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Preview.png differ diff --git a/Resources/Iconos/Generales/16x16/Print-Options.png b/Resources/Iconos/Generales/16x16/Print-Options.png new file mode 100644 index 00000000..cd0e5095 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Print-Options.png differ diff --git a/Resources/Iconos/Generales/16x16/Print.png b/Resources/Iconos/Generales/16x16/Print.png new file mode 100644 index 00000000..8f029d70 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Print.png differ diff --git a/Resources/Iconos/Generales/16x16/Refresh.png b/Resources/Iconos/Generales/16x16/Refresh.png new file mode 100644 index 00000000..9ed4aacf Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Refresh.png differ diff --git a/Resources/Iconos/Generales/16x16/Save.png b/Resources/Iconos/Generales/16x16/Save.png new file mode 100644 index 00000000..51eb9dea Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Save.png differ diff --git a/Resources/Iconos/Generales/16x16/Search.png b/Resources/Iconos/Generales/16x16/Search.png new file mode 100644 index 00000000..e7a67586 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Search.png differ diff --git a/Resources/Iconos/Generales/16x16/Select All.png b/Resources/Iconos/Generales/16x16/Select All.png new file mode 100644 index 00000000..b3476eb3 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Select All.png differ diff --git a/Resources/Iconos/Generales/16x16/Speaking-Start.png b/Resources/Iconos/Generales/16x16/Speaking-Start.png new file mode 100644 index 00000000..935e566a Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Speaking-Start.png differ diff --git a/Resources/Iconos/Generales/16x16/Sum-2.png b/Resources/Iconos/Generales/16x16/Sum-2.png new file mode 100644 index 00000000..6e5d8e92 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Sum-2.png differ diff --git a/Resources/Iconos/Generales/16x16/Table-Find In Field.png b/Resources/Iconos/Generales/16x16/Table-Find In Field.png new file mode 100644 index 00000000..3a6e075e Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Table-Find In Field.png differ diff --git a/Resources/Iconos/Generales/16x16/Table-Search.png b/Resources/Iconos/Generales/16x16/Table-Search.png new file mode 100644 index 00000000..be8bf80b Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Table-Search.png differ diff --git a/Resources/Iconos/Generales/16x16/Thumbs.db b/Resources/Iconos/Generales/16x16/Thumbs.db new file mode 100644 index 00000000..3bb8a861 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Generales/16x16/Total-capítulo.png b/Resources/Iconos/Generales/16x16/Total-capítulo.png new file mode 100644 index 00000000..4f721ba5 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Total-capítulo.png differ diff --git a/Resources/Iconos/Generales/16x16/Título-capítulo.png b/Resources/Iconos/Generales/16x16/Título-capítulo.png new file mode 100644 index 00000000..4eb60d9f Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Título-capítulo.png differ diff --git a/Resources/Iconos/Generales/16x16/Underline.png b/Resources/Iconos/Generales/16x16/Underline.png new file mode 100644 index 00000000..6ac4fd52 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Underline.png differ diff --git a/Resources/Iconos/Generales/16x16/Undo.png b/Resources/Iconos/Generales/16x16/Undo.png new file mode 100644 index 00000000..114cf33d Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Undo.png differ diff --git a/Resources/Iconos/Generales/16x16/View-One Page.png b/Resources/Iconos/Generales/16x16/View-One Page.png new file mode 100644 index 00000000..7573d11d Binary files /dev/null and b/Resources/Iconos/Generales/16x16/View-One Page.png differ diff --git a/Resources/Iconos/Generales/16x16/View-Page Width.png b/Resources/Iconos/Generales/16x16/View-Page Width.png new file mode 100644 index 00000000..2ad4e8e1 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/View-Page Width.png differ diff --git a/Resources/Iconos/Generales/16x16/WEB.PNG b/Resources/Iconos/Generales/16x16/WEB.PNG new file mode 100644 index 00000000..58e5bc1f Binary files /dev/null and b/Resources/Iconos/Generales/16x16/WEB.PNG differ diff --git a/Resources/Iconos/Generales/16x16/Warning.png b/Resources/Iconos/Generales/16x16/Warning.png new file mode 100644 index 00000000..0fca356c Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Warning.png differ diff --git a/Resources/Iconos/Generales/16x16/Zoom-In.png b/Resources/Iconos/Generales/16x16/Zoom-In.png new file mode 100644 index 00000000..812c814e Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Zoom-In.png differ diff --git a/Resources/Iconos/Generales/16x16/Zoom-Out.png b/Resources/Iconos/Generales/16x16/Zoom-Out.png new file mode 100644 index 00000000..e6ccf659 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/Zoom-Out.png differ diff --git a/Resources/Iconos/Generales/16x16/db-Next-2.png b/Resources/Iconos/Generales/16x16/db-Next-2.png new file mode 100644 index 00000000..759e9eee Binary files /dev/null and b/Resources/Iconos/Generales/16x16/db-Next-2.png differ diff --git a/Resources/Iconos/Generales/16x16/db-Previous-2.png b/Resources/Iconos/Generales/16x16/db-Previous-2.png new file mode 100644 index 00000000..f673f282 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/db-Previous-2.png differ diff --git a/Resources/Iconos/Generales/16x16/db-first-2.png b/Resources/Iconos/Generales/16x16/db-first-2.png new file mode 100644 index 00000000..72740252 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/db-first-2.png differ diff --git a/Resources/Iconos/Generales/16x16/db-last-2.png b/Resources/Iconos/Generales/16x16/db-last-2.png new file mode 100644 index 00000000..bfb5d672 Binary files /dev/null and b/Resources/Iconos/Generales/16x16/db-last-2.png differ diff --git a/Resources/Iconos/Generales/16x16/haycambios.png b/Resources/Iconos/Generales/16x16/haycambios.png new file mode 100644 index 00000000..693bda2e Binary files /dev/null and b/Resources/Iconos/Generales/16x16/haycambios.png differ diff --git a/Resources/Iconos/Generales/24x24/About.png b/Resources/Iconos/Generales/24x24/About.png new file mode 100644 index 00000000..5d0ba3e2 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/About.png differ diff --git a/Resources/Iconos/Generales/24x24/Back.png b/Resources/Iconos/Generales/24x24/Back.png new file mode 100644 index 00000000..1cd4d319 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Back.png differ diff --git a/Resources/Iconos/Generales/24x24/Box-Open-2.png b/Resources/Iconos/Generales/24x24/Box-Open-2.png new file mode 100644 index 00000000..99594467 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Box-Open-2.png differ diff --git a/Resources/Iconos/Generales/24x24/Card-Copy.png b/Resources/Iconos/Generales/24x24/Card-Copy.png new file mode 100644 index 00000000..ee4b76fa Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Card-Copy.png differ diff --git a/Resources/Iconos/Generales/24x24/Clear.png b/Resources/Iconos/Generales/24x24/Clear.png new file mode 100644 index 00000000..4ce31c85 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Clear.png differ diff --git a/Resources/Iconos/Generales/24x24/Copy.png b/Resources/Iconos/Generales/24x24/Copy.png new file mode 100644 index 00000000..9bf2618a Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Copy.png differ diff --git a/Resources/Iconos/Generales/24x24/Cut.png b/Resources/Iconos/Generales/24x24/Cut.png new file mode 100644 index 00000000..b6e65298 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Cut.png differ diff --git a/Resources/Iconos/Generales/24x24/Debug-Breakpoint.png b/Resources/Iconos/Generales/24x24/Debug-Breakpoint.png new file mode 100644 index 00000000..16e45420 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Debug-Breakpoint.png differ diff --git a/Resources/Iconos/Generales/24x24/Debug-Watch-Delete.png b/Resources/Iconos/Generales/24x24/Debug-Watch-Delete.png new file mode 100644 index 00000000..89ae7bdc Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Debug-Watch-Delete.png differ diff --git a/Resources/Iconos/Generales/24x24/Debug-Watch.png b/Resources/Iconos/Generales/24x24/Debug-Watch.png new file mode 100644 index 00000000..547428e9 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Debug-Watch.png differ diff --git a/Resources/Iconos/Generales/24x24/Delete.png b/Resources/Iconos/Generales/24x24/Delete.png new file mode 100644 index 00000000..a1691845 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Delete.png differ diff --git a/Resources/Iconos/Generales/24x24/Distribute-Rows Evenly.png b/Resources/Iconos/Generales/24x24/Distribute-Rows Evenly.png new file mode 100644 index 00000000..e18f1278 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Distribute-Rows Evenly.png differ diff --git a/Resources/Iconos/Generales/24x24/Edit.png b/Resources/Iconos/Generales/24x24/Edit.png new file mode 100644 index 00000000..f39269ee Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Edit.png differ diff --git a/Resources/Iconos/Generales/24x24/Execute.png b/Resources/Iconos/Generales/24x24/Execute.png new file mode 100644 index 00000000..6dbcc3b4 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Execute.png differ diff --git a/Resources/Iconos/Generales/24x24/Exit.png b/Resources/Iconos/Generales/24x24/Exit.png new file mode 100644 index 00000000..70eadf91 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Exit.png differ diff --git a/Resources/Iconos/Generales/24x24/Form-New.png b/Resources/Iconos/Generales/24x24/Form-New.png new file mode 100644 index 00000000..74f4b0af Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Form-New.png differ diff --git a/Resources/Iconos/Generales/24x24/Forward.png b/Resources/Iconos/Generales/24x24/Forward.png new file mode 100644 index 00000000..2ceec67c Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Forward.png differ diff --git a/Resources/Iconos/Generales/24x24/Home.png b/Resources/Iconos/Generales/24x24/Home.png new file mode 100644 index 00000000..96b8c874 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Home.png differ diff --git a/Resources/Iconos/Generales/24x24/Minus.png b/Resources/Iconos/Generales/24x24/Minus.png new file mode 100644 index 00000000..1b2257fa Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Minus.png differ diff --git a/Resources/Iconos/Generales/24x24/New.png b/Resources/Iconos/Generales/24x24/New.png new file mode 100644 index 00000000..bca2ba79 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/New.png differ diff --git a/Resources/Iconos/Generales/24x24/Outline-Collapse.png b/Resources/Iconos/Generales/24x24/Outline-Collapse.png new file mode 100644 index 00000000..0e7c2cc9 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Outline-Collapse.png differ diff --git a/Resources/Iconos/Generales/24x24/Outline-Expand.png b/Resources/Iconos/Generales/24x24/Outline-Expand.png new file mode 100644 index 00000000..c643a7c0 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Outline-Expand.png differ diff --git a/Resources/Iconos/Generales/24x24/Outline-Move Down.png b/Resources/Iconos/Generales/24x24/Outline-Move Down.png new file mode 100644 index 00000000..65aaa61c Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Outline-Move Down.png differ diff --git a/Resources/Iconos/Generales/24x24/Outline-Move Up.png b/Resources/Iconos/Generales/24x24/Outline-Move Up.png new file mode 100644 index 00000000..3dc2673f Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Outline-Move Up.png differ diff --git a/Resources/Iconos/Generales/24x24/Paste.png b/Resources/Iconos/Generales/24x24/Paste.png new file mode 100644 index 00000000..9b4c3f0b Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Paste.png differ diff --git a/Resources/Iconos/Generales/24x24/Plus.png b/Resources/Iconos/Generales/24x24/Plus.png new file mode 100644 index 00000000..f60ef53f Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Plus.png differ diff --git a/Resources/Iconos/Generales/24x24/Preview.png b/Resources/Iconos/Generales/24x24/Preview.png new file mode 100644 index 00000000..4d185c12 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Preview.png differ diff --git a/Resources/Iconos/Generales/24x24/Print-Options.png b/Resources/Iconos/Generales/24x24/Print-Options.png new file mode 100644 index 00000000..b97b98c2 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Print-Options.png differ diff --git a/Resources/Iconos/Generales/24x24/Print.png b/Resources/Iconos/Generales/24x24/Print.png new file mode 100644 index 00000000..3f6e3908 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Print.png differ diff --git a/Resources/Iconos/Generales/24x24/Refresh.png b/Resources/Iconos/Generales/24x24/Refresh.png new file mode 100644 index 00000000..03cacdf8 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Refresh.png differ diff --git a/Resources/Iconos/Generales/24x24/Save.png b/Resources/Iconos/Generales/24x24/Save.png new file mode 100644 index 00000000..56cc7141 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Save.png differ diff --git a/Resources/Iconos/Generales/24x24/Search.png b/Resources/Iconos/Generales/24x24/Search.png new file mode 100644 index 00000000..3af96da8 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Search.png differ diff --git a/Resources/Iconos/Generales/24x24/Select All.png b/Resources/Iconos/Generales/24x24/Select All.png new file mode 100644 index 00000000..5632ed56 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Select All.png differ diff --git a/Resources/Iconos/Generales/24x24/Speaking-Start.png b/Resources/Iconos/Generales/24x24/Speaking-Start.png new file mode 100644 index 00000000..a02336a9 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Speaking-Start.png differ diff --git a/Resources/Iconos/Generales/24x24/Sum-2.png b/Resources/Iconos/Generales/24x24/Sum-2.png new file mode 100644 index 00000000..51a90c61 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Sum-2.png differ diff --git a/Resources/Iconos/Generales/24x24/Table-Find In Field.png b/Resources/Iconos/Generales/24x24/Table-Find In Field.png new file mode 100644 index 00000000..7b2c5f63 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Table-Find In Field.png differ diff --git a/Resources/Iconos/Generales/24x24/Table-Search.png b/Resources/Iconos/Generales/24x24/Table-Search.png new file mode 100644 index 00000000..b145e046 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Table-Search.png differ diff --git a/Resources/Iconos/Generales/24x24/Thumbs.db b/Resources/Iconos/Generales/24x24/Thumbs.db new file mode 100644 index 00000000..e4ded9dc Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Generales/24x24/Undo.png b/Resources/Iconos/Generales/24x24/Undo.png new file mode 100644 index 00000000..0fe4cc99 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Undo.png differ diff --git a/Resources/Iconos/Generales/24x24/View-One Page.png b/Resources/Iconos/Generales/24x24/View-One Page.png new file mode 100644 index 00000000..b66609e7 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/View-One Page.png differ diff --git a/Resources/Iconos/Generales/24x24/View-Page Width.png b/Resources/Iconos/Generales/24x24/View-Page Width.png new file mode 100644 index 00000000..760a3235 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/View-Page Width.png differ diff --git a/Resources/Iconos/Generales/24x24/Warning.png b/Resources/Iconos/Generales/24x24/Warning.png new file mode 100644 index 00000000..e674c1fc Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Warning.png differ diff --git a/Resources/Iconos/Generales/24x24/Zoom-In.png b/Resources/Iconos/Generales/24x24/Zoom-In.png new file mode 100644 index 00000000..131feedf Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Zoom-In.png differ diff --git a/Resources/Iconos/Generales/24x24/Zoom-Out.png b/Resources/Iconos/Generales/24x24/Zoom-Out.png new file mode 100644 index 00000000..26cf347d Binary files /dev/null and b/Resources/Iconos/Generales/24x24/Zoom-Out.png differ diff --git a/Resources/Iconos/Generales/24x24/db-First-2.png b/Resources/Iconos/Generales/24x24/db-First-2.png new file mode 100644 index 00000000..c36c2eab Binary files /dev/null and b/Resources/Iconos/Generales/24x24/db-First-2.png differ diff --git a/Resources/Iconos/Generales/24x24/db-Last-2.png b/Resources/Iconos/Generales/24x24/db-Last-2.png new file mode 100644 index 00000000..97292c37 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/db-Last-2.png differ diff --git a/Resources/Iconos/Generales/24x24/db-Next-2.png b/Resources/Iconos/Generales/24x24/db-Next-2.png new file mode 100644 index 00000000..d23efc78 Binary files /dev/null and b/Resources/Iconos/Generales/24x24/db-Next-2.png differ diff --git a/Resources/Iconos/Generales/24x24/db-Previous-2.png b/Resources/Iconos/Generales/24x24/db-Previous-2.png new file mode 100644 index 00000000..7c11e16a Binary files /dev/null and b/Resources/Iconos/Generales/24x24/db-Previous-2.png differ diff --git a/Resources/Iconos/Generales/28x28/Box-Open-2.png b/Resources/Iconos/Generales/28x28/Box-Open-2.png new file mode 100644 index 00000000..e88310c2 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Box-Open-2.png differ diff --git a/Resources/Iconos/Generales/28x28/Card-Copy.png b/Resources/Iconos/Generales/28x28/Card-Copy.png new file mode 100644 index 00000000..60566d12 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Card-Copy.png differ diff --git a/Resources/Iconos/Generales/28x28/Debug-Watch-Delete.png b/Resources/Iconos/Generales/28x28/Debug-Watch-Delete.png new file mode 100644 index 00000000..faf46e86 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Debug-Watch-Delete.png differ diff --git a/Resources/Iconos/Generales/28x28/Debug-Watch.png b/Resources/Iconos/Generales/28x28/Debug-Watch.png new file mode 100644 index 00000000..31c568fc Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Debug-Watch.png differ diff --git a/Resources/Iconos/Generales/28x28/Distribute-Rows Evenly.png b/Resources/Iconos/Generales/28x28/Distribute-Rows Evenly.png new file mode 100644 index 00000000..6b62515c Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Distribute-Rows Evenly.png differ diff --git a/Resources/Iconos/Generales/28x28/Execute.png b/Resources/Iconos/Generales/28x28/Execute.png new file mode 100644 index 00000000..16317901 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Execute.png differ diff --git a/Resources/Iconos/Generales/28x28/Form-New.ico b/Resources/Iconos/Generales/28x28/Form-New.ico new file mode 100644 index 00000000..4d3d3936 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Form-New.ico differ diff --git a/Resources/Iconos/Generales/28x28/Form-New.png b/Resources/Iconos/Generales/28x28/Form-New.png new file mode 100644 index 00000000..87352c43 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Form-New.png differ diff --git a/Resources/Iconos/Generales/28x28/Home.png b/Resources/Iconos/Generales/28x28/Home.png new file mode 100644 index 00000000..f89327a0 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Home.png differ diff --git a/Resources/Iconos/Generales/28x28/New.png b/Resources/Iconos/Generales/28x28/New.png new file mode 100644 index 00000000..0a3858ae Binary files /dev/null and b/Resources/Iconos/Generales/28x28/New.png differ diff --git a/Resources/Iconos/Generales/28x28/Outline-Move Down.png b/Resources/Iconos/Generales/28x28/Outline-Move Down.png new file mode 100644 index 00000000..eb2aa92e Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Outline-Move Down.png differ diff --git a/Resources/Iconos/Generales/28x28/Outline-Move Up.png b/Resources/Iconos/Generales/28x28/Outline-Move Up.png new file mode 100644 index 00000000..43979596 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Outline-Move Up.png differ diff --git a/Resources/Iconos/Generales/28x28/Speaking-Start.png b/Resources/Iconos/Generales/28x28/Speaking-Start.png new file mode 100644 index 00000000..52294bbb Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Speaking-Start.png differ diff --git a/Resources/Iconos/Generales/28x28/Sum-2.png b/Resources/Iconos/Generales/28x28/Sum-2.png new file mode 100644 index 00000000..0508febb Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Sum-2.png differ diff --git a/Resources/Iconos/Generales/28x28/Table-Find In Field.png b/Resources/Iconos/Generales/28x28/Table-Find In Field.png new file mode 100644 index 00000000..f0e11e5d Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Table-Find In Field.png differ diff --git a/Resources/Iconos/Generales/28x28/Table-Search.png b/Resources/Iconos/Generales/28x28/Table-Search.png new file mode 100644 index 00000000..bb23481a Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Table-Search.png differ diff --git a/Resources/Iconos/Generales/28x28/Thumbs.db b/Resources/Iconos/Generales/28x28/Thumbs.db new file mode 100644 index 00000000..fd572afc Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Generales/28x28/Warning.png b/Resources/Iconos/Generales/28x28/Warning.png new file mode 100644 index 00000000..19aec799 Binary files /dev/null and b/Resources/Iconos/Generales/28x28/Warning.png differ diff --git a/Resources/Iconos/Historico de movimientos/16x16/Entradas.png b/Resources/Iconos/Historico de movimientos/16x16/Entradas.png new file mode 100644 index 00000000..e8897cdd Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/16x16/Entradas.png differ diff --git a/Resources/Iconos/Historico de movimientos/16x16/Salidas.png b/Resources/Iconos/Historico de movimientos/16x16/Salidas.png new file mode 100644 index 00000000..d3c011ba Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/16x16/Salidas.png differ diff --git a/Resources/Iconos/Historico de movimientos/16x16/Thumbs.db b/Resources/Iconos/Historico de movimientos/16x16/Thumbs.db new file mode 100644 index 00000000..0c43fc0c Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Historico de movimientos/24x24/Thumbs.db b/Resources/Iconos/Historico de movimientos/24x24/Thumbs.db new file mode 100644 index 00000000..d06edaf6 Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Historico de movimientos/24x24/historico.png b/Resources/Iconos/Historico de movimientos/24x24/historico.png new file mode 100644 index 00000000..a34188e0 Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/24x24/historico.png differ diff --git a/Resources/Iconos/Historico de movimientos/28x28/Thumbs.db b/Resources/Iconos/Historico de movimientos/28x28/Thumbs.db new file mode 100644 index 00000000..31ea5cca Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Historico de movimientos/28x28/historico.png b/Resources/Iconos/Historico de movimientos/28x28/historico.png new file mode 100644 index 00000000..2ae664f0 Binary files /dev/null and b/Resources/Iconos/Historico de movimientos/28x28/historico.png differ diff --git a/Resources/Iconos/Montajes/16x16/Document-Labels.png b/Resources/Iconos/Montajes/16x16/Document-Labels.png new file mode 100644 index 00000000..a6fa82b4 Binary files /dev/null and b/Resources/Iconos/Montajes/16x16/Document-Labels.png differ diff --git a/Resources/Iconos/Montajes/16x16/Thumbs.db b/Resources/Iconos/Montajes/16x16/Thumbs.db new file mode 100644 index 00000000..e0cdbe2a Binary files /dev/null and b/Resources/Iconos/Montajes/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Montajes/16x16/Tools.png b/Resources/Iconos/Montajes/16x16/Tools.png new file mode 100644 index 00000000..21a2797c Binary files /dev/null and b/Resources/Iconos/Montajes/16x16/Tools.png differ diff --git a/Resources/Iconos/Montajes/24x24/Document-Labels.png b/Resources/Iconos/Montajes/24x24/Document-Labels.png new file mode 100644 index 00000000..291dbb66 Binary files /dev/null and b/Resources/Iconos/Montajes/24x24/Document-Labels.png differ diff --git a/Resources/Iconos/Montajes/24x24/Thumbs.db b/Resources/Iconos/Montajes/24x24/Thumbs.db new file mode 100644 index 00000000..9d7061f8 Binary files /dev/null and b/Resources/Iconos/Montajes/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Montajes/24x24/Tools.png b/Resources/Iconos/Montajes/24x24/Tools.png new file mode 100644 index 00000000..f682a143 Binary files /dev/null and b/Resources/Iconos/Montajes/24x24/Tools.png differ diff --git a/Resources/Iconos/Montajes/28x28/Document-Labels.png b/Resources/Iconos/Montajes/28x28/Document-Labels.png new file mode 100644 index 00000000..cdf699dd Binary files /dev/null and b/Resources/Iconos/Montajes/28x28/Document-Labels.png differ diff --git a/Resources/Iconos/Montajes/28x28/Thumbs.db b/Resources/Iconos/Montajes/28x28/Thumbs.db new file mode 100644 index 00000000..d013003f Binary files /dev/null and b/Resources/Iconos/Montajes/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Montajes/28x28/Tools.png b/Resources/Iconos/Montajes/28x28/Tools.png new file mode 100644 index 00000000..74aa0b10 Binary files /dev/null and b/Resources/Iconos/Montajes/28x28/Tools.png differ diff --git a/Resources/Iconos/Pagos/16x16/Thumbs.db b/Resources/Iconos/Pagos/16x16/Thumbs.db new file mode 100644 index 00000000..8c47e94e Binary files /dev/null and b/Resources/Iconos/Pagos/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Pagos/16x16/pagado.png b/Resources/Iconos/Pagos/16x16/pagado.png new file mode 100644 index 00000000..37feab5d Binary files /dev/null and b/Resources/Iconos/Pagos/16x16/pagado.png differ diff --git a/Resources/Iconos/Pagos/24x24/Thumbs.db b/Resources/Iconos/Pagos/24x24/Thumbs.db new file mode 100644 index 00000000..bfd91bb1 Binary files /dev/null and b/Resources/Iconos/Pagos/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Pagos/24x24/pagado.png b/Resources/Iconos/Pagos/24x24/pagado.png new file mode 100644 index 00000000..d986e6cd Binary files /dev/null and b/Resources/Iconos/Pagos/24x24/pagado.png differ diff --git a/Resources/Iconos/Pagos/28x28/Thumbs.db b/Resources/Iconos/Pagos/28x28/Thumbs.db new file mode 100644 index 00000000..b46299e2 Binary files /dev/null and b/Resources/Iconos/Pagos/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Pagos/28x28/pagado.png b/Resources/Iconos/Pagos/28x28/pagado.png new file mode 100644 index 00000000..d8980b6b Binary files /dev/null and b/Resources/Iconos/Pagos/28x28/pagado.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/16x16/Complete-0.png b/Resources/Iconos/Pedidos a proveedor/16x16/Complete-0.png new file mode 100644 index 00000000..7531e3fb Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/16x16/Complete-0.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/16x16/Complete-100.png b/Resources/Iconos/Pedidos a proveedor/16x16/Complete-100.png new file mode 100644 index 00000000..7e7fbb7c Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/16x16/Complete-100.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/16x16/Complete-50.png b/Resources/Iconos/Pedidos a proveedor/16x16/Complete-50.png new file mode 100644 index 00000000..1972bb7e Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/16x16/Complete-50.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/16x16/Thumbs.db b/Resources/Iconos/Pedidos a proveedor/16x16/Thumbs.db new file mode 100644 index 00000000..cfbb0c44 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Pedidos a proveedor/16x16/pedidos.png b/Resources/Iconos/Pedidos a proveedor/16x16/pedidos.png new file mode 100644 index 00000000..bc972c80 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/16x16/pedidos.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/24x24/Complete-0.png b/Resources/Iconos/Pedidos a proveedor/24x24/Complete-0.png new file mode 100644 index 00000000..4988815a Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/24x24/Complete-0.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/24x24/Complete-100.png b/Resources/Iconos/Pedidos a proveedor/24x24/Complete-100.png new file mode 100644 index 00000000..fe23a48b Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/24x24/Complete-100.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/24x24/Complete-50.png b/Resources/Iconos/Pedidos a proveedor/24x24/Complete-50.png new file mode 100644 index 00000000..147621b8 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/24x24/Complete-50.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/24x24/Thumbs.db b/Resources/Iconos/Pedidos a proveedor/24x24/Thumbs.db new file mode 100644 index 00000000..ee1ecc4c Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Pedidos a proveedor/24x24/pedido.png b/Resources/Iconos/Pedidos a proveedor/24x24/pedido.png new file mode 100644 index 00000000..19399384 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/24x24/pedido.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/28x28/Complete-0.png b/Resources/Iconos/Pedidos a proveedor/28x28/Complete-0.png new file mode 100644 index 00000000..fa5ca6c5 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/28x28/Complete-0.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/28x28/Complete-100.png b/Resources/Iconos/Pedidos a proveedor/28x28/Complete-100.png new file mode 100644 index 00000000..166d0c34 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/28x28/Complete-100.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/28x28/Complete-50.png b/Resources/Iconos/Pedidos a proveedor/28x28/Complete-50.png new file mode 100644 index 00000000..5c81e926 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/28x28/Complete-50.png differ diff --git a/Resources/Iconos/Pedidos a proveedor/28x28/Thumbs.db b/Resources/Iconos/Pedidos a proveedor/28x28/Thumbs.db new file mode 100644 index 00000000..0831543f Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Pedidos a proveedor/28x28/pedido.png b/Resources/Iconos/Pedidos a proveedor/28x28/pedido.png new file mode 100644 index 00000000..d7c4b430 Binary files /dev/null and b/Resources/Iconos/Pedidos a proveedor/28x28/pedido.png differ diff --git a/Resources/Iconos/Pedidos de cliente/16x16/Budget.png b/Resources/Iconos/Pedidos de cliente/16x16/Budget.png new file mode 100644 index 00000000..8e1a4025 Binary files /dev/null and b/Resources/Iconos/Pedidos de cliente/16x16/Budget.png differ diff --git a/Resources/Iconos/Pedidos de cliente/16x16/Thumbs.db b/Resources/Iconos/Pedidos de cliente/16x16/Thumbs.db new file mode 100644 index 00000000..63caa5dd Binary files /dev/null and b/Resources/Iconos/Pedidos de cliente/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Pedidos de cliente/24x24/Budget.png b/Resources/Iconos/Pedidos de cliente/24x24/Budget.png new file mode 100644 index 00000000..de2deb10 Binary files /dev/null and b/Resources/Iconos/Pedidos de cliente/24x24/Budget.png differ diff --git a/Resources/Iconos/Pedidos de cliente/24x24/Thumbs.db b/Resources/Iconos/Pedidos de cliente/24x24/Thumbs.db new file mode 100644 index 00000000..df0d90a3 Binary files /dev/null and b/Resources/Iconos/Pedidos de cliente/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Pedidos de cliente/28x28/Budget.png b/Resources/Iconos/Pedidos de cliente/28x28/Budget.png new file mode 100644 index 00000000..3ff80eb0 Binary files /dev/null and b/Resources/Iconos/Pedidos de cliente/28x28/Budget.png differ diff --git a/Resources/Iconos/Pedidos de cliente/28x28/Thumbs.db b/Resources/Iconos/Pedidos de cliente/28x28/Thumbs.db new file mode 100644 index 00000000..e3ad226e Binary files /dev/null and b/Resources/Iconos/Pedidos de cliente/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Presupuestos/16x16/Aumentar_letra.png b/Resources/Iconos/Presupuestos/16x16/Aumentar_letra.png new file mode 100644 index 00000000..141ebc40 Binary files /dev/null and b/Resources/Iconos/Presupuestos/16x16/Aumentar_letra.png differ diff --git a/Resources/Iconos/Presupuestos/16x16/Budget.png b/Resources/Iconos/Presupuestos/16x16/Budget.png new file mode 100644 index 00000000..095f2f11 Binary files /dev/null and b/Resources/Iconos/Presupuestos/16x16/Budget.png differ diff --git a/Resources/Iconos/Presupuestos/16x16/Delete-Blue.png b/Resources/Iconos/Presupuestos/16x16/Delete-Blue.png new file mode 100644 index 00000000..33a2a14e Binary files /dev/null and b/Resources/Iconos/Presupuestos/16x16/Delete-Blue.png differ diff --git a/Resources/Iconos/Presupuestos/16x16/Disminuir_letra.png b/Resources/Iconos/Presupuestos/16x16/Disminuir_letra.png new file mode 100644 index 00000000..2febedb3 Binary files /dev/null and b/Resources/Iconos/Presupuestos/16x16/Disminuir_letra.png differ diff --git a/Resources/Iconos/Presupuestos/16x16/Thumbs.db b/Resources/Iconos/Presupuestos/16x16/Thumbs.db new file mode 100644 index 00000000..e85701d2 Binary files /dev/null and b/Resources/Iconos/Presupuestos/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Presupuestos/16x16/Tick.png b/Resources/Iconos/Presupuestos/16x16/Tick.png new file mode 100644 index 00000000..264d0202 Binary files /dev/null and b/Resources/Iconos/Presupuestos/16x16/Tick.png differ diff --git a/Resources/Iconos/Presupuestos/24x24/Budget.png b/Resources/Iconos/Presupuestos/24x24/Budget.png new file mode 100644 index 00000000..6d01c8dc Binary files /dev/null and b/Resources/Iconos/Presupuestos/24x24/Budget.png differ diff --git a/Resources/Iconos/Presupuestos/24x24/Delete-Blue.png b/Resources/Iconos/Presupuestos/24x24/Delete-Blue.png new file mode 100644 index 00000000..6546282b Binary files /dev/null and b/Resources/Iconos/Presupuestos/24x24/Delete-Blue.png differ diff --git a/Resources/Iconos/Presupuestos/24x24/Thumbs.db b/Resources/Iconos/Presupuestos/24x24/Thumbs.db new file mode 100644 index 00000000..b6d89269 Binary files /dev/null and b/Resources/Iconos/Presupuestos/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Presupuestos/24x24/Tick.png b/Resources/Iconos/Presupuestos/24x24/Tick.png new file mode 100644 index 00000000..8554e1f6 Binary files /dev/null and b/Resources/Iconos/Presupuestos/24x24/Tick.png differ diff --git a/Resources/Iconos/Presupuestos/28x28/Budget.png b/Resources/Iconos/Presupuestos/28x28/Budget.png new file mode 100644 index 00000000..8f5e61e0 Binary files /dev/null and b/Resources/Iconos/Presupuestos/28x28/Budget.png differ diff --git a/Resources/Iconos/Presupuestos/28x28/Thumbs.db b/Resources/Iconos/Presupuestos/28x28/Thumbs.db new file mode 100644 index 00000000..0fa2e5e7 Binary files /dev/null and b/Resources/Iconos/Presupuestos/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Remesas/16x16/Export.png b/Resources/Iconos/Remesas/16x16/Export.png new file mode 100644 index 00000000..fbbd22ee Binary files /dev/null and b/Resources/Iconos/Remesas/16x16/Export.png differ diff --git a/Resources/Iconos/Remesas/16x16/Thumbs.db b/Resources/Iconos/Remesas/16x16/Thumbs.db new file mode 100644 index 00000000..327f029f Binary files /dev/null and b/Resources/Iconos/Remesas/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Remesas/24x24/Export.png b/Resources/Iconos/Remesas/24x24/Export.png new file mode 100644 index 00000000..07af21c8 Binary files /dev/null and b/Resources/Iconos/Remesas/24x24/Export.png differ diff --git a/Resources/Iconos/Remesas/24x24/Thumbs.db b/Resources/Iconos/Remesas/24x24/Thumbs.db new file mode 100644 index 00000000..bc3ca4a1 Binary files /dev/null and b/Resources/Iconos/Remesas/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Remesas/28x28/Export.png b/Resources/Iconos/Remesas/28x28/Export.png new file mode 100644 index 00000000..cbf2bd25 Binary files /dev/null and b/Resources/Iconos/Remesas/28x28/Export.png differ diff --git a/Resources/Iconos/Remesas/28x28/Thumbs.db b/Resources/Iconos/Remesas/28x28/Thumbs.db new file mode 100644 index 00000000..fcd00072 Binary files /dev/null and b/Resources/Iconos/Remesas/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Servidor.ico b/Resources/Iconos/Servidor.ico new file mode 100644 index 00000000..ff7c9cc3 Binary files /dev/null and b/Resources/Iconos/Servidor.ico differ diff --git a/Resources/Iconos/Servidor/16x16/Database.png b/Resources/Iconos/Servidor/16x16/Database.png new file mode 100644 index 00000000..badb104a Binary files /dev/null and b/Resources/Iconos/Servidor/16x16/Database.png differ diff --git a/Resources/Iconos/Servidor/16x16/Thumbs.db b/Resources/Iconos/Servidor/16x16/Thumbs.db new file mode 100644 index 00000000..58a51a2a Binary files /dev/null and b/Resources/Iconos/Servidor/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Servidor/24x24/Database.png b/Resources/Iconos/Servidor/24x24/Database.png new file mode 100644 index 00000000..cd859e17 Binary files /dev/null and b/Resources/Iconos/Servidor/24x24/Database.png differ diff --git a/Resources/Iconos/Servidor/24x24/Thumbs.db b/Resources/Iconos/Servidor/24x24/Thumbs.db new file mode 100644 index 00000000..8d8cafa8 Binary files /dev/null and b/Resources/Iconos/Servidor/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Servidor/28x28/Database.png b/Resources/Iconos/Servidor/28x28/Database.png new file mode 100644 index 00000000..26d3c565 Binary files /dev/null and b/Resources/Iconos/Servidor/28x28/Database.png differ diff --git a/Resources/Iconos/Servidor/28x28/Thumbs.db b/Resources/Iconos/Servidor/28x28/Thumbs.db new file mode 100644 index 00000000..722065a9 Binary files /dev/null and b/Resources/Iconos/Servidor/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Thumbs.db b/Resources/Iconos/Thumbs.db new file mode 100644 index 00000000..e4a0a964 Binary files /dev/null and b/Resources/Iconos/Thumbs.db differ diff --git a/Resources/Iconos/Usuarios/16x16/Thumbs.db b/Resources/Iconos/Usuarios/16x16/Thumbs.db new file mode 100644 index 00000000..350bf6b2 Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/Thumbs.db differ diff --git a/Resources/Iconos/Usuarios/16x16/User-Add.png b/Resources/Iconos/Usuarios/16x16/User-Add.png new file mode 100644 index 00000000..1649f386 Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/User-Add.png differ diff --git a/Resources/Iconos/Usuarios/16x16/User-Edit.png b/Resources/Iconos/Usuarios/16x16/User-Edit.png new file mode 100644 index 00000000..a660a374 Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/User-Edit.png differ diff --git a/Resources/Iconos/Usuarios/16x16/User-Password.png b/Resources/Iconos/Usuarios/16x16/User-Password.png new file mode 100644 index 00000000..a6d89420 Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/User-Password.png differ diff --git a/Resources/Iconos/Usuarios/16x16/User-Remove.png b/Resources/Iconos/Usuarios/16x16/User-Remove.png new file mode 100644 index 00000000..5edbd1da Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/User-Remove.png differ diff --git a/Resources/Iconos/Usuarios/16x16/User.png b/Resources/Iconos/Usuarios/16x16/User.png new file mode 100644 index 00000000..ee6f2a7b Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/User.png differ diff --git a/Resources/Iconos/Usuarios/16x16/Users.png b/Resources/Iconos/Usuarios/16x16/Users.png new file mode 100644 index 00000000..c3766486 Binary files /dev/null and b/Resources/Iconos/Usuarios/16x16/Users.png differ diff --git a/Resources/Iconos/Usuarios/24x24/Thumbs.db b/Resources/Iconos/Usuarios/24x24/Thumbs.db new file mode 100644 index 00000000..09f64b11 Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/Thumbs.db differ diff --git a/Resources/Iconos/Usuarios/24x24/User-Add.png b/Resources/Iconos/Usuarios/24x24/User-Add.png new file mode 100644 index 00000000..3616f187 Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/User-Add.png differ diff --git a/Resources/Iconos/Usuarios/24x24/User-Edit.png b/Resources/Iconos/Usuarios/24x24/User-Edit.png new file mode 100644 index 00000000..1af01adc Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/User-Edit.png differ diff --git a/Resources/Iconos/Usuarios/24x24/User-Password.png b/Resources/Iconos/Usuarios/24x24/User-Password.png new file mode 100644 index 00000000..a121a6bc Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/User-Password.png differ diff --git a/Resources/Iconos/Usuarios/24x24/User-Remove.png b/Resources/Iconos/Usuarios/24x24/User-Remove.png new file mode 100644 index 00000000..b50a9daa Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/User-Remove.png differ diff --git a/Resources/Iconos/Usuarios/24x24/User.png b/Resources/Iconos/Usuarios/24x24/User.png new file mode 100644 index 00000000..ddb1dd69 Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/User.png differ diff --git a/Resources/Iconos/Usuarios/24x24/Users.png b/Resources/Iconos/Usuarios/24x24/Users.png new file mode 100644 index 00000000..dbdd35cc Binary files /dev/null and b/Resources/Iconos/Usuarios/24x24/Users.png differ diff --git a/Resources/Iconos/Usuarios/28x28/Thumbs.db b/Resources/Iconos/Usuarios/28x28/Thumbs.db new file mode 100644 index 00000000..026a15ca Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/Thumbs.db differ diff --git a/Resources/Iconos/Usuarios/28x28/User-Add.png b/Resources/Iconos/Usuarios/28x28/User-Add.png new file mode 100644 index 00000000..76459dc6 Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/User-Add.png differ diff --git a/Resources/Iconos/Usuarios/28x28/User-Edit.png b/Resources/Iconos/Usuarios/28x28/User-Edit.png new file mode 100644 index 00000000..139ec635 Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/User-Edit.png differ diff --git a/Resources/Iconos/Usuarios/28x28/User-Password.png b/Resources/Iconos/Usuarios/28x28/User-Password.png new file mode 100644 index 00000000..7720bf16 Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/User-Password.png differ diff --git a/Resources/Iconos/Usuarios/28x28/User-Remove.png b/Resources/Iconos/Usuarios/28x28/User-Remove.png new file mode 100644 index 00000000..b046745f Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/User-Remove.png differ diff --git a/Resources/Iconos/Usuarios/28x28/User.png b/Resources/Iconos/Usuarios/28x28/User.png new file mode 100644 index 00000000..e389c2a1 Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/User.png differ diff --git a/Resources/Iconos/Usuarios/28x28/Users.png b/Resources/Iconos/Usuarios/28x28/Users.png new file mode 100644 index 00000000..4c006ba0 Binary files /dev/null and b/Resources/Iconos/Usuarios/28x28/Users.png differ diff --git a/Resources/Iconos/Usuarios/48x48/Thumbs.db b/Resources/Iconos/Usuarios/48x48/Thumbs.db new file mode 100644 index 00000000..18917777 Binary files /dev/null and b/Resources/Iconos/Usuarios/48x48/Thumbs.db differ diff --git a/Resources/Iconos/Usuarios/48x48/Users.png b/Resources/Iconos/Usuarios/48x48/Users.png new file mode 100644 index 00000000..1697dfe9 Binary files /dev/null and b/Resources/Iconos/Usuarios/48x48/Users.png differ diff --git a/Resources/Iconos/fac.png b/Resources/Iconos/fac.png new file mode 100644 index 00000000..35374432 Binary files /dev/null and b/Resources/Iconos/fac.png differ diff --git a/Source/Base/Base.dpk b/Source/Base/Base.dpk new file mode 100644 index 00000000..b843b891 --- /dev/null +++ b/Source/Base/Base.dpk @@ -0,0 +1,77 @@ +package Base; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Libreria base de FactuGES'} +{$IMPLICITBUILD OFF} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + RemObjects_Core_D10, + DataAbstract_Core_D10, + JSDialog100, + GUISDK_D11, + IndyCore, + IndyProtocols, + IndySystem, + Jcl, + JclVcl, + JvCoreD11R, + JvPageCompsD11R, + JvStdCtrlsD11R, + JvSystemD11R, + JvMMD11R, + JvCtrlsD11R, + Jv3rdD11R, + JvAppFrmD11R, + JvDlgsD11R, + JvNetD11R, + PngComponentsD10, + PNG_D10; + +contains + uDataTableUtils in 'Utiles\uDataTableUtils.pas', + uDBSelectionListUtils in 'Utiles\uDBSelectionListUtils.pas', + uIntegerListUtils in 'Utiles\uIntegerListUtils.pas', + uDataModuleBase in 'uDataModuleBase.pas' {dmBase: TDataModule}, + uDataModuleConexion in 'uDataModuleConexion.pas' {dmConexion: TDataModule}, + uConfigurarConexion in 'uConfigurarConexion.pas' {fConfigurarConexion: TForm}, + uSistemaFunc in 'Utiles\uSistemaFunc.pas', + FactuGES_Intf in '..\Servicios\FactuGES_Intf.pas', + uGridUtils in 'Utiles\uGridUtils.pas', + uDateUtils in 'Utiles\uDateUtils.pas', + uDataModuleConfiguracion in 'uDataModuleConfiguracion.pas' {dmConfiguracion: TDataModule}, + uViewRegistryUtils in 'ClassRegistry\uViewRegistryUtils.pas', + uClassRegistryUtils in 'ClassRegistry\uClassRegistryUtils.pas', + uEditorRegistryUtils in 'ClassRegistry\uEditorRegistryUtils.pas', + uDialogUtils in 'Utiles\uDialogUtils.pas', + uNumUtils in 'Utiles\uNumUtils.pas', + MD5 in 'Utiles\MD5.pas', + uPasswordUtils in 'Utiles\uPasswordUtils.pas', + uInfoProjectUtils in 'Utiles\uInfoProjectUtils.pas', + uActualizacion in 'uActualizacion.pas' {fActualizacion: Form}, + uInformeRegistryUtils in 'ClassRegistry\uInformeRegistryUtils.pas'; + +end. diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj new file mode 100644 index 00000000..ebf57c5e --- /dev/null +++ b/Source/Base/Base.dproj @@ -0,0 +1,630 @@ + + + + {54e18752-5574-484b-98ba-8f1f8ea0617d} + Base.dpk + Debug + AnyCPU + DCC32 + ..\Lib\Base.bpl + + + 7.0 + False + False + False + True + 0 + RELEASE + .\ + .\ + .\ + ..\Lib + ..\Lib + + + 7.0 + False + True + DEBUG + .\ + .\ + .\ + ..\Lib + ..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseLibreria base de FactuGESFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office XP Sample Automation Server Wrapper Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + Base.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fActualizacion
+
+ +
fConfigurarConexion
+
+ +
dmBase
+
+ +
dmConexion
+
+ +
dmConfiguracion
+
+ + + + + + + + + + + +
+
+ diff --git a/Source/Base/Base.drc b/Source/Base/Base.drc new file mode 100644 index 00000000..6038e046 --- /dev/null +++ b/Source/Base/Base.drc @@ -0,0 +1,16 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define uClassRegistryUtils_eClassnotFound 65520 +STRINGTABLE +BEGIN + uClassRegistryUtils_eClassnotFound, "Class \"%s\" was not found in the registry." +END + diff --git a/Source/Base/Base.identcache b/Source/Base/Base.identcache new file mode 100644 index 00000000..ef7bae95 Binary files /dev/null and b/Source/Base/Base.identcache differ diff --git a/Source/Base/Base.rc b/Source/Base/Base.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Base/Base.res b/Source/Base/Base.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Base/Base.res differ diff --git a/Source/Base/ClassRegistry/uClassRegistryUtils.pas b/Source/Base/ClassRegistry/uClassRegistryUtils.pas new file mode 100644 index 00000000..d7b679df --- /dev/null +++ b/Source/Base/ClassRegistry/uClassRegistryUtils.pas @@ -0,0 +1,336 @@ +unit uClassRegistryUtils; + +interface + +uses + Classes, SysUtils, Forms, uGUIBase; + +type + IClassRegistry = Interface + ['{FD23C946-4103-4C67-9C3F-644B52826833}'] + procedure RegisterClass( aClass: TClass; const aDisplayname: String = ''); + procedure RegisterClasses( const aClasses: array of TClass; + const aDisplaynames: array of String ); + procedure UnRegisterClass( aClass: TClass ); + function FindClass( const aClassOrDisplayname: String ): Tclass; + function IsClassRegistered( aClass: TClass ): Boolean; overload; + function IsClassRegistered( const aDisplayname: String ): Boolean; overload; + procedure GetRegisteredClasses( aList: TStrings; aMinClass: TClass = nil); + function CreateObject( const aClassOrDisplayname: String ): TObject; + end; + + IComponentRegistry = Interface( IClassRegistry ) + ['{04BAA01F-9AF4-4E60-9922-641E127A35C2}'] + function CreateComponent( const aClassOrDisplayname: String; + aOwner:TComponent = nil ): TComponent; + end; + + IFormRegistry = Interface( IComponentRegistry ) + ['{28E3BF72-1378-4136-B1FB-027FBB8FE99B}'] + function CreateForm( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TForm; + end; + + IDataModuleRegistry = Interface( IComponentRegistry ) + ['{9D8D1D23-6A5C-4351-9393-093CD8B76788}'] + function CreateDatamodule( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TDatamodule; + end; + + IReportRegistry = Interface( IComponentRegistry ) + ['{49D3C8D5-8FEE-4F15-A6D2-51CB1DB29F8D}'] + function CreateReport( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TInterfacedObject; + end; + + TClassRegistry = class( TInterfacedObject, IClassRegistry ) + private + FList: TStringlist; + FMinAcceptableClass: TClass; + + function FindClassByClassname( const aClassname: String ): Tclass; + function FindClassByDisplayname( const aDisplayname: String ): TClass; + function IsClassAcceptable( aClass: TClass ): Boolean; + function GetClasses(index: integer): TClass; + function GetCount: Integer; + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass ); virtual; + procedure RegisterClass( aClass: TClass; const aDisplayname: String = ''); + procedure RegisterClasses( const aClasses: array of TClass; + const aDisplaynames: array of String ); + procedure UnRegisterClass( aClass: TClass ); + function FindClass( const aClassOrDisplayname: String ): Tclass; + function IsClassRegistered( aClass: TClass ): Boolean; overload; + function IsClassRegistered( const aDisplayname: String ): Boolean; overload; + procedure GetRegisteredClasses( aList: TStrings; aMinClass: TClass = nil); + function CreateObject( const aClassOrDisplayname: String ): TObject; + property MinAcceptableClass: TClass read FMinAcceptableClass; + property List: TStringlist read FList; + property Count: Integer read GetCount; + property Classes[ index: integer ]: TClass read GetClasses; + public + constructor Create( minAcceptableClass: TClass = nil ); virtual; + destructor Destroy; override; + end; + + TComponentRegistry = class( TClassRegistry, IComponentRegistry ) + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass ); override; + function CreateComponent( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TComponent; + end; + + TFormRegistry = class( TComponentRegistry, IFormRegistry ) + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass ); override; + function CreateForm( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TForm; + end; + + TDataModuleRegistry = class( TComponentRegistry, IDataModuleRegistry ) + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass); override; + function CreateDatamodule( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TDatamodule; + end; + + TReportRegistry = class( TComponentRegistry, IReportRegistry ) + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass ); override; + function CreateReport( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TInterfacedObject; + end; + + EClassRegistryError = class( Exception ); + +implementation + +{ TClassRegistry } + +ResourceString + eClassnotFound = 'Class "%s" was not found in the registry.'; + +constructor TClassRegistry.Create(minAcceptableClass: TClass); +begin + inherited Create; + FList := Tstringlist.Create; + ValidateMinAcceptableClass( minAcceptableClass ); + FMinAcceptableClass := minAcceptableClass; +end; + +function TClassRegistry.CreateObject( + const aClassOrDisplayname: String): TObject; +begin + Result := FindClass( aClassOrDisplayname ).Create; +end; + +destructor TClassRegistry.Destroy; +begin + Flist.Free; + inherited; +end; + +function TClassRegistry.FindClass( + const aClassOrDisplayname: String): Tclass; +begin + Result := FindClassByDisplayname( aClassOrDisplayname ); + If not Assigned( Result ) Then + Result := FindClassByClassname( aClassOrDisplayname ); + If not Assigned( Result ) Then + raise EClassRegistryError.CreateFmt + ( eClassnotFound, [ aClassOrDisplayname ] ); +end; + +function TClassRegistry.FindClassByClassname( + const aClassname: String): Tclass; +var + i: Integer; +begin + for i:= 0 to count-1 do begin + Result := classes[i]; + If Result.ClassNameIs( aClassname ) Then + Exit; + end; + Result := nil; +end; + +function TClassRegistry.FindClassByDisplayname( + const aDisplayname: String): TClass; +var + i: Integer; +begin + i:= List.IndexOf( aDisplayname ); + If i >= 0 Then + Result := Classes[i] + Else + Result := nil; +end; + +function TClassRegistry.GetClasses(index: integer): TClass; +begin + Result := TClass( List.Objects[index] ); +end; + +function TClassRegistry.GetCount: Integer; +begin + Result := List.Count; +end; + +procedure TClassRegistry.GetRegisteredClasses(aList: TStrings; + aMinClass: TClass); +var + i: Integer; + aClass: TClass; +begin + Assert( Assigned( aList )); + aList.BeginUpdate; + try + aList.Clear; + If not Assigned( aMinClass ) Then + aList.Assign( List ) + else begin + For i:= 0 To Count-1 Do Begin + aClass := Classes[i]; + If aClass.InheritsFrom( aMinClass ) Then + aList.AddObject( List[i], TObject( aClass )); + end; + end; + finally + aList.EndUpdate + end; +end; + +function TClassRegistry.IsClassAcceptable(aClass: TClass): Boolean; +begin + Result := Assigned( aClass ) and + aClass.InheritsFrom( MinAcceptableClass ); +end; + +function TClassRegistry.IsClassRegistered(const aDisplayname: String): Boolean; +begin + Result := List.IndexOf(aDisplayname) >= 0; +end; + +function TClassRegistry.IsClassRegistered(aClass: TClass): Boolean; +begin + Result := List.IndexOfObject( TObject( aClass )) >= 0; +end; + +procedure TClassRegistry.RegisterClass(aClass: TClass; + const aDisplayname: String); +begin + Assert( Assigned( aClass ), 'Cannot register Nil class' ); + If aDisplayname = '' Then + RegisterClass( aClass, aClass.Classname ) + else begin + Assert( IsClassAcceptable( aClass ), + format('Cannot register %s since it does not inherit from %s', + [aclass.classname, MinAcceptableClass.classname] )); + Assert( not IsClassRegistered( aClass ), + Format('Class %s is already registered.', [aClass.Classname])); + List.AddObject( aDisplayname, TObject( aClass )); + end; +end; + +procedure TClassRegistry.RegisterClasses(const aClasses: array of TClass; + const aDisplaynames: array of String); +var + i: Integer; +begin + Assert( High( aClasses ) = High( aDisplaynames ), + 'Size of both parameter arrays has to be the same.' ); + for i:= Low( aClasses ) to High( aClasses ) do + RegisterClass( aClasses[i], aDisplaynames[i] ); +end; + +procedure TClassRegistry.UnRegisterClass(aClass: TClass); +var + i: Integer; +begin + i:= List.IndexOfObject( TObject( aClass )); + If i >= 0 Then + List.Delete( i ); + // does not consider attempt to unregister a class that is not + // registered as an error. +end; + +procedure TClassRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + If not Assigned( aMinAcceptableClass ) Then + aMinAcceptableClass := TObject; +end; + +{ TComponentRegistry } + +function TComponentRegistry.CreateComponent( + const aClassOrDisplayname: String; aOwner: TComponent): TComponent; +var + aClass: TComponentClass; +begin + aClass := TComponentClass( FindClass( aClassOrDisplayname )); + Result := aClass.Create( aOwner ); +end; + +procedure TComponentRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + inherited; + If not aMinAcceptableClass.InheritsFrom( TComponent ) + Then + aMinAcceptableClass := TComponent; +end; + +{ TFormRegistry } + +function TFormRegistry.CreateForm(const aClassOrDisplayname: String; + aOwner: TComponent): TForm; +begin + Result := CreateComponent( aClassOrDisplayname, aOwner ) As TForm; +end; + +procedure TFormRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + inherited; + If not aMinAcceptableClass.InheritsFrom( TForm ) + Then + aMinAcceptableClass := TForm; +end; + +{ TDataModuleRegistry } + +function TDataModuleRegistry.CreateDatamodule( + const aClassOrDisplayname: String; aOwner: TComponent): TDatamodule; +begin + Result := CreateComponent( aClassOrDisplayname, aOwner ) As TDatamodule; +end; + +procedure TDataModuleRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + inherited; + If not aMinAcceptableClass.InheritsFrom( TDatamodule ) + Then + aMinAcceptableClass := TDatamodule; +end; + +{ TReportRegistry } + +function TReportRegistry.CreateReport(const aClassOrDisplayname: String; + aOwner: TComponent): TInterfacedObject; +begin + Result := CreateObject( aClassOrDisplayname) As TInterfacedObject; +// Result := CreateComponent( aClassOrDisplayname, aOwner ) As TInterfacedObject; +end; + +procedure TReportRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + inherited; + If not aMinAcceptableClass.InheritsFrom( TInterfacedObject ) + Then + aMinAcceptableClass := TInterfacedObject; +end; + +end. diff --git a/Source/Base/ClassRegistry/uEditorRegistryUtils.pas b/Source/Base/ClassRegistry/uEditorRegistryUtils.pas new file mode 100644 index 00000000..0dd7333c --- /dev/null +++ b/Source/Base/ClassRegistry/uEditorRegistryUtils.pas @@ -0,0 +1,81 @@ +unit uEditorRegistryUtils; + +interface + +uses + Classes, Forms, uClassRegistryUtils, uCustomEditor; + +type +{ + IEditorRegistry = interface (IComponentRegistry) + 22F14B82-AC61-4987-847E-AF8513DE2A10 + function CreateEditor(const aClassOrDisplayname: String; + aOwner: TComponent = NIL): TCustomEditor; + end; + + TEditorRegistry = class(TComponentRegistry, IEditorRegistry) + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass); override; + function CreateEditor(const aClassOrDisplayname: String; + aOwner: TComponent = nil): TCustomEditor; + end; +} + + IEditorRegistry = interface (IFormRegistry) + ['{F6AC050F-5547-4E1F-AA44-DA0D06EDA4D7}'] + function CreateEditor(const aClassOrDisplayname: String; + aOwner: TComponent = NIL): TForm; + end; + + TEditorRegistry = class(TFormRegistry, IEditorRegistry) + protected + function CreateEditor(const aClassOrDisplayname: String; + aOwner: TComponent = nil): TForm; + end; + +function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; + +var + EditorRegistry : IEditorRegistry; + +implementation + +uses + SysUtils, cxControls; + +function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + ShowHourglassCursor; + try + Result := Supports(EditorRegistry.CreateEditor(AName, Application), IID, Intf); + finally + HideHourglassCursor; + end; +end; + + +{ TEditorRegistry } + +function TEditorRegistry.CreateEditor(const aClassOrDisplayname: String; + aOwner: TComponent): TForm; +begin + if not Assigned(AOwner) then + AOwner := Application; + Result := CreateComponent( aClassOrDisplayname, aOwner ) as TForm; +end; + +{procedure TEditorRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + inherited; + if not aMinAcceptableClass.InheritsFrom(TCustomEditor) then + aMinAcceptableClass := TCustomEditor; +end;} + +initialization + EditorRegistry := TEditorRegistry.Create; + +finalization + EditorRegistry := NIL; + +end. diff --git a/Source/Base/ClassRegistry/uInformeRegistryUtils.pas b/Source/Base/ClassRegistry/uInformeRegistryUtils.pas new file mode 100644 index 00000000..f8a58c58 --- /dev/null +++ b/Source/Base/ClassRegistry/uInformeRegistryUtils.pas @@ -0,0 +1,59 @@ +unit uInformeRegistryUtils; + +interface + +uses + Classes, Forms, uClassRegistryUtils; + +type + IInformeRegistry = interface (IReportRegistry) + ['{F6AC050F-5547-4E1F-AA44-DA0D06EDA4D7}'] + function CreateInforme(const aClassOrDisplayname: String; + aOwner: TComponent = NIL): TInterfacedObject; + end; + + TInformeRegistry = class(TReportRegistry, IInformeRegistry) + protected + function CreateInforme(const aClassOrDisplayname: String; + aOwner: TComponent = nil): TInterfacedObject; + end; + +function CreateInforme(const AName: String; const IID: TGUID; out Intf): Boolean; + +var + InformeRegistry : IInformeRegistry; + +implementation + +uses + SysUtils, cxControls; + +function CreateInforme(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + ShowHourglassCursor; + try + Result := Supports(InformeRegistry.CreateInforme(AName, Application), IID, Intf); + finally + HideHourglassCursor; + end; +end; + + +{ TInformeRegistry } + +function TInformeRegistry.CreateInforme(const aClassOrDisplayname: String; + aOwner: TComponent): TInterfacedObject; +begin + if not Assigned(AOwner) then + AOwner := Application; + Result := CreateObject( aClassOrDisplayname) as TInterfacedObject; +end; + + +initialization + InformeRegistry := TInformeRegistry.Create; + +finalization + InformeRegistry := NIL; + +end. diff --git a/Source/Base/ClassRegistry/uViewRegistryUtils.pas b/Source/Base/ClassRegistry/uViewRegistryUtils.pas new file mode 100644 index 00000000..458a6810 --- /dev/null +++ b/Source/Base/ClassRegistry/uViewRegistryUtils.pas @@ -0,0 +1,50 @@ +unit uViewRegistryUtils; + +interface + +uses + Classes, Forms, uClassRegistryUtils, uCustomView; + +type + IViewRegistry = interface (IComponentRegistry) + ['{F49AE52F-47EC-42AF-8365-A09270E4B45D}'] + function CreateView(const aClassOrDisplayname: String; + aOwner: TComponent = nil): TCustomView; + end; + + + TViewRegistry = class(TComponentRegistry, IViewRegistry) + protected + procedure ValidateMinAcceptableClass(var aMinAcceptableClass: TClass); override; + function CreateView( const aClassOrDisplayname: String; + aOwner: TComponent = nil ): TCustomView; + end; + +var + ViewRegistry : IViewRegistry; + +implementation + +{ TViewRegistry } + +function TViewRegistry.CreateView(const aClassOrDisplayname: String; + aOwner: TComponent): TCustomView; +begin + Result := CreateComponent( aClassOrDisplayname, aOwner ) as TCustomView; +end; + +procedure TViewRegistry.ValidateMinAcceptableClass( + var aMinAcceptableClass: TClass); +begin + inherited; + if not aMinAcceptableClass.InheritsFrom(TCustomView) then + aMinAcceptableClass := TCustomView; +end; + +initialization + ViewRegistry := TViewRegistry.Create; + +finalization + ViewRegistry := NIL; + +end. diff --git a/Source/Base/ControllerBase.drc b/Source/Base/ControllerBase.drc new file mode 100644 index 00000000..09081cc2 --- /dev/null +++ b/Source/Base/ControllerBase.drc @@ -0,0 +1,21 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +DESCRIPTION RCDATA +BEGIN + "\x4c", "\x00", "\x69", "\x00", "\x62", "\x00", "\x72", "\x00", /* 0000: L.i.b.r. */ + "\x65", "\x00", "\x72", "\x00", "\x69", "\x00", "\x61", "\x00", /* 0008: e.r.i.a. */ + "\x20", "\x00", "\x62", "\x00", "\x61", "\x00", "\x73", "\x00", /* 0010: .b.a.s. */ + "\x65", "\x00", "\x20", "\x00", "\x64", "\x00", "\x65", "\x00", /* 0018: e. .d.e. */ + "\x20", "\x00", "\x46", "\x00", "\x61", "\x00", "\x63", "\x00", /* 0020: .F.a.c. */ + "\x74", "\x00", "\x75", "\x00", "\x47", "\x00", "\x45", "\x00", /* 0028: t.u.G.E. */ + "\x53", "\x00", "\x00", "\x00" /* 0030: S... */ +END + diff --git a/Source/Base/ControllerBase/ControllerBase.bdsproj b/Source/Base/ControllerBase/ControllerBase.bdsproj new file mode 100644 index 00000000..3d57f918 --- /dev/null +++ b/Source/Base/ControllerBase/ControllerBase.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + ControllerBase.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Base/ControllerBase/ControllerBase.dpk b/Source/Base/ControllerBase/ControllerBase.dpk new file mode 100644 index 00000000..900e7f3b --- /dev/null +++ b/Source/Base/ControllerBase/ControllerBase.dpk @@ -0,0 +1,43 @@ +package ControllerBase; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + dsnap, + DataAbstract_D10, + cxLibraryD10, + dxThemeD10, + vcldb, + adortl; + +contains + uControllerBase in 'uControllerBase.pas', + uControllerDetallesBase in 'uControllerDetallesBase.pas', + uControllerDetallesDTO in 'uControllerDetallesDTO.pas'; + +end. diff --git a/Source/Base/ControllerBase/ControllerBase.dproj b/Source/Base/ControllerBase/ControllerBase.dproj new file mode 100644 index 00000000..6122a369 --- /dev/null +++ b/Source/Base/ControllerBase/ControllerBase.dproj @@ -0,0 +1,598 @@ + + + {ef3998e7-b579-4a14-9e7a-6cddb582b1c7} + ControllerBase.dpk + Debug + AnyCPU + DCC32 + ..\..\..\Output\Debug\Cliente\ControllerBase.bpl + + + 7.0 + False + False + False + True + 0 + 3 + True + True + .\ + .\ + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + RELEASE + + + 7.0 + False + True + 3 + True + True + .\ + .\ + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\DataAbstract_D10\Lib;..\Lib + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + ControllerBase.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + diff --git a/Source/Base/ControllerBase/ControllerBase.drc b/Source/Base/ControllerBase/ControllerBase.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Base/ControllerBase/ControllerBase.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Base/ControllerBase/ControllerBase.rc b/Source/Base/ControllerBase/ControllerBase.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Base/ControllerBase/ControllerBase.res b/Source/Base/ControllerBase/ControllerBase.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Base/ControllerBase/ControllerBase.res differ diff --git a/Source/Base/ControllerBase/uControllerBase.pas b/Source/Base/ControllerBase/uControllerBase.pas new file mode 100644 index 00000000..0d3f90a6 --- /dev/null +++ b/Source/Base/ControllerBase/uControllerBase.pas @@ -0,0 +1,102 @@ +unit uControllerBase; + +interface + +uses + Classes, uDADataTable; + +type + ISujeto = interface; + + IObservador = interface + ['{679D5CF2-D5DC-4A52-9FF3-04AD91402483}'] + procedure RecibirAviso(ASujeto: ISujeto); overload; + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); overload; + end; + + ISujeto = interface + ['{CDB691CD-D1D6-4F2E-AA34-93B1CD0E6030}'] + procedure AddObservador(Observador: IObservador); + procedure DeleteObservador(Observador: IObservador); + end; + + TObservador = class(TInterfacedObject, IObservador) + protected + procedure RecibirAviso(ASujeto: ISujeto); overload; virtual; + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); overload; virtual; abstract; + end; + + TSujeto = class(TInterfacedObject, ISujeto) + private + fObservadores: IInterfaceList; + protected + procedure AvisarObservadores; overload; + procedure AvisarObservadores(ADataTable: IDAStronglyTypedDataTable); overload; + public + constructor Create; virtual; + procedure AddObservador(Observador: IObservador); + procedure DeleteObservador(Observador: IObservador); + destructor Destroy; override; + end; + +implementation + +uses + SysUtils; + +{ TSujeto } + +procedure TSujeto.addObservador(Observador: IObservador); +begin + FObservadores.Add(Observador); +end; + +procedure TSujeto.AvisarObservadores; +var + i: Integer; + AObs : IObservador; +begin + for i := 0 to Pred(FObservadores.Count) do + begin + if Supports(FObservadores[i], IObservador, AObs) then + AObs.RecibirAviso(Self); + end; +end; + +procedure TSujeto.AvisarObservadores(ADataTable: IDAStronglyTypedDataTable); +var + i: Integer; + AObs : IObservador; +begin + for i := 0 to Pred(FObservadores.Count) do + begin + if Supports(FObservadores[i], IObservador, AObs) then + AObs.RecibirAviso(Self, ADataTable); + end; +end; + +constructor TSujeto.Create; +begin + inherited; + FObservadores := TInterfaceList.Create; +end; + +procedure TSujeto.DeleteObservador(Observador: IObservador); +begin + FObservadores.Remove(Observador); +end; + +destructor TSujeto.Destroy; +begin + FObservadores := NIL; + inherited; +end; + +{ TObservador } + +procedure TObservador.RecibirAviso(ASujeto: ISujeto); +begin + // +end; + +end. diff --git a/Source/Base/ControllerBase/uControllerDetallesBase.pas b/Source/Base/ControllerBase/uControllerDetallesBase.pas new file mode 100644 index 00000000..9b252d98 --- /dev/null +++ b/Source/Base/ControllerBase/uControllerDetallesBase.pas @@ -0,0 +1,584 @@ +unit uControllerDetallesBase; + +interface + +uses Classes, Variants, uDACDSDataTable, uDADataTable, uControllerBase; + +const + CAMPO_ID = 'ID'; + CAMPO_POSICION = 'POSICION'; + CAMPO_TIPO = 'TIPO_DETALLE'; + CAMPO_CONCEPTO = 'CONCEPTO'; + CAMPO_CANTIDAD = 'CANTIDAD'; + CAMPO_IMPORTE_UNIDAD = 'IMPORTE_UNIDAD'; + CAMPO_IMPORTE_TOTAL = 'IMPORTE_TOTAL'; + + TIPO_DETALLE_CONCEPTO = 'Concepto'; + TIPO_DETALLE_TITULO = 'Titulo'; + TIPO_DETALLE_SUBTOTAL = 'Subtotal'; + TIPO_DETALLE_SALTO = 'Salto'; + + CTE_DESC_SALTO = 'SALTO DE PAGINA >>'; + +type + TIntegerArray = array of Integer; + + IControllerDetallesBase = interface(ISujeto) + ['{F0B0E714-EC0D-4B6B-98B1-76F72F70B735}'] + + function getTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String; + procedure Clear(ADataTable: IDAStronglyTypedDataTable); + procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); + procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); + procedure Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer); + +// procedure Copy(SMExport: TSMExportToClipboard); +// procedure Paste; + + procedure ActualizarTotales(ADataTable: IDAStronglyTypedDataTable); + function DarTotalImporteTotal(ADataTable: IDAStronglyTypedDataTable): Double; + + function DarListaTiposDetalle: TStringList; + end; + + TControllerDetallesBase = class (TSujeto, IControllerDetallesBase) + private + fUpdateCount: Integer; + + function CalcularTotales(Modificar: boolean; DataTable: TDADataTable): Double; + + protected + procedure Renumerar(DataTable: TDADataTable; LocalizaPosicion: Integer); + function DesplazarNPosiciones(DataTable: TDADataTable; NumOrdenIni: Variant; NPosiciones: Variant): Integer; + procedure Mover(DataTable: TDADataTable; Posicion: Integer; NumPosiciones: Integer); + procedure BeginUpdate(ADataTable: IDAStronglyTypedDataTable); + procedure EndUpdate(ADataTable: IDAStronglyTypedDataTable); + + //Si en los hijos existen campos a tener en cuenta se sobreescribira este metodo + procedure validarCampos(DataTable: TDADataTable); virtual; + + //Si sobreescribimos este mtodo podremos tener en cuenta otras columnas para el calculo del importe total de un concepto + function CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; virtual; + procedure TratamientoDetalleConcepto(DataTable: TDADataTable); virtual; + procedure CalculoDetalleConcepto(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual; + procedure TratamientoDetalleSalto(DataTable: TDADataTable); virtual; + procedure CalculoDetalleSalto(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual; + procedure TratamientoDetalleTitulo(DataTable: TDADataTable); virtual; + procedure CalculoDetalleTitulo(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual; + procedure TratamientoDetalleSubtotal(DataTable: TDADataTable); virtual; + procedure CalculoDetalleSubtotal(DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double); virtual; + //Si sobreescribimos este metodo es para continuar el CalcularTotales segun los tipos de concepto de los hijos + function CalcularTotalesHijos(Modificar: boolean; DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double): Double; virtual; + + public + constructor Create; override; + destructor Destroy; override; + + function getTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String; + procedure Clear(ADataTable: IDAStronglyTypedDataTable); + procedure Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); virtual; + procedure Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); virtual; + procedure Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer); virtual; + +// procedure Copy(SMExport: TSMExportToClipboard); +// procedure Paste; + + procedure ActualizarTotales(ADataTable: IDAStronglyTypedDataTable); + function DarTotalImporteTotal(ADataTable: IDAStronglyTypedDataTable): Double; + function DarListaTiposDetalle: TStringList; virtual; + end; + + +implementation + +{ TControllerDetallesBase } + +uses cxControls, SysUtils, DB, uDAInterfaces; + +procedure TControllerDetallesBase.ActualizarTotales(ADataTable: IDAStronglyTypedDataTable); +begin + BeginUpdate(ADataTable); + try + CalcularTotales(True, ADataTable.DataTable); + finally + EndUpdate(ADataTable); + end; +end; + +procedure TControllerDetallesBase.Add(ADataTable: IDAStronglyTypedDataTable; TipoConcepto: Variant); +var + AuxNumOrden : Integer; + +begin + BeginUpdate(ADataTable); + try + with ADataTable do + begin + AuxNumOrden := desplazarNPosiciones(DataTable, DataTable.FieldByName(CAMPO_POSICION).AsVariant, 1); + + DataTable.Insert; + DataTable.FieldByName(CAMPO_POSICION).AsInteger := AuxNumOrden; + DataTable.FieldByName(CAMPO_TIPO).AsVariant := TipoConcepto; + DataTable.post; + end; + finally + EndUpdate(ADataTable); + end; +end; + +procedure TControllerDetallesBase.BeginUpdate(ADataTable: IDAStronglyTypedDataTable); +begin + ShowHourglassCursor; + Inc(fUpdateCount); + ADataTable.DataTable.DisableControls; +end; + +function TControllerDetallesBase.CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; +begin + with DataTable do + Result := FieldByName(CAMPO_CANTIDAD).asInteger * FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat; +end; + +function TControllerDetallesBase.CalcularTotales(Modificar: boolean; DataTable: TDADataTable): Double; +{ +funcion que recalcula todos los detalles de la tabla pasada por parametro y devuelve +la cantidad total de los mismos +} +var + AuxPosicionIni : Integer; + AuxPosicion : Integer; + AuxImporteAcumulado : Double; + AuxImporteTotal : Double; + +begin + if (DataTable.State in dsEditModes) then + DataTable.Post; + + ValidarCampos(DataTable); + + DataTable.DisableControls; + AuxPosicionIni := DataTable.FieldByName(CAMPO_POSICION).AsInteger; + AuxPosicion := 0; + AuxImporteAcumulado := 0; + AuxImporteTotal := 0; + try + + DataTable.First; + while DataTable.Locate(CAMPO_POSICION, IntToStr(AuxPosicion), []) do + begin + //SALTOS DE LINEA + if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_SALTO) then + begin + if Modificar then + TratamientoDetalleSalto(DataTable); //Se podr sobreescribir para que se tengan en cuenta nuevos campos en hijos + CalculoDetalleSalto(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podr sobreescribir para posibles nuevos calculos de los hijos + end + //TITULOS + else if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_TITULO) then + begin + if Modificar then + TratamientoDetalleTitulo(DataTable); //Se podr sobreescribir para que se tengan en cuenta nuevos campos en hijos + CalculoDetalleTitulo(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podr sobreescribir para posibles nuevos calculos de los hijos + end + //SUBTITULOS + else if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_SUBTOTAL) then + begin + if Modificar then + TratamientoDetalleSubtotal(DataTable); //Se podr sobreescribir para que se tengan en cuenta nuevos campos + CalculoDetalleSubtotal(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podr sobreescribir para posibles nuevos calculos de los hijos + end + //CONCEPTOS + else if (DataTable.FieldByName(CAMPO_TIPO).AsString = TIPO_DETALLE_CONCEPTO) then + begin + if Modificar then + TratamientoDetalleConcepto(DataTable); //Se podr sobreescribir para que se tengan en cuenta nuevos campos + CalculoDetalleConcepto(DataTable, AuxImporteAcumulado, AuxImporteTotal); //Se podr sobreescribir para posibles nuevos calculos de los hijos + end + //HIJOS + else CalcularTotalesHijos(Modificar, DataTable, AuxImporteAcumulado, AuxImporteTotal); + + Inc(AuxPosicion); + DataTable.First; + end; + + finally + //Dejamos el puntero en la misma posicin que la que parti + DataTable.Locate(CAMPO_POSICION, IntToStr(AuxPosicionIni), []); + DataTable.EnableControls; + end; + + Result := AuxImporteTotal; +end; + +function TControllerDetallesBase.CalcularTotalesHijos(Modificar: boolean; DataTable: TDADataTable; var ImporteAcumulado : Double; var ImporteTotal : Double): Double; +begin +// + Result := 0; +end; + +procedure TControllerDetallesBase.CalculoDetalleConcepto(DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double); +begin + with DataTable do + begin + ImporteAcumulado := ImporteAcumulado + FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat; + ImporteTotal := ImporteTotal + FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat; + end; +end; + +procedure TControllerDetallesBase.CalculoDetalleSalto(DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double); +begin + with DataTable do + begin + if not Editing then Edit; + FieldByName(CAMPO_CANTIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_TOTAL).AsVariant := Null; + Post; + end; +end; + +procedure TControllerDetallesBase.CalculoDetalleSubtotal(DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double); +begin + with DataTable do + begin + if not Editing then Edit; + FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat := ImporteAcumulado; + Post; + end; + ImporteAcumulado := 0; +end; + +procedure TControllerDetallesBase.CalculoDetalleTitulo(DataTable: TDADataTable; var ImporteAcumulado, ImporteTotal: Double); +begin +// +end; + +procedure TControllerDetallesBase.Clear(ADataTable: IDAStronglyTypedDataTable); +begin +// +end; + +constructor TControllerDetallesBase.Create; +begin + inherited; +end; + +function TControllerDetallesBase.DarListaTiposDetalle: TStringList; +begin + Result := TStringList.Create; + Result.Values[TIPO_DETALLE_CONCEPTO] := 'Concepto'; + Result.Values[TIPO_DETALLE_TITULO] := 'Ttulo de captulo'; + Result.Values[TIPO_DETALLE_SUBTOTAL] := 'Final de captulo'; + Result.Values[TIPO_DETALLE_SALTO] := 'Salto de pgina'; +end; + +function TControllerDetallesBase.darTotalImporteTotal(ADataTable: IDAStronglyTypedDataTable): Double; +begin + Result := CalcularTotales(False, ADataTable.DataTable); +end; + +procedure TControllerDetallesBase.Delete(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray); +var + i: integer; + AField: TDAField; + DeletePosicion: Integer; +begin + AField := ADataTable.DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (Delete)'); + + BeginUpdate(ADataTable); + try + with ADataTable do + begin + for i := 0 to High(POSICION) do + begin + DataTable.First; + DeletePosicion := POSICION[i]; + if DataTable.Locate(CAMPO_POSICION, IntToStr(DeletePosicion), []) then + DataTable.Delete; + end; + Renumerar(DataTable, DeletePosicion); + end; + finally + EndUpdate(ADataTable); + end; +end; + +function TControllerDetallesBase.DesplazarNPosiciones(DataTable: TDADataTable; NumOrdenIni: Variant; NPosiciones: Variant): Integer; +{ +Funcin que desplaza NPosiciones el numero de orden a partir del elemento con el +nmero de orden dado. Devuelve el numero de orden del primer elemento del hueco +generado +} +var + AuxNumOrden: Integer; + AuxNumPos: Integer; + AField: TDAField; +begin + + AField := DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (desplazarNPosiciones)'); + + if VarIsNull(NPosiciones) + then AuxNumPos := 1 + else AuxNumPos := NPosiciones; + + if VarIsNull(NumOrdenIni) + then AuxNumOrden := 0 + else AuxNumOrden := NumOrdenIni + 1; //Aadimos por abajo siempre + + Result := AuxNumOrden; + + with DataTable do + begin + First; + while not EOF do + begin + if (FieldByName(CAMPO_POSICION).AsInteger >= AuxNumOrden) then + begin + if not Editing then Edit; + FieldByName(CAMPO_POSICION).AsInteger := FieldByName(CAMPO_POSICION).AsInteger + AuxNumPos; + Post; + end; + Next; + end; + end; +end; + +destructor TControllerDetallesBase.Destroy; +begin + inherited; +end; + +procedure TControllerDetallesBase.EndUpdate(ADataTable: IDAStronglyTypedDataTable); +begin + Dec(fUpdateCount); + CalcularTotales(True, ADataTable.DataTable); + ADataTable.DataTable.EnableControls; + + if fUpdateCount = 0 then + AvisarObservadores(ADataTable); + + HideHourglassCursor; +end; + +function TControllerDetallesBase.getTipo(ADataTable: IDAStronglyTypedDataTable; pPosicion: Integer): String; +var + posIni: integer; + AField: TDAField; +begin + AField := ADataTable.DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (getTipo)'); + + Result := ''; + BeginUpdate(ADataTable); + try + with ADataTable do + begin + //Guardamos la posicion en la que estamos + posIni := DataTable.FieldByName(CAMPO_POSICION).AsInteger; + + DataTable.First; + if DataTable.Locate(CAMPO_POSICION, IntToStr(pPosicion), []) then + Result := DataTable.FieldByName(CAMPO_TIPO).AsString; + + //Volvemos a posicionar el puntero donde estaba + DataTable.First; + if not DataTable.Locate(CAMPO_POSICION, IntToStr(posIni), []) then + raise Exception.Create('La posicin ' + IntToStr(posIni) + ' no existe (getTipo)'); + end; + finally + EndUpdate(ADataTable); + end; +end; + +procedure TControllerDetallesBase.Move(ADataTable: IDAStronglyTypedDataTable; Posicion: TIntegerArray; Posiciones: Integer); +var + i:Integer; +begin + BeginUpdate(ADataTable); + try + with ADataTable do + begin + //Empezamos desde abajo + if Posiciones > 0 then + for i:= High(POSICION) downto 0 do + Mover(DataTable, POSICION[i], Posiciones) + else + //Empezamos desde arriba + for i:= 0 to High(POSICION) do + Mover(DataTable, POSICION[i], Posiciones); + end; + finally + EndUpdate(ADataTable); + end; +end; + +procedure TControllerDetallesBase.Mover(DataTable: TDADataTable; Posicion: Integer; NumPosiciones: Integer); +{ +procedimiento que desplaza el nmero de posiciones (NumPosiciones) pasados por parametro +a la posicion (Posicion) dada, en caso de ser negativo ser hacia arriba y positivo hacia +abajo +} +var + AuxOrden : Integer; + AuxID : Integer; + AField: TDAField; +begin + AField := DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (mover)'); + + AField := DataTable.FindField(CAMPO_ID); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_ID + ' no encontrado (mover)'); + + //Buscamos el elemento con la posicion pasada por parametro + DataTable.First; + if not DataTable.Locate(CAMPO_POSICION, IntToStr(Posicion), []) then + raise Exception.Create('Error, no se ha encontrado la POSICION [' + IntToStr(Posicion) + '] (mover)'); + + //Guardamos el id del elemento a cambiar de posicion y calculamos su nueva posicion + AuxID := DataTable.FieldByName(CAMPO_ID).AsInteger; + AuxOrden := Posicion + NumPosiciones; + + DataTable.First; + if DataTable.Locate(CAMPO_POSICION, IntToStr(AuxOrden), []) then + begin + if not DataTable.Editing then DataTable.Edit; + DataTable.FieldByName(CAMPO_POSICION).AsInteger := DataTable.FieldByName(CAMPO_POSICION).AsInteger - NumPosiciones; + + //Se hace dentro por si es el ultimo o el primero + DataTable.First; + if not DataTable.Locate(CAMPO_ID, IntToStr(AuxID), []) then + raise Exception.Create('Error, no se ha encontrado el ID [' + IntToStr(AuxID) + '] (mover)'); + + if not DataTable.Editing then DataTable.Edit; + DataTable.FieldByName(CAMPO_POSICION).AsInteger := AuxOrden; + + DataTable.Post; + end; + + //Colocamos el puntero en la posicin en la que estaba + DataTable.First; + DataTable.Locate(CAMPO_ID, IntToStr(AuxID), []); +end; + +procedure TControllerDetallesBase.Renumerar(DataTable: TDADataTable; LocalizaPosicion: Integer); +{ +procedimiento que renumera todos los conceptos de la tabla dada por parametro +} +var + i, j : Integer; + AField: TDAField; +begin + AField := DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (renumerar)'); + + with DataTable do + begin + for i:=0 to RecordCount-1 do + begin + First; + if not Locate(CAMPO_POSICION, IntToStr(i), []) then + begin + j := i; + First; + while not Locate(CAMPO_POSICION, IntToStr(j), []) do + begin + Inc(j); + First; + end; + + if not Editing then Edit; + FieldByName(CAMPO_POSICION).AsInteger := i; + Post; + end; + end; + + //Posicionamos el puntero en la posicin dada por parametro + if Locate(CAMPO_POSICION, IntToStr(LocalizaPosicion), []) then + end; +end; + +procedure TControllerDetallesBase.TratamientoDetalleConcepto(DataTable: TDADataTable); +begin + with DataTable do + begin + if not Editing then Edit; + //Si alguno de los campos de calculo de total es nulo el total tambien ser nulo + if (VarIsNull(FieldByName(CAMPO_CANTIDAD).AsVariant) + or VarIsNull(FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant)) + then FieldByName(CAMPO_IMPORTE_TOTAL).AsVariant := Null + else FieldByName(CAMPO_IMPORTE_TOTAL).AsFloat := CalcularImporteTotalConcepto(DataTable); + Post; + end; +end; + +procedure TControllerDetallesBase.TratamientoDetalleSalto(DataTable: TDADataTable); +begin + with DataTable do + begin + if not Editing then Edit; + FieldByName(CAMPO_CONCEPTO).AsString := CTE_DESC_SALTO; + FieldByName(CAMPO_CANTIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_TOTAL).AsVariant := Null; + Post; + end; +end; + +procedure TControllerDetallesBase.TratamientoDetalleSubtotal(DataTable: TDADataTable); +begin + with DataTable do + begin + if not Editing then Edit; + if (FieldByName(CAMPO_CONCEPTO).AsString = CTE_DESC_SALTO) then + FieldByName(CAMPO_CONCEPTO).AsVariant := Null; + FieldByName(CAMPO_CANTIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := Null; + Post; + end; +end; + +procedure TControllerDetallesBase.TratamientoDetalleTitulo(DataTable: TDADataTable); +begin + with DataTable do + begin + if not Editing then Edit; + if (FieldByName(CAMPO_CONCEPTO).AsString = CTE_DESC_SALTO) then + FieldByName(CAMPO_CONCEPTO).AsVariant := Null; + FieldByName(CAMPO_CANTIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_UNIDAD).AsVariant := Null; + FieldByName(CAMPO_IMPORTE_TOTAL).AsVariant := Null; + Post; + end; +end; + +procedure TControllerDetallesBase.validarCampos(DataTable: TDADataTable); +var + AField: TDAField; +begin + //Validamos la existencia de todos los campos necesarios + AField := DataTable.FindField(CAMPO_POSICION); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_POSICION + ' no encontrado (validarCampos)'); + AField := DataTable.FindField(CAMPO_TIPO); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_TIPO + ' no encontrado (validarCampos)'); + AField := DataTable.FindField(CAMPO_CANTIDAD); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_CANTIDAD + ' no encontrado (validarCampos)'); + AField := DataTable.FindField(CAMPO_IMPORTE_UNIDAD); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_IMPORTE_UNIDAD + ' no encontrado (validarCampos)'); + AField := DataTable.FindField(CAMPO_IMPORTE_TOTAL); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_IMPORTE_TOTAL + ' no encontrado (validarCampos)'); +end; + +end. diff --git a/Source/Base/ControllerBase/uControllerDetallesDTO.pas b/Source/Base/ControllerBase/uControllerDetallesDTO.pas new file mode 100644 index 00000000..4f17a21a --- /dev/null +++ b/Source/Base/ControllerBase/uControllerDetallesDTO.pas @@ -0,0 +1,72 @@ +unit uControllerDetallesDTO; + +interface + +uses Classes, Variants, uDACDSDataTable, uDADataTable, uControllerDetallesBase; + +const + CAMPO_DESCUENTO = 'DESCUENTO'; + //Adems del descuento tambien se aade el Precio de porte por artculo + CAMPO_IMPORTE_PORTE = 'IMPORTE_PORTE'; + +type + IControllerDetallesDTO = interface(IControllerDetallesBase) + ['{F6C5D9E4-4D3D-404F-9B6A-58D4A24B01C6}'] + end; + + TControllerDetallesDTO = class (TControllerDetallesBase, IControllerDetallesDTO) + protected + //Si en los hijos existen campos a tener en cuenta se sobreescribira este metodo + procedure ValidarCampos(DataTable: TDADataTable); override; + + //Si sobreescribimos este mtodo podremos tener en cuenta otras columnas para el calculo del importe total de un concepto + function CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; override; + end; + + +implementation + +{ TControllerDetallesBase } + +uses SysUtils, uDAInterfaces; + +function TControllerDetallesDTO.CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; +var + ImporteTotal : Double; +begin + ImporteTotal := 0; + + with DataTable do + begin + if (VarIsNull(FieldByName(CAMPO_DESCUENTO).AsVariant)) then + ImporteTotal := FieldByName(CAMPO_CANTIDAD).asInteger * FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat + else + ImporteTotal := FieldByName(CAMPO_CANTIDAD).asInteger * (FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat - (FieldByName(CAMPO_IMPORTE_UNIDAD).AsFloat * (FieldByName(CAMPO_DESCUENTO).AsFloat/100))); + + if (VarIsNull(FieldByName(CAMPO_IMPORTE_PORTE).AsVariant)) then + ImporteTotal := ImporteTotal + else + ImporteTotal := ImporteTotal + (FieldByName(CAMPO_CANTIDAD).asInteger * FieldByName(CAMPO_IMPORTE_PORTE).AsFloat); + end; + + Result := ImporteTotal; +end; + +procedure TControllerDetallesDTO.validarCampos(DataTable: TDADataTable); +var + AField: TDAField; +begin + inherited; + //Validamos la existencia de todos los campos necesarios + + AField := DataTable.FindField(CAMPO_DESCUENTO); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_DESCUENTO + ' no encontrado (validarCampos)'); + + + AField := DataTable.FindField(CAMPO_IMPORTE_PORTE); + if not Assigned(AField) then + raise Exception.Create('Campo ' + CAMPO_IMPORTE_PORTE + ' no encontrado (validarCampos)'); +end; + +end. diff --git a/Source/Base/GUIBase/GUIBase.bdsproj b/Source/Base/GUIBase/GUIBase.bdsproj new file mode 100644 index 00000000..c085d671 --- /dev/null +++ b/Source/Base/GUIBase/GUIBase.bdsproj @@ -0,0 +1,686 @@ + + + + + + + + + + + + GUIBase.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + True + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + RemObjects Data Abstract - IDE Package + SMImport suite: data importing into dataset. Scalabium/Mike Shkolnik, 2000-2005 + SMExport suite: data export from dataset. Written by Mike Shkolnik/Scalabium, 1998-2004. + RemObjects Data Abstract - ADOExpress/dbGo Driver + RemObjects Data Abstract - InterBase Express Driver + RemObjects Data Abstract - dbExpress Driver + RemObjects Data Abstract - Scripting Integration Library + TeeChart Components + + + + diff --git a/Source/Base/GUIBase/GUIBase.dpk b/Source/Base/GUIBase/GUIBase.dpk new file mode 100644 index 00000000..5cf719bb --- /dev/null +++ b/Source/Base/GUIBase/GUIBase.dpk @@ -0,0 +1,112 @@ +package GUIBase; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION OFF} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + DataAbstract_D10, + Base, + vcl, + dbrtl, + vcldb, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + vcljpg, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + vclx, + cxExportD10, + tbx_d10, + tb2k_d10, + ccpack10, + designide, + xmlrtl, + vclactnband, + dsnap, + adortl, + dxLayoutControlD10, + dxComnD10, + dxPSCoreD10, + frx10, + fs10, + fqb100, + bdertl, + frxe10, + frxTee10, + fsTee10, + tee, + teeui, + teedb, + dxPScxCommonD10, + dxPSLnksD10, + vclshlctrls, + dxPScxGridLnkD10, + dclcxLibraryD10, + dxPsPrVwAdvD10, + dxBarExtItemsD10, + dxBarD10, + GUISDK_D10, + cfpack_d10, + JvAppFrmD10R, + JclVcl, + Jcl, + JvSystemD10R, + JvCoreD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + PNG_D10, + PngComponentsD10, + ControllerBase, + cxIntlPrintSys3D10; + +contains + uEditorBase in 'uEditorBase.pas' {fEditorBase: TCustomEditor}, + uEditorGridBase in 'uEditorGridBase.pas' {fEditorGridBase: TCustomEditor}, + uEditorItem in 'uEditorItem.pas' {fEditorItem: TCustomEditor}, + uEditorPreview in 'uEditorPreview.pas' {fEditorPreview: TCustomEditor}, + uViewPreview in 'uViewPreview.pas' {frViewPreview: TFrame}, + uViewBase in 'uViewBase.pas' {frViewBase: TFrame}, + uEditorDBBase in 'uEditorDBBase.pas' {fEditorDBBase: TCustomEditor}, + uEditorDBItem in 'uEditorDBItem.pas' {fEditorDBItem: TCustomEditor}, + uViewBarraSeleccion in 'uViewBarraSeleccion.pas' {frViewBarraSeleccion: TFrame}, + uViewGridBase in 'uViewGridBase.pas' {frViewGridBase: TFrame}, + uBizInformesAware in 'uBizInformesAware.pas', + uViewFormaPago in 'uViewFormaPago.pas' {frViewFormaPago: TFrame}, + uViewObservaciones in 'uViewObservaciones.pas' {frViewObservaciones: TFrame}, + uViewTotales in 'uViewTotales.pas' {frViewTotales: TFrame}, + uViewDetallesBase in 'uViewDetallesBase.pas' {frViewDetallesBase: TFrame}, + uViewIncidencias in 'uViewIncidencias.pas' {frViewIncidencias: TFrame}, + uViewDetallesDTO in 'uViewDetallesDTO.pas' {frViewDetallesDTO: TCustomView}, + uViewDetallesGenerico in 'uViewDetallesGenerico.pas' {frViewDetallesGenerico: TFrame}, + uViewGrid2Niveles in 'uViewGrid2Niveles.pas' {frViewGrid2Niveles: TFrame}, + uEditorBasico in 'uEditorBasico.pas' {fEditorBasico}, + uDialogBase in 'uDialogBase.pas' {fDialogBase}, + uViewFiltroBase in 'uViewFiltroBase.pas' {frViewFiltroBase: TFrame}, + uViewGrid in 'uViewGrid.pas' {frViewGrid: TFrame}; + +end. diff --git a/Source/Base/GUIBase/GUIBase.dproj b/Source/Base/GUIBase/GUIBase.dproj new file mode 100644 index 00000000..d45cf7a3 --- /dev/null +++ b/Source/Base/GUIBase/GUIBase.dproj @@ -0,0 +1,737 @@ + + + {0ca27a95-0b81-4724-84bf-8f8ed4e421ae} + GUIBase.dpk + Debug + AnyCPU + DCC32 + ..\..\..\Output\Debug\Cliente\GUIBase.bpl + + + 7.0 + False + False + False + True + 0 + 3 + True + True + .\ + .\ + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + RELEASE + + + 7.0 + False + True + 3 + True + True + .\ + .\ + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + T:\COMPON~1\jcl\lib\d10\debug;$(BDS)\lib\Debug;$(BDS)\Lib\Debug\Indy9;..\..\Lib + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + RemObjects Data Abstract - IDE Package + SMImport suite: data importing into dataset. Scalabium/Mike Shkolnik, 2000-2005 + SMExport suite: data export from dataset. Written by Mike Shkolnik/Scalabium, 1998-2004. + RemObjects Data Abstract - ADOExpress/dbGo Driver + RemObjects Data Abstract - InterBase Express Driver + RemObjects Data Abstract - dbExpress Driver + RemObjects Data Abstract - Scripting Integration Library + TeeChart Components + + + GUIBase.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fDialogBase
+
+ +
fEditorBase
+
+ +
fEditorBasico
+
+ +
fEditorDBBase
+
+ +
fEditorDBItem
+
+ +
fEditorGridBase
+
+ +
fEditorItem
+
+ +
fEditorPreview
+
+ +
frViewBarraSeleccion
+
+ +
frViewBase
+
+ +
frViewDetallesBase
+
+ +
frViewDetallesDTO
+
+ +
frViewDetallesGenerico
+
+ +
frViewFiltroBase
+
+ +
frViewFormaPago
+
+ +
frViewGrid
+
+ +
frViewGrid2Niveles
+
+ +
frViewGridBase
+
+ +
frViewIncidencias
+
+ +
frViewObservaciones
+
+ +
frViewPreview
+
+ +
frViewTotales
+
+
+ +
+ + diff --git a/Source/Base/GUIBase/GUIBase.drc b/Source/Base/GUIBase/GUIBase.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Base/GUIBase/GUIBase.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Base/GUIBase/GUIBase.rc b/Source/Base/GUIBase/GUIBase.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Base/GUIBase/GUIBase.res b/Source/Base/GUIBase/GUIBase.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Base/GUIBase/GUIBase.res differ diff --git a/Source/Base/GUIBase/_uViewGridBase.pas b/Source/Base/GUIBase/_uViewGridBase.pas new file mode 100644 index 00000000..6151a2a3 --- /dev/null +++ b/Source/Base/GUIBase/_uViewGridBase.pas @@ -0,0 +1,345 @@ +{*******************************************************} +{ } +{ Administracin de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewGridBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, Menus, ActnList, Grids, + DBGrids, JvComponent, JvFormAutoSize, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPrnDlg, + cxIntlPrintSys3, dxPSPrvwAdv, uGridUtils; + +type + IViewGridBase = interface(IViewBase) + ['{D5B9B017-2A2E-44AC-8223-E54664C6BC66}'] + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + + procedure Preview; + procedure Print; + procedure PrintSetup; + + function IsEmpty : Boolean; + + procedure SaveGridStatus; + procedure RestoreGridStatus; + + procedure GotoFirst; + procedure GotoLast; + + function GetFocusedView : TcxGridDBTableView; + property _FocusedView : TcxGridDBTableView read GetFocusedView; + + function GetGrid : TcxGrid; + property _Grid : TcxGrid read GetGrid; + + procedure StoreToRegistry (const Path : String); + procedure RestoreFromRegistry (const Path : String); + + procedure SetDblClick(const Value: TNotifyEvent); + function GetDblClick: TNotifyEvent; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + + procedure SetPopupMenu(const Value: TPopupMenu); + function GetPopupMenu: TPopupMenu; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + + function GetMultiSelect: Boolean; + procedure SetMultiSelect(const Value: Boolean); + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + + procedure SetFilter(const Value: string); + function GetFilter: string; + property Filter: string read GetFilter write SetFilter; + + function GetFiltered: Boolean; + property Filtered : Boolean read GetFiltered; + end; + + + TfrViewGridBase = class(TfrViewBase, IViewGridBase) + dsDataSource: TDADataSource; + private + FFilter: string; + FOnFilterChanged : TNotifyEvent; + procedure FiltrarGrid(TextoFiltro : String); + protected + FGridStatus : TcxGridStatus; + FOnDblClick: TNotifyEvent; + FPopupMenu: TPopupMenu; + function GetMultiSelect: Boolean; virtual; + procedure SetMultiSelect(const Value: Boolean); virtual; + procedure SetPopupMenu(const Value: TPopupMenu); virtual; + function GetPopupMenu: TPopupMenu; virtual; + procedure SetDblClick(const Value: TNotifyEvent); virtual; + function GetDblClick: TNotifyEvent; virtual; + function GetGrid : TcxGrid; virtual; abstract; + function GetFocusedView : TcxGridDBTableView; virtual; abstract; + procedure SetFilter(const Value: string); virtual; + function GetFilter: string; virtual; + function GetFiltered: Boolean; virtual; + procedure FilterChanged(Sender : TObject); virtual; + public + constructor Create(AOwner: TComponent); override; + + procedure ShowEmbedded(const AParent : TWinControl); override; + + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + + procedure Preview; virtual; + procedure Print; virtual; + procedure PrintSetup; virtual; + + function IsEmpty : Boolean; + + procedure SaveGridStatus; + procedure RestoreGridStatus; + + procedure GotoFirst; + procedure GotoLast; + + procedure StoreToRegistry (const Path : String); + procedure RestoreFromRegistry (const Path : String); + + property Filter: string read GetFilter write SetFilter; + property Filtered : Boolean read GetFiltered; + property _FocusedView : TcxGridDBTableView read GetFocusedView; + property _Grid : TcxGrid read GetGrid; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + destructor Destroy; override; + end; + +procedure Register; + +implementation + +uses + CCReg, uDataModuleBase, uDBSelectionListUtils; + +{$R *.dfm} + +procedure Register; +begin + RegisterCustomContainer(TfrViewGridBase); +end; + +{ TfrViewGrid } + +procedure TfrViewGridBase.AjustarAncho; +begin + if Assigned(_FocusedView) then + _FocusedView.ApplyBestFit; +end; + +procedure TfrViewGridBase.ContraerTodo; +begin + if Assigned(_FocusedView) then + _FocusedView.ViewData.Collapse(True); +end; + +constructor TfrViewGridBase.Create(AOwner: TComponent); +begin + inherited; + FFilter := ''; + FOnFilterChanged := FilterChanged; + FPopupMenu := nil; + FOnDblClick := nil; + FGridStatus := NIL; +end; + +procedure TfrViewGridBase.ExpandirTodo; +begin + if Assigned(_FocusedView) then + _FocusedView.ViewData.Expand(True); +end; + +function TfrViewGridBase.GetDblClick: TNotifyEvent; +begin + Result := FOnDblClick; +end; + +function TfrViewGridBase.GetFilter: string; +begin + Result := FFilter; +end; + +function TfrViewGridBase.GetFiltered: Boolean; +begin + Result := (_FocusedView.DataController.Filter.Root.Count > 0); +end; + +function TfrViewGridBase.GetMultiSelect: Boolean; +begin + Result := _FocusedView.OptionsSelection.MultiSelect; +end; + +function TfrViewGridBase.GetPopupMenu: TPopupMenu; +begin + Result := FPopupMenu; +end; + +procedure TfrViewGridBase.GotoFirst; +begin + if Assigned(_FocusedView) then + _FocusedView.DataController.GotoFirst; +end; + +procedure TfrViewGridBase.GotoLast; +begin + if Assigned(_FocusedView) then + _FocusedView.DataController.GotoLast; +end; + +function TfrViewGridBase.IsEmpty: Boolean; +begin + Result := (_FocusedView.ViewData.RowCount < 1); +end; + +procedure TfrViewGridBase.Preview; +begin + +end; + +procedure TfrViewGridBase.Print; +begin + +end; + +procedure TfrViewGridBase.PrintSetup; +begin + +end; + +procedure TfrViewGridBase.RestoreFromRegistry(const Path : String); +begin + if Assigned(_FocusedView) then + _FocusedView.RestoreFromRegistry(Path + '\\GridSettings\\' + Self.Name, False, False, []); +end; + +procedure TfrViewGridBase.RestoreGridStatus; +begin + if Assigned(FGridStatus) then + FGridStatus.Restore(_FocusedView); +end; + +procedure TfrViewGridBase.SaveGridStatus; +begin + FreeAndNil(FGridStatus); + FGridStatus := TcxGridStatus.Create(_FocusedView); +end; + +procedure TfrViewGridBase.SetDblClick(const Value: TNotifyEvent); +begin + FOnDblClick := Value; +end; + +procedure TfrViewGridBase.SetFilter(const Value: string); +begin + if FFilter <> Value then + begin + FFilter := Value; + FiltrarGrid(FFilter); + if Assigned(FOnFilterChanged) then + FOnFilterChanged(Self); + end; +end; + +procedure TfrViewGridBase.SetMultiSelect(const Value: Boolean); +begin + _FocusedView.OptionsSelection.MultiSelect := Value; +// _FocusedView..OnSelectionChanged := SelectionChanged; +end; + +procedure TfrViewGridBase.SetPopupMenu(const Value: TPopupMenu); +begin + FPopupMenu := Value; +end; + +procedure TfrViewGridBase.ShowEmbedded(const AParent: TWinControl); +begin + inherited; + + // No activar la tabla ya por si acaso tuviera parmetros +{ if not DADataSource.DataTable.Active then + DADataSource.DataTable.Active := True;} + + GotoFirst; + _FocusedView.Focused := True; + if _FocusedView.ViewData.RecordCount > 0 then + begin + _FocusedView.ViewData.Records[0].Selected := True; + _FocusedView.ViewData.Records[0].Focused := True; + end; +end; + +procedure TfrViewGridBase.StoreToRegistry(const Path : String); +begin + if Assigned(_FocusedView) then + _FocusedView.StoreToRegistry(Path + '\\GridSettings\\' + Self.Name, False, []); +end; + +procedure TfrViewGridBase.FiltrarGrid(TextoFiltro : String); +var + Columna: TcxGridDBColumn; + i: Integer; + AItemList: TcxFilterCriteriaItemList; +begin + with _FocusedView.DataController.Filter do + begin + BeginUpdate; + try + Options := [fcoCaseInsensitive, fcoSoftCompare]; + Root.Clear; + if Length(TextoFiltro) > 0 then + begin + AItemList := Root.AddItemList(fboAnd); + AItemList.BoolOperatorKind := fboOr; + for i:=0 to (_FocusedView as TcxGridDBTableView).ColumnCount - 1 do + begin + Columna := (_FocusedView as TcxGridDBTableView).Columns[i]; + if (Length(Columna.Caption) > 0) and (Columna.Caption <> 'RecID') then + AItemList.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i)); + end; + Active := True; + end + else + Active := False; + finally + EndUpdate; + end; + end; +end; + + +procedure TfrViewGridBase.FilterChanged(Sender: TObject); +begin +// +end; + +destructor TfrViewGridBase.Destroy; +begin + FOnFilterChanged := Nil; + if Assigned(FGridStatus) then + FreeAndNil(FGridStatus); + inherited; +end; + +end. + diff --git a/Source/Base/GUIBase/uBizInformesAware.pas b/Source/Base/GUIBase/uBizInformesAware.pas new file mode 100644 index 00000000..58ac9c05 --- /dev/null +++ b/Source/Base/GUIBase/uBizInformesAware.pas @@ -0,0 +1,14 @@ +unit uBizInformesAware; + +interface + +type + IBizInformesAware = interface + ['{98AD6541-199F-4155-B394-ED0316298759}'] + procedure Preview; + procedure Print; + end; + +implementation + +end. diff --git a/Source/Base/GUIBase/uDialogBase.dfm b/Source/Base/GUIBase/uDialogBase.dfm new file mode 100644 index 00000000..bd474ab3 --- /dev/null +++ b/Source/Base/GUIBase/uDialogBase.dfm @@ -0,0 +1,106 @@ +object fDialogBase: TfDialogBase + Left = 0 + Top = 0 + BorderStyle = bsDialog + Caption = 'fDialogBase' + ClientHeight = 430 + ClientWidth = 623 + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object pnlBotones: TFlowPanel + Left = 0 + Top = 374 + Width = 623 + Height = 56 + Align = alBottom + FlowStyle = fsBottomTopRightLeft + Padding.Left = 20 + Padding.Top = 20 + Padding.Right = 20 + Padding.Bottom = 15 + ParentBackground = False + TabOrder = 0 + VerticalAlignment = taAlignTop + object Button1: TButton + Left = 527 + Top = 15 + Width = 75 + Height = 25 + Action = actCancelar + TabOrder = 0 + end + object Button2: TButton + AlignWithMargins = True + Left = 437 + Top = 15 + Width = 75 + Height = 25 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 15 + Margins.Bottom = 0 + Action = actAceptar + TabOrder = 1 + end + end + object FlowPanel1: TFlowPanel + Left = 0 + Top = 0 + Width = 623 + Height = 374 + Align = alClient + Padding.Left = 30 + Padding.Top = 30 + Padding.Right = 30 + Padding.Bottom = 30 + ParentColor = True + TabOrder = 1 + object lblInstruccion: TLabel + AlignWithMargins = True + Left = 31 + Top = 31 + Width = 78 + Height = 19 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 20 + Align = alTop + Caption = 'Instrucci'#243'n' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object Label2: TLabel + Left = 31 + Top = 70 + Width = 571 + Height = 81 + Align = alTop + AutoSize = False + Caption = 'Comentarios' + end + end + object ActionList1: TActionList + Left = 16 + Top = 384 + object actAceptar: TAction + Caption = '&Aceptar' + end + object actCancelar: TAction + Caption = '&Cancelar' + end + end +end diff --git a/Source/Base/GUIBase/uDialogBase.pas b/Source/Base/GUIBase/uDialogBase.pas new file mode 100644 index 00000000..959620f4 --- /dev/null +++ b/Source/Base/GUIBase/uDialogBase.pas @@ -0,0 +1,39 @@ +unit uDialogBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ActnList; + +type + TfDialogBase = class(TForm) + pnlBotones: TFlowPanel; + Button1: TButton; + Button2: TButton; + ActionList1: TActionList; + actAceptar: TAction; + actCancelar: TAction; + FlowPanel1: TFlowPanel; + lblInstruccion: TLabel; + Label2: TLabel; + procedure FormShow(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleBase, JvNavigationPane; + +procedure TfDialogBase.FormShow(Sender: TObject); +begin + lblInstruccion.Font.Color := dmBase.StyleManager.Colors.HeaderColorTo; +end; + +end. diff --git a/Source/Base/GUIBase/uEditorBase.dfm b/Source/Base/GUIBase/uEditorBase.dfm new file mode 100644 index 00000000..99526794 --- /dev/null +++ b/Source/Base/GUIBase/uEditorBase.dfm @@ -0,0 +1,1705 @@ +object fEditorBase: TfEditorBase + Left = 222 + Top = 127 + Caption = 'EditorBase' + ClientHeight = 458 + ClientWidth = 795 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + KeyPreview = True + OldCreateOrder = False + Position = poDefault + OnActivate = CustomEditorActivate + OnCloseQuery = FormCloseQuery + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object JvNavPanelHeader: TJvNavPanelHeader + Left = 0 + Top = 49 + Width = 795 + Align = alTop + Caption = 'Editor' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindow + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + ColorFrom = 8684164 + ColorTo = 8684164 + ImageIndex = 0 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + object Image1: TImage + Left = 768 + Top = 0 + Width = 27 + Height = 27 + Align = alRight + Center = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000001CC4944415478DA63FCFFFF3F + 032D0123B2058B361EA79A6D71FE968C582D004A906CD8DFBFFF80F83F980601 + 0BDF6C868B7B66E1B6C0752FAA25BB9D8FE3341C59ED5A8B030CF356EF6198BF + 64237E0B4871B9C7016B0659651686F9DB8E30BC8BFEC6B070FD3EC21660F301 + BA18086CB53DC2E07DD88661CFCD1360FEEB882F0C4B361DA0CC07FFFF01C31A + 88FF005D0F62FFFE070CFF3FFFC0BEF9F3EF2FC38A2D8749F7013100E48B4741 + EF18D6EE38469C05306F9302EEFBBF61D8B0FB047116E04B39D80048CF4CD5CD + 0C9BF69D24DE025C4105B31C260F533B4D7913C3D603A768E783890A1B18761D + 3E433B1FF4C9AC63D87BFC1CED7CD02DB986E1C0A90BF82D88F63107E74E727C + D02EBE8AE1C8994BF82D88F03403E74E727CD024BC9CE1E485ABF82D08753361 + F03B66479605F5024B19CE5CBE8EDF8200172386E0130E780D0359BEE4CF5C38 + 3F8625196C410DEF6286F3D76EE2B7C0D7C1005EAE40CAF97FE0B2072C062CF3 + 73EFFB63C40F8C5FC9BD88E1D28D5BF82DF0B2D5C36938882E78148835F888B6 + C0CD5A1BA7E1A012B4E46930CEA023CA0247730DB061FFFE428AE5DF7F11C5F1 + BFFF508BFEFD437104322068819D891AB844A404E0B5A077F27C8A0C87019805 + 00F0E629EF34B079A30000000049454E44AE426082} + Transparent = True + ExplicitLeft = 627 + end + end + object TBXDock: TTBXDock + Left = 0 + Top = 0 + Width = 795 + Height = 49 + object tbxMain: TTBXToolbar + Left = 0 + Top = 23 + Caption = 'tbxMain' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = -23 + DockRow = 1 + Images = SmallImages + ParentShowHint = False + ShowHint = True + TabOrder = 0 + object TBXItem2: TTBXItem + Action = actNuevo + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem1: TTBXSeparatorItem + end + object TBXItem29: TTBXItem + Action = actGuardarCerrar + DisplayMode = nbdmImageAndText + end + object TBXItem27: TTBXItem + Action = actGuardar + end + object TBXItem5: TTBXItem + Action = actModificar + DisplayMode = nbdmImageAndText + end + object TBXItem4: TTBXItem + Action = actEliminar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem3: TTBXSeparatorItem + end + object TBXItem23: TTBXItem + Action = actPrevisualizar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem2: TTBXSeparatorItem + Visible = False + end + object TBXItem24: TTBXItem + Action = actConfPagina + Visible = False + end + object TBXItem3: TTBXItem + Action = actImprimir + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem10: TTBXSeparatorItem + end + object TBXItem26: TTBXItem + Action = actAnterior + end + object TBXItem25: TTBXItem + Action = actSiguiente + end + object TBXItem6: TTBXItem + Action = actRefrescar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem11: TTBXSeparatorItem + end + object TBXItem28: TTBXItem + Action = actCerrar + end + end + object tbxMenu: TTBXToolbar + Left = 0 + Top = 0 + Caption = 'Menu' + CloseButton = False + DragHandleStyle = dhNone + FullSize = True + Images = SmallImages + MenuBar = True + ProcessShortCuts = True + ShrinkMode = tbsmWrap + TabOrder = 1 + object TBXSubmenuItem4: TTBXSubmenuItem + Caption = '&Archivo' + object TBXItem8: TTBXItem + Action = actNuevo + end + object TBXSeparatorItem5: TTBXSeparatorItem + end + object TBXItem30: TTBXItem + Action = actGuardar + end + object TBXItem10: TTBXItem + Action = actModificar + end + object TBXSeparatorItem12: TTBXSeparatorItem + end + object TBXItem11: TTBXItem + Action = actEliminar + end + object TBXSeparatorItem15: TTBXSeparatorItem + end + object TBXItem21: TTBXItem + Action = actConfPagina + end + object TBXItem22: TTBXItem + Action = actPrevisualizar + end + object TBXItem9: TTBXItem + Action = actImprimir + end + object TBXSeparatorItem4: TTBXSeparatorItem + end + object TBXItem1: TTBXItem + Action = actCerrar + end + end + object TBXSubmenuItem5: TTBXSubmenuItem + Caption = '&Edici'#243'n' + object TBXItem16: TTBXItem + Action = actDeshacer + end + object TBXSeparatorItem8: TTBXSeparatorItem + end + object TBXItem15: TTBXItem + Action = actCortar + end + object TBXItem14: TTBXItem + Action = actCopiar + end + object TBXItem13: TTBXItem + Action = actPegar + end + object TBXSeparatorItem7: TTBXSeparatorItem + end + object TBXItem12: TTBXItem + Action = actLimpiar + end + object TBXSeparatorItem9: TTBXSeparatorItem + end + object TBXItem17: TTBXItem + Action = actSeleccionarTodo + end + end + object TBXSubmenuItem1: TTBXSubmenuItem + Caption = '&Buscar' + object TBXItem32: TTBXItem + Action = actAnterior + end + object TBXItem31: TTBXItem + Action = actSiguiente + end + object TBXSeparatorItem13: TTBXSeparatorItem + end + object TBXItem20: TTBXItem + Action = actBuscar + end + end + object TBXSubmenuItem6: TTBXSubmenuItem + Caption = '&Ver' + object TBXItem18: TTBXItem + Action = actRefrescar + end + end + object TBXSubmenuItem7: TTBXSubmenuItem + Caption = 'Ay&uda' + object TBXItem19: TTBXItem + Action = actAcercaDe + end + end + end + end + object StatusBar: TJvStatusBar + Left = 0 + Top = 439 + Width = 795 + Height = 19 + Panels = <> + end + object EditorActionList: TActionList + Images = SmallImages + Left = 16 + Top = 144 + object actNuevo: TAction + Category = 'Archivo' + Caption = 'Nuevo' + ShortCut = 45 + OnExecute = actNuevoExecute + end + object actModificar: TAction + Category = 'Archivo' + Caption = 'Modificar' + ImageIndex = 18 + OnExecute = actModificarExecute + OnUpdate = actModificarUpdate + end + object actGuardarCerrar: TAction + Category = 'Archivo' + Caption = 'G&uardar y cerrar' + ImageIndex = 17 + OnExecute = actGuardarCerrarExecute + OnUpdate = actGuardarCerrarUpdate + end + object actGuardar: TAction + Category = 'Archivo' + Caption = '&Guardar' + ImageIndex = 17 + OnExecute = actGuardarExecute + OnUpdate = actGuardarUpdate + end + object actEliminar: TAction + Category = 'Archivo' + Caption = 'Eliminar' + ImageIndex = 4 + ShortCut = 16430 + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actConfPagina: TAction + Category = 'Archivo' + Caption = '&Configurar p'#225'gina' + ImageIndex = 8 + OnExecute = actConfPaginaExecute + end + object actPrevisualizar: TAction + Category = 'Archivo' + Caption = '&Previsualizar' + ImageIndex = 6 + OnExecute = actPrevisualizarExecute + end + object actImprimir: TAction + Category = 'Archivo' + Caption = 'Imprimir' + ImageIndex = 7 + ShortCut = 16464 + OnExecute = actImprimirExecute + end + object actDeshacer: TEditUndo + Category = 'Edici'#243'n' + Caption = 'Deshacer' + Hint = 'Undo|Reverts the last action' + ImageIndex = 12 + ShortCut = 16474 + end + object actCortar: TEditCut + Category = 'Edici'#243'n' + Caption = 'Cortar' + Hint = 'Cortar|Corta la selecci'#243'n y la coloca en el portapapeles' + ImageIndex = 3 + ShortCut = 16472 + end + object actCerrar: TAction + Category = 'Archivo' + Caption = 'Cerrar' + OnExecute = actCerrarExecute + end + object actCopiar: TEditCopy + Category = 'Edici'#243'n' + Caption = 'Copiar' + Hint = 'Copiar|Copia la selecci'#243'n y la coloca en el portapapeles' + ImageIndex = 2 + ShortCut = 16451 + end + object actPegar: TEditPaste + Category = 'Edici'#243'n' + Caption = 'Pegar' + Hint = 'Pegar|Inserta el contenido del portapapeles' + ImageIndex = 5 + ShortCut = 16470 + end + object actSeleccionarTodo: TEditSelectAll + Category = 'Edici'#243'n' + Caption = 'Seleccionar todo' + Hint = 'Seleccionar todo' + ImageIndex = 11 + ShortCut = 16449 + end + object actLimpiar: TEditDelete + Category = 'Edici'#243'n' + Caption = '&Limpiar' + Hint = 'Limpiar|Borra el texto seleccionado' + ImageIndex = 1 + ShortCut = 46 + end + object actRefrescar: TAction + Category = 'Ver' + Caption = 'Actualizar' + Hint = 'Actualizar los datos' + ImageIndex = 9 + ShortCut = 116 + OnExecute = actRefrescarExecute + end + object actAcercaDe: TAction + Category = 'Ayuda' + Caption = 'Acerca de...' + ImageIndex = 0 + end + object actBuscar: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actAnterior: TAction + Category = 'Ver' + Caption = 'Anterior' + ImageIndex = 15 + end + object actSiguiente: TAction + Category = 'Ver' + Caption = 'Siguiente' + ImageIndex = 16 + end + object actCancelarCambios: TAction + Category = 'Archivo' + Caption = 'Cancelar cambios' + OnExecute = actCancelarCambiosExecute + end + object actDuplicar: TAction + Category = 'Archivo' + Caption = 'Duplicar' + ImageIndex = 20 + OnExecute = actDuplicarExecute + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 395 + Top = 80 + Bitmap = {} + end + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315 + 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F + 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499 + B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9 + A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6 + EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4 + 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2 + 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696 + F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0 + CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A + C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138 + 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1 + B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008 + 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42 + F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3 + 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329 + 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9 + 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59 + 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429 + BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6 + 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5 + C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315 + 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422 + C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61 + C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F + 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E + A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76 + 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA + 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8 + 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735 + F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175 + 682F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000032A4944415478DA + BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1 + 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C + 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D + 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC + 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4 + EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F + 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55 + 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0 + AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C + AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80 + F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D + ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213 + 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43 + 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95 + 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F + F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020 + C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48 + FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C + C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2 + E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147 + E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603 + A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D + 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD + AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A + 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4 + B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022C4944415478DA + 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF + 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2 + 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0 + 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1 + 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141 + 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06 + D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022 + 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020 + 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679 + 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8 + F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907 + 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F + 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8 + FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE + 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC + 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430 + 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4 + 02140B6805009C1383EFACA508270000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA + B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989 + 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E + 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4 + 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2 + E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4 + 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA + BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04 + 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096 + 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F + 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935 + 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588 + D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130 + EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7 + 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D + 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D + 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43 + 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA + 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1 + 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9 + 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E + 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422 + BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438 + 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413 + A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239 + 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831 + 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA + 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170 + C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832 + 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C + 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D + 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37 + 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22 + F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36 + 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71 + 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381 + BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355 + 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D + 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C + 4A0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA + B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B + 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828 + 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736 + B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE + A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56 + 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15 + 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C + 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0 + D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E + A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C + EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A + 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2 + BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC + 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E + 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F + BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08 + 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83 + D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683 + 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868 + 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12 + C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3 + 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E + 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3 + 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446 + FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119 + 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C + 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1 + DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45 + 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826 + BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240 + A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C + A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32 + C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C + 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300 + 00000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000027F4944415478DA + 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9 + 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67 + F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970 + 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D + 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F + E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100 + 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21 + 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA + 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B + C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62 + F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF + 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F + C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4 + 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D + 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486 + C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19 + 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4 + 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB + 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5 + 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2 + FA0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000037C4944415478DA + B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36 + 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94 + 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393 + 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F + 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784 + FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2 + E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4 + CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124 + 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB + 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7 + C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1 + 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72 + 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24 + C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3 + 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE + 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255 + 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B + 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB + B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022 + F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833 + B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F + E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989 + 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C + 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C + E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E + 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8 + 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99 + 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA + 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731 + 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67 + E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D + 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72 + 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3 + D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965 + 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF + C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8 + CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880 + AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F + 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31 + 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6 + A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621 + DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5 + 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9 + F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2 + 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066 + 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24 + 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621 + 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA + B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058 + D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60 + 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F + EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1 + B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE + 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6 + CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71 + 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C + 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12 + 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E + 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59 + 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED + 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8 + 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D + CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182 + D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382 + 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A + B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3 + 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5 + 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6 + 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE + 426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000029E4944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12 + 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD + D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA + 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287 + CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341 + 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14 + 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511 + 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B + E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC + DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6 + 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10 + E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84 + EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17 + AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02 + 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187 + 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B + 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090 + 0000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA + ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589 + F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435 + F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF + CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B + 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D + 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD + 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1 + A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE + 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075 + F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2 + 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF + A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C + D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892 + 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806 + 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F + EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E + 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3 + 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5 + DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C + A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA + F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196 + 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E + 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC + BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D + 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68 + 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986 + F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000 + 49454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003784944415478DA + B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61 + AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A + BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39 + 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A + 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965 + 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4 + 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0 + E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63 + 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1 + 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A + B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36 + FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424 + 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45 + DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1 + 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50 + 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC + 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46 + FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0 + 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4 + 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F + 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B + 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2 + D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA + 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F + 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3 + EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92 + 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F + 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945 + 4E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA + BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93 + 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88 + 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C + 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004 + A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F + 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47 + E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA + 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F + 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE + 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A + B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0 + 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06 + 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027 + 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7 + 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F + 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090 + B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE + AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927 + E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627 + 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA + 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD + E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4 + E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779 + 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82 + 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9 + 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C + 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3 + 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE + 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85 + 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C + 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000 + 000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA + 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E + 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18 + D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767 + F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B + 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8 + C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB + B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A + 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD + 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0 + 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6 + 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C + 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418 + 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06 + 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E + 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2 + 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402 + 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F + 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440 + 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA + 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698 + 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080 + 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0 + 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47 + 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC + 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4 + 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74 + D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4 + 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766 + 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05 + F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8 + 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8 + FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125 + 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B + FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42 + 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9 + 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67 + E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF + 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6 + 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F + 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322 + 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303 + 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51 + 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549 + 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3 + 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4 + FE66E507F40000000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA + 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3 + F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958 + 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77 + F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC + AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8 + 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0 + ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA + A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6 + E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99 + 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193 + 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1 + 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068 + BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13 + C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76 + E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96 + 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF + 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF + 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B + C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500 + 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723 + C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B + 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426 + 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B + 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808 + A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9 + 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587 + EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5 + DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3 + 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F + 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D + F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D + 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641 + 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8 + A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515 + E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3 + 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3 + 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A + 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8 + 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6 + 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58 + AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195 + 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB + 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4 + 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C + 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88 + 2F15D20000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002814944415478DA + 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF + 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3 + EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A + 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC + 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395 + E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1 + 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517 + 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1 + 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F + 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138 + BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A + 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605 + 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A + 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3 + 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5 + 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F + C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450 + 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2 + 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07 + CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85 + 5838D40000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026D4944415478DA + B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806 + 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775 + ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C + F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB + 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB + 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3 + E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A + 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D + 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7 + 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B + 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3 + 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4 + D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922 + C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C + 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556 + 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F + 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9 + CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69 + 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0 + 3F84F988A8E02F75743575B8E251160000000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000004124944415478DA + ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983 + 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10 + 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A + 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070 + 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB + A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4 + 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6 + 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289 + 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494 + E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B + 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F + BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26 + 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD + 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A + 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0 + D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57 + 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1 + 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117 + BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C + 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260 + E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D + B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94 + F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40 + D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6 + D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB + 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763 + D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23 + 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593 + BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27 + 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF + 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC + 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A + 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001B74944415478DA + B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434 + BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31 + 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47 + 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60 + F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B + 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284 + C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D + 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4 + 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C + B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5 + D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3 + 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555 + 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE + F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E + 44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 427 + Top = 80 + Bitmap = {} + end + object JvFormStorage: TJvFormStorage + AppStorage = JvAppRegistryStorage + AppStoragePath = 'fEditorBase\' + VersionCheck = fpvcNocheck + StoredValues = <> + Left = 392 + Top = 120 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 424 + Top = 120 + end + object StatusBarImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001E24944415478DAA5932B93DB3014858F9959C46A669599456561166B + 59DD5F50C342E717C461652B58A8658182810A0BABC35C26B394C92C8BDC6BB9 + 9BCD63A7339DB547638D1EDF3DE7488EF0C627BA1D70466896303FE352747B9D + A78B62D77B677DEBA0AC342C663F9D77F0473F2E7F7F0718DAA2EE9C5BA58B12 + 5DD320150204024BF85A6DC44A4A097FF27004ACEBBABB071C6B8B98E588057A + EF31630C3835D4FC6EF9DDE76221D0EC1B789A33C6F491327EC009449D5AC904 + 55A3969598BD93E87F5BF85613802A6A01216F011B3FB06416AA8F80823F224D + C8DF8D82CE3394A5DE0921F271F39881D99A7500843882020F9158C85891F702 + 9405D26CCAC0C52579364BCEF9C3B86E54E19CFB10996D337CFE389F027802BA + 760D465567F1D837002FC0E875270E91C988677CE00987B5B6A71DEC0C38FCEA + 820A9EA5B0FB43E0896C8EF2DB12D6A8CBB02B3A8907022CA9AFCE80FEE9EFF4 + 69FA3CDB7A0500B23190FC3016E9AD1DBECA1C87B60B210A5260ECA4402E5E55 + 00BA4C15E5A02680B143F1293F57F7972AE85B55D780AAAA6A02ACD40FF5854E + C3447A4380220FBEC70D52CC5F32A0FE2D806EDF281F5AEB202052DA0E65915F + F97E51D113A0BE02D009D4EEE856D49D4254DA0C7A63465FCF88A0E4C2EF5D06 + FFFC1BFFF7F903DDDC21F8890148C20000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 40 + Top = 392 + Bitmap = {} + end +end diff --git a/Source/Base/GUIBase/uEditorBase.pas b/Source/Base/GUIBase/uEditorBase.pas new file mode 100644 index 00000000..4622c761 --- /dev/null +++ b/Source/Base/GUIBase/uEditorBase.pas @@ -0,0 +1,444 @@ +unit uEditorBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uGUIBase, uCustomEditor, ToolWin, ComCtrls, JvExControls, + JvComponent, JvNavigationPane, ActnList, TBX, TB2Item, ImgList, + PngImageList, StdActns, JvFormAutoSize, AppEvnts, uCustomView, uViewBase, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, + JvComponentBase, TB2Dock, TB2Toolbar, dxLayoutLookAndFeels, TBXStatusBars, + JvExComCtrls, JvStatusBar; + +type + IEditorBase = interface(ICustomEditor) + ['{CB8CDE00-B225-4A1D-9A5C-EC6FBE2C854B}'] + function ShowModal : Integer; + end; + + TfEditorBase = class(TCustomEditor, IEditorBase) + actAcercaDe: TAction; + actAnterior: TAction; + actBuscar: TAction; + actCancelarCambios: TAction; + actCerrar: TAction; + actConfPagina: TAction; + actCopiar: TEditCopy; + actCortar: TEditCut; + actDeshacer: TEditUndo; + actEliminar: TAction; + actGuardar: TAction; + actGuardarCerrar: TAction; + actImprimir: TAction; + actLimpiar: TEditDelete; + actModificar: TAction; + actNuevo: TAction; + actPegar: TEditPaste; + actPrevisualizar: TAction; + actRefrescar: TAction; + actSeleccionarTodo: TEditSelectAll; + actSiguiente: TAction; + EditorActionList: TActionList; + JvNavPanelHeader: TJvNavPanelHeader; + LargeImages: TPngImageList; + SmallImages: TPngImageList; + TBXDock: TTBXDock; + TBXItem1: TTBXItem; + TBXItem10: TTBXItem; + TBXItem11: TTBXItem; + TBXItem12: TTBXItem; + TBXItem13: TTBXItem; + TBXItem14: TTBXItem; + TBXItem15: TTBXItem; + TBXItem16: TTBXItem; + TBXItem17: TTBXItem; + TBXItem18: TTBXItem; + TBXItem19: TTBXItem; + TBXItem2: TTBXItem; + TBXItem20: TTBXItem; + TBXItem21: TTBXItem; + TBXItem22: TTBXItem; + TBXItem23: TTBXItem; + TBXItem24: TTBXItem; + TBXItem25: TTBXItem; + TBXItem26: TTBXItem; + TBXItem27: TTBXItem; + TBXItem28: TTBXItem; + TBXItem29: TTBXItem; + TBXItem3: TTBXItem; + TBXItem30: TTBXItem; + TBXItem31: TTBXItem; + TBXItem32: TTBXItem; + TBXItem4: TTBXItem; + TBXItem5: TTBXItem; + TBXItem6: TTBXItem; + TBXItem8: TTBXItem; + TBXItem9: TTBXItem; + tbxMain: TTBXToolbar; + tbxMenu: TTBXToolbar; + TBXSeparatorItem1: TTBXSeparatorItem; + TBXSeparatorItem10: TTBXSeparatorItem; + TBXSeparatorItem11: TTBXSeparatorItem; + TBXSeparatorItem12: TTBXSeparatorItem; + TBXSeparatorItem13: TTBXSeparatorItem; + TBXSeparatorItem2: TTBXSeparatorItem; + TBXSeparatorItem3: TTBXSeparatorItem; + TBXSeparatorItem4: TTBXSeparatorItem; + TBXSeparatorItem5: TTBXSeparatorItem; + TBXSeparatorItem7: TTBXSeparatorItem; + TBXSeparatorItem8: TTBXSeparatorItem; + TBXSeparatorItem9: TTBXSeparatorItem; + TBXSubmenuItem1: TTBXSubmenuItem; + TBXSubmenuItem4: TTBXSubmenuItem; + TBXSubmenuItem5: TTBXSubmenuItem; + TBXSubmenuItem6: TTBXSubmenuItem; + TBXSubmenuItem7: TTBXSubmenuItem; + JvFormStorage: TJvFormStorage; + JvAppRegistryStorage: TJvAppRegistryStorage; + Image1: TImage; + TBXSeparatorItem15: TTBXSeparatorItem; + StatusBarImages: TPngImageList; + StatusBar: TJvStatusBar; + procedure actCerrarExecute(Sender: TObject); + procedure actGuardarCerrarExecute(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure CustomEditorActivate(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actGuardarExecute(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actNuevoExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actConfPaginaExecute(Sender: TObject); + procedure actCancelarCambiosExecute(Sender: TObject); + procedure actDuplicarExecute(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actGuardarCerrarUpdate(Sender: TObject); + procedure actGuardarUpdate(Sender: TObject); + + protected + procedure ActualizarEstadoEditor; virtual; + function ModifiedQuery : Boolean; + procedure ModificarInterno; virtual; + procedure EliminarInterno; virtual; + procedure GuardarInterno; virtual; + procedure NuevoInterno; virtual; + procedure ImprimirInterno; virtual; + procedure PrevisualizarInterno; virtual; + procedure ConfPaginaInterno; virtual; + procedure RefrescarInterno; virtual; + procedure CancelarCambiosInterno; virtual; + procedure CerrarInterno; virtual; + procedure DuplicarInterno; virtual; + procedure PonerTitulos(const ATitulo: String = ''); virtual; + procedure SetReadOnly(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + function ShowModal : Integer; + published + procedure FormShow(Sender: TObject); virtual; + end; + + TfEditorBaseClass = class of TfEditorBase; + +implementation + +{$R *.dfm} + +uses + Menus, uDataModuleBase, cxControls, uDialogUtils; + +{ +********************************* TfEditorBase ********************************* +} +procedure TfEditorBase.actCancelarCambiosExecute(Sender: TObject); +begin + CancelarCambiosInterno; + ActualizarEstadoEditor; +end; + +procedure TfEditorBase.actCerrarExecute(Sender: TObject); +begin + CerrarInterno; +end; + +procedure TfEditorBase.actConfPaginaExecute(Sender: TObject); +begin + ConfPaginaInterno; + ActualizarEstadoEditor; +end; + +procedure TfEditorBase.actDuplicarExecute(Sender: TObject); +begin + DuplicarInterno; + ActualizarEstadoEditor; +end; + +procedure TfEditorBase.actEliminarExecute(Sender: TObject); +begin + if actEliminar.Enabled then + begin + EliminarInterno; + ActualizarEstadoEditor; + end; +end; + +procedure TfEditorBase.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not ReadOnly; +end; + +procedure TfEditorBase.actGuardarCerrarExecute(Sender: TObject); +begin + ShowHourglassCursor; + try + if actGuardar.Execute then + actCerrar.Execute; + finally + HideHourglassCursor; + end; +end; + +procedure TfEditorBase.actGuardarCerrarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not ReadOnly; +end; + +procedure TfEditorBase.actGuardarExecute(Sender: TObject); +begin + GuardarInterno; + ActualizarEstadoEditor; +end; + +procedure TfEditorBase.actGuardarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not ReadOnly; +end; + +procedure TfEditorBase.actImprimirExecute(Sender: TObject); +begin + if actImprimir.Enabled then + begin + ImprimirInterno; + ActualizarEstadoEditor; + end; +end; + +procedure TfEditorBase.actModificarExecute(Sender: TObject); +begin + if actModificar.Enabled then + begin + ModificarInterno; + ActualizarEstadoEditor; + end; +end; + +procedure TfEditorBase.actModificarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not ReadOnly; +end; + +procedure TfEditorBase.actNuevoExecute(Sender: TObject); +begin + if actNuevo.Enabled then + begin + NuevoInterno; + ActualizarEstadoEditor; + end; +end; + +procedure TfEditorBase.actPrevisualizarExecute(Sender: TObject); +begin + if actPrevisualizar.Enabled then + begin + PrevisualizarInterno; + ActualizarEstadoEditor; + end; +end; + +procedure TfEditorBase.actRefrescarExecute(Sender: TObject); +begin + if actRefrescar.Enabled then + begin + RefrescarInterno; + ActualizarEstadoEditor; + end; +end; + +procedure TfEditorBase.ActualizarEstadoEditor; +begin + PonerTitulos; +end; + +procedure TfEditorBase.CancelarCambiosInterno; +begin + // +end; + +procedure TfEditorBase.CerrarInterno; +begin + Close; +end; + +procedure TfEditorBase.ConfPaginaInterno; +begin + // +end; + +constructor TfEditorBase.Create(AOwner: TComponent); +var + APath : String; +begin + inherited; + with JvFormStorage do + begin + if Pos('_', Self.Name) = 0 then + APath := Self.Name + else + APath := Copy(Self.Name, 0, (Pos('_', Self.Name)-1)); + AppStoragePath := APath; + end; + JvNavPanelHeader.StyleManager := dmBase.StyleManager; +end; + +procedure TfEditorBase.CustomEditorActivate(Sender: TObject); +begin + PonerTitulos; +end; + +procedure TfEditorBase.DuplicarInterno; +begin + // +end; + +procedure TfEditorBase.EliminarInterno; +begin + // +end; + +procedure TfEditorBase.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + if Valid then + CanClose := ModifiedQuery + else + CanClose := False; +end; + +procedure TfEditorBase.FormShow(Sender: TObject); +begin + ActualizarEstadoEditor; + if Assigned(Parent) then + begin + StatusBar.Visible := False; + actCerrar.ShortCut := 0 + end + else begin + StatusBar.Visible := True; + actCerrar.ShortCut := ShortCut(VK_ESCAPE, []); + end; +end; + +procedure TfEditorBase.GuardarInterno; +begin + // +end; + +procedure TfEditorBase.ImprimirInterno; +begin + // +end; + +procedure TfEditorBase.ModificarInterno; +begin + // +end; + +function TfEditorBase.ModifiedQuery: Boolean; +var + Respuesta: Integer; +begin + Result := True; + if Modified then + begin + + Respuesta := ShowConfirmMessage('Atencin', + 'Se han producido cambios', + 'Desea guardar los cambios que se han producido antes de cerrar?', + [TDlgButton_SI, TDlgButton_NO, TDlgButton_CANCELAR]); + + case Respuesta of + IDYES : actGuardar.Execute; + IDNO : actCancelarCambios.Execute; + else + Result := False; + end; + end +end; + +procedure TfEditorBase.NuevoInterno; +begin + // +end; + +procedure TfEditorBase.PonerTitulos(const ATitulo: String); +begin + if ReadOnly then + begin + JvNavPanelHeader.Caption := ATitulo + ' (NO MODIFICABLE)'; + Caption := ATitulo + ' (NO MODIFICABLE)'; + end + else + begin + JvNavPanelHeader.Caption := ATitulo; + Caption := ATitulo; + end; +end; + +procedure TfEditorBase.PrevisualizarInterno; +begin + // +end; + +procedure TfEditorBase.RefrescarInterno; +begin + // +end; + +procedure TfEditorBase.SetReadOnly(Value: Boolean); +var + i: integer; +begin + inherited; + + if ReadOnly then + for i:=0 to Self.ComponentCount-1 do + begin + If Self.Components[i] Is TfrViewBase then + (Self.Components[i] as TfrViewBase).ReadOnly := ReadOnly + end; +end; + +function TfEditorBase.ShowModal: Integer; +var + ABorderIcons : TBorderIcons; +begin + ABorderIcons := Self.BorderIcons; + Self.BorderIcons := Self.BorderIcons - [biMinimize]; + try + Result := inherited ShowModal; + finally + Self.BorderIcons := ABorderIcons; + end; +end; + +initialization + RegisterClass(TfEditorBase); + +finalization + UnRegisterClass(TfEditorBase); + +end. diff --git a/Source/Base/GUIBase/uEditorBasico.dfm b/Source/Base/GUIBase/uEditorBasico.dfm new file mode 100644 index 00000000..ef85a644 --- /dev/null +++ b/Source/Base/GUIBase/uEditorBasico.dfm @@ -0,0 +1,18 @@ +object fEditorBasico: TfEditorBasico + Left = 0 + Top = 0 + Caption = 'fEditorBasico' + ClientHeight = 236 + ClientWidth = 383 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Source/Base/GUIBase/uEditorBasico.pas b/Source/Base/GUIBase/uEditorBasico.pas new file mode 100644 index 00000000..7a8e97d1 --- /dev/null +++ b/Source/Base/GUIBase/uEditorBasico.pas @@ -0,0 +1,26 @@ +unit uEditorBasico; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uGUIBase, uCustomEditor; + +type + IEditorBasico = interface(ICustomEditor) + ['{CE4B2B04-F8DA-4C96-B071-CC5792C14D51}'] + function ShowModal : Integer; + end; + + TfEditorBasico = class(TCustomEditor, IEditorBasico) + end; + +implementation +{$R *.dfm} + +initialization + RegisterClass(TfEditorBasico); + +finalization + UnRegisterClass(TfEditorBasico); +end. diff --git a/Source/Base/GUIBase/uEditorDBBase.dfm b/Source/Base/GUIBase/uEditorDBBase.dfm new file mode 100644 index 00000000..170fdac7 --- /dev/null +++ b/Source/Base/GUIBase/uEditorDBBase.dfm @@ -0,0 +1,59 @@ +inherited fEditorDBBase: TfEditorDBBase + Left = 295 + Top = 247 + Caption = 'fEditorDBBase' + ClientHeight = 456 + ClientWidth = 648 + ExplicitWidth = 656 + ExplicitHeight = 490 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 648 + ExplicitWidth = 648 + inherited Image1: TImage + Left = 621 + ExplicitLeft = 625 + end + end + inherited TBXDock: TTBXDock + Width = 648 + ExplicitWidth = 648 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 648 + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 648 + end + end + inherited StatusBar: TJvStatusBar + Top = 437 + Width = 648 + ExplicitTop = 437 + ExplicitWidth = 648 + end + inherited EditorActionList: TActionList + inherited actPrevisualizar: TAction + OnUpdate = actPrevisualizarUpdate + end + inherited actImprimir: TAction + OnUpdate = actImprimirUpdate + end + inherited actRefrescar: TAction + OnUpdate = actRefrescarUpdate + end + inherited actAnterior: TAction + OnExecute = actAnteriorExecute + OnUpdate = actAnteriorUpdate + end + inherited actSiguiente: TAction + OnExecute = actSiguienteExecute + OnUpdate = actSiguienteUpdate + end + end + object dsDataTable: TDADataSource [7] + OnDataChange = dsDataTableDataChange + Left = 40 + Top = 88 + end +end diff --git a/Source/Base/GUIBase/uEditorDBBase.pas b/Source/Base/GUIBase/uEditorDBBase.pas new file mode 100644 index 00000000..527a1b57 --- /dev/null +++ b/Source/Base/GUIBase/uEditorDBBase.pas @@ -0,0 +1,257 @@ +unit uEditorDBBase; + +interface + +uses + Windows, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, DB, uDADataTable, uEditorBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, AppEvnts, uCustomView, uViewBase, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + pngimage, ExtCtrls, dxLayoutLookAndFeels, JvComponentBase, TBXStatusBars, + JvExComCtrls, JvStatusBar; + +type + IEditorDBBase = interface(IEditorBase) + ['{1F5B318F-F700-4C78-ABCE-E2329AD876B8}'] + end; + + TfEditorDBBase = class(TfEditorBase, IEditorDBBase) + dsDataTable: TDADataSource; + procedure actAnteriorExecute(Sender: TObject); + procedure actSiguienteExecute(Sender: TObject); + procedure actAnteriorUpdate(Sender: TObject); + procedure actSiguienteUpdate(Sender: TObject); + procedure actRefrescarUpdate(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); virtual; + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actPrevisualizarUpdate(Sender: TObject); + procedure actImprimirUpdate(Sender: TObject); + procedure actGuardarUpdate(Sender: TObject); + procedure actGuardarCerrarUpdate(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + protected + function HayDatos: Boolean; + function GetModified: Boolean; override; + procedure RefrescarInterno; override; + procedure CancelarCambiosInterno; override; + end; + +implementation + +uses + uDataTableUtils, uBizInformesAware, + uDAInterfaces, cxControls, uCustomEditor; + +{$R *.dfm} + +procedure TfEditorDBBase.actAnteriorExecute(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if (not ModifiedQuery) then + Exit; + + dsDataTable.DataTable.Prior; + end; +end; + +procedure TfEditorDBBase.actSiguienteExecute(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if (not ModifiedQuery) then + Exit; + + dsDataTable.DataTable.Next; + end; +end; + +procedure TfEditorDBBase.actAnteriorUpdate(Sender: TObject); +begin + inherited; + if HayDatos then + (Sender as TAction).Enabled := not dsDataTable.DataTable.BOF + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actSiguienteUpdate(Sender: TObject); +begin + inherited; + if HayDatos then + (Sender as TAction).Enabled := not dsDataTable.DataTable.EOF + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.CancelarCambiosInterno; +var + dtDetails : TList; + i : integer; + ABookmark : TBookmark; +begin + inherited; + + if Assigned(dsDataTable.DataTable) then + begin + ABookmark := dsDataTable.DataTable.GetBookMark; + dsDataTable.DataTable.DisableControls; +// dsDataTable.DataTable.DisableEventHandlers; <- No descomentar + + ShowHourglassCursor; + { No lo pongo en try..finally para ver posibles errores } + //try + dsDataTable.DataTable.Cancel; + + dtDetails := dsDataTable.DataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + begin + (TDADataTable(dtDetails.Items[i])).Cancel; + end; + + dsDataTable.DataTable.CancelUpdates; + + { Comprobar si el bookmark no es vlido cuando estamos cancelando la + insercin de una fila nueva. + CUIDADO!! Si no es vlido salta una excepcin. NO devuelve false!!!} + try + if (Assigned(ABookmark)) and + (dsDataTable.DataTable.Dataset.BookmarkValid(ABookmark)) then + dsDataTable.DataTable.GotoBookmark(ABookmark); + except + end; + + //finally + dsDataTable.DataTable.EnableControls; + dsDataTable.DataTable.FreeBookmark(ABookmark); +// dsDataTable.DataTable.EnableEventHandlers; <- No descomentar + HideHourglassCursor + //end; + end; +end; + +procedure TfEditorDBBase.dsDataTableDataChange(Sender: TObject; Field: TField); +begin + inherited; + ActualizarEstadoEditor; +end; + +procedure TfEditorDBBase.actRefrescarUpdate(Sender: TObject); +begin + inherited; + if HayDatos then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.Fetching) and + (not dsDataTable.DataTable.Opening) and + (not dsDataTable.DataTable.Closing) and + (dsDataTable.DataTable.State <> dsInsert) + else + (Sender as TAction).Enabled := False; + + //MODO CONSULTAR ITEM + if (Sender as TAction).Enabled + and Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := not dsDataTable.DataTable.ReadOnly; +end; + +function TfEditorDBBase.GetModified: Boolean; +begin + if ReadOnly then + Result := False + else + Result := DataTableModified(dsDataTable.DataTable) or inherited GetModified; +end; + +function TfEditorDBBase.HayDatos: Boolean; +begin + Result := Assigned(dsDataTable.DataTable) and (dsDataTable.DataTable.State <> dsInactive) + and (not dsDataTable.DataTable.IsEmpty); +end; + +procedure TfEditorDBBase.RefrescarInterno; +var + ABookmark : TBookmark; +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if (dsDataTable.DataTable.IsEmpty) or (not ModifiedQuery) then + Exit; // No continuar con el refresco + + ABookmark := dsDataTable.DataTable.GetBookMark; + dsDataTable.DataTable.DisableControls; //<- No descomentar + + ShowHourglassCursor; + try + dsDataTable.DataTable.Refresh; + + if dsDataTable.DataTable.Dataset.BookmarkValid(ABookmark) then + dsDataTable.DataTable.GotoBookmark(ABookmark); + finally + dsDataTable.DataTable.FreeBookmark(ABookmark); + dsDataTable.DataTable.EnableControls; //<- No descomentar + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorDBBase.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + { Para resetear el estado de la tabla en el caso de hacer un insert + sin meter ningn dato. } + if Assigned(dsDataTable.DataTable) and (not Modified) then + dsDataTable.DataTable.Cancel; + inherited; +end; + +procedure TfEditorDBBase.actEliminarUpdate(Sender: TObject); +begin + inherited; + if (Sender as TAction).Enabled then + (Sender as TAction).Enabled := HayDatos and (dsDataTable.DataTable.State <> dsInsert) +end; + +procedure TfEditorDBBase.actGuardarCerrarUpdate(Sender: TObject); +begin + inherited; + if (Sender as TAction).Enabled then + (Sender as TAction).Enabled := HayDatos; +end; + +procedure TfEditorDBBase.actGuardarUpdate(Sender: TObject); +begin + inherited; + if (Sender as TAction).Enabled then + (Sender as TAction).Enabled := HayDatos; +end; + +procedure TfEditorDBBase.actModificarUpdate(Sender: TObject); +begin + inherited; + if (Sender as TAction).Enabled then + (Sender as TAction).Enabled := HayDatos; +end; + +procedure TfEditorDBBase.actPrevisualizarUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := HayDatos; +end; + +procedure TfEditorDBBase.actImprimirUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := HayDatos; +end; + +initialization + RegisterClass(TfEditorDBBase); + +finalization + UnRegisterClass(TfEditorDBBase); + +end. diff --git a/Source/Base/GUIBase/uEditorDBItem.dfm b/Source/Base/GUIBase/uEditorDBItem.dfm new file mode 100644 index 00000000..1b4fa877 --- /dev/null +++ b/Source/Base/GUIBase/uEditorDBItem.dfm @@ -0,0 +1,103 @@ +inherited fEditorDBItem: TfEditorDBItem + Left = 450 + Top = 321 + Caption = 'fEditorDBItem' + ClientHeight = 461 + ClientWidth = 652 + ExplicitWidth = 660 + ExplicitHeight = 495 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 652 + ExplicitWidth = 652 + inherited Image1: TImage + Left = 625 + ExplicitLeft = 627 + ExplicitHeight = 19 + end + end + inherited TBXDock: TTBXDock + Width = 652 + ExplicitWidth = 652 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 605 + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 652 + inherited TBXSubmenuItem1: TTBXSubmenuItem + Visible = False + end + end + end + object pgPaginas: TPageControl [2] + Left = 0 + Top = 76 + Width = 652 + Height = 366 + ActivePage = pagGeneral + Align = alClient + TabOrder = 2 + object pagGeneral: TTabSheet + Caption = 'General' + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 0 + ExplicitHeight = 0 + end + end + inherited StatusBar: TJvStatusBar + Top = 442 + Width = 652 + Panels = < + item + Width = 200 + Control = imgStatus + end> + ExplicitTop = 442 + ExplicitWidth = 652 + object imgStatus: TImage + Left = 3 + Top = 3 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000001E24944415478DAA5932B93DB3014858F99 + 59C46A669599456561166B59DD5F50C342E717C461652B58A8658182810A0BAB + C35C26B394C92C8BDC6BB99BCD63A7339DB547638D1EDF3DE7488EF0C627BA1D + 70466896303FE352747B9DA78B62D77B677DEBA0AC342C663F9D77F0473F2E7F + 7F0718DAA2EE9C5BA58B125DD320150204024BF85A6DC44A4A097FF27004ACEB + BABB071C6B8B98E588057AEF31630C3835D4FC6EF9DDE76221D0EC1B789A33C6 + F491327EC009449D5AC90455A3969598BD93E87F5BF85613802A6A01216F011B + 3FB06416AA8F80823F224DC8DF8D82CE3394A5DE0921F271F39881D99A750084 + 3882020F9158C85891F7029405D26CCAC0C52579364BCEF9C3B86E54E19CFB10 + 996D337CFE389F027802BA760D465567F1D837002FC0E875270E91C988677CE0 + 0987B5B6A71DEC0C38FCEA820A9EA5B0FB43E0896C8EF2DB12D6A8CBB02B3A89 + 07022CA9AFCE80FEE9EFF469FA3CDB7A0500B23190FC3016E9AD1DBECA1C87B6 + 0B210A5260ECA4402E5E5500BA4C15E5A02680B143F1293F57F7972AE85B55D7 + 80AAAA6A02ACD40FF5854EC3447A4380220FBEC70D52CC5F32A0FE2D806EDF28 + 1F5AEB202052DA0E65915FF97E51D113A0BE02D009D4EEE856D49D4254DA0C7A + 63465FCF88A0E4C2EF5D06FFFC1BFFF7F903DDDC21F8890148C2000000004945 + 4E44AE426082} + Transparent = True + end + end + inherited EditorActionList: TActionList + Top = 112 + inherited actEliminar: TAction + ShortCut = 0 + end + end + inherited dsDataTable: TDADataSource + Left = 48 + Top = 112 + end +end diff --git a/Source/Base/GUIBase/uEditorDBItem.pas b/Source/Base/GUIBase/uEditorDBItem.pas new file mode 100644 index 00000000..1e689d94 --- /dev/null +++ b/Source/Base/GUIBase/uEditorDBItem.pas @@ -0,0 +1,93 @@ +unit uEditorDBItem; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorItem, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + StdCtrls, uDAScriptingProvider, uDACDSDataTable, AppEvnts, uCustomView, + uViewBase, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, pngimage, ExtCtrls, JvComponentBase, dxLayoutLookAndFeels, + JvExComCtrls, JvStatusBar; + +type + IEditorDBItem = interface(IEditorDBBase) + ['{497AE4CE-D061-4F75-A29A-320F8565FF54}'] + end; + + TfEditorDBItem = class(TfEditorDBBase, IEditorDBItem) + pgPaginas: TPageControl; + pagGeneral: TTabSheet; + imgStatus: TImage; + protected + procedure EliminarInterno; override; + procedure PrevisualizarInterno; override; + procedure ImprimirInterno; override; + procedure ActualizarEstadoEditor; override; + end; + +implementation + +uses + uBizInformesAware, uEditorBase, uDialogUtils; + +{$R *.dfm} + +procedure TfEditorDBItem.ActualizarEstadoEditor; +begin + inherited; + if HayDatos then + begin + if (Self.Modified) and (dsDataTable.DataTable.State <> dsInsert) then + begin + StatusBar.Panels[0].Text := ' Se han producido cambios'; + imgStatus.Visible := True; + end + else begin + imgStatus.Visible := False; + StatusBar.Panels[0].Text := ''; + end + end; +end; + +procedure TfEditorDBItem.EliminarInterno; +begin + inherited; + actCerrar.Execute; +end; + +procedure TfEditorDBItem.ImprimirInterno; +begin + inherited; + if Modified then + begin + if (ShowConfirmMessage('Se han producido cambios', 'Se han producido cambios y no se puede imprimir hasta que no se guarden.' + #10#13 + + 'Desea guardarlos ahora?') = IDYES) then + actGuardar.Execute + else + ShowInfoMessage('Recuerde guardar los cambios si quiere previsualizar o imprimir.'); + end; +end; + +procedure TfEditorDBItem.PrevisualizarInterno; +begin + inherited; + if Modified then + begin + if (ShowConfirmMessage('Se han producido cambios', 'Se han producido cambios y no se puede previsualizar hasta que no se guarden.' + #10#13 + + 'Desea guardarlos ahora?') = IDYES) then + actGuardar.Execute + else + ShowInfoMessage('Recuerde guardar los cambios si quiere previsualizar o imprimir.'); + end; +end; + +initialization + RegisterClass(TfEditorDBItem); + +finalization + UnRegisterClass(TfEditorDBItem); + +end. diff --git a/Source/Base/GUIBase/uEditorGridBase.dfm b/Source/Base/GUIBase/uEditorGridBase.dfm new file mode 100644 index 00000000..23d50433 --- /dev/null +++ b/Source/Base/GUIBase/uEditorGridBase.dfm @@ -0,0 +1,1566 @@ +inherited fEditorGridBase: TfEditorGridBase + Left = 441 + Top = 354 + Caption = 'fEditorGridBase' + ClientHeight = 444 + ClientWidth = 543 + ExplicitWidth = 551 + ExplicitHeight = 478 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 0 + Width = 543 + ExplicitTop = 0 + ExplicitWidth = 543 + inherited Image1: TImage + Left = 516 + ExplicitLeft = 518 + end + end + inherited TBXDock: TTBXDock + Top = 27 + Width = 543 + Height = 75 + ExplicitTop = 27 + ExplicitWidth = 543 + ExplicitHeight = 75 + inherited tbxMain: TTBXToolbar + DockPos = 0 + DragHandleStyle = dhDouble + TabOrder = 1 + ExplicitWidth = 457 + inherited TBXItem29: TTBXItem + Visible = False + end + inherited TBXItem27: TTBXItem + Visible = False + end + object TBXSeparatorItem6: TTBXSeparatorItem [6] + end + object TBXItem7: TTBXItem [7] + Action = actDuplicar + DisplayMode = nbdmImageAndText + end + inherited TBXItem24: TTBXItem [10] + end + inherited TBXItem3: TTBXItem [11] + end + inherited TBXSeparatorItem10: TTBXSeparatorItem [12] + end + inherited TBXItem26: TTBXItem [13] + Visible = False + end + inherited TBXSeparatorItem2: TTBXSeparatorItem [14] + Visible = True + end + inherited TBXItem25: TTBXItem + Visible = False + end + inherited TBXSeparatorItem11: TTBXSeparatorItem + Visible = False + end + object TBXItem36: TTBXItem [18] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + inherited TBXItem28: TTBXItem + Visible = False + end + end + object tbxFiltro: TTBXToolbar [1] + Left = 0 + Top = 49 + Align = alRight + CloseButton = False + DefaultDock = TBXDock + DockMode = dmCannotFloatOrChangeDocks + DockPos = 0 + DockRow = 2 + DragHandleStyle = dhDouble + Images = SmallImages + ParentShowHint = False + Resizable = False + ShowHint = True + ShrinkMode = tbsmNone + TabOrder = 0 + object TBXLabelItem1: TTBXLabelItem + Caption = 'Filtrar:' + end + object tbxEditFiltro: TTBXEditItem + EditWidth = 200 + ImageIndex = 10 + EditorFontSettings.Italic = tsTrue + ExtendedAccept = True + Images = SmallImages + ShowImage = True + OnChange = tbxEditFiltroChange + end + object TBXItem34: TTBXItem + Action = actQuitarFiltro + end + object TBXItem37: TTBXItem + Action = actFiltrar + end + end + inherited tbxMenu: TTBXToolbar + TabOrder = 2 + Visible = False + ExplicitWidth = 543 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem30: TTBXItem + Visible = False + end + inherited TBXSeparatorItem15: TTBXSeparatorItem + Visible = False + end + object TBXItem33: TTBXItem [7] + Action = actDuplicar + end + object TBXSeparatorItem14: TTBXSeparatorItem [8] + end + inherited TBXItem21: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem5: TTBXSubmenuItem + Visible = False + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + inherited TBXSubmenuItem6: TTBXSubmenuItem + object TBXItem35: TTBXItem [0] + Action = actAnchoAuto + end + object TBXSeparatorItem16: TTBXSeparatorItem [1] + end + end + end + object TBXTMain2: TTBXToolbar + Left = 337 + Top = 49 + Caption = 'tbxMain' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = 334 + DockRow = 2 + DragHandleStyle = dhDouble + Images = SmallImages + ParentShowHint = False + ShowHint = True + TabOrder = 3 + Visible = False + end + end + inherited StatusBar: TJvStatusBar + Top = 425 + Width = 543 + ExplicitTop = 425 + ExplicitWidth = 543 + end + inherited EditorActionList: TActionList + Left = 64 + Top = 152 + inherited actNuevo: TAction + OnUpdate = actNuevoUpdate + end + inherited actGuardarCerrar: TAction + Enabled = False + end + inherited actGuardar: TAction + Enabled = False + end + inherited actPrevisualizar: TAction + Visible = False + end + inherited actImprimir: TAction + Visible = False + end + inherited actCerrar: TAction + Enabled = False + end + inherited actAnterior: TAction + Enabled = False + end + inherited actSiguiente: TAction + Enabled = False + end + inherited actCancelarCambios: TAction + Enabled = False + end + inherited actDuplicar: TAction + OnUpdate = actDuplicarUpdate + end + object actQuitarFiltro: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltroExecute + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 21 + OnExecute = actAnchoAutoExecute + end + object actFiltrar: TAction + Category = 'Buscar' + Caption = 'Filtrar m'#225's..' + OnExecute = actFiltrarExecute + OnUpdate = actFiltrarUpdate + end + end + inherited SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Left = 403 + Top = 128 + Bitmap = {} + end + inherited LargeImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315 + 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F + 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499 + B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9 + A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6 + EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4 + 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2 + 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696 + F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0 + CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A + C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138 + 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1 + B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008 + 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42 + F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3 + 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329 + 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9 + 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59 + 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429 + BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6 + 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5 + C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315 + 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422 + C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61 + C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F + 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E + A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76 + 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA + 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8 + 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735 + F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175 + 682F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000032A4944415478DA + BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1 + 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C + 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D + 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC + 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4 + EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F + 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55 + 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0 + AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C + AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80 + F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D + ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213 + 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43 + 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95 + 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F + F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020 + C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48 + FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C + C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2 + E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147 + E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603 + A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D + 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD + AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A + 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4 + B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022C4944415478DA + 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF + 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2 + 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0 + 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1 + 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141 + 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06 + D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022 + 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020 + 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679 + 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8 + F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907 + 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F + 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8 + FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE + 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC + 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430 + 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4 + 02140B6805009C1383EFACA508270000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA + B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989 + 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E + 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4 + 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2 + E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4 + 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA + BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04 + 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096 + 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F + 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935 + 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588 + D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130 + EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7 + 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D + 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D + 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43 + 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA + 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1 + 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9 + 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E + 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422 + BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438 + 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413 + A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239 + 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831 + 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA + 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170 + C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832 + 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C + 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D + 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37 + 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22 + F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36 + 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71 + 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381 + BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355 + 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D + 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C + 4A0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA + B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B + 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828 + 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736 + B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE + A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56 + 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15 + 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C + 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0 + D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E + A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C + EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A + 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2 + BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC + 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E + 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F + BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08 + 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83 + D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683 + 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868 + 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12 + C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3 + 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E + 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3 + 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446 + FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119 + 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C + 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1 + DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45 + 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826 + BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240 + A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C + A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32 + C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C + 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300 + 00000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000027F4944415478DA + 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9 + 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67 + F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970 + 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D + 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F + E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100 + 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21 + 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA + 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B + C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62 + F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF + 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F + C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4 + 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D + 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486 + C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19 + 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4 + 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB + 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5 + 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2 + FA0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000037C4944415478DA + B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36 + 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94 + 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393 + 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F + 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784 + FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2 + E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4 + CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124 + 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB + 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7 + C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1 + 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72 + 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24 + C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3 + 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE + 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255 + 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B + 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB + B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022 + F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833 + B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F + E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989 + 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C + 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C + E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E + 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8 + 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99 + 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA + 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731 + 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67 + E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D + 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72 + 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3 + D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965 + 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF + C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8 + CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880 + AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F + 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31 + 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6 + A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621 + DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5 + 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9 + F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2 + 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066 + 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24 + 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621 + 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA + B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058 + D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60 + 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F + EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1 + B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE + 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6 + CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71 + 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C + 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12 + 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E + 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59 + 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED + 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8 + 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D + CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182 + D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382 + 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A + B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3 + 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5 + 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6 + 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE + 426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000029E4944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12 + 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD + D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA + 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287 + CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341 + 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14 + 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511 + 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B + E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC + DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6 + 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10 + E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84 + EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17 + AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02 + 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187 + 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B + 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090 + 0000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA + ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589 + F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435 + F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF + CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B + 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D + 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD + 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1 + A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE + 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075 + F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2 + 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF + A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C + D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892 + 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806 + 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F + EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E + 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3 + 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5 + DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C + A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA + F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196 + 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E + 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC + BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D + 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68 + 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986 + F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000 + 49454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003784944415478DA + B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61 + AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A + BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39 + 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A + 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965 + 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4 + 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0 + E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63 + 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1 + 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A + B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36 + FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424 + 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45 + DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1 + 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50 + 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC + 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46 + FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0 + 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4 + 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F + 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B + 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2 + D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA + 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F + 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3 + EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92 + 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F + 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945 + 4E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA + BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93 + 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88 + 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C + 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004 + A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F + 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47 + E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA + 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F + 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE + 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A + B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0 + 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06 + 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027 + 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7 + 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F + 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090 + B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE + AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927 + E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627 + 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA + 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD + E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4 + E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779 + 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82 + 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9 + 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C + 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3 + 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE + 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85 + 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C + 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000 + 000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA + 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E + 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18 + D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767 + F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B + 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8 + C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB + B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A + 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD + 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0 + 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6 + 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C + 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418 + 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06 + 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E + 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2 + 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402 + 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F + 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440 + 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA + 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698 + 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080 + 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0 + 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47 + 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC + 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4 + 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74 + D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4 + 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766 + 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05 + F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8 + 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8 + FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125 + 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B + FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42 + 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9 + 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67 + E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF + 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6 + 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F + 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322 + 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303 + 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51 + 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549 + 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3 + 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4 + FE66E507F40000000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA + 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3 + F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958 + 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77 + F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC + AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8 + 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0 + ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA + A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6 + E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99 + 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193 + 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1 + 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068 + BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13 + C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76 + E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96 + 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF + 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF + 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B + C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500 + 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723 + C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B + 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426 + 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B + 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808 + A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9 + 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587 + EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5 + DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3 + 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F + 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D + F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D + 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641 + 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8 + A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515 + E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3 + 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3 + 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A + 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8 + 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6 + 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58 + AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195 + 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB + 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4 + 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C + 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88 + 2F15D20000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002814944415478DA + 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF + 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3 + EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A + 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC + 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395 + E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1 + 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517 + 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1 + 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F + 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138 + BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A + 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605 + 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A + 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3 + 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5 + 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F + C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450 + 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2 + 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07 + CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85 + 5838D40000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026D4944415478DA + B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806 + 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775 + ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C + F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB + 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB + 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3 + E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A + 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D + 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7 + 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B + 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3 + 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4 + D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922 + C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C + 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556 + 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F + 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9 + CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69 + 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0 + 3F84F988A8E02F75743575B8E251160000000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000004124944415478DA + ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983 + 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10 + 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A + 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070 + 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB + A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4 + 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6 + 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289 + 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494 + E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B + 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F + BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26 + 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD + 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A + 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0 + D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57 + 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1 + 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117 + BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C + 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260 + E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D + B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94 + F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40 + D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6 + D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB + 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763 + D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23 + 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593 + BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27 + 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF + 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC + 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A + 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001B74944415478DA + B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434 + BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31 + 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47 + 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60 + F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B + 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284 + C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D + 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4 + 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C + B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5 + D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3 + 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555 + 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE + F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E + 44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Left = 435 + Top = 128 + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage + OnSavePlacement = JvFormStorageSavePlacement + OnRestorePlacement = JvFormStorageRestorePlacement + Left = 400 + Top = 160 + end + inherited dsDataTable: TDADataSource + Left = 32 + Top = 112 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage + Left = 432 + Top = 160 + end + object GridPopupMenu: TPopupMenu + Images = SmallImages + Left = 64 + Top = 112 + object Modificar1: TMenuItem + Action = actModificar + end + object Duplicar1: TMenuItem + Action = actDuplicar + end + object Eliminar1: TMenuItem + Action = actEliminar + end + object N1: TMenuItem + Caption = '-' + end + object Nuevo1: TMenuItem + Action = actNuevo + end + object N2: TMenuItem + Caption = '-' + end + object Previsualizar1: TMenuItem + Action = actPrevisualizar + end + object Imprimir1: TMenuItem + Action = actImprimir + end + object N3: TMenuItem + Caption = '-' + end + object Actualizar1: TMenuItem + Action = actRefrescar + end + end +end diff --git a/Source/Base/GUIBase/uEditorGridBase.pas b/Source/Base/GUIBase/uEditorGridBase.pas new file mode 100644 index 00000000..f76b7d86 --- /dev/null +++ b/Source/Base/GUIBase/uEditorGridBase.pas @@ -0,0 +1,319 @@ +{*******************************************************} +{ } +{ Administracin de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorGridBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, ActnList, TB2Dock, TB2Toolbar, TBX, TB2Item, + ImgList, PngImageList, StdActns, TB2ExtItems, TBXExtItems, uViewGridBase, + uEditorDBBase, DB, uDADataTable, Menus, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, AppEvnts, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, + JvComponentBase, dxLayoutLookAndFeels, TBXStatusBars, JvExComCtrls, + JvStatusBar; + +type + IEditorGridBase = interface(IEditorDBBase) + ['{CB8CDE00-B225-4A1D-9A5C-EC6FBE2C854B}'] + + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + end; + + TfEditorGridBase = class(TfEditorDBBase, IEditorGridBase) + tbxEditFiltro: TTBXEditItem; + tbxFiltro: TTBXToolbar; + GridPopupMenu: TPopupMenu; + Modificar1: TMenuItem; + Eliminar1: TMenuItem; + N1: TMenuItem; + Nuevo1: TMenuItem; + TBXLabelItem1: TTBXLabelItem; + actQuitarFiltro: TAction; + N2: TMenuItem; + Previsualizar1: TMenuItem; + Imprimir1: TMenuItem; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem33: TTBXItem; + N3: TMenuItem; + Actualizar1: TMenuItem; + TBXItem34: TTBXItem; + actAnchoAuto: TAction; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem35: TTBXItem; + TBXItem36: TTBXItem; + TBXSeparatorItem6: TTBXSeparatorItem; + TBXItem7: TTBXItem; + actFiltrar: TAction; + TBXItem37: TTBXItem; + TBXTMain2: TTBXToolbar; + procedure tbxEditFiltroChange(Sender: TObject; const Text: String); + procedure FormShow(Sender: TObject); override; + procedure actQuitarFiltroExecute(Sender: TObject); + procedure actDuplicarUpdate(Sender: TObject); + procedure JvFormStorageSavePlacement(Sender: TObject); + procedure JvFormStorageRestorePlacement(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actNuevoUpdate(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actRefrescarUpdate(Sender: TObject); + procedure actFiltrarExecute(Sender: TObject); + procedure actFiltrarUpdate(Sender: TObject); + protected + FViewGrid : IViewGridBase; + procedure SetViewGrid(const Value : IViewGridBase); virtual; + function GetViewGrid: IViewGridBase; + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + + procedure PrevisualizarInterno; override; + procedure ConfPaginaInterno; override; + procedure ImprimirInterno; override; + procedure RefrescarInterno; override; + public + property ViewGrid: IViewGridBase read GetViewGrid write SetViewGrid; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + + constructor Create(AOwner : TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uDataModuleBase, uCustomEditor, cxGridTableView, cxControls; + +{$R *.dfm} + +{ +********************************* TfEditorGridBase ***************************** +} +destructor TfEditorGridBase.Destroy; +begin + FViewGrid := NIL; + inherited; +end; + +function TfEditorGridBase.GetMultiSelect: Boolean; +begin + Result := False; + if Assigned(ViewGrid) then + Result := ViewGrid.MultiSelect; +end; + +function TfEditorGridBase.GetViewGrid: IViewGridBase; +begin + Result := FViewGrid; +end; + +procedure TfEditorGridBase.ImprimirInterno; +begin + inherited; + ViewGrid.Print; +end; + +procedure TfEditorGridBase.SetMultiSelect(AValue: Boolean); +begin + if Assigned(ViewGrid) then + ViewGrid.MultiSelect := AValue; +end; + +procedure TfEditorGridBase.SetViewGrid(const Value: IViewGridBase); +begin + FViewGrid := Value; + if Assigned(FViewGrid) then + begin + FViewGrid.PopupMenu := GridPopupMenu; + FViewGrid.OnDblClick := actModificar.OnExecute; + end; +end; + +procedure TfEditorGridBase.tbxEditFiltroChange(Sender: TObject; const Text: String); +begin + if Assigned(ViewGrid) then + begin + if Length(Text) > 0 then + ViewGrid.Filter := Text + else + actQuitarFiltro.Execute; + end; +end; + +procedure TfEditorGridBase.FormShow(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.ShowEmbedded(Self); + + +end; + +procedure TfEditorGridBase.actEliminarUpdate(Sender: TObject); +begin + inherited; + if HayDatos and Assigned(ViewGrid) then + (Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes) + and not ViewGrid.IsEmpty + and ViewGrid.esSeleccionCeldaDatos + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorGridBase.actFiltrarExecute(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.ViewFiltros.VerFiltros := not ViewGrid.ViewFiltros.VerFiltros; + + if Assigned(ViewGrid) then + if ViewGrid.ViewFiltros.VerFiltros then + begin + tbxEditFiltro.Visible := False; + TBXItem7.Visible := False; + end + else + begin + tbxEditFiltro.Text := ''; + tbxEditFiltro.Visible := True; + TBXItem7.Visible := True; + end; +end; + +procedure TfEditorGridBase.actFiltrarUpdate(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + (Sender as TAction).Checked := ViewGrid.ViewFiltros.VerFiltros; +end; + +procedure TfEditorGridBase.actModificarUpdate(Sender: TObject); +begin + inherited; + if HayDatos and Assigned(ViewGrid) then + (Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes) + and not ViewGrid.IsEmpty + and ViewGrid.esSeleccionCeldaDatos + else + (Sender as TAction).Enabled := False; + + //En el caso de que el grid sea multiseleccin solo se podr modificar si solo se tiene un elemento seleccionado + if (Sender as TAction).Enabled then + if MultiSelect and Assigned(ViewGrid) then + (Sender as TAction).Enabled := (ViewGrid.NumSeleccionados = 1); +end; + +procedure TfEditorGridBase.actNuevoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(dsDataTable.DataTable); +end; + +procedure TfEditorGridBase.actQuitarFiltroExecute(Sender: TObject); +begin + if Assigned(ViewGrid) then + begin + tbxEditFiltro.Text := ''; + ViewGrid.Filter := ''; + end; +end; + +procedure TfEditorGridBase.actRefrescarUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(dsDataTable.DataTable); +end; + +procedure TfEditorGridBase.ConfPaginaInterno; +begin + inherited; + ViewGrid.PrintSetup; +end; + +constructor TfEditorGridBase.Create(AOwner: TComponent); +begin + inherited; + actModificar.ShortCut := ShortCut(VK_RETURN, []); +end; + +procedure TfEditorGridBase.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.AjustarAncho; +end; + +procedure TfEditorGridBase.actDuplicarUpdate(Sender: TObject); +begin + inherited; + if HayDatos and Assigned(ViewGrid) then + (Sender as TAction).Enabled := not (dsDataTable.DataTable.State in dsEditModes) + and not ViewGrid.IsEmpty + and ViewGrid.esSeleccionCeldaDatos + else + (Sender as TAction).Enabled := False; + + //En el caso de que el grid sea multiseleccin solo se podr modificar si solo se tiene un elemento seleccionado + if (Sender as TAction).Enabled then + if MultiSelect and Assigned(ViewGrid) then + (Sender as TAction).Enabled := (ViewGrid.NumSeleccionados = 1); +end; + +procedure TfEditorGridBase.JvFormStorageSavePlacement(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.StoreToRegistry(JvAppRegistryStorage.Root); +end; + +procedure TfEditorGridBase.PrevisualizarInterno; +begin + inherited; + ViewGrid.Preview; +end; + +procedure TfEditorGridBase.RefrescarInterno; +var + FocusedRow, TopRow : Integer; +begin + TopRow := ViewGrid._FocusedView.Controller.TopRowIndex; + FocusedRow := ViewGrid._FocusedView.DataController.FocusedRowIndex; + ViewGrid._FocusedView.BeginUpdate; + ShowHourglassCursor; + + try + // inherited; <- No hacemos lo que hay en el padre + dsDataTable.DataTable.Refresh; + finally + ViewGrid._FocusedView.EndUpdate; + ViewGrid._FocusedView.DataController.FocusedRowIndex := FocusedRow; + ViewGrid._FocusedView.Controller.TopRowIndex := TopRow; + HideHourglassCursor; + end; +end; + +procedure TfEditorGridBase.JvFormStorageRestorePlacement(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.RestoreFromRegistry(JvAppRegistryStorage.Root); +end; + +initialization + RegisterClass(TfEditorGridBase); + +finalization + UnRegisterClass(TfEditorGridBase); + +end. + diff --git a/Source/Base/GUIBase/uEditorItem.dfm b/Source/Base/GUIBase/uEditorItem.dfm new file mode 100644 index 00000000..f9e9e425 --- /dev/null +++ b/Source/Base/GUIBase/uEditorItem.dfm @@ -0,0 +1,62 @@ +inherited fEditorItem: TfEditorItem + Left = 423 + Top = 273 + Caption = 'fEditorItem' + ClientHeight = 501 + ClientWidth = 678 + ExplicitWidth = 686 + ExplicitHeight = 535 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 678 + Visible = False + ExplicitWidth = 678 + inherited Image1: TImage + Left = 651 + ExplicitLeft = 651 + end + end + object pgPaginas: TPageControl [1] + Left = 0 + Top = 76 + Width = 678 + Height = 406 + ActivePage = pagGeneral + Align = alClient + TabOrder = 1 + object pagGeneral: TTabSheet + Caption = 'General' + end + end + inherited TBXDock: TTBXDock + Width = 678 + ExplicitWidth = 678 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 575 + inherited TBXItem5: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 678 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem10: TTBXItem + Visible = False + end + end + end + end + inherited StatusBar: TJvStatusBar + Top = 482 + Width = 678 + ExplicitTop = 482 + ExplicitWidth = 678 + end + inherited EditorActionList: TActionList + Top = 104 + inherited actEliminar: TAction + ShortCut = 0 + end + end +end diff --git a/Source/Base/GUIBase/uEditorItem.pas b/Source/Base/GUIBase/uEditorItem.pas new file mode 100644 index 00000000..d30ffdb6 --- /dev/null +++ b/Source/Base/GUIBase/uEditorItem.pas @@ -0,0 +1,39 @@ + +unit uEditorItem; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ActnList, JvExControls, JvComponent, + JvNavigationPane, ComCtrls, StdActns, TB2Dock, TB2Toolbar, TBX, TB2Item, + ImgList, PngImageList, JvFormAutoSize, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, pngimage, ExtCtrls, + JvComponentBase, dxLayoutLookAndFeels, TBXStatusBars, JvExComCtrls, + JvStatusBar; + +type + IEditorItem = interface(IEditorBase) + ['{F6A412D1-59AA-41D2-ADD5-C92687CD5387}'] + end; + + TfEditorItem = class(TfEditorBase, IEditorItem) + pagGeneral: TTabSheet; + pgPaginas: TPageControl; + end; + +implementation + +uses uDataModuleBase; + +{$R *.dfm} + +initialization + RegisterClass(TfEditorItem); + +finalization + + UnRegisterClass(TfEditorItem); + + +end. diff --git a/Source/Base/GUIBase/uEditorPSPreview.dfm b/Source/Base/GUIBase/uEditorPSPreview.dfm new file mode 100644 index 00000000..a3f98e6d --- /dev/null +++ b/Source/Base/GUIBase/uEditorPSPreview.dfm @@ -0,0 +1,15 @@ +object Form1: TForm1 + Left = 580 + Top = 506 + Width = 320 + Height = 240 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = True + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Source/Base/GUIBase/uEditorPSPreview.pas b/Source/Base/GUIBase/uEditorPSPreview.pas new file mode 100644 index 00000000..683b4027 --- /dev/null +++ b/Source/Base/GUIBase/uEditorPSPreview.pas @@ -0,0 +1,24 @@ +unit uEditorPSPreview; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, dxPSPrVw; + +type + TForm1 = class(TCustomdxPSPreviewWindow) + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/GUIBase/uEditorPreview.dfm b/Source/Base/GUIBase/uEditorPreview.dfm new file mode 100644 index 00000000..e33fe45a --- /dev/null +++ b/Source/Base/GUIBase/uEditorPreview.dfm @@ -0,0 +1,942 @@ +inherited fEditorPreview: TfEditorPreview + Left = 521 + Top = 340 + Caption = 'Previsualizar' + WindowState = wsMaximized + OnDestroy = FormDestroy + OnResize = FormResize + ExplicitWidth = 658 + ExplicitHeight = 492 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 75 + Visible = False + ExplicitTop = 75 + ExplicitWidth = 650 + inherited Image1: TImage + Left = 623 + ExplicitLeft = 623 + end + end + inherited TBXDock: TTBXDock + Height = 75 + ExplicitHeight = 75 + inherited tbxMain: TTBXToolbar + Top = 49 + DefaultDock = TBXDock + Visible = False + ExplicitTop = 49 + ExplicitWidth = 248 + end + inherited tbxMenu: TTBXToolbar + DockPos = -24 + inherited TBXSubmenuItem5: TTBXSubmenuItem + Visible = False + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + Visible = False + end + object TBXSubmenuItem2: TTBXSubmenuItem [3] + Caption = '&Ir' + object TBXItem47: TTBXItem + Action = actPrimeraPagina + Images = PreviewSmallImageList + end + object TBXItem43: TTBXItem + Action = actPaginaAnterior + Images = PreviewSmallImageList + end + object TBXItem44: TTBXItem + Action = actPaginaSiguiente + Images = PreviewSmallImageList + end + object TBXItem45: TTBXItem + Action = actUltimaPagina + Images = PreviewSmallImageList + end + end + inherited TBXSubmenuItem6: TTBXSubmenuItem + Caption = '&Zoom' + inherited TBXItem18: TTBXItem + Action = actZoomIn + Images = PreviewSmallImageList + end + object TBXItem38: TTBXItem + Action = actZoomOut + Images = PreviewSmallImageList + end + object TBXSeparatorItem19: TTBXSeparatorItem + end + object TBXItem48: TTBXItem + Action = actAnchoPagina + Images = PreviewSmallImageList + end + object TBXItem46: TTBXItem + Action = actTodaPagina + Images = PreviewSmallImageList + end + end + object TBXSubmenuItem3: TTBXSubmenuItem [5] + Caption = '&Herramientas' + object TBXItem49: TTBXItem + Action = actToolHand + Checked = True + GroupIndex = 1 + Images = PreviewSmallImageList + end + object TBXItem50: TTBXItem + Action = actToolZoom + GroupIndex = 1 + Images = PreviewSmallImageList + end + end + end + object TBXToolbar1: TTBXToolbar + Left = 0 + Top = 23 + Caption = 'TBXToolbar1' + DefaultDock = TBXDock + DragHandleStyle = dhNone + ParentShowHint = False + ShowHint = True + TabOrder = 2 + object TBXItem39: TTBXItem + Action = actImprimir + DisplayMode = nbdmImageAndText + Images = SmallImages + end + object TBXSeparatorItem18: TTBXSeparatorItem + end + object tbxMano: TTBXItem + Action = actToolHand + Checked = True + DisplayMode = nbdmImageAndText + GroupIndex = 1 + Images = PreviewSmallImageList + end + object tbxZoom: TTBXItem + Action = actToolZoom + DisplayMode = nbdmImageAndText + GroupIndex = 1 + Images = PreviewSmallImageList + end + object TBXItem42: TTBXItem + Action = actTodaPagina + Images = PreviewSmallImageList + end + object TBXItem41: TTBXItem + Action = actAnchoPagina + Images = PreviewSmallImageList + end + object TBXItem40: TTBXItem + Action = actZoomOut + Images = PreviewSmallImageList + end + object cbZoom: TTBXComboBoxItem + Caption = 'Zoom' + ReadOnly = True + OnItemClick = cbZoomItemClick + end + object TBXItem37: TTBXItem + Action = actZoomIn + Images = PreviewSmallImageList + end + object TBXSeparatorItem17: TTBXSeparatorItem + end + object TBXItem7: TTBXItem + Action = actPrimeraPagina + Images = PreviewSmallImageList + end + object TBXItem34: TTBXItem + Action = actPaginaAnterior + Images = PreviewSmallImageList + end + object TBXItem33: TTBXItem + Action = actPaginaSiguiente + Images = PreviewSmallImageList + end + object TBXItem36: TTBXItem + Action = actUltimaPagina + Images = PreviewSmallImageList + end + object TBXSeparatorItem16: TTBXSeparatorItem + end + object TBXItem35: TTBXItem + Action = actCerrar + end + end + end + inherited StatusBar: TJvStatusBar + Panels = < + item + Width = 150 + end + item + Width = 50 + end> + ExplicitWidth = 650 + end + inherited EditorActionList: TActionList + Top = 104 + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Enabled = False + Visible = False + end + inherited actGuardarCerrar: TAction + Enabled = False + Visible = False + end + inherited actGuardar: TAction + Enabled = False + Visible = False + end + inherited actEliminar: TAction + Enabled = False + Visible = False + end + inherited actConfPagina: TAction + Enabled = False + Visible = False + end + inherited actPrevisualizar: TAction + Enabled = False + Visible = False + end + inherited actDeshacer: TEditUndo + Enabled = False + Visible = False + end + inherited actCortar: TEditCut + Enabled = False + Visible = False + end + inherited actCopiar: TEditCopy + Enabled = False + Visible = False + end + inherited actPegar: TEditPaste + Enabled = False + Visible = False + end + inherited actSeleccionarTodo: TEditSelectAll + Enabled = False + Visible = False + end + inherited actLimpiar: TEditDelete + Enabled = False + Visible = False + end + inherited actBuscar: TAction + Enabled = False + Visible = False + end + inherited actCancelarCambios: TAction + Enabled = False + Visible = False + end + end + inherited SmallImages: TPngImageList + Left = 43 + Top = 104 + end + inherited LargeImages: TPngImageList + Left = 75 + Top = 104 + end + inherited JvFormStorage: TJvFormStorage + Left = 376 + Top = 136 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage + Left = 408 + Top = 136 + end + object PreviewActionList: TActionList + Images = PreviewSmallImageList + Left = 344 + Top = 104 + object actPrimeraPagina: TAction + Category = 'Ver' + Caption = 'Primera p'#225'gina' + ImageIndex = 0 + OnExecute = actPrimeraPaginaExecute + OnUpdate = actPrimeraPaginaUpdate + end + object actUltimaPagina: TAction + Category = 'Ver' + Caption = #218'ltima p'#225'gina' + ImageIndex = 3 + OnExecute = actUltimaPaginaExecute + OnUpdate = actUltimaPaginaUpdate + end + object actPaginaAnterior: TAction + Category = 'Ver' + Caption = 'P'#225'gina anterior' + ImageIndex = 1 + OnExecute = actPaginaAnteriorExecute + OnUpdate = actPaginaAnteriorUpdate + end + object actPaginaSiguiente: TAction + Category = 'Ver' + Caption = 'P'#225'gina siguiente' + ImageIndex = 2 + OnExecute = actPaginaSiguienteExecute + OnUpdate = actPaginaSiguienteUpdate + end + object actZoomIn: TAction + Category = 'Ver' + Caption = 'M'#225's zoom' + ImageIndex = 8 + OnExecute = actZoomInExecute + end + object actZoomOut: TAction + Category = 'Ver' + Caption = 'Menos zoom' + ImageIndex = 9 + OnExecute = actZoomOutExecute + end + object actTodaPagina: TAction + Category = 'Ver' + Caption = 'Toda la p'#225'gina' + GroupIndex = 1 + ImageIndex = 4 + OnExecute = actTodaPaginaExecute + end + object actAnchoPagina: TAction + Category = 'Ver' + Caption = 'Ancho de p'#225'gina' + GroupIndex = 1 + ImageIndex = 5 + OnExecute = actAnchoPaginaExecute + end + object actToolHand: TAction + Category = 'Herramientas' + AutoCheck = True + Caption = 'Mano' + GroupIndex = 1 + ImageIndex = 10 + OnExecute = actToolHandExecute + end + object actToolZoom: TAction + Category = 'Herramientas' + AutoCheck = True + Caption = 'Zoom' + GroupIndex = 1 + ImageIndex = 6 + OnExecute = actToolZoomExecute + end + end + object PreviewSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F14944415478DA + C5D2A10EC2301006E01B4F30893C39C59619EC70937B843D014C829B0339DEA0 + 1289638EC9C9E1160C9553A43882A0B45DC80223A30112CE346DFA7F697A6770 + CEE19B327E0A8C663BB5A14506348D8CE7CBDEB4E0DBB96D7402518010C5A405 + C8B0840F9B493710FA08F1E21190E1D0B7C5F9F23D10780849D200F7705102AC + D73A8023005203F73065A08022D3003C0B81AC08A0E3810C33115600156BAE01 + 3888E2A9F50BDC71CE07EE105875025A01B09268007D01A4CD1F48E4DAB3809D + 657F35001440963E764122C78BA50798268ACF6ACF8142F6F97B400E8B9AC617 + 93887EC23B814FEAFFC00D0E3CD3E1153EE1F30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A34944415478DA + 63FCFFFF3F032580912606303232628839545CF8BFBF5D9F912C03409A1F5C38 + C0707F7B3EE90680342778E83334744C24DD0098E60B371818366C20D10098E6 + 071F18C0065C384082018E9517C19A3F0035830D7800A44F90E802A3BC13FFF5 + 8CCC193EBCF8C8F0E00503C3871B0B480F039021FF9834183EFC00721E906100 + CC9077BF34C837006EC8AD13E41B00020A1E13FE136D002960E00D000045F48A + E13771044B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000A44944415478DA + 63FCFFFF3F03258091260638565EFC7FA0C380115D1C9B5A9C067CFAF683E1DC + 240B46B20D48F0D06798B4EE248A21241BF0E10703C3A26D0843483220C0419F + E1C10706860F407CE91AC410920C70B0506078F0829FE1C2838F0C1F1E3C009A + 7480E1FEF67C46A20D30D0506038708301AEF9C18E02D25C202020C070E1C207 + B86692C3800118800F6E2034936CC0830BA89A493680A294480A18780300CF22 + A8E18A4EF6A30000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000EC4944415478DA + C5D2A10EC2301405D0DB2FA012F9246E95C8E290FB04FE8049703890842F5850 + 2882021CB5185210044725B220086E74908D40C252020937A97BF7A479792C49 + 127C13F673A0D65E27AA27D8EBA06CE97C70D10D5821703A5FB01A54D92B1085 + 84A813633F6B16038D7A80C178F984A440A34EE8F43C017B0186D3079202A124 + F4FB1E402803180B58F736DB3B72038403620F405609E65082364758639CA440 + 42425608F1C803106E50ED9097CD3CBAFD40106132F10038E7D0DAE6E56C07A2 + EC80B90700B740B37B9433801CA07C00A39FCB19C039412B0FE0DD25A6709A42 + E0D3FC1FB8020318D0E1923D9C4B0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000017E4944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F01C58073FBBF113444C9EA0B58F38469B3192E2DBB8C69404E + AC07568DBFFE303058F86431D44EB264F8053460DACC25B80DA89FBC1FC38092 + 144706FBC02C86F27E03B00BE6CE594B9C0B4036FFFC0DA15D43B31872BB95C0 + 062C5FB09B341764C4383278476631A4754882BDB076F111FC2E40B619860363 + B318125A05187E026362CBD2B3A4B92036D491212C218B21B2999DE1C7DF6F0C + 7B565CC76E4072B807D8E6BFFF1036FFFE0BA16352B218021BFE82C3E0F0EA07 + 080372FC3218FEFEFFCD70E5D07F8698200F86FE79982E08F4756448CAC862F0 + AA05A5836F0CA7D6BD421890E6130F36F5DE311E86303F0F145B616C1048C9CC + 6270AE7A05567B71E3678401F19E6160C1A7274519E62DDD843725DA943F04BB + E0C696BF080322DC7CC151034BE390F4FE0DCA47D07FFEFF01D37F81F4EDAD8C + 0803829C5DC04993540033207F57D36EB2B2B35B9D6B0100103839527F8C36D7 + 0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001714944415478DA + 630C9B1C9ACFC0C03081813C50C00834E07F7E400E51AAFFFEFBC3F0EBDF7786 + 9F7F2138C9268F016EC099973B18F253E4198E6ED6C4A9D9CEFF36C3C4390F19 + 64793519264C9BCD7069D9658801D6962A60CDC40290216B171F411880CF05BF + A0CE05D17E619FC09A05D8C519E6CE598B6AC0B9FDDF8876018BEE6986E50B76 + 631A9013EB8153D3AF3F0C0C3F7F3330D807663124B40A607A016640FDE4FD58 + 0D2849716458B86607C3BCA59B18229BD919B62C3D4B9C0B603683E8E51B2006 + 0436FC65D8B3E23A692EC888716458BB05628057ED1786C3AB1F200CC8F1CB60 + B878F0178A0B906D86E1CD3B20063857BD6238B5EE15C280349F7886EB8799F1 + BA2036D49161C76E880136E50F192E6EFC8C3020DE338CE1DE311EB001D86CFE + FD1742EFDB0F31C0B4E43AC38D2D7F110644B8F9323C3D29CA901CEE81A219A6 + 11C63E7604628051F16586DB5B1911060439BB304C9BB984E88404033003F277 + 35ED262B3BBBD5B9160000C8E01B524AB937870000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C8086787B4DDF8FFEBD76F869F3F7F33EC6C37 + 824BA05B88D300BF86CBFFA3A35419A6CFB8C870A0CF9C7403DC2BCFFD8F88D4 + 66983DEB34C3B12936C41910DA7E13EE6C100E0D37609837E7180358EC0708FF + 6278B0218011A701FE8D57C0CEFEF68391E1DB770630FD1D88BF7C07E26F8C0C + 6B17AE6178B1230CB7011E55E7FF836C86B9C23FC48661C9BC5D609B7F40F187 + 0331B80D400E03DDF85DFF3D039D1856CEDFCCF0706320E981A816BEF5BF8BBF + 07D8D92F7786936E80BCFFFAFF30677F3C184B9C01E480616000007F3BB6E1E0 + 0AF3B40000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000714944415478DA + 63FCFFFF3F03258071D4002A1B10DA7E13CC01897DFDFA83E1DBB71F60FAFBB7 + 9F0C9F3F7F03E3F7FBA219F11A1013A500E77FFCCCC8F0EA1D23C38BB74C0CCF + 5E3131AC9E3397E1F7E914DC0684B4DDF88FCBE62F9FBF33FCF9F397E1FFF974 + DC060C7C208E1A401E0000EFE473E127272ED00000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C74944415478DA + A5934D4B5B411885CF5D9982288874EB0F306E5CBA9A646514E33536264AE456 + 5184528AE0424A043751FCC08228E24788894631D5D6D12C5C08EA2A74512AD8 + E4070822EE44A3E255CC386F24264AAE5978609881B9E739EFCCBC571142E03D + 5208A0284ADECDA08FB9E4342087EFF3C04124772F139C1790319614C3DCE456 + B116E2D0EF11CF051502FCD7BA54F37A98C3E951110E70783A5584FC3C2E0155 + 0501DB534C34389F92DD9A342E7068DD2A96FC1CD296AE44F3EE470C019B934C + A8AE6CF2E29C9C3B6C5809EEC0EEA84194C7E212506508D8F8C144735B36D93F + 232B69B72212DE43BDBD1A5BBFFFA1C7B7AF3C03424396C6B252F08714709184 + F94311E22DEDD9E4C0FC0E9CEE1AFC8AC4505B5789E876025F867300D1694BFA + CCA49FCB1C046AD5B2C94B813D383E3D25334B0576778FF17524074047C8944D + A2B3BB3C36E8BA8E3BFD363DEEEF74DC5C5F2179718ED89F4B7C1B7B0520AD8E + 3241C9F4B191F93A798943F90EBDE37900A4908F0987CB6A6826FD3D02FA260C + 0024FF201374DBF9CCA767B7F28E4CF07C7F03409AF532411796319391747266 + C2C77298651F240AFE4C53FD4CA4E48BA464FBD1CBD09ACCB29D132F5AF93D7A + 04D7A238F0C903C3480000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 371 + Top = 104 + Bitmap = {} + end + object PreviewLargeImageList: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001894944415478DA + 63FCFFFF3F032D01E3F0B4C0B1F2228AE0810E03467C8638545CF8BFBF5D1FAB + 1A9C1604D9E980D97D93A6303CD851C088CFF007170E30DCDF9E4F7D0B408683 + D481D450DD0298E1DF7EFE679831732A752D4036FCDBAF7F0C8BE64F27CF82AF + 3FFE33CC9C3515C50274C3BF03E9D5CB66906E81BB9936C3E7EFFF18962D9E0E + B7009BE1DF7FFD67D8B26626E91658E96A022DF8CFB079CD0CB005B80CFFF693 + 8161DF66322CD055D160F80C0CA2035B663228183830E032FC0B50CDA9DDB348 + B74041469DE1D3B77F0CE7F6CD06FBC028EFC47F1F6B430CC3BFFEF8C770F5F0 + 1CD22D10125265F8F0F53FC3BD9373E07100B2C44A4F1FC5F0AF400B1F9C9A4B + BA054CEC2A0C1F813E787B791E4A2A0259A222AF07371C64D19B4BF348B7E0F3 + 5F25A00FFE31FCBDB700231F802CE113D0061B0EC23F6ECD27DD82C79F1418FE + FE03721E2CC09A9341967C63D064F8018C0F901A922D78F04101C2C16101CC92 + 77BF34686701DC925B27C8B0005804C3003E0B4040C163C27F922CA02618B580 + 200000A0D9B0E00198A13A0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000FA4944415478DA + 63FCFFFF3F032D01E3F0B680919111AF66878A0BFFF7B7EBE35544B60520C31F + 5C38C0707F7B3EF52D00191E64A7C3D037690AF52D8019FEEDE77F861933A752 + D70264C3BFFDFAC7B068FE74EA59806EF87720BD7AD90CEA5880CDF0EFBFFE33 + 6C593393720B7019FEED2703C3BECD145AE0587911A7E15F7EFC6738B57B16E5 + 3E30CA3BF1DFC7DA10C3F0AF3FFE315C3D3C873A7100B2C44A4F1FC5F0AF400B + 1F9C9A4BBD5404B244455E0F6E38C8A23797E651371F802CE113D0061B0EC23F + 6ECDA77E4E0659F28D4193E107303E181E2CA04D5904B2E4DD2F0DDA5900B7E4 + D609DA5900020A1E13FE53640135C0A805040100D3AF21E00AC8E9BE00000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000012E4944415478DA + 63FCFFFF3F032D01E3F0B6C0B1F2E2FF031D068CF80C20E440BC16D8955FF9FF + F5C7578673932C705A429105B6400BF2037518DA979FC469094516D8945DFD5F + 10A40D66E3B284220BACCBAEFD2F0CD202B37FFDF9CFD0BBFA148625145A701D + 688126D8F0EFBFFE337CFBF99F61C18E33289650648155E98DFF39FEEA70C3C1 + F8D73F862D47CFC32DA1C802CBD29BFF533C55510CFFFE13E29B63972E822DA1 + C8028B929BFFA39D55300CFFF69381E1CB8FFF0CA776CF62B8BF3D9F916C0BCC + 4B6EFD0FB251C269F8831D0594F9C0ACF8F67F4F73799C86531C07A6C577FE3B + 1AC8E2349C620B4C8AEEFEB7D496C66938152CB8F75F5F450AA7E1145B605C74 + FFBF8A8C044EC329B6C0A8F0C1FFF73736E2349C620B0C0B1FFEBF30418176F5 + 0135C0A80504010058FB49E08BBA20470000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001C24944415478DA + 63FCFFFF3F032D01E3F0B4C0B1F2E2FF031D068CF834DA965D46D178A85307AB + 7AAC16D8955FF9FFF5C7578673932C705A02B220D44113CCEE9B3485E1FEF67C + E22DB0055A901FA8C3D0BEFC244E4B28B2C0A6ECEAFF82206D301B9725145960 + 5D76ED7F61901698FDEBCF7F86DED5A7302CA1D082EB400B34C1867FFFF59FE1 + DBCFFF0C0B769C41B10466C1D71FFF1966CE9A4A9A0556A537FEE7F8ABC30D07 + E35FFF18B61C3D0FB7046481978506C3E7EFFF18962D9E4E9A0596A537FFA778 + AAA218FEFD27C437C72E5D045B02B2C0565F0D68C17F86CD6B6690668145C9CD + FFD1CE2A18867FFBC9C0F0051824A776CF6290D5736630505365F80CE41FD832 + 93340BCC4B6EFD0FB251C269F8831D05601F28CBA9307CFAF68FE1DCBED9A459 + 60567CFBBFA7B93C4EC36171202AA2C4F0E1EB7F867B27E790668169F19DFF8E + 06B2380D8759C0CAA9C8F011E883B797E791668149D1DDFF96DAD2380D8759F0 + EDBF3CD007FF18FEDE5B40AA05F7FEEBAB48E1341C66C1B32FB20C7FFF01390F + 48B4C0B8E8FE7F1519099C86C32C78FC4916C221D502A3C207FFDFDFD888D370 + 8A2D302C7CF8FFC2040582F5C1E34B7BE17C922CA02618B5802000000BFCA8E0 + E6ADB53E0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002344944415478DA + 63FCFFFF3F032D0123C882F02961F940F6042A9B5DB03267D5449805FFF30372 + C832E51FC35F863FFF7E31FCFEF713887F41D9BF18526C0A19DEBF7ACF489105 + 7FFE430C86190AA3A74C5FC87069D965FC169CDBFF8D24CB642C5EC32D993173 + 397116E4C47AE035F4EFBFFF0CBFFFFC65B0F2CB63A89C680CF7C1DCD96B29B7 + 0066F89C957B18E62DDDC450DAAF0BF7C1C2B99B89B7A07EF27E9C9614275932 + 2C5A77006C4141AF3ADC07CBE6EF24DF073097FFFAFD87E1F7EFBF0CCB371F06 + 5B90D3AD08F7C1AA85FBA9E383CC48638635DB8F812D48ED9060F8FD1F62C1C6 + C52748F701BACB21ECBF0C9BF69C045B90D02E04CF0FDB969EA78E0FA2FD7418 + 761D3A0BB620A695079ED9762FBF8ADF0250EEBCB0FF27D8825F409722BB18CE + 868AEF3F7E016C4178332B3C0EF6AFBC8DDB0258D6BF72F03F435AA42B43EBF4 + 43387D10E8AAC670E4F465B005418DFFE1417464F523EC1620972B370FB33124 + 8638E174394CFCD4856B600BFCEA7FC283E8E4DA179816E40664A2145AF78EF2 + 30C404D8E3351CC43E7FF526D802F79AF7607D20FD17367CC2B420D32F19A544 + 7C745C8821CCDB06AFE120F6959B77C0163855BD84177C5736FDC0B420C93B12 + A5447C794A9A21D0CD9261FDAEE30C8400C802DB8A4770BD37B7FCC3B420D633 + 18A5D87D7B4611AC915860597607ACF7DFFFBF0CB7B732625A10E9EE8BE20314 + 1AADDCC7C506190E02582D087175A78AE1382D087076045714D402E816E4EF6A + DA4DD54ADFADCE1551E9D31200008EE53CFED5D704CB0000000049454E44AE42 + 6082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003154944415478DA + B5956D48536114C7CFC89022883E288415547E48F243651451425A6A929361A2 + 0E13D14553985AA411944A5A4804622AE9AC25CBDCD0125F4B526CD87C2F75E8 + 544C83B23EE45829E6667AEFEEEDDE3377756D6B1BD98167CFB37BEEF9FFCE39 + CF81CBA3691A783C1ED8B300F1043D28F5B3EF64ED50390D9A14877ED4667F62 + 4B633298FF45EB9D1FB579B8EFF7CF71A8CFBE33D8DF0931A20E7BEE2B3592DA + 0716009D2190709EF43BDE902EF48562E5B45544F12D1DFAD65B5CC401C8CA96 + 425BFD4E20A8152099C5EE974E5D8539DD1CCF066011D7FDF400EF1D24279428 + 914177B39FD99FE08BCFBECC52603018F15C505803F5B55B51BCB44C0E238A51 + 5BC049FE04C88B4428CE9A716909F4FA1F60342E81EC5987154037E7012B0401 + 8B8B065CEC595AF91A140A0ACAA54AFB00D658C8FD7C3127AEFF6E0634B60E73 + 80E4A85D306FF0E4C4170D06A8AC56A1385B81EC519D7DC090CA5C6E5AE16748 + BB1C0125152D56FD7E98B91764EA3D78B1164B8A0F42F1A7B907711A57F6F580 + 5CD6EC182049388781BCC352F3A80D8BED4E1045D1B029A002CFF36F13813499 + 20242E0BC4F77C40C1B4CA29C002B10760C54913059EC71E73E2CA66353CA96E + 02518117D4CA55AE011C65CE8A13A4094892427182D95FB47623E0E2DD6DD058 + D5E71C905BA202572C5578940199A0A1BD0F01B1F99BE155F5B0FB15B0D912A6 + D5AC194182A902AB612B61CE2D6F061010759B8676E5987B007BE224D722F36A + 530F22203277195435531BD7A278BE3FDE87AA578380F0EC05E87A3EE35A05AE + 646EB96CF5BB11049CBDA987FEBA6FB68034412A6854CB1CC01D7176927A87C6 + 1010786306340D0BB680D44811683B6904B041F9659D2EB52832D817C7F4FDC8 + 04024E5C9F066DD32F5B40F279214C756D811461A85B9913ABEF69C63F20E068 + E6384CB650B68084F00BF0A9673B2445075B055314E5549C7DAE9D9C46C0916B + A330F592670B1086F1E16B9F1724084E637071D5804B2D0A3ABE1B77A780E890 + 30981DF001213FD02AB3BF5D36C5C45ACC29407026083F141B657F0232DAF2DA + 8BFE5D76CD427342D63EFAFFD37E031AD161FE86E3B8C60000000049454E44AE + 426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001324944415478DA + 63FCFFFF3F032D0123DD2C606464C4A9C8A5EF22862BF614E9E3D480EC68A22D + C8F05765F8FDE72F10FF63888B5ECEC0702183BA16247B2B810DFF03B424297E + 15F52D887357001B0EB2243D790DF52D887296051B0E0AA69CF4F5D4B720D45E + 1A6CF89FBF7F190AB23651DF82006B09B0E1205F94E66D21DD02D7FE4B783384 + 8F85283C88AA8AB633B8C459E254BBBB508F11AB05C8491116A1B06081B1C172 + 28FCBF0CBF7E0331880DA4174F3ECBF0FF7C3A760B909322398683D82B675CC0 + 6D01725224C770107BFD9CCBB82DD8B3E838F6480686B7A52637DCF0DEC683F8 + A20BBB05845291892A27DCE5935A8F503F99EA2BB2C1836546D771EA5BA025CB + 0C0FE7797DA7A86F818A04034A52A4BA057222A84991EA1648F2FF42498A54B7 + 002309936A01ADC0D0B700000ADFCFE01EDA3C000000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000007C4944415478DA + 63FCFFFF3F032D01E3A805A3168C5A80B0C0B5FF12D56CDA5DA8C788D5829C20 + 751485BFFFFC65F8F1F30FC38F5FBF19BE83E89F501ACAFFF6E317C3B7EFBF21 + F40F087D68CD3D86FFE7D3095B408EE13F7EFD6138B5E911610BC8351C04F05A + B067D171AAC401560B6805462D18B560D4023A5800007B57E2D1072B1BE80000 + 000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002E84944415478DA + A5957D48144118C69F2B29B3FA23222C02598AA48F3B4A304A839C120C925022 + 4AA2F2B3B313FB80A0C20E333F52FC2348C24AC49490D4C414394D4D4F33112B + C1F0233090C9D0142BA920AFDA73DAD975E5923BDDB5178679776EEFF9CD3CF3 + CEAC8131061E0683010B457126392175D699C7CC186B6BB9BBF7544D595727A0 + 373A21D238D8DF83CE4EDA27014CFF0D5067BD7C198CD3D3C0C9984870404707 + 057FF6F242DFDCD5E805CCCEFA5517C5A93805D0DE4E117F4EC9E7AE4617E071 + 2E615167668520C1E4BCAD8DE26C929237355124E7B41A160528CD21CCD59658 + B392DBED1489C94ADED048B1CA0758B254B12BFABABD5C33E0D12DC2DCD9D2DC + 4C61B9A0E4F5CF284E4707E3F3F8A86C9704306906487BC03CD992743102EF07 + DEC2564761B61CC4C8872154D7505CB96337680614A513E6C9164B72388606FB + 516B93C0E6FD181B19465535C5B53C1D80C234C23CD992981486E1A141D4D44A + D6252816555651A4DCD5012848254C8B2DB171BB31F96502159514D67C378092 + AC03EA356094DA6C5DDFB712A6DAF2E923C5BED07088E21F74B5352260AF620B + 1FF73706E0C7B749943DA148BDE71E201F289EAB1B6A4E6F35E4A710C66DE1EF + BD68A8C19E9030389D22DEBC6C812930184E0936D0F31A9BB79AE4F1E29277B8 + F1C03D40AE163554CFF975C06D718AA23C732EA2E4A22CAEF4A23CFECB3185D2 + 328A9B051E5610142418FD77ECFA07A2568B1671DE2AAAC69151E86193F98686 + 84085021FC37AD3397DBD4149EDABE23AB689E2AE29E87860AD8B27DA76E7187 + E3276CCF45643F5CA04CF3AE1276284C80DF267F5DE27CBCBE05C829D1700E6E + 5F262CFCB080F51BFD348B8F8E39F05BF4764877D10A4D072DF71261114704AC + 59BB6E41711E9DDDC0065F44E9BA4DB3CF1376345280CFCAD5F38AABB397D240 + 09D0AF19C023C342D8F163829C7B12EFEEF586691BA2F8A773511FFD34B3B492 + 085F7C9D1897055DC3555C2D6FDD001ED678C2F8C99E96FEC2783F93BB8ACF05 + FC0592430CFE3F77C7A70000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 403 + Top = 104 + Bitmap = {} + end + object frxReport1: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator] + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 38658.858023541660000000 + ReportOptions.LastChange = 38658.858023541660000000 + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 16 + Top = 200 + Datasets = <> + Variables = <> + Style = <> + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 16 + Top = 240 + end + object frxOLEObject1: TfrxOLEObject + Left = 48 + Top = 240 + end + object frxChartObject1: TfrxChartObject + Left = 16 + Top = 272 + end + object frxRichObject1: TfrxRichObject + Left = 48 + Top = 272 + end + object frxCrossObject1: TfrxCrossObject + Left = 80 + Top = 240 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 80 + Top = 272 + end + object frxGradientObject1: TfrxGradientObject + Left = 16 + Top = 304 + end + object frxDotMatrixExport1: TfrxDotMatrixExport + UseFileCache = True + ShowProgress = True + EscModel = 0 + GraphicFrames = False + SaveToFile = False + UseIniSettings = True + Left = 48 + Top = 304 + end + object frxDialogControls1: TfrxDialogControls + Left = 80 + Top = 304 + end + object frxTIFFExport1: TfrxTIFFExport + ShowDialog = False + UseFileCache = True + ShowProgress = True + Monochrome = True + Left = 144 + Top = 240 + end + object frxPDFExport1: TfrxPDFExport + ShowDialog = False + UseFileCache = True + ShowProgress = True + PrintOptimized = False + Outline = False + Author = 'FastReport'#174 + Subject = 'FastReport'#174' PDF export' + Background = False + Creator = 'FastReport'#174' (http://www.fast-report.com)' + HTMLTags = False + Left = 144 + Top = 280 + end + object frxBMPExport1: TfrxBMPExport + ShowDialog = False + UseFileCache = True + ShowProgress = True + Monochrome = True + Left = 144 + Top = 320 + end +end diff --git a/Source/Base/GUIBase/uEditorPreview.pas b/Source/Base/GUIBase/uEditorPreview.pas new file mode 100644 index 00000000..48b75e08 --- /dev/null +++ b/Source/Base/GUIBase/uEditorPreview.pas @@ -0,0 +1,354 @@ +unit uEditorPreview; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, JvExControls, JvComponent, JvNavigationPane, + TB2ExtItems, TBXExtItems, uViewPreview, frxClass, ComCtrls, frxPreview, + JvFormAutoSize, JvAppStorage, JvAppRegistryStorage, JvFormPlacement, + pngimage, frxExportImage, frxExportPDF, frxDCtrl, frxDMPExport, + frxGradient, frxChBox, frxCross, frxRich, frxChart, frxOLE, frxBarcode, + ExtCtrls, JvComponentBase, TBXStatusBars, JvExComCtrls, JvStatusBar; + +type + IEditorPreview = interface(IEditorBase) + ['{43934C3E-2776-4F9E-9292-FB0D7DE2E4DA}'] + function GetReport: TfrxReport; + property Report: TfrxReport read GetReport; + procedure LoadFromStream(AStream : TStream); + function ExportToFile : String; + procedure Print; + procedure Preview; + end; + + TfEditorPreview = class(TfEditorBase, IEditorPreview) + TBXToolbar1: TTBXToolbar; + TBXItem33: TTBXItem; + TBXItem34: TTBXItem; + TBXItem39: TTBXItem; + TBXSeparatorItem16: TTBXSeparatorItem; + cbZoom: TTBXComboBoxItem; + PreviewActionList: TActionList; + PreviewSmallImageList: TPngImageList; + PreviewLargeImageList: TPngImageList; + actPrimeraPagina: TAction; + actUltimaPagina: TAction; + actPaginaAnterior: TAction; + actPaginaSiguiente: TAction; + TBXItem36: TTBXItem; + actZoomIn: TAction; + actZoomOut: TAction; + actTodaPagina: TAction; + actAnchoPagina: TAction; + TBXSeparatorItem17: TTBXSeparatorItem; + TBXItem37: TTBXItem; + TBXItem40: TTBXItem; + TBXItem41: TTBXItem; + TBXItem42: TTBXItem; + frxReport1: TfrxReport; + actToolHand: TAction; + actToolZoom: TAction; + tbxZoom: TTBXItem; + tbxMano: TTBXItem; + TBXSeparatorItem18: TTBXSeparatorItem; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxChartObject1: TfrxChartObject; + frxRichObject1: TfrxRichObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxDotMatrixExport1: TfrxDotMatrixExport; + frxDialogControls1: TfrxDialogControls; + frxTIFFExport1: TfrxTIFFExport; + frxPDFExport1: TfrxPDFExport; + frxBMPExport1: TfrxBMPExport; + TBXItem38: TTBXItem; + TBXSeparatorItem19: TTBXSeparatorItem; + TBXItem43: TTBXItem; + TBXItem44: TTBXItem; + TBXItem45: TTBXItem; + TBXItem46: TTBXItem; + TBXItem47: TTBXItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem48: TTBXItem; + TBXSubmenuItem3: TTBXSubmenuItem; + TBXItem49: TTBXItem; + TBXItem50: TTBXItem; + TBXItem7: TTBXItem; + TBXItem35: TTBXItem; + procedure FormShow(Sender: TObject); + procedure actPrimeraPaginaExecute(Sender: TObject); + procedure actUltimaPaginaExecute(Sender: TObject); + procedure actPaginaAnteriorExecute(Sender: TObject); + procedure actPaginaSiguienteExecute(Sender: TObject); + procedure actZoomInExecute(Sender: TObject); + procedure actTodaPaginaExecute(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure FormResize(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actAnchoPaginaExecute(Sender: TObject); + procedure actZoomOutExecute(Sender: TObject); + procedure cbZoomItemClick(Sender: TObject); + procedure actToolHandExecute(Sender: TObject); + procedure actToolZoomExecute(Sender: TObject); + procedure actPaginaSiguienteUpdate(Sender: TObject); + procedure actUltimaPaginaUpdate(Sender: TObject); + procedure actPrimeraPaginaUpdate(Sender: TObject); + procedure actPaginaAnteriorUpdate(Sender: TObject); + private + FPreview : TfrViewPreview; + procedure OnPageChanged(Sender: TfrxPreview; PageNo: Integer); + procedure UpdateZoom; + protected + function GetReport: TfrxReport; virtual; + public + constructor Create(AOwner: TComponent); override; + property Report: TfrxReport read GetReport; + procedure Print; + procedure Preview; + procedure LoadFromStream(AStream : TStream); + function ExportToFile : String; + end; + + +implementation + +uses + frxRes, frxUtils, frxPrinter, frxFormUtils, + uCustomEditor, uSistemaFunc; + +{$R *.dfm} + +{ TfEditorBase1 } + +function TfEditorPreview.GetReport: TfrxReport; +begin + Result := frxReport1; +end; + + +procedure TfEditorPreview.FormShow(Sender: TObject); +begin + inherited; + UpdateZoom; + actPrimeraPagina.Execute; + FPreview.ShowEmbedded(Self); + Report.ShowPreparedReport; + actAnchoPagina.Execute; +end; + +procedure TfEditorPreview.actPrimeraPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.First; +end; + +procedure TfEditorPreview.actPrimeraPaginaUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (FPreview.Preview.PageNo > 1); +end; + +procedure TfEditorPreview.actUltimaPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Last; +end; + +procedure TfEditorPreview.actUltimaPaginaUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (FPreview.Preview.PageNo < FPreview.Preview.PageCount); +end; + +procedure TfEditorPreview.actPaginaAnteriorExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Prior; +end; + +procedure TfEditorPreview.actPaginaAnteriorUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (FPreview.Preview.PageNo > 1); +end; + +procedure TfEditorPreview.actPaginaSiguienteExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Next; +end; + +procedure TfEditorPreview.actPaginaSiguienteUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (FPreview.Preview.PageNo < FPreview.Preview.PageCount); +end; + +procedure TfEditorPreview.actZoomInExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Zoom := FPreview.Preview.Zoom + 0.25; + UpdateZoom; +end; + +procedure TfEditorPreview.UpdateZoom; +begin + cbZoom.Text := IntToStr(Round(FPreview.Preview.Zoom * 100)) + '%'; +end; + +procedure TfEditorPreview.actTodaPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.ZoomMode := zmWholePage; + UpdateZoom; +end; + +procedure TfEditorPreview.FormDestroy(Sender: TObject); +begin + inherited; + FPreview.Free; +end; + +procedure TfEditorPreview.FormResize(Sender: TObject); +begin + inherited; + UpdateZoom; +end; + +procedure TfEditorPreview.actImprimirExecute(Sender: TObject); +begin + inherited; + Print; +end; + +procedure TfEditorPreview.actAnchoPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.ZoomMode := zmPageWidth; + UpdateZoom; +end; + +procedure TfEditorPreview.actZoomOutExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Zoom := FPreview.Preview.Zoom - 0.25; + UpdateZoom; +end; + +procedure TfEditorPreview.cbZoomItemClick(Sender: TObject); +var + s: String; +begin + FPreview.Preview.SetFocus; + + if cbZoom.ItemIndex = 6 then + actAnchoPagina.Execute + else if cbZoom.ItemIndex = 7 then + actTodaPagina.Execute + else + begin + s := cbZoom.Text; + + if Pos('%', s) <> 0 then + s[Pos('%', s)] := ' '; + while Pos(' ', s) <> 0 do + Delete(s, Pos(' ', s), 1); + + if s <> '' then + FPreview.Preview.Zoom := frxStrToFloat(s) / 100; + end; + + UpdateZoom; +end; + +procedure TfEditorPreview.actToolHandExecute(Sender: TObject); +begin + if tbxMano.Checked then + FPreview.Preview.Tool := ptHand +end; + +procedure TfEditorPreview.actToolZoomExecute(Sender: TObject); +begin + if tbxZoom.Checked then + FPreview.Preview.Tool := ptZoom; +end; + +procedure TfEditorPreview.OnPageChanged(Sender: TfrxPreview; + PageNo: Integer); +begin + StatusBar.Panels[0].Text := Format(frxResources.Get('clPageOf'), + [PageNo, Sender.PageCount]); +end; + +constructor TfEditorPreview.Create(AOwner: TComponent); +begin + inherited; + + with cbZoom.Strings do + begin + Clear; + Add('25%'); + Add('50%'); + Add('75%'); + Add('100%'); + Add('150%'); + Add('200%'); + Add(frxResources.Get('zmPageWidth')); + Add(frxResources.Get('zmWholePage')); + end; + + FPreview := TfrViewPreview.Create(Self); + Report.Preview := FPreview.Preview; + FPreview.Preview.OnPageChanged := OnPageChanged; +end; + +procedure TfEditorPreview.Preview; +begin + Self.ShowModal; +end; + +procedure TfEditorPreview.Print; +begin + if not frxPrinters.HasPhysicalPrinters then + frxErrorMsg(frxResources.Get('clNoPrinters')) + else + FPreview.Preview.Print; + Enabled := True; +end; + +function TfEditorPreview.ExportToFile: String; +var + AFile : String; +begin + Result := ''; + AFile := DarFicheroTIFFTemporal; + frxTIFFExport1.SeparateFiles := False; + frxTIFFExport1.DefaultPath := ExtractFilePath(AFile); + frxTIFFExport1.FileName := ExtractFileName(AFile); + try + if Report.Export(frxTIFFExport1) then + Result := AFile; + finally + frxTIFFExport1.DefaultPath := ''; + frxTIFFExport1.FileName := ''; + end; +end; + +procedure TfEditorPreview.LoadFromStream(AStream: TStream); +begin + Report.PreviewPages.LoadFromStream(AStream); +end; + + +initialization + RegisterClass(TfEditorPreview); + +finalization + UnRegisterClass(TfEditorPreview); + +end. + diff --git a/Source/Base/GUIBase/uEditorUtils.pas b/Source/Base/GUIBase/uEditorUtils.pas new file mode 100644 index 00000000..68b4b868 --- /dev/null +++ b/Source/Base/GUIBase/uEditorUtils.pas @@ -0,0 +1,108 @@ +unit uEditorUtils; + +interface + +uses + uEditorItem, uDADataTable, Controls; + +type + TFuncItemEditor = function(ABizObject : TDADataTableRules) : TModalResult; + TProcItemEditor = procedure(ABizObject : TDADataTableRules); + TFuncGetEditor = function : IEditorItem; + + TEditorType = (etItem, etItems, etSelectItems); + +procedure RegisterEditor(const IID : TGUID; const AFuncItemEditor : TFuncItemEditor; + const AType : TEditorType); + +function ShowEditor(const IID : TGUID; ABizObject : TDADataTableRules; + const AType : TEditorType) : TModalResult; + + +implementation + +uses + Dialogs, Classes, ComObj, SysUtils; + +var + FBizEditorsList : TList; + +type + PBizEditorsRec = ^TBizEditorsRec; + TBizEditorsRec = record + IID : String; + ItemEditor : TFuncItemEditor; + ItemsEditor : TFuncItemEditor; + SelectItemsEditor : TFuncItemEditor; + end; + + +function FindBizEditors(const IID : TGUID) : PBizEditorsRec; +var + P: PBizEditorsRec; + I: Integer; + AIID : String; +begin + Result := NIL; + AIID := GUIDToString(IID); + if FBizEditorsList <> nil then + for I := 0 to FBizEditorsList.Count-1 do + begin + P := FBizEditorsList[I]; + if (AIID = P^.IID) then + begin + Result := P; + Break; + end; + end; +end; + +procedure RegisterEditor(const IID : TGUID; const AFuncItemEditor : TFuncItemEditor; + const AType : TEditorType); +var + P: PBizEditorsRec; +begin + P := NIL; + if FBizEditorsList = nil then + FBizEditorsList := TList.Create; + + P := FindBizEditors(IID); + if not Assigned(P) then + New(P); + try + P^.IID := GUIDToString(IID); + case AType of + etItem : P^.ItemEditor := AFuncItemEditor; + etItems : P^.ItemsEditor := AFuncItemEditor; + etSelectItems : P^.SelectItemsEditor := AFuncItemEditor; + end; + FBizEditorsList.Insert(0, P); + except + on E: EConvertError do + ShowMessage(E.Message); + end; +end; + +function ShowEditor(const IID : TGUID; ABizObject : TDADataTableRules; + const AType : TEditorType) : TModalResult; +var + P: PBizEditorsRec; +begin + P := FindBizEditors(IID); + + if Assigned(P) then + case AType of + etItem : Result := P.ItemEditor(ABizObject); + etItems : Result := P.ItemsEditor(ABizObject); + etSelectItems : Result := P.SelectItemsEditor(ABizObject); + end; +end; + + +initialization + FBizEditorsList := TList.Create; + +finalization + FBizEditorsList.Free; + +end. diff --git a/Source/Base/GUIBase/uViewBarraSeleccion.dfm b/Source/Base/GUIBase/uViewBarraSeleccion.dfm new file mode 100644 index 00000000..80b9c732 --- /dev/null +++ b/Source/Base/GUIBase/uViewBarraSeleccion.dfm @@ -0,0 +1,65 @@ +inherited frViewBarraSeleccion: TfrViewBarraSeleccion + Width = 451 + Height = 49 + Align = alBottom + ExplicitWidth = 451 + ExplicitHeight = 49 + object JvFooter1: TJvFooter + Left = 0 + Top = 0 + Width = 451 + Height = 49 + Margins.Left = 5 + Margins.Right = 5 + Align = alClient + DesignSize = ( + 451 + 49) + object bSeleccionar: TJvFooterBtn + Left = 239 + Top = 10 + Width = 100 + Height = 29 + Action = actSeleccionar + Anchors = [akRight, akBottom] + Default = True + ModalResult = 1 + TabOrder = 0 + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'Tahoma' + HotTrackFont.Style = [] + ButtonIndex = 0 + SpaceInterval = 6 + end + object bCancelar: TJvFooterBtn + Left = 343 + Top = 10 + Width = 100 + Height = 28 + Action = actCancelar + Anchors = [akRight, akBottom] + Cancel = True + ModalResult = 2 + TabOrder = 1 + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'Tahoma' + HotTrackFont.Style = [] + ButtonIndex = 1 + SpaceInterval = 6 + end + end + object BarraSeleccionActionList: TActionList + Left = 12 + Top = 3 + object actSeleccionar: TAction + Caption = 'Seleccionar' + end + object actCancelar: TAction + Caption = 'Cancelar' + end + end +end diff --git a/Source/Base/GUIBase/uViewBarraSeleccion.pas b/Source/Base/GUIBase/uViewBarraSeleccion.pas new file mode 100644 index 00000000..01e7549e --- /dev/null +++ b/Source/Base/GUIBase/uViewBarraSeleccion.pas @@ -0,0 +1,28 @@ +unit uViewBarraSeleccion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, ActnList, ExtCtrls, JvExStdCtrls, JvButton, + JvCtrls, JvFooter, JvExExtCtrls, JvComponent, JvExtComponent; + +type + TfrViewBarraSeleccion = class(TfrViewBase) + JvFooter1: TJvFooter; + bSeleccionar: TJvFooterBtn; + bCancelar: TJvFooterBtn; + BarraSeleccionActionList: TActionList; + actSeleccionar: TAction; + actCancelar: TAction; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/GUIBase/uViewBase.dfm b/Source/Base/GUIBase/uViewBase.dfm new file mode 100644 index 00000000..17e1d504 --- /dev/null +++ b/Source/Base/GUIBase/uViewBase.dfm @@ -0,0 +1,14 @@ +object frViewBase: TfrViewBase + Left = 0 + Top = 0 + Width = 445 + Height = 291 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False +end diff --git a/Source/Base/GUIBase/uViewBase.pas b/Source/Base/GUIBase/uViewBase.pas new file mode 100644 index 00000000..a438e24f --- /dev/null +++ b/Source/Base/GUIBase/uViewBase.pas @@ -0,0 +1,56 @@ +unit uViewBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uGUIBase, uCustomView, JvComponent, JvFormAutoSize; + +type + IViewBase = interface(ICustomView) + ['{82FBDF28-9C5F-4922-952E-0E84D67FE4BB}'] + procedure Refresh; + end; + + TfrViewBase = class(TCustomView, IViewBase) + protected + procedure SetReadOnly(Value: Boolean); override; + + public + procedure Refresh; virtual; + end; + +implementation + +{$R *.dfm} + + +uses + cxDBEdit, cxControls, dxLayoutControl; + +{ TfrViewBase } + +procedure TfrViewBase.Refresh; +begin + // +end; + +procedure TfrViewBase.SetReadOnly(Value: Boolean); +var + i: integer; +begin + inherited; + + if ReadOnly then + for i:=0 to Self.ComponentCount-1 do + begin + If (Self.Components[i] Is TfrViewBase) then + (Self.Components[i] as TfrViewBase).ReadOnly := ReadOnly; + + If (Self.Components[i] Is TcxControl) + and (not (Self.Components[i] Is TdxLayoutControl)) then + (Self.Components[i] as TcxControl).Enabled := not ReadOnly; + end; +end; + +end. diff --git a/Source/Base/GUIBase/uViewDetallesBase.dfm b/Source/Base/GUIBase/uViewDetallesBase.dfm new file mode 100644 index 00000000..f27cde03 --- /dev/null +++ b/Source/Base/GUIBase/uViewDetallesBase.dfm @@ -0,0 +1,716 @@ +inherited frViewDetallesBase: TfrViewDetallesBase + Width = 451 + Height = 304 + Align = alClient + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitWidth = 451 + ExplicitHeight = 304 + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 451 + Height = 46 + AutoSize = True + ButtonWidth = 63 + Caption = 'ToolBar1' + EdgeInner = esNone + EdgeOuter = esNone + Flat = False + Images = ContenidoImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 0 + Transparent = True + Visible = False + object ToolButton1: TToolButton + Left = 0 + Top = 2 + Action = actAnadir + AutoSize = True + end + object ToolButton2: TToolButton + Left = 62 + Top = 2 + Action = actEliminar + AutoSize = True + end + object ToolButton3: TToolButton + Left = 129 + Top = 2 + Action = actSubir + AutoSize = True + end + object ToolButton4: TToolButton + Left = 184 + Top = 2 + Action = actBajar + AutoSize = True + end + object ToolButton14: TToolButton + Left = 240 + Top = 2 + Action = FontEdit1 + AutoSize = True + Wrap = True + end + object FontName: TJvFontComboBox + Left = 0 + Top = 24 + Width = 145 + Height = 22 + DroppedDownWidth = 145 + MaxMRUCount = 0 + FontName = 'Tahoma' + ItemIndex = 108 + Options = [foTrueTypeOnly, foNoOEMFonts, foScalableOnly, foWysiWyg] + Sorted = True + TabOrder = 2 + Visible = False + OnChange = FontNameChange + OnClick = FontNameChange + end + object FontSize: TEdit + Left = 145 + Top = 24 + Width = 26 + Height = 22 + Hint = 'Font Size|Select font size' + TabOrder = 1 + Text = '0' + Visible = False + OnChange = FontSizeChange + end + object UpDown1: TUpDown + Left = 171 + Top = 24 + Width = 16 + Height = 22 + Associate = FontSize + TabOrder = 0 + Visible = False + end + object ToolButton13: TToolButton + Left = 187 + Top = 24 + Width = 8 + Caption = 'ToolButton13' + ImageIndex = 10 + Style = tbsSeparator + end + object ToolButton6: TToolButton + Left = 195 + Top = 24 + Action = RichEditBold1 + AutoSize = True + end + object ToolButton7: TToolButton + Left = 229 + Top = 24 + Action = RichEditItalic1 + AutoSize = True + end + object ToolButton8: TToolButton + Left = 263 + Top = 24 + Action = RichEditUnderline1 + AutoSize = True + end + object ToolButton12: TToolButton + Left = 297 + Top = 24 + Width = 8 + Caption = 'ToolButton12' + ImageIndex = 10 + Style = tbsSeparator + end + object ToolButton9: TToolButton + Left = 305 + Top = 24 + Action = RichEditAlignLeft1 + AutoSize = True + end + object ToolButton10: TToolButton + Left = 339 + Top = 24 + Action = RichEditAlignCenter1 + AutoSize = True + end + object ToolButton11: TToolButton + Left = 373 + Top = 24 + Action = RichEditAlignRight1 + AutoSize = True + end + end + object cxGrid: TcxGrid + Left = 0 + Top = 72 + Width = 451 + Height = 232 + Align = alClient + TabOrder = 1 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + OnEditing = cxGridViewEditing + OnEditKeyDown = cxGridViewEditKeyDown + OnEditValueChanged = cxGridViewEditValueChanged + OnInitEdit = cxGridViewInitEdit + DataController.DataSource = DADataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.KeyFieldNames = 'ID' + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoFocusTopRowAfterSorting, dcoImmediatePost] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.AlwaysShowEditor = True + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.BestFitMaxRecordCount = 20 + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsCustomize.DataRowSizing = True + OptionsData.Appending = True + OptionsData.CancelOnExit = False + OptionsSelection.MultiSelect = True + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.Indicator = True + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + Styles.ContentEven = cxStyleEven + Styles.ContentOdd = cxStyleOdd + Styles.Inactive = cxStyleSelection + Styles.Selection = cxStyleSelection + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + object cxGridViewID: TcxGridDBColumn + DataBinding.FieldName = 'ID' + Visible = False + end + object cxGridViewPOSICION: TcxGridDBColumn + DataBinding.FieldName = 'POSICION' + Visible = False + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewTIPO: TcxGridDBColumn + Caption = 'Tipo' + DataBinding.FieldName = 'TIPO_DETALLE' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Items = <> + BestFitMaxWidth = 64 + Width = 56 + end + object cxGridViewDESCRIPCION: TcxGridDBColumn + Caption = 'Concepto' + DataBinding.FieldName = 'CONCEPTO' + PropertiesClassName = 'TcxRichEditProperties' + Width = 224 + end + object cxGridViewCANTIDAD: TcxGridDBColumn + Caption = 'Cantidad' + DataBinding.FieldName = 'CANTIDAD' + PropertiesClassName = 'TcxMaskEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 64 + HeaderAlignmentHorz = taRightJustify + Width = 130 + end + object cxGridViewIMPORTEUNIDAD: TcxGridDBColumn + Caption = 'Importe unidad' + DataBinding.FieldName = 'IMPORTE_UNIDAD' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 120 + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 130 + end + object cxGridViewIMPORTETOTAL: TcxGridDBColumn + Caption = 'Importe total' + DataBinding.FieldName = 'IMPORTE_TOTAL' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + BestFitMaxWidth = 120 + HeaderAlignmentHorz = taRightJustify + Options.Editing = False + Width = 130 + end + object cxGridViewVISIBLE: TcxGridDBColumn + Caption = #191'Visible?' + DataBinding.FieldName = 'VISIBLE' + PropertiesClassName = 'TcxCheckBoxProperties' + Properties.Alignment = taCenter + Properties.DisplayChecked = '1' + Properties.DisplayUnchecked = '0' + Properties.Glyph.Data = { + 92030000424D9203000000000000920100002800000020000000100000000100 + 08000000000000020000120B0000120B0000570000005700000000000000FFFF + FF0040384000703840008048500090586000C0606000A0505000804040006030 + 30009050500070404000A060600090606000A0707000B0808000C09090004030 + 3000E0B0B000B0909000FFF0F000FF787000E0787000C0686000FF9890009048 + 4000A0585000D0888000E0989000E0706000FF80700080484000A0686000FFA0 + 9000FF887000B060500070484000FFB0A000C0989000D0A8A000E0B8B000FF98 + 8000A0605000FFC0B000F0C0B00080686000F0D8D000B0908000E0C8B000E0D8 + D000FFE0C000FFF8F000F0E0C000FFF0D000FFF8E00020283000FEFEFE00FAFA + FA00F7F7F700F3F3F300F1F1F100F0F0F000EDEDED00EAEAEA00E7E7E700E6E6 + E600E3E3E300E0E0E000DADADA00D7D7D700D3D3D300D0D0D000CDCDCD00C9C9 + C900C6C6C600C4C4C400C3C3C300C0C0C000BEBEBE00BCBCBC00B9B9B900B7B7 + B700B3B3B300AEAEAE00ACACAC00A6A6A600FFFFFF0056565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656404040444C4C + 463D5656565656565656122830262D2D2F325656565644444444433E4145474A + 50463B404456101010102734181D061A242F35122656564646443A3F434A544C + 49493A3C4646560F0F10362C1507110A2320362E0F0F56564845394341535554 + 44473944484856560E13331C21023711161714260E0E5656564A3E403E38544A + 4344464B4B565656560D31122B01111A1E1B0F050556565656564E49423F4343 + 434A4E4E565656565656040C2925221E1E2A04045656565656565650504F4D4F + 50505056565656565656560B0B1F19080B0B0B56565656565656565652505151 + 505656565656565656565656090B03030B565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 5656565656565656565656565656565656565656565656565656565656565656 + 56565656565656565656565656565656565656565656} + Properties.GlyphCount = 2 + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Visible = False + FooterAlignmentHorz = taCenter + HeaderAlignmentHorz = taCenter + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object TBXDock1: TTBXDock + Left = 0 + Top = 46 + Width = 451 + Height = 26 + BackgroundOnToolbars = False + UseParentBackground = True + object TBXToolbar1: TTBXToolbar + Left = 0 + Top = 0 + Caption = 'TBXToolbar1' + DragHandleStyle = dhNone + Images = ContenidoImageList + TabOrder = 0 + object TBXItem1: TTBXItem + Action = actAnadir + DisplayMode = nbdmImageAndText + Images = ContenidoImageList + end + object TBXItem2: TTBXItem + Action = actEliminar + DisplayMode = nbdmImageAndText + Images = ContenidoImageList + end + object TBXSeparatorItem1: TTBXSeparatorItem + end + object TBXItem3: TTBXItem + Action = actSubir + DisplayMode = nbdmImageAndText + end + object TBXItem4: TTBXItem + Action = actBajar + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem2: TTBXSeparatorItem + end + object TBXItem5: TTBXItem + Action = RichEditBold1 + end + object TBXItem6: TTBXItem + Action = RichEditItalic1 + end + object TBXItem7: TTBXItem + Action = RichEditUnderline1 + end + object TBXSeparatorItem4: TTBXSeparatorItem + end + object TBXItem9: TTBXItem + Action = RichEditAlignLeft1 + end + object TBXItem10: TTBXItem + Action = RichEditAlignCenter1 + end + object TBXItem11: TTBXItem + Action = RichEditAlignRight1 + end + object TBXSeparatorItem3: TTBXSeparatorItem + end + object TBXItem8: TTBXItem + Action = FontEdit1 + end + object TBXSeparatorItem5: TTBXSeparatorItem + end + object TBXItem13: TTBXItem + Action = actAnchoAutomatico + DisplayMode = nbdmImageAndText + end + end + end + object ActionListContenido: TActionList + Images = ContenidoImageList + Left = 8 + Top = 104 + object actAnadir: TAction + Category = 'Operaciones' + Caption = 'A'#241'adir' + ImageIndex = 0 + ShortCut = 45 + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Category = 'Operaciones' + Caption = 'Eliminar' + ImageIndex = 1 + ShortCut = 16430 + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actSubir: TAction + Category = 'Operaciones' + Caption = 'Subir' + ImageIndex = 2 + OnExecute = actSubirExecute + OnUpdate = actSubirUpdate + end + object actBajar: TAction + Category = 'Operaciones' + Caption = 'Bajar' + ImageIndex = 3 + OnExecute = actBajarExecute + OnUpdate = actBajarUpdate + end + object RichEditBold1: TRichEditBold + Category = 'Format' + AutoCheck = True + Hint = 'Negrita' + ImageIndex = 4 + ShortCut = 16450 + end + object RichEditItalic1: TRichEditItalic + Category = 'Format' + AutoCheck = True + Hint = 'Cursiva' + ImageIndex = 5 + ShortCut = 16457 + end + object RichEditUnderline1: TRichEditUnderline + Category = 'Format' + AutoCheck = True + Hint = 'Subrayado' + ImageIndex = 6 + ShortCut = 16469 + end + object RichEditAlignLeft1: TRichEditAlignLeft + Category = 'Format' + AutoCheck = True + Hint = 'Alinear a la izquierda' + ImageIndex = 7 + end + object RichEditAlignCenter1: TRichEditAlignCenter + Category = 'Format' + AutoCheck = True + Hint = 'Center|Centers text between margins' + ImageIndex = 8 + end + object RichEditAlignRight1: TRichEditAlignRight + Category = 'Format' + AutoCheck = True + Hint = 'Align Right|Aligns text at the right indent' + ImageIndex = 9 + end + object FontEdit1: TFontEdit + Category = 'Dialog' + Dialog.Font.Charset = DEFAULT_CHARSET + Dialog.Font.Color = clWindowText + Dialog.Font.Height = -11 + Dialog.Font.Name = 'Tahoma' + Dialog.Font.Style = [] + Enabled = False + Hint = 'Formato de fuente' + ImageIndex = 10 + BeforeExecute = FontEdit1BeforeExecute + OnAccept = FontEdit1Accept + end + object RichEditAlignRight2: TRichEditAlignRight + Category = 'Format' + AutoCheck = True + Caption = 'Align &Right' + Hint = 'Align Right|Aligns text at the right indent' + ImageIndex = 11 + end + object actAnchoAutomatico: TAction + Category = 'Operaciones' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 11 + OnExecute = actAnchoAutomaticoExecute + OnUpdate = actAnchoAutomaticoUpdate + end + end + object DADataSource: TDADataSource + Left = 8 + Top = 136 + end + object ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000D04944415478DA + 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260 + 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5 + 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF + FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC + 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9 + F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260 + 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000006E4944415478DA + 63FCFFFF3F03258071D40006C6397A1214990036203925952CCD73E7CCC66100 + C85BBF7F32307CFDC4C0F0FD2B03C33710FD05487F46E0374F19E6FE964032E0 + CF6F840120CD200D5F3F43357E42F0416C90013FBFA119B0B099742FC00CA028 + 10073E1D0C7D030077CE5E397DD56C480000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000E14944415478DA + 63FCFFFF3F032580717019C0C8C88822E9D770F9FFA6065D1441740B711A00D2 + 1C1DA5CA307DC64586037DE68C241900D3FCF10B23C39123CF19AE5EBECF7076 + B623235106206BFEF899114C3FBAFB94E1C4D1AB0CB7567A33E235C0BFF1CAFF + 9F3F7F3380B0B7BF2158F3BB8F4C0C7B36EE60F8F9E317C30F207EB1238C91A0 + 17AC728EFC77F234076BFEF2E631C3C1BDE7191E6E0C24CE0B20609CBAFFBFB9 + A31DD0004606B6DF8F18766E3DC9F0726738F106E8C6EFFA6F68AC0617DFB8F6 + 30C3C783B1C41BA016BEF53FCCCF30FCF364326103C801C3C00000BEA5B3E15D + 7F64240000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580717019C0C8C808A643DA6E80057FFDFACDF0F327041FE833 + 074BA25B88D380982805869FBF18183E7E61645830EF34C3B12936C41BE0D770 + F97F74942A58F39123CF19AE5EBECF7076B623F106B8579EFB1F1CAACDF0F133 + 23C3E58BCF18CE9FBDC57079A11B6103FC1BAFFC87F9D9DBDF10EC8247779F32 + 9C387A95E1E78F5F0C3F80F8C58E3046BC2E70283AF91FA6F9DD472620666460 + FBFD8861E7D6930C2F77863312E505E3D4FDFFCD1DED3034131D0620A016BEF5 + BF85B5368A66920C000171F795FF91351334801C300C0C00007FBCB4E1E577C7 + 9A0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001984944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5360BD30046 + C399181A59989918A23C55181A328C1804F9D8C0069CBD7C07BB01C886FC3F9F + CEF00F28BF7AD75D86888ABD0CEC6CCC0C8F774430FCF9F38FE1E2F57B840DF8 + 7B2E0DACF8C7AF3F0CFC360BC006DCDF120676C1B5DB0F091BF0F3540AC3C3E7 + 9F19DAE79D6758B6FD2E4353A6114384BB22D0D0BF0CB7EE3F216C003288F254 + 66288BD765E0E56206BAE01FC3FDC7CFB01B00F233B3D12C30FBFDA138B0730F + 9C7ECE1056BE8FC1C954926172991958ECF9ABD79806803483FCCC6E36076CC0 + 8B3D5160C52031459FD560B10BCB7DC02E78F3EE2DAA01317E56F038E6B75908 + 567C6D6D1003273B33C396C38F18723B4F32B0B332311C99E70156F3F1D30754 + 03C2BDCC51342303666646066F1B1986EC5035065E6E16B0BA6FDF3EA31A10E4 + 6602762ACC1570F6EFBF503184DCBF7FFF197EFCF8826A809F9311C3A98BB748 + CA4C700340B971E28CA524E7C6FC8CE81800E35A4E592A9A5C6B000000004945 + 4E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001844944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5360BB7010B + 37DF6248A8DB0FE7CB4BF2325C5D1B0237E0ECE53BF80D0081C69967191A669C + 6188F35163985C61C5F0EF1FC4057FFEFC63B878FD1E6103744357335CB9F38E + 61CB240F066B0331B866107DEDF643FC067CFFF98781CB622E98FD745714032B + 0B235CF31F20BE75FF096E03FE01C5CE5D7FC3601ABD8E41535180E1E05C6F14 + CDBF81ECFB8F9F613700A419A478C9D65B0CC98D871862BC5518BAF24DE19A7F + 005D06623F7FF51AD30098669082CA49A71826AFB8CAD05D68CA10E2AC0009FD + DF7FA1B1F08FE1CDBBB7A806C4F859C1A3E8DDC79F0C0185BB182EDE7AC7B0BE + D799415B991F453388FEF8E903AA01E15EE6608993975F31B8656E4709D02D13 + 9D1964C438E19A41F8DBB7CFA80604B999C09D8F1C5DE83683F0BF7FFF197EFC + F8826A809F9311C3A98BB748CA4C700340B971E28CA524E7C6FC8CE818000A3C + 81590C9B58CC0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001854944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806100A3E14C140DFFCFA763887F3C12 + CF70ECEC0D86AAB65998067CFCF28B41C0763E98FDE6403C83303F07C33FA09A + B71F7E3088392D62B8BB259C81978B85E1ECE53BD80D40B60D643B48F39F3F10 + 67F358CD6778B52F1ACCBF78FD1E6103FE9E4B836B066141BB450CCF764582D9 + D76E3F246CC0CF532970CD202CE6B494E1E1B630A0A17F196EDD7F42D880B707 + E318981819C09ADF7DFCC9A011B886E1EEA66020FF1FC3FDC7CFB01B00F2B356 + D02A869B0F3E305424EA3364846A80BDD1B5F012C3D53BEF1966D558820D7CFE + EA35A601B000BBF5F00343CDD4D30C07CE3C07C70A1F372B838BB91443419426 + 90CD0276C19B776F510D88F1B382FB1539E0E0ECDFB0B080F03F7EFA806A40B8 + 97395882DF6621C1D47870B60BC3B76F9F510D08723321CA6610FEF7EF3FC38F + 1F5F500DF07332623875F1164999096E0028374E9CB194E4DC989F111D03002B + D67559EB1C43180000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F94944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5368B3803FE + 01D5FCF983D00CC2672FDFC134809B9B1BAF0B9EBE7803D60C32ECE2F57B845D + 80CD6618FFDAED87A4BB00062EDF78C870EBFE13DC2EC067F31F30FF1FC3FDC7 + CF487701C8E61F3FFF800D7AFEEA35A601E836FFFCF507C5F6DFBF612EFAC7F0 + E6DD5B540362FCAC18F8F978890A833D47AF327CFCF401D580702F7354DB70D8 + 0C93FBF6ED33AA01416E26446BFEF7EF3FC38F1F5F500DF07332623875F11651 + 5E8001B801A0DC3871C6529273637E46740C002BB66C59EAC44C620000000049 + 454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001004944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5368B3803FE + 01D5FCF983D00CC2672FDFC16D0037373756839EBE7803D60C32ECE2F57B845D + 80CD6618FFDAED879806E0B2191D5CBEF190E1D6FD27B85D80CFE63F60FE3F86 + FB8F9F613700A499978707A7CD3F7EFE011BF4FCD56B4C03D06DFEF9EB0F8AED + BF7FC35CF48FE1CDBBB7A806C4F85931F0F3F11215067B8E5E65F8F8E903AA01 + E15EE6A8B6E1B01926F7EDDB67540382DC4C88D6FCEFDF7F861F3FBEA01AE0E7 + 64C470EAE22DA2BC0003700340B971E28CA524E7C6FC8CE8180048E16F597BCE + 9D230000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000FC4944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4409201C89A8F9DBDC150D5368B3803FE + 01D5FCF983D00CC2672FDFC16D003737375E97DC79F09CE1E2F57B845D80CD66 + 18FFDAED87980610B219062EDF78C870EBFE13DC2EC067F31F30FF1FC3FDC7CF + B01B00D2CCCBC383D705C7CEDE6278FEEA35A601E836FFFCF507C5F6DFBF612E + FAC7F0E6DD5B540362FCAC18F8F978890A833D47AF327CFCF401D580702F7354 + DB70D80C93FBF6ED33AA01416E26446BFEF7EF3FC38F1F5F500DF07332623875 + F116515E8001B801A0DC3871C6529273637E46740C0021BE635977EAA72D0000 + 000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001CB4944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC480D580CAA3950C4B6E2C61789CFC18A7 + E663676F3054B5CDC234E0EFFFBF0C327364185E7C7BC17020E40083BDB43DC3 + 3FA09A3F7F109A41F8ECE53BD80D587B672D43CBA916860BAF2F3024682530CC + 759987A119C4BF78FD1E76031CD73A324CB09FC0E0B0C681E1CFBF3F0C8F129E + 32B0317280350ADA2D6278B62B12CCBE76FB21A60137DFDF64D058A481E2EFB9 + 4E0B188214C2C09A41E0E1B630A00BFE32DCBAFF04D380C243850C06A2060CB1 + 1A710C871E1F61705C6FC7E020E5C470A02D0C6CB394DB7286BB9B82812EF8C7 + 70FFF13354034CED04194C969B303C4B7DCEC0CDC40B76A6DA52258667536B19 + 562D92623017B16190F75AC57075B53F58EEF9ABD7A806347E886578F0E90183 + 3CAF02C3D5C89B0C69FB531896555B63A4830BCB7DC02E78F3EE2DAA01317E56 + 28A12CECB098E1F18E70440CFCFECBA01DBA91E1F4622F30FFE3A70FA806847B + 99A36886815B1B82E09A61E0E06C17866FDF3EA31A10E4668212DFC83643C410 + 72FFFEFD67F8F1E30BAA017E4E460CA72EDE222933C10D00E5C6893396929C1B + F333A26300FC1C815930D4A9C10000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end> + Left = 40 + Top = 112 + Bitmap = {} + end + object cxStyleRepository: TcxStyleRepository + Left = 8 + Top = 168 + object cxStyleEven: TcxStyle + end + object cxStyleOdd: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleSelection: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clHighlight + TextColor = clHighlightText + end + object cxStyle_IMPORTETOTAL: TcxStyle + AssignedValues = [svColor] + Color = clInactiveCaptionText + end + object cxStyle_SUBTOTAL: TcxStyle + AssignedValues = [svColor] + Color = cl3DLight + end + object cxStyle_TITULO: TcxStyle + AssignedValues = [svColor] + Color = clMenuBar + end + end +end diff --git a/Source/Base/GUIBase/uViewDetallesBase.pas b/Source/Base/GUIBase/uViewDetallesBase.pas new file mode 100644 index 00000000..90896a9f --- /dev/null +++ b/Source/Base/GUIBase/uViewDetallesBase.pas @@ -0,0 +1,746 @@ +unit uViewDetallesBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, ComCtrls, ToolWin, ActnList, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, + uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ImgList, + PngImageList, cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, + uGridUtils, uControllerDetallesBase, cxCurrencyEdit, ExtCtrls, Grids, DBGrids, StdCtrls, + ExtActns, StdActns, cxRichEdit, JvExStdCtrls, JvCombobox, JvColorCombo, + TB2Item, TBX, TB2Dock, TB2Toolbar; + +type + IViewDetallesBase = interface(IViewBase) + ['{852EB860-13B6-4355-A6B0-4542AB16896F}'] + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + + procedure SaveGridStatus; + procedure RestoreGridStatus; + + procedure BeginUpdate; + procedure EndUpdate; + + function IsEmpty : Boolean; + + function GetFocusedView : TcxGridDBTableView; + property _FocusedView : TcxGridDBTableView read GetFocusedView; + + function GetGrid : TcxGrid; + property _Grid : TcxGrid read GetGrid; + end; + + TfrViewDetallesBase = class(TfrViewBase, IViewDetallesBase) + ActionListContenido: TActionList; + DADataSource: TDADataSource; + actAnadir: TAction; + actEliminar: TAction; + actSubir: TAction; + actBajar: TAction; + ContenidoImageList: TPngImageList; + ToolBar1: TToolBar; + cxStyleRepository: TcxStyleRepository; + cxStyleEven: TcxStyle; + cxStyleOdd: TcxStyle; + cxStyleSelection: TcxStyle; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + ToolButton3: TToolButton; + ToolButton4: TToolButton; + cxGrid: TcxGrid; + cxGridView: TcxGridDBTableView; + cxGridViewID: TcxGridDBColumn; + cxGridViewPOSICION: TcxGridDBColumn; + cxGridViewTIPO: TcxGridDBColumn; + cxGridViewDESCRIPCION: TcxGridDBColumn; + cxGridViewCANTIDAD: TcxGridDBColumn; + cxGridViewIMPORTEUNIDAD: TcxGridDBColumn; + cxGridViewIMPORTETOTAL: TcxGridDBColumn; + cxGridViewVISIBLE: TcxGridDBColumn; + cxGridLevel: TcxGridLevel; + RichEditBold1: TRichEditBold; + RichEditItalic1: TRichEditItalic; + ToolButton6: TToolButton; + ToolButton7: TToolButton; + RichEditUnderline1: TRichEditUnderline; + RichEditAlignLeft1: TRichEditAlignLeft; + RichEditAlignRight1: TRichEditAlignRight; + RichEditAlignCenter1: TRichEditAlignCenter; + ToolButton8: TToolButton; + ToolButton9: TToolButton; + ToolButton10: TToolButton; + ToolButton11: TToolButton; + ToolButton12: TToolButton; + ToolButton13: TToolButton; + FontEdit1: TFontEdit; + ToolButton14: TToolButton; + UpDown1: TUpDown; + FontSize: TEdit; + FontName: TJvFontComboBox; + TBXDock1: TTBXDock; + TBXToolbar1: TTBXToolbar; + TBXItem1: TTBXItem; + TBXItem2: TTBXItem; + TBXSeparatorItem1: TTBXSeparatorItem; + TBXItem3: TTBXItem; + TBXItem4: TTBXItem; + TBXSeparatorItem2: TTBXSeparatorItem; + TBXItem5: TTBXItem; + TBXItem6: TTBXItem; + TBXItem7: TTBXItem; + TBXSeparatorItem3: TTBXSeparatorItem; + TBXItem8: TTBXItem; + TBXSeparatorItem4: TTBXSeparatorItem; + TBXItem9: TTBXItem; + TBXItem10: TTBXItem; + TBXItem11: TTBXItem; + cxStyle_IMPORTETOTAL: TcxStyle; + cxStyle_SUBTOTAL: TcxStyle; + cxStyle_TITULO: TcxStyle; + RichEditAlignRight2: TRichEditAlignRight; + actAnchoAutomatico: TAction; + TBXSeparatorItem5: TTBXSeparatorItem; + TBXItem13: TTBXItem; + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actSubirExecute(Sender: TObject); + procedure actBajarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actSubirUpdate(Sender: TObject); + procedure actBajarUpdate(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + + procedure cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem); + procedure cxGridViewEditKeyDown(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word; + Shift: TShiftState); + + procedure cxGridViewInitEdit(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit); + procedure FontEdit1BeforeExecute(Sender: TObject); + procedure FontEdit1Accept(Sender: TObject); + + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure FontSizeChange(Sender: TObject); + procedure FontNameChange(Sender: TObject); + + procedure cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); + procedure cxGridViewStylesGetContentStyle(Sender: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem; + out AStyle: TcxStyle); + procedure TBXItem13Click(Sender: TObject); + procedure actAnchoAutomaticoExecute(Sender: TObject); + procedure actAnchoAutomaticoUpdate(Sender: TObject); + + private + FController : IControllerDetallesBase; + FDetalles: IDAStronglyTypedDataTable; + FGridStatus: TcxGridStatus; + CurEdit: TcxRichEdit; + FUpdating: Boolean; + function CurrText: TTextAttributes; + procedure OnSelectChange(Sender:TObject); + + function GetController: IControllerDetallesBase; + procedure SetController(const Value: IControllerDetallesBase); + function GetDetalles: IDAStronglyTypedDataTable; + procedure SetDetalles(const Value: IDAStronglyTypedDataTable); + + function darPosicionCAMPO(const Nombre:String): Integer; + function darListaSeleccionados: TIntegerArray; + + protected + function HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; virtual; + function EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; virtual; + function darTipoLetraPorDefecto: TFont; virtual; + function GetFocusedView : TcxGridDBTableView; virtual; + function GetGrid : TcxGrid; virtual; + procedure SeleccionarRowActual; + + public + procedure BeginUpdate; + procedure EndUpdate; + procedure SaveGridStatus; + procedure RestoreGridStatus; + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + function IsEmpty : Boolean; + destructor Destroy; override; + property _FocusedView : TcxGridDBTableView read GetFocusedView; + property _Grid : TcxGrid read GetGrid; + property Controller: IControllerDetallesBase read GetController write SetController; + property Detalles: IDAStronglyTypedDataTable read GetDetalles write SetDetalles; + + end; + +implementation +{$R *.dfm} + +function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric; + FontType: Integer; Data: Pointer): Integer; stdcall; +begin + TStrings(Data).Add(LogFont.lfFaceName); + Result := 1; +end; + + +procedure TfrViewDetallesBase.actAnadirExecute(Sender: TObject); +var + bEsMultiSelect : Boolean; +begin + // Debo quitar el multiselect porque provoca que se quede seleccionado + // el registro actual y no el nuevo registro que voy a aadir + bEsMultiSelect := cxGridView.OptionsSelection.MultiSelect; + if bEsMultiSelect then + cxGridView.OptionsSelection.MultiSelect := False; + + cxGridView.BeginUpdate; + try + if cxGridView.Controller.EditingController.IsEditing then + cxGridView.Controller.EditingController.Edit.PostEditValue; + + if Assigned(Controller) + and Assigned(FDetalles) then + Controller.add(FDetalles, TIPO_DETALLE_CONCEPTO); + finally + cxGridView.EndUpdate; + + // Dejo la propiedad MultiSelect como estaba + if bEsMultiSelect then + cxGridView.OptionsSelection.MultiSelect := bEsMultiSelect; + end; +end; + +procedure TfrViewDetallesBase.actEliminarExecute(Sender: TObject); +var + AuxTop, AuxRow:Integer; + +begin + cxGridView.BeginUpdate; + try + if Assigned(Controller) + and Assigned(FDetalles) then + begin + AuxTop := cxGridView.Controller.TopRowIndex; + AuxRow := cxGridView.DataController.FocusedRowIndex; + + Controller.delete(FDetalles, darListaSeleccionados); + + if(FDetalles.RecordCount > 0) then + begin + //Selecciona en el grid el registro siguiente + if (AuxRow < cxGridView.DataController.RowCount-1) then + Inc(AuxRow) + else + Dec(AuxRow); + + cxGridView.DataController.SelectRows(AuxRow,AuxRow); + cxGridView.Controller.TopRowIndex := AuxTop; + end; + end + finally + cxGridView.EndUpdate; + end; + + SeleccionarRowActual; +end; + +procedure TfrViewDetallesBase.actEliminarUpdate(Sender: TObject); +begin + if not Assigned(DADataSource.DataTable) then + (Sender as TAction).Enabled := False + else + (Sender as TAction).Enabled := (not ReadOnly) + and (not DADataSource.DataTable.IsEmpty) +end; + +procedure TfrViewDetallesBase.actSubirUpdate(Sender: TObject); +begin + inherited; + if not Assigned(cxGridView.Controller.FocusedRow) then + (Sender as TAction).Enabled := False + else + (Sender as TAction).Enabled := (not ReadOnly) + and (not cxGridView.Controller.FocusedRow.IsFirst) +end; + +procedure TfrViewDetallesBase.AjustarAncho; +begin + if Assigned(_FocusedView) then + _FocusedView.ApplyBestFit; +end; + +procedure TfrViewDetallesBase.BeginUpdate; +begin + if Assigned(_FocusedView) then + _FocusedView.BeginUpdate; +end; + +function TfrViewDetallesBase.darTipoLetraPorDefecto: TFont; +begin + Result := TFont.Create; + Result.Name := 'Tahoma'; + Result.Size := 9; +end; + +destructor TfrViewDetallesBase.Destroy; +begin + FController := NIL; + FDetalles := NIL; + + if Assigned(FGridStatus) then + FreeAndNil(FGridStatus); + inherited; +end; + +procedure TfrViewDetallesBase.ContraerTodo; +begin + if Assigned(_FocusedView) then + _FocusedView.ViewData.Collapse(True); +end; + +function TfrViewDetallesBase.CurrText: TTextAttributes; +begin + Result := NIL; + if Assigned(CurEdit) then +// if CurEdit.FindSelection then + if CurEdit.SelLength > 0 then + Result := CurEdit.SelAttributes + else + Result := CurEdit.DefAttributes; +end; + +procedure TfrViewDetallesBase.CustomViewCreate(Sender: TObject); +begin + inherited; + CurEdit := Nil; + FUpdating := False; +end; + +procedure TfrViewDetallesBase.CustomViewDestroy(Sender: TObject); +begin + inherited; + CurEdit := Nil; +end; + +procedure TfrViewDetallesBase.cxGridViewEditing(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; var AAllow: Boolean); +begin + AAllow := EsTipoEditable(AItem); +end; + +procedure TfrViewDetallesBase.cxGridViewEditKeyDown( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState); +begin + inherited; + cxGridView.BeginUpdate; + try + Case Key of + VK_DOWN : begin + //En el caso de ser la ltima fila hacemos un append nosotros no el grid + //ya que se saltaria la lgica del controllerDetallesBase + if cxGridView.Controller.IsFinish then + begin + Key := 0; + if Sender.Controller.EditingController.IsEditing then + Sender.Controller.EditingController.Edit.PostEditValue; + actAnadir.Execute; + end; + + //Baja los conceptos seleccionados + if Shift = [ssAlt] then + begin + Key := 0; + actBajar.Execute; + end; + end; + VK_UP : begin + //Sube los conceptos seleccionados + if Shift = [ssAlt] then + begin + Key := 0; + actSubir.Execute; + end; + end; + + VK_RETURN, VK_RIGHT + : begin + //En el caso de ser la ltima fila hacemos un append nosotros no el grid + //ya que se saltaria la lgica del controllerDetallesBase + if cxGridView.Controller.IsFinish + and AItem.IsLast then + begin + Key := 0; + if Sender.Controller.EditingController.IsEditing then + Sender.Controller.EditingController.Edit.PostEditValue; + actAnadir.Execute; + end; + end; + end; + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewDetallesBase.cxGridViewEditValueChanged(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem); +begin + inherited; + cxGridView.BeginUpdate; + try + if HayQueRecalcular(AItem) then + begin + if Sender.Controller.EditingController.IsEditing then + Sender.Controller.EditingController.Edit.PostEditValue; + + Controller.actualizarTotales(Detalles); + end; + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewDetallesBase.cxGridViewInitEdit(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit); +var + FuentePorDefecto: TFont; +begin + inherited; + + if AEdit is TcxRichEdit then + begin + FuentePorDefecto := darTipoLetraPorDefecto; + //La primera vez que accedemos al grid entra dos veces y perderiamos el editor + //dando un pete. + if not Assigned(CurEdit) then + begin + FontEdit1.Enabled := True; + // UpDown1.Enabled := True; + // FontSize.Enabled := True; + // FontName.Enabled := True; + + CurEdit := TcxRichEdit(AEdit); + if length(CurEdit.Text) = 0 then + CurEdit.DefAttributes.Assign(FuentePorDefecto) + end + else + if length(CurEdit.Text) = 0 then + CurEdit.DefAttributes.Assign(FuentePorDefecto); + + FreeAndNil(FuentePorDefecto); + end + else + begin + CurEdit := Nil; + FontEdit1.Enabled := False; +// UpDown1.Enabled := False; +// FontSize.Enabled := False; +// FontName.Enabled := False; + end; +end; + +procedure TfrViewDetallesBase.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + IndiceCol : Integer; + ATipo : String; +begin + if Assigned(ARecord) then + begin + IndiceCol := cxGridViewTIPO.Index; + ATipo := VarToStr(ARecord.Values[IndiceCol]); + if ATipo = TIPO_DETALLE_SUBTOTAL then + AStyle := cxStyle_SUBTOTAL; + if ATipo = TIPO_DETALLE_TITULO then + AStyle := cxStyle_TITULO; + end; +end; + +function TfrViewDetallesBase.darListaSeleccionados: TIntegerArray; +var + i, j: Integer; +begin + j := darPosicionCampo(CAMPO_POSICION); + + with cxGridView.Controller do + for i:=0 to SelectedRecordCount-1 do + begin + SetLength(Result, i+1); + Result[i] := SelectedRecords[i].Values[j]; + end; +end; + +function TfrViewDetallesBase.DarPosicionCAMPO(const Nombre: String): Integer; +var + i: Integer; +begin + Result := -1; + + i:=0; + while ((cxGridView.Columns[i].DataBinding.FieldName <> Nombre) + and (i < cxGridView.ColumnCount)) do + inc(i); + + if (i = cxGridView.ColumnCount) + then raise Exception.Create('El campo ' + Nombre + ' no se ha encontrado en el grid (uViewDetallesBase)'); + + Result := i; +end; + +procedure TfrViewDetallesBase.EndUpdate; +begin + if Assigned(_FocusedView) then + _FocusedView.EndUpdate; +end; + +function TfrViewDetallesBase.EsTipoEditable(AItem: TcxCustomGridTableItem): Boolean; +var + IndiceCol : Integer; +begin + Result := True; + + IndiceCol := cxGridView.GetColumnByFieldName(CAMPO_TIPO).Index; + if (AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_SALTO) then + begin + IndiceCol := cxGridView.GetColumnByFieldName(CAMPO_CONCEPTO).Index; + if AItem.Index >= IndiceCol then + Result := False + end + else + begin + if (AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_SUBTOTAL) + or (AItem.GridView.Items[IndiceCol].EditValue = TIPO_DETALLE_TITULO) then + begin + IndiceCol := cxGridView.GetColumnByFieldName(CAMPO_CONCEPTO).Index; + if AItem.Index > IndiceCol then + Result := False + end + end; +end; + +procedure TfrViewDetallesBase.ExpandirTodo; +begin + if Assigned(_FocusedView) then + _FocusedView.ViewData.Expand(True); +end; + +procedure TfrViewDetallesBase.FontEdit1Accept(Sender: TObject); +begin + inherited; + CurrText.Assign(FontEdit1.Dialog.Font); +end; + +procedure TfrViewDetallesBase.FontEdit1BeforeExecute(Sender: TObject); +begin + inherited; + FontEdit1.Dialog.Font.Assign(CurEdit.SelAttributes); +end; + +procedure TfrViewDetallesBase.FontNameChange(Sender: TObject); +begin + if FUpdating then Exit; + CurrText.Name := FontName.Items[FontName.ItemIndex]; +end; + +procedure TfrViewDetallesBase.FontSizeChange(Sender: TObject); +begin + if FUpdating then Exit; + CurrText.Size := StrToInt(FontSize.Text); +end; + +function TfrViewDetallesBase.GetController: IControllerDetallesBase; +begin + Result := FController; +end; + +function TfrViewDetallesBase.GetDetalles: IDAStronglyTypedDataTable; +begin + Result := FDetalles; +end; + +function TfrViewDetallesBase.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +function TfrViewDetallesBase.GetGrid: TcxGrid; +begin + Result := cxGrid; +end; + +function TfrViewDetallesBase.HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; +begin + Result := (AItem = cxGridViewTIPO) + or (AItem = cxGridViewCANTIDAD) + or (AItem = cxGridViewIMPORTEUNIDAD); +end; + +function TfrViewDetallesBase.IsEmpty: Boolean; +begin + Result := (_FocusedView.ViewData.RowCount < 1); +end; + +procedure TfrViewDetallesBase.OnSelectChange(Sender: TObject); +begin + if (csDestroying in ComponentState) then + Exit; + + try + FUpdating := True; +// FontSize.Text := IntToStr(CurEdit.SelAttributes.Size); +// FontName.FontName := CurEdit.SelAttributes.Name; + finally + FUpdating := False; + end; +end; + +procedure TfrViewDetallesBase.RestoreGridStatus; +begin + if Assigned(FGridStatus) and (not IsEmpty) then + FGridStatus.Restore(_FocusedView); +end; + +procedure TfrViewDetallesBase.SaveGridStatus; +begin + FreeAndNil(FGridStatus); + if not IsEmpty then + FGridStatus := TcxGridStatus.Create(_FocusedView); +end; + +procedure TfrViewDetallesBase.SeleccionarRowActual; +begin + //Quitamos lo que hubiera seleccionado + cxGrid.ActiveView.DataController.ClearSelection; + with cxGrid.ActiveView.DataController do + if RowCount > 0 then + SelectRows(GetFocusedRowIndex,GetFocusedRowIndex); +end; + +procedure TfrViewDetallesBase.SetController(const Value: IControllerDetallesBase); +var + AListaValores : TStringList; + AItem : TcxImageComboBoxItem; + i: integer; + DC: HDC; +begin + FController := Value; + + //Rellenamos los tipos de letra que tenemos + FontName.Items.Clear; + DC := GetDC(0); + EnumFonts(DC, nil, @EnumFontsProc, Pointer(FontName.Items)); + ReleaseDC(0, DC); + FontName.Sorted := True; + + //Rellenamos los tipos de conceptos que hay + if Assigned(FController) then + begin + AListaValores := FController.darListaTIPOSDETALLE; + with (cxGridViewTIPO.Properties as TcxImageComboBoxProperties) do + if Items.Count = 0 then + begin + Items.BeginUpdate; + try + Items.Clear; + for i:=0 to AListaValores.Count-1 do + begin + AItem := Items.Add; + AItem.Tag := i; + AItem.Description := AListaValores.ValueFromIndex[i]; + AItem.Value := AListaValores.Names[i]; + end; + finally + DefaultDescription := AListaValores.ValueFromIndex[0]; + FreeAndNil(AListaValores); + Items.EndUpdate; + end; + end; + end; +end; + +procedure TfrViewDetallesBase.SetDetalles(const Value: IDAStronglyTypedDataTable); +begin + FDetalles := Value; + if Assigned(FDetalles) then + DADataSource.DataTable := FDetalles.DataTable + else + DADataSource.DataTable := NIL; +end; + +procedure TfrViewDetallesBase.TBXItem13Click(Sender: TObject); +begin + inherited; + if cxGridView.Controller.EditingController.IsEditing then + cxGridView.Controller.EditingController.Edit.PostEditValue; + +end; + +procedure TfrViewDetallesBase.actAnadirUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := not ReadOnly; +end; + +procedure TfrViewDetallesBase.actAnchoAutomaticoExecute(Sender: TObject); +begin + inherited; + cxGridView.ApplyBestFit; +end; + +procedure TfrViewDetallesBase.actAnchoAutomaticoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := not IsEmpty; +end; + +procedure TfrViewDetallesBase.actBajarExecute(Sender: TObject); +begin + cxGridView.BeginUpdate; + try + if cxGridView.Controller.EditingController.IsEditing then + cxGridView.Controller.EditingController.Edit.PostEditValue; + + if Assigned(Controller) + and Assigned(FDetalles) then + Controller.move(FDetalles, darListaSeleccionados, 1); + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewDetallesBase.actBajarUpdate(Sender: TObject); +begin + inherited; + if not Assigned(cxGridView.Controller.FocusedRow) then + (Sender as TAction).Enabled := False + else + (Sender as TAction).Enabled := (not ReadOnly) + and (not cxGridView.Controller.FocusedRow.IsLast) +end; + +procedure TfrViewDetallesBase.actSubirExecute(Sender: TObject); +begin + cxGridView.BeginUpdate; + try + if cxGridView.Controller.EditingController.IsEditing then + cxGridView.Controller.EditingController.Edit.PostEditValue; + + if Assigned(Controller) + and Assigned(FDetalles) then + Controller.move(FDetalles, darListaSeleccionados, -1); + finally + cxGridView.EndUpdate; + end; +end; + +end. diff --git a/Source/Base/GUIBase/uViewDetallesDTO.dfm b/Source/Base/GUIBase/uViewDetallesDTO.dfm new file mode 100644 index 00000000..618d7d45 --- /dev/null +++ b/Source/Base/GUIBase/uViewDetallesDTO.dfm @@ -0,0 +1,95 @@ +inherited frViewDetallesDTO: TfrViewDetallesDTO + inherited ToolBar1: TToolBar + ButtonWidth = 110 + inherited ToolButton1: TToolButton + ExplicitWidth = 109 + end + inherited ToolButton2: TToolButton + Left = 109 + ExplicitLeft = 109 + ExplicitWidth = 114 + end + inherited ToolButton3: TToolButton + Left = 223 + ExplicitLeft = 223 + end + inherited ToolButton4: TToolButton + Left = 278 + ExplicitLeft = 278 + end + inherited ToolButton14: TToolButton + Left = 334 + ExplicitLeft = 334 + end + end + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + object cxGridViewDESCUENTO: TcxGridDBColumn [6] + Caption = 'Dto' + DataBinding.FieldName = 'DESCUENTO' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.DisplayFormat = ',0.00 %;-,0.00 %' + Properties.EditFormat = ',0.00;-,0.00' + Properties.MaxValue = 100.000000000000000000 + end + object cxGridViewIMPORTENETO: TcxGridDBColumn [7] + Caption = 'Importe neto' + DataBinding.ValueType = 'Currency' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = ',0.00 '#8364';-,0.00 '#8364 + Properties.EditFormat = ',0.00 '#8364';-,0.00 '#8364 + Properties.ReadOnly = True + Properties.OnValidate = cxGridViewIMPORTENETOPropertiesValidate + OnGetDisplayText = cxGridViewIMPORTENETOGetDisplayText + HeaderAlignmentHorz = taRightJustify + Options.Editing = False + end + object cxGridViewIMPORTEPORTE: TcxGridDBColumn [8] + Caption = 'Importe porte' + DataBinding.FieldName = 'IMPORTE_PORTE' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.EditFormat = ',0.00 '#8364';-,0.00 '#8364 + HeaderAlignmentHorz = taRightJustify + end + end + end + inherited TBXDock1: TTBXDock + inherited TBXToolbar1: TTBXToolbar + ExplicitWidth = 447 + end + end + inherited ActionListContenido: TActionList + inherited actAnadir: TAction + Caption = 'A'#241'adir concepto' + end + inherited actEliminar: TAction + Caption = 'Eliminar concepto' + end + inherited RichEditBold1: TRichEditBold + Visible = False + end + inherited RichEditItalic1: TRichEditItalic + Visible = False + end + inherited RichEditUnderline1: TRichEditUnderline + Visible = False + end + inherited RichEditAlignLeft1: TRichEditAlignLeft + Visible = False + end + inherited RichEditAlignCenter1: TRichEditAlignCenter + Visible = False + end + inherited RichEditAlignRight1: TRichEditAlignRight + Visible = False + end + inherited FontEdit1: TFontEdit + Visible = False + end + inherited RichEditAlignRight2: TRichEditAlignRight + Visible = False + end + end +end diff --git a/Source/Base/GUIBase/uViewDetallesDTO.pas b/Source/Base/GUIBase/uViewDetallesDTO.pas new file mode 100644 index 00000000..8467dc7d --- /dev/null +++ b/Source/Base/GUIBase/uViewDetallesDTO.pas @@ -0,0 +1,75 @@ +unit uViewDetallesDTO; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewDetallesBase, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, cxImageComboBox, cxRichEdit, + cxMaskEdit, cxCurrencyEdit, cxCheckBox, ImgList, PngImageList, uDADataTable, + StdActns, ExtActns, ActnList, TB2Item, TBX, TB2Dock, TB2Toolbar, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, ComCtrls, StdCtrls, JvExStdCtrls, + JvCombobox, JvColorCombo, ToolWin; + +type + IViewDetallesDTO = interface(IViewDetallesBase) + ['{0D221FFB-9F43-48FC-9AE7-0AD0F0791AD1}'] + end; + + TfrViewDetallesDTO = class(TfrViewDetallesBase, IViewDetallesDTO) + cxGridViewDESCUENTO: TcxGridDBColumn; + cxGridViewIMPORTEPORTE: TcxGridDBColumn; + cxGridViewIMPORTENETO: TcxGridDBColumn; + procedure cxGridViewIMPORTENETOGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: string); + procedure cxGridViewIMPORTENETOPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + protected + function HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; override; + end; + +implementation +{$R *.dfm} + +{ TfrViewDetallesDTO } + +procedure TfrViewDetallesDTO.cxGridViewIMPORTENETOGetDisplayText(Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: string); +var + ImporteNeto : Double; +begin + //Se encarga de mostrar el campo calculado de importe neto + ImporteNeto := -1; + + if not VarIsNull(ARecord.Values[cxGridViewIMPORTEUNIDAD.Index]) then + if not VarIsNull(ARecord.Values[cxGridViewDESCUENTO.Index]) then + ImporteNeto := ARecord.Values[cxGridViewIMPORTEUNIDAD.Index] - ((ARecord.Values[cxGridViewIMPORTEUNIDAD.Index] * ARecord.Values[cxGridViewDESCUENTO.Index])/100) + else + ImporteNeto := ARecord.Values[cxGridViewIMPORTEUNIDAD.Index]; + + if (ImporteNeto <> -1) then + begin + AText := FormatCurr(',0.00 ;-,0.00 ', FloatToCurr(ImporteNeto)) + end; +end; + +procedure TfrViewDetallesDTO.cxGridViewIMPORTENETOPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); +begin + inherited; + if not VarIsNull(DisplayValue) then + begin + cxGridViewDESCUENTO.DataBinding.Field.Value := ((cxGridViewIMPORTEUNIDAD.DataBinding.Field.Value - DisplayValue) * 100) / cxGridViewIMPORTEUNIDAD.DataBinding.Field.Value; + Controller.ActualizarTotales(Detalles); + end; +end; + +function TfrViewDetallesDTO.HayQueRecalcular(AItem: TcxCustomGridTableItem): Boolean; +begin + Result := inherited HayQueRecalcular(AItem); + if not Result then + Result := (AItem = cxGridViewDESCUENTO) or (AItem = cxGridViewIMPORTEPORTE); +end; + +end. diff --git a/Source/Base/GUIBase/uViewDetallesGenerico.dfm b/Source/Base/GUIBase/uViewDetallesGenerico.dfm new file mode 100644 index 00000000..3afdb87e --- /dev/null +++ b/Source/Base/GUIBase/uViewDetallesGenerico.dfm @@ -0,0 +1,238 @@ +inherited frViewDetallesGenerico: TfrViewDetallesGenerico + Width = 503 + Height = 357 + ExplicitWidth = 503 + ExplicitHeight = 357 + object cxGrid: TcxGrid + Left = 0 + Top = 25 + Width = 503 + Height = 332 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + OnEditKeyDown = cxGridViewEditKeyDown + DataController.DataSource = dsDetalles + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.KeyFieldNames = 'ID' + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoFocusTopRowAfterSorting, dcoImmediatePost] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.AlwaysShowEditor = True + OptionsBehavior.CellHints = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.BestFitMaxRecordCount = 20 + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsCustomize.DataRowSizing = True + OptionsData.Appending = True + OptionsData.CancelOnExit = False + OptionsSelection.MultiSelect = True + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + OptionsView.Indicator = True + object cxGridViewID: TcxGridDBColumn + DataBinding.FieldName = 'ID' + Visible = False + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 503 + Height = 25 + ButtonWidth = 113 + Caption = 'ToolBar1' + EdgeInner = esNone + EdgeOuter = esNone + Flat = False + Images = ContenidoImageList + List = True + ParentShowHint = False + ShowCaptions = True + ShowHint = True + TabOrder = 1 + Transparent = True + object ToolButton1: TToolButton + Left = 0 + Top = 2 + Action = actAnadir + AutoSize = True + end + object ToolButton4: TToolButton + Left = 62 + Top = 2 + Action = actModificar + AutoSize = True + end + object ToolButton5: TToolButton + Left = 136 + Top = 2 + Width = 8 + Caption = 'ToolButton5' + ImageIndex = 2 + Style = tbsSeparator + end + object ToolButton2: TToolButton + Left = 144 + Top = 2 + Action = actEliminar + AutoSize = True + end + object ToolButton6: TToolButton + Left = 211 + Top = 2 + Width = 8 + Caption = 'ToolButton6' + ImageIndex = 2 + Style = tbsSeparator + end + object ToolButton7: TToolButton + Left = 219 + Top = 2 + Action = actAnchoAutomatico + AutoSize = True + end + end + object dsDetalles: TDADataSource + Left = 40 + Top = 144 + end + object ContenidoImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F84944415478DA + 63FCFFFF3F03084C59BC03C2200072E33C19616C905E46640372623DF06A06AA + 6198B77413C3F99DD3194936E0DFBF7F0CD396EE62D051576128AAEB031B42B4 + 0120CDBFFFFC6398BD720F43B0A70DC3CD7B2FC0869CDB318D91A00130CDBF7F + FF6558B06E3FD80B3040D00064CDBFFF40F0AA6D47C1722083F01A804D3304FF + 63D8B2EF147E03F06906D13B0F9DC56D0058E16F540D20FC07C607CA1D387911 + BB01E991AE043583F847CF5EC16E4052881341CD207CEAE275EC06C406D813D4 + 0CC2E7AFDEC26E40848F2D41CD20B12B37EF603720D8C38AA06610C069809F8B + 39C3A63D2789C994D80D404EA6C400900100F58BBFF09BC1E25C000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end> + Left = 40 + Top = 112 + Bitmap = {} + end + object ActionListContenido: TActionList + Images = ContenidoImageList + Left = 40 + Top = 80 + object actAnadir: TAction + Category = 'Operaciones' + Caption = 'A'#241'adir' + ImageIndex = 0 + ShortCut = 45 + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Category = 'Operaciones' + Caption = 'Eliminar' + ImageIndex = 1 + ShortCut = 16430 + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actModificar: TAction + Category = 'Operaciones' + Caption = 'Modificar' + ImageIndex = 2 + OnExecute = actModificarExecute + OnUpdate = actModificarUpdate + end + object actAnchoAutomatico: TAction + Category = 'Operaciones' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 3 + OnExecute = actAnchoAutomaticoExecute + end + end +end diff --git a/Source/Base/GUIBase/uViewDetallesGenerico.pas b/Source/Base/GUIBase/uViewDetallesGenerico.pas new file mode 100644 index 00000000..d379e6c8 --- /dev/null +++ b/Source/Base/GUIBase/uViewDetallesGenerico.pas @@ -0,0 +1,206 @@ +unit uViewDetallesGenerico; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, ActnList, ImgList, + PngImageList, uDADataTable, ComCtrls, ToolWin, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid; + +type + TfrViewDetallesGenerico = class(TfrViewBase) + cxGrid: TcxGrid; + cxGridView: TcxGridDBTableView; + cxGridViewID: TcxGridDBColumn; + cxGridLevel: TcxGridLevel; + ToolBar1: TToolBar; + ToolButton1: TToolButton; + ToolButton2: TToolButton; + dsDetalles: TDADataSource; + ContenidoImageList: TPngImageList; + ActionListContenido: TActionList; + actAnadir: TAction; + actEliminar: TAction; + ToolButton4: TToolButton; + actModificar: TAction; + ToolButton5: TToolButton; + ToolButton6: TToolButton; + actAnchoAutomatico: TAction; + ToolButton7: TToolButton; + procedure cxGridViewEditKeyDown(Sender: TcxCustomGridTableView; + AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit; var Key: Word; + Shift: TShiftState); + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actAnchoAutomaticoExecute(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + protected + function HayDatos : Boolean; + procedure AnadirInterno; virtual; + procedure ModificarInterno; virtual; + procedure EliminarInterno; virtual; + + function GetModified: Boolean; override; + end; + +implementation + +{$R *.dfm} + +uses + uDataTableUtils; + +procedure TfrViewDetallesGenerico.actAnadirExecute(Sender: TObject); +var + bEsMultiSelect : Boolean; +begin + // Debo quitar el multiselect porque provoca que se quede seleccionado + // el registro actual y no el nuevo registro que voy a aadir + bEsMultiSelect := cxGridView.OptionsSelection.MultiSelect; + if bEsMultiSelect then + cxGridView.OptionsSelection.MultiSelect := False; + + cxGridView.BeginUpdate; + try + if cxGridView.Controller.EditingController.IsEditing then + cxGridView.Controller.EditingController.Edit.PostEditValue; + + AnadirInterno; + finally + cxGridView.EndUpdate; + + // Dejo la propiedad MultiSelect como estaba + if bEsMultiSelect then + cxGridView.OptionsSelection.MultiSelect := bEsMultiSelect; + end; +end; + +procedure TfrViewDetallesGenerico.actAnadirUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(dsDetalles.DataTable); +end; + +procedure TfrViewDetallesGenerico.actAnchoAutomaticoExecute(Sender: TObject); +begin + inherited; + cxGridView.ApplyBestFit; +end; + +procedure TfrViewDetallesGenerico.actEliminarExecute(Sender: TObject); +var + AuxTop, AuxRow:Integer; +begin + cxGridView.BeginUpdate; + AuxTop := cxGridView.Controller.TopRowIndex; + AuxRow := cxGridView.DataController.FocusedRowIndex; + try + EliminarInterno; + + //Selecciona en el grid el registro siguiente + if (AuxRow < cxGridView.DataController.RowCount-1) then + Inc(AuxRow) + else + Dec(AuxRow); + + if dsDetalles.DataTable.RecordCount > 0 then + begin + cxGridView.DataController.SelectRows(AuxRow,AuxRow); + cxGridView.Controller.TopRowIndex := AuxTop; + end; + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewDetallesGenerico.actEliminarUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := HayDatos; +end; + +procedure TfrViewDetallesGenerico.actModificarExecute(Sender: TObject); +begin + inherited; + ModificarInterno; +end; + +procedure TfrViewDetallesGenerico.actModificarUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := HayDatos and + (cxGridView.DataController.FocusedRowIndex >= 0) +end; + +procedure TfrViewDetallesGenerico.AnadirInterno; +begin + dsDetalles.DataTable.Insert; +end; + +procedure TfrViewDetallesGenerico.cxGridViewEditKeyDown( + Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; + AEdit: TcxCustomEdit; var Key: Word; Shift: TShiftState); +begin + inherited; + cxGridView.BeginUpdate; + try + Case Key of + VK_DOWN : begin + //En el caso de ser la ltima fila hacemos un append nosotros no el grid + //ya que se saltaria la lgica del controllerDetallesBase + if cxGridView.Controller.IsFinish then + begin + Key := 0; + if Sender.Controller.EditingController.IsEditing then + Sender.Controller.EditingController.Edit.PostEditValue; + actAnadir.Execute; + end; + end; + + VK_RETURN, VK_RIGHT + : begin + //En el caso de ser la ltima fila hacemos un append nosotros no el grid + //ya que se saltaria la lgica del controllerDetallesBase + if cxGridView.Controller.IsFinish + and AItem.IsLast then + begin + Key := 0; + if Sender.Controller.EditingController.IsEditing then + Sender.Controller.EditingController.Edit.PostEditValue; + actAnadir.Execute; + end; + end; + end; + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewDetallesGenerico.EliminarInterno; +begin + dsDetalles.DataTable.Delete; +end; + +function TfrViewDetallesGenerico.GetModified: Boolean; +begin + Result := DataTableModified(dsDetalles.DataTable) or inherited GetModified; +end; + +function TfrViewDetallesGenerico.HayDatos: Boolean; +begin + Result := Assigned(dsDetalles.DataTable) and + (cxGridView.ViewInfo.VisibleRecordCount > 0) +end; + +procedure TfrViewDetallesGenerico.ModificarInterno; +begin + // +end; + +end. diff --git a/Source/Base/GUIBase/uViewFiltroBase.dfm b/Source/Base/GUIBase/uViewFiltroBase.dfm new file mode 100644 index 00000000..3691a865 --- /dev/null +++ b/Source/Base/GUIBase/uViewFiltroBase.dfm @@ -0,0 +1,200 @@ +object frViewFiltroBase: TfrViewFiltroBase + Left = 0 + Top = 0 + Width = 565 + Height = 102 + TabOrder = 0 + Visible = False + object TBXDockablePanel1: TTBXDockablePanel + Left = 0 + Top = 0 + Align = alClient + Caption = 'TBXDockablePanel1' + CloseButton = False + CloseButtonWhenDocked = False + DockedHeight = 98 + DockMode = dmCannotFloatOrChangeDocks + FloatingWidth = 128 + FloatingHeight = 98 + ShowCaption = False + ShowCaptionWhenDocked = False + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 0 + ExplicitWidth = 128 + ExplicitHeight = 98 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 565 + Height = 68 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + ExplicitWidth = 128 + object txtFiltroTodo: TcxTextEdit + Left = 87 + Top = 10 + Properties.OnChange = OnCamposFiltroChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Width = 273 + end + object edtFechaIniFiltro: TcxDateEdit + Left = 87 + Top = 37 + Properties.OnChange = OnCamposFiltroChange + 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 = 1 + Width = 121 + end + object edtFechaFinFiltro: TcxDateEdit + Left = 350 + Top = 37 + Properties.OnChange = OnCamposFiltroChange + 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 = 121 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Que contenga:' + Control = txtFiltroTodo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Entre la fecha:' + Control = edtFechaIniFiltro + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'y' + Control = edtFechaFinFiltro + ControlOptions.ShowBorder = False + end + end + end + end + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 68 + Width = 565 + Height = 30 + Margins.Left = 10 + Align = alTop + TabOrder = 1 + ExplicitWidth = 128 + object tbxBotones: TTBXToolbar + Left = 10 + Top = 0 + Width = 555 + Height = 30 + Align = alTop + AutoResize = False + BorderStyle = bsNone + Caption = 'tbxBotones' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = -23 + DockRow = 1 + DragHandleStyle = dhNone + ParentShowHint = False + ShowHint = True + TabOrder = 0 + ExplicitWidth = 118 + object TBXItem2: TTBXItem + Action = actQuitarFiltro + DisplayMode = nbdmImageAndText + Images = PngImageList + end + end + end + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 136 + Top = 16 + end + object ActionList1: TActionList + Images = PngImageList + Left = 384 + Top = 72 + object actQuitarFiltro: TAction + Caption = 'Quitar filtros y ver todo' + ImageIndex = 0 + OnExecute = actQuitarFiltroExecute + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 424 + Top = 72 + Bitmap = {} + end +end diff --git a/Source/Base/GUIBase/uViewFiltroBase.pas b/Source/Base/GUIBase/uViewFiltroBase.pas new file mode 100644 index 00000000..d9fe4f45 --- /dev/null +++ b/Source/Base/GUIBase/uViewFiltroBase.pas @@ -0,0 +1,144 @@ +unit uViewFiltroBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxMaskEdit, cxDropDownEdit, cxCalendar, dxLayoutControl, + cxContainer, cxEdit, cxTextEdit, dxLayoutLookAndFeels, cxControls, + StdCtrls, Buttons, cxRadioGroup, TBXDkPanels, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ActnList, ImgList, PngImageList; + +type + IViewFiltroBase = interface + ['{0D0EA630-BF93-4BA1-93C2-FD5A5B0CBEED}'] + function GetFiltrosChange: TNotifyEvent; + procedure SetFiltrosChange(const Value: TNotifyEvent); + property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; + + function GetVerFiltros: Boolean; + procedure SetVerFiltros(const Value: Boolean); + property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; + + function GetTexto: String; + procedure SetTexto(const Value: String); + property Texto: String read GetTexto write SetTexto; + end; + + TfrViewFiltroBase = class(TFrame, IViewFiltroBase) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutControl1Item1: TdxLayoutItem; + txtFiltroTodo: TcxTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + edtFechaIniFiltro: TcxDateEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtFechaFinFiltro: TcxDateEdit; + dxLayoutControl1Group1: TdxLayoutGroup; + TBXDockablePanel1: TTBXDockablePanel; + ActionList1: TActionList; + actQuitarFiltro: TAction; + PngImageList: TPngImageList; + tbxBotones: TTBXToolbar; + TBXItem2: TTBXItem; + TBXAlignmentPanel1: TTBXAlignmentPanel; + procedure OnCamposFiltroChange(Sender: TObject); + procedure actQuitarFiltroExecute(Sender: TObject); + + private + FOnFiltrosChange: TNotifyEvent; + + function GetFiltrosChange: TNotifyEvent; + procedure SetFiltrosChange(const Value: TNotifyEvent); + function GetVerFiltros: Boolean; + procedure SetVerFiltros(const Value: Boolean); + function GetTexto: String; + procedure SetTexto(const Value: String); + + protected + procedure LimpiarCampos; virtual; + function ValidarCampos: Boolean; virtual; + + public + property OnFiltrosChange: TNotifyEvent read GetFiltrosChange write SetFiltrosChange; + property VerFiltros: Boolean read GetVerFiltros write SetVerFiltros; + property Texto: String read GetTexto write SetTexto; + end; + +implementation +{$R *.dfm} + +uses uDialogUtils; + +{ TfrViewFiltroBase } + +function TfrViewFiltroBase.GetFiltrosChange: TNotifyEvent; +begin + Result := FOnFiltrosChange; +end; + +procedure TfrViewFiltroBase.SetFiltrosChange(const Value: TNotifyEvent); +begin + FOnFiltrosChange := Value; +end; + +function TfrViewFiltroBase.GetVerFiltros: Boolean; +begin + Result := Self.Visible; +end; + +procedure TfrViewFiltroBase.SetVerFiltros(const Value: Boolean); +begin + Self.Visible := Value; + if not Self.Visible then + actQuitarFiltro.Execute; +end; + +procedure TfrViewFiltroBase.LimpiarCampos; +begin + txtFiltroTodo.Clear; + edtFechaIniFiltro.Clear; + edtFechaFinFiltro.Clear; +end; + +procedure TfrViewFiltroBase.OnCamposFiltroChange(Sender: TObject); +begin + if ValidarCampos then + if Assigned(FOnFiltrosChange) then + FOnFiltrosChange(Sender); +end; + +function TfrViewFiltroBase.ValidarCampos: Boolean; +begin + Result := True; + + if not VarIsNull(edtFechaIniFiltro.EditValue) and not VarIsNull(edtFechaFinFiltro.EditValue) then + begin + if (edtFechaIniFiltro.EditValue > edtFechaFinFiltro.EditValue) then + begin + ShowWarningMessage('La fecha de inicio debe ser anterior a la fecha final'); + edtFechaIniFiltro.SetFocus; + Result := False; + end + end; +end; + +procedure TfrViewFiltroBase.actQuitarFiltroExecute(Sender: TObject); +begin + LimpiarCampos; + if Assigned(FOnFiltrosChange) then + FOnFiltrosChange(Sender); +end; + +function TfrViewFiltroBase.GetTexto: String; +begin + Result := txtFiltroTodo.Text; +end; + +procedure TfrViewFiltroBase.SetTexto(const Value: String); +begin + txtFiltroTodo.Text := Value; +end; + +end. diff --git a/Source/Base/GUIBase/uViewFormaPago.dfm b/Source/Base/GUIBase/uViewFormaPago.dfm new file mode 100644 index 00000000..1660a70a --- /dev/null +++ b/Source/Base/GUIBase/uViewFormaPago.dfm @@ -0,0 +1,47 @@ +inherited frViewFormaPago: TfrViewFormaPago + Width = 300 + ExplicitWidth = 300 + DesignSize = ( + 300 + 291) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Forma de pago' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memFormaPago: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'FORMA_PAGO' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 175 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Source/Base/GUIBase/uViewFormaPago.pas b/Source/Base/GUIBase/uViewFormaPago.pas new file mode 100644 index 00000000..fe3d269e --- /dev/null +++ b/Source/Base/GUIBase/uViewFormaPago.pas @@ -0,0 +1,26 @@ +unit uViewFormaPago; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewFormaPago = class(TfrViewBase) + DADataSource: TDADataSource; + memFormaPago: TcxDBMemo; + Label5: TLabel; + Bevel1: TBevel; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/GUIBase/uViewGrid.dfm b/Source/Base/GUIBase/uViewGrid.dfm new file mode 100644 index 00000000..8bcc1eda --- /dev/null +++ b/Source/Base/GUIBase/uViewGrid.dfm @@ -0,0 +1,332 @@ +inherited frViewGrid: TfrViewGrid + Width = 554 + Height = 594 + ExplicitWidth = 554 + ExplicitHeight = 594 + object cxGrid: TcxGrid [0] + Left = 0 + Top = 102 + Width = 554 + Height = 466 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + OnDblClick = cxGridViewDblClick + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + DataController.DataSource = dsDataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.CellHints = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnsQuickCustomization = True + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.DataRowHeight = 22 + OptionsView.Footer = True + OptionsView.GridLineColor = clHighlight + OptionsView.GridLines = glHorizontal + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + Styles.Inactive = cxStyleSelection + Styles.Selection = cxStyleSelection + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + inline frViewFiltroBase1: TfrViewFiltroBase [1] + Left = 0 + Top = 0 + Width = 554 + Height = 102 + Align = alTop + TabOrder = 1 + Visible = False + ExplicitWidth = 554 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 554 + ExplicitHeight = 102 + inherited dxLayoutControl1: TdxLayoutControl + Width = 554 + ExplicitWidth = 554 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 344 + ExplicitLeft = 344 + ExplicitWidth = 121 + Width = 121 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 554 + ExplicitWidth = 554 + inherited tbxBotones: TTBXToolbar + Width = 544 + ExplicitWidth = 544 + end + end + end + end + object pnlAgrupaciones: TTBXDockablePanel + Left = 0 + Top = 568 + MinClientHeight = 8 + Align = alBottom + Caption = 'pnlAgrupaciones' + DockedHeight = 26 + FloatingWidth = 128 + FloatingHeight = 26 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 2 + Visible = False + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 554 + Height = 26 + Margins.Left = 10 + Align = alTop + TabOrder = 0 + object TBXToolbar1: TTBXToolbar + Left = 10 + Top = 0 + Width = 544 + Height = 26 + Align = alTop + AutoResize = False + Caption = 'TBXToolbar1' + TabOrder = 0 + object TBXItem1: TTBXItem + Action = actQuitarAgrupaciones + end + end + end + end + object dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint] + PreviewOptions.VisibleOptions = [pvoPageBackground, pvoPageSetup, pvoPreferences, pvoPrint, pvoPrintStyles, pvoReportFileOperations, pvoPageMargins] + PreviewOptions.WindowState = wsMaximized + Version = 0 + Left = 368 + Top = 128 + object dxComponentPrinterLink: TdxGridReportLink + Active = True + Component = cxGrid + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.GrayShading = True + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage.ScaleMode = smFit + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39296.809313506940000000 + StyleManager = dxPrintStyleManager1 + OptionsCards.Shadow.Depth = 0 + OptionsExpanding.ExpandGroupRows = True + OptionsExpanding.ExpandMasterRows = True + OptionsFormatting.SuppressBackgroundBitmaps = True + OptionsFormatting.UseNativeStyles = True + OptionsFormatting.ConsumeSelectionStyle = True + OptionsLevels.Unwrap = True + OptionsRefinements.TransparentGraphics = True + OptionsSize.AutoWidth = True + OptionsView.Caption = False + OptionsView.ExpandButtons = False + OptionsView.FilterBar = False + StyleRepository = cxStyleRepositoryInforme + Styles.Content = cxStyleContentInforme + Styles.Footer = cxStyleFooterInforme + Styles.Group = cxStyleGroupInforme + Styles.Header = cxStyleHeaderInforme + Styles.Selection = cxStyleSelectionInforme + BuiltInReportLink = True + end + end + object dxPSEngineController1: TdxPSEngineController + LookAndFeel = pslfOffice11 + UseNativeLookAndFeel = False + Left = 336 + Top = 128 + end + object cxStyleRepository1: TcxStyleRepository + Left = 296 + Top = 128 + object cxStyleEven: TcxStyle + end + object cxStyleOdd: TcxStyle + AssignedValues = [svColor] + Color = clInactiveCaptionText + end + object cxStyleSelection: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clHighlight + TextColor = clHighlightText + end + object cxStyleSinOrden: TcxStyle + end + object cxStyleConOrden: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleFiltered: TcxStyle + AssignedValues = [svColor] + Color = clInfoBk + end + object cxStyleFilteredConOrden: TcxStyle + AssignedValues = [svColor] + Color = 14546175 + end + end + object cxViewGridPopupMenu: TcxGridPopupMenu + Grid = cxGrid + PopupMenus = < + item + GridView = cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + Left = 264 + Top = 128 + end + object ActionList1: TActionList + Left = 400 + Top = 360 + object actQuitarAgrupaciones: TAction + Caption = 'Quitar agrupaciones' + OnExecute = actQuitarAgrupacionesExecute + OnUpdate = actQuitarAgrupacionesUpdate + end + end + object PngImageList10: TPngImageList + PngImages = <> + Left = 368 + Top = 360 + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 368 + Top = 160 + object cxStyleContentInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + object cxStyleFooterInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 14803425 + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + TextColor = clBlack + end + object cxStyleGroupInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + TextColor = clBlack + end + object cxStyleHeaderInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = 14803425 + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + TextColor = clBlack + end + object cxStyleSelectionInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + end + object dxPrintStyleManager1: TdxPrintStyleManager + CurrentStyle = dxPrintStyleManager1Style1 + Version = 0 + Left = 336 + Top = 160 + object dxPrintStyleManager1Style1: TdxPSPrintStyle + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 20000 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 20000 + PrinterPage.PageFooter.CenterTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageFooter.Font.Charset = DEFAULT_CHARSET + PrinterPage.PageFooter.Font.Color = clBlack + PrinterPage.PageFooter.Font.Height = -12 + PrinterPage.PageFooter.Font.Name = 'Tahoma' + PrinterPage.PageFooter.Font.Style = [] + PrinterPage.PageFooter.LeftTitle.Strings = ( + 'LUIS LEON REPRESENTACIONES S.L.') + PrinterPage.PageFooter.RightTitle.Strings = ( + '[Page #] de [Total Pages]') + PrinterPage.PageHeader.Font.Charset = DEFAULT_CHARSET + PrinterPage.PageHeader.Font.Color = clBlack + PrinterPage.PageHeader.Font.Height = -15 + PrinterPage.PageHeader.Font.Name = 'Tahoma' + PrinterPage.PageHeader.Font.Style = [] + PrinterPage.PageHeader.LeftTitle.Strings = ( + '') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + BuiltInStyle = True + end + end +end diff --git a/Source/Base/GUIBase/uViewGrid.pas b/Source/Base/GUIBase/uViewGrid.pas new file mode 100644 index 00000000..cf63992e --- /dev/null +++ b/Source/Base/GUIBase/uViewGrid.pas @@ -0,0 +1,221 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewGrid; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, Menus, ActnList, Grids, + DBGrids, JvComponent, JvFormAutoSize, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPrnDlg, + cxIntlPrintSys3, dxPSPrvwAdv, uViewGridBase, cxGridCustomPopupMenu, + cxGridPopupMenu, uViewFiltroBase, ComCtrls, cxPC, ImgList, PngImageList, + TB2Item, TBX, TB2Dock, TB2Toolbar, TBXDkPanels, dxPgsDlg; + +type + IViewGrid = interface(IViewGridBase) + ['{7EA40980-AD73-4590-A53A-932316C7B121}'] + end; + + TfrViewGrid = class(TfrViewGridBase, IViewGrid) + cxGrid: TcxGrid; + cxGridLevel: TcxGridLevel; + cxGridView: TcxGridDBTableView; + dxComponentPrinter: TdxComponentPrinter; + dxPSEngineController1: TdxPSEngineController; + cxStyleRepository1: TcxStyleRepository; + cxStyleEven: TcxStyle; + cxStyleOdd: TcxStyle; + cxStyleSelection: TcxStyle; + cxStyleSinOrden: TcxStyle; + cxStyleConOrden: TcxStyle; + cxViewGridPopupMenu: TcxGridPopupMenu; + dxComponentPrinterLink: TdxGridReportLink; + cxStyleFiltered: TcxStyle; + cxStyleFilteredConOrden: TcxStyle; + frViewFiltroBase1: TfrViewFiltroBase; + ActionList1: TActionList; + PngImageList10: TPngImageList; + actQuitarAgrupaciones: TAction; + pnlAgrupaciones: TTBXDockablePanel; + TBXAlignmentPanel1: TTBXAlignmentPanel; + TBXToolbar1: TTBXToolbar; + TBXItem1: TTBXItem; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + dxPrintStyleManager1: TdxPrintStyleManager; + dxPrintStyleManager1Style1: TdxPSPrintStyle; + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewDblClick(Sender: TObject); + procedure actQuitarAgrupacionesExecute(Sender: TObject); + procedure actQuitarAgrupacionesUpdate(Sender: TObject); + protected + function GetGrid : TcxGrid; override; + function GetFocusedView : TcxGridDBTableView; override; + procedure SetPopupMenu(const Value: TPopupMenu); override; + procedure FilterChanged(Sender : TObject); override; + procedure OnChangeValoresFiltro(Sender: TObject); + procedure SetViewFiltros(const Value: IViewFiltroBase); override; + function AddFilterGrid(const Operacion: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList; + public + function esSeleccionCeldaDatos: Boolean; override; + procedure Preview; override; + procedure Print; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uDataModuleBase, uDBSelectionListUtils; + +{$R *.dfm} + +{ +********************************* TfrViewGrid ********************************** +} + +{ TfrViewGrid } +function TfrViewGrid.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +function TfrViewGrid.GetGrid: TcxGrid; +begin + Result := cxGrid; +end; + +procedure TfrViewGrid.OnChangeValoresFiltro(Sender: TObject); +begin + cxGridView.DataController.Filter.BeginUpdate; + RefrescarFiltro; + cxGridView.DataController.Filter.EndUpdate; +end; + +procedure TfrViewGrid.Preview; +begin + inherited; + dxComponentPrinter.Preview; +end; + +procedure TfrViewGrid.Print; +begin + inherited; + dxComponentPrinter.Print(True, nil, nil); +end; + +procedure TfrViewGrid.SetPopupMenu(const Value: TPopupMenu); +begin + inherited; + cxViewGridPopupMenu.PopupMenus[0].PopupMenu := FPopupMenu; +end; + +procedure TfrViewGrid.SetViewFiltros(const Value: IViewFiltroBase); +begin + inherited; + if Assigned(ViewFiltros) then + ViewFiltros.OnFiltrosChange := OnChangeValoresFiltro +end; + +procedure TfrViewGrid.actQuitarAgrupacionesExecute(Sender: TObject); +var + Columna: TcxGridDBColumn; + i: Integer; +begin + inherited; + for i := 0 to cxGridView.ColumnCount - 1 do + begin + Columna := (cxGridView as TcxGridDBTableView).Columns[i]; + if not (Columna.GroupIndex < 0) then + begin + Columna.GroupIndex := -1; + Columna.Visible := True; + end; + end; +end; + +procedure TfrViewGrid.actQuitarAgrupacionesUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (cxGridView.GroupedColumnCount > 0); +end; + +function TfrViewGrid.AddFilterGrid(const Operacion: tcxFilterBoolOperatorKind): TcxFilterCriteriaItemList; +var + AItemList: TcxFilterCriteriaItemList; +begin + AItemList := cxGridView.DataController.Filter.Root; + Result := AItemList.AddItemList(Operacion); +end; + +constructor TfrViewGrid.Create(AOwner: TComponent); +begin + inherited; + ViewFiltros := frViewFiltroBase1; +end; + +procedure TfrViewGrid.cxGridViewDblClick(Sender: TObject); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +procedure TfrViewGrid.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(AItem) then + begin + if AItem.SortOrder = soNone then + AStyle := cxStyleSinOrden + else begin + AStyle := cxStyleConOrden; + if Filtered then + AStyle := cxStyleFilteredConOrden; + end; + end; +end; + +destructor TfrViewGrid.Destroy; +begin + ViewFiltros := Nil; + inherited; +end; + +function TfrViewGrid.esSeleccionCeldaDatos: Boolean; +begin + Result := not (cxGridView.Controller.FocusedRecord is TcxGridGroupRow); +end; + +procedure TfrViewGrid.FilterChanged(Sender: TObject); +begin + inherited; + if Filtered then + _FocusedView.Styles.Content := cxStyleFiltered + else + _FocusedView.Styles.Content := nil; +end; + +end. + diff --git a/Source/Base/GUIBase/uViewGrid2Niveles.dfm b/Source/Base/GUIBase/uViewGrid2Niveles.dfm new file mode 100644 index 00000000..abc45386 --- /dev/null +++ b/Source/Base/GUIBase/uViewGrid2Niveles.dfm @@ -0,0 +1,136 @@ +inherited frViewGrid2Niveles: TfrViewGrid2Niveles + Width = 519 + Height = 367 + ExplicitWidth = 519 + ExplicitHeight = 367 + object cxGrid: TcxGrid [0] + Left = 0 + Top = 0 + Width = 519 + Height = 367 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView1N: TcxGridDBTableView + OnDblClick = cxGridView1NDblClick + NavigatorButtons.ConfirmDelete = False + FilterBox.Visible = fvNever + DataController.DataSource = dsDataSource + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.CellHints = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnsQuickCustomization = True + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + OptionsSelection.CellSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.CellEndEllipsis = True + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.Footer = True + OptionsView.FooterAutoHeight = True + OptionsView.GridLineColor = cl3DLight + OptionsView.GroupByBox = False + OptionsView.HeaderEndEllipsis = True + Styles.Inactive = cxStyleSelection + Styles.Selection = cxStyleSelection + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + end + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + end + object cxGridLevel1N: TcxGridLevel + GridView = cxGridView1N + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + end + object dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint] + PreviewOptions.VisibleOptions = [pvoPageBackground, pvoPageSetup, pvoPreferences, pvoPrint, pvoPrintStyles, pvoReportFileOperations, pvoPageMargins] + PreviewOptions.WindowState = wsMaximized + Version = 0 + Left = 368 + Top = 128 + object dxComponentPrinterLink: TdxGridReportLink + Component = cxGrid + PrinterPage.DMPaper = 9 + PrinterPage.Footer = 6350 + PrinterPage.Header = 6350 + PrinterPage.Margins.Bottom = 12700 + PrinterPage.Margins.Left = 12700 + PrinterPage.Margins.Right = 12700 + PrinterPage.Margins.Top = 12700 + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + BuiltInReportLink = True + end + end + object dxPSEngineController1: TdxPSEngineController + LookAndFeel = pslfOffice11 + UseNativeLookAndFeel = False + Left = 336 + Top = 128 + end + object cxStyleRepository1: TcxStyleRepository + Left = 296 + Top = 128 + object cxStyleEven: TcxStyle + end + object cxStyleOdd: TcxStyle + AssignedValues = [svColor] + Color = clInactiveCaptionText + end + object cxStyleSelection: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clHighlight + TextColor = clHighlightText + end + object cxStyleSinOrden: TcxStyle + end + object cxStyleConOrden: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleFiltered: TcxStyle + AssignedValues = [svColor] + Color = clInfoBk + end + object cxStyleFilteredConOrden: TcxStyle + AssignedValues = [svColor] + Color = 14546175 + end + end + object cxViewGridPopupMenu: TcxGridPopupMenu + Grid = cxGrid + PopupMenus = < + item + GridView = cxGridView1N + HitTypes = [gvhtCell] + Index = 0 + end> + Left = 264 + Top = 128 + end +end diff --git a/Source/Base/GUIBase/uViewGrid2Niveles.pas b/Source/Base/GUIBase/uViewGrid2Niveles.pas new file mode 100644 index 00000000..030b5664 --- /dev/null +++ b/Source/Base/GUIBase/uViewGrid2Niveles.pas @@ -0,0 +1,211 @@ +{*******************************************************} +{ } +{ Administracin de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewGrid2Niveles; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, Menus, ActnList, Grids, + DBGrids, JvComponent, JvFormAutoSize, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPrnDlg, + cxIntlPrintSys3, dxPSPrvwAdv, uViewGridBase, cxGridCustomPopupMenu, + cxGridPopupMenu; + +type + IViewGrid2Niveles = interface(IViewGridBase) + ['{7EA40980-AD73-4590-A53A-932316C7B121}'] + end; + + TfrViewGrid2Niveles = class(TfrViewGridBase, IViewGrid2Niveles) + cxGrid: TcxGrid; + cxGridLevel1N: TcxGridLevel; + cxGridView1N: TcxGridDBTableView; + dxComponentPrinter: TdxComponentPrinter; + dxPSEngineController1: TdxPSEngineController; + cxStyleRepository1: TcxStyleRepository; + cxStyleEven: TcxStyle; + cxStyleOdd: TcxStyle; + cxStyleSelection: TcxStyle; + cxStyleSinOrden: TcxStyle; + cxStyleConOrden: TcxStyle; + cxViewGridPopupMenu: TcxGridPopupMenu; + dxComponentPrinterLink: TdxGridReportLink; + cxStyleFiltered: TcxStyle; + cxStyleFilteredConOrden: TcxStyle; + cxGridLevel: TcxGridLevel; + cxGridView: TcxGridDBTableView; + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridView1NDblClick(Sender: TObject); + protected + function GetGrid : TcxGrid; override; + function GetFocusedView : TcxGridDBTableView; override; + procedure SetPopupMenu(const Value: TPopupMenu); override; + procedure FilterChanged(Sender : TObject); override; + function GetFiltered: Boolean; override; + procedure FiltrarGrid(TextoFiltro : String); override; + public + procedure AjustarAncho; override; + procedure ContraerTodo; override; + procedure ExpandirTodo; override; + function IsEmpty : Boolean; override; + procedure RestoreFromRegistry (const Path : String); override; + procedure StoreToRegistry (const Path : String); override; + end; + +implementation + +uses + uDataModuleBase, uDBSelectionListUtils; + +{$R *.dfm} + +{ +********************************* TfrViewGrid ********************************** +} + +{ TfrViewGrid } +function TfrViewGrid2Niveles.GetFiltered: Boolean; +begin + Result := inherited GetFiltered; + Result := Result OR (cxGridView1N.DataController.Filter.Root.Count > 0); +end; + +function TfrViewGrid2Niveles.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +function TfrViewGrid2Niveles.GetGrid: TcxGrid; +begin + Result := cxGrid; +end; + +function TfrViewGrid2Niveles.IsEmpty: Boolean; +begin + Result := (cxGridView1N.ViewData.RowCount < 1); +end; + +procedure TfrViewGrid2Niveles.RestoreFromRegistry(const Path: String); +begin + inherited; + cxGridView1N.RestoreFromRegistry(Path + '\\GridSettings\\' + Self.Name, False, False, []); +end; + +procedure TfrViewGrid2Niveles.SetPopupMenu(const Value: TPopupMenu); +begin + inherited; + cxViewGridPopupMenu.PopupMenus[0].PopupMenu := FPopupMenu; +end; + +procedure TfrViewGrid2Niveles.StoreToRegistry(const Path: String); +begin + inherited; + cxGridView1N.StoreToRegistry(Path + '\\GridSettings\\' + Self.Name, False, []); +end; + +procedure TfrViewGrid2Niveles.AjustarAncho; +begin + inherited; + cxGridView1N.ApplyBestFit; +end; + +procedure TfrViewGrid2Niveles.ContraerTodo; +begin + inherited; + cxGridView1N.ViewData.Collapse(True); +end; + +procedure TfrViewGrid2Niveles.cxGridView1NDblClick(Sender: TObject); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +procedure TfrViewGrid2Niveles.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(AItem) then + begin + if AItem.SortOrder = soNone then + AStyle := cxStyleSinOrden + else begin + AStyle := cxStyleConOrden; + if Filtered then + AStyle := cxStyleFilteredConOrden; + end; + end; +end; + +procedure TfrViewGrid2Niveles.ExpandirTodo; +begin + inherited; + cxGridView1N.ViewData.Expand(True); +end; + +procedure TfrViewGrid2Niveles.FilterChanged(Sender: TObject); +begin + inherited; + if Filtered then + begin + _FocusedView.Styles.Content := cxStyleFiltered; + cxGridView1N.Styles.Content := cxStyleFiltered + end + else + begin + _FocusedView.Styles.Content := nil; + cxGridView1N.Styles.Content := nil + end; +end; + +procedure TfrViewGrid2Niveles.FiltrarGrid(TextoFiltro: String); +var + Columna: TcxGridDBColumn; + i: Integer; + AItemList: TcxFilterCriteriaItemList; +begin + inherited; + + with cxGridView1N.DataController.Filter do + begin + BeginUpdate; + try + Options := [fcoCaseInsensitive, fcoSoftCompare]; + Root.Clear; + if Length(TextoFiltro) > 0 then + begin + AItemList := Root.AddItemList(fboAnd); + AItemList.BoolOperatorKind := fboOr; + for i:=0 to (cxGridView1N as TcxGridDBTableView).ColumnCount - 1 do + begin + Columna := (cxGridView1N as TcxGridDBTableView).Columns[i]; + if (Length(Columna.Caption) > 0) and (Columna.Caption <> 'RecID') then + AItemList.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i)); + end; + Active := True; + end + else + Active := False; + finally + EndUpdate; + end; + end; +end; + +end. + diff --git a/Source/Base/GUIBase/uViewGridBase.dfm b/Source/Base/GUIBase/uViewGridBase.dfm new file mode 100644 index 00000000..56958797 --- /dev/null +++ b/Source/Base/GUIBase/uViewGridBase.dfm @@ -0,0 +1,10 @@ +inherited frViewGridBase: TfrViewGridBase + Width = 441 + Height = 268 + ExplicitWidth = 441 + ExplicitHeight = 268 + object dsDataSource: TDADataSource + Left = 8 + Top = 16 + end +end diff --git a/Source/Base/GUIBase/uViewGridBase.pas b/Source/Base/GUIBase/uViewGridBase.pas new file mode 100644 index 00000000..293a96de --- /dev/null +++ b/Source/Base/GUIBase/uViewGridBase.pas @@ -0,0 +1,421 @@ +{*******************************************************} +{ } +{ Administracin de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewGridBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, Menus, ActnList, Grids, + DBGrids, JvComponent, JvFormAutoSize, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPrnDlg, + cxIntlPrintSys3, dxPSPrvwAdv, uGridUtils, uViewFiltroBase; + +type + IViewGridBase = interface(IViewBase) + ['{D5B9B017-2A2E-44AC-8223-E54664C6BC66}'] + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + + procedure Preview; + procedure Print; + procedure PrintSetup; + + function IsEmpty : Boolean; + + procedure SaveGridStatus; + procedure RestoreGridStatus; + + procedure GotoFirst; + procedure GotoLast; + + function GetFocusedView : TcxGridDBTableView; + property _FocusedView : TcxGridDBTableView read GetFocusedView; + + function GetGrid : TcxGrid; + property _Grid : TcxGrid read GetGrid; + + procedure StoreToRegistry (const Path : String); + procedure RestoreFromRegistry (const Path : String); + + procedure SetDblClick(const Value: TNotifyEvent); + function GetDblClick: TNotifyEvent; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + + procedure SetPopupMenu(const Value: TPopupMenu); + function GetPopupMenu: TPopupMenu; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + + function GetMultiSelect: Boolean; + procedure SetMultiSelect(const Value: Boolean); + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + + procedure SetFilter(const Value: string); + function GetFilter: string; + property Filter: string read GetFilter write SetFilter; + + function GetFiltered: Boolean; + property Filtered : Boolean read GetFiltered; + + function GetViewFiltros: IViewFiltroBase; + procedure SetViewFiltros(const Value: IViewFiltroBase); + property ViewFiltros: IViewFiltroBase read GetViewFiltros write SetViewFiltros; + + function esSeleccionCeldaDatos: Boolean; + + function getNumSeleccionados: Integer; + property NumSeleccionados: Integer read getNumSeleccionados; + + function Locate(const AItemIndex: Integer; const AValue: String; + const APartialCompare: Boolean = False) : Boolean; + end; + + + TfrViewGridBase = class(TfrViewBase, IViewGridBase) + dsDataSource: TDADataSource; + private + FViewFiltros: IViewFiltroBase; + FFilter: string; + FOnFilterChanged : TNotifyEvent; + FGridStatus : TcxGridStatus; + protected + FOnDblClick: TNotifyEvent; + FPopupMenu: TPopupMenu; + function GetMultiSelect: Boolean; virtual; + procedure SetMultiSelect(const Value: Boolean); virtual; + procedure SetPopupMenu(const Value: TPopupMenu); virtual; + function GetPopupMenu: TPopupMenu; virtual; + procedure SetDblClick(const Value: TNotifyEvent); virtual; + function GetDblClick: TNotifyEvent; virtual; + function GetGrid : TcxGrid; virtual; abstract; + function GetFocusedView : TcxGridDBTableView; virtual; abstract; + function esSeleccionCeldaDatos: Boolean; virtual; abstract; + function getNumSeleccionados: Integer; + + procedure SetFilter(const Value: string); virtual; + procedure RefrescarFiltro; + function GetFilter: string; virtual; + function GetFiltered: Boolean; virtual; + procedure FiltrarGrid(TextoFiltro : String); virtual; + function GetViewFiltros: IViewFiltroBase; + procedure SetViewFiltros(const Value: IViewFiltroBase); virtual; + procedure FilterChanged(Sender : TObject); virtual; + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + procedure ShowEmbedded(const AParent : TWinControl); override; + + procedure ExpandirTodo; virtual; + procedure ContraerTodo; virtual; + procedure AjustarAncho; virtual; + + procedure Preview; virtual; + procedure Print; virtual; + procedure PrintSetup; virtual; + + function IsEmpty : Boolean; virtual; + + procedure SaveGridStatus; + procedure RestoreGridStatus; + + procedure GotoFirst; + procedure GotoLast; + + procedure StoreToRegistry (const Path : String); virtual; + procedure RestoreFromRegistry (const Path : String); virtual; + + function Locate(const AItemIndex: Integer; const AValue: String; + const APartialCompare: Boolean = False) : Boolean; + + property Filter: string read GetFilter write SetFilter; + property Filtered : Boolean read GetFiltered; + + procedure AnadirOtrosFiltros; virtual; + property ViewFiltros: IViewFiltroBase read GetViewFiltros write SetViewFiltros; + + property _FocusedView : TcxGridDBTableView read GetFocusedView; + property _Grid : TcxGrid read GetGrid; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + property NumSeleccionados: Integer read getNumSeleccionados; + end; + +procedure Register; + +implementation + +uses + CCReg, uDataModuleBase, uDBSelectionListUtils; + +{$R *.dfm} + +procedure Register; +begin + RegisterCustomContainer(TfrViewGridBase); +end; + +{ TfrViewGrid } + +procedure TfrViewGridBase.AjustarAncho; +begin + if Assigned(_FocusedView) then + _FocusedView.ApplyBestFit; +end; + +procedure TfrViewGridBase.AnadirOtrosFiltros; +begin +// +end; + +procedure TfrViewGridBase.ContraerTodo; +begin + if Assigned(_FocusedView) then + _FocusedView.ViewData.Collapse(True); +end; + +constructor TfrViewGridBase.Create(AOwner: TComponent); +begin + inherited; + FFilter := ''; + FOnFilterChanged := FilterChanged; + FPopupMenu := nil; + FOnDblClick := nil; + FGridStatus := NIL; +end; + +procedure TfrViewGridBase.ExpandirTodo; +begin + if Assigned(_FocusedView) then + _FocusedView.ViewData.Expand(True); +end; + +function TfrViewGridBase.GetDblClick: TNotifyEvent; +begin + Result := FOnDblClick; +end; + +function TfrViewGridBase.GetFilter: string; +begin + Result := FFilter; +end; + +function TfrViewGridBase.GetFiltered: Boolean; +begin +//Los niveles de los grid no se consideran filtros + if (_Grid.Levels.Count > 1) then + Result := (_FocusedView.DataController.Filter.Root.Count > 1) + else + Result := (_FocusedView.DataController.Filter.Root.Count > 0); +end; + +function TfrViewGridBase.GetMultiSelect: Boolean; +begin + Result := _FocusedView.OptionsSelection.MultiSelect; +end; + +function TfrViewGridBase.getNumSeleccionados: Integer; +begin + Result := _FocusedView.DataController.GetSelectedCount; +end; + +function TfrViewGridBase.GetPopupMenu: TPopupMenu; +begin + Result := FPopupMenu; +end; + +function TfrViewGridBase.GetViewFiltros: IViewFiltroBase; +begin + Result := FViewFiltros; +end; + +procedure TfrViewGridBase.GotoFirst; +begin + if Assigned(_FocusedView) then + _FocusedView.DataController.GotoFirst; +end; + +procedure TfrViewGridBase.GotoLast; +begin + if Assigned(_FocusedView) then + _FocusedView.DataController.GotoLast; +end; + +function TfrViewGridBase.IsEmpty: Boolean; +begin + Result := (_FocusedView.ViewData.RowCount < 1); +end; + +function TfrViewGridBase.Locate(const AItemIndex: Integer; const AValue: String; + const APartialCompare: Boolean): Boolean; +begin +{ if Assigned(_FocusedView) then + Result := _FocusedView.DataController.FindRecordIndexByText(0, AItemIndex, AText, APartialCompare, True, True)} +end; + +procedure TfrViewGridBase.Preview; +begin +// +end; + +procedure TfrViewGridBase.Print; +begin +// +end; + +procedure TfrViewGridBase.PrintSetup; +begin +// +end; + +procedure TfrViewGridBase.RefrescarFiltro; +begin + //De esta forma obligaremos a que se creen nuevamente todos los filtros, cuando llamemos a este metodo + if Assigned(ViewFiltros) then + Filter := ViewFiltros.Texto; +end; + +procedure TfrViewGridBase.RestoreFromRegistry(const Path : String); +begin + if Assigned(_FocusedView) then + _FocusedView.RestoreFromRegistry(Path + '\\GridSettings\\' + Self.Name, False, False, [], Self.Name); +end; + +procedure TfrViewGridBase.RestoreGridStatus; +begin + if Assigned(FGridStatus) and (not IsEmpty) then + FGridStatus.Restore(_FocusedView); +end; + +procedure TfrViewGridBase.SaveGridStatus; +begin + FreeAndNil(FGridStatus); + if not IsEmpty then + FGridStatus := TcxGridStatus.Create(_FocusedView); +end; + +procedure TfrViewGridBase.SetDblClick(const Value: TNotifyEvent); +begin + FOnDblClick := Value; +end; + +procedure TfrViewGridBase.SetFilter(const Value: string); +begin + FFilter := Value; + + //As tendremos el mismo valor en el filtro simple que en el filtro en detalle + if Assigned(ViewFiltros) then + ViewFiltros.Texto := FFilter; + + FiltrarGrid(FFilter); + + //Obliga a generar todos los filtros de las vista hija + AnadirOtrosFiltros; + + if Assigned(FOnFilterChanged) then + FOnFilterChanged(Self); +end; + +procedure TfrViewGridBase.SetMultiSelect(const Value: Boolean); +begin + _FocusedView.OptionsSelection.MultiSelect := Value; +// _FocusedView..OnSelectionChanged := SelectionChanged; +end; + +procedure TfrViewGridBase.SetPopupMenu(const Value: TPopupMenu); +begin + FPopupMenu := Value; +end; + +procedure TfrViewGridBase.SetViewFiltros(const Value: IViewFiltroBase); +begin + if Assigned(FViewFiltros) then + ViewFiltros.OnFiltrosChange := Nil; + + FViewFiltros := Value; +end; + +procedure TfrViewGridBase.ShowEmbedded(const AParent: TWinControl); +begin + inherited; + + // No activar la tabla ya por si acaso tuviera parmetros +{ if not DADataSource.DataTable.Active then + DADataSource.DataTable.Active := True;} + + GotoFirst; + _FocusedView.Focused := True; + if _FocusedView.ViewData.RecordCount > 0 then + begin + _FocusedView.ViewData.Records[0].Selected := True; + _FocusedView.ViewData.Records[0].Focused := True; + end; +end; + +procedure TfrViewGridBase.StoreToRegistry(const Path : String); +begin + if Assigned(_FocusedView) then + _FocusedView.StoreToRegistry(Path + '\\GridSettings\\' + Self.Name, False, [], Self.Name); +end; + +procedure TfrViewGridBase.FiltrarGrid(TextoFiltro : String); +var + Columna: TcxGridDBColumn; + i: Integer; + AItemList: TcxFilterCriteriaItemList; +begin + with _FocusedView.DataController.Filter do + begin + BeginUpdate; + try + Options := [fcoCaseInsensitive, fcoSoftCompare]; + Root.Clear; + if Length(TextoFiltro) > 0 then + begin + AItemList := Root.AddItemList(fboAnd); + AItemList.BoolOperatorKind := fboOr; + for i:=0 to (_FocusedView as TcxGridDBTableView).ColumnCount - 1 do + begin + Columna := (_FocusedView as TcxGridDBTableView).Columns[i]; + if (Length(Columna.Caption) > 0) and (Columna.Caption <> 'RecID') then + AItemList.AddItem(Columna, foLike, '%'+TextoFiltro+'%', IntToStr(i)); + end; + Active := True; + end + else + Active := False; + finally + EndUpdate; + end; + end; +end; + + +procedure TfrViewGridBase.FilterChanged(Sender: TObject); +begin +// +end; + +destructor TfrViewGridBase.Destroy; +begin + FOnFilterChanged := Nil; + if Assigned(FGridStatus) then + FreeAndNil(FGridStatus); + inherited; +end; + +end. + diff --git a/Source/Base/GUIBase/uViewIncidencias.dfm b/Source/Base/GUIBase/uViewIncidencias.dfm new file mode 100644 index 00000000..451339a3 --- /dev/null +++ b/Source/Base/GUIBase/uViewIncidencias.dfm @@ -0,0 +1,54 @@ +inherited frViewIncidencias: TfrViewIncidencias + Width = 451 + Height = 370 + Align = alBottom + ExplicitWidth = 451 + ExplicitHeight = 370 + object pnlSup: TPanel + Left = 0 + Top = 0 + Width = 451 + Height = 28 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object eIncidenciaActiva: TcxDBCheckBox + Left = 2 + Top = 4 + Caption = 'Hay incidencias sin resolver' + DataBinding.DataField = 'INCIDENCIAS_ACTIVAS' + DataBinding.DataSource = DADataSource + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + TabOrder = 0 + Transparent = True + Width = 359 + end + end + object GroupBox1: TGroupBox + Left = 0 + Top = 28 + Width = 451 + Height = 342 + Align = alClient + Caption = 'Incidencias' + TabOrder = 1 + DesignSize = ( + 451 + 342) + object eIncidencias: TcxDBMemo + Left = 10 + Top = 22 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'INCIDENCIAS' + DataBinding.DataSource = DADataSource + TabOrder = 0 + Height = 305 + Width = 420 + end + end + object DADataSource: TDADataSource + Left = 560 + Top = 8 + end +end diff --git a/Source/Base/GUIBase/uViewIncidencias.pas b/Source/Base/GUIBase/uViewIncidencias.pas new file mode 100644 index 00000000..b017d385 --- /dev/null +++ b/Source/Base/GUIBase/uViewIncidencias.pas @@ -0,0 +1,30 @@ +unit uViewIncidencias; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, DB, uDADataTable, cxGraphics, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxDBEdit, cxControls, + cxContainer, cxEdit, cxLabel, cxDBLabel, cxCurrencyEdit, cxSpinEdit, + cxCheckBox, cxMemo; + +type + TfrViewIncidencias = class(TfrViewBase) + DADataSource: TDADataSource; + pnlSup: TPanel; + eIncidenciaActiva: TcxDBCheckBox; + eIncidencias: TcxDBMemo; + GroupBox1: TGroupBox; + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/GUIBase/uViewObservaciones.dfm b/Source/Base/GUIBase/uViewObservaciones.dfm new file mode 100644 index 00000000..f0b06091 --- /dev/null +++ b/Source/Base/GUIBase/uViewObservaciones.dfm @@ -0,0 +1,46 @@ +inherited frViewObservaciones: TfrViewObservaciones + Width = 300 + DesignSize = ( + 300 + 226) + object Label5: TLabel + Left = 8 + Top = 8 + Width = 85 + Height = 13 + Caption = 'Observaciones' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 96 + Top = 8 + Width = 192 + Height = 9 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object memObservaciones: TcxDBMemo + Left = 16 + Top = 32 + Anchors = [akLeft, akTop, akRight, akBottom] + DataBinding.DataField = 'OBSERVACIONES' + DataBinding.DataSource = DADataSource + Properties.ScrollBars = ssVertical + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 179 + Width = 269 + end + object DADataSource: TDADataSource + Left = 16 + Top = 48 + end +end diff --git a/Source/Base/GUIBase/uViewObservaciones.pas b/Source/Base/GUIBase/uViewObservaciones.pas new file mode 100644 index 00000000..2430ebac --- /dev/null +++ b/Source/Base/GUIBase/uViewObservaciones.pas @@ -0,0 +1,26 @@ +unit uViewObservaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, cxMemo, cxDBEdit, cxControls, + cxContainer, cxEdit, cxTextEdit, ExtCtrls, StdCtrls; + +type + TfrViewObservaciones = class(TfrViewBase) + Label5: TLabel; + Bevel1: TBevel; + memObservaciones: TcxDBMemo; + DADataSource: TDADataSource; + private + { Private declarations } + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/GUIBase/uViewPreview.dfm b/Source/Base/GUIBase/uViewPreview.dfm new file mode 100644 index 00000000..52e3be36 --- /dev/null +++ b/Source/Base/GUIBase/uViewPreview.dfm @@ -0,0 +1,10 @@ +inherited frViewPreview: TfrViewPreview + object frxPreview: TfrxPreview + Left = 0 + Top = 0 + Width = 294 + Height = 214 + Align = alClient + OutlineVisible = False + end +end diff --git a/Source/Base/GUIBase/uViewPreview.pas b/Source/Base/GUIBase/uViewPreview.pas new file mode 100644 index 00000000..c16f3764 --- /dev/null +++ b/Source/Base/GUIBase/uViewPreview.pas @@ -0,0 +1,43 @@ +unit uViewPreview; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, frxClass, frxPreview, JvComponent, JvFormAutoSize; + +type + IViewPreview = interface(IViewBase) + ['{F9A96948-4005-4E9B-8045-7B4874A05D19}'] + function GetPreview: TfrxPreview; + property Preview : TfrxPreview read GetPreview; + end; + + TfrViewPreview = class(TfrViewBase, IViewPreview) + frxPreview: TfrxPreview; + private + function GetPreview: TfrxPreview; + public + property Preview : TfrxPreview read GetPreview; + end; + +implementation + +{$R *.dfm} + +{ TfrViewPreview } + +function TfrViewPreview.GetPreview: TfrxPreview; +begin + Result := frxPreview; +end; + +initialization + RegisterClass(TfrViewPreview); + +finalization + UnRegisterClass(TfrViewPreview); + +end. + + diff --git a/Source/Base/GUIBase/uViewTotales.dfm b/Source/Base/GUIBase/uViewTotales.dfm new file mode 100644 index 00000000..d3e8b6e6 --- /dev/null +++ b/Source/Base/GUIBase/uViewTotales.dfm @@ -0,0 +1,619 @@ +inherited frViewTotales: TfrViewTotales + Width = 451 + Height = 350 + Align = alBottom + ExplicitWidth = 451 + ExplicitHeight = 350 + object dxLayoutControl1: TdxLayoutControl + AlignWithMargins = True + Left = 0 + Top = 0 + Width = 451 + Height = 217 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object Bevel1: TBevel + Left = 104 + Top = 109 + Width = 73 + Height = 9 + Shape = bsBottomLine + end + object Bevel3: TBevel + Left = 278 + Top = 28 + Width = 3 + Height = 122 + Shape = bsRightLine + end + object Bevel4: TBevel + Left = 390 + Top = 109 + Width = 192 + Height = 9 + Shape = bsBottomLine + end + object ImporteDto: TcxDBCurrencyEdit + Left = 175 + Top = 129 + AutoSize = False + DataBinding.DataField = 'IMPORTE_DESCUENTO' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Height = 21 + Width = 93 + end + object ImporteIVA: TcxDBCurrencyEdit + Left = 461 + Top = 55 + AutoSize = False + DataBinding.DataField = 'IMPORTE_IVA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 9 + Height = 21 + Width = 137 + end + object ImporteTotal: TcxDBCurrencyEdit + Left = 391 + Top = 129 + AutoSize = False + DataBinding.DataField = 'IMPORTE_TOTAL' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -12 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clActiveCaption + Style.TextStyle = [fsBold] + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 12 + Height = 21 + Width = 137 + end + object edtDescuento: TcxDBSpinEdit + Left = 104 + Top = 129 + AutoSize = False + DataBinding.DataField = 'DESCUENTO' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = ',0.00 %;-,0.00 %' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.ButtonStyle = bts3D + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Height = 21 + Width = 65 + end + object edtIVA: TcxDBSpinEdit + Left = 390 + Top = 55 + AutoSize = False + DataBinding.DataField = 'IVA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.AssignedValues.MinValue = True + Properties.DisplayFormat = ',0.00 %;-,0.00 %' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.ButtonStyle = bts3D + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 8 + Height = 21 + Width = 65 + end + object ImporteBase: TcxDBCurrencyEdit + Left = 390 + Top = 28 + AutoSize = False + DataBinding.DataField = 'BASE_IMPONIBLE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [fsBold] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 7 + Height = 21 + Width = 92 + end + object edtRE: TcxDBSpinEdit + Left = 390 + Top = 82 + AutoSize = False + DataBinding.DataField = 'RE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.AssignedValues.EditFormat = True + Properties.DisplayFormat = ',0.00 %;-,0.00 %' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.ButtonStyle = bts3D + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 10 + Height = 21 + Width = 65 + end + object ImporteRE: TcxDBCurrencyEdit + Left = 461 + Top = 82 + AutoSize = False + DataBinding.DataField = 'IMPORTE_RE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 11 + Height = 21 + Width = 56 + end + object eImporteNeto: TcxDBCurrencyEdit + Left = 104 + Top = 28 + AutoSize = False + DataBinding.DataField = 'IMPORTE_NETO' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [fsBold] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Height = 21 + Width = 147 + end + object ePorte: TcxDBCurrencyEdit + Left = 104 + Top = 156 + AutoSize = False + DataBinding.DataField = 'IMPORTE_PORTE' + DataBinding.DataSource = DADataSource + ParentFont = False + Properties.Alignment.Horz = taRightJustify + Properties.ReadOnly = False + Properties.UseLeftAlignmentOnEditing = False + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clWindowText + Style.Font.Height = -11 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [] + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.TextColor = clWindowText + Style.IsFontAssigned = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 6 + Height = 21 + Width = 147 + end + object eIVA: TcxDBLookupComboBox + Left = 104 + Top = 55 + DataBinding.DataField = 'ID_TIPO_IVA' + DataBinding.DataSource = DADataSource + Properties.GridMode = True + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'REFERENCIA' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsTiposIVA + 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 = 1 + Width = 81 + end + object bTiposIVA: TButton + Left = 130 + Top = 55 + Width = 132 + Height = 21 + Caption = 'Ver los tipos de IVA...' + TabOrder = 2 + end + object cbRecargoEquivalencia: TcxDBCheckBox + Left = 104 + Top = 82 + Caption = 'Aplicar recargo de equivalencia' + DataBinding.DataField = 'RECARGO_EQUIVALENCIA' + DataBinding.DataSource = DADataSource + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 3 + Width = 219 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Importes totales' + LayoutDirection = ldHorizontal + object dxLayoutControl1Group2: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Importe neto:' + Control = eImporteNeto + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group6: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item11: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Tipo de IVA:' + Control = eIVA + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item15: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + ShowCaption = False + Control = bTiposIVA + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item16: TdxLayoutItem + Caption = ' ' + Control = cbRecargoEquivalencia + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item10: TdxLayoutItem + Caption = ' ' + Control = Bevel1 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group7: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + Caption = 'Descuento (%):' + Control = edtDescuento + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Importe de dto:' + ShowCaption = False + Control = ImporteDto + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Porte:' + Control = ePorte + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item13: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = ' ' + Offsets.Left = 10 + Offsets.Right = 10 + ShowCaption = False + Control = Bevel3 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group3: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item12: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Base imponible:' + Control = ImporteBase + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group9: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + Caption = 'IVA (%):' + CaptionOptions.AlignHorz = taRightJustify + Control = edtIVA + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Importe de IVA:' + ShowCaption = False + Control = ImporteIVA + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group8: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + Caption = 'RE. (%):' + CaptionOptions.AlignHorz = taRightJustify + Control = edtRE + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item7: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Importe de RE:' + ShowCaption = False + Visible = False + Control = ImporteRE + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item14: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = ' ' + Control = Bevel4 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Importe total:' + LookAndFeel = LookAndFeelIMPORTE_TOTAL + Control = ImporteTotal + ControlOptions.ShowBorder = False + end + end + end + end + end + object dxLayoutControl1Group4: TdxLayoutGroup + end + end + object DADataSource: TDADataSource + Left = 8 + Top = 8 + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 40 + Top = 8 + object LookAndFeelIMPORTE_TOTAL: TdxLayoutStandardLookAndFeel + ItemOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + ItemOptions.CaptionOptions.Font.Color = clWindowText + ItemOptions.CaptionOptions.Font.Height = -12 + ItemOptions.CaptionOptions.Font.Name = 'Tahoma' + ItemOptions.CaptionOptions.Font.Style = [fsBold] + ItemOptions.CaptionOptions.UseDefaultFont = False + end + end + object dsTiposIVA: TDADataSource + Left = 8 + Top = 40 + end +end diff --git a/Source/Base/GUIBase/uViewTotales.pas b/Source/Base/GUIBase/uViewTotales.pas new file mode 100644 index 00000000..4b92be56 --- /dev/null +++ b/Source/Base/GUIBase/uViewTotales.pas @@ -0,0 +1,71 @@ +unit uViewTotales; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, DB, uDADataTable, cxGraphics, + cxTextEdit, cxMaskEdit, cxDropDownEdit, cxDBEdit, cxControls, + cxContainer, cxEdit, cxLabel, cxDBLabel, cxCurrencyEdit, cxSpinEdit, + ComCtrls, dxLayoutControl, dxLayoutLookAndFeels, cxLookupEdit, cxDBLookupEdit, + cxDBLookupComboBox, cxCheckBox; + +type + TfrViewTotales = class(TfrViewBase) + DADataSource: TDADataSource; + ImporteBase: TcxDBCurrencyEdit; + ImporteDto: TcxDBCurrencyEdit; + ImporteIVA: TcxDBCurrencyEdit; + ImporteTotal: TcxDBCurrencyEdit; + edtDescuento: TcxDBSpinEdit; + edtIVA: TcxDBSpinEdit; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + dxLayoutControl1Item2: TdxLayoutItem; + dxLayoutControl1Item3: TdxLayoutItem; + dxLayoutControl1Item4: TdxLayoutItem; + dxLayoutControl1Item5: TdxLayoutItem; + dxLayoutControl1Item12: TdxLayoutItem; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group4: TdxLayoutGroup; + dxLayoutControl1Group5: TdxLayoutGroup; + dxLayoutControl1Item6: TdxLayoutItem; + edtRE: TcxDBSpinEdit; + dxLayoutControl1Item7: TdxLayoutItem; + ImporteRE: TcxDBCurrencyEdit; + dxLayoutControl1Item8: TdxLayoutItem; + eImporteNeto: TcxDBCurrencyEdit; + dxLayoutControl1Item9: TdxLayoutItem; + ePorte: TcxDBCurrencyEdit; + dxLayoutControl1Group2: TdxLayoutGroup; + Bevel1: TBevel; + dxLayoutControl1Item10: TdxLayoutItem; + dxLayoutControl1Group7: TdxLayoutGroup; + Bevel3: TBevel; + dxLayoutControl1Item13: TdxLayoutItem; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Item14: TdxLayoutItem; + Bevel4: TBevel; + dxLayoutControl1Group9: TdxLayoutGroup; + dxLayoutControl1Group8: TdxLayoutGroup; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + LookAndFeelIMPORTE_TOTAL: TdxLayoutStandardLookAndFeel; + dxLayoutControl1Item11: TdxLayoutItem; + eIVA: TcxDBLookupComboBox; + dxLayoutControl1Item15: TdxLayoutItem; + bTiposIVA: TButton; + dxLayoutControl1Group6: TdxLayoutGroup; + dsTiposIVA: TDADataSource; + dxLayoutControl1Item16: TdxLayoutItem; + cbRecargoEquivalencia: TcxDBCheckBox; + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/Jv3rdD10R.drc b/Source/Base/Jv3rdD10R.drc new file mode 100644 index 00000000..09081cc2 --- /dev/null +++ b/Source/Base/Jv3rdD10R.drc @@ -0,0 +1,21 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +DESCRIPTION RCDATA +BEGIN + "\x4c", "\x00", "\x69", "\x00", "\x62", "\x00", "\x72", "\x00", /* 0000: L.i.b.r. */ + "\x65", "\x00", "\x72", "\x00", "\x69", "\x00", "\x61", "\x00", /* 0008: e.r.i.a. */ + "\x20", "\x00", "\x62", "\x00", "\x61", "\x00", "\x73", "\x00", /* 0010: .b.a.s. */ + "\x65", "\x00", "\x20", "\x00", "\x64", "\x00", "\x65", "\x00", /* 0018: e. .d.e. */ + "\x20", "\x00", "\x46", "\x00", "\x61", "\x00", "\x63", "\x00", /* 0020: .F.a.c. */ + "\x74", "\x00", "\x75", "\x00", "\x47", "\x00", "\x45", "\x00", /* 0028: t.u.G.E. */ + "\x53", "\x00", "\x00", "\x00" /* 0030: S... */ +END + diff --git a/Source/Base/Usuarios/Usuarios.bdsproj b/Source/Base/Usuarios/Usuarios.bdsproj new file mode 100644 index 00000000..6a6eb5fa --- /dev/null +++ b/Source/Base/Usuarios/Usuarios.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Usuarios.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Gestión de usuarios + + + + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\Lib;..\..\Modulos\Lib + vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;dclOfficeXP;cxLibraryVCLD7;dxThemeD7;cxTreeListVCLD7;cxEditorsVCLD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;dxComnD7;dxsbD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxLayoutControlD7;dxNavBarD7;dxPSCoreD7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;cxIntlSchedulerD7;fsIBX7;fs7;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fsADO7;fsBDE7;fsDB7;cxVerticalGridVCLD7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 3 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.3.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Base/Usuarios/Usuarios.dpk b/Source/Base/Usuarios/Usuarios.dpk new file mode 100644 index 00000000..f60f5fa0 --- /dev/null +++ b/Source/Base/Usuarios/Usuarios.dpk @@ -0,0 +1,43 @@ +package Usuarios; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Gestin de usuarios'} +{$IMPLICITBUILD OFF} + +requires + vcl, + vcldb, + DataAbstract_D10, + Base, + Empresas_model, + Empresas_controller; + +contains + uDataModuleUsuarios in 'uDataModuleUsuarios.pas' {dmUsuarios: TDAClientDataModule}, + uUsuarios in 'uUsuarios.pas' {fUsuarios}, + uUsuario in 'uUsuario.pas' {fUsuario}, + uLoginForm in 'uLoginForm.pas' {fLoginForm}, + uCambiarPassword in 'uCambiarPassword.pas' {fCambiarPassword}; + +end. diff --git a/Source/Base/Usuarios/Usuarios.dproj b/Source/Base/Usuarios/Usuarios.dproj new file mode 100644 index 00000000..8f80e1ec --- /dev/null +++ b/Source/Base/Usuarios/Usuarios.dproj @@ -0,0 +1,603 @@ + + + {0e3d28a9-51af-483b-b478-472a086ee120} + Usuarios.dpk + Debug + AnyCPU + DCC32 + ..\..\..\Output\Debug\Cliente\Usuarios.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\Lib;..\..\Modulos\Lib + ..\..\Lib;..\..\Modulos\Lib + ..\..\Lib;..\..\Modulos\Lib + ..\..\Lib;..\..\Modulos\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\Lib;..\..\Modulos\Lib + ..\..\Lib;..\..\Modulos\Lib + ..\..\Lib;..\..\Modulos\Lib + ..\..\Lib;..\..\Modulos\Lib + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + Gestión de usuarios + False + False + False + + + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 3 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.3.0 + + + + + + 1.0.0.0 + + + + Usuarios.dpk + + + + + + + MainSource + + + + + + + + +
fCambiarPassword
+
+ +
dmUsuarios
+
+ +
fLoginForm
+
+ +
fUsuario
+
+ +
fUsuarios
+
+
+ +
+ + diff --git a/Source/Base/Usuarios/Usuarios.drc b/Source/Base/Usuarios/Usuarios.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Base/Usuarios/Usuarios.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Base/Usuarios/Usuarios.rc b/Source/Base/Usuarios/Usuarios.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Base/Usuarios/Usuarios.res b/Source/Base/Usuarios/Usuarios.res new file mode 100644 index 00000000..73fae82f Binary files /dev/null and b/Source/Base/Usuarios/Usuarios.res differ diff --git a/Source/Base/Usuarios/uCambiarPassword.dfm b/Source/Base/Usuarios/uCambiarPassword.dfm new file mode 100644 index 00000000..91698274 --- /dev/null +++ b/Source/Base/Usuarios/uCambiarPassword.dfm @@ -0,0 +1,94 @@ +object fCambiarPassword: TfCambiarPassword + Left = 460 + Top = 492 + Width = 361 + Height = 299 + Caption = 'Cambiar la contrase'#241'a' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 136 + Top = 230 + Width = 120 + Height = 25 + Caption = '&Cambiar la contrase'#241'a' + Default = True + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 269 + Top = 230 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object PageControl1: TPageControl + Left = 2 + Top = 2 + Width = 349 + Height = 217 + ActivePage = pagContrasena + TabOrder = 2 + object pagContrasena: TTabSheet + Caption = 'Cambiar la contrase'#241'a' + object Label4: TLabel + Left = 16 + Top = 19 + Width = 167 + Height = 13 + Caption = 'Escriba la nueva contrase'#241'a:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + end + object Label1: TLabel + Left = 16 + Top = 72 + Width = 257 + Height = 13 + Caption = 'Repita la nueva contrase'#241'a para confirmarla:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + end + object edtPassword2: TEdit + Left = 16 + Top = 88 + Width = 295 + Height = 21 + CharCase = ecLowerCase + PasswordChar = '*' + TabOrder = 0 + end + object edtPassword: TEdit + Left = 16 + Top = 39 + Width = 295 + Height = 21 + CharCase = ecLowerCase + PasswordChar = '*' + TabOrder = 1 + end + end + end +end diff --git a/Source/Base/Usuarios/uCambiarPassword.pas b/Source/Base/Usuarios/uCambiarPassword.pas new file mode 100644 index 00000000..03a158bf --- /dev/null +++ b/Source/Base/Usuarios/uCambiarPassword.pas @@ -0,0 +1,41 @@ +unit uCambiarPassword; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls; + +type + TfCambiarPassword = class(TForm) + bAceptar: TButton; + bCancelar: TButton; + Label4: TLabel; + edtPassword: TEdit; + Label1: TLabel; + edtPassword2: TEdit; + PageControl1: TPageControl; + pagContrasena: TTabSheet; + procedure bAceptarClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + fCambiarPassword: TfCambiarPassword; + +implementation + +{$R *.dfm} + +procedure TfCambiarPassword.bAceptarClick(Sender: TObject); +begin + if edtPassword2.Text <> edtPassword.Text then + raise Exception.Create('Por favor, introduzca la MISMA contrasea en los dos campos') + else + ModalResult := mrOK; +end; + +end. diff --git a/Source/Base/Usuarios/uDataModuleUsuarios.dfm b/Source/Base/Usuarios/uDataModuleUsuarios.dfm new file mode 100644 index 00000000..3b723c44 --- /dev/null +++ b/Source/Base/Usuarios/uDataModuleUsuarios.dfm @@ -0,0 +1,24 @@ +object dmUsuarios: TdmUsuarios + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = ROLoginService + Adapter = DABINAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Height = 172 + Width = 355 + object ROLoginService: TRORemoteService + ServiceName = 'srvLogin' + Left = 48 + Top = 32 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 104 + end +end diff --git a/Source/Base/Usuarios/uDataModuleUsuarios.pas b/Source/Base/Usuarios/uDataModuleUsuarios.pas new file mode 100644 index 00000000..0c01c4e2 --- /dev/null +++ b/Source/Base/Usuarios/uDataModuleUsuarios.pas @@ -0,0 +1,209 @@ +unit uDataModuleUsuarios; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + FactuGES_Intf, uIntegerListUtils, uBizEmpresas; + +const + PERFIL_ADMINISTRADORES = 'Administradores'; + +type + TdmUsuarios = class(TDAClientDataModule) + ROLoginService: TRORemoteService; + DABINAdapter: TDABINAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + procedure DAClientDataModuleDestroy(Sender: TObject); + private + FUsuario : String; + FPassword : String; // Lo guardo para poder hacer una reconexin + + FLoginInfo: TRdxLoginInfo; + FEmpresaActual: IBizEmpresa; + function CambiarPassword (const APassword : String) : boolean; overload; + function GetEsAdministrador: Boolean; + + function GetEmpresas: TIntegerList; + + procedure SetEmpresaActual(const Value: IBizEmpresa); + function GetIDEmpresaActual: Integer; + procedure SetIDEmpresaActual(const Value: Integer); + public + function Login: Boolean; overload; + function Login(Usuario: String; Password: String): Boolean; overload; + procedure Logout; + procedure CambiarPassword; overload; + property EsAdministrador : Boolean read GetEsAdministrador; + property IDEmpresaActual : Integer read GetIDEmpresaActual write SetIDEmpresaActual; + property EmpresaActual : IBizEmpresa read FEmpresaActual write SetEmpresaActual; + property Empresas : TIntegerList read GetEmpresas; + property LoginInfo: TRdxLoginInfo read FLoginInfo; + end; + +var + dmUsuarios: TdmUsuarios; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uDataModuleConexion, uLoginForm, + uCambiarPassword, Dialogs, Windows, uEmpresasController; + +{ TDAClientDataModule1 } + +procedure TdmUsuarios.DAClientDataModuleCreate(Sender: TObject); +begin + ROLoginService.Channel := dmConexion.Channel; + ROLoginService.Message := dmConexion.Message; + FEmpresaActual := nil; + FUsuario := ''; + FPassword := ''; + FLoginInfo := NIL; +end; + +function TdmUsuarios.Login: Boolean; +begin + // Intento hacer login si el usuario ya lo haba hecho antes + if (Length(FUsuario) > 0) then + if Login(FUsuario, FPassword) then + begin + Result := True; + Exit; + end; + + // Si no funcionar el login anterior o es la primera vez, + // saco la pantalla de login + with TfLoginForm.Create(NIL) do + try + if Assigned(FLoginInfo) then + edtUser.Text := FLoginInfo.Usuario; + Result := (ShowModal = mrOK) + finally + Free; + end; +end; + +function TdmUsuarios.Login(Usuario: String; Password: String): Boolean; +begin + // Libero la informacin del login anterior (sesin, etc) + if Assigned(FLoginInfo) then + FreeANDNil(FLoginInfo); + + Result := (ROLoginService as IsrvLogin).Login(Usuario, Password, FLoginInfo); + + if Result then + begin + // Lo guardo para poder reconectarme + FUsuario := Usuario; + FPassword := Password; + end; +end; + +procedure TdmUsuarios.Logout; +begin + (ROLoginService as IsrvLogin).Logout; + if Assigned(FLoginInfo) then + FreeANDNil(FLoginInfo); + FUsuario := ''; + FPassword := ''; +end; + +procedure TdmUsuarios.SetEmpresaActual(const Value: IBizEmpresa); +begin + FEmpresaActual := Value; + FEmpresaActual.DataTable.Active := True; +end; + +procedure TdmUsuarios.SetIDEmpresaActual(const Value: Integer); +var + AEmpresasController : IEmpresasController; + AEmpresa : IBizEmpresa; +begin + AEmpresasController := TEmpresasController.Create; + AEmpresa := AEmpresasController.Buscar(Value); + AEmpresa.DataTable.Active := True; + + if not AEmpresa.IsEmpty then + begin + FEmpresaActual := AEmpresa; + FEmpresaActual.DataTable.Active := True; + end + else + FEmpresaActual := NIL; +end; + +procedure TdmUsuarios.DAClientDataModuleDestroy(Sender: TObject); +begin + if Assigned(FLoginInfo) then + FreeANDNil(FLoginInfo); +end; + +function TdmUsuarios.GetEmpresas: TIntegerList; +var + i : integer; +begin + Result := TIntegerList.Create; + + if not Assigned(FLoginInfo) then + raise Exception.Create('Usuario no validado en el sistema (login)'); + + for i := 0 to FLoginInfo.Empresas.Count - 1 do + Result.Add(FLoginInfo.Empresas.Items[i]); +end; + +function TdmUsuarios.GetEsAdministrador: Boolean; +var + I: Integer; +begin + Result := False; + + if not Assigned(FLoginInfo) then + raise Exception.Create('Usuario no validado en el sistema (login)'); + + for I := 0 to FLoginInfo.Perfiles.Count - 1 do + if FLoginInfo.Perfiles.Items[I] = PERFIL_ADMINISTRADORES then + begin + Result := True; + Break; + end; +end; + +function TdmUsuarios.GetIDEmpresaActual: Integer; +begin + if not Assigned(FEmpresaActual) then + Result := ID_NULO + else + Result := FEmpresaActual.ID; +end; + +procedure TdmUsuarios.CambiarPassword; +begin + with TfCambiarPassword.Create(NIL) do + try + if ShowModal = mrOk then + if CambiarPassword(edtPassword.Text) then + Application.MessageBox('La contrasea ha sido cambiada correctamente.', 'Informacin', MB_OK); + finally + Free; + end; +end; + +function TdmUsuarios.CambiarPassword(const APassword: String): boolean; +begin +{ if not (ROLoginService as IsrvLogin).SetUserPassword(LoginInfo.UserID, APassword) then + raise Exception.Create('Error en el servidor. No se ha podido cambiar la contrasea');} + Result := True; +end; + +initialization + dmUsuarios := TdmUsuarios.Create(nil); + +finalization + FreeAndNil(dmUsuarios); + +end. diff --git a/Source/Base/Usuarios/uLoginForm.dfm b/Source/Base/Usuarios/uLoginForm.dfm new file mode 100644 index 00000000..bfa1641a --- /dev/null +++ b/Source/Base/Usuarios/uLoginForm.dfm @@ -0,0 +1,1099 @@ +object fLoginForm: TfLoginForm + Left = 790 + Top = 387 + ActiveControl = edtUser + BorderStyle = bsDialog + Caption = 'FactuGES' + ClientHeight = 241 + ClientWidth = 385 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Label3: TLabel + Left = 24 + Top = 108 + Width = 39 + Height = 13 + Caption = 'Usuario:' + Transparent = False + end + object Label4: TLabel + Left = 24 + Top = 138 + Width = 57 + Height = 13 + Caption = 'Contrase'#241'a:' + Transparent = False + end + object Label1: TLabel + Left = 16 + Top = 72 + Width = 94 + Height = 13 + Caption = 'Inicio de sesi'#243'n:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clMenuHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object JvGradient1: TJvGradient + Left = 0 + Top = 57 + Width = 385 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 385 + Height = 57 + Align = alTop + BevelOuter = bvNone + Color = clWhite + TabOrder = 0 + object Image1: TImage + Left = 0 + Top = 0 + Width = 385 + Height = 57 + Align = alClient + Center = True + Picture.Data = { + 0B544A76474946496D616765F6750000474946383961C201FA00E60000FFFFFF + F5F5F5A92824ECECECEB743DF48545EF7B40DEDEDECD452DEAEAEAD0492EDC5A + 34FAFAFAF2F2F2BC2A26B02724E5E5E5E26236B95B55E1E1E1F8F8F8D95532FC + FCFCF5D6CAD4D4D4F5C8B5D1B5B0F0F0F0E66A39C23428D65131EEEEEEBCBABA + FEFEFEF7B192F49366CB938CD34D30C7726AC63A2AE96E3BC7564CD26958EEB5 + A5F9E9E3D7C5C2C93F2BE46638F8E1D8D2867AC9C5C4E05E35C03027B82725C7 + 453AE79A89B9322ECBA59EF7A47BFCF4F1FCF0EBB93A36D8D5D4B44741BF2D26 + EEE2E0A22925AB3934A7302CFEF8F5FEF9F8C33B33DB5D3DB52724B12E2AD251 + 3AD9CFCDE47D60FEFCFCBC7D75BD2C26EBE9E9D6D6D7FFFEFDF7F1F0FEFBFAFD + FDFDF3F0EFE8DDDCFBF8F7DFDFDFDED7D6D45A43F4F4F4E0E0E0DADADAC94E41 + F9F9F9DF6648EBEBEBF1EBEAE4E4E4D8D8D8EDEDEDD94E2FD95738C53729EFEF + EFFFFFFEF3F3F3E2E2E2EBECEDE8E8E8F7F7F7EFF0F0CDCCCCF1EEEDE7E7E7F1 + F2F3F1E8E5E76035E86B39D1D1D2F2F3F4EEEDEECF3F2AD2D0D0F1F1F12C0000 + 0000C201FA000007FF800582838485868788898A8322173C5300919293949596 + 9798999A9B9C9D9E9FA0A1A2A393560C717F6763670D710C56A4B1B2B3B4B5B1 + 8323B887B982BC05BEC0BABDBBC2BFBF3A193046B6CCCDCECFD0D1A50C011F70 + 1075636B6D71161621E0D2E2B4E02156E7E8E9EAE5E3968BEFF0F1883A8D3BED + F7F8F9FAA2A601677513DC9481A38D5B180BB0F629BC64C502030A7102489C48 + 31401C0A0713EA3336AC23C78FC10C8504590CD808643C16AA5CC9125AC30003 + CA68D1E265421908633E18D4D8529F290A5DFEAC3933A0A8D1A31FFE707BB54F + 9ED3A78B4624EB49B5AAD54DFD621ED8BAD58B9B6C6B5A85796525C4D567211C + 024D05A70E843270FFE3CA850067C0862EDDCAE283CAB76F2F1130CE0A1EDCF3 + A556AE5D05D649F0A141000A0C2C10B665254C805409EA947133C18BE7CF9E27 + 88BEC9F84F808366DBF95DFD54C785296C26CB9E2DAEDF3F2D880FCCD4127031 + ABC7DF688B4A4BA1CD87CC9BBDEC5ECE9CA6CD3A701ABB4A2D8EB5F577272F14 + 7122BCBB77592FCF40505ED38D4037CA0FD88490C02EDEC87ABF33B410A6CB86 + 319A95E35E0E9A79D7E78C75414170D22462006B072A9260010B1E825211B1C9 + 27E18498D8564768742590001C654C3053796580F51E4F1486704A030370881E + 6E5B3967DE8B9C75C6E287E6E1F44737D55DA7E32E52C1C00377140629E44B1F + 5CE8C5408DB5B1C6FF186FA597581DEE0D489D7CE05810C006097488988B37D5 + E1A59710BCB5998C5B0EB4018ED10CB2608387ACA9669B6F1AC2A6200D9E944C + 1542E639615A71AC0107676E24D0401861C4A1247E7079A8DB04741574DA2B53 + D26662351C7AC11588D02530C651638CA1615B6FADC8951603AD110042D0ECA8 + AA21F4C050849EB07AC7E7067FDA344617AF3864E8922A5ACA9B798B49170689 + B3595964194E6AE14686037CB0C6061BFCF107B46B7C4094A76D71C6E2015E45 + 776AA4B53028EE81E48E6B6EB9E89EAB6EBAECAA5B0032F6C42AAF6CE650F047 + 029C95716B59E09862E87DD7ACB8DBB28CB502293B839913C01A00EDC75B8839 + 6DD0461B5D54D445FF1B0D48BBC150F84140E6568C7E100003E0CE42679CE29E + AC72CA2C13E2A69C28BFFC4B062C4032EFCD67D57B6F876524D0C637E5985868 + 5067B4D5A1AF006E13471C631178D5A4D6B871E9570557BCF4D5584B74710319 + 7F304002A1A6A76C1D67E04AAC2CEBA6DDEEDA6AB7CDEE0880155132CE742B64 + 4E180D8CD161A07F8411B4390D3D74D97110B8B15F4D21367B1744929D654535 + 855BAADB57EE5D440146845E0ED1D25A6F3DED0763043CE3047588EC342D32A7 + 1EF3EA2BABDE7A21705FB083CD75D7BED0DD79EF0DC70614F0FB779510357046 + 669CE977A497496D70EA3973EB034E181B5CD8E29170B0C27464D833A03DA161 + 5C1E5144124DDCC0FF50C46F1B72006793E2F6FA6CB7CF3E8376C280A7EDF43B + 5F59DE80C2F147EFBF07AD56000D009D8A6612104611447990499FF318D005BD + 4DAD7AA6699A37B497BDED758F735A9B98508AE6B119B9010E6D600033DC47C2 + F795B05DBF004CBCEAC7C271E82C4B36D1DFB0FAF7B78614AA0DF7A983E166C2 + 2D0336E6348D5B8905FA0410AE7CE50C6D78943796C8C4EC656E7301B818C6A6 + 95A20ECDA80C1FA040F3426100727591415FECA217C70846328AB18C683CA31A + C3C8C60421830555D8620BE7188B17022A017DF31D0DFD770AE3802D39B8395E + 7BFE2020F8C8112DF6FAD37E488744A631511D4C748805A1D805298EAF8A8A52 + 8FA098823A137AF2FF84EF938AEC8044C752D6C28ED4CBE31EFB674343798D43 + 1EA2498D08B28611EDE3710340CFA26C3432F8A80392137448E6302845A1202A + 3D5E80C0194676484E88F199D08CA634A749CD6A5AF3406F7442334DC9CD4CD8 + 312078E4DF2A69D89038D80793DBF20A4E6A09996DD682017FA8038B8E84C791 + 2D9179BF4B47301930CCCE4D917002FBCA1AE2A0C04FACD18C6D7C661ADB5846 + 851E74A1647C1760E2D8CD8A0EE77E7A0BC8EEC4394E1AEAAA0D7F48D15BC8F4 + 1CBB180452D2A8D707CA60C4D201311DE18844D0F4E910615E302295C4D80686 + D7416EE9AB0B418CC535874AD4A256B309B1939B4597FA0913B5610085FBE099 + 80D651720AF3321CFFD4A52C43543057147416698189D474D3B31BF9D27792A8 + E1399648C10B4EA498A0D321D2E0D00092CD62A80DB5665EA3B9D7315ED34E3C + 981F5307EB4D6A14893375182842AADA51FA5C89A7C85A0EC174E2557E35E37E + 7FD28D17C8862B6FA023A6699DE95A9DE8D6286A7028D798408B20B0062DBAF3 + 12468DED350920DB2EC68E07AF252C37ADE4A70EB974B1E5680842F458557F01 + 10A05A7D4E4E4C33A0F8D462880CF350B74CA5BDE15A76126A156E5B6F6A5A9D + 2EA9702C2AC319BA91DB4AD4F6BCE8856613DE958C65E8F6BD941822AD6A643A + 3DD6D4908CED9724E320BC3F1A6F3D1004627931C140A87AC85666F52C5AB12B + 5AE14AB27B10C9A0FF7707A0C3F00E6079B230006D69DBC50D6B588C1CFEB087 + 3DDC611183F8C4252EF1884DCC61418820032B842F7CE5ABA2D2E5858FDD1BCB + 59F36B0E6AFCE1389A91116E7CE89883004D1661F843A5C666BDEA02371CF944 + 075BB7E73D9C8A6F5A458BEC017AD686616538BD6046EFCC5820E332D31858A6 + 7A725A0A15458B60E460F935EEF83A66B84591E60C84F4EA80654AC458226929 + 35C52739D7BA4F7E7A4FC219DB29D814C5B7016578C59066B1A4493CE94A47FA + D21A7E5760CA3CE385C132B1372E87430230C506546C2CC4EDE85A2D631CFCD4 + 994674B10B70F61C02C8E9E7834A73B2A0594968D26ECECA535474E494B5D1A0 + 8A42C5964671A59FFF19624C3B7BD9AED90EA7757B0A3F2156B17AFC09A9B996 + 448BE878B83C1EF5A13453BC992CAB2E7771A47339814B99F83401E9A6A08279 + 4DE8094E929853FCDC31790307C53E5AC3047836A4039E6C81175CD23D8AF1B4 + 2DCADB4F635BB4DB035F4EAD0619AA325698FFFA5A937AB82CB018ECAB94C065 + 9D9309EFF74466DED9AD3705F9595AD3664CDFB0E44D624F250B83DBFCE037C7 + B401EC54B3853315BAB59AB99A67EA0D88943A89154FB5AA1DCB96CDCCC82B8B + 61E7E932D1EE40B227DDDF4679BFA43CE57B5B248A9E839600AD48BA818A3016 + 014FBBDAD7CEF6B6BBFDED708F7BDA33AD0357F97CA90DF7ADC8E0CC4AFA00BB + 62DEAEAED2572938FFCC846DC8109398120BFAB8318CFCEA492494BC7FC9757B + 4F32C219E4DAB4381673D2EDBDE638C739C1731EFAB96F185E7767781CE67BBE + A1E7F3C114907012D5CDE3C059A6BF3A8CA55706D255D4540826EEA6A7D2DEAC + EB5F36F1C1C394F895A935BC20CBDCEC35DFB0DCA74FFDEA4FBF0934A35DEA4B + 69255AF9B66C9149F9EBD90CD23F985ADDBB2E2E35C6879C5806843461111055 + 430EFC4022C93197D3F1C969CA56E473B7BB2FB7316BF03572C56FFE86760067 + 7D6F97806AC780D5E7806EF72E8EA07DDBD74267B62C03D06516471F97835F7C + 14619504786EA63DE9B74A0D113C4BE2162FD2195F511711E40D911207671059 + A4024178917FD813FF49FB847C55F65657B6795E03362B22558E867628A08048 + 9884D6570037A01D15C87D57A222109081A8D12FAC766A7C07380F86535CD300 + 919785E3245C37948280541EECF11B45280914B006E3616E5072176E26793535 + 6592644110F63D60873189B606D522528C465707117D4A388884E8765291124F + 38471738851A185CF5C135155371E0564382536A9168649FC558FE72282AA27B + 93A53C19010EF6822FCAC128091016166139FA775F2BC7723DA87C9A472DD6E2 + 6AE9F1539C440A697784BA4800BB1870BBF88BB9188CC07884BEC88BC6588CC3 + 688CC4788CC6D8042BA00C7B9688F2D17D52380083627182D33912E14816D72F + 86063E60B78D4D33FF78ACC44FA4B60129927B047413E85648FD502407767FDB + 781192D78ADB75875783681AB331D6E25FBAA14CE4258885389085C85E3D278D + F473668C628DA8165C6A614E2FC70D151765B60791D2327B1E585CA660196C01 + 5E1F723CD6C83496315FDC423984348F98638FDC838F5F977989C68F44912D81 + 9458FC5373C97893CA989338B9933AD9933C8902B1333B08693B79B7906DD05C + 35E4585DC06D78713D5AA75F43833114231190B17FE4F83B82A368B9E719BCC1 + 1E1F102DA9504434C11EF13711AAB8924FF48AFE148B02E83588124B811242D1 + 28093FE99376599778799739B9732BC002EE35947BA209D4C0309CC18849874F + A3555A527489DD68FF0EC28479175349DEE67A7B143811114088821EE5E12570 + 902D92432A64A3148077359A539ABF068E79186C02C831FED595E305729C8002 + BA289BBC489BB2799BB6A98CB6899BBB398CBD599BB3199C3AF99B06904D8029 + 2169815296C05BB937850D7098BFE48DA7B094D2E218B4D777A7B06DE68717A1 + 587B9B0864A2F291FA712964A91466499A55C639E09853CBC787D51284CE3736 + BC339774099CF6799BC3299CF8B99FB9E99BFAD99F77999BA2F42AC759155562 + 68E1175FE6F41E30580AABF727CB320609E66043D74ADD6535172178BFF3908B + D994C437898D359214A64BB9911B63A30D5E2899DF9335A8C99E7A382D6D398B + A9B51F7C1306B580FF021C709B392A9B3B8AA3BCF9A33D1AA43FCA9B42CAA33A + 3AA448BAA34D7003198088055A1816B01677E16593C00028E228542A09780343 + 3D038A27F748BED36B6E254553994049F998C056A61919861CC9247556A28861 + 130970061233956679A76F65499AB779EE491442283603D137378AA4848A9B79 + 50A8889AA8B279A885CAA8F80937CA40814F7A0FFA959D21D599224322143083 + 54231D7016066DC024726A2A46765F73F894BA426AD5F985D6954F82439DE699 + 74C515A541E16ADB322A3C444067182D14238216C39E5D282D7CFA01C44A805A + D2225FB17708330A2870A839EAAC43CA017990A3D4EAA3D00AADD55AADD8EAA3 + DA6AADDEFAACDCFAFFAD28600037A04293EA137EB794AF5438FA823E94100709 + 508A5C956B0801AA06D6A58FA25D3785119EF537180776A3498FE1478985B2A0 + 53D990ABA42B44F396255A1E99A42C671816BD9AA72EFAA2FB18A3C31373A3D2 + 2DBFE17BA370A820DBAC3EBAA8221BB2210BAE272BB2E0BAB22A5BB22E6BB2DE + 0AB3204B004D8012E78A0F26B22BE9681E9EE10663E0AE9300AFBBB199DA2020 + 8592371ED3A5EA2649101199DCC82F34A53D11A68718D998A3F510E6346B093B + 9299F9315303266F0A75736A7EBD1A821373B6C17AB1EE692D22F5A61B7B6E9E + 0A9B9630AD79E0ACD3FAAD754BB7752BAD76BBB7758BA3772BADD41AB884EBB7 + 829BB7820BB886ABFFB777DB048DF09737DB0C8E89B5E3566E5C3101FB420901 + 900033627F6F282D5926A7CA137E81137B7A78834DB37F33C54F16E98581F794 + 5562195A3B7E00F40F6E8BABEBC11803F8279F79676B40B667AB87690B2DD4F2 + 9EAAB021E005A72D628ADB604FD7C5097B0BB8D92ABD2DCBB7E17AB8899BBD81 + CBAD843BB879FBB7897BAD742BB848957D91EB0C9B483E2AC8955CA91E991BB4 + 9CFB213CA44E9D89BCE8A1B42453A9B147A695B434B24A7458BB9E80F7BF0EC9 + 4F60080E0FD106CD47A25B22B694456AD63635B19614E6E785E2B3A7305ABC6E + 69349DA1BCA30220783622DBC401824BC2E36BC2D88BA3283CBED34AC22EFCC2 + 307CC2251CC32ECCFFC2D9FBC2742B064CE808F479BED370254C7234E41110E5 + E6B3402B0971300607661E42561E4CAC1CA5C24CAB4B7E2F676A8F6195C6C7BA + AABA9DD7195C30D53FF63A6CB73A39038167F6346AFF20393D341039F12CD539 + BCC5FB9E5F932D99A459EDBB255B856E40D409835BC3348CC37E4CBD33DCBD28 + 2CC8E3CBAD30DCC785ACBD0400A990EBC3A160999791223BE4C45F3252CAF2B3 + 24120703D0195D022A961BA7D91041F855BA10D985185A8F43F73F541B875669 + 82E6D027E361A29BD91E08848D5D10134E529299B20ACE42BC7C48ACD6722D1B + B2BE1F2C10712164251A43212CAB9800C32FE0C2D1FCC2D15CCD1C30CD892CCD + D98CCD896CCDD47CFFCDE0FCCDDC9CC852A17090EC0939DB6A01632900D6C63C + 851E46BCC99D6C8A67C087452357261AA14AD39D930B82C13B954E996D68EA83 + 033CB05EECC5D4201EB72A4B5E699D19690589842C88B17BD840100370066740 + AC185D149E52CC983CD1A4010799A18E25FA30B1868A817809355CCD748BCD2F + 90072F1DD332DCC2D23ACD2DFCD2248CD328ACCD83CCD22B7DCD341DD424EC8C + F273CEA0D00F58D2418BD433CD62C5C22357F1FCAE9D4C39D659BBB0B4CB0F83 + 6E5F18A613B4BF2F679E4E794F90648EF956B5509B898193CBEE7629F7A7675E + 0C347937C666481722AD219FD2166E312658AD5C191D84EBACBC0F132CDC3075 + 9100CED67CD82F70FFD886BDD88ADDD88CFDD88E1DD9906DD88DDC5E46AD09C9 + 197BC2C321CE0117D01131D60914BDE5159A2CD535027E3604C4A06245CBCB7B + 49C19D70B6911171C1002DB020DA63FB7BB6A95CCA95DA402C352A519CD232E5 + 984053195D600D1D52C78B621E7011266112173CABC69A756E110384045838CA + BC25BD911306D1AF9110D3860DD3300DD432CDD2E52DDEE61DDEE75DDE8C3DDE + EB4DDEE81DDF2F8D02632658975D0910DD05BC02480433006E4CB678416A5143 + DA471C099C5C9819787639DB001BE387DA4DDDB916A615E9724C99A193385A18 + 37DB67EB48FDD2DB50F574CAB43C910238CCA32B01C4C1632C9EA2D1195C29D7 + BD51175F099602E8FFA779DDC1B42C1067C85CF90B0089DDE33E5ECD3F1EE442 + 3EE4428E07441EE4467EE43E9EE489CD0162B0A4B273DF94D063A80055020375 + 63A078FE04784F8D2C511DB4B9444FCF6916C411997356800D9C78B06D5D6278 + 99C26AC51FAA6050AB942F277F1D0E38090D01A353077F7076534EE2BD664EE8 + F847CAEDC1266AD204F195C2BAE830BAC1E4369EF9FC6752C2E390EDE3938DD8 + 3D6ED84DDED896FEE38CBDE9950EE48D0DA9042AE5FDA0248B6667BBDA6D5B2E + 116109CFA50DE6F78B47DDF010F6E12C4AA1536DAB5A710A313FB478072ABBFF + 9CCA984874DDA3351C6E0E5B67250ABDBC7CEEE77FEEC5AD74EBF65B3C907EE8 + 5CC22C8ACEE88B2EFF8B03802DE466E313FD4148E465446EE411A0E43E9EEE4C + 9ED8E97EE4EFFE02ECAEEE45DEE3F1EEE36200376466EA96B106C4E37E7441A7 + 162CBCDCD66D61E9E5B18EC4B924BAE1E3EF6132CA6E765CFEB8B1A4E1DFDC09 + 5CDA157BDAB99D93C9E6146AC018DFDBCDBE28A056506F9DAE97143A5E021731 + 021A35F17E5DA22119FD2CC45BF3367FF3FDA882294E3D53C5E3F4FEF3ED6EEF + 4ACEE4F7FEF3F2FEE345FF026240004CBA03F67DBEE5F4D42BA24ED920315696 + 686FDCAB2105D5096FE0613E10FE1D573BB490CF1919470B6447B32D59EDDFF8 + 7756A69C6FAE2BB0BAF6D68829F27A3E3DCA0454F864094949C51B10841E2D26 + 71F1F0D04110190DFF96177BF3C44BB6130152710548131DE2221401949FEE96 + 4FF97860F9F24EF947AFF99EDFF99BFFF9A20FFAA35FFA9C7FF9957FFA2F6000 + 8D805B903C290EBF43E756CFD639DB19FCC6A61614234AE09A1AE61D770DC7DA + 158C6864E6784928FEC15C85672735E7D948A6B53D8E0D165C760FE2542878EB + 165AFA6B5A42E196D8B221F55BD79BD22C347FF3EE59FED0C2F859E3F8A1C3DA + AB7561937FF4E84EFAF21FFFF42FFFA31FFF9A8FFFF06FFFF30F082F11828483 + 2F4D23193046008D8E8F909192939495969798999A92210C011F756E135A5E6E + 75631B017161AC716D1B6B6B1B1B7FB50D0D6D6D7F03A1A563015690140313A5 + 6E65A25E5ACBCA07FF1310630D141656160C14715D7F6B6370651307E107A46E + 1009037F6D710C5621EED50C6171015D6D0DB56D5D01610C16FEFE5602B673F7 + CE5A973310B4842305ED4F1C0AFC0086A05430DE3C7B7F60ADF9F0E18C478F1C + 39C69235ABE4AC912669FDC1A5EA21056CF3B47DF0062EDC843A670230001021 + 029E9E83800A15FA7328D0A246870AFA895450D2A34F813AF549B5E9A11B1958 + 4CDCC4B5ABD7AF6031596170B0CE282F65CCAD51D70F9EAB35673E90ACB532D7 + 065E6E7C017314C2429704CABC286356AE4E9D325E0EA08D368DA0356C0DD60C + 800321AFC28513CAC019B3765F3F6AFEE2050860EF563E5510F97D1618B0E2C1 + 840B17FF6999BAADFFBB4915E58DAE77EB1EDDDFC06BA59C05DCB4BE380F5929 + D7DD6000849ACE20E4B4C0B350A19E53AD4B0D8A9DEA54A14BB907FDAE747CD2 + ECE6C3BF1053002B8F2961E3CB9F4FFF91A733A148693EE390C2E7D0714416D7 + 5CB6D88557290304F0880571AC019B385A9493C007198D5186425E40238D05EF + 30E0E1451B9C91C061A340E886291336A08A87A079A81B3DB9C4881A8BFF0814 + 42357E21741943633884DC8F10D9B61524EFC0130636BB95D61B5DBE05579C69 + A78D06646AAC20D9007E6E8873D3073AF1141550337C09E6984285696604613E + 75669A62AE19159B623471C3053BD467E79D78521407288369B64617FE59139A + 870108281781E9BCFF32462F6EFC124C2771FCE18D388AEDE7D0350D24E00686 + 1AC601DA3FFD30709164245E160E5AE69CB14117AB78F8998B17F9D600ABFE85 + 5A634006E9185B43AAF42A6590D4DCC6C98DA1C913533D31C6D8DBB2CBC6D8C5 + 712D21F7D2B42F2147DA95A168090197D419C566996D0EC5A69B6782DB53B962 + 9E8B6652E86237C20A2C54015F9EF4D61BD68D61487A969F3A718823A801C275 + 2881B770D3CB04094803D94C88693141399BADBACE8D1464BAA962100CD04018 + B70AE48F3C6D70E38D28A64608C16614D24AA30547C2888B3E41BA2A288E64E9 + 3A4E863DFEE82B6DA1B64611B1F1C0E4EBB344174DF46848CF3325B5D52A4DCF + 3D586A59C707EB78FFB9EE0C58839935D6E45E3D66D7E8A6C935D85E8F5B369A + 5B93198118EFC66BEFDB7067D249176324845602A944F40FA86114FAC1000392 + 444BC175E735011C6B34B0C1A21034FC0C1CFCB11A915B7F68AAD0963AFDB777 + B1A4DD35E237A67A91591D906FD0460081F23DCFAFAAC96C6B185D38B723CEB3 + 396DBB4B930F194941D65469ADEDBD02FFE3F0D2BE5425922E678497B6DC0200 + 76516B420F261E664AAF2EB9D2574FF60CD4A3097DF7D1878DE60B2824B28313 + 71A7AFFE820138378A66798726A8FCF234F077E07311DE4B86708C5813397540 + 876770B5390A54EE626E401CEA6CB51A8F89AA0B91E9C6371263A2930D2071AA + D05BEFA8E5AA0E5AFFC3456D90DDAE7236BCE0052F3912A9C48D681634A6C164 + 692E8409D3ACC59B8CC4627936995AD5C6C6C31EFA906B0BF821108548C4221A + D1888398539DD6C744B831E00F6611CCD432C7C25789C67E8013492C6641B8CA + 08E618DF50CC31EA9080CEF48320FF0A8827D600872C69017E0118D407A9E140 + DD6CA31B8D2BD1A9209680C8B50A541D0C64202910C207F1A876D69252D258C7 + 229FE166851F3C5E0C2739496B61A42437CC964DB61547E7F5106D66DA1A1141 + 89441F829294A62C222A45393602ACE0024568A22CE915860F34CC0D09F843EA + 04C5408BFCE16F0308C916556230CB086630285A4BAB3407AAD050A00BA000C7 + 1BC7D00506F2F29AFF4103D119E0D00B4A39CC1490FB833E34B8B750C5C35547 + 6A40DD66D710E2995078C00AD6CF08188F2335AD78337489F19A568F8CA48454 + 59CA21977632C4B105116B072DE80C126AD0853A3488101D22431DDA5084F230 + A2166DE844311AA715C0609620A5CF8D02009852D4610DFDB2E67F44F387338C + 218B0353C90712E0456FDE4463EBA06333551A8F10D621315A38E93A5824485B + 0DCA8E1FA81BE84227A10BAAA856D8FC203A03642176F6285AEFCCEA8F54132C + 611109922EB2E73D8987CF6A8DE6922839090EA3D33C2438D4AD191DA25B8308 + 578ACE60AE0FCDEB46EFCA35BCFE30A11855685C358A3502CC8911214DEC57AC + 90AF3AF0A8019E92FF1F4FE5D1D297C6458B321D515E2074B70D44D6633B2D6A + 002A77A103E012B22B15243683F6B4A4520674E2280504CC91B287341257E6AC + 5F5547E8239D094FABF16C8DEE1A81469A1D8FAC65155A3F35925658AC157304 + 8DA874F54A5D882E60BAD2BD6E7517AA5DEB6277BBDFF5EE7691202718F060B8 + 8A4D2F45EE038152283050AE23AA8B46EB52C05D7624B598694D17528E3354F3 + 5F922DAA6AB2C146706468006D9886548B2AE096E94244A1D02361C82897D34D + 8E9E165167696FC62B9D29F2C33B5B9DB41AE9D5AFE2369B649DE16EEE3192E6 + 3A57936CED6478C14BE319DB58AFDDAD6E8EC51BDE1DCF806D1E8DA57A874C09 + 2B18B08D111A431BFF22A2525EB2D4A563F888306731D36EF257A8D48187933B + B81CDFBD263119E2568019ECBA6265E3979FB34C6CD3B2190CFE51751AB66A6F + 7FA7D53AE34E48E8252E3DC5BAB4D5F106165A1CA65A61BCA5AA5DF7D0884EB4 + A217CDE8463BFAD1908EB4A27F7C0378A18FC8987E84153EF19C0C9D61A84D66 + 60DF2A6BD9CBCA651622AA4CC9CA70D238DEA897E8ECF2713780E4039421014B + 5E2D993DE8220AD0E38E3485EDCD463721D3AD02CEBBE5F0557D6B673B278746 + ED78E4892569D66BD9B0C52E0628F3645C631CDFF8DBDE7EA88FB34BEE70F778 + 011168820E32B0C44C67DA2F0340CC4DD6E0A9A2AE76D4501E807D43826A9A5E + ECCA2865405FB61CFF56E5B83040BC30B0503936E640CA9A155C065195857D33 + 700AB056194EF621DDF9DB8E9FF0D9B699A7719BE6B293607B382F0EA833A6B8 + 93485720D12F6774CC1B3D7345A7610133AFF9A2757E7344BF5CE78A8E799C44 + 004B77BF3B53C540982E172C5F733E790C2FD537480E95EA7F8FC31428F597D3 + EB69F0694D69B4BB3DED3AAAD8E02E37FD1ABF4E6A1DBCC8D4542112321AA71D + 5641BCBA102F5291D2E2EA40F20C80DC200982D76E31CA07ADF267344FD2397F + 34D0612E699C377EF190AE79BA5F2964A3ABF78951BCF5C6984E5427E31BEAFA + B66FE0B6F99C92615D27402B38B55F38BC2ED01AA8D2F92FCD38AFFAE538BC65 + F5904CB0A1438E93FF7D4045C889336F39DE6C8F2B2DEFFF89F6B0E0E16BB49E + 7CF029971AD55A7EDD9F3BBEFA8EB7BEF6B37FE8ED637FFBE0E7BEF7C54FFEF1 + 875FFBE9263A622DAF58066CC0B1CF4030C3ED2D6AFA823EF420B9214DF578F5 + 56FBEBA8AB4756C1134265601370B0010AA66B82F470CAB180BF06619B052137 + 710690552871D76174667CEF94816405715D352C2C431A81E76283A76D9BD43C + 89677DDF477E2B787EDD577EDCD782310883E64783E2D751305005ECA75861B0 + 0617620A1FD0051CB36BB9657F51877F973519A56722AD26705A564F5E477CC7 + F70966310E65A06450554EB4C78010175FD8F060BB4741B6964BFA207CCA3667 + 1AD871BF835CCF06FF1003F108F8F26BCC458225F85C3AB4131590873FA7877C + D8877E88737908887D28887E58887A48888768888A18888B388815D05117A083 + 3B08523DF8832C477BF1F574472875494819FC1721FE472C527524C87577BDB2 + 0109704B5323399A43665C6876BD267123F21CE1804B7F62811B764873677774 + 172D6C986231F381C4C520BA308782067D84B76DD491888CD88C7BF88C82188D + CC088DD3288DCE8888D7588DDA988D798883F332894D544B9B9240018789F1F5 + 799B28751CA1849F787A4E0848A4C86C4E8334A3F14B48162165A40EAD43845C + B71C4CD385B1385AFA951887B31610748124248FC5F78B0CD9861F6801CFB40D + 98858CC361822B37FF7D00D0881AB9911CD99179E8011E19927A485E59B17EE0 + A83EB58418706445F4E721BE466AA117931E8147D0D17F59278AC5F24226448F + 4803418B535A37254EC1032CB0D68F5D472D0D1856CDC746595290F96086BAA8 + 9069D890BF683CB7252AAFB011C7489198F45C9CB48C22199662399664C9876C + 931527C944E2D85929B56B1FF492F916939C884756078A01879339093C3CF92C + 30D25266E1306A810BB7A03245597B47394955828B0E8338A70395B423850B49 + 950C591B1F532873C89515698703050048F091150092A0F999A2199A208906A3 + 799AA4899AAA199AA6599AABF99AA9199BA7D99AAFF988319015DF98966F9392 + 77331BFC28557079FF7F72191767A08496B10C40E86A00E64C3B438F4613236C + 7421110207BF07412F831A49B980B2462D4B032BB1F38378A30F7F8090885477 + E6698AC7279993C90FF2A00DCF87995D49685F0900068004B4299B20E9999E89 + 9FB0599BFDC99F00FA9FAF9906727201EFA19B70B396B7E61043E8962E698431 + 197503E35AAAE6302C87976F59773D5934C9E27AA9A80C98E367CF920FC7C155 + B7E78FDCA94FEC491A55854B42399EB9F898259486BEA89E6CC89DBAF09EF019 + 7D02553524600262900615609AADE901466AA46870A44ABAA44A3A9A46FA994F + 1A9B1E90A44C8A9F557AA5589AA54BCA0505DA6E084A4BB6D49B9EC18F0F0A93 + C3290BBDB101FA85FF0C9AC12D18DA3B896434C8922CBA9070A42054B02282F8 + 90416587A231D40A01808AE3984BF5489E5845A3E969A3C0F8233E29783B1A9F + 85379F1A90034D4000421AA0982AA0991A9AFBA9A99E1AA0041A64B9F9A576A2 + A078B30FE6285FC17984F9B701D7590F9E030770800E63B739A0E26BF4403474 + DA1BB9D052DEB00C6590132CA21BA5112579D7800CF8A7EDC994D3A4226017A3 + ED34A3C557A38A3A3C24D7A8748899165968D4C104931A036280A45A9AA554BA + A4E5AAA4E77AA4E93AAEE2CAAE53AAA5EBEA015C10031EB503A34AAAF3C19BFC + B28F44089709107503323851B262FE244ED3B09C471513749A0BCCA20B49D55E + 63B864AF428A4962FF1CD8A91ADBE942ADD006D1F44608360F302A67BB789E1F + 56AD93A95C8AE3A88FCAA32B476FC1E003DE2A02E0FA91E65AA52550A5F17AA5 + E57AB3EDCAA450AAA43C8BA53B6BB3471AB4430B922AD0362689AFF9FA01E3A8 + 400D4A666F09A1015B17039B9E2D414E9BE392AEB0ABCC720BDBB04D9B72139E + C50EFF62117A9A0E25DA3A198B94A27225A557060856A8D09A9019E86C268B5C + 5128822AFBA8DB9A31D504005F60064CD0021A10030430A4497AB38BEB01416B + A4417BB392FBAE8CEBB8963BB990BBA48F4BB498ABAE96DBB8930BBA97ABB9A3 + EB016930AF1EB5B44C1B1695088A41C8AFAEB8AA558B0BB9C0974A4325F164AB + 7C03234AB22CBF41FF65BFEA69D5341160652C73AA0F7C6A9862F5121FD21C7F + 19ACACF2AC222B955A95B7374A72399AAD5C69912615840C20055FF0053ED002 + 2B30B343FAB9968BAEA43BB9A18BBE9B3BB49BABBEECBBBE94FBAEE25AB9959B + B9F97BA42A50692C7069AB1B1FAD6B0AFE3584B0EB70C1194C5B640BB46BBBB4 + 11332BA5BBEDC9B0BE0B1C54F6A177B3311341409144B1F48871C96A956FEB3E + 68E15FF5988A720699C263BDD78B3C2CA6BD14699100941318E00366E0035B60 + B8E09A068E5B023EFCC33EDCC3920BC4445CC4462CC4420CC4486CC44ACCC43F + 9CC4471CC53EBC04FDCB6E9218C060E17E09117F09E62244D83291211225C1C0 + 0D4C8FC817C1BA8BFF76A5E12474711275937453D40EBA9B9349837146793C5D + 88709D167B208BC2BC35B2E8C9C22DBC3A2FBC95F0699152330018B0C852100E + 3ADC045CB0C4685002933CC98E6BC94F4CC9928BC9419CC9979CC99CBCC9433C + CA92FCC3987CB9981CCA9FBCC469A002AF745E589CC550241857B821E704900B + 380F8A6372C4B1120D8CBCB7CB64D764AB6807784EF24FCEB1298BB131C9C71A + 38B2BCFCFA8ACD4BC2B177C2758B869129C8D65A6D852C387EBB564CC8C81810 + BE3E20031A40024D900668A0004EDCCEEEFCCEF01CCFF23CCF5CA00222C06EB1 + FC15168074A5904BA0C675AE182B3634C650C2975202723B25C11761C1FF9472 + CB306FA8736100B6FF757D6A760CD21CED55C2D18B8AD77CA878ABCDDB2C34DD + BCB2C94829B1B1C8286D06E130072D80CE5C50C94E0CC5F13CC9F37CB9ED4CD3 + F3ACC9335D025CFA4AF69ACF5CE11716F23007F8CFD929607F07B664EC2C7887 + D046B5B56A9C11FE6412282119BF3A0E38711C10BC325A58D1491929162218D5 + 1CA87E7C862ABC8120DD67A331D2248DC8268D017E00D78BFC0507F0057E70CE + 31C00525A0007CFDC3ECFCD7440CD8ED0CD8EC0CC484EDD77B9DD8869DD8828D + D88D7DD890ADD88E5DCF4447057C07D4926001ED831819426FCAEB8A1ECC1B0D + 6BD08C2447CCC439AF50918267D588310E9C742CC89B8550CD60B2F621A425D6 + 5C320F1C3DBD89C4FF8BD40AD25EB7D6DB00C3C8E8D69482D23E80D21800BEE3 + 4BA953FAD88C8DD83E5CD8921DD9D47DD8D31DDDD06DDDDAEDD8DD1DD9D9CDD3 + 4DE0D3008CD99560057B921F9C84ACB008DA7F47C1657CD0C1684DC4EC0AFF84 + 6D233119AD1D549E950DBA50170E99D0B4DD85FE1007B46638ADA6DB65BD71D2 + AA86698D4F843CDC86ACADE06CD25F00D771BDC87A00BE07E0073280CE2A8006 + 7DB0CEDADDD77CCDDD7F6DE2279EE22B0ED92B5EE22DBED72D7EE28C3DE3364E + D82BDED3179005E67D09217064177285090671B5EDA028B61B4653C7C2DC647B + 139126876D5A3400FB87D59E85AB739A347AC353DA49230DF29709940A0ADED1 + D47B3B0F0EE1BA2CFFE1DEBCA3884C0A97E10617AEDC8B6C065FB0057ED00239 + 30022AA0CEDFBDE728CEE77EDEE780FEE7825E0290F8D33D8E1B61D0062DEACF + 41C28064EA3BBD7D34F330DF51B5524E8EDF211112935185FC0DC289640FFA28 + E05BC8550CC227D3D9DF647DCD679DA865BEB7D93BE1DBBB56DF541367E0E6C9 + 1DD7192E0572BE054C900324A0022AB004327EE3C45EECC67EECC89EECCADEE2 + 3D8DCF87CE099EC0275BC28A8E4EA6E8546D664C944D27559C93B21B91E9E02E + E595E1DA08182CCC2782B3B24B99E8703253EA09F14670503B01B0060B2E771E + E6DB65DE670BDDB76A2EEBE5E045F30E0107200518A007CA2D05CC3D071A7003 + 31A002C3BEEC101FFFF1123FF136DED330E004F7FAEC63D1007020D657A5BC47 + CD609E774FB461A295BEBB290BEE1CF1112EC54D6E54071B1006CAD717A22125 + 0C27EA528BDEB6849CFE4C60F51EAD63FEDBC08DBD684ED22C8B16FD93007010 + 028D35F0058FD271CDDCDE7AB8C15E020860EC57CFD759DFE25B7FE35B7FF560 + 6FE35F2FF6271EF65D5FF6CA9EF55C6002AF4405CFBE3B9B5652E4E819AF78C0 + 5F0CE95679F24F0D321299E92C3F93FE46EE32BF15A9D7EE5B4B70AAA5F3D2A9 + 19B5D305D1C9DB5399EF7BCBD62BCBBD81D90000606492E2056650F0C99DDC08 + DFF9857BB8E9FCF061EFF5647FECA7AF0067AFF5588FEC673FF6C4AEE33CFEF6 + 901006B50E9808E6FF1F756FED81D4C149A9F780746670419C2C0F3803D00DD9 + 1254F4D65545E2CC69AC8032A3F83CEF10A4C13029DCE0D5DBEADC5CF46DBD56 + 07D6C58D30166D001852E007B88ED2BAEE03E37BB826F0D27DC0FA0830FF66CF + FAF65FFFF47FFFFA0FF6F30F080A08820883868288878A898C8A85898F8B8B0A + 5C262B1745009A9B9C9D9E9FA0A1A2A3A4A00C1B105E5E6E097F710C61B1B2B3 + 610CB6B7B8B9B916B6B1B7BCB6C00CC216C014010D6B67CBCC03CECE0970106E + 5A5A106701B621DB00DBDE5656C5E2E2BFBAC156716765D565090D71710D6770 + 655E07F75E10637F01F0710100FF0504D8CF9FC18308131AA4C05060833F6B22 + AED940B1A2C58B16FFD70CA8E3E6DE817C03DA5060B06393853803BC489182A1 + A54B295FBE1C6022E3460C1568FA3482246967CF9F3E83027534488150A15C54 + 5CCA52AAA9D3A75045596893C08D970975D6C4A140AB2B2D7360C3F21A3BAC2C + 5906C792395BF6AC6D348EEC06741969C18AB710E0F28EDB6B76D7B093EA0E68 + 2933E65D803F63EAD4F3986FDFC17E90FF299C4C1921430AF002B4812811A367 + 8C1A3932D6F78E018B4C9A2C0480A3E58B143F2E639BF9C2A4C58D265C0AE9DE + CDBBB7EFDFC009F116FE5B3871DFC7811F525042298C2A53A24A9F0E8A9B5374 + 1FE092DEDACBEBD7B0E0FB921DFF975718641ADB0E18C39E7DB469EC0AC3AB75 + 0E6F5E707BC99DFDFF552CC0808E8DFDD1853CD2943141355A4CA00F3FFE44E6 + 6065104E7659669B4934D167186E105A47F86CC740062C1861D21E70B8F10506 + 7AB4E403062BCE465B0B39DC94131ABA25179C728644A29C8DC52157238EC6F1 + C645132BC02022754852875708D785D14002EB9401C71A018C048B77DF85A7CB + 7EE491074B3C1FA8D75E7BEF753458615D00D44517718461817DF7E5A79F7865 + 053006350A8EB1C11F1FD053861B6E4C20A81B0B3E26596411267AD084FF54D8 + 59869F8536C168856523820830EC50456A01AC5186192862009B8A6694CA0413 + 1AC49042097DE0E8AA0BAEEAD6AA72B0CE8AA3ADBFC11AEB6E955CB203934906 + DB5408B030E05408FFAA7D908A820394762596596A295639C100735E03618EB1 + DE98EDC1510704935AD36C005D6CB6411B71BC799F5E721253AD2D5D54A5851B + 758CB10C94135C05A81B7F2E589040900DA4E8C05B35D4286711411AE9461C7E + E4E108226400C31D59301942181B94E1DAA82A62208519F7309103092A7061D4 + AE28A7ACF2CA29DB30E452C2C61C0A5E14B4B14103FD70F5A628C83600872A6E + 4C19402DD076252D785DD20926B76324E0F4D3101828581D1F14A4590373BD09 + 679CEDD2C90B55074AE9343DF608A62FA01024B0C1BF87B64DB0A28C6A86F085 + 0A5FB4A1161D56CA400123E820C2052C44D74D1872D4F1851F29C6E631C83ECC + A1410E2670D16AABFFB52200EBE596675E88AD946BEE79E59863CE79E6A2CBEA + 7921BA22606BE8A49B9E3A022F3F27B8CCB40FDE406275C091C0191BA43B4A08 + AB55039248456379F4B4493310471B1F8CF9F4F3DE5A35F51F6EF6A2B35DDBAC + 8B5FD76315630BD8F3C2117DD91E993D413B541A8AE8DB89C6FD908575833680 + 34933A2CDFDE23F0FD370CA8013095E12B5A51C71667862DC0E8264B50C0E458 + C6C0063AD055B12B49ED6466052741C923F3CA4A1CAC209536B0E61E41A31243 + 8A67B4E36DC96B65595EF312D034E88D0D3E1F4940173868B1BBDC457BE1E0DE + 3818E0C149110A86E5C3E02AE07006AC59AD6D6C631F65260490F73D2A7E15D1 + 4802A691379CEDADFF0058EC9BC48A60310BD8010E0790428A38E6310C98EA71 + 2468C21254D73AD6B9B18D707CA31CE348C739DA918E2E23D2058E3441245981 + 01878112DECA879533B4A14A0C005637D0D28601408052FCB012096561C26905 + 03172A6CA10B75A79803C53000D5B1210E73989F6184E37B0998D4F9A8810F41 + B9D20BD5381F116F4690242A31424C44C6DCA09891F981AB8AAFC022DFF8A603 + 89F16007D1B10205DE700033F8C007645C49A97CD002DBC4C0649DBBA336EBC8 + CD6D7AB39BAD831D91B0C0943E524735F3A8C72031C8AF7AF5CE029BB042A74A + 543FC1D0CB901430CF246751C91392074C9B8CC65B0285B7098C01949FB061F6 + 70D8AEBA14C34970FF085735F041A86F41206A9E1CE2183E60C45BBE2D6E8E4A + 182F29A291120D1224A511A64A21664C3668220E6F3810A812F792D96CA13631 + E2C21AFBE0829E5ACEA7A1E3294F81DA53A1F6F4A83FBDDC5091EA029E5ACEA9 + 4C251D50A17AD4A62AF5A84B2DAA55939A941C5CA09CE67C0AB20270865404F1 + AC07A0D7075EF1C73864679D8C6145EFBAB34F5FF4B31C5E42C61904AABBBE8A + 4F1A5661C719E2B009851A766BECCACF29E3B0818806D10B521AC0199C3186E8 + C5B20CB91BC01A8CB83E8F4AC8607283DF4835C4304806337F59CC623133A589 + 10C4810E3F73A61F02C8A2DA9A01A724CB4D37A11A47A8F2D68DBFAD6370E538 + 5CA0C6D1A7080083FF738CC0C1B096825801C84E3DD15A3E7A0D604F1BD8C874 + 315848E2D5959277F58BB5E2F08779F0F5AFE2FBD6811204813584A1B036EC86 + 61192A8EFBA0A50B652D9B165421258EB6A10DEF4B4CA05C5986B49DE10F87B4 + A5672DD39026EE526122FDC31F367006D1E0434A6BE8421854CAE102AC96629C + 0223A860434633DE1646245B421FB25AD516BBF8C5308EB18C674CE31ABB7809 + 96B880049D3B0A740291BAE54B5081A36620B872571F6B6BD377C11BDE4BF6E2 + 300338EF5FEBF0ADC5ACC21DC66A6D7CB57C43ED8D432FE769EC3AECC92F387C + 402498F94717CA5BA0F50E51B33853F082FDC1C40169E889917A9484295C2276 + D6A18801E83087FDFFB645C12D5363A0EAD88A3EF685C63D4E052A362A516D4C + E9AA26D5D295CEF4A431BD04157895074EE07142C3815FB302F9D4A716DEF9EA + 90800C2B79C94DC68531BAB081CAA237BD54862156B49265C3764294A3144718 + 5488AFFD8A6DA3E8EA0E6634B386CA1679BFF4DADD9E123C67062FDBCEA2C590 + 48F734E10D1D79770D103487B598A94D01E01475686689F5009346A3EA062648 + 41534FA0E97ADBFBDE9556800A6ED002502B52D4DD20EF143D495D23A3BA7C57 + C9D70408E598672D993E77B51605BAD06C6F798BCAB9AB72FD58D1807C7279CB + 1F472CD726FE878D1419B2AD7E08CE0AF698357F20011C59EFAA13006736557B + 21A075E2B6236591FF3DBFFC97F7107266C53DE862EAD8DC0C58C323A1F94CDA + 7ECC99D4D4800914C8E217D31BDF34BE3AD6EFADDC1B64800AE606F8B9375087 + 7C193CE80B27DFC1E3FA27B37BE1CF557A383FC36B1E6263FCEE55969E35B051 + 971AFA3AE422C7CFC45FAE4E63C321C999015840B6020F9BED1586ABC06C023E + C00F39DF12A40F8EDF849BA718F209F9A27520FAB8597A9AD478F00B66800D4D + 4725852D1810725CB0411FE84D7B17D4FEF6B6CF3DEE77AFFBDEF3FEF7BE0F3E + F0876F7B1BA4E0064C6041A8456D8130FCE167059F79D3A6A1F654471BB0780B + 219BE46ED77E8E9740DFC2FBB7027B8009C0817AD83BAC75E4AB7E70288F7926 + F50886E7128634ABFF294D019950B96A0D17B447F666F8576D97B16C21453710 + A60C30576442C42F98257AA31731A7C1245310006FA0127E803802E4313E807A + 3E20031A90462A7602B3277CB97704C1D753B88782BDA78226988224486F2DD8 + 7B3138832FE80231E802CA950319C003FF664E71B006FD87566F07689AD12763 + 866A0952079AF5739372656B3312DC4777681100D93545E2D7497873266D9048 + EA771780274ACDD7057D223DF8403536677FB5544B2DC7668B710FE7A30F1FB0 + 0101C87897C74405688019224551034B70157969E3801D466E3C80741FA005A1 + D2121CF33130511B24106F36700290687B91780247407B952889B407899A6889 + 99B87B974889BB37FF8993F889A3A8899F488A9D0889A8D8752D1022CE750A10 + 70764107016BA5351640017F2048A99627E7D2066BA08B83A13605237711C70B + C4E62D1080777F620FE1D33B34D485D0B850F73586EB242EE8927869988D8B47 + 806B403666B30A10000763B006086679036387DD8667DA363F0A1844D0168E67 + 008882E637170003E564016B30011C382A192805E5474D230369F35683C4377C + 23F87B0749900A5990BA677C37B0022C1076B5435ED08756195435F0144FF1B0 + 5758F858F4A22709D60615563601D20FC41871CA5372C8A88C64A820559348EC + 178DDEF06BBC800CD4E81179E20ACBA68D3C994414470FFC1228FA923B1B558E + E6884B0D612ED916FF29CD430F0417646FA83B1FC06106204C55894557B952AB + 851A0CF0078FC41225E61227F6812A00069B789668898968B9966B89896AC996 + 7019977279966A797C10F92B1334063FF6581AC400CDD55ABC40728E345DE173 + 5DFF95263FC921F302010310490FE770DD271635F98B57B88783E40663D0066E + 22937F575880C47F04157484517987D2933DE90FCCF3344E7959E1A859D43680 + 04D36077485278A821679018ED8841C69636DA3295F228685AA463AD950560B4 + 3117181B8C8601EF1639AAA30673298ACFB9896FF996D1599D72F9962EF39011 + 3941DB15645A90151430935EA8097F845F25A20A43746087542E69928B0D9384 + F8C47DD122166120FF92D2107E1755060A382FAD4001E9C799F1E50D9F493FAA + 202857E60AD8689AA6999414011153044B41176D94774875D8787373213BA721 + 9C477E417615927706096395BFB9522CC5035C040030054662A43826764631A2 + 020AE002CE699D345AA3367AA327600360402499D28349726AF4A21519C9659D + F04736190DBAC33B58532E09861847281884D171F5279F73071EE4B511181735 + 4219A187F70A000A7200704AF3B4188B4965AD667301A3A03C7910F8E78B7A59 + 4F42268E1C9526F0C02895818E7796A15114264EE98E97C56A0310875833A244 + C75230C0031C244F09D04C3EC0121DB31207D06832B0028D287B338AA36B397B + 98BAA9D609063150FF24C8243340F69DBCD65C87255F39742D0DDA000DF05F87 + 79187AE97951DA265C517FB57A9260517F149718C9A8A54F697EBCA6355F6A1D + DB708B54480F27058782EA206AAAA692B115E482184027186F286D145A3006A3 + 10B0B93CE9A8A71A1A659DD7A11E5A2F1F50AE9154005599AEE8BAAEEADAAEEC + 8A45F4C803E449225ED068A2829C1BB8222D902A5C70A99BE89C007B0297AA06 + 044BB0027BB0015BB0086BB09A68B0098BB0070B89012BB110FBB00C6BB1D209 + 06267003C2193316990F6B65313179AAF1A43C02B126AEBA268851076AD70EAE + 30A5B62A9FE0710C253745FAB98C5938445422ACD933ACC80248D8E28DECD00A + 6BA286CD7AB4D8BAFF6CD29A2F8C214BBB538EED83A74B79671F709BD8D7A1ED + 54941236175794952A9595602BA2C2E437875A05DBF0834B171B19582A33912A + 2A900236A0B0131BB115DBB0764BB1189BB775ABB7030BB114FBB77B9BA34DE0 + 5554303B488256F7940DF0058D9C8017E3452E00D6066B16AB83C49FEF00B303 + 78AB8FA90B4598808002A16E9836AEC085DF701F8C5BACC3B6B2D47059678A8D + 8A77B40A8A106B66729E078E7000670591B909C1284AB9731151AEB759264606 + 59F502A250EB26EFEAAECA9BBCEBEA61FB13AA16F0071A4362F74A2ACEB4AF24 + A02A7D50B0DCEBB005DB01DD0BB0DE4BB0E02BBEE41BBE028BBE72FBBDE39BBE + E6AB06E5EBBEE14BFFB047B0A31C8BA8C182566520176160AA3E1B2753C89E93 + 6B6A505A185C91B99721B3B940B3BE64764766486ED277A3148D62BA01038737 + 9095366B70ADA509BB1EFC2F7AE5947CB85FD53AA1B99B668B52A707B3946B50 + B5D050266AC75E9317113863250C10B65829B6CDBBC35E4B6E7869055DF0482C + 729C8BC622FEB805731023296096E17B04F3FBC44E3CBEDD5BBEDC1BC54F7CC5 + 567CC55A3CBF7DA0B11C4B05F97B56B4980D12ECB3DCE0B8689178B743C06722 + A5083C42B86A3DCB935D1CA15FAB903B1FD0053059BADA038D7F347850C28CB2 + 745D74BA6CAFFBC1CD4A6760828CCBE87F728A606C92446FCCADA2F5BB93E51E + E2B38742D40E07C6FFAA88040CCCBBBCA29CBC5A042289A4A807202A34D512EC + 9656480C028D98024E0C041D40C5E45BCBF09BCBB50CBE54CCCBB97CCBBE1CBE + B6ACCBDF8BCB4FECCBBBCCBEDC9BCCBE7C04FB76013C78B867B5BFE84217FF69 + C6A77425353306651064517AC06F9CC0FB640EC730207C82ACF6A4C138B3990B + 35C1BEE6B8714071819CCE6626205693A6888CC899C12767B0A1EB64BB1B752E + DB18CE7293A7544B59EE01C37E662FE5C8159734CA101DCAE83A0225BA034EE0 + 5AE9A638FDC822CFB4AF4F206FBF4CCCC82CD2213DD2E71BCC247DD2254DCCE7 + ABD2BDCCBE28EDCB36D004F76BB85081B8AD46A1117CCD66ECB8C9C2C6DF6CAB + E1ACB9E31C0B9861FFCE0D60C1ACD418A55117A3D4C7BED656D812C8D5605D1B + FC18F99CD504A166AD6A93F404A1EF288E9B45A7758AC0DC9AA71171C94D4326 + 364B3E58B1519B353465110C06A0BC752DD1115D95862A41555081ACAC07ABEC + 315FB00518200339F00465790434A0CBB8BCCB8E0DBF8D1DD9BC2CD9903DD996 + 2DD28E4DD9992DD98D5DD99D9DCC36F0CCF23A1DFA3B255DBD15B5500CE0D0D3 + DF503365554FEDE0C6434DD493B49376F6070FA18B6F27A45DF6D4797158AAA1 + BACC784F0282D55A9DD50D3210F20073759C850BD79A1B6C73657DC0D14AB52E + 9CD0DAB21E30A7770A52CF354C27798DD7E2EDBCD0BC29AA1105AEA107B0D18F + 30E14C8EA3C471DBFF07CCCCD8235DDF986DDF1D7004F85DD9248DCC9FCDDF97 + 6DD226B86F194006CB77D367C50A9B25B95B6D253C3DAC7F741E810142EE00CE + B34DDBD0726DE6B2270FC1CDB0647E1BE09F4BE2DBEBA250E140010D30988384 + 15E3D220877CDC1FEC36F1CC194C988542378E58F3ACA83D6CD856B56ADD1E6E + A1189775BB020D71E381AE775DD7E99AE44CBEE44E8EE44E4E6E54106A0C7027 + 2772AF64542A2F12231210B71D40039B1DE6623EE6645EE6667EE667EECC3100 + 2212D914A5BD59AD9AB226694ABF6DE24F7D43766215C363E1B35D3C0D462E0F + 71671CBEB4E1433DED4CE2A6AB17CA93E2A6C65E8D09C2301EE95B0DE9D16A72 + 04078ED2C6AA0C5EFFA7D19AD6080DE4CDE06C82028FE7D226D45216E19DEACC + DB0414FD37A8410172602219F81204845B2A6003684EE63850E6BB9EEBBECEEB + 65AEE6051E15380DE7FFA5E9F8E7D0A664E7777EC63C749B0C9D33491BCE197E + B20F918E1F3011B85D72E052E85C88E8A6FB0DCD07AB4097418D29DDF82CE9C7 + 8D445CDD27D37AE3CBA0EDD4562161F2E9CFD0CF555B59D3008FE598DA5ED3E4 + 501EF04A2EF0003FF04A5E957FC3023BD01F2AFA1A58DE122C7162B05C9627F0 + E5165FCB608EF1999DF116CFF18E0DE6201FE621FFF1227FE623DFF117BFD929 + F0A941D0E6A3F0E671EEAA87897F727DCDE0BEDAA784C2927CE1704C0BE5BC79 + E51AF40983602557FF7609727EFD7BF3758E17B040850F9A854103682EAEEE54 + 2F309121CF0662C715A53BF632D67676DDEA2159411FBC54268E7268EA97441E + AABEF6CC6BA8857B6E8BBA31C8E9312B712A8F63022A20A31E8FF21CCFF1BB7E + F21A1FF27BAFF124DFEBBB0CF8252FF87CBFF1F9AD02961004074E0AC5DEAA4C + 2AF3C8FEC94EADF4758EAACDC7F308EC1569A10CEC2159FD3CF49BA1E258B101 + 49AFF4D9638CF0778443C451945EF555DF360C21CF55C687677351728A5D2EDC + 16CC80EF69DD4201CD264EF6EF079FFCCABFFCCCDFFC598429AE48014A772263 + 34F731E1032070D82AF0032700043420F838A0F8E2BFF8E30FF2DF4FFEE85FFE + 1D7FFE82CFFEEB9FFFF136F0F8912F0A302FB9327FEC715EC8A9FD9FE00E0821 + 2100008256160C896114718D148F90916193946171017F1F0363630367671F6B + 6B1B7F6D0D0375135A13751B615687B0B2B3B3822116967F6770655E07075A6E + 70670D018D9701C9CACBCCCDCECFD0D1D0718C6D6B1F6709106E5E5ADE5E1365 + 657509A01FD867039E9FE6A1A2679C631F7F5D7161890C8889FAF91606FF000D + 140038F05F418104131A0CA8D0800E111960ECB060A54D1D337E30F8C0C07123 + 0633BF7CC8D04022C69213345276A0B1B225CB972E63C29CD90187CC9B3473E2 + DCA973A60D132B2E382144B468D15F487FB949B0A6419B2E6DA24A9D1AB54B32 + 0AF96869DDBAD582FF57068B1C451A0BA9D2A5066BD27532276A83D35310544D + 80E30A1645AEB442580913608336375A7E791176E68FB1C3C8A4295ECC58DA25 + 645D22EBE235C1173070E3E0AC65D7EE9CBB77EAE6D5BB87A874BED35EFD315C + CDBAB56BD64D46E8C870616296356ECC98F1E191A36F1F5230F86991E3099823 + 2973265FCEBC79F3952A5F3A9FEE1C3AF5EBD157DA48B1224815A3E00124455A + 064ED3A754D337706AD5DEBEBB78E3CB42B4681259B2663169E2E4E95CDBB767 + A4B24A2B14D8259F5DB874B14602654C8054307514664C23873566E185183E46 + A135DAF412183013B801011C09F4E7D967A2A488CD1AF46085DA8BA57DF5DA8C + 34CE58806CB4F160FF01000CBC919B1EC275E49B6E5F30415C0C2AD8909C4BD8 + 353953744E52C76494CCE1201D0D3FAD80C550E111359E524CB1971E55EB5595 + 0C35A45961C8815DF1031623D4DC470125717491C9266BF9B7815BA604C80D2B + 6B14184B7C7AE112C0821058261804096C500F85896128E9A4D34C7849171BA0 + D2CB8321D6A1195B29869A16284D8D06238CA931C0100100B1FA8FAB06C00AEB + 6BB3AE7623442C141102030D9461867019F9C6916EBBCDA1410E49AA41031054 + 360945B3CC3D0BEDB429657981115C86F7E501E59D07D598E04A7555566CCAF7 + D5228CC8F9C82475DEC91F5B7B0258C79F75AC1107457779D515031428A88D83 + BF68E14519097CD0FFC6999426ACB0638C341060191F8258DE18A48A3ACA359F + 3465CC3DFBE0C34FAA0CC451E3C8240744C0AD11F1E044165DC0718014C109C9 + 11CC071429430E26A4801CB3D452CB3373CCFE1CE5CF42370906505850614597 + DB2EE56DB863AEC75E23A4E95B2E57FA542227BBFAC1936728F19AF2012F5E78 + 01C107F75A6DF52C86FE31001CDC041C4E1D036CD0C631152EACF7A489510356 + 1C70A9F2E0381483DDD606A278A6B18BA6359E1A7D01B4D16AAC94B36A79E598 + CB3AF9E5AF6E4EF98D3AD4568513712470C046C10AEB83195FF8606471292C1B + 7472B3A7040510CC3E3B7BEECBD2A0BBEFBDEB8E3BCFBFDFCE7B4AC303CFFBF2 + 40141FFCF329E170FF74504630FD65B762420DB555C66005DFD5B43CAE089C63 + 718D96D7268EC267031F3058F6D971F483202C6B3280C918F3463C010463688C + 77A47B0B20DFECD385F671E343102AC707F6C440C4B1C37F1D6B1C6ACE1500B4 + 94EC821894CD0560C0030654A10110F842CCF4B091126AC40745D2400CB86003 + E4C86E3944EB5DCF902743A0D1AE77459B4E0E9D23B4A3E5E00259D0D6979C96 + 3DED69EF5155FB1EF810343EFC58A2826979979ED637B60699ED0C0148CDFC64 + 9188BE304870C07043841A80A6B03C468068CC903D16E1C5B85826188C3A83FA + F694B88C919171A78A11E4D03280CCF9F17280FCA32039E747038C600410E1C1 + 77BA603A29F8410FFF4012964676D30215E66C670E68DEF036B949E36912779E + 0CE5F03C993C4E9A5276A034E52739494A55D2000C29B8C116AA67946D610F3D + 460C5799DA33278FB1498B6CE3877D247196287E6D147F680054166445086051 + 7E6A430405BCB8A9030C861C0673CF9BF086B0347A331A7E63A35FB6D18D3092 + 438E0CBC063642510C1775EC9DE2E3CBF9C6B01ACDD57346B5AA556B5C558002 + E06A078C904319BE1049497EE40B66785D0C5260031CA83268B8C3A1447737D1 + 894614A218BD282A71A8518A7A74A33C3B420A7EB883A579698861C2652E8FD8 + 1EBF2911418F8B29BE62DA44485CA20D1B409F7F90A94C6B50E68A59D497DAF8 + 85A97F09866006DBFF183ED0F5BFBC7DF3A988B98725DA30B66D54C61B222AC7 + 1CD3E209BBF9CD6379A4201FD531C8B206F2AC66FDE3C91E72813B8421045D08 + 214752373322B92E0724B8A4EF36894ABE96F2A2A7FCEB4307EBD7C00216A37D + E564075210831550E128D7334F11570AB55D06A0973185A94C376B1745D4E789 + 3855CB00764A8A9E32B332CE0C80FC0EE1154B388C6C8B1AC31FE2671ACF3EA2 + A90084AA008F61536B8C010E1028831B54914074220E1D6BB81BC724E8B83DAE + 6113EAD01C5A3B47DDB2766EBA94ABAE21457001165481011B80C0CB4C485E0C + 48C175C7CA590F3A004A87368FA3B973A8F27CE75EE139EFA37FB5EFF34069D1 + DF7D140AF2854207FF6C7083DA9C743C4454296575E994A74CA86AE1DBAC4C59 + EBA6BF45CE98A375476997F9D3D402F32B80D314C0069600323200A69E45179C + 20A5DB34C6891101B0D3077E5B876D3408AB7174C7271678373C32577CD33C1F + 74FB4880221BF9C8483E72AC92BCE4241BB9C94A7E329211998120EC201F1B98 + 407032425798B5CE58C551C1098090492840A1CCEFBD9D9A9B0705256852CD6D + 7EB3261D606636C379CD66CEF39BF3ACE735D319CF727ED69D5FD9581E10C296 + 9255F0828D1899F684616D128E344DA579619D6A3899CBFC2250572B4D87CDAB + 9CC16854FCD4C45A7C8065982BEE668BF556C6695A630009006E8D857BD5FD0D + 23149A388357DD79FF9A77F6C3B9EA08F600D04AECB4165BCA952B7221717401 + 455A600D6538C0AF84151C9899410A66A8240954B0B340A779AF77DEF39FBD2D + E834DBD9CE75C6339FD34DEE76971BC03668EC0EB2D0B4947E6BD1B9949AA3DF + 23E97E3FEE890DF8C3A82AB6610EB9B10C0350ADD5C072285E70AA0E1F50AD2D + 0A55E153DB94C5B95DB585C4729619D7A1C61008B9380EB8BF12B5C3ABCB0D6B + AA2EE12E75A463D84886B29367DE6499CF5CD9373FF28D3290011650A10B5748 + 801BBE3057837EE117DA36C10F68904934A359CF746EBAB8A7BEEEAA5B5DDD57 + BFDDB8FBCCE6A7A71B07F16E010CB610D9A7E17BA596BD442FC945617FD3945F + 37E5EA6879BACC31FF1C7C0C5DE0345FC6E606A49078B616B045DB7B6DDBDB62 + 5CE3927A71BBB2010790873CB8C3F586AD3921C7526893B9BF6E6D1CDA20F097 + BB3CBA99C379B28F2D7ACBE1BCF43547B6E90542659FDB4F0E5A28EF46BCFCE5 + 231D61787F3E3399751FF5DDC3D9EB6676BA9C9DCEFBA9F7DECFBA07F4EF7D3F + 6791DE60054C40A9D9CF7EF6EEEDA3ED6E97293E363F2A6426332A99CADF52DA + 90262B1035400083D019EE96F9499B9A12863F63C6113F8D3935828F0970FCE3 + 836BC555308AF2F4707979F46B2183169A206CC296730AB8800CD88046D6046C + 750701100620740018A007741524C0B1054C80333FD05064E600517766243882 + 4D5782C9878226B8FF7B27B88226A8822C58822C1883BD678222150337D00264 + 471E89766FD48776BBE408CB957D9216329C974C01F707A5D000E10718E3F768 + F9D22FE8173004935C13686A9BF54EF0177FF3477FCDC071153463C0250E65F0 + 78B3365CDD20460AE428B40556F0F41546C8559DB00E09E8804E66737698874D + 003A11910521900563700018182CBDE1653E401C79153B22C88222D888357866 + 22C87B9058838BD8888C688951E7888D98678E28892DA88999F867DB610239C0 + 04470726D3F783F8C63D68C2694448537012634CE8167C247E09407EE4C2701F + 900A4715262D9544DA274C2A760CF2E7855FB846966027D9007264B87FFCC70D + 035307FD138029F7FF63F832551B708008588704800246E68D49068E37278E47 + 268EE4F88DE8188E315700B321115910077CE0051708245D2605ADC304E9A533 + 21088AFCD88FFEF88F001989A1289001098A67D6013F600224D0023EF00BB7E4 + 83AA487D4AF58AFD9608751270A6F05CB6888BF9B27770F30B25B740DF379112 + 46785B488C88618CCA2084C998298DC77FE2E08C90E7066E508605D34E60658D + 202664DB888079F893409973E0B8731740063BE00471151C91D41BE6F50B5B60 + 2C316002C7E18FFBE888558989A0B88F57999558D9749538895CC9956706760A + A98307906010199140C81EDD338414A97D4F940CBE952807300125E63DB0C070 + 6BF09175392297A6FF4CEE51914BC554B8A59262510D2E590764D88CCEB89871 + 849398A7479A670D9ED793C1D68D98E98D9A898E9B59649BF9999C999998E999 + A2D999A5799A10D87359005E13803A0625243E602C24F0043F700435E000B799 + 9BB8D988B72982BAD98FBA199CBBD99BC3B99BBEC99BFC289CCA699CBC09053D + A0020B69060FA9961119190FD67E6F0987E8D2176300317509070DE0229DD570 + 7D674D045331A370308C538483797114E254ABA67817F636B3E698321993D864 + 186BE76BFA205405988D96B98DA4099A043A9A060A9AA439A0079A8E0B9AA0A2 + E94F5A7205DF7506B9E1078F645030C38137B35047E088C4099C0519A222EA8F + 1F8A9CA0789B4760FF0231D00258606FD4A98A65723097558DD909329BC777E1 + 3006E1998B21B3017C3930709061D7C02207A34D1E138C29E69E67D4628F6153 + 32166B30598632B97F9E220F07C331031853AE2577019A8005FAA5A709A6621A + A6644AA006101BA1C302F6F3077520421788A1BAF13A2420014A529CCB79A776 + 9AA778BAA77ADAA77CDA0329F0043A480693F5A28B16A3ACD88AD8992A8CBAA8 + 7F8329BF550E6D80978710327F207482210C42EA1FA5D0525FA5458D7A6AC358 + 98DFC49288B98C8A699F530A0155BA38599A79FC524139D5A5021A9A605A8E65 + 4AA6B8EAA0B71AA688740158700757D005141A33BDB111AC738FF9C874BF99A7 + C7F9ACCC499CD26AFFA27E4AADC209ADD38AAD0E80038C151474D05386FAA2AC + 088C5F1199036891D6C0225D40A91679A9D1060CE5317789C3530D560FEBE97E + 491A7F29E94D65848D63907F221793AB1A7270A0191F500C581A9942D52FD9F8 + 09B4EA939F8902121BB1043AB1167BB1129B9919AB991BABB1183BB1DDF8B104 + 201BD07707F9F0015A705E453724C0C11BE9650364769B49E000495003367BB3 + 385B03339BB3344BB337BBB33A9BB3426BB3335BB3439BB3407BB447CBAD4011 + 048A16AED49776FBC96F84F73139991A7CA10C14305414D000630018E6347788 + A34EA1420A453A09FC063259A3622BD685097398AEB606F813A5523AB0E43000 + 56481A6E3841FAC0FFB0DB5899013AA6829BAB835BB861EA8D28C30271B0031B + 50072F438F32F3115AF0053793333FD0013C7BB3B869B39BAB9C38DBB97EFAB9 + 9A7BA7425BADA37BB34AC0582D10046909B5AA98A86E59AEAFAA47DB84594CD4 + 0603E09D1022B6C775229CAA4CD6C776A18A6A6D0B9F6F2B9FAF3686AA3AA59E + A2191AA3B70A5BA97502A00FDB931B8BB1217BB1D99BBD1FABBD202BB2DFDBBD + D80BB2ACC28E2B00036410320940747390815E96501A000279F5039DABB4F67B + BFF89BBFFA8BBFDCBAA24EEBBA50CB4B1134BBE70A16BF566A5D300010101810 + 220FEA9338E8F04066BB6FDF23BBA21A09A44A2942384D32F65B513AB08F4722 + F280B039892AA9D1FF2FA352BDD6BBBDE1CBB115EBC22C7CBD30FCBD1E1BC333 + ECB17BA803E7CB0259D0066FA005D3568FD87600AF439B1D5ABAA79B9B9C7BBF + A03BB44DBCC450ACC452FCC44AAB04CF190355560A405815004C266C2984036C + AED678A47DEBB5DED9970E4C47EAC419F082695758C1B525AA84D9547CF362F3 + 09B01FBCAA1F47227244C2620C870C0BB82A1C6CE25BC8867CC8889CC8DDCB01 + 286048B3110454100774000152D0BE1988015F2030724AA7F5BBBF44EBC9A01C + CA463BB480BAA249936F4AA84C8DD6C5E9619DD719AA55BBB756AB0897B020E5 + 89C66033B6BEEB193BB64080597ED83798A8C64D6E5B7FF601453416B075ABC7 + 095022791BCB1174FF17218329DA38C808A8C816CBBDD8BCCDDCACBDEC18113B + D00574A005917BACBCE107F8882C0D15CAECDCCEEEFCB9CF4902191005F98638 + DFC7CA47647D624CC0F4D1080A823F82B33F1473311603C19C219256E14E59B8 + B6C384924BBA18AD168600BB98CB2C931F572278CB7EB3FB38282CC8D6AC0E28 + 9007E22BD2164BD2217DB18C2CD22A7DD2129BD228E0D230CDD227BDD28C5CD2 + 337DD3138B3246C9007F500652004916EA1B7E606DF08B3329D00348ABB435BB + D441CBD44C8DB34FFDB34D3DD551FDC94E4DD553ADB9579C0164B03D9C971660 + 73CFABCCCA52E3606D59C2FB1CC770C279BB6819F1BA40635BD0E770D0443A21 + 6B87AF17ACAF0F0DFF4E73C246EC33D1CB6BD155CA636FAC72E732BD1EFDD103 + D0CD236DC826FDD8136BD2D80CD917DB04A9C9023B4081724588E6655EF64849 + 2461023DD0C9417BB4559DD5EFECCEA36CD53500A824700141A0C5ADCCD6F130 + 5A7C32D6F82C158DA6CFFC7C2A4B755B67F0AE9A0AD705AD22BCAC279DAA54ED + 6792277978E0B44641D63EF5C998764B2275A35C594A5317860D8A6DBD22CDC8 + 319D077990D2E37DD32BFDDDE26DDE27CD01E90DD3EDBDDEEAEDD2E27DDEE58D + DE8CEC10DC15047440058118C40665065B7088A17DB9B8B9D44970D5079EE007 + DED40A8ED508EEE00BFEE012AEB3114EE1095E0338009D2CDA6054011539156B + 053BD0F79CDB5E2CFFA353CB9FB2BCB787D0321320D0E859DCA1B2CB6003987D + 7DA4A6D69E5CB892CEC071CAD82181CDBC0930D01A3DCB7CCB70ECD3DD014AD3 + 370DDE2FFDD2E97DDE4BFEDE2B1DD2F21DD2F50DDF50FEDD560EE5ECADE4226D + 48371011B080B2D3A611BE616D2A2B03790506F42BD59FCCDAA31CE76E5EDA58 + FDE6747ED5762EE770DED44A90E1587C0763E2E18C57B09AD11FA55515AD1BAE + 9665D7D5D8DB7A44016E63DBEAB453300EC111CCA98FD28AB09CAFA9967168C2 + 0898B28C740BC27B5C302897DDA9224F5C8AE408D8DEF53DDEB0CEDEB2BEE5B4 + 3EDFE3CD01E0FDE4B03EDF56DEE5E28DEBBAAED2AFFEEBAE4EDEC28EEB2F30B2 + 55460538550729FBFFA65D061222511212000634E0E0165EE1138EE00DBEEDD9 + EEED067EE10A7EE0FDBBBAB3AD0B204EE8CD5C38DF1719243E15AE2C809877E3 + BE0D63C5D4CB956EDC119C31A5B092DEE3DB79DDE93A5E46D3FB36CA0CC266D8 + CC75530F5868D86B8A0EACDE93BE9EEB14FFD2C04EECBFEEE413AFF1F32DEBBB + 5EDE138FEB1AEFE4F61DEB23EFF1BF0EEC2870482BD0738DF001F2A83A9D4D2C + 7E7033464D034A00EED82EE1E3FEE0506DE13B7FE7DACEE7192ECF800EEF9C97 + 0D20FE71A52E0F87FEEE5221B5583AC0F45EF599274F7BF207BD8B221633D70E + 3B774808BCF24E7801EFD067CD176EA3BCD4ADC777BB400C8FEA6235637318F1 + 0888EBC0EEF1B26EFFF77ABFF7B17EF77BCFF779FFF7767FEB82AFF77D8FF785 + 9F076240004D0011C2DA066730014407B9C2C23AE865D43D000544DBF3DFDEF3 + 9EFFF9A0DFF9E32EFAA2EFF945CF0441C0E15081EE844EE8CD1BE49EC022EC81 + DBB9CD3D674DE4568F855F314DC9D0054C880E94DEF5BC0C2F87AEDCB8BF856D + CB928B40553EBEF6F7C9AA412E1A8129CB5A8A09AB4EF7C266F7270FF27F7FF8 + 847FF8776FF281FFF71AEFF783AFFD814FF8DD8FEC2B2F025A72073B4007BEF2 + A6C2E207AC53332231E034CBF9A00F084982493584838583898A8B8C8685888C + 8F87893D2A2417416D9A5D6D7F67090970A2A3A3A109031F1B0D9B9AADAEAFB0 + B1B2B15D01711461FF0C160CBCBDBEBFC0BD616114017F1F671F1F6BCCCDCECE + CAD1CA6B1B7F6DB6B9BADABBBB0CC3C314E1E2E371011B63751065EB10EDEEEF + EE750963677F0114BEDCDBBA16FD0CC61F06081C48B0A0C1830539285CC870E1 + 0B0E0F1F369CE810224585122B4E8C6831E3468D142312687243C4053201EA68 + 31230583CB97307D6CF1A38184891E881E30D2298867129F8D80EE1CDAA8E720 + A1917A98B891E10E2B4FA14891AA5347D4BC33D4FE345835ABABD7595CBBC4B9 + 352C985960FA18946BF0A7ED8635D39E3D93966C9A2AB1B8B6F9EBE6ED9B5F0A + 63396D180047DDBA32F012533DB5C61EBE7DFAFA49F616A041C03108336B2EF8 + 220F45CF10F3741EFF3D113407D3A14F2F342D5A616BD5AE4F8F16FD9A7567D5 + B457AF9648C040C90B777804B852C68C1E3F7E5CFAC0B0DCCC812F7364D80483 + 0352D1EB44B16B5F84B4E803253F4CE4C072A50D27A851A5AA0785799956F35D + 387D9D3FBF96AD5BBDF89EFDA58F58B9005D1C938C5C7249230D350DE0958B64 + 0CEE574E1B1B7C30061CE91C865862F1C833C6070DDCC34B647A4D56CC1F6B9C + B1D9899B75A422472CAEE8E20B30BE28634430C6D8E28D33E6D8190A05307552 + 171B40F0854BC9C184C11766F8E0470B3990F0437535E824E54F544E69659558 + 5EA965965C6EE965964A1CB1D4165150D1C927EAA549CA551FBC47DF9B6FD642 + D67E740213461C10FFC645203406D6D5581B7332E88F361FF2528C656324908E + 61182A764A9B1E122AA9A00C5010A08928668A5044AD714ADA6C9F762AAAA72B + 8E4A1B8BA7A61A2AA8A6AE9A2A07248990010C745001C70466C4F49214CE7DC1 + 444D1250A7445047156B1477C652795D77C41EABEC4FE089D7D499A0A8291555 + 55B1875535ABC4271F9CE0BA62DF2DB864536730DDDCD945036F19B8679F670C + 688D2D79F163811593ED420C408A1A7658A3F1C0718A2A9182C80D83EA463800 + 669A363C508D10472CF1C414576CF1C518675C711E06F8B6020B6AADE1851E18 + 140913AF5FF8300708364930EC9730772973CC34CF5C65B4375C400754D6F66C + 0A668D25E86DB844FF6F621F36E7D2094E65C8D4B5CC9ECD44136F2ADDD2FBA1 + 152184802F2F7732DDAFBFEC00BC182A1D3E66B0BDFEE0B901A60EB73D008E70 + EB38A38D72C76D374474DF4D230A3ACC7AC7151BA894AB72CC31C76B924C3EA1 + C29389F8E478B1533A7BA5E4C93E4EF99692473B1E1D9FA4D7B37A55098C8A2A + 5B156D7A2B72D69B34BA9491484DD450478D8C32D55893BA2E585B51E9836B53 + 0876D88D667B862A718471F6C192DDD9C61A0BBBEDB6C6D0472FFDF4D47746C0 + 084C051107031F1C80C17126632005AF4A6A00C21326FCD083510FB49FA5FB56 + C25FA5FC52C26F7FFDF8CF7CFF4FF0E3A094064140D3E7D44415ABB4272BDD8A + CFE9C035AE72AD0EFF2D6A09007C1A5022A741CD5DCCE0562DF061057C85A132 + C79850852C742180896E0380CA065F5688300996A879CE7358F56648C31A422F + 0F622840DF8240053A4401572E21D9AE306006C469A04912585FE5B0C43E9B5D + CE66316BE2E4A0F5831868000B021BE0E74C71953F0D6D81708A4F00E865AE07 + 0A231CFBF284052F68A068FCC94316B8D33106A0A845FD0B60ED18DB1A525828 + 8335084F2F8CE1F320868717446062878451220D59A34316F2909044E40B0A09 + 3147466C9130A2642323F6C84932529192ECA4239B30821530210864A043190E + D01221EEEA0B4862021390688397BD4F4BFB6B5FFEE2B7CB5CE6727EBBBC5978 + C6632D5368B18070FFA0472ADAC2153032905EE52AE303BBA1B60D589319072A + 90D4A686A06B006830BE031B1E03968054A4F078688B2320CF3006CCC44B909A + A218263F79494646F29E929C67242B29498BE1139FFCFCE7439AD00459D16A00 + 103840920AB79C868ACF0CB39C0E0EA048D19A59B4A25D52420F62D08220A409 + 14201D203205E6CE6E7ED1995E116339C825CDD5E9EB3F1214D01AB539BBA751 + E32DECF41D094B283681D5432C2A840C3FF0A54E089988616C83E7890C190148 + 36B5A9F684EA53997ACFA74E55A057B5271EEEB955AADAD3AB55B5AA58AD0A56 + AA5A15054DD0C10A30F1870DC0E10B7A2059F89893B23934C90412A84194F8A7 + CBBEFAF5AF800DACFF60074BD8C026E10724584119D2D4CE44794E8B06A49A02 + 511AA706B6F48165515E05F5442037466D61A1B0A385C6E98E64A602A8854A6D + 3A3F48C1A42AB561586564274529DBAFE273B6B6CDAD256FABDBDAC656A0B4BD + E7484A9281206C2501B034524BC617CB1668E00936A8C1B080D957BE5617B07C + B5AE2EB3BB5DEC76D797F8C301625B3052920AC4B159146901BBC8CC6652162C + 9B1823192F7B2E6E288F99EDCA2636399B53D19290B455D9D01F808ACEC954AA + 32256AE700DEF9DA4C3575AB0FBEEA56271C010857F8AA1196AA54BB8A61AE5E + 98AA160E71562F9C61129BD8C2207E6A575180BD0C60219575F042AE8EA35C58 + 1E804978ED010EF0FF57D81EFBF8C74056820472C00437AC89610B6B67B5445A + 0A36A9023E937DAF2CC4781FD599B11780B18504D7B660CEC2652E741CE16801 + 6CDA0117AF8F90B9D72EE210A04036B86D61DDB08A9D4A67437258CE510D6B6F + 3F3C56AC4638CF56BDF33FA56AC83CA075042EE60115A2E0BD2239747C664899 + 7349F0841F4C17C898CEB4A675191E531E395E6C432F643F1D342987918C5736 + 0B6BBFDCD9665C134DEDB82399C7D0186C1478326A0BC89B9DD7E75EFBFAD7C0 + 0EB6B0874DEC5FCF200233B8DE0A66150532243488467289737C9038F53960D3 + D8CE3661C3A3812D84EE2AA0C6949297AC5EF32E835B4633F52B9AD94007A65A + 1B87DA0ABBDAE86AFF9C8A9051A46D8769CB969F7E7F08D74012B7405CBB6BCD + CCB9D8084FB8C2175EEC421254042DC00215E2308003808F702D89B419E6C0A4 + E9F052DB20DFB41252F08415789BA4E12EC8B8476D156D510DCAEA9EB29CEE41 + DFD5F9672C4C9B9A9E5E3DA15803AFA702B6B5500FB6353CCDB1E0BC6EEAB197 + FE54A63BBDE95067BAD2914DF5A93FFDD8569F01D6A97E75AE437DEA56F7FAD3 + C33EF63C10E0377738031C14BA9C92C1842510FD550ED237D1C20A00B0776F5F + DE1FB0F7BEEBD2EF7FDD7B6001FF1D0970740B2867F082417DDEC71E93A4EE71 + 6FCCA73C46B294E5DD586E338178AED39F6328C06BE0F7ADD39627A4C790C452 + 8770D72B8C75D507FF5AE97858BAEBADDA7AD9B79EEC5C8F3DB2552FE2AA47BD + EABA1F7BEE59DC379DD1610CDE23D2A3A5F085036CA105E7BB8912424E7D6C8F + 9CA3580037A6C21DEA901EF3DB077C32CC27DF86B0547E2C5636E34B25A80912 + D9C5DE5FF33C3C02CC21380E1D77450FB8E94FAFF5FE8BFDFF5DE77F4ED77F01 + 886C5AC77507388004B8800948800028760EB88008C88048C062117705575007 + 2C116D43C4049376133840787737827FC7772648827A77822A488228B88225C8 + 822698827787031240022DE00651C0789BA1642CD764A39340DF427EE25279E9 + 7765C4100E6A132F379560E1247FEFB06F34A75A2CD44116906BFB174302D880 + 4BA7850678755C28FF815E08860938815DC8805FF8856408865DB886FD474AA6 + 645C01B07652801CD19624D4561395A65DDA26782A587D80A5143980093A6810 + 29075AD5E27804240AF48020A52384AE607E96777957665F6AF30CEC5447F8A6 + 18C9B44701B02043D7206A615457888566588AA6788AA8988AAAB88AACD88AFE + 875637B0023010075700075AD0121CC82B52E08194F62432E88230188CC0388C + C2588CC4C8771A251E4C908304377083B87288D833EE1479E3E788E6215F73F2 + 6EDD9065F3A60CFDE5733C95479B780DF850601D7460F3D68CA38822AED88EEE + F88EF0188F04880704D0373010047750076EF005B858382EC17C07406D39F004 + 499404D3E78731E8FF6307A969E01103E3A1789A9228E9356AA6F083F0618DAF + 903A35875900B10C974815FE327F9BD8219EE847FDE041000191EBD83033B000 + 2DF9922E199330399332599334799336999338B9933AD9933CF9933EB9007820 + 06C485059CE3062D31570FA524B354693D608C50798C51399552898C55D40203 + 100527C27D47855ED1782DEBB588A483919A503A72C25292786596226F6B137F + 3F571503C089E6B242FFE60F1FE4092B2948042893A7E8927BF9925AC7978039 + 98813993A528987E698A89998A36599882F9978BF99262D0622F7606CFE64AFE + 78245E80014824014340582D18782E98827D159A55298CBA448344560728C27D + 03316E5FA926F3B0FF60267552424865E8B7914AB3526CB60609E00E6F090771 + 498EF72719E738226E96976D03930B109440D992CDF99C31199DCE599DCC699D + 41499D34A99D31190162E0865B4006573006D021572713692A030203E9322F78 + 9AEE4995F0B9823D30644C004F2BD783903796649991A886791F12077FE096A5 + 358E67763C82F2416BA38ECA8922D8299D0EDAA010FAA0128A9D5BE586C04106 + 75905C6E5738CC654404890307D977211AA27F37A2A49990225882279AA2A4A9 + 142BE0060EE39A8638913D832D28776E6E126593677ED09496F5A50D008A0E8B + 1230C359A09F381977A96B0BEA3CD7D99CDC499D4EDA934F1AA53949A53539A5 + D7B99D4EDAA456BAFFA5D349A55C0AA5D39906CD3912100703E22924177732CF + F105CE853E96169F72FA9E743A823FF0043718A32A799F14399B58F11EB6799B + 6759844983A0842192B4C64752F86F547897C9B9A40EE3A5560A9D602AA95F4A + A95D7AA95D4AA99C6AA951DAA962FAA99B3AAA934AAA32C93719C0025D400632 + 6624CBD1120DB524BDA804735AAB755A954A7109ACE93C29C783B1F9518F826E + FB893A63844698B516CC134E10A0887BB43DC579A0C6A0A090CAA0996AA51550 + ADD87AADD81AA5DABAADDE9AADDFDA9CDD1AAED54A8FB178012C602910601C6B + FA8F3EF00534D18B3DF08BC528002368AF7C87AFF61A8CFADAAFF7FAAFF90AB0 + FB8A8C43201E58C0FFAB85D858E456A3EBC526A5568DB7797EC6BA9B08860CBF + B90E70B906A865A0220210D32A485F4AAE223BB2245BB2267BB243D923177005 + 0CF007C5D18F0DE5039136131D27013F40AFB76AAB3AFB005759075AF9663CC8 + 725CB4214F16A8824A841BA92E24026A8A82B1B4D60579C1B1A41721D2FAB19B + B100D74AA6598BB55C7BAD5EDBB560FBB562CBB55A0BB6653BB6681BB66A9BB6 + 637BB66B4BB670BBB56DABB664BA0024E16264C0078243246F57443E10514934 + 7D033BB8FEBAAF862BB0877BB8011BB089EBAF8C2B00AAD9513F1B43096B4C90 + 153AC9F4A76E32ACD78896D204180172190B36218AB801504B977D64608064B5 + F024AE4EDAAD63EBFFBAB2CBB5B30BBBAF7BBBB58BBBB4BBBBB1CBBBBA6BBB5F + 9BBBC2EBBBC38B046E8805787206B7F812CB5744BF4202368BB33B3BBDA7C96D + 5B7007F05488497688E56640C9500D46138411BB5256560C9D909C534330466A + 92FD702714A4A4ACEB366FCBB6F35BBFF47BBFF69BBFF8BBBFFA6BBF78D00419 + 700163F01642C2B7E1935C2C63B320DAB88F5BB884ABB80CFCC00DDCB8F84A04 + 771A7157E858BFBA1EECC5B9A8A391861207E958106DB24141C5BE6BD606F01B + BF6EC3BF2EDCBF2F1CC3303CC3329CB6765B4A4CC0023B10076A4A38AF6A065B + F0B747F40429D003B4BA828ECB8249BCC488DBC48B3BB84A50B04CB1ABAFE59A + D0F87D56313ACCE4FFC1830A18AD0543030129E5B81769866BCB03C62CDC3658 + 5B015ECBC66BDCC670CCC66E2CC76F5CC7747CC7729CC778ACC7763CC77E1CC7 + 7B9CC77D0CC76F2CC87AFCC787ECC60BF09D10770701C00765C08F6EE7683EC0 + 7C662003EB19A714BCC99CDCC99EFCC9051B886F26A3DBBBB0D682B97EFA72DE + 22BE93773495A13007B10C1DC20F93622F45B73C559BC69B51C376DCB5730CC3 + 7F1CB6BFECB56980B6C38CB5C54CC3C77CC734FCC6E62A8B77400772C8811870 + 005E7063431CA74FECC04CBCCD4E2CC1E0ACAF166C456540C5196CCA90D5C11E + 5C7EEE97194A78BA648C3CA4B7C2BADC36897CCFF89CCFFABCCFFCDCCFFEFCCF + 007DCF8B7CAE2C40FF0709B581D1A68B1C37909AFCC90EFDD010BDAF43508318 + 5C7032EA95DF972DED21ACE6618D6C41B59BF1018072A42F75C64856CFF61CD0 + 2ABDD22CDDD22E0DD048409426710761B00375E03DE65938332B903160B3FF1A + D1401DD486DB695B607ADA5BCA3DC81E5A0CB131F7D1C8A019F4D00071902FAB + 25C28F8AD20EA3C71E20C75B9DC75BDDD5158006892CD6F90CD6665D015B4DD6 + 689DC8602DD6607DC86DCDD56B7DD66C7CD65F2DD7753DD7727DD779DDD761BD + 001170B730B0037FF0562F6132322BB3186057D0FB034420D4900DD9DC76B0A3 + A878182DB48BB8B98EC82E574D10F4F007CE9A4EBB3022F48CD559FDD26BDDCF + 6F8DD7F8BCDA65CDFFD6FAECDAFCBC04AC7DD7749DDA797CB727710567E00543 + 92D0CCB70572F7A1B41AD9C6EDD04460782D000127BD6B17ADC1344A401ADD65 + C2AAA3EFD5564F9D1998B1019D28DA112420CD6DDA0DA3D7B64DDEE65DDEE87D + DEE4ED01E9DDDEEAEDDEF0FDDEF28DDE1E8006EC3DDF68ED016920066260123B + C0006B3001524063E79924C32D018F6DAF42B0AF0BAEE00CFEE00E1EE102D0E0 + 130EE1152EE1149EE10230D124C004C27985CD286A14696E45CBCA28C5D9D24A + 0F2854A0446501967274E21D43E5EDD7768DDBEE4DE37B2DDF38BEE3E69DD77C + 8DDF330EE47AEDE336BED71E40006B259E7470D3FD98993EF0E46FCA9EC73DE5 + 9CAC043860020094FF97176DB958CC5E8D686A28BE197F7A0F27B96601A76031 + EE3CECBDE66CCEE6F6DDE6701EE772BEE6F93DE76D6EDF62FDE671EED676DEE7 + 7EFEE7807EE76B8E063340942B1004571007DD036D4324054F8EC90499E015BE + E01A4EE9937EE996EEE0969EE917DEE9955EE188559F2B49CA57FC390D5B52E0 + BBCA278E5327B20C6DC041BAC3660A83E669DE36747EEBF7FDD56C5EE7409EEB + 73EDEBF41DECBC7EEBF39DEBC6AEEBC8FEDEC75EE7BB4EECC96EDB317D0317B8 + 0351B0BC98F9E41A2703E7E399C54DE5DE6EB8FF73BDE1BDA012899FA1A0E209 + 4459612EE66D32D5F862295C56EB8214E8F45EEFF67EEFF89EEFFA5EDF683099 + 817807543000CB9BFF1C075C57D1370409FEE99B8EE90CAFE99ECEF00BEFF002 + 30D993ABE53A08DD1B4C210524965A2179A6B3EE27B206DDFDE212E24EB92CEF + 06B1EF2ABFF22CDFF22CBF002A4012E84A0510B0120E75F3527000F16A0243D0 + ED92FEED869BF00F9DDC9750F1A33E88DB1BDD896840B459E2264E1F201FD280 + 22EBD93D7028EF301E500259BFF5F6ADF55E8F065EBFF5613FF6622FF625F0F5 + 649FF6653FF667BFF66EAFF670FFF6721FF75ADFF5737FF7FA6DBCD983816F35 + 871BFA3DCCF705DA4E699FE9F00B7FF8109FF888BFF8973E04786AF4D32A6E22 + 2EB416F9F450CFEAAD690DA278F5F3EEF6EC4DF69F2FF7A11FFA745FF670AEF5 + 6C1EF6A4EFF9AC8FFFFAADBFE6A0BFF5A32FFBB4AFE7AE1FFBAABFE67A9F686D + F006ADEAAA1AB72403D9F386AFF8C6CFF8C80FF1C96D72906FF1BD7AD9A61E96 + A8D04D4513F59AF1BDB36EF59C8FF55EDFF6630FF6737FF6DE0FFE69EFFD590F + F6E6FFFD6C5FFE2500F6E8BFFEE12FFE6FFFFE674FFE77DFFE709FFE72BFDF38 + 0C08645D036E5F18187E8888665F5F3E2D244F434A4202959796999742989D9A + 9F9EA1A09902124F1A5803AAABACADAEAFB0B167B3AD6363090970BABBBCBDBC + B8036B0D6DC4C5C6C7C70D1B6B67B1AE671F1FCDCED4D5D6D7D8B0251EDBDDDC + DFDEE1E0E3E2E5E4E7E6E9E8DC25EAEEECEFF1EBF215624D2B1759716B135289 + 7A3E0E613023C550FF8B1C4F7E0858288408C385A344617A288AA22587A0880C + 9140E2C2986C20B3CD9A762B97AF93BD12046BD005994B64CA98859C49B3A6CD + 55F0DAE9DCA93327CF9F3B7DB6130AB4A8D1A34089225D6A5429539D0AD2DC63 + 42264E17088E30E81198A8A09939087F1091688953D94D684199E5146AAD26B7 + 434CE42813E5A6DD91B406D8C26512651D5D093E7ED8C0B24BCB9788634EA3B6 + 785563BB9023AF0AD70E4DCF1296E171B35C19B367CEE5867ADEDC4D3468D33C + 2D671E7D79B56870AA75828E1D5BF3E7A4A55BA7060ADADE0D265400C41970C0 + DF568152186138F84482C288D0C94A8F9E51420E264124DBCCCBAA24CA5D63CE + 10EE12A07C80C388FF5D2AD6CEBE7DB6A7F0E3CB9F4FBFBEFDFA69C4FCE69185 + 0221337E249208063E980120130839E750276BB1C5D659103E286183694DC8D6 + 0F2668B0857B35E1D5CC5E70F40558786BFCD1451C148411471CE7A5F7D27A1C + C628E364A7C966E34FA0D9E6136CB97516946738DE98DB6CA1F104CE513BB206 + 0F9147EEE6A393A9E9D7020B6184B1070452084420065214F485063990608204 + 435037DD9911B9750911449840021375CC28125EABEC95CB9D2B918762952CB6 + E8224CCB3C26E7A09095A080A188B673E8A13B2D9A28543C395A94A394425AE9 + A59622CA68A49A72BAE94F923EAA68A79B621AEAA7A4768AC40D2D904181050D + B86186565A1E2205FF0820842981040B3AE8EBAFC0062BECB00DFD704A2A84DE + 5452606B9C48C18A1444DB277A7F160363B2D8DA5469A340853AAAA9A266EA6D + AA98723B6EA99D7E1BAEB9DDA6CBA9BAA8B20B2F1A52DE1186707548A1C7715A + E29A6B826556486184035B48B0C0976C745D1D1F655B8D87AAD812DE1F7130C0 + 4095613C3B6DB5C904EAF0C721912B32B8248F6C72C9289FAC72CA2CAF7CF212 + FAAD1004030074518621030AE4EFBFCD0D3116B140072DF40F12685817C8CED0 + C9CA070D0410C6C5D16ACC22B51C5F8BF4D5B12880C6A29C695D6EAAF08AACE8 + D68F6E5B36A4F38E3AF6A55D934B36BA6A9B1CB7D9E8B2CD76CC30EC90451751 + 14B765403BCB90EBFF13098D75968307276EF0E2BF0A40044717C489F535B308 + B367D41A974775B5564FEEB92A0A842EFAE8A4976EFAE9A8A7AEFAEAACB7EEFA + EBB0B38E061731A0B2030014D4F1853F3AEFCC3399870B2DFCF044FC503B1C9F + 3306CD1A6D049022E62B6ACEB1319D278FF42CB12F1ABAA6A593BABDF6A8738F + 72F7A68BFFFDEBE65F4AFEE8DE83CFBEE8E92BC0451322E43D45006F6861C671 + BE8320380891F0195A1007AC8311904207DC44F132842CEBC1A2720DB85CD4A2 + E7A7E9B5A17A0ECCD6484487000E9AAE83AD0321E944383A1192307BAF3B61E8 + 54A80016A2F0851F64DFFC6E70012A848001C4A155FF7616C0E00DEF87C26213 + 47E074B40CB20282FFCECBD804A3B7B93F61D08884A2050CA748C52A5A11755B + BBA2EA66D7041AF2C00914F880160EB14310CC4106609284E180C84661190F15 + 512003141D7306CB3D6F89D2B3E0053D36C76441CC831D0C24205B4848411AB2 + 90883CA42209793A419630918C1C212417F9C8455A7292923421264F78493074 + 31032CB0D81AB4F0851DCA40067368810C22219636BAF257C5AB5D1D54D24724 + DE515A1BD3E313FBE81E0F8D21759A5CA1072BB9C94C42B29191142627597749 + 625E5293941C66323149CC472EA18B176041161870860994F1946794014202F6 + CA720A81682B7043C3E6084109E2328F16DC252F2543A75BC061930878663E0B + B94F43E6F39FFE04FFA8402709507EFE9383FDC4A7400B1AC88532B485FD74E8 + 411B4A51832ED4A20145C035479081203821046D38E50ECF388733B2F267E66C + 63F14880857542D1964AC4E5D4F4B84799CC534623D10B1CEAE0064329F398C5 + 7464249F19D462FEF490472D2A5185BA54A53A95A830BB070CAAC000299CD177 + E09C831FCE08B094AA940824D8C21D78D9CE5B66AE82D393E74DEFF2213840C0 + 0D5A50C11214D00789DAF5AE19C5AB5E2F4A51896274AF800D2844034BD8C222 + 607E2BC0020F0C74D5C0A1720EFB5A654286E05536B6A9050D7C691D9B66560A + 36D1456A5DEB4CE8948BB76AE100311083A1F27A578CFEB5A28A4CA85D13D9DA + BE1A96B5B01DEC43FF6D7BDB81F25601F6C0C7160EF085C6FAEFB125C5C01CD2 + D8CACA12EF141728A211CB1AD3B37E363DA1152D48723A06B7BAC10B07388006 + 622057DDF6F6BCE84DAF7AD7CB5E892256033E68841EE6E02F703E560FA70C0B + 659D2BB4956AA00CB5DC6C12A1C7449A6657BBD8A045774D1BDE032C97044DE0 + C212F06ADE88EE75B0AFB5707BCF5BE1C27678C3B3B5470E348001E22AF794C8 + 2DA98AC549821FF037686C225A0E36C4CECDBAD3BA06E62382B793D3D2C2B5C1 + E17D3079278C001714F9C8F9347292FFA9E4231BF9C94866B240A1DC64805259 + CA576EF295ADECE42E6F39CA5AF63298A73C66282F39CB588EF299BB2C3F15DC + 40034CF8C2017C405B5254DAB9A4F31567E15E1C34633121C0C218301ED15A35 + 1DEF98267859F0774F0B64071F444C5CA82B88274DE94A5B3AB02E58829BE11C + 5E82E499A42A46048B79C567620DE1092D0074043B9BCB781AFAD02151B07719 + 0DE44000003B} + ExplicitWidth = 386 + end + end + object edtPassword: TEdit + Left = 96 + Top = 132 + Width = 278 + Height = 21 + PasswordChar = '*' + TabOrder = 2 + end + object bAceptar: TButton + Left = 208 + Top = 203 + Width = 75 + Height = 25 + Caption = '&Aceptar' + Default = True + TabOrder = 3 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 296 + Top = 203 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Salir' + ModalResult = 2 + TabOrder = 4 + end + object edtUser: TEdit + Left = 96 + Top = 104 + Width = 278 + Height = 21 + TabOrder = 1 + end + object Button1: TButton + Left = 16 + Top = 203 + Width = 129 + Height = 25 + Caption = 'C&onfigurar conexi'#243'n...' + TabOrder = 5 + OnClick = ToolButton4Click + end + object Timer1: TTimer + Enabled = False + Interval = 5000 + OnTimer = Timer1Timer + Left = 344 + Top = 64 + end + object JvAppRegistryStorage1: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + StorageOptions.BooleanAsString = False + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 14 + Top = 168 + end + object JvFormStorage1: TJvFormStorage + AppStorage = JvAppRegistryStorage1 + AppStoragePath = '\' + Options = [] + StoredProps.Strings = ( + 'edtUser.Text' + 'edtPassword.Text') + StoredValues = < + item + Name = 'Ruta' + Value = '' + end> + Left = 48 + Top = 168 + end +end diff --git a/Source/Base/Usuarios/uLoginForm.pas b/Source/Base/Usuarios/uLoginForm.pas new file mode 100644 index 00000000..a3814747 --- /dev/null +++ b/Source/Base/Usuarios/uLoginForm.pas @@ -0,0 +1,101 @@ +unit uLoginForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ComCtrls, cxGraphics, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, + cxImageComboBox, ImgList, PngImageList, pngimage, ToolWin, JvExControls, + JvComponent, JvGradient, JvGIF, JvComponentBase, JvFormPlacement, + JvAppStorage, JvAppRegistryStorage; + +type + TfLoginForm = class(TForm) + Panel1: TPanel; + Label3: TLabel; + Label4: TLabel; + edtPassword: TEdit; + bAceptar: TButton; + bCancelar: TButton; + Label1: TLabel; + edtUser: TEdit; + JvGradient1: TJvGradient; + Button1: TButton; + Timer1: TTimer; + JvAppRegistryStorage1: TJvAppRegistryStorage; + JvFormStorage1: TJvFormStorage; + Image1: TImage; + procedure bAceptarClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure ToolButton4Click(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure Timer1Timer(Sender: TObject); + private + FIntentos: Integer; + end; + +var + fLoginForm: TfLoginForm; + +implementation + +uses + uDataModuleUsuarios, uDataModuleConexion, uDataModuleBase; + +{$R *.dfm} + +{ +********************************* TfLoginForm ********************************** +} +procedure TfLoginForm.bAceptarClick(Sender: TObject); +var + bOk : Boolean; +begin + ShowHourglassCursor; + try + bOK := dmUsuarios.Login(edtUser.Text, edtPassword.Text); + finally + HideHourglassCursor; + end; + + if bOk then + ModalResult := mrOK + else begin + Application.MessageBox('Usuario no vlido. Compruebe si ha escrito correctamente' + + #13 + #10 + 'el usuario y la contrasea.', 'Atencin', MB_OK); + Dec(FIntentos); + if (FIntentos <= 0) then + ModalResult := mrCancel; + end; +end; + +procedure TfLoginForm.FormCreate(Sender: TObject); +begin + FIntentos := 3; +end; + +procedure TfLoginForm.ToolButton4Click(Sender: TObject); +begin + Timer1.Enabled := False; + dmConexion.ConfigurarConexion; + Timer1.Enabled := True; +end; + +procedure TfLoginForm.FormShow(Sender: TObject); +begin + Self.Caption := Self.Caption + ' - ' + dmBase.DarVersion; + JvFormStorage1.RestoreFormPlacement; + // Hacer login automtica si hay usuario/password y no hay ms de una base + // de datos como opcin para conectarse. + if ((Length(edtUser.Text) > 0) and (Length(edtPassword.Text) > 0)) then + Timer1.Enabled := True; +end; + +procedure TfLoginForm.Timer1Timer(Sender: TObject); +begin + Timer1.Enabled := False; + bAceptar.Click; +end; + +end. diff --git a/Source/Base/Usuarios/uUsuario.dfm b/Source/Base/Usuarios/uUsuario.dfm new file mode 100644 index 00000000..93fcc6e1 --- /dev/null +++ b/Source/Base/Usuarios/uUsuario.dfm @@ -0,0 +1,123 @@ +object fUsuario: TfUsuario + Left = 523 + Top = 415 + BorderStyle = bsDialog + Caption = 'Datos del usuario' + ClientHeight = 309 + ClientWidth = 308 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Button1: TButton + Left = 138 + Top = 273 + Width = 75 + Height = 25 + Action = actAceptar + TabOrder = 1 + end + object Button2: TButton + Left = 226 + Top = 273 + Width = 75 + Height = 25 + Action = actCancelar + TabOrder = 2 + end + object TabControl1: TPageControl + Left = 8 + Top = 8 + Width = 293 + Height = 257 + ActivePage = pagUsuario + TabOrder = 0 + object pagUsuario: TTabSheet + Caption = 'Usuario' + object GroupBox1: TGroupBox + Left = 6 + Top = 5 + Width = 274 + Height = 99 + Caption = 'GroupBox1' + TabOrder = 0 + DesignSize = ( + 274 + 99) + object Label4: TLabel + Left = 34 + Top = 28 + Width = 39 + Height = 13 + Caption = 'Usuario:' + Transparent = False + end + object Label5: TLabel + Left = 16 + Top = 60 + Width = 57 + Height = 13 + Caption = 'Contrase'#241'a:' + Transparent = False + end + object edtUser: TEdit + Left = 88 + Top = 24 + Width = 169 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object edtPassword: TEdit + Left = 88 + Top = 56 + Width = 169 + Height = 21 + Anchors = [akLeft, akTop, akRight] + PasswordChar = '*' + TabOrder = 1 + end + end + object GroupBox2: TGroupBox + Left = 7 + Top = 111 + Width = 273 + Height = 110 + Caption = 'Permisos y seguridad' + TabOrder = 1 + object Label1: TLabel + Left = 47 + Top = 36 + Width = 26 + Height = 13 + Caption = 'Perfil:' + Transparent = False + end + object cbPerfil: TComboBox + Left = 88 + Top = 28 + Width = 169 + Height = 21 + ItemHeight = 13 + TabOrder = 0 + end + end + end + end + object ActionList: TActionList + Left = 8 + Top = 272 + object actAceptar: TAction + Caption = '&Aceptar' + end + object actCancelar: TAction + Caption = '&Cancelar' + end + end +end diff --git a/Source/Base/Usuarios/uUsuario.pas b/Source/Base/Usuarios/uUsuario.pas new file mode 100644 index 00000000..90e722c2 --- /dev/null +++ b/Source/Base/Usuarios/uUsuario.pas @@ -0,0 +1,39 @@ +unit uUsuario; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, ActnList; + +type + TfUsuario = class(TForm) + Button1: TButton; + Button2: TButton; + TabControl1: TPageControl; + pagUsuario: TTabSheet; + GroupBox1: TGroupBox; + Label4: TLabel; + Label5: TLabel; + edtUser: TEdit; + edtPassword: TEdit; + GroupBox2: TGroupBox; + Label1: TLabel; + cbPerfil: TComboBox; + ActionList: TActionList; + actAceptar: TAction; + actCancelar: TAction; + private + { Private declarations } + public + { Public declarations } + end; + +var + fUsuario: TfUsuario; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Base/Usuarios/uUsuarios.dfm b/Source/Base/Usuarios/uUsuarios.dfm new file mode 100644 index 00000000..eb18801a --- /dev/null +++ b/Source/Base/Usuarios/uUsuarios.dfm @@ -0,0 +1,118 @@ +object fUsuarios: TfUsuarios + Left = 490 + Top = 417 + BorderStyle = bsDialog + Caption = 'Administraci'#243'n de usuarios' + ClientHeight = 401 + ClientWidth = 550 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Grid: TDBGrid + Left = 8 + Top = 40 + Width = 425 + Height = 313 + DataSource = DADataSource + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + end + object JvNavPanelHeader1: TJvNavPanelHeader + Left = 0 + Top = 0 + Width = 550 + Align = alTop + Caption = 'Panel de control' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -16 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + ColorFrom = 8684164 + ColorTo = 8684164 + ImageIndex = 0 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + end + object Button1: TButton + Left = 448 + Top = 40 + Width = 91 + Height = 25 + Action = actNuevo + TabOrder = 2 + end + object Button2: TButton + Left = 448 + Top = 136 + Width = 91 + Height = 25 + Action = actModificar + TabOrder = 3 + end + object Button3: TButton + Left = 448 + Top = 176 + Width = 91 + Height = 25 + Action = actEliminar + TabOrder = 4 + end + object Button4: TButton + Left = 448 + Top = 368 + Width = 91 + Height = 25 + Action = actCerrar + TabOrder = 5 + end + object Button5: TButton + Left = 448 + Top = 96 + Width = 91 + Height = 25 + Action = actCambiarPassword + TabOrder = 6 + end + object DADataSource: TDADataSource + Left = 368 + Top = 40 + end + object ActionList: TActionList + Left = 8 + Top = 360 + object actCerrar: TAction + Caption = '&Cerrar' + OnExecute = actCerrarExecute + end + object actNuevo: TAction + Caption = 'Nuevo usuario' + OnUpdate = actNuevoUpdate + end + object actCambiarPassword: TAction + Caption = 'Cambiar contrase'#241'a' + OnUpdate = actCambiarPasswordUpdate + end + object actModificar: TAction + Caption = 'Modificar usuario' + OnUpdate = actModificarUpdate + end + object actEliminar: TAction + Caption = 'Eliminar usuario' + OnUpdate = actEliminarUpdate + end + end +end diff --git a/Source/Base/Usuarios/uUsuarios.pas b/Source/Base/Usuarios/uUsuarios.pas new file mode 100644 index 00000000..3e6d9d5e --- /dev/null +++ b/Source/Base/Usuarios/uUsuarios.pas @@ -0,0 +1,89 @@ +unit uUsuarios; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, uDADataTable, dbcgrids, uDataModuleUsuarios, StdCtrls, + DBCtrls, uDataModuleBase, JvExControls, JvComponent, JvNavigationPane, + Grids, DBGrids, ActnList; + +type + TfUsuarios = class(TForm) + DADataSource: TDADataSource; + Grid: TDBGrid; + JvNavPanelHeader1: TJvNavPanelHeader; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Button5: TButton; + ActionList: TActionList; + actCerrar: TAction; + actNuevo: TAction; + actCambiarPassword: TAction; + actModificar: TAction; + actEliminar: TAction; + procedure actCerrarExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actCambiarPasswordUpdate(Sender: TObject); + procedure actNuevoUpdate(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +procedure AdministrarUsuarios; + +implementation + +{$R *.dfm} + + +procedure AdministrarUsuarios; +var + fUsuarios: TfUsuarios; +begin + fUsuarios := TfUsuarios.Create(NIL); + try + fUsuarios.ShowModal; + finally + fUsuarios.Free; + end; +end; + +procedure TfUsuarios.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfUsuarios.FormCreate(Sender: TObject); +begin +{ DADataSource.DataTable := dmUsuarios.tbl_Usuarios; + DADataSource.DataTable.Active := True;} +end; + +procedure TfUsuarios.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not (DADataSource.DataTable.IsEmpty); +end; + +procedure TfUsuarios.actModificarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not (DADataSource.DataTable.IsEmpty); +end; + +procedure TfUsuarios.actCambiarPasswordUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := not (DADataSource.DataTable.IsEmpty); +end; + +procedure TfUsuarios.actNuevoUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(DADataSource.DataTable); +end; + +end. diff --git a/Source/Base/Utiles/MD5.pas b/Source/Base/Utiles/MD5.pas new file mode 100644 index 00000000..585edb50 --- /dev/null +++ b/Source/Base/Utiles/MD5.pas @@ -0,0 +1,435 @@ +{******************************************************************} +{ MD5 Hashsum Evaluation Unit For Borland Delphi } +{ } +{ Copyright 2002 by Dimka Maslov } +{ E-mail: mail@endimus.com, } +{ Web-site: http://www.endimus.com } +{ } +{ Derived from the RSA Data Security, Inc. } +{ MD5 Message-Digest Algorithm described in RFC 1321 } +{ http://www.faqs.org/rfcs/rfc1321.html } +{******************************************************************} + +unit md5; + +interface + +uses Windows, SysUtils, Classes; + +type +{ The TMD5Digest record is the type of results of + the MD5 hashsum evaluation functions. The contents + of a record may be used as four 32-bit integer values + or as an array of 16 bytes } + PMD5Digest = ^TMD5Digest; + TMD5Digest = record + case Integer of + 0: (A, B, C, D: LongInt); + 1: (v: array [0..15] of Byte); + end; + +{ The MD5String function evaluates the MD5 hashsum for + a string. The S parameter specifies a string to + evaluate hashsum } +function MD5String(const S: string): TMD5Digest; + +{ The MD5File function evaluates the MD5 hashsum for + a file. The FileName parameter specifies the name + of a file to evaluate hashsum } +function MD5File(const FileName: string): TMD5Digest; + +{ The MD5Stream function evaluates the MD5 hashsum for + a stream. The Stream parameters specifies the + TStream descendant class object to evaluate hashsum } +function MD5Stream(const Stream: TStream): TMD5Digest; + +{ The MD5Buffer function evaluates the MD5 hashsum for + any memory buffer. The Buffer parameters specifies a + buffer to evaluate hashsum. The Size parameter specifies + the size (in bytes) of a buffer } +function MD5Buffer(const Buffer; Size: Integer): TMD5Digest; + +{ The MD5DigestToStr function converts the result of + a hashsum evaluation function into a string of + hexadecimal digits } +function MD5DigestToStr(const Digest: TMD5Digest): string; + +{ The MD5DigestCompare function compares two + TMD5Digest record variables. This function returns + TRUE if parameters are equal or FALSE otherwise } +function MD5DigestCompare(const Digest1, Digest2: TMD5Digest): Boolean; + +implementation + +{ +Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All +rights reserved. + +License to copy and use this software is granted provided that it +is identified as the "RSA Data Security, Inc. MD5 Message-Digest +Algorithm" in all material mentioning or referencing this software +or this function. + +License is also granted to make and use derivative works provided +that such works are identified as "derived from the RSA Data +Security, Inc. MD5 Message-Digest Algorithm" in all material +mentioning or referencing the derived work. + +RSA Data Security, Inc. makes no representations concerning either +the merchantability of this software or the suitability of this +software for any particular purpose. It is provided "as is" +without express or implied warranty of any kind. + +These notices must be retained in any copies of any part of this +documentation and/or software. +} + + +type + UINT4 = LongWord; + + PArray4UINT4 = ^TArray4UINT4; + TArray4UINT4 = array [0..3] of UINT4; + PArray2UINT4 = ^TArray2UINT4; + TArray2UINT4 = array [0..1] of UINT4; + PArray16Byte = ^TArray16Byte; + TArray16Byte = array [0..15] of Byte; + PArray64Byte = ^TArray64Byte; + TArray64Byte = array [0..63] of Byte; + + PByteArray = ^TByteArray; + TByteArray = array [0..0] of Byte; + + PUINT4Array = ^TUINT4Array; + TUINT4Array = array [0..0] of UINT4; + + PMD5Context = ^TMD5Context; + TMD5Context = record + state: TArray4UINT4; + count: TArray2UINT4; + buffer: TArray64Byte; + end; + +const + S11 = 7; + S12 = 12; + S13 = 17; + S14 = 22; + S21 = 5; + S22 = 9; + S23 = 14; + S24 = 20; + S31 = 4; + S32 = 11; + S33 = 16; + S34 = 23; + S41 = 6; + S42 = 10; + S43 = 15; + S44 = 21; + +var + Padding : TArray64Byte = + ($80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + + +function _F(x, y, z: UINT4): UINT4; +begin + Result := (((x) and (y)) or ((not x) and (z))); +end; + +function _G(x, y, z: UINT4): UINT4; +begin + Result := (((x) and (z)) or ((y) and (not z))); +end; + +function _H(x, y, z: UINT4): UINT4; +begin + Result := ((x) xor (y) xor (z)); +end; + +function _I(x, y, z: UINT4): UINT4; +begin + Result := ((y) xor ((x) or ( not z))); +end; + +function ROTATE_LEFT(x, n: UINT4): UINT4; +begin + Result := (((x) shl (n)) or ((x) shr (32-(n)))); +end; + +procedure FF(var a: UINT4; b, c, d, x, s, ac: UINT4); +begin + a := a + _F(b, c, d) + x + ac; + a := ROTATE_LEFT (a, s); + a := a + b; +end; + +procedure GG(var a: UINT4; b, c, d, x, s, ac: UINT4); +begin + a := a + _G(b, c, d) + x + ac; + a := ROTATE_LEFT(a, s); + a := a + b; +end; + +procedure HH(var a: UINT4; b, c, d, x, s, ac: UINT4); +begin + a := a + _H(b, c, d) + x + ac; + a := ROTATE_LEFT(a, s); + a := a + b; +end; + +procedure II(var a: UINT4; b, c, d, x, s, ac: UINT4); +begin + a := a + _I(b, c, d) + x + ac; + a := ROTATE_LEFT(a, s); + a := a + b; +end; + +procedure MD5Encode(Output: PByteArray; Input: PUINT4Array; Len: LongWord); +var + i, j: LongWord; +begin + j:=0; + i:=0; + while j < Len do begin + output[j] := Byte(input[i] and $ff); + output[j+1] := Byte((input[i] shr 8) and $ff); + output[j+2] := Byte((input[i] shr 16) and $ff); + output[j+3] := Byte((input[i] shr 24) and $ff); + Inc(j, 4); + Inc(i); + end; +end; + +procedure MD5Decode(Output: PUINT4Array; Input: PByteArray; Len: LongWord); +var + i, j: LongWord; +begin + j:=0; + i:=0; + while j < Len do begin + Output[i] := UINT4(input[j]) or (UINT4(input[j+1]) shl 8) or + (UINT4(input[j+2]) shl 16) or ( UINT4(input[j+3]) shl 24); + Inc(j, 4); + Inc(i); + end; +end; + +procedure MD5_memcpy(Output: PByteArray; Input: PByteArray; Len: LongWord); +begin + Move(Input^, Output^, Len); +end; + +procedure MD5_memset(Output: PByteArray; Value: Integer; Len: LongWord); +begin + FillChar(Output^, Len, Byte(Value)); +end; + +procedure MD5Transform(State: PArray4UINT4; Buffer: PArray64Byte); +var + a, b, c, d: UINT4; + x : array[0..15] of UINT4; +begin + a:=State[0]; b:=State[1]; c:=State[2]; d:=State[3]; + MD5Decode(PUINT4Array(@x), PByteArray(Buffer), 64); + + FF (a, b, c, d, x[ 0], S11, $d76aa478); + FF (d, a, b, c, x[ 1], S12, $e8c7b756); + FF (c, d, a, b, x[ 2], S13, $242070db); + FF (b, c, d, a, x[ 3], S14, $c1bdceee); + FF (a, b, c, d, x[ 4], S11, $f57c0faf); + FF (d, a, b, c, x[ 5], S12, $4787c62a); + FF (c, d, a, b, x[ 6], S13, $a8304613); + FF (b, c, d, a, x[ 7], S14, $fd469501); + FF (a, b, c, d, x[ 8], S11, $698098d8); + FF (d, a, b, c, x[ 9], S12, $8b44f7af); + FF (c, d, a, b, x[10], S13, $ffff5bb1); + FF (b, c, d, a, x[11], S14, $895cd7be); + FF (a, b, c, d, x[12], S11, $6b901122); + FF (d, a, b, c, x[13], S12, $fd987193); + FF (c, d, a, b, x[14], S13, $a679438e); + FF (b, c, d, a, x[15], S14, $49b40821); + + GG (a, b, c, d, x[ 1], S21, $f61e2562); + GG (d, a, b, c, x[ 6], S22, $c040b340); + GG (c, d, a, b, x[11], S23, $265e5a51); + GG (b, c, d, a, x[ 0], S24, $e9b6c7aa); + GG (a, b, c, d, x[ 5], S21, $d62f105d); + GG (d, a, b, c, x[10], S22, $2441453); + GG (c, d, a, b, x[15], S23, $d8a1e681); + GG (b, c, d, a, x[ 4], S24, $e7d3fbc8); + GG (a, b, c, d, x[ 9], S21, $21e1cde6); + GG (d, a, b, c, x[14], S22, $c33707d6); + GG (c, d, a, b, x[ 3], S23, $f4d50d87); + + GG (b, c, d, a, x[ 8], S24, $455a14ed); + GG (a, b, c, d, x[13], S21, $a9e3e905); + GG (d, a, b, c, x[ 2], S22, $fcefa3f8); + GG (c, d, a, b, x[ 7], S23, $676f02d9); + GG (b, c, d, a, x[12], S24, $8d2a4c8a); + + HH (a, b, c, d, x[ 5], S31, $fffa3942); + HH (d, a, b, c, x[ 8], S32, $8771f681); + HH (c, d, a, b, x[11], S33, $6d9d6122); + HH (b, c, d, a, x[14], S34, $fde5380c); + HH (a, b, c, d, x[ 1], S31, $a4beea44); + HH (d, a, b, c, x[ 4], S32, $4bdecfa9); + HH (c, d, a, b, x[ 7], S33, $f6bb4b60); + HH (b, c, d, a, x[10], S34, $bebfbc70); + HH (a, b, c, d, x[13], S31, $289b7ec6); + HH (d, a, b, c, x[ 0], S32, $eaa127fa); + HH (c, d, a, b, x[ 3], S33, $d4ef3085); + HH (b, c, d, a, x[ 6], S34, $4881d05); + HH (a, b, c, d, x[ 9], S31, $d9d4d039); + HH (d, a, b, c, x[12], S32, $e6db99e5); + HH (c, d, a, b, x[15], S33, $1fa27cf8); + HH (b, c, d, a, x[ 2], S34, $c4ac5665); + + II (a, b, c, d, x[ 0], S41, $f4292244); + II (d, a, b, c, x[ 7], S42, $432aff97); + II (c, d, a, b, x[14], S43, $ab9423a7); + II (b, c, d, a, x[ 5], S44, $fc93a039); + II (a, b, c, d, x[12], S41, $655b59c3); + II (d, a, b, c, x[ 3], S42, $8f0ccc92); + II (c, d, a, b, x[10], S43, $ffeff47d); + II (b, c, d, a, x[ 1], S44, $85845dd1); + II (a, b, c, d, x[ 8], S41, $6fa87e4f); + II (d, a, b, c, x[15], S42, $fe2ce6e0); + II (c, d, a, b, x[ 6], S43, $a3014314); + II (b, c, d, a, x[13], S44, $4e0811a1); + II (a, b, c, d, x[ 4], S41, $f7537e82); + II (d, a, b, c, x[11], S42, $bd3af235); + II (c, d, a, b, x[ 2], S43, $2ad7d2bb); + II (b, c, d, a, x[ 9], S44, $eb86d391); + + Inc(State[0], a); + Inc(State[1], b); + Inc(State[2], c); + Inc(State[3], d); + + MD5_memset (PByteArray(@x), 0, SizeOf (x)); +end; + + +procedure MD5Init(var Context: TMD5Context); +begin + FillChar(Context, SizeOf(Context), 0); + Context.state[0] := $67452301; + Context.state[1] := $efcdab89; + Context.state[2] := $98badcfe; + Context.state[3] := $10325476; +end; + +procedure MD5Update(var Context: TMD5Context; Input: PByteArray; InputLen: LongWord); +var + i, index, partLen: LongWord; + +begin + index := LongWord( (context.count[0] shr 3) and $3F); + Inc(Context.count[0], UINT4(InputLen) shl 3); + if Context.count[0] < UINT4(InputLen) shl 3 then Inc(Context.count[1]); + Inc(Context.count[1], UINT4(InputLen) shr 29); + partLen := 64 - index; + if inputLen >= partLen then begin + MD5_memcpy(PByteArray(@Context.buffer[index]), Input, PartLen); + MD5Transform(@Context.state, @Context.buffer); + i := partLen; + while i + 63 < inputLen do begin + MD5Transform(@Context.state, PArray64Byte(@Input[i])); + Inc(i, 64); + end; + index := 0; + end else i:=0; + MD5_memcpy(PByteArray(@Context.buffer[index]), PByteArray(@Input[i]), inputLen - i); +end; + + +procedure MD5Final(var Digest: TMD5Digest; var Context: TMD5Context); +var + bits: array [0..7] of Byte; + index, padLen: LongWord; +begin + MD5Encode(PByteArray(@bits), PUINT4Array(@Context.count), 8); + index := LongWord( (Context.count[0] shr 3) and $3F); + if index < 56 then padLen := 56 - index else padLen := 120 - index; + MD5Update(Context, PByteArray(@PADDING), padLen); + MD5Update(Context, PByteArray(@Bits), 8); + MD5Encode(PByteArray(@Digest), PUINT4Array(@Context.state), 16); + MD5_memset(PByteArray(@Context), 0, SizeOf(Context)); +end; + +function MD5DigestToStr(const Digest: TMD5Digest): string; +var + i: Integer; +begin + Result:=''; + for i:=0 to 15 do Result:=Result+IntToHex(Digest.v[i], 2); +end; + +function MD5String(const S: string): TMD5Digest; +begin + Result:=MD5Buffer(PChar(S)^, Length(S)); +end; + +function MD5File(const FileName: string): TMD5Digest; +var + F: TFileStream; +begin + F:=TFileStream.Create(FileName, fmOpenRead); + try + Result:=MD5Stream(F); + finally + F.Free; + end; +end; + +function MD5Stream(const Stream: TStream): TMD5Digest; +var + Context: TMD5Context; + Buffer: array[0..4095] of Byte; + Size: Integer; + ReadBytes : Integer; + TotalBytes : Integer; + SavePos: Integer; +begin + MD5Init(Context); + Size:=Stream.Size; + SavePos:=Stream.Position; + TotalBytes:=0; + try + Stream.Seek(0, soFromBeginning); + repeat + ReadBytes:=Stream.Read(Buffer, SizeOf(Buffer)); + Inc(TotalBytes, ReadBytes); + MD5Update(Context, @Buffer, ReadBytes); + until (ReadBytes = 0) or (TotalBytes = Size); + finally + Stream.Seek(SavePos, soFromBeginning); + end; + MD5Final(Result, Context); +end; + +function MD5Buffer(const Buffer; Size: Integer): TMD5Digest; +var + Context: TMD5Context; +begin + MD5Init(Context); + MD5Update(Context, PByteArray(@Buffer), Size); + MD5Final(Result, Context); +end; + +function MD5DigestCompare(const Digest1, Digest2: TMD5Digest): Boolean; +begin + Result:=False; + if Digest1.A <> Digest2.A then Exit; + if Digest1.B <> Digest2.B then Exit; + if Digest1.C <> Digest2.C then Exit; + if Digest1.D <> Digest2.D then Exit; + Result:=True; +end; + + +end. diff --git a/Source/Base/Utiles/uDBSelectionListUtils.pas b/Source/Base/Utiles/uDBSelectionListUtils.pas new file mode 100644 index 00000000..af2a9cf5 --- /dev/null +++ b/Source/Base/Utiles/uDBSelectionListUtils.pas @@ -0,0 +1,194 @@ +unit uDBSelectionListUtils; + +interface + +uses + Classes, DB, cxGridTableView, uDADataTable, uIntegerListUtils, cxGridCustomView; + +type + TSelectedRecords = class; + + ISeleccionable = interface + ['{49B6B6E9-8C91-430B-87BC-7ED070308F2B}'] + function GetSelectedRecords: TSelectedRecords; + property SelectedRecords : TSelectedRecords read GetSelectedRecords; + + function GetSelected: Boolean; + procedure SetSelected(const Value: Boolean); + property Selected : Boolean read GetSelected write SetSelected; + end; + + ISelectedRecords = interface + ['{C2037B64-AAA7-4DD7-B9EA-C4973BDAD380}'] + function GetCount: Integer; + property Count: Integer read GetCount; + + function GetItem(Index: Integer): Integer; + property Items[Index: Integer]: Integer read GetItem; default; + end; + + TSeleccionable = class(TInterfacedObject, ISeleccionable) + protected + FSelectedRecords : TSelectedRecords; + function GetSelectedRecords: TSelectedRecords; + function GetSelected: Boolean; + procedure SetSelected(const Value: Boolean); + public + constructor Create(aDataTable: TDADataTable); + destructor Destroy; override; + property Selected : Boolean read GetSelected write SetSelected; + property SelectedRecords : TSelectedRecords read GetSelectedRecords; + end; + + TSelectedRecords = class(TInterfacedObject, ISelectedRecords) + private + FDataTable: TDADataTable; + FListInteger : TIntegerList; + function GetCount: Integer; + function GetCurrentRowSelected: Boolean; + function GetItem(Index: Integer): integer; + procedure SetCurrentRowSelected(Value: Boolean); + protected + function CurrentRow: integer; + function Compare(const Item1, Item2: integer): Boolean; + public + constructor Create(ADataTable : TDADataTable); + destructor Destroy; override; + procedure Clear; // free all bookmarks + function Find(const Item: integer; var Index: Integer): Boolean; + function IndexOf(const Item: integer): Integer; + property Count: Integer read GetCount; + property CurrentRowSelected: Boolean read GetCurrentRowSelected + write SetCurrentRowSelected; + property Items[Index: Integer]: integer read GetItem; default; + function LocateItem(const Index : Integer) : Boolean; + end; + + +implementation + +uses + SysUtils, DBConsts, cxGridCustomTableView, cxControls, Math, Variants, Dialogs; + +{ TSelectedRowList } + +constructor TSelectedRecords.Create(ADataTable : TDADataTable); +begin + inherited Create; + FListInteger := TIntegerList.Create; + + FDataTable := ADataTable; +end; + +destructor TSelectedRecords.Destroy; +begin + Clear; + FreeAndNil(FListInteger);//.Free; + FDataTable := NIL; + inherited Destroy; +end; + +procedure TSelectedRecords.Clear; +begin + if (not Assigned(FListInteger)) + or (FListInteger.Count = 0) then + Exit; + + FListInteger.Clear; +end; + +function TSelectedRecords.Compare(const Item1, Item2: integer): Boolean; +begin + Result := (Item1 = Item2); +end; + +function TSelectedRecords.CurrentRow: integer; +begin + if not FDataTable.Active then + raise EDatabaseError.Create(sDataSetClosed); + Result := FDataTable.FieldByName('ID').AsInteger; +end; + +function TSelectedRecords.GetCurrentRowSelected: Boolean; +var + Index: Integer; +begin + Result := Find(CurrentRow, Index); +end; + +function TSelectedRecords.Find(const Item: integer; var Index: Integer): Boolean; +begin + Result := FListInteger.Find(Item, Index) +end; + +function TSelectedRecords.GetCount: Integer; +begin + Result := FListInteger.Count; +end; + +function TSelectedRecords.GetItem(Index: Integer): integer; +begin + Result := FListInteger.Integers[Index]; +end; + +function TSelectedRecords.IndexOf(const Item: integer): Integer; +var + AIndex : Integer; +begin + Result := -1; + if FListInteger.Find(Item, AIndex) then + Result := AIndex +end; + +procedure TSelectedRecords.SetCurrentRowSelected(Value: Boolean); +var + Index: Integer; + Current: integer; +begin + Current := CurrentRow; + if (Find(Current, Index) = Value) then + Exit; + if Value then + FListInteger.Add(Current) + else + FListInteger.Delete(Index); +end; + +function TSelectedRecords.LocateItem(const Index: Integer) : Boolean; +begin + if not FDataTable.Active then + raise EDatabaseError.Create(sDataSetClosed); + Result := FDataTable.Locate('ID', Items[Index], []); +end; + + +{ TSeleccionable } + +constructor TSeleccionable.Create(aDataTable: TDADataTable); +begin + inherited Create; + FSelectedRecords := TSelectedRecords.Create(aDataTable); +end; + +destructor TSeleccionable.Destroy; +begin + FreeAndNIL(FSelectedRecords); + inherited; +end; + +function TSeleccionable.GetSelected: Boolean; +begin + Result := FSelectedRecords.CurrentRowSelected; +end; + +function TSeleccionable.GetSelectedRecords: TSelectedRecords; +begin + Result := FSelectedRecords; +end; + +procedure TSeleccionable.SetSelected(const Value: Boolean); +begin + FSelectedRecords.CurrentRowSelected := True; +end; + +end. diff --git a/Source/Base/Utiles/uDataTableUtils.pas b/Source/Base/Utiles/uDataTableUtils.pas new file mode 100644 index 00000000..717407f3 --- /dev/null +++ b/Source/Base/Utiles/uDataTableUtils.pas @@ -0,0 +1,505 @@ +unit uDataTableUtils; + +interface + +uses + uDACDSDataTable, uDADataTable, uDAInterfaces, uDADelta; + +const + ID_NULO = -9000; + ID_TODOS = -9001; + ID_PRIMERO = -9002; + +type + +TModoDuplicarRegistros = (mdrTodos, mdrActual, mdrSeleccionados); + +function SetFieldNull(ATarget: TDADataTable; const FieldName: String): Boolean; + +procedure ConectarTabla (ATarget: TDADataTable); +procedure DesconectarTabla (ATarget: TDADataTable); + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable; + RemoteUpdate: Boolean = True); + +procedure DuplicarRegistro(ASource : TDADataTable; ATarget : TDADataTable; + Const WithKey: Boolean = False); +procedure DuplicarRegistros(ASource : TDADataTable; ATarget : TDADataTable; + AModo : TModoDuplicarRegistros; APermitirRepetidos: Boolean = True; + Const WithDeltas: Boolean = True; Const WithKey: Boolean = False); + +procedure CopyDataTable(ASource : TDADataTable; ATarget : TDADataTable; + const OnlySelectedRows : Boolean = False); + +procedure DeleteAllTable(const ADataTable : TDADataTable); + +function DeltaValuesAreDifferent(const aDelta : IDADelta): boolean; + +procedure EnlazarMaestroDetalle(AMasterDataSource : TDADataSource; + ADetail : IDAStronglyTypedDataTable); + +function DataTableModified (const ADataTable : TDADataTable): Boolean; + +procedure SetDataTableReadOnly(ADataTable: TDADataTable; const value: Boolean); + + +implementation + +uses + Classes, DB, uDAClasses, SysUtils, uDABINAdapter, uROTypes, cxControls, + Dialogs, Variants, uDBSelectionListUtils, uROClasses, uDADataStreamer; + +function SetFieldNull(ATarget: TDADataTable; const FieldName: String): Boolean; +begin + Result := False; + if Assigned(ATarget) then + begin + try + ATarget.FieldByName(FieldName).AsVariant := Null; + Result := True; + except + on E: Exception do + Result := False; + end; + end; +end; + +{procedure EliminarNoSeleccionados(const ASource : IDADataset; + var ATarget : TDADataTable); +var + AObj : ISelectedRowList; + i : Integer; +begin + if not Supports(ASource, ISelectedRowList, aObj) then + Exit; + +// ATarget.DisableControls; +// ATarget.DisableEventHandlers; + ShowHourglassCursor; + try + ATarget.Open; + ATarget.Last; + while ATarget.RecordCount > AObj.SelectedRows.Count do + begin + if AObj.SelectedRows.IndexOf(ATarget.RecIDValue) < 0 then + ATarget.Delete + else + ATarget.Prior; + end; + finally +// ATarget.EnableControls; +// ATarget.EnableControls; + HideHourglassCursor; + end; +end;} + +function DataTableModified (const ADataTable : TDADataTable): Boolean; +var + bCambiado : Boolean; + dtDetails : TList; + i : integer; +begin + bCambiado := False; + if Assigned(ADataTable) and (ADataTable.Active) then + begin + bCambiado := (ADataTable.State = dsEdit) or + DeltaValuesAreDifferent(ADataTable.Delta); + + if (not bCambiado) then + begin + dtDetails := ADataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + begin + bCambiado := bCambiado or + ((TDADataTable(dtDetails.Items[i])).State in dsEditModes) or + DeltaValuesAreDifferent((TDADataTable(dtDetails.Items[i])).Delta); + if bCambiado then + Break; + end; + end; + end; + Result := bCambiado; +end; + + +procedure DeleteAllTable(const ADataTable : TDADataTable); +begin + ADataTable.ClearRows; +end; + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable; RemoteUpdate: Boolean); +var + i : Integer; +begin + with ATarget do + begin + // ****** Inicio migracin DA 5 + //RemoteService := ASource.GetRemoteService; + //Adapter := ASource.GetAdapter; + RemoteDataAdapter.Assign(ASource.RemoteDataAdapter); + // ****** Fin migracin DA 5 + + BusinessRulesID := ASource.BusinessRulesID; + Randomize; + Name := ASource.Name + '_' + IntToStr(Random(MAXINT)); + LogicalName := ASource.LogicalName; + + Params.AssignParamCollection(ASource.Params); + + if Assigned(ASource.LocalSchema) then + LocalSchema := ASource.LocalSchema + else begin + // ****** Inicio migracin DA 5 + { + with SchemaCall do + begin + MethodName := ASource.SchemaCall.MethodName; + for i := 0 to ASource.SchemaCall.Params.Count - 1 do + begin + with Params.Add do begin + Name := ASource.SchemaCall.Params[i].Name; + ParamType := ASource.SchemaCall.Params[i].ParamType; + DataType := ASource.SchemaCall.Params[i].DataType; + Value := ASource.SchemaCall.Params[i].Value; + UserClassName := ASource.SchemaCall.Params[i].UserClassName; + end; + end; + end; + } + // ****** Fin migracin DA 5 + ATarget.Fields.AssignFieldCollection(ASource.Fields); // o tambin ATarget.LoadSchema; + end; + + // ****** Inicio migracin DA 5 + { + with DataUpdateCall do + begin + MethodName := ASource.DataUpdateCall.MethodName; + for i := 0 to ASource.DataUpdateCall.Params.Count - 1 do + begin + with Params.Add do begin + Name := ASource.DataUpdateCall.Params[i].Name; + ParamType := ASource.DataUpdateCall.Params[i].ParamType; + DataType := ASource.DataUpdateCall.Params[i].DataType; + Value := ASource.DataUpdateCall.Params[i].Value; + UserClassName := ASource.DataUpdateCall.Params[i].UserClassName; + end; + end; + end; + + with ScriptCall do + begin + MethodName := ASource.ScriptCall.MethodName; + for i := 0 to ASource.ScriptCall.Params.Count - 1 do + begin + with Params.Add do begin + Name := ASource.ScriptCall.Params[i].Name; + ParamType := ASource.ScriptCall.Params[i].ParamType; + DataType := ASource.ScriptCall.Params[i].DataType; + Value := ASource.ScriptCall.Params[i].Value; + UserClassName := ASource.ScriptCall.Params[i].UserClassName; + end; + end; + end; + + with DataRequestCall do + begin + MethodName := ASource.DataRequestCall.MethodName; + for i := 0 to ASource.DataRequestCall.Params.Count - 1 do + begin + with Params.Add do begin + begin + Name := ASource.DataRequestCall.Params[i].Name; + ParamType := ASource.DataRequestCall.Params[i].ParamType; + DataType := ASource.DataRequestCall.Params[i].DataType; + Value := ASource.DataRequestCall.Params[i].Value; + UserClassName := ASource.DataRequestCall.Params[i].UserClassName; + end; + end; + end; + end; + } + // ****** Fin migracin DA 5 + + with MasterParamsMappings do + for i := 0 to ASource.MasterParamsMappings.Count - 1 do + Add(ASource.MasterParamsMappings.Strings[i]); + + with MasterRequestMappings do + for i := 0 to ASource.MasterRequestMappings.Count - 1 do + Add(ASource.MasterRequestMappings.Strings[i]); + + MasterMappingMode := ASource.MasterMappingMode; + + MasterFields := ASource.MasterFields; + MasterOptions := ASource.MasterOptions; + + DetailFields := ASource.DetailFields; + DetailOptions := ASource.DetailOptions; + + RemoteUpdatesOptions := ASource.RemoteUpdatesOptions; + StreamingOptions := ASource.StreamingOptions; + RemoteFetchEnabled := ASource.RemoteFetchEnabled; + end; + + if not RemoteUpdate then + begin + ATarget.LogChanges := False; + ATarget.RemoteFetchEnabled := False; + end; +end; + +function DeltaValuesAreDifferent(const aDelta : IDADelta): boolean; +var + i, x : integer; + OldNewAreDifferent: boolean; +begin + OldNewAreDifferent := FALSE; + for i := 0 to (aDelta.Count-1) do + begin + for x := 0 to (aDelta.LoggedFieldCount-1) do + begin + OldNewAreDifferent := (aDelta.Changes[i].OldValues[x] <> aDelta.Changes[i].NewValues[x]); + + if OldNewAreDifferent then + Break; // Abandon iteration at the first difference between old and new. + end; + + if OldNewAreDifferent then + Break; // Abandon iteration at the first difference between old and new. + end; + result := OldNewAreDifferent; +end; + + +procedure CopyDataTable(ASource : TDADataTable; ATarget : TDADataTable; + const OnlySelectedRows : Boolean = False); +var + DABin: Binary; + DAAdapter : TDABINAdapter; + AFilter : String; + AFiltered : Boolean; + AObj : ISeleccionable; + i : Integer; +begin + AFilter := ''; + AFiltered := False; + + if OnlySelectedRows then + begin + if not Supports(ASource, ISeleccionable, aObj) then + raise Exception.Create('El origen de datos no soporta la interfaz ISeleccionable (CopyDataTable)'); + + if ASource.Filtered then + begin + AFiltered := True; + AFilter := ASource.Filter; + ASource.Filtered := False; + end; + + ASource.Filter := ''; + if ASource.Active then + ASource.Close; + + for i := 0 to AObj.SelectedRecords.Count - 1 do + begin + if (i > 0) then + ASource.Filter := ASource.Filter + ' or '; + ASource.Filter := ASource.Filter + '(ID = ' + IntToStr(AObj.SelectedRecords.Items[i]) + ')'; + end; + + ASource.Filtered := True; + end; + + DABin := Binary.Create; + DAAdapter := TDABINAdapter.Create(nil); + try + ATarget.LogicalName := ASource.LogicalName; // We need to specify new dataset LogicalName + ATarget.RemoteFetchEnabled := False; // "Desconectamos" la tabla destino del servidor + + if not ASource.Active then + ASource.Open; + ASource.First; + + DAAdapter.Initialize(DABin, aiWrite); + DAAdapter.WriteDataset(DABin, ASource, [woRows]); + DAAdapter.Initialize(DABin, aiReadFromBeginning); + DAAdapter.ReadDataset(DABin, ATarget); + DAAdapter.Finalize; + + ATarget.RemoteFetchEnabled := True; // "Conectamos" la tabla del servidor otra vez + + // Dejar el filtro de la tabla origen como estaba + if OnlySelectedRows then + begin + ASource.Filtered := False; + ASource.Filter := AFilter; + if AFiltered then + ASource.Filtered := True; + end; + + finally + FreeAndNil(DABin); + FreeAndNil(DAAdapter); + end; +end; + +procedure DuplicarRegistro(ASource : TDADataTable; ATarget : TDADataTable; Const WithKey: Boolean = False); +var + i, j: Integer; + ATargetField: TDAField; + ASourceField: TDAField; + ADetailFields : TStringList; +begin + if not ASource.Active then + ASource.Open; + + if not ATarget.Active then + ATarget.Open; + + // ATarget es una tabla detalle? + if Assigned(ATarget.MasterSource) then + begin + case ATarget.MasterMappingMode of + //mmDataRequest: //Sin hacer; + mmParams: begin + //Creamos la lista de campos foreing key + ADetailFields := TStringList.Create; + ADetailFields.Sorted := True; + ADetailFields.Delimiter := ','; + ADetailFields.Duplicates := dupIgnore; + ADetailFields.Add(ATarget.DetailFields); + end; + end; + end + else + ADetailFields := Nil; + + ATarget.Insert; + { Hay que desactivar los eventos para que dejan de funcionar + las reglas de negocio y no nos interfieran en la copia + de valores de los campos. } + ATarget.DisableEventHandlers; + try + for i := 0 to ASource.Fields.Count - 1 do + begin + ASourceField := ASource.Fields[i]; + ATargetField := ATarget.FindField(ASourceField.Name); + + if Assigned(ATargetField) then + begin + // Los campos AutoInc no se rellenan y tampoco los campos que + // formen parte de la relacin maestro-detalle en el + // caso de que la tabla destino sea una tabla detalle. + if not WithKey then + begin + //Si no es campo clave + if not (ATargetField.InPrimaryKey) and + //Si no es autoinc (podria desaparecer pero no lo quitamos por si acaso + (ATargetField.DataType <> datAutoInc) and + //Si no hay campos foreing key o los hay pero el campo a copiar no es uno de ellos + (not Assigned(ADetailFields) or not ADetailFields.Find(ATargetField.Name, j)) then + //Copiamos el campo + ATargetField.Value := ASourceField.Value; + end + else + ATargetField.Value := ASourceField.Value; + end; + end; + finally + ATarget.EnableEventHandlers; + ATarget.Post; + end; +end; + + +procedure DuplicarRegistros(ASource : TDADataTable; ATarget : TDADataTable; + AModo : TModoDuplicarRegistros; APermitirRepetidos: Boolean = True; + Const WithDeltas: Boolean = True; Const WithKey: Boolean = False); +begin + if not ASource.Active then + ASource.Open; + + if not ATarget.Active then + ATarget.Open; + + try + //Para que no se generen deltas de insercin, y luego actue como un update + if not WithDeltas then + DesconectarTabla(ATarget); + + if AModo = mdrActual then + DuplicarRegistro(ASource, ATarget, WithKey) //ATarget.CloneSelectedRecord(ASource, True) + else begin + ASource.First; + while not ASource.EOF do + begin + if APermitirRepetidos then + DuplicarRegistro(ASource, ATarget, WithKey) + else + begin + ATarget.First; + if not ATarget.Locate('ID', ASource.FieldByName('ID').AsVariant, []) then + DuplicarRegistro(ASource, ATarget, WithKey); + end; + + ASource.Next; + end; + end; + finally + //Para que no se generen deltas de insercin, y luego actue como un update + if not WithDeltas then + ConectarTabla(ATarget); + end; +end; + + +procedure EnlazarMaestroDetalle(AMasterDataSource : TDADataSource; + ADetail : IDAStronglyTypedDataTable); +begin + if Assigned(ADetail) then + begin + // MUY IMPORTANTE !!!!!!!!!!!!!!!!!! + ADetail.DataTable.DisableEventHandlers; + try + ADetail.DataTable.MasterSource := AMasterDataSource; + finally + { Hay que activar los eventos porque dejan de funcionar + las reglas de negocio al establecer la relacin + maestro-detalle. (Fallo de Data Abstract 3) } + ADetail.DataTable.EnableEventHandlers; + end; + end; +end; + +procedure DesconectarTabla (ATarget: TDADataTable); +begin + ATarget.RemoteFetchEnabled := False; + ATarget.LogChanges := False; +end; + +procedure ConectarTabla (ATarget: TDADataTable); +begin + ATarget.RemoteFetchEnabled := True; + ATarget.LogChanges := True; +end; + +procedure SetDataTableReadOnly(ADataTable: TDADataTable; const value: Boolean); +var + dtDetails : TList; + i : integer; + +begin + if Assigned(ADataTable) + and (ADataTable.ReadOnly <> Value) then + begin + ADataTable.ReadOnly := Value; + dtDetails := ADataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + TDADataTable(dtDetails.Items[i]).ReadOnly := ADataTable.ReadOnly; + end; +end; + +end. diff --git a/Source/Base/Utiles/uDateUtils.pas b/Source/Base/Utiles/uDateUtils.pas new file mode 100644 index 00000000..ac53f0a0 --- /dev/null +++ b/Source/Base/Utiles/uDateUtils.pas @@ -0,0 +1,41 @@ +unit uDateUtils; + +interface + +uses + SysUtils, Classes; + +function DarFechaPrimerDia(Date: TDateTime): TDateTime; +function DarFechaUltimoDia(Date: TDateTime): TDateTime; +function EsFechaVacia(AFecha : TDateTime): Boolean; + +implementation + +const + FECHA_NULA = -700000; + +function EsFechaVacia(AFecha : TDateTime): Boolean; +begin + Result := (AFecha = FECHA_NULA) or (AFecha = 0); +end; + +function DarFechaPrimerDia(Date: TDateTime): TDateTime; +var + Year, Month, Day: Word; +begin + DecodeDate(Date, Year, Month, Day); + Result := EncodeDate(Year, Month, 1); +end; + +function DarFechaUltimoDia(Date: TDateTime): TDateTime; +var + Year, Month, Day: Word; +begin + DecodeDate(Date, Year, Month, Day); + // (if Month < 12 then inc(Month) + // else begin Month := 1; inc(Year) end; + // Result := EncodeDate(Year, Month, 1) - 1; + Result := EncodeDate(Year, Month, + MonthDays[IsLeapYear(Year), Month]); +end; +end. diff --git a/Source/Base/Utiles/uDialogUtils.pas b/Source/Base/Utiles/uDialogUtils.pas new file mode 100644 index 00000000..69b982b7 --- /dev/null +++ b/Source/Base/Utiles/uDialogUtils.pas @@ -0,0 +1,287 @@ +unit uDialogUtils; + +interface + +uses + Windows, Controls, SysUtils; + +type + TDlgButton = (TDlgButton_SI, TDlgButton_NO, TDlgButton_CANCELAR, + TDlgButton_ACEPTAR, TDlgButton_OK, TDlgButton_CERRAR); + TDlgButtonSet = set of TDlgButton; + + +//For example: +//1. to display the "OpenDialog" for text files +// +// s := 'aaa.txt'; +// if OpenFileDialog(Application.Handle, 'txt', 'Text Files|*.txt', 'c:\', 'Select text file', s) then +// ShowMessage(s + ' file was selected for open') +// +//2. to display the "Save dialog": +// +// s := 'data.dbf'; +// if SaveFileDialog(Application.Handle, 'dbf', 'dBase tables|*.dbf|All files|*.*', 'c:\', 'Select table', s) then +// ShowMessage(s + ' table was selected for save') + +function OpenFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string): Boolean; +function SaveFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string): Boolean; + + + + +procedure ShowInfoMessage(const AMessage : String); overload; +procedure ShowInfoMessage(const AHeader : String; const AMessage : String); overload; +procedure ShowWarningMessage(const AMessage : String); overload; +procedure ShowWarningMessage(const AHeader : String; const AMessage : String); overload; +procedure ShowErrorMessage(const AHeader : String; const AMessage : String); overload; +procedure ShowErrorMessage(const AHeader : String; const AMessage : String; AException: Exception); overload; + +function ShowConfirmMessage(const AHeader : String; + const AMessage : String) : TModalResult; overload; + +function ShowConfirmMessage(const ATitle : String; + const AHeader : String; + const AMessage : String; + const AButtonSet: TDlgButtonSet) : TModalResult; overload; + +implementation + +uses + Forms, + CommDlg, + JSDialog, + JSDialogs, + Classes, + StrUtils; + +const + sBtnSi = '&Si'; + sBtnNo = '&No'; + sBtnCancelar = '&Cancelar'; + sBtnAceptar = '&Aceptar'; + sBtnOK = '&OK'; + sBtnCerrar = '&Cerrar'; + + +function CharReplace(const Source: string; oldChar, newChar: Char): string; +var + i: Integer; +begin + Result := Source; + for i := 1 to Length(Result) do + if Result[i] = oldChar then + Result[i] := newChar +end; + +function OpenSaveFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string; + MustExist, OverwritePrompt, NoChangeDir, DoOpen: Boolean): Boolean; +var + ofn: TOpenFileName; + szFile: array[0..MAX_PATH] of Char; +begin + Result := False; + FillChar(ofn, SizeOf(TOpenFileName), 0); + FillChar(szFile, SizeOf(szFile), 0); + with ofn do + begin + lStructSize := SizeOf(TOpenFileName); + hwndOwner := ParentHandle; + lpstrFile := szFile; + nMaxFile := SizeOf(szFile); + if (Title <> '') then + lpstrTitle := PChar(Title); + if (InitialDir <> '') then + lpstrInitialDir := PChar(InitialDir); + StrPCopy(lpstrFile, FileName); + lpstrFilter := PChar(ReplaceStr(Filter, '|', #0)+#0#0); + if DefExt <> '' then + lpstrDefExt := PChar(DefExt); + end; + + if MustExist then + ofn.Flags := ofn.Flags or OFN_FILEMUSTEXIST; + + if OverwritePrompt then + ofn.Flags := ofn.Flags or OFN_OVERWRITEPROMPT; + + if NoChangeDir then + ofn.Flags := ofn.Flags or OFN_NOCHANGEDIR; + + if DoOpen then + begin + if GetOpenFileName(ofn) then + begin + Result := True; + FileName := StrPas(szFile); + end; + end + else + begin + if GetSaveFileName(ofn) then + begin + Result := True; + FileName := StrPas(szFile); + end; + end +end; + +function OpenFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string): Boolean; +begin + Result := OpenSaveFileDialog(ParentHandle, DefExt, Filter, InitialDir, Title, FileName, True, False, False, True); +end; + +function SaveFileDialog(ParentHandle: THandle; const DefExt, Filter, InitialDir, Title: string; var FileName: string): Boolean; +begin + Result := OpenSaveFileDialog(ParentHandle, DefExt, Filter, InitialDir, Title, FileName, False, True, True, False); +end; + + +function CreateTaskDialog(const ATitle: String; + const AInstruction: String; + const AMessage: String; + const AIcon: TTaskDialogIcon): TJSDialog; +var + ADialog : TJSDialog; +begin + ADialog := TJSDialog.Create(NIL); + with ADialog do + begin + Position := dpScreenCenter; + ButtonBar.Buttons := []; + DialogOptions := [doModal, doTopMost]; + + Title := ATitle; + Instruction.Text := AInstruction; + Content.Text := AMessage; + MainIcon := AIcon; + end; + Result := ADialog; +end; + +procedure CreateCustomButtons(const AButtonSet: TDlgButtonSet; + ACustomButtons : TJSCustomButtons); + + function CreateButton(const ACaption: String; const AModalResult: TModalResult): TJSCustomButtonItem; + begin + Result := ACustomButtons.Add; + Result.Caption := ACaption; + Result.ModalResult := AModalResult; + end; + +begin + with ACustomButtons do + begin + Clear; + + if TDlgButton_SI in AButtonSet then + CreateButton(sBtnSi, mrYes); + + if TDlgButton_NO in AButtonSet then + CreateButton(sBtnNo, mrNo); + + if TDlgButton_CANCELAR in AButtonSet then + CreateButton(sBtnCancelar, mrCancel); + + if TDlgButton_ACEPTAR in AButtonSet then + CreateButton(sBtnAceptar, mrOk); + + if TDlgButton_OK in AButtonSet then + CreateButton(sBtnOK, mrOk); + + if TDlgButton_CERRAR in AButtonSet then + CreateButton(sBtnCerrar, mrNone); + end; +end; + +procedure ShowInfoMessage(const AHeader : String; const AMessage : String); overload; +var + ADialog : TJSDialog; +begin + ADialog := CreateTaskDialog('Informacin', AHeader, AMessage, tdiInformation); + try + CreateCustomButtons([TDlgButton_CERRAR], ADialog.CustomButtons); + ADialog.Execute; + finally + FreeAndNIL(ADialog); + end; +end; + +procedure ShowInfoMessage(const AMessage : String); +begin + ShowInfoMessage('', AMessage); +end; + +procedure ShowWarningMessage(const AHeader : String; const AMessage : String); overload; +var + ADialog : TJSDialog; +begin + ADialog := CreateTaskDialog('Atencin!', AHeader, AMessage, tdiWarning); + try + CreateCustomButtons([TDlgButton_CERRAR], ADialog.CustomButtons); + ADialog.Execute; + finally + FreeAndNIL(ADialog); + end; +end; + +procedure ShowWarningMessage(const AMessage : String); +begin + ShowWarningMessage('', AMessage); +end; + +procedure ShowErrorMessage(const AHeader : String; const AMessage : String); +var + ADialog : TJSDialog; +begin + ADialog := CreateTaskDialog(Application.Title, AHeader, AMessage, tdiError); + try + CreateCustomButtons([TDlgButton_CERRAR], ADialog.CustomButtons); + ADialog.Execute; + finally + FreeAndNIL(ADialog); + end; +end; + +procedure ShowErrorMessage(const AHeader : String; const AMessage : String; AException: Exception); +var + ADialog : TJSDialog; +begin + ADialog := CreateTaskDialog(Application.Title, AHeader, AMessage, tdiError); + try + CreateCustomButtons([TDlgButton_CERRAR], ADialog.CustomButtons); + ADialog.Expando.Lines.Text := #13#13 + AException.Message; + ADialog.Expando.ShowText := 'Mostrar informacin sobre el error'; + ADialog.Expando.HideText := 'No mostrar informacin sobre el error'; + ADialog.Expando.Visible := True; + ADialog.Execute; + finally + FreeAndNIL(ADialog); + end; +end; + +function ShowConfirmMessage(const AHeader : String; + const AMessage : String) : TModalResult; +begin + Result := ShowConfirmMessage(Application.Title, AHeader, + AMessage, [TDlgButton_SI, TDlgButton_NO]); +end; + +function ShowConfirmMessage(const ATitle : String; + const AHeader : String; + const AMessage : String; + const AButtonSet: TDlgButtonSet) : TModalResult; +var + ADialog : TJSDialog; +begin + ADialog := CreateTaskDialog(Application.Title, AHeader, AMessage, tdiConfirmation); + try + CreateCustomButtons(AButtonSet, ADialog.CustomButtons); + Result := ADialog.Execute; + finally + FreeAndNIL(ADialog); + end; +end; + +end. + diff --git a/Source/Base/Utiles/uGridUtils.pas b/Source/Base/Utiles/uGridUtils.pas new file mode 100644 index 00000000..abcffa37 --- /dev/null +++ b/Source/Base/Utiles/uGridUtils.pas @@ -0,0 +1,297 @@ +unit uGridUtils; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, + uDBSelectionListUtils; + +type + TRecordInfo = class + KeyValues: Variant; + ALevel: Integer; + end; + + TRecordInfos = class(TList) + private + function GetItem(Index: Integer): TRecordInfo; + protected + procedure Notify(Ptr: Pointer; Action: TListNotification); override; + public + property Items[Index: Integer]: TRecordInfo read GetItem; Default; + end; + + TcxGridStatus = class + protected + GroupRecords: TRecordInfos; + SelectedRecords: TRecordInfos; + SelStartItem: Integer; + SelEndItem: Integer; + AFocusedRow: TRecordInfo; + TopRow: TRecordInfo; + + function SaveRecord(AView: TcxGridDBTableView; GridRecord: + TcxCustomGridRecord): TRecordInfo; + function FindRecordEx(AView: TcxGridDBTableView; RecordInfo: + TRecordInfo): TcxCustomGridRecord; + + procedure SaveGridViewSelection(AView: TcxGridDBTableView); + procedure LoadGridViewSelection(AView: TcxGridDBTableView); + procedure SaveGridViewTopFocusedRecords(AView: TcxGridDBTableView); + procedure LoadGridViewTopFocusedRecords(AView: TcxGridDBTableView); + procedure SaveGridViewExpanded(AView: TcxGridDBTableView); + procedure LoadGridViewExpanded(AView: TcxGridDBTableView); + public + constructor Create(AGridView: TcxGridDBTableView); + destructor Destroy; override; + procedure Restore(AGridView: TcxGridDBTableView); + end; + +procedure SeleccionarFilasDesdeGrid(const AView : TcxGridDBTableView; + ASelectedRowList : TSelectedRecords); + +implementation + + +uses + uDADataTable, uDAInterfaces, cxVariants; + + +procedure TRecordInfos.Notify(Ptr: Pointer; Action: TListNotification); +begin + if Action in [lnExtracted, lnDeleted] then + FreeAndNil(TRecordInfo(Ptr)); +end; + +function TRecordInfos.GetItem(Index: Integer): TRecordInfo; +begin + Result := TRecordInfo(inherited Items[Index]); +end; + +function TcxGridStatus.SaveRecord(AView: TcxGridDBTableView; + GridRecord: TcxCustomGridRecord): TRecordInfo; +begin + Result := TRecordInfo.Create; + Result.KeyValues := + AView.DataController.GetRecordId(GridRecord.RecordIndex); + Result.ALevel := GridRecord.Level; +end; + +function TcxGridStatus.FindRecordEx(AView: TcxGridDBTableView; RecordInfo: + TRecordInfo): TcxCustomGridRecord; +var + I, ARecordIndex: Integer; + AList: TList; + AKeyValue: Variant; +begin + I := 0; + ARecordIndex := AView.DataController.FindRecordIndexByKey(RecordInfo.KeyValues); + Result := nil; + AList := TList.Create; + try + while I < AView.ViewData.RowCount do + begin + if AView.ViewData.Rows[I] is TcxGridGroupRow then + begin + AList.Clear; + AView.DataController.Groups.LoadRecordIndexesByRowIndex(AList, I); + if AList.IndexOf(Pointer(ARecordIndex)) <> -1 then + begin + if AView.ViewData.Rows[I].Level < RecordInfo.ALevel then + AView.ViewData.Rows[I].Expand(False) + else + begin + Result := AView.ViewData.Rows[I]; + Break; + end; + end; + end + else + begin + AKeyValue := AView.DataController.GetRecordId(AView.ViewData.Rows[I].RecordIndex); + if VarEquals(AKeyValue, RecordInfo.KeyValues) then + begin + Result := AView.ViewData.Rows[I]; + Break; + end; + end; + Inc(I); + end; + finally + FreeAndNil(AList); + end; +end; + +procedure TcxGridStatus.SaveGridViewSelection( + AView: TcxGridDBTableView); +var + i: Integer; + SelectRecordInfo: TRecordInfo; +begin + with AView.DataController, AView.Controller do + begin + for i := 0 To SelectedRecordCount - 1 do + begin + SelectRecordInfo := SaveRecord(AView, SelectedRecords[i]); + Self.SelectedRecords.Add(SelectRecordInfo); + end; + if SelectedColumnCount = 0 then + begin + SelStartItem := -1; + SelEndItem := -1; + end + else + begin + SelStartItem := SelectedColumns[0].Index; + SelEndItem := SelectedColumns[SelectedColumnCount - 1].Index; + end; + end; +end; + +procedure TcxGridStatus.LoadGridViewSelection( + AView: TcxGridDBTableView); +var + i: Integer; + ARecord: TcxCustomGridRecord; +begin + AView.Controller.ClearSelection; + + for i := 0 To SelectedRecords.Count - 1 do + begin + ARecord := FindRecordEx(AView, SelectedRecords[i]); + if Assigned(ARecord) then + ARecord.Selected := True; + end; + + if SelStartItem <> -1 then + AView.Controller.SelectColumns(AView.Columns[SelStartItem], + AView.Columns[SelEndItem]); +end; + +procedure TcxGridStatus.SaveGridViewTopFocusedRecords(AView: TcxGridDBTableView); +begin + if AView.Controller.FocusedRow = nil then + AFocusedRow := nil + else + AFocusedRow := SaveRecord(AView, AView.Controller.FocusedRow); + TopRow := nil; + if (AView.Controller.TopRowIndex <> -1) and + (AView.Controller.TopRowIndex < AView.ViewData.RecordCount) then + TopRow := SaveRecord(AView, AView.ViewData.Records[AView.Controller.TopRowIndex]); +end; + +procedure TcxGridStatus.LoadGridViewTopFocusedRecords(AView: TcxGridDBTableView); +var + ARecord: TcxCustomGridRecord; +begin + ARecord := FindRecordEx(AView, AFocusedRow); + if Assigned(ARecord) then + ARecord.Focused := True; + ARecord := FindRecordEx(AView, TopRow); + if Assigned(ARecord) then + AView.Controller.TopRowIndex := ARecord.Index; +end; + +type + TcxDataControllerGroupsAccess = class(TcxDataControllerGroups); + TcxDataGroupsAccess = class(TcxDataGroups); + +procedure TcxGridStatus.SaveGridViewExpanded( + AView: TcxGridDBTableView); +var + i: Integer; + GroupRecordInfo: TRecordInfo; +begin + for i := 0 To AView.DataController.RowCount - 1 do + with AView.ViewData.Records[i] do + if Expanded then + begin + GroupRecordInfo := SaveRecord(AView, AView.ViewData.Records[i]); + GroupRecords.Add(GroupRecordInfo); + end; +end; + +procedure TcxGridStatus.LoadGridViewExpanded( + AView: TcxGridDBTableView); +var + i: Integer; + ARecord: TcxCustomGridRecord; +begin + for i := 0 to GroupRecords.Count - 1 do + begin + ARecord := FindRecordEx(AView, GroupRecords[i]); + if Assigned(ARecord) then + ARecord.Expand(False); + end; +end; + +constructor TcxGridStatus.Create(AGridView: TcxGridDBTableView); +begin + inherited Create; + GroupRecords := TRecordInfos.Create; + SelectedRecords := TRecordInfos.Create; + SaveGridViewSelection(AGridView); + SaveGridViewExpanded(AGridView); + SaveGridViewTopFocusedRecords(AGridView); +end; + +destructor TcxGridStatus.Destroy; +begin + FreeAndNil(GroupRecords); + FreeAndNil(SelectedRecords); + inherited; +end; + +procedure TcxGridStatus.Restore(AGridView: TcxGridDBTableView); +begin + SendMessage(AGridView.Site.Handle, WM_SETREDRAW, 0, 0); + try + AGridView.ViewData.Collapse(True); + LoadGridViewExpanded(AGridView); + LoadGridViewSelection(AGridView); + LoadGridViewTopFocusedRecords(AGridView); + finally + SendMessage(AGridView.Site.Handle, WM_SETREDRAW, 1, 0); + RedrawWindow(AGridView.Site.Handle, Nil, 0, RDW_FRAME Or RDW_NOFRAME Or + RDW_ALLCHILDREN Or RDW_INVALIDATE); + end; +end; + + +procedure SeleccionarFilasDesdeGrid(const AView : TcxGridDBTableView; + ASelectedRowList : TSelectedRecords); +var + ARecord: TcxCustomGridRecord; + i : Integer; + AGridStatus : TcxGridStatus; +begin + if not Assigned(AView) then + raise Exception.Create('No hay vista asignada (SeleccionarFilasDesdeGrid)'); + + ShowHourglassCursor; + AGridStatus := TcxGridStatus.Create(AView); + AView.BeginUpdate; + try + ASelectedRowList.Clear; + for i := 0 to TcxCustomGridTableController(AView.Controller).SelectedRecordCount - 1 do + begin + ARecord := TcxCustomGridTableController(AView.Controller).SelectedRecords[i]; + if (ARecord is TcxGridDataRow) then + begin + (ARecord as TcxGridDataRow).Focused := True; + ASelectedRowList.CurrentRowSelected := True; + end; + end; + finally + AView.EndUpdate; + AGridStatus.Restore(AView); + HideHourglassCursor; + end; +end; + + +end. diff --git a/Source/Base/Utiles/uInfoProjectUtils.pas b/Source/Base/Utiles/uInfoProjectUtils.pas new file mode 100644 index 00000000..7a728c51 --- /dev/null +++ b/Source/Base/Utiles/uInfoProjectUtils.pas @@ -0,0 +1,187 @@ +{ +=============================================================================== + Copyright () 2005. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 17-05-2005 + Versin actual: 1.0.0 + Fecha versin actual: 17-05-2005 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} +unit uInfoProjectUtils; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; + +type + TInfoProject = class(TComponent) + private + { Private declarations } + FFVIBuff: Pointer; + FFVISize: DWord; + FHandle: DWord; + FFileName: String; + FLanguage: Word; + FCodePage: Word; + FLanguageCodePage: String; + FCompanyName: String; + FFileDescription: String; + FFileVersion: String; + FInternalName: String; + FLegalCopyright: String; + FLegalTradeMarks: String; + FOriginalFileName: String; + FProductName: String; + FProductVersion: String; + FComments: String; + procedure ReadFixedFileInfo; + function GetLangCPage: String; + function GetStringFileInfo(S: String): String; + procedure SetFileName(const Value: String); + protected + { Protected declarations } + public + { Public declarations } + constructor Create(AOwner: TComponent); override; + function LanguageStr(Language: Word): String; + property FileName: String read FFileName write SetFileName; + property Language: Word read FLanguage; + property CodePage: Word read FCodePage; + property LanguageCodePage: String read FLanguageCodePage; + property CompanyName: String read FCompanyName; + property FileDescription: String read FFileDescription; + property FileVersion: String read FFileVersion; + property InternalName: String read FInternalName; + property LegalCopyright: String read FLegalCopyright; + property LegalTradeMarks: String read FLegalTradeMarks; + property OriginalFileName: String read FOriginalFileName; + property ProductName: String read FProductName; + property ProductVersion: String read FProductVersion; + property Comments: String read FComments; + published + { Published declarations } + end; + +implementation + +{ TInfoProject } + +constructor TInfoProject.Create(AOwner: TComponent); +begin { of TInfoProject.Create } + inherited Create(AOwner); + + { build current EXE filename } + FileName := ParamStr(0); +end; { of TInfoProject.Create } + +procedure TInfoProject.ReadFixedFileInfo; +begin { of TInfoProject.ReadFixedFileInfo } + { determine size of buffer required } + FFVISize := GetFileVersionInfoSize(PChar(FileName), FHandle); + + { create buffer } + GetMem(FFVIBuff, FFVISize); + try + + { load buffer } + GetFileVersionInfo(PChar(FileName), FHandle, FFVISize, FFVIBuff); + + { extract the language/codepage info } + FLanguageCodePage := GetLangCPage; + + { extract the other info } + FCompanyName := GetStringFileInfo('CompanyName'); + FFileDescription := GetStringFileInfo('FileDescription'); + FFileVersion := GetStringFileInfo('FileVersion'); + FInternalName := GetStringFileInfo('InternalName'); + FLegalCopyright := GetStringFileInfo('LegalCopyright'); + FLegalTradeMarks := GetStringFileInfo('LegalTradeMarks'); + FOriginalFileName := GetStringFileInfo('OriginalFileName'); + FProductName := GetStringFileInfo('ProductName'); + FProductVersion := GetStringFileInfo('ProductVersion'); + FComments := GetStringFileInfo('Comments'); + + finally + { dispose buffer } + FreeMem(FFVIBuff, FFVISize); + end; +end; { of TInfoProject.ReadFixedFileInfo } + +function TInfoProject.LanguageStr(Language: Word): String; +var + P: array[0..255] of Char; + Len: Word; +begin { of TInfoProject.LanguageStr } + Len := VerLanguageName(Language, P, SizeOf(P)); + if (Len > SizeOf(P)) then + begin + { if this occurs then the P buffer is too small } + { so we will truncate the returned string } + Len := SizeOf(P); + end; + SetString(Result, P, Len); +end; { of TInfoProject.LanguageStr } + +function TInfoProject.GetLangCPage: String; +var + SearchString: String; + FVILang: array of Byte; + Len: DWORD; +begin { of TInfoProject.GetLangCPage } + Result := '00000000'; + if (FFVIBuff <> NIL) then + begin + SearchString := '\VarFileInfo\Translation'; + if VerQueryValue(FFVIBuff, PChar(SearchString), + Pointer(FVILang), Len) then + begin + FLanguage := FVILang[0] + FVILang[1]*$100; + FCodePage := FVILang[2] + FVILang[3]*$100; + Result := IntToHex(FLanguage, 4) + IntToHex(FCodePage, 4); + end; + end; +end; { of TInfoProject.GetLangCPage } + +function TInfoProject.GetStringFileInfo(S: String): String; +var + SearchString: String; + P: PChar; + Len: DWORD; +begin { of TInfoProject.GetStringFileInfo } + Result := ''; + if (FFVIBuff <> NIL) then + begin + SearchString := '\StringFileInfo\'+FLanguageCodePage+'\'+S; + if VerQueryValue(FFVIBuff, PChar(SearchString), Pointer(P), Len) then + begin + { coded with StrLen to ditch the trailing #0 character } + SetString(Result, P, StrLen(P)); + end; + end; +end; { of TInfoProject.GetStringFileInfo } + +procedure TInfoProject.SetFileName(const Value: String); +begin { of TInfoProject.SetFileName } + FFileName := ExpandUNCFileName(Value); + + { read fileinfo from this new file } + ReadFixedFileInfo; + +end; { of TInfoProject.SetFileName } + +end. + diff --git a/Source/Base/Utiles/uIntegerListUtils.pas b/Source/Base/Utiles/uIntegerListUtils.pas new file mode 100644 index 00000000..62994ac7 --- /dev/null +++ b/Source/Base/Utiles/uIntegerListUtils.pas @@ -0,0 +1,61 @@ +unit uIntegerListUtils; + +interface + +uses + Classes; + +type + TIntegerList = class(TList) + private + function GetInteger(Index: integer): integer; + procedure SetInteger(Index: integer; Value: integer); + public + procedure Add(Value: integer); reintroduce; + function Find(Value: integer; var Index: Integer): Boolean; + property Integers[index: integer]: integer read GetInteger write SetInteger; default; + end; + +implementation + +function TIntegerList.GetInteger(Index: integer): integer; +begin + result := Integer(Items[index]); +end; + +procedure TIntegerList.SetInteger(Index: integer; Value: integer); +begin + Items[index] := Pointer(Value); +end; + +procedure TIntegerList.Add(Value: integer); +var + Index: integer; +begin + if not Find(Value, Index) then + Insert(Index, Pointer(Value)); +end; + +function TIntegerList.Find(Value: integer; var Index: Integer): Boolean; +var + L, H, I, C: Integer; +begin + Result := False; + L := 0; + H := Count - 1; + while L <= H do + begin + I := (L + H) shr 1; + C := Integers[I] - Value; + if C < 0 then + L := I + 1 + else begin + H := I - 1; + if C = 0 then + Result := True; + end; + end; + Index := L; +end; + +end. diff --git a/Source/Base/Utiles/uNumUtils.pas b/Source/Base/Utiles/uNumUtils.pas new file mode 100644 index 00000000..8a0ec3e0 --- /dev/null +++ b/Source/Base/Utiles/uNumUtils.pas @@ -0,0 +1,124 @@ +{ +=============================================================================== + Copyright () 2002. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 01-11-2002 + Versin actual: 1.0.0 + Fecha versin actual: 01-11-2002 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uNumUtils; + +interface + +Function IntToLetras(Numero:LongInt):String; +Function xxIntToLetras(Valor:LongInt):String; +Function CifraToLetras(Cifra: Double): String; + +implementation + +uses SysUtils, Dialogs; +// SysUtils, Windows, Dialogs, Messages, Classes, Graphics, Controls, Forms, StdCtrls; + +Function xxIntToLetras(Valor:LongInt):String; +const + aUnitat : array[1..15] of String = ('UNO','DOS','TRES','CUATRO','CINCO','SEIS', + 'SIETE','OCHO','NUEVE','DIEZ','ONCE','DOCE', + 'TRECE','CATORCE','QUINCE'); + aCentena: array[1..9] of String = ('CIENTO','DOSCIENTOS','TRESCIENTOS', + 'CUATROCIENTOS','QUINIENTOS','SEISCIENTOS', + 'SETECIENTOS','OCHOCIENTOS','NOVECIENTOS'); + aDecena : array[1..9] of String = ('DIECI','VEINTI','TREINTA','CUARENTA','CINCUENTA', + 'SESENTA','SETENTA','OCHENTA','NOVENTA'); +var + Centena, Decena, Unitat, Doble: LongInt; + Linea: String; +begin + if valor=100 then Linea:=' CIEN ' {Maximo Valor sera 999, ejemplo con 123} + else begin + Linea:=''; + Centena := Valor div 100; {1 } + Doble := Valor - (Centena*100); {23} + Decena := (Valor div 10) - (Centena*10); {2 } + Unitat := Valor - (Decena*10) - (Centena*100); {3 } + + if Centena>0 then Linea:=Linea+Acentena[centena]+' '; + + if Doble>0 then begin + if Doble=20 then Linea:=Linea+' VEINTE ' + else begin + if doble<16 then Linea:=Linea+Aunitat[Doble] + else begin + Linea:=Linea+' '+Adecena[Decena]; + if (Decena>2) and (Unitat<>0) then Linea:=Linea+' Y '; + if Unitat>0 then Linea:=Linea+Aunitat[Unitat]; + end; + end; + end; + + end; + Result:=Linea; +end; + +Function IntToLetras(Numero:LongInt):String; +var + Millions,mils,unitats: Longint; + Linea : String; +begin + {Inicializamos el string que contendra las letras segun el valor numerico} + if numero=0 then Linea:='Cero' + else if numero<0 then Linea:='MENOS ' + else if numero>0 then Linea:=''; + + {Determinamos el N de millones, miles, i unidades de numero en positivo} + Numero := Abs(Numero); + millions := numero div 1000000; + mils := (numero - (millions*1000000)) div 1000; + unitats := numero - ((millions*1000000)+(mils*1000)); + + {Vamos poniendot en el string las cadenas de los numeros(llamando a subfuncion)} + if millions=1 then Linea:= Linea + ' UN MILLON ' + else if millions>1 then Linea := Linea + xxIntToLetras(millions) + ' MILLONES '; + + if mils =1 then Linea:= Linea + ' MIL ' + else if mils>1 then Linea := Linea + xxIntToLetras(mils) + ' MIL '; + + if unitats >0 then Linea:=Linea+xxIntToLetras(unitats); + + IntToLetras:=Linea; +end; + +Function CifraToLetras(Cifra: Double): String; +var + Entero: LongInt; + Decimal: LongInt; + Cadena: String; +begin + Cadena := ''; + Entero := Trunc(Cifra); + Decimal := Trunc(((Cifra - Entero) * 100)); + + if (Decimal > 0) then + Cadena := ' CON ' + IntToLetras(Decimal) + ' CNTIMOS'; + + if (Entero > 0) then + Cadena := IntToLetras(Entero) + ' EUROS ' + Cadena; + + Result := UpperCase(Cadena); +end; + +end. diff --git a/Source/Base/Utiles/uPasswordUtils.pas b/Source/Base/Utiles/uPasswordUtils.pas new file mode 100644 index 00000000..9333b53a --- /dev/null +++ b/Source/Base/Utiles/uPasswordUtils.pas @@ -0,0 +1,51 @@ +unit uPasswordUtils; + +interface + +function EncriptarPassword(const password : string): String; +function EncriptarPasswordOSC(const password : string): String; +implementation + +uses + MD5, SysUtils; + +function EncriptarPassword(const password : string): String; +var + t : TMD5Digest; + pass_encriptada : String; +begin + t := MD5String(password); + pass_encriptada := MD5DigestToStr(t); + Result := LowerCase(pass_encriptada); +end; + +function EncriptarPasswordOSC(const password : string): String; +var + t : TMD5Digest; + salt : String; + pass_encriptada : String; + i : integer; +begin +// for ($i=0; $i<10; $i++) { +// $password .= tep_rand(); +// } +// +// $salt = substr(md5($password), 0, 2); +// +// $password = md5($salt . $plain) . ':' . $salt; + + pass_encriptada := ''; + Randomize; + for I := 0 to 9 do + pass_encriptada := pass_encriptada + FloatToStr(Random(10000000000)); + + t := MD5String(password); + salt := Copy(MD5DigestToStr(t), 0, 2); + + t := MD5String(salt + password); + pass_encriptada := MD5DigestToStr(t); + Result := LowerCase(pass_encriptada) + ':' + salt; +end; + + +end. diff --git a/Source/Base/Utiles/uSistemaFunc.pas b/Source/Base/Utiles/uSistemaFunc.pas new file mode 100644 index 00000000..1839cb51 --- /dev/null +++ b/Source/Base/Utiles/uSistemaFunc.pas @@ -0,0 +1,255 @@ +{ +=============================================================================== + Copyright () 2002. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 01-11-2002 + Versin actual: 1.0.0 + Fecha versin actual: 01-11-2002 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uSistemaFunc; + +interface + +{ Funciones del sistema } +function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean) : Boolean; +function DarRutaTemporal : String; +function DarFicheroTemporal : String; +function DarFicheroJPGTemporal : String; +function DarFicheroBMPTemporal : String; +function DarFicheroTIFFTemporal : String; +function DarFicheroExportar (var Fichero : String) : Boolean; +function DarVersionFichero (Executable : String) : String; +function DarFechaFichero (Executable : String) : String; +procedure CopiarFichero(const Origen, Destino: string); +procedure DoDelTree( TheDir : String); +procedure Deltree(DirToKill : String; KillChoosenDir : Boolean); + + +implementation + +uses + SysUtils, Windows, Dialogs, + + Messages, Classes, Graphics, Controls, Forms, + StdCtrls; + +function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean): Boolean; +var + StartupInfo : TStartupInfo; + ProcessInfo : TProcessInformation; +begin + {setup the startup information for the application } + FillChar(StartupInfo, SizeOf(TStartupInfo), 0); + with StartupInfo do + begin + cb := SizeOf(TStartupInfo); + dwFlags:= STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK; + if Oculto then + wShowWindow:= SW_HIDE + else + wShowWindow:= SW_SHOWNORMAL; + end; + + Result := CreateProcess(nil,PChar(LineaComando), nil, nil, False, + NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo); + if Esperar then + if Result then + begin + WaitForInputIdle(ProcessInfo.hProcess, INFINITE); + WaitForSingleObject(ProcessInfo.hProcess, INFINITE); + end; +end; + +function DarRutaTemporal: String; +var + nBufferLength : DWORD; // size, in characters, of the buffer + lpBuffer : PChar; // address of buffer for temp. path +begin + nBufferLength := MAX_PATH + 1; // initialize + GetMem( lpBuffer, nBufferLength ); + try + if GetTempPath( nBufferLength, lpBuffer ) <> 0 then + Result := StrPas( lpBuffer ) + else + Result := ''; + finally + FreeMem( lpBuffer ); + end; +end; + +function DarFicheroTemporal : String; +var + Buf: array [0..MAX_PATH] of Char; + RutaTmp : string; +begin + RutaTmp := DarRutaTemporal; + if GetTempFileName(PChar(RutaTmp), 'tmp', 0, Buf) <> 0 then + SetString(Result, Buf, StrLen(Buf)) + else + Result := ''; +end; + +function DarFicheroTIFFTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'tif'; +end; + +function DarFicheroBMPTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'bmp'; +end; + +function DarFicheroJPGTemporal : String; +var + Cadena : String; +begin + Cadena := DarFicheroTemporal; + Result := Copy(Cadena, 0, (Length(Cadena)-3)) + 'jpg'; +end; + +function DarFicheroExportar (var Fichero : String) : Boolean; +var + DialogoSalvar : TSaveDialog; +begin + DialogoSalvar := TSaveDialog.Create(NIL); + try + with DialogoSalvar do + begin + DefaultExt := 'doc'; + Filter := 'Documento de Word (*.doc)|*.doc'; + FilterIndex := 0; + Options := [ofOverwritePrompt, ofHideReadOnly, ofPathMustExist, ofEnableSizing]; + end; + Result := DialogoSalvar.Execute; + if Result then + Fichero := DialogoSalvar.FileName; + finally + DialogoSalvar.Free; + end; +end; + +function DarVersionFichero (Executable : String) : String; +var + Size, Size2: DWord; + Pt, Pt2: Pointer; +begin + Size := GetFileVersionInfoSize(PChar (Executable), Size2); + if Size > 0 then + begin + GetMem (Pt, Size); + try + GetFileVersionInfo (PChar (Executable), 0, Size, Pt); + VerQueryValue (Pt, '\', Pt2, Size2); + with TVSFixedFileInfo (Pt2^) do + begin + Result:= IntToStr (HiWord (dwFileVersionMS)) + '.' + + IntToStr (LoWord (dwFileVersionMS)) + '.' + + IntToStr (HiWord (dwFileVersionLS)) + '.' + + IntToStr (LoWord (dwFileVersionLS)); + end; + finally + FreeMem (Pt); + end; + end; +end; + +function DarFechaFichero (Executable : String) : String; +var + FileTime, LocalFileTime : TFileTime; + SystemTime : TSystemTime; + hFile : Integer; +begin + hFile := FileOpen(Executable, fmShareDenyNone); + try + if hFile <> -1 then + begin + Windows.GetFileTime( hFile, nil, nil, @FileTime ); // ftLasWriteTime + // Change the file time to local time + FileTimeToLocalFileTime( FileTime, LocalFileTime ); + if FileTimeToSystemTime(LocalFileTime, SystemTime) then + Result := DateTimeToStr(SystemTimeToDateTime(SystemTime)); + end; // if hFile <> 0 + finally + FileClose( hFile ); + end; // try +end; + + +procedure CopiarFichero(const Origen, Destino: string); +begin + CopyFile(PChar(Origen), PChar(Destino), FALSE); +end; + +procedure DoDelTree(TheDir : String); + Var + Search : TSearchRec; + rec : word; +Begin + If TheDir[Length(TheDir)] <> '\' Then TheDir := TheDir + '\'; + rec := SysUtils.FindFirst(TheDir + '*.*', faAnyFile, Search); + While rec = 0 Do + Begin + If Search.Name[1] <> '.' Then + Begin +// Is this a directory? + If (Search.Attr And faDirectory) = faDirectory Then + Begin +// If so, lets call DelTree again using this new +// directory as the TheDir parameter. + DoDelTree(TheDir + Search.Name); +// Not that all of the files are gone from this directoy, +// we can remove the directory. + RmDir(TheDir + Search.Name); + End + Else + Begin +// We found a file. +// Now lets reset its attributes so we don't have any problems +// deleting them. + SysUtils.FileSetAttr(TheDir + Search.Name, 0); + SysUtils.DeleteFile(TheDir + Search.Name); + Application.ProcessMessages; + End; + End; + rec := SysUtils.FindNext(Search); + End; + SysUtils.FindClose(Search); +End; + +procedure Deltree(DirToKill : String; KillChoosenDir : Boolean); +begin +{$I-} + DoDelTree(DirToKill); +// If we want to delete the choosen directory. + If KillChoosenDir Then + RmDir(DirToKill); + //modified + if IOResult <> 0 then + ShowMessage('Could not delete ' + DirToKill); +//{$I} +end; + + +end. + \ No newline at end of file diff --git a/Source/Base/dxComnD10.drc b/Source/Base/dxComnD10.drc new file mode 100644 index 00000000..09081cc2 --- /dev/null +++ b/Source/Base/dxComnD10.drc @@ -0,0 +1,21 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +DESCRIPTION RCDATA +BEGIN + "\x4c", "\x00", "\x69", "\x00", "\x62", "\x00", "\x72", "\x00", /* 0000: L.i.b.r. */ + "\x65", "\x00", "\x72", "\x00", "\x69", "\x00", "\x61", "\x00", /* 0008: e.r.i.a. */ + "\x20", "\x00", "\x62", "\x00", "\x61", "\x00", "\x73", "\x00", /* 0010: .b.a.s. */ + "\x65", "\x00", "\x20", "\x00", "\x64", "\x00", "\x65", "\x00", /* 0018: e. .d.e. */ + "\x20", "\x00", "\x46", "\x00", "\x61", "\x00", "\x63", "\x00", /* 0020: .F.a.c. */ + "\x74", "\x00", "\x75", "\x00", "\x47", "\x00", "\x45", "\x00", /* 0028: t.u.G.E. */ + "\x53", "\x00", "\x00", "\x00" /* 0030: S... */ +END + diff --git a/Source/Base/uActualizacion.dfm b/Source/Base/uActualizacion.dfm new file mode 100644 index 00000000..60d02b92 --- /dev/null +++ b/Source/Base/uActualizacion.dfm @@ -0,0 +1,276 @@ +object fActualizacion: TfActualizacion + Left = 447 + Top = 316 + Caption = 'Configuraci'#243'n' + ClientHeight = 340 + ClientWidth = 354 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poOwnerFormCenter + OnActivate = FormActivate + DesignSize = ( + 354 + 340) + PixelsPerInch = 96 + TextHeight = 13 + object Panel2: TPanel + Left = 0 + Top = 306 + Width = 354 + Height = 34 + Align = alBottom + BevelOuter = bvNone + ParentColor = True + TabOrder = 0 + object OKBtn: TButton + Left = 190 + Top = 2 + Width = 75 + Height = 25 + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 0 + OnClick = OKBtnClick + end + object CancelBtn: TButton + Left = 270 + Top = 2 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + end + object PageControl1: TPageControl + Left = 8 + Top = 8 + Width = 337 + Height = 289 + ActivePage = TabSheet1 + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 1 + object TabSheet1: TTabSheet + Caption = 'Configuraci'#243'n' + object GroupBox1: TGroupBox + Left = 7 + Top = 6 + Width = 313 + Height = 242 + Caption = 'Configuraci'#243'n de acceso' + TabOrder = 0 + object Label2: TLabel + Left = 32 + Top = 115 + Width = 259 + Height = 26 + Margins.Bottom = 0 + Caption = + 'Para poder descargar actualizaciones de FactuGES desde Internet ' + + 'debe introducir su usuario y contrase'#241'a:' + WordWrap = True + end + object Label3: TLabel + Left = 41 + Top = 180 + Width = 39 + Height = 13 + Margins.Bottom = 0 + Caption = 'Usuario:' + end + object Label4: TLabel + Left = 23 + Top = 205 + Width = 57 + Height = 13 + Margins.Bottom = 0 + Caption = 'Contrase'#241'a:' + end + object bDirectorio: TSpeedButton + Left = 272 + Top = 48 + Width = 23 + Height = 22 + Caption = '...' + OnClick = bDirectorioClick + end + object Label6: TLabel + Left = 32 + Top = 155 + Width = 48 + Height = 13 + Margins.Bottom = 0 + Caption = 'Direcci'#243'n:' + end + object edUsuario: TEdit + Left = 87 + Top = 176 + Width = 208 + Height = 21 + TabOrder = 0 + end + object edPassword: TEdit + Left = 87 + Top = 201 + Width = 208 + Height = 21 + PasswordChar = '*' + TabOrder = 1 + end + object edRutaLan: TEdit + Left = 32 + Top = 48 + Width = 241 + Height = 21 + ReadOnly = True + TabOrder = 2 + end + object rbInternet: TRadioButton + Left = 16 + Top = 96 + Width = 257 + Height = 17 + Caption = 'Actualizaci'#243'n por Internet' + TabOrder = 3 + OnClick = Action1Update + end + object rbLan: TRadioButton + Left = 16 + Top = 24 + Width = 265 + Height = 17 + Caption = 'Actualizaci'#243'n por red local' + TabOrder = 4 + OnClick = Action1Update + end + object edLocation: TEdit + Left = 87 + Top = 151 + Width = 208 + Height = 21 + TabOrder = 5 + end + end + end + object TabSheet2: TTabSheet + Caption = 'Opciones avanzadas' + ImageIndex = 1 + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 0 + ExplicitHeight = 0 + object GroupBox2: TGroupBox + Left = 8 + Top = 7 + Width = 313 + Height = 242 + Caption = 'Opciones avanzadas' + TabOrder = 0 + object Label1: TLabel + Left = 16 + Top = 19 + Width = 282 + Height = 13 + Margins.Bottom = 0 + Caption = 'Por favor, s'#243'lo modificar si se sabe lo que se est'#225' haciendo.' + WordWrap = True + end + object Label5: TLabel + Left = 16 + Top = 52 + Width = 177 + Height = 13 + Margins.Bottom = 0 + Caption = 'Nombre del archivo de configuraci'#243'n:' + end + object Label7: TLabel + Left = 200 + Top = 76 + Width = 90 + Height = 13 + Margins.Bottom = 0 + Caption = 'p.e: versionlocal.ini' + end + object edFicheroConfig: TEdit + Left = 16 + Top = 72 + Width = 177 + Height = 21 + TabOrder = 0 + end + end + end + end + object JvAppRegistryStorage1: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + StorageOptions.BooleanAsString = False + RegRoot = hkLocalMachine + Root = 'Software\FactuGES\Update' + SubStorages = <> + Left = 326 + end + object JvFormStorage1: TJvFormStorage + Active = False + AppStorage = JvAppRegistryStorage1 + AppStoragePath = '\' + Options = [] + StoredProps.Strings = ( + 'edPassword.Text' + 'edUsuario.Text' + 'edRutaLan.Text' + 'rbInternet.Checked' + 'rbLan.Checked' + 'edFicheroConfig.Text' + 'edLocation.Text') + StoredValues = < + item + Name = 'TipoActualizacion' + Value = '' + OnSave = JvFormStorage1StoredValues0Save + end> + Left = 296 + end + object ActionList1: TActionList + Left = 242 + Top = 2 + object Action1: TAction + Caption = 'Action1' + OnUpdate = Action1Update + end + object Action2: TAction + Caption = 'Action2' + end + end + object JvBrowseForFolderDialog1: TJvBrowseForFolderDialog + Options = [odOnlyDirectory, odStatusAvailable, odNewDialogStyle] + Title = 'Ruta de las actualizaciones' + Left = 268 + Top = 1 + end + object JvProgramVersionCheck1: TJvProgramVersionCheck + CheckFrequency = 0 + LocalDirectory = 'update' + LocalVersionInfoFileName = 'versioninfo.ini' + LocationNetwork = JvProgramVersionNetworkLocation1 + LocationType = pvltHTTP + UserOptions = [uoLocalDirectory, uoAllowedReleaseType, uoLocationType, uoLocationNetwork, uoLocationHTTP] + Left = 176 + Top = 48 + end + object JvProgramVersionNetworkLocation1: TJvProgramVersionNetworkLocation + Left = 208 + Top = 48 + end + object JvProgramVersionHTTPLocation1: TJvProgramVersionHTTPLocation + Left = 232 + Top = 48 + end +end diff --git a/Source/Base/uActualizacion.pas b/Source/Base/uActualizacion.pas new file mode 100644 index 00000000..9a46ceb8 --- /dev/null +++ b/Source/Base/uActualizacion.pas @@ -0,0 +1,184 @@ +{ +=============================================================================== + Copyright () 2005. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 17-05-2005 + Versin actual: 1.0.0 + Fecha versin actual: 17-05-2005 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uActualizacion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, ComCtrls, JvComponent, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, Buttons, JvBaseDlg, JvBrowseFolder, + ActnList, JvProgramVersionCheck, JvPropertyStore, JvAppIniStorage, + IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, + uInfoProjectUtils, JvComponentBase; + +type + TfActualizacion = class(TForm) + Panel2: TPanel; + OKBtn: TButton; + CancelBtn: TButton; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + GroupBox1: TGroupBox; + Label2: TLabel; + edUsuario: TEdit; + Label3: TLabel; + edPassword: TEdit; + Label4: TLabel; + JvAppRegistryStorage1: TJvAppRegistryStorage; + JvFormStorage1: TJvFormStorage; + edRutaLan: TEdit; + bDirectorio: TSpeedButton; + rbInternet: TRadioButton; + rbLan: TRadioButton; + ActionList1: TActionList; + Action1: TAction; + Action2: TAction; + TabSheet2: TTabSheet; + GroupBox2: TGroupBox; + Label1: TLabel; + Label5: TLabel; + edFicheroConfig: TEdit; + JvBrowseForFolderDialog1: TJvBrowseForFolderDialog; + JvProgramVersionCheck1: TJvProgramVersionCheck; + JvProgramVersionNetworkLocation1: TJvProgramVersionNetworkLocation; + Label6: TLabel; + edLocation: TEdit; + Label7: TLabel; + procedure bDirectorioClick(Sender: TObject); + procedure Action1Update(Sender: TObject); + procedure FormActivate(Sender: TObject); + procedure OKBtnClick(Sender: TObject); + procedure JvFormStorage1StoredValues0Save(Sender: TJvStoredValue; + var AValue: Variant); + private + InfoProject : TInfoProject; + public + { Public declarations } + function HayConfiguracion: Boolean; + procedure Actualizar; + function darVersion: String; + end; + +var + fActualizacion: TfActualizacion; + +implementation + +{$R *.dfm} + +uses + JclFileUtils; + +procedure TfActualizacion.bDirectorioClick(Sender: TObject); +begin + if Length(edRutaLan.Text) > 0 then + JvBrowseForFolderDialog1.Directory := edRutaLan.Text; + JvBrowseForFolderDialog1.Execute; + if DirectoryExists(JvBrowseForFolderDialog1.Directory) then + edRutaLan.Text := JvBrowseForFolderDialog1.Directory + '\' + else begin + ShowMessage('Directorio no vlido'); + bDirectorio.Click; + end; +end; + +procedure TfActualizacion.Action1Update(Sender: TObject); +begin + edRutaLan.Enabled := rbLan.Checked; + bDirectorio.Enabled := rbLan.Checked; + edLocation.Enabled := rbInternet.Checked; + edUsuario.Enabled := rbInternet.Checked; + edPassword.Enabled := rbInternet.Checked; +end; + +procedure TfActualizacion.FormActivate(Sender: TObject); +begin + JvFormStorage1.RestoreFormPlacement; + PageControl1.TabIndex := 0; +end; + +procedure TfActualizacion.OKBtnClick(Sender: TObject); +begin + JvFormStorage1.SaveFormPlacement; +end; + +procedure TfActualizacion.Actualizar; +begin + JvFormStorage1.RestoreFormPlacement; + + if rbLan.Checked then + begin + JvProgramVersionCheck1.LocationType := pvltNetwork; + with JvProgramVersionNetworkLocation1 do + begin + VersionInfoLocationPathList.Clear; + VersionInfoLocationPathList.Add(edRutaLan.Text); + VersionInfoFileName := edFicheroConfig.Text; + end; + end + else begin + {JvProgramVersionCheck1.LocationType := pvltHTTP; + with JvProgramVersionHTTPLocationIndy1 do + begin + VersionInfoFileName := edFicheroConfig.Text; + VersionInfoLocationPathList.Clear; + VersionInfoLocationPathList.Add(edLocation.Text); + UserName := edUsuario.Text; + Password := edPassword.Text; + end;} + end; + + JvProgramVersionCheck1.LocalVersionInfoFileName := 'versionlocal.ini';//edFicheroConfig.Text; + JvProgramVersionCheck1.Execute; +end; + +procedure TfActualizacion.JvFormStorage1StoredValues0Save( + Sender: TJvStoredValue; var AValue: Variant); +begin + if rbInternet.Checked then + AValue := 'INTERNET' + else + AValue := 'LAN'; +end; + +function TfActualizacion.darVersion: String; +begin + InfoProject := TInfoProject.Create(Self); + try + Result := InfoProject.FileVersion; + finally + FreeAndNil(InfoProject); + end; +end; + +function TfActualizacion.HayConfiguracion: Boolean; +begin + // Cargar la configuracin desde el registro. + JvFormStorage1.RestoreFormPlacement; + + Result := (rbLan.Checked) or (rbInternet.Checked); +end; + +end. diff --git a/Source/Base/uConfigurarConexion.dfm b/Source/Base/uConfigurarConexion.dfm new file mode 100644 index 00000000..715c6fda --- /dev/null +++ b/Source/Base/uConfigurarConexion.dfm @@ -0,0 +1,114 @@ +object fConfigurarConexion: TfConfigurarConexion + Left = 663 + Top = 468 + ActiveControl = edtServer + Caption = 'Configuraci'#243'n de la conexi'#243'n' + ClientHeight = 149 + ClientWidth = 392 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object bProbar: TButton + Left = 8 + Top = 113 + Width = 121 + Height = 25 + Caption = '&Probar la conexi'#243'n' + TabOrder = 1 + OnClick = bProbarClick + end + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 97 + Caption = 'Servidor' + TabOrder = 0 + DesignSize = ( + 375 + 97) + object Label1: TLabel + Left = 18 + Top = 28 + Width = 97 + Height = 13 + Margins.Bottom = 0 + Caption = 'Nombre del servidor:' + end + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Margins.Bottom = 0 + Caption = 'Puerto de escucha:' + end + object edtServer: TEdit + Left = 136 + Top = 24 + Width = 223 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + end + object edtPort: TEdit + Left = 136 + Top = 56 + Width = 108 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = '8099' + end + end + object bAceptar: TButton + Left = 219 + Top = 113 + Width = 75 + Height = 25 + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 2 + end + object bCancelar: TButton + Left = 307 + Top = 113 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 3 + end + object HTTPChannel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'AdminPV' + TargetURL = 'http://localhost:8099/BIN' + Left = 120 + Top = 112 + end + object ROBinMessage: TROBinMessage + Left = 152 + Top = 112 + end + object CoService: TRORemoteService + ServiceName = 'srvLogin' + Message = ROBinMessage + Channel = HTTPChannel + Left = 184 + Top = 112 + end +end diff --git a/Source/Base/uConfigurarConexion.pas b/Source/Base/uConfigurarConexion.pas new file mode 100644 index 00000000..30707b75 --- /dev/null +++ b/Source/Base/uConfigurarConexion.pas @@ -0,0 +1,76 @@ +unit uConfigurarConexion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uROClient, uROWinInetHttpChannel, uRODynamicRequest, + uROServiceComponent, uRORemoteService, uROBinMessage; + +type + TfConfigurarConexion = class(TForm) + bProbar: TButton; + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + edtServer: TEdit; + edtPort: TEdit; + bAceptar: TButton; + bCancelar: TButton; + HTTPChannel: TROWinInetHTTPChannel; + ROBinMessage: TROBinMessage; + CoService: TRORemoteService; + procedure bProbarClick(Sender: TObject); + procedure FormCreate(Sender: TObject); + private + function GetTargetURL: String; + procedure SetTargetURL(const Value: String); + { Private declarations } + public + property TargetURL : String read GetTargetURL write SetTargetURL; + end; + +var + fConfigurarConexion: TfConfigurarConexion; + +implementation + +uses + StrUtils, JclStrings, uDataModuleConexion, uDialogUtils; + +{$R *.dfm} + +{ TfConfigurarConexion } + +function TfConfigurarConexion.GetTargetURL: String; +begin + Result := 'http://' + edtServer.Text + ':' + edtPort.Text + '/bin'; +end; + +procedure TfConfigurarConexion.SetTargetURL(const Value: String); +var + s : String; +begin + s := StrAfter('http://', Value); + s := StrBefore(':', s); + edtServer.Text := s; + + s := StrAfter(edtServer.Text + ':', Value); + s := StrBefore('/bin', s); + edtPort.Text := s; +end; + +procedure TfConfigurarConexion.bProbarClick(Sender: TObject); +begin + if dmConexion.ProbarConexion(TargetURL) then + ShowInfoMessage('Conexin vlida con el servidor.') + else + ShowErrorMessage('Error de conexin', 'No se ha podido establecer la conexin con el servidor.') +end; + +procedure TfConfigurarConexion.FormCreate(Sender: TObject); +begin + HTTPChannel.OnFailure := dmConexion.ROChannelFailure; +end; + +end. diff --git a/Source/Base/uDataModuleBase.dfm b/Source/Base/uDataModuleBase.dfm new file mode 100644 index 00000000..3a012e38 --- /dev/null +++ b/Source/Base/uDataModuleBase.dfm @@ -0,0 +1,1623 @@ +object dmBase: TdmBase + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + OnDestroy = DataModuleDestroy + Height = 352 + Width = 518 + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002224944415478DA + 95935D48936114C77FCB36584A6064161515DEA441108B240293E8A682246805 + DEA45020F40196505D081242DE94512B8C20169937056914D52E726B6083B114 + D44CD3D51A216BB6656B5FEF677B5FF31D23033DF070CE03CFFFF73F1CCE6362 + 29D1806AD44E4C5A32F5F58FAA8BD5D73DD8465757034D4D4EFA4E8C62000ED7 + 56E997647490DFE131BD2ED9584971D98EB9478D2603D279B39EE6733DC6DD00 + 68E2EF7E07E95F2291688C48629ABDC71DACABD8AD0334E7B420104D24F4A3D5 + DDD707E60087F66C2234D0CECF2F41643987556566676799C9C4387AD18FF964 + 91E178EA522DF73ADC851D1CA85ECD27D77948995861B552844C2A9962303441 + DD051FA22473E5095C735B3972DAC6D3DB016EED7BC9FD47CFE601E57CF3B661 + C966D1E62C880299549A696915B6639D4892A243D6B6AC349C0B00DA0C22EF7B + 484EBDCA015424512491125036D751B1CBAE8BB5330F12459937EF860A01DEA0 + 8BA0FB0E5B154BAE832C810CACDF594F4DD5C17FC45AF6FA87F3800D95022DFD + ADC47E84682CDF8F222A3C9CF1303915E6C3E5495DDC7AE379C14E546F5F9307 + F8E4C7BC187F4BA6344E49D24C6E8A24AD12E65809A1895102CD6386B3F8B793 + C0F0C73CC0196927188E2297651096A7D096D4922D6659DCC2E7AF43F8CE8C70 + F5AEEBFF1D9CF5D889C7230BAE6F696939BDF6D7BAABACA87A567279647C320F + A8B16DA1BBD7B3A47FA5850168EB702C596C6CA2AA2EFA332E187F0080F1503E + 182A98A90000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011F4944415478DA + 63FCFFFF3F03258091620390394975ABC1A6BD79FB8561D3D4444642E220CB31 + 0C985113C8A0E6D6C4F0E040132321711403408A40367CFCF28DE1E1C3970C7A + DA8A60DB708963350064CBF6938F18966C3EC770FAD425B06DB8C409BA000440 + B68908F330A08B631800D23CB73184E1D9CB4F0C775EFD6598B2641FD8A68208 + 2F864BCF1E33A0CB71BF7AC2B0604101380619571EBDFB7FE7CE730CD9518E60 + D3F79CB8C770E6DA23B0013017609373501062983F3F9F111E4820F0F8C52730 + FDFEED5B30CDC2FC91C1CEDA860197FCFDFD8D8CF040DA77EE39C395DBAF182E + DF7DC370F0C051ACD188AE66901A70F2F27D94B8C666004C0DDC801F3F7F323C + 7DF191E1D78F9F0CCF5F7E40896B9801D8D4800DA0343702001BEF6EF0E3CC7C + BD0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002234944415478DA + A5934F4814511CC7BF6BBAB0AD97225B2A2B4B88ECB014861241ED2190FE9017 + 2D15843A74E8E0A14D3282608935920E092D7A10A44C25A843497FEDA0EB422D + 2DE6A2F647ADA5C542A6DD76DB6CC79979F3DE34F3CA99C4BAB40F1EEF0DEF7D + 3FDFEFFC783F9BA669C865D8EE0FBDCE89C001473D3BF8473631861FB36FF9BE + 7063199C45BBCC8B4C4FAAAA0C44A5E6ACAA3F67010CF19748000BDF0984440A + C2FC1CF61F0F605DE91EA894E17CAFB2C4B9246F18DD7D03BF0087F76E46FCB9 + 1FDF3EC640A97EAA5164321924A5146A5A22A6A391C0E971724097F7B1053858 + B90633835E40B461A5C38115A010B322C6E2D3A83E1BE6E24B7781D676070A1A + 9A40FAAFA3270A74569D5E04B8F039E4835D96757740210A24710173EA6A941F + BBC69D676E3BF169EB3892E37DC86B6EE3294C805103E1553FB21F9EE800BD58 + 84605E54C04AAA515A51CBC5EE230108D38F7073A402EB7D3EC83D7FFC820108 + C506111BEEC07666D713C81895800DBB1BB0E94D9D2936668DBF180F9E85118A + 4C5880E23205CD431791FA1AC749D70130C2702B1944A73DBA4CECA96BE5F12B + DD6B2D4098DEC1C3A91148ABD228CC1640AF223A94977F7526BFDFC2E8C43B0B + 7043F023369B002D92A0E48BF0CA67B09334C2B5EDD032E7C5B1244153B016E9 + B4601E5E75B7E344633DA2DDF95C3CF0F40577A54CE32BD3D7C9A9F716605FF9 + 16F4DE0B9A80B60BA7CC7DCBE5AE7FF68109F05D09FC7F33E5DACE3F0109DB53 + BED36F80890000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 24 + Top = 16 + Bitmap = {} + end + object TBXSwitcher: TTBXSwitcher + Theme = 'Default' + Left = 24 + Top = 80 + end + object StyleManager: TJvNavPaneStyleManager + Colors.ButtonColorFrom = clWhite + Colors.ButtonColorTo = 12435133 + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.SplitterColorFrom = 13026246 + Colors.SplitterColorTo = 9211532 + Colors.DividerColorFrom = 15725551 + Colors.DividerColorTo = 13026246 + Colors.HeaderColorFrom = 8684164 + Colors.HeaderColorTo = 8684164 + Colors.FrameColor = 8684676 + Colors.ToolPanelHeaderColorFrom = clWhite + Colors.ToolPanelHeaderColorTo = 12435133 + Fonts.NavPanelFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelFont.Color = clWindowText + Fonts.NavPanelFont.Height = -13 + Fonts.NavPanelFont.Name = 'Tahoma' + Fonts.NavPanelFont.Style = [] + Fonts.NavPanelHotTrackFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelHotTrackFont.Color = clWindow + Fonts.NavPanelHotTrackFont.Height = -13 + Fonts.NavPanelHotTrackFont.Name = 'Tahoma' + Fonts.NavPanelHotTrackFont.Style = [] + Fonts.DividerFont.Charset = DEFAULT_CHARSET + Fonts.DividerFont.Color = clWindowText + Fonts.DividerFont.Height = -11 + Fonts.DividerFont.Name = 'Tahoma' + Fonts.DividerFont.Style = [] + Fonts.HeaderFont.Charset = DEFAULT_CHARSET + Fonts.HeaderFont.Color = clWindow + Fonts.HeaderFont.Height = -16 + Fonts.HeaderFont.Name = 'Arial' + Fonts.HeaderFont.Style = [fsBold] + Theme = nptCustom + Left = 104 + Top = 80 + end + object cxIntl: TcxIntl + Connected = True + cxLibrary.CantCreateRegistryKey = 'No se puede crear la llave de registro : \%s' + PageControl2.ImageListIndexError = 'El '#237'ndice (%d) deber'#225' estar entre 0 y %d' + PageControl2.NoBaseImages = 'BaseImages no est'#225' asignado' + PageControl2.NoRegisteredStyles = 'No hay estilos registrados' + PageControl2.PageIndexError = '%d es un valor inv'#225'lido para PageIndex, debe estar entre 0 y %d' + PageControl2.PainterClassError = 'La clase PCPainter es nula' + PageControl2.StandardStyleError = '%s es un estilo est'#225'ndar no soportado' + PageControl2.StyleNameError = '%s es un nombre de estilo no registrado' + PageControl2.TabCountEqualsZero = 'Tabs.Count = 0' + PageControl2.TabIndexError = 'El '#237'ndice de la pesta'#241'a (%d) est'#225' fuera de l'#237'mites' + PageControl2.TabVisibleIndexOutsOfBounds = 'Propiedad TabVisibleIndex (%d) deber'#225' estar entre 0 y %d' + PageControl2.VisibleTabListEmpty = 'No hay pesta'#241'as visibles' + QuantumGrid5.GridRecursiveLevels = 'No se pueden crear niveles recursivos' + QuantumGrid5.GridDeletingConfirmationCaption = 'Confirmar' + QuantumGrid5.GridDeletingFocusedConfirmationText = #191'Borrar registro?' + QuantumGrid5.GridDeletingSelectedConfirmationText = #191'Borrar todos los registros seleccionados?' + QuantumGrid5.GridNoDataInfoText = '' + QuantumGrid5.GridNewItemRowInfoText = 'Haga click aqu'#237' para agregar una nueva l'#237'nea' + QuantumGrid5.GridFilterIsEmpty = '' + QuantumGrid5.GridCustomizationFormCaption = 'Personalizaci'#243'n' + QuantumGrid5.GridCustomizationFormColumnsPageCaption = 'Columnas' + QuantumGrid5.GridGroupByBoxCaption = 'Arrastre una columna aqu'#237' para agrupar por dicha columna' + QuantumGrid5.GridFilterCustomizeButtonCaption = 'Personalizar...' + QuantumGrid5.GridColumnsQuickCustomizationHint = 'Haga click aqu'#237' para seleccionar las columas visibles' + QuantumGrid5.GridCustomizationFormBandsPageCaption = 'Bandas' + QuantumGrid5.GridBandsQuickCustomizationHint = 'Haga click aqu'#237' para seleccionar las bandas visibles' + QuantumGrid5.GridCustomizationFormRowsPageCaption = 'Rows' + QuantumGrid5.GridConverterIntermediaryMissing = 'Omiti'#243' un componente intermediario!' + QuantumGrid5.GridConverterNotExistGrid = 'cxGrid no existe' + QuantumGrid5.GridConverterNotExistComponent = 'El componente no existe' + QuantumGrid5.ImportErrorCaption = 'Error al importar' + QuantumGrid5.NotExistGridView = 'No existe la vista del grid' + QuantumGrid5.NotExistGridLevel = 'No existe un nivel de grid activo' + QuantumGrid5.CantCreateExportOutputFile = 'No se puede crear el archivo de exportaci'#243'n' + QuantumGrid5.EditRepositoryExtLookupComboBoxItem = + 'ExtLookupComboBox|Representa un ultra avanzado control de busque' + + 'da (lookup) usando el QuantumGrid como su control de despliegue' + Navigator.NavigatorHint_First = 'Primer registro' + Navigator.NavigatorHint_Prior = 'Registro anterior' + Navigator.NavigatorHint_PriorPage = 'P'#225'gina anterior' + Navigator.NavigatorHint_Next = 'Siguiente registro' + Navigator.NavigatorHint_NextPage = 'Siguiente p'#225'gina' + Navigator.NavigatorHint_Last = #218'ltimo registro' + Navigator.NavigatorHint_Insert = 'Insertar registro' + Navigator.NavigatorHint_Delete = 'Borrar registro' + Navigator.NavigatorHint_Edit = 'Editar registro' + Navigator.NavigatorHint_Post = 'Grabar edici'#243'n' + Navigator.NavigatorHint_Cancel = 'Cancelar edici'#243'n' + Navigator.NavigatorHint_Refresh = 'Actualizar datos' + Navigator.NavigatorHint_SaveBookmark = 'Guardar Marca' + Navigator.NavigatorHint_GotoBookmark = 'Volver a Marca' + Navigator.NavigatorHint_Filter = 'Filtrar datos' + Navigator.Navigator_DeleteRecordQuestion = #191'Desea borrar este el registro?' + Editors5.EditDateConvertError = 'El valor no se puede convertir a fecha' + Editors5.EditInvalidRepositoryItem = 'Elemento de repositorio no v'#225'lido' + Editors5.EditNumericValueConvertError = 'No se puede convertir a valor num'#233'rico' + Editors5.EditPopupCircularReferencingError = 'Referencia circular no permitida' + Editors5.EditPostError = 'Ocurri'#243' un error durante el grabado del valor de edici'#243'n' + Editors5.EditTimeConvertError = 'No se puede convertir a valor de tiempo' + Editors5.EditValidateErrorText = 'Valor inv'#225'lido. Use la tecla de escape para cancelar cambios' + Editors5.EditValueOutOfBounds = 'Valor fuera de l'#237'mites' + Editors5.EditCheckBoxChecked = 'True' + Editors5.EditCheckBoxUnchecked = 'False' + Editors5.TextTrue = 'True' + Editors5.TextFalse = 'False' + Editors5.BlobButtonOK = '&Aceptar' + Editors5.BlobButtonCancel = '&Cancelar' + Editors5.BlobButtonClose = '&Cerrar' + Editors5.BlobMemo = '(MEMO)' + Editors5.BlobMemoEmpty = '(memo)' + Editors5.BlobPicture = '(IM'#193'GEN)' + Editors5.BlobPictureEmpty = '(im'#225'gen)' + Editors5.MenuItemCaptionCut = 'Cor&tar' + Editors5.MenuItemCaptionCopy = '&Copiar' + Editors5.MenuItemCaptionPaste = '&Pegar' + Editors5.MenuItemCaptionDelete = '&Borrar' + Editors5.MenuItemCaptionLoad = '&Leer...' + Editors5.MenuItemCaptionSave = 'Guardar &Como...' + Editors5.DatePopupClear = 'Limpiar' + Editors5.DatePopupNow = 'Ahora' + Editors5.DatePopupOK = 'Aceptar' + Editors5.DatePopupToday = 'Hoy' + Editors5.DateError = 'Fecha inv'#225'lida' + Editors5.DateToday = 'hoy' + Editors5.DateYesterday = 'ayer' + Editors5.DateTomorrow = 'ma'#241'ana' + Editors5.DateSunday = 'Domingo' + Editors5.DateMonday = 'Lunes' + Editors5.DateTuesday = 'Martes' + Editors5.DateWednesday = 'Mi'#233'rcoles' + Editors5.DateThursday = 'Jueves' + Editors5.DateFriday = 'Viernes' + Editors5.DateSaturday = 'S'#225'bado' + Editors5.DateFirst = 'Primero' + Editors5.DateSecond = 'segundo' + Editors5.DateThird = 'tercero' + Editors5.DateFourth = 'Cuarto' + Editors5.DateFifth = 'Quinto' + Editors5.DateSixth = 'sexto' + Editors5.DateSeventh = 's'#233'ptimo' + Editors5.DateBOM = 'bom' + Editors5.DateEOM = 'eom' + Editors5.DateNow = 'ahora' + Editors5.CalcError = 'Error' + Editors5.HyperLinkPrefix = 'http://' + Editors5.HyperLinkDoubleSlash = '//' + Editors5.EditRepositoryBlobItem = 'BlobEdit|Representa el editor de BLOB' + Editors5.EditRepositoryButtonItem = + 'ButtonEdit|Representa un control de edici'#243'n con controles incrus' + + 'tados' + Editors5.EditRepositoryCalcItem = + 'CalcEdit|Representa un control de edici'#243'n con una ventana de cal' + + 'culadora desplegable' + Editors5.EditRepositoryCheckBoxItem = + 'CheckBox|Representa un control de caja de marca que permite sele' + + 'ccionar una opci'#243'n' + Editors5.EditRepositoryComboBoxItem = 'ComboBox|Representa el editor de la caja combo' + Editors5.EditRepositoryCurrencyItem = + 'CurrencyEdit|Representa un editor que habilita la edici'#243'n de val' + + 'ores monetarios' + Editors5.EditRepositoryDateItem = + 'DateEdit|Representa un control de edici'#243'n con un calendario desp' + + 'legable' + Editors5.EditRepositoryHyperLinkItem = 'HyperLink|Representa un editor de texto de hiperv'#237'nculos' + Editors5.EditRepositoryImageComboBoxItem = + 'ImageComboBox|Representa un editor que muestra una lista de im'#225'g' + + 'enes y texto en la ventana desplegable' + Editors5.EditRepositoryImageItem = 'Image|Representa un editor de im'#225'genes' + Editors5.EditRepositoryLookupComboBoxItem = 'LookupComboBox|Representa una caja de b'#250'squeda' + Editors5.EditRepositoryMaskItem = 'MaskEdit|Representa un control de edici'#243'n gen'#233'rico con m'#225'scara' + Editors5.EditRepositoryMemoItem = + 'Memo|Representa un control de edici'#243'n que permite editar datos m' + + 'emo' + Editors5.EditRepositoryMRUItem = + 'MRUEdit|Representa un editor de texto mostrando la lista de los ' + + 'elementos m'#225's recientemente usados (MRU) en una ventana desplega' + + 'ble' + Editors5.EditRepositoryPopupItem = + 'PopupEdit|Representa un control de edici'#243'n con una lista despleg' + + 'able' + Editors5.EditRepositorySpinItem = 'SpinEdit|Representa un editor de incrementos/decrementos (spin)' + Editors5.EditRepositoryRadioGroupItem = 'RadioGroup|Represents a group of radio buttons' + Editors5.EditRepositoryTextItem = 'TextEdit|Representa un editor de texto de l'#237'nea sencilla' + Editors5.EditRepositoryTimeItem = 'TimeEdit|Representa un editor mostrando valores de tiempo' + Editors5.RegExprLine = 'L'#237'nea' + Editors5.RegExprChar = 'Char' + Editors5.RegExprNotAssignedSourceStream = 'No se ha asignado el stream fuente' + Editors5.RegExprEmptySourceStream = 'El stream or'#237'gen est'#225' vac'#237'o' + Editors5.RegExprCantUsePlusQuantifier = 'El cuantificador '#39'+'#39' no puede aplicarse aqu'#237 + Editors5.RegExprCantUseStarQuantifier = 'El cuantificador '#39'*'#39' no puede aplicarse aqu'#237 + Editors5.RegExprCantCreateEmptyAlt = 'La alternativa no debe estar vac'#237'a' + Editors5.RegExprCantCreateEmptyBlock = 'El bloque no debe estar vac'#237'o' + Editors5.RegExprIllegalSymbol = 'S'#237'mbolo no permitido '#39'%s'#39 + Editors5.RegExprIllegalQuantifier = 'Cuantificador no permitido '#39'%s'#39 + Editors5.RegExprNotSupportQuantifier = 'El par'#225'metro cuantificador no es soportado' + Editors5.RegExprIllegalIntegerValue = 'Valor entero no permitido' + Editors5.RegExprTooBigReferenceNumber = 'N'#250'mero de referencia demasiado grande' + Editors5.RegExprCantCreateEmptyEnum = 'No puedo crear enumeraci'#243'n vac'#237'a' + Editors5.RegExprSubrangeOrder = 'El caracter de inicio del subrango debe ser menor al de fin' + Editors5.RegExprHexNumberExpected0 = 'Se esperaba n'#250'mero Hexadecimal' + Editors5.RegExprHexNumberExpected = 'N'#250'mero Hexadecimal esperado pero encontr'#243' '#39'%s'#39 + Editors5.RegExprMissing = 'Falta '#39'%s'#39 + Editors5.RegExprUnnecessary = 'Innecesario '#39'%s'#39 + Editors5.RegExprIncorrectSpace = 'Espacio incorrecto despu'#233's de '#39'\'#39 + Editors5.RegExprNotCompiled = 'Expresi'#243'n regular no compila' + Editors5.RegExprIncorrectParameterQuantifier = 'Cuantificador de par'#225'metros incorrecto' + Editors5.RegExprCantUseParameterQuantifier = 'The parameter quantifier cannot be applied here' + Editors5.MaskEditRegExprError = 'Errores en expresiones regulares:' + Editors5.MaskEditInvalidEditValue = 'El valor de edici'#243'n es inv'#225'lido' + Editors5.MaskEditNoMask = 'Ninguno' + Editors5.MaskEditIllegalFileFormat = 'Formato de archivo ilegal' + Editors5.MaskEditEmptyMaskCollectionFile = 'El archivo de colecci'#243'n de m'#225'scaras est'#225' vac'#237'o' + Editors5.MaskEditMaskCollectionFiles = 'Archivos de colecci'#243'n de m'#225'scaras' + Editors5.SpinEditInvalidNumericValue = 'Valor num'#233'rico no v'#225'lido' + Datacontroller.DataReadError = 'Error de lectura en or'#237'gen de datos' + Datacontroller.DataWriteError = 'Error de escritura en or'#237'gen de datos (stream)' + Datacontroller.DataItemExistError = 'El elemento ya existe' + Datacontroller.DataRecordIndexError = #205'ndice de registro fuera de rango' + Datacontroller.DataItemIndexError = #205'ndice de elemento fuera de rango' + Datacontroller.DataProviderModeError = 'La operaci'#243'n no es soportada en modo de proveedor (provider)' + Datacontroller.DataInvalidStreamFormat = 'Origen de datos (Stream) inv'#225'lido' + Datacontroller.DataRowIndexError = #205'ndice del elemento de fila fuera de rango' + Datacontroller.DataCustomDataSourceInvalidCompare = 'Instrucci'#243'n GetInfoForCompare no implementada' + Datacontroller.DBDetailFilterControllerNotFound = 'DetailFilterController no encontrado' + Datacontroller.DBNotInGridMode = 'La controladora de datos no est'#225' en modo de Grid' + Datacontroller.DBKeyFieldNotFound = 'Campo llave no encontrado' + Filter.FilterOperatorEqual = 'igual' + Filter.FilterOperatorNotEqual = 'no es igual' + Filter.FilterOperatorLess = 'es menor que' + Filter.FilterOperatorLessEqual = 'es menor o igual que' + Filter.FilterOperatorGreater = 'es mayor que' + Filter.FilterOperatorGreaterEqual = 'es mayor o igual que' + Filter.FilterOperatorLike = 'como' + Filter.FilterOperatorNotLike = 'no es como' + Filter.FilterOperatorBetween = 'entre' + Filter.FilterOperatorNotBetween = 'no entre' + Filter.FilterOperatorInList = 'en' + Filter.FilterOperatorNotInList = 'no en' + Filter.FilterOperatorYesterday = 'es ayer' + Filter.FilterOperatorToday = 'es hoy' + Filter.FilterOperatorTomorrow = 'es ma'#241'ana' + Filter.FilterOperatorLastWeek = 'es '#250'ltima semana' + Filter.FilterOperatorLastMonth = 'es '#250'ltimo mes' + Filter.FilterOperatorLastYear = 'es a'#241'o pasado' + Filter.FilterOperatorThisWeek = 'es esta semana' + Filter.FilterOperatorThisMonth = 'es este mes' + Filter.FilterOperatorThisYear = 'es este a'#241'o' + Filter.FilterOperatorNextWeek = 'es semana siguiente' + Filter.FilterOperatorNextMonth = 'es mes siguiente' + Filter.FilterOperatorNextYear = 'es a'#241'o pr'#243'ximo' + Filter.FilterAndCaption = 'y' + Filter.FilterOrCaption = 'o' + Filter.FilterNotCaption = 'no' + Filter.FilterBlankCaption = 'vac'#237'o' + Filter.FilterOperatorIsNull = 'es vac'#237'o' + Filter.FilterOperatorIsNotNull = 'no es vac'#237'o' + Filter.FilterOperatorBeginsWith = 'comienza con' + Filter.FilterOperatorDoesNotBeginWith = 'no comienza con' + Filter.FilterOperatorEndsWith = 'termina con' + Filter.FilterOperatorDoesNotEndWith = 'no termina con' + Filter.FilterOperatorContains = 'contiene' + Filter.FilterOperatorDoesNotContain = 'no contiene' + Filter.FilterBoxAllCaption = '(Todos)' + Filter.FilterBoxCustomCaption = '(Personalizado...)' + Filter.FilterBoxBlanksCaption = '(Vac'#237'os)' + Filter.FilterBoxNonBlanksCaption = '(No vac'#237'os)' + Filter.FilterBoolOperatorAnd = 'AND' + Filter.FilterBoolOperatorOr = 'OR' + Filter.FilterBoolOperatorNotAnd = 'NOT AND' + Filter.FilterBoolOperatorNotOr = 'NOT OR' + Filter.FilterRootButtonCaption = 'Filtro' + Filter.FilterAddCondition = 'Agregar &Condici'#243'n' + Filter.FilterAddGroup = 'Agregar &Grupo' + Filter.FilterRemoveRow = '&Remover Fila' + Filter.FilterClearAll = 'Limpiar &Todo' + Filter.FilterFooterAddCondition = 'Agregar una nueva condici'#243'n' + Filter.FilterGroupCaption = 'aplica a las siguientes condiciones' + Filter.FilterRootGroupCaption = '' + Filter.FilterControlNullString = '' + Filter.FilterErrorBuilding = 'No se puede construir filtro desde el or'#237'gen' + Filter.FilterDialogCaption = 'Filtro Personalizado' + Filter.FilterDialogInvalidValue = 'Valor inv'#225'lido' + Filter.FilterDialogUse = 'Usar' + Filter.FilterDialogSingleCharacter = 'para representar un caracter sencillo' + Filter.FilterDialogCharactersSeries = 'para representar cualquier serie de caracteres' + Filter.FilterDialogOperationAnd = 'Y' + Filter.FilterDialogOperationOr = 'O' + Filter.FilterDialogRows = 'Mostrar filas donde:' + Filter.FilterControlDialogCaption = 'Constructor de Filtro' + Filter.FilterControlDialogNewFile = 'sinnombre.flt' + Filter.FilterControlDialogOpenDialogCaption = 'Abrir un filtro existente' + Filter.FilterControlDialogSaveDialogCaption = 'Grabar el filtro activo a archivo' + Filter.FilterControlDialogActionSaveCaption = '&Guardar...' + Filter.FilterControlDialogActionOpenCaption = '&Abrir...' + Filter.FilterControlDialogActionApplyCaption = '&Aplicar' + Filter.FilterControlDialogActionOkCaption = 'Aceptar' + Filter.FilterControlDialogActionCancelCaption = 'Cancelar' + Filter.FilterControlDialogFileExt = 'flt' + Filter.FilterControlDialogFileFilter = 'Filtros (*.flt)|*.flt' + GridPopupMenu.GridNone = 'Ninguno' + GridPopupMenu.GridSortColumnAsc = 'Ordenar Ascendente' + GridPopupMenu.GridSortColumnDesc = 'Ordenar Descendente' + GridPopupMenu.GridClearSorting = 'Clear Sorting' + GridPopupMenu.GridGroupByThisField = 'Agrupar por este campo' + GridPopupMenu.GridRemoveThisGroupItem = 'Remover del grupo' + GridPopupMenu.GridGroupByBox = 'Panel "Agrupar por"' + GridPopupMenu.GridAlignmentSubMenu = 'Alineaci'#243'n' + GridPopupMenu.GridAlignLeft = 'Alineaci'#243'n Izquierda' + GridPopupMenu.GridAlignRight = 'Alineaci'#243'n Derecha' + GridPopupMenu.GridAlignCenter = 'Alineaci'#243'n Centrada' + GridPopupMenu.GridRemoveColumn = 'Remover esta columna' + GridPopupMenu.GridFieldChooser = 'Selector de campos' + GridPopupMenu.GridBestFit = 'Mejor distribuci'#243'n' + GridPopupMenu.GridBestFitAllColumns = 'Mejor distribuci'#243'n (Todas las columnas)' + GridPopupMenu.GridShowFooter = 'Pie' + GridPopupMenu.GridShowGroupFooter = 'Pies de grupo' + GridPopupMenu.GridSumMenuItem = 'Sumar' + GridPopupMenu.GridMinMenuItem = 'M'#237'nimo' + GridPopupMenu.GridMaxMenuItem = 'M'#225'ximo' + GridPopupMenu.GridCountMenuItem = 'Contar' + GridPopupMenu.GridAvgMenuItem = 'Promedio' + GridPopupMenu.GridNoneMenuItem = 'Ninguno' + GridExport.UnsupportedExport = 'Tipo de exportaci'#243'n no soportado: %1' + GridExport.StyleManagerKill = + 'El administrador de estilo esta siendo utilizado y no puede ser ' + + 'liberado en este momento' + GridExport.StyleManagerCreate = 'No se puede crear administrador de estilo' + GridExport.ExportToHtml = 'Exportar a p'#225'gina Web (*.html)' + GridExport.ExportToXml = 'Exportar a documento XML (*.xml)' + GridExport.ExportToText = 'Exportar a formato de texto (*.txt)' + GridExport.EmptyExportCache = 'Cache de exportaci'#243'n vac'#237'o' + GridExport.IncorrectUnion = 'Uni'#243'n de celdas incorrecta' + GridExport.IllegalWidth = 'Ancho de columna ilegal' + GridExport.InvalidColumnRowCount = 'Conteo de columna o fila inv'#225'lido' + GridExport.IllegalHeight = 'Alto de fila ilegal' + GridExport.InvalidColumnIndex = 'El '#237'ndice de columna %d fuera de l'#237'mites' + GridExport.InvalidRowIndex = 'El '#237'ndice de fila %d est'#225' fuera de l'#237'mites' + GridExport.InvalidStyleIndex = #205'ndice de estilo %d inv'#225'lido' + GridExport.ExportToExcel = 'Exportar a MS Excel (*.xls)' + GridExport.WorkbookWrite = 'Error al escribir el archivo XLS' + GridExport.InvalidCellDimension = 'Dimensi'#243'n de celda inv'#225'lida' + GridExport.BoolTrue = 'True' + GridExport.BoolFalse = 'False' + Translate.cxLibrary = True + Translate.PageControl2 = False + Translate.QuantumGrid5 = True + Translate.Editors5 = True + Translate.Datacontroller = True + Translate.Filter = True + Translate.GridPopupMenu = True + Translate.GridExport = True + Translate.Navigator = True + Version = '5.0' + Left = 104 + Top = 16 + end + object cxIntlPrintSys31: TcxIntlPrintSys3 + Connected = True + Version = '3.0' + BtnOK = 'Aceptar' + BtnOKAccelerated = '&Aceptar' + BtnCancel = 'Cancelar' + BtnClose = 'Cerrar' + BtnApply = '&Aplicar' + BtnHelp = 'A&yuda' + BtnFix = '&Arreglar' + BtnNew = '&Nuevo...' + BtnIgnore = '&Ignorar' + BtnYes = '&S'#237 + BtnNo = '&No' + BtnEdit = '&Editar...' + BtnReset = '&Restaurar' + BtnAdd = '&A'#241'adir' + BtnAddComposition = 'A'#241'adir &Comparativa' + BtnDefault = '&Defecto...' + BtnDelete = '&Borrar...' + BtnDescription = '&Descripci'#243'n...' + BtnCopy = '&Copiar...' + BtnYesToAll = 'S'#237' a &Todos' + BtnRestoreDefaults = '&Rest.Defecto' + BtnRestoreOriginal = 'Restaurar &Original' + BtnTitleProperties = 'Prop. del T'#237'tulo...' + BtnProperties = 'P&ropiedades...' + BtnNetwork = 'R&ed...' + BtnBrowse = '&Hojear...' + BtnPageSetup = 'Config. P'#225'&gina...' + BtnPrintPreview = 'Vista Pre&via...' + BtnPreview = '&Ver...' + BtnPrint = 'Imprimir...' + BtnOptions = '&Opciones...' + BtnStyleOptions = 'Opciones de estilo...' + BtnDefinePrintStyles = '&Definir Estilos...' + BtnPrintStyles = 'Estilos de Imp.' + BtnBackground = 'Fondo' + BtnShowToolBar = 'Mostrar &Herramientas' + BtnDesign = 'D&ise'#241'o...' + BtnMoveUp = 'Mover &Arriba' + BtnMoveDown = 'Mover Aba&jo' + BtnMoreColors = '&M'#225's Colores...' + BtnFillEffects = 'Efectos de &Relleno...' + BtnNoFill = '&Sin Relleno' + BtnAutomatic = '&Autom'#225'tico' + BtnNone = '&Ninguno' + BtnOtherTexture = 'Otras Te&xturas...' + BtnInvertColors = 'I&nvertir Colores' + BtnSelectPicture = 'Se&leccionar Imagen...' + EditReports = 'Editar Informes' + Composition = 'Composici'#243'n' + ReportTitleDlgCaption = 'T'#237'tulo del Informe' + Mode = '&Modo:' + Text = '&Texto' + Properties = '&Propiedades' + AdjustOnScale = '&Ajustar Escala' + TitleModeNone = 'Ninguno' + TitleModeOnEveryTopPage = 'En Cada P'#225'gina' + TitleModeOnFirstPage = 'En Primera P'#225'gina' + EditDescription = 'Editar Descripci'#243'n' + Rename = 'Reno&mbrar' + SelectAll = 'Seleccionar Todo' + AddReport = 'A'#241'adir Informe' + AddAndDesignReport = 'A'#241'adir y D&ise'#241'ar Informe...' + NewCompositionCaption = 'Nueva Composici'#243'n' + Name0 = '&Nombre:' + Caption = '&T'#237'tulo:' + AvailableSources = '&Fuente(s) Disponible(s)' + OnlyComponentsInActiveForm = 'S'#243'lamente Componentes en Formulario &Activo' + OnlyComponentsWithoutLinks = 'S'#243'lamente Componentes &sin Enlaces Existentes' + ItemName = 'Nombre' + ItemDescription = 'Descripci'#243'n' + ConfirmDeleteItem = 'Quiere borrar los siguientes elementos: %s ?' + AddItemsToComposition = 'A'#241'adir Elementos a la Composici'#243'n' + HideAlreadyIncludedItems = 'Ocultar Elementos Ya &Incluidas' + AvailableItems = 'Elementos D&isponibles' + Items = '&Elementos' + Enable = '&Habilitar' + Options = 'Opciones' + Show = 'Mostrar' + PaintItemsGraphics = '&Pintar Elementos Gr'#225'ficos' + Description = 'Descripci'#243'n:' + NewReport = 'Nuevo Informe' + OnlySelected = 'S'#243'lo &Seleccionados' + ExtendedSelect = 'Selecci'#243'n &Extendida' + IncludeFixed = '&Incluir Fijos' + Fonts = 'Fuentes' + BtnFont = 'Fue&nte...' + BtnEvenFont = 'Fuente &Par...' + BtnOddFont = 'Fuente &Impar...' + BtnFixedFont = 'Fuente F&ijo...' + BtnGroupFont = 'Fuente de Gru&po...' + BtnChangeFont = 'Cambiar Fue&nte...' + Font = 'Fuente' + OddFont = 'Fuente Impar' + EvenFont = 'Fuente Par' + PreviewFont = 'Fuente Vista Prev.' + CaptionNodeFont = 'Fuente T'#237'tulo del Nivel' + GroupNodeFont = 'Fuente T'#237'tulos de Grupo' + GroupFooterFont = 'Fuente Pies de Grupo' + HeaderFont = 'Fuente Cabecera' + FooterFont = 'Fuente Pie' + BandFont = 'Fuente Groups' + Transparent = '&Transparente' + FixedTransparent = 'Transparente Fijo' + CaptionTransparent = 'T'#237'tulo Transparente' + GroupTransparent = 'Grupo Transparente' + GraphicAsTextValue = '(GRAPHIC)' + Colors = 'Colores' + Color = 'Co&lor:' + OddColor = 'Co&lor Impar:' + EvenColor = 'Color Par:' + PreviewColor = 'Color V.&Previa:' + BandColor = 'Color &Grupos:' + LevelCaptionColor = 'Color T'#237'tulo Ni&vel:' + HeaderColor = 'Color Cab&ecera:' + GroupNodeColor = 'Color &Nodo Grupo:' + GroupFooterColor = 'Color Pie &Grupo:' + FooterColor = 'Color P&ie:' + FixedColor = 'Color F&ijo:' + GroupColor = 'Color Gru&po:' + CaptionColor = 'Color T'#237'tulo:' + GridLinesColor = 'Color L'#237'nea &Rejilla:' + Bands = '&Grupos' + LevelCaptions = 'T'#237'tulo Niveles' + Headers = 'Cab&eceras' + Footers = 'P&ies&' + GroupFooters = 'Pies de &Grupos' + Preview = 'Vista Pre&via' + PreviewLineCount = 'N'#250'm.L'#237'neas V.Previa:' + AutoCalcPreviewLineCount = 'A&uto-Calcular L'#237'neas V.Previa' + Grid = 'Re&jilla&' + NodesGrid = '&Nodos de Rejilla' + GroupFooterGrid = 'Rejilla de Gru&pos Pie' + StateImages = 'Imagenes de E&stado' + Images = '&Imagenes' + TextAlign = '&Alineaci'#243'n Texto' + TextAlignHorz = 'Hori&zontal' + TextAlignVert = '&Vertical' + TextAlignLeft = 'Izquierda' + TextAlignCenter = 'Centrado' + TextAlignRight = 'Derecha' + TextAlignTop = 'Superior' + TextAlignVCenter = 'Centrado' + TextAlignBottom = 'Inferior' + BorderLines = 'L'#237'neas de &Borde' + HorzLines = 'L'#237'neas Hori&zontales' + VertLines = 'L'#237'neas &Verticales' + FixedHorzLines = 'L'#237'neas Horizontales Fi&jas' + FixedVertLines = 'L'#237'neas Verticales Fij&as' + FlatCheckMarks = 'Cajas de Verificaci'#243'n P&lanas' + CheckMarksAsText = '&Mostrar Cajas Verificaci'#243'n como Text' + RowAutoHeight = 'Altura &Fila Auto.' + EndEllipsis = '&Puntos Suspens.' + DrawBorder = '&Dibujar Borde' + FullExpand = '&Expandir Todo' + BorderColor = 'Color &Borde:' + AutoNodesExpand = 'Expandir N&odos' + ExpandLevel = 'Expandir &Niveles:' + FixedRowOnEveryPage = 'Filas Fijas en &Cada P'#225'gina' + DrawMode = '&Modo Dibujo:' + DrawModeStrict = 'Estricto' + DrawModeOddEven = 'Modo Filas Par/Impar' + DrawModeChess = 'Modo '#39'Ajedrez'#39 + DrawModeBorrow = 'Prestar de Fuente' + ThreeDEffects = 'Efectos 3D' + Use3DEffects = 'Usar Efectos &3D' + Soft3D = '3D "Suave"' + Behaviors = 'Comportamiento' + Miscellaneous = 'Miscelaneo' + OnEveryPage = 'En Cada P'#225'gina' + NodeExpanding = 'Expansi'#243'n de Nodos' + Selection = 'Selecci'#243'n' + NodeAutoHeight = 'Altura &Nodo Auto.' + TransparentGraphics = 'Gr'#225'ficos &Transparentes' + AutoWidth = 'An&chura Auto.' + DisplayGraphicsAsText = 'Mostrar Gr'#225'fico Como &Texto' + TransparentColumnGraphics = '&Gr'#225'ficos Transparentes' + BandsOnEveryPage = 'Grupos En C&ada P'#225'gina' + HeadersOnEveryPage = 'Cabeceras en Cada &P'#225'gina' + FootersOnEveryPage = 'Pies en Ca&da P'#225'gina' + Graphics = 'Gr'#225'ficos' + OutOfResources = 'Out of Resources' + FileAlreadyExists = 'Fichero "%s" Ya Existe.' + ConfirmOverWrite = 'Fichero "%s" ya existe. '#191'Sobreescribir?' + InvalidFileName = 'Nombre No V'#225'lido "%s"' + RequiredFileName = 'Entrar nombre de fichero.' + OutsideMarginsMessage = + 'Uno o m'#225's margenes est'#225'n fuera del area de impresi'#243'n de la p'#225'gin' + + 'a.' + OutsideMarginsMessage2 = + 'Uno o m'#225's margenes est'#225'n fuera del area de impresi'#243'n de la p'#225'gin' + + 'a.' + InvalidMarginsMessage = 'Uno o m'#225's margenes tiene valores no v'#225'lidos.' + InvalidMargins = 'Uno o m'#225's valores de los margenes no es v'#225'lido' + OutsideMargins = + 'Uno o m'#225's margenes se ha establecido fuera del area de impresi'#243'n' + + ' de la p'#225'gina' + ThereAreNowItemsForShow = 'No existen elementos en '#233'sta vista' + PageBackground = 'Fondo de P'#225'gina' + PenColor = 'Color del L'#225'piz' + FontColor = 'Color del Fuente' + BrushColor = 'Color de la Brocha' + HighLight = 'HighLight' + ColorBlack = 'Negro' + ColorDarkRed = 'Rojo Oscuro' + ColorRed = 'Rojo' + ColorPink = 'Rosa' + ColorRose = 'Rosado' + ColorBrown = 'Marr'#243'n' + ColorOrange = 'Naranja' + ColorLightOrange = 'Naranja Claro' + ColorGold = 'Oro' + ColorTan = 'Dorado' + ColorOliveGreen = 'Verde Oliva' + ColorDrakYellow = 'Amarillo Oscuro' + ColorLime = 'Lima' + ColorYellow = 'Amarillo' + ColorLightYellow = 'Amarillo Claro' + ColorDarkGreen = 'Verde Oscuro' + ColorGreen = 'Verde' + ColorSeaGreen = 'Verde Mar' + ColorBrighthGreen = 'Verde Florecente' + ColorLightGreen = 'Verde Claro' + ColorDarkTeal = 'VerdeAzul Oscuro' + ColorTeal = 'VerdeAzul' + ColorAqua = 'Aqua' + ColorTurquoise = 'Turquesa' + ColorLightTurquoise = 'Turquesa Claro' + ColorDarkBlue = 'Azul Oscuro' + ColorBlue = 'Azul' + ColorLightBlue = 'Azul Claro' + ColorSkyBlue = 'Azul Cielo' + ColorPaleBlue = 'Azul P'#225'lido' + ColorIndigo = 'Indigo' + ColorBlueGray = 'Azul Gris' + ColorViolet = 'Violeta' + ColorPlum = 'Granate' + ColorLavender = 'Lav'#225'nder' + ColorGray80 = 'Gris-80%' + ColorGray50 = 'Gris-50%' + ColorGray40 = 'Gris-40%' + ColorGray25 = 'Gris-25%' + ColorWhite = 'Blanco' + Texture = '&Textura' + Pattern = '&Dibujo' + Picture = '&Im'#225'gen' + Foreground = '&Primer Plano' + Background = '&Fondo' + Sample = 'Ejemplo:' + FEFCaption = 'Efectos de Relleno' + PaintMode = '&Modo Pintar' + PaintModeCenter = 'Centrar' + PaintModeStretch = 'Estirar' + PaintModeTile = 'Mosaico' + PaintModeProportional = 'Proporcional' + PatternGray5 = '5%' + PatternGray10 = '10%' + PatternGray20 = '20%' + PatternGray25 = '25%' + PatternGray30 = '30%' + PatternGray40 = '40%' + PatternGray50 = '50%' + PatternGray60 = '60%' + PatternGray70 = '70%' + PatternGray75 = '75%' + PatternGray80 = '80%' + PatternGray90 = '90%' + PatternLightDownwardDiagonal = 'Light downward diagonal' + PatternLightUpwardDiagonal = 'Light upward diagonal' + PatternDarkDownwardDiagonal = 'Dark downward diagonal' + PatternDarkUpwardDiagonal = 'Dark upward diagonal' + PatternWideDownwardDiagonal = 'Wide downward diagonal' + PatternWideUpwardDiagonal = 'Wide upward diagonal' + PatternLightVertical = 'Light vertical' + PatternLightHorizontal = 'Light horizontal' + PatternNarrowVertical = 'Narrow vertical' + PatternNarrowHorizontal = 'Narrow horizontal' + PatternDarkVertical = 'Dark vertical' + PatternDarkHorizontal = 'Dark horizontal' + PatternDashedDownward = 'Dashed downward' + PatternDashedUpward = 'Dashed upward' + PatternDashedVertical = 'Dashed vertical' + PatternDashedHorizontal = 'Dashed horizontal' + PatternSmallConfetti = 'Small confetti' + PatternLargeConfetti = 'Large confetti' + PatternZigZag = 'Zig zag' + PatternWave = 'Wave' + PatternDiagonalBrick = 'Diagonal brick' + PatternHorizantalBrick = 'Horizontal brick' + PatternWeave = 'Weave' + PatternPlaid = 'Plaid' + PatternDivot = 'Divot' + PatternDottedGrid = 'Dottedgrid' + PatternDottedDiamond = 'Dotted diamond' + PatternShingle = 'Shingle' + PatternTrellis = 'Trellis' + PatternSphere = 'Sphere' + PatternSmallGrid = 'Small grid' + PatternLargeGrid = 'Large grid' + PatternSmallCheckedBoard = 'Small checked board' + PatternLargeCheckedBoard = 'Large checked board' + PatternOutlinedDiamond = 'Outlined diamond' + PatternSolidDiamond = 'Solid diamond' + TextureNewSprint = 'Newsprint' + TextureGreenMarble = 'Green marble' + TextureBlueTissuePaper = 'Blue tissue paper' + TexturePapyrus = 'Papyrus' + TextureWaterDroplets = 'Water droplets' + TextureCork = 'Cork' + TextureRecycledPaper = 'Recycled paper' + TextureWhiteMarble = 'White marble' + TexturePinkMarble = 'Pink marble' + TextureCanvas = 'Canvas' + TexturePaperBag = 'Paper bag' + TextureWalnut = 'Walnut' + TextureParchment = 'Parchment' + TextureBrownMarble = 'Brown marble' + TexturePurpleMesh = 'Purple mesh' + TextureDenim = 'Denim' + TextureFishFossil = 'Fish fossil' + TextureOak = 'Oak' + TextureStationary = 'Stationary' + TextureGranite = 'Granite' + TextureBouquet = 'Bouquet' + TextureWonenMat = 'Woven mat' + TextureSand = 'Sand' + TextureMediumWood = 'Medium wood' + FSPCaption = 'Vista de Im'#225'gen' + Width = 'Altura' + Height = 'Altura' + BrushDlgCaption = 'Propiedades de la Brocha' + Style = 'E&stilo:' + ENFNCaption = 'Escoge Nombre de Fichero' + EnterNewFileName = 'Introduzca Nuevo Nombre de Fichero' + DefinePrintStylesCaption = 'Definir Estilos de Impresi'#243'n' + DefinePrintStylesTitle = 'E&stilos de Impresi'#243'n' + DefinePrintStylesWarningDelete = #191' Desea borrar "%s" ?' + DefinePrintStylesWarningClear = #191'Desea borrar todos los estilos existentes?' + Clear = 'E&liminar...' + CustomSize = 'Tama'#241'o Personalizado' + DefaultTray = 'Bandeja de Entrada' + InvalidPrintDevice = 'La impresora seleccionada no es v'#225'lida' + NotPrinting = 'La impresora no est'#225' imprimiendo' + Printing = 'Imprimiendo' + DeviceOnPort = '%s en %s' + PrinterIndexError = #205'ndice de Impresora fueera de rango' + NoDefaultPrintDevice = 'No hay ninguna impresora seleccionada' + AutoTextDialogCaption = 'Editar Entidades AutoTexto' + EnterAutoTextEntriesHere = 'Entrar Entidades A&utoTexto Aqu'#237':' + PrintDialogCaption = 'Imprimir' + PrintDialogPrinter = 'Impresora' + PrintDialogName = '&Nombre:' + PrintDialogStatus = 'Estado:' + PrintDialogType = 'Tipo:' + PrintDialogWhere = 'D'#243'nde:' + PrintDialogComment = 'Comentario:' + PrintDialogPrintToFile = 'A &Fichero' + PrintDialogPageRange = 'Rango de P'#225'g.' + PrintDialogAll = '&Todas' + PrintDialogCurrentPage = 'P'#225'g. A&ctual' + PrintDialogSelection = '&Selecci'#243'n' + PrintDialogPages = '&P'#225'ginas:' + PrintDialogRangeLegend = 'Entre el n'#250'mero de p'#225'gina o un rango de p'#225'ginas' + PrintDialogCopies = 'Copias' + PrintDialogNumberOfPages = 'N&'#250'mero de P'#225'g.:' + PrintDialogNumberOfCopies = 'N'#250'mero de &Copias:' + PrintDialogCollateCopies = 'In&tercalar Copias' + PrintDialogAllPages = 'Todas' + PrintDialogEvenPages = 'Pares' + PrintDialogOddPages = 'Impares' + PrintDialogPrintStyles = 'Est&ilos Impresi'#243'n' + PrintDialogOpenDlgTitle = 'Elije un Fichero' + PrintDialogOpenDlgAllFiles = 'Todos los Ficheros' + PrintDialogOpenDlgPrinterFiles = 'Ficheros de Impresora' + PrintDialogPageNumbersOutOfRange = 'N'#250'mero de p'#225'gina fuera de rango (%d - %d)' + PrintDialogInvalidPageRanges = 'Rango de p'#225'ginas no v'#225'lido' + PrintDialogRequiredPageNumbers = 'Introduzca n'#250'meros de p'#225'ginas' + PrintDialogNoPrinters = 'No printers are installed.' + PrintDialogInPrintingState = 'La impresora est'#225' ocupado.' + PrintDialogPSPaused = 'Pausado' + PrintDialogPSPendingDeletion = 'Pendiente Borrar' + PrintDialogPSBusy = 'Ocupado' + PrintDialogPSDoorOpen = 'Puerta Abierta' + PrintDialogPSError = 'Error' + PrintDialogPSInitializing = 'Inicializando' + PrintDialogPSIOActive = 'E/S Activo' + PrintDialogPSManualFeed = 'Alimentaci'#243'n Manual' + PrintDialogPSNoToner = 'Toner Terminado' + PrintDialogPSNotAvailable = 'No Disponible' + PrintDialogPSOFFLine = 'Fuera de L'#237'nea' + PrintDialogPSOutOfMemory = 'Memoria Agotada' + PrintDialogPSOutBinFull = 'Bandeja de Salida Llena' + PrintDialogPSPagePunt = 'Page Punt' + PrintDialogPSPaperJam = 'Papel Enganchado' + PrintDialogPSPaperOut = 'Sin Papel' + PrintDialogPSPaperProblem = 'Problema de Papel' + PrintDialogPSPrinting = 'Imprimiendo' + PrintDialogPSProcessing = 'Procesando' + PrintDialogPSTonerLow = 'Toner Bajo' + PrintDialogPSUserIntervention = 'Intervenci'#243'n del Usuario' + PrintDialogPSWaiting = 'Esperando' + PrintDialogPSWarningUp = 'Precalientamiento' + PrintDialogPSReady = 'Lista' + PrintDialogPSPrintingAndWaiting = 'Imprimiendo: %d documento(s) esperando' + LeftMargin = 'Margen Izquierdo' + TopMargin = 'Margin Superior' + RightMargin = 'Margin Derecho' + BottomMargin = 'Margin Inferior' + GutterMargin = 'Gutter' + HeaderMargin = 'Cabecera' + FooterMargin = 'Pie' + UnitsInches = '"' + UnitsCentimeters = 'cm' + UnitsMillimeters = 'mm' + UnitsPoints = 'pt' + UnitsPicas = 'pi' + UnitsDefaultName = 'Predeterminada' + UnitsInchesName = 'Pulgadas' + UnitsCentimetersName = 'Centimetros' + UnitsMillimetersName = 'Milimetros' + UnitsPointsName = 'Puntos' + UnitsPicasName = 'Picas' + PrintPreview = 'Vista Previa' + ReportDesignerCaption = 'Dise'#241'ador de Informes' + CompositionDesignerCaption = 'Dise'#241'ador de Composici'#243'n' + ComponentNotSupportedByLink = 'Component "%s" not supported by TdxComponentPrinter' + ComponentNotSupported = 'Component "%s" not supported by TdxComponentPrinter' + PrintDeviceNotReady = 'La impresora no est'#225' instalada o no est'#225' preparada' + UnableToGenerateReport = 'No se ha podido generar el informe' + PreviewNotRegistered = 'There is no registered preview form' + ComponentNotAssigned = '%s' + PrintDeviceIsBusy = 'Impresora ocupada' + PrintDeviceError = #161'La impresora ha encontrado un error!' + MissingComponent = 'Missing "Component" property' + DataProviderDontPresent = 'There are no Links with Assigned Component in Composition' + BuildingReport = 'Generando informe: Completado %d%%' + PrintingReport = + 'Imprimiendo Informe: Completado %d p'#225'gina(s). Pulse ESC to abort' + + 'ar...' + DefinePrintStylesMenuItem = 'Definir E&stilos de Impresi'#243'n...' + AbortPrinting = #191'Abortar impresi'#243'n?' + StandardStyle = 'Estilo Estandar' + FontStyleBold = 'Negrita' + FontStyleItalic = 'It'#225'lica' + FontStyleUnderline = 'Subrayado' + FontStyleStrikeOut = 'Tachado' + Pt = 'pt.' + NoPages = '[No p'#225'ginas]' + PageWidth = 'Anchura P'#225'g' + WholePage = 'Pag. Completa' + TwoPages = 'Dos P'#225'ginas' + FourPages = 'Cuatro P'#225'ginas' + WidenToSourceWidth = 'Ajustar a Anchura' + MenuBar = 'MenuBar' + StandardBar = 'Standard' + HeaderFooterBar = 'Header and Footer' + ShortcutMenusBar = 'Shortcut Menus' + AutoTextBar = 'AutoTexto' + MenuFile = '&Ficheros' + MenuFileDesign = '&Dise'#241'o...' + MenuFilePrint = '&Imprimir...' + MenuFilePageSetup = 'Con&fig. P'#225'gina...' + MenuPrintStyles = 'Estilos Impresi'#243'n' + MenuFileExit = '&Cerrar' + MenuEdit = '&Editar' + MenuEditCut = 'Cor&tar' + MenuEditCopy = '&Copiar' + MenuEditPaste = '&Pegar' + MenuEditDelete = '&Borrar' + MenuEditFind = '&Buscar...' + MenuEditFindNext = 'Buscar Si&guiente' + MenuEditReplace = '&Reemplazar...' + MenuLoad = '&Cargar...' + MenuPreview = 'V. Pre&via...' + MenuInsert = '&Insertar' + MenuInsertAutoText = '&AutoTexto' + MenuInsertEditAutoTextEntries = 'AutoTe&xto...' + MenuInsertAutoTextEntries = '&(Lista de Entradas AutoTexto)' + MenuInsertAutoTextEntriesSubItem = 'In&sertar AutoTexto' + MenuInsertPageNumber = 'N'#250'm &P'#225'g.' + MenuInsertTotalPages = '&N'#250'm. de P'#225'g.' + MenuInsertPageOfPages = 'N'#250'm de P'#225'&g. de P'#225'ginas' + MenuInsertDateTime = 'Fechay Hora' + MenuInsertDate = '&Fecha' + MenuInsertTime = '&Hora' + MenuInsertUserName = 'Nombre &Usuario' + MenuInsertMachineName = 'Nombre &Maquina' + MenuView = '&Vista' + MenuViewMargins = '&Margenes' + MenuViewFlatToolBarButtons = 'Botones &Planos' + MenuViewLargeToolBarButtons = 'Botones &Grandes' + MenuViewMarginsStatusBar = 'Barra de M&argenes' + MenuViewPagesStatusBar = 'Barra de E&stado' + MenuViewToolBars = '&Herramientas' + MenuViewPagesHeaders = '&Cabeceras de P'#225'gina' + MenuViewPagesFooters = '&Pies de P'#225'ginas' + MenuViewSwitchToLeftPart = 'Switch to Left Part' + MenuViewSwitchToRightPart = 'Switch to Right Part' + MenuViewSwitchToCenterPart = 'Switch to Center Part' + MenuViewHFSwitchHeaderFooter = 'Mo&strar Cabecera/Pie' + MenuViewHFClose = '&Cerrar' + MenuZoom = '&Aumentar' + MenuZoomPercent100 = 'Porcien &100' + MenuZoomPageWidth = '&Anchura P'#225'gina' + MenuZoomWholePage = 'P'#225'gina C&ompleta' + MenuZoomTwoPages = '&Dos P'#225'ginas' + MenuZoomFourPages = '&Cuatro P'#225'ginas' + MenuZoomMultiplyPages = 'P'#225'ginas &M'#250'ltiples' + MenuZoomWidenToSourceWidth = 'Aju&star a Anchura' + MenuZoomSetup = '&Config...' + MenuPages = '&P'#225'ginas' + MenuGotoPage = '&Saltar' + MenuGotoPageFirst = '&Primera P'#225'g.' + MenuGotoPagePrev = 'P'#225'g. &Anteror' + MenuGotoPageNext = 'Pr'#243'&xima P'#225'g.' + MenuGotoPageLast = #218'l&tima P'#225'g.' + MenuActivePage = 'P'#225'g. Acti&va:' + MenuFormat = 'F&ormato' + MenuFormatHeaderAndFooter = '&Cabeceras y Pies' + MenuFormatAutoTextEntries = 'Entradas &AutoTexto...' + MenuFormatDateTime = 'Fecha y &Hora...' + MenuFormatPageNumbering = '&Numeraci'#243'n P'#225'ginas...' + MenuFormatPageBackground = 'Fon&do...' + MenuFormatShrinkToPage = '&Reducir a P'#225'g.' + MenuShowEmptyPages = 'Mostrar P'#225'g. &Vacias' + MenuFormatHFBackground = 'Fondo de Cabecera/Pie...' + MenuFormatHFClear = 'Vaciar Texto' + MenuTools = '&Herramientas' + MenuToolsCustomize = '&Personalizar...' + MenuToolsOptions = '&Opciones...' + MenuHelp = 'A&yuda' + MenuHelpTopics = '&Temas de Ayuda...' + MenuHelpAbout = '&Acerca de...' + MenuShortcutPreview = 'V.Previa' + MenuShortcutAutoText = 'AutoTexto' + MenuBuiltInMenus = 'Men'#250's Incorporados' + MenuShortCutMenus = 'Men'#250's de Atajos' + MenuNewMenu = 'Men'#250' Nuevo' + HintFileDesign = 'Dise'#241'ar Informe' + HintFilePrint = 'Imprimir' + HintFilePrintDialog = 'Configuarar la Impresora' + HintFilePageSetup = 'Configurar la P'#225'gina' + HintFileExit = 'Cerrar Vista Previa' + HintEditFind = 'Buscar' + HintEditFindNext = 'Buscar Siguiente' + HintEditReplace = 'Reemplazar' + HintInsertEditAutoTextEntries = 'Editar Entradas AutoTexto' + HintInsertPageNumber = 'Insertar N'#250'mero P'#225'gina' + HintInsertTotalPages = 'Insertar N'#250'mero de P'#225'ginas' + HintInsertPageOfPages = 'Insertar P'#225'gina N'#250'mero de P'#225'ginas' + HintInsertDateTime = 'Insertar Fecha y Hora' + HintInsertDate = 'Insertar Fecha' + HintInsertTime = 'Insert Hora' + HintInsertUserName = 'Insertar Nombre Usuario' + HintInsertMachineName = 'Insertar Nombre Maquina' + HintViewMargins = 'Ver Margenes' + HintViewLargeButtons = 'Ver Botones Grandes' + HintViewMarginsStatusBar = 'Ver Barra de Esatdo de Margenes' + HintViewPagesStatusBar = 'Ver Barra de Estado de P'#225'gina' + HintViewPagesHeaders = 'Vee Cabecera de P'#225'gina' + HintViewPagesFooters = 'Ver Pie de P'#225'gina' + HintViewSwitchToLeftPart = 'Cambiar a Cabecera/Pie Izquierda' + HintViewSwitchToRightPart = 'Cambiar a Cabecera/Pie Derecha' + HintViewSwitchToCenterPart = 'Cambiar a Cabecera/Pie Centrada' + HintViewHFSwitchHeaderFooter = 'Cambiar a Cabecera y Pie' + HintViewHFClose = 'Cerrar' + HintViewZoom = 'Aumentar' + HintZoomPercent100 = 'Aumentar al 100%' + HintZoomPageWidth = 'Aumentar a Anchura de P'#225'gina' + HintZoomWholePage = 'P'#225'gina Completa' + HintZoomTwoPages = 'Dos P'#225'ginas' + HintZoomFourPages = 'Cuatro P'#225'ginas' + HintZoomMultiplyPages = 'P'#225'ginas M'#250'ltiples' + HintZoomWidenToSourceWidth = 'Ajustar a la Anchura' + HintZoomSetup = 'Introducir Factor de Aumento' + HintFormatDateTime = 'Formato de Fecha y Hora' + HintFormatPageNumbering = 'Formato de N'#250'mero de P'#225'gina' + HintFormatPageBackground = 'Fondo' + HintFormatShrinkToPage = 'Reducir a P'#225'gina' + HintFormatHFBackground = 'Fondo de Cabecera/Pie' + HintFormatHFClear = 'Vaciar Texto Cabecera/Pie' + HintGotoPageFirst = 'Primera P'#225'gina' + HintGotoPagePrev = 'P'#225'gina Anterior' + HintGotoPageNext = 'Pr'#243'xima P'#225'gina' + HintGotoPageLast = #218'ltima P'#225'gina' + HintActivePage = 'P'#225'gina Activa' + HintToolsCustomize = 'Personalizar Herramientas' + HintToolsOptions = 'Opciones' + HintHelpTopics = 'Temas de Ayuda' + HintHelpAbout = 'Acerca de' + PopupMenuLargeButtons = 'Botones &Grandes' + PopupMenuFlatButtons = 'Botones &Planos' + PaperSize = 'Tama'#241'o Papel' + Status = 'Estado' + StatusReady = 'Lista' + StatusPrinting = 'Imprimiendo. %d p'#225'gina(s) terminada(s)' + StatusGenerateReport = 'Generando Informe. %d%% completado.' + HintDoubleClickForChangePaperSize = 'Doble Clic para Cambiar el Tama'#241'o de P'#225'gina' + HintDoubleClickForChangeMargins = 'Doble Clic para Cambiar Margenes' + DTFormatsCaption = 'Fecha y Hora' + DTFormatsAvailableDateFormats = 'Formatos de &Fecha Disponibes:' + DTFormatsAvailableTimeFormats = 'Formatos de &Hora Disponibles:' + DTFormatsAutoUpdate = 'Act. &Autom'#225'tica' + DTFormatsChangeDefaultFormat = + 'Confirme que desea cambiar el formato de fecha y hora al "%s" -' + + ' "%s" ?' + PNFormatsCaption = 'Formato de N'#250'mero de P'#225'gina' + PageNumbering = 'Numeraci'#243'n de P'#225'ginas' + PNFormatsNumberFormat = '&Format N'#250'mero:' + PNFormatsContinueFromPrevious = '&Continuar desde '#218'ltima Secci'#243'n' + PNFormatsStartAt = 'Empezar &En:' + PNFormatsChangeDefaultFormat = + 'Confirme que desea cambiar el formato de numeraci'#243'n de p'#225'ginas a' + + 'l "%s" ?' + ZoomDlgCaption = 'Aumentar' + ZoomDlgZoomTo = 'Aumentar a' + ZoomDlgPageWidth = '&Ancho P'#225'g.' + ZoomDlgWholePage = 'P'#225'g.C&ompleta' + ZoomDlgTwoPages = '&Dos P'#225'ginas' + ZoomDlgFourPages = '&Cuatro P'#225'g.' + ZoomDlgManyPages = '&Varias P'#225'g.:' + ZoomDlgPercent = 'P&orcien:' + ZoomDlgPreview = 'Vista' + ZoomDlgFontPreview = '10pt Times New Romam' + ZoomDlgFontPreviewString = 'AaBbCcDdEeXxYyZz' + Pages = 'P'#225'ginas' + Cancel = 'Cancelar' + PreferenceDlgCaption = 'Opciones' + PreferenceDlgTab1 = '&General' + PreferenceDlgShow = '&Mostrar' + PreferenceDlgMargins = '&Margenes' + PreferenceDlgMarginsHints = 'A&yudas Margenes' + PreferenceDlgMargingWhileDragging = 'Ayudas Margins con A&rrastre' + PreferenceDlgLargeBtns = 'Botones &Grandes para Barras' + PreferenceDlgFlatBtns = 'Botones &Planos para Barras' + PreferenceDlgMarginsColor = '&Color Margenes:' + PreferenceDlgMeasurementUnits = '&Unidades de Medida:' + PreferenceDlgSaveForRunTimeToo = 'Gua&rdar en Ejecucci'#243'n tambien' + PreferenceDlgZoomScroll = 'Despla&zamiento con IntelliMouse' + PreferenceDlgZoomStep = 'Au&mento:' + CloneStyleCaptionPrefix = 'Copia (%d) de' + InvalideStyleCaption = 'Nombre de estilo "%s" existente. Por favor, introduzca otro.' + PageSetupCaption = 'Configuraci'#243'n de la P'#225'gina' + StyleName = '&Nombre Estilo:' + Page = '&P'#225'gina' + Margins = '&Margenes' + HeaderFooter = '&Cabecera\Pie' + Scaling = '&Escala' + Paper = 'Papel' + PaperType = 'T&ipo' + PaperDimension = 'Dimensi'#243'nes' + PaperWidth = '&Anchura:' + PaperHeight = 'A<ura:' + PaperSource = 'Bande&ja' + Orientation = 'Orientaci'#243'n' + Portrait = 'N&ormal' + Landscape = '&Apaisado' + PrintOrder = 'Orden de Impresi'#243'n' + DownThenOver = '&Abajo, derecha' + OverThenDown = '&Derecha, abajo' + Shading = 'Sombreado' + PrintUsingGrayShading = 'Imprimir usando sombreado &gris' + CenterOnPage = 'Centrar' + Horizontally = 'Hori&zontal' + Vertically = '&Vertical' + Header = 'Cabecera' + BtnHeaderFont = '&Fuente...' + BtnHeaderBackground = '&Fondo' + Footer = 'Pie' + BtnFooterFont = 'Fue&nte...' + BtnFooterBackground = 'F&ondo' + CaptionTop = '&Sup.:' + CaptionLeft = '&Izqu.:' + CaptionRight = '&Derecha:' + CaptionBottom = '&Inferior:' + Header2 = '&Cabec.:' + Footer2 = '&Pie:' + Alignment = 'Alineamiento' + VertAlignment = 'Alineamiento Vertical' + ReverseOnEvenPages = 'Al &rev'#233's en p'#225'ginas pares' + AdjustTo = '&Ajustar a:' + FitTo = 'P'#225'&ginas:' + PercentOfNormalSize = '% tama'#241'o normal' + PagesWideBy = 'p'#225'g(s) de &ancho' + Tall = 'de a<o' + XOfY = 'De' + LastPrinted = #218'ltima Impresi'#243'n' + FileName = 'Fichero' + FileNameAndPath = 'Fichero y camino' + PrintedBy = 'Impreso por' + PrintedOn = 'Impreso el' + CreatedBy = 'Creado por' + CreatedOn = 'Creado el' + Confidential = 'Confidencial' + HFFunctionNameUnknown = 'Desconocido' + HFFunctionNamePageNumber = 'N'#250'm. P'#225'gina' + HFFunctionNameTotalPages = 'P'#225'g. Totales' + HFFunctionNamePageOfPages = 'P'#225'g. # de P'#225'gs. #' + HFFunctionNameDateTime = 'Fecha y Hora' + HFFunctionNameDate = 'Fecha' + HFFunctionNameTime = 'Hora' + HFFunctionNameUserName = 'Nombre Usuario' + HFFunctionNameMachineName = 'Nombre Maquina' + HFFunctionHintPageNumber = 'Page Number' + HFFunctionHintTotalPages = 'Total Pages' + HFFunctionHintPageOfPages = 'Page # of Pages #' + HFFunctionHintDateTime = 'Date and Time Printed' + HFFunctionHintDate = 'Date Printed' + HFFunctionHintTime = 'Time Printed' + HFFunctionHintUserName = 'User Name' + HFFunctionHintMachineName = 'Machine Name' + HFFunctionTemplatePageNumber = 'Page #' + HFFunctionTemplateTotalPages = 'Total Pages' + HFFunctionTemplatePageOfPages = 'Page # of Pages #' + HFFunctionTemplateDateTime = 'Date & Time Printed' + HFFunctionTemplateDate = 'Date Printed' + HFFunctionTemplateTime = 'Time Printed' + HFFunctionTemplateUserName = 'User Name' + HFFunctionTemplateMachineName = 'Machine Name' + January = 'Enero' + February = 'Febrero' + March = 'Marzo' + April = 'Abril' + May = 'Mayo' + June = 'Junio' + July = 'Julio' + August = 'Agosto' + September = 'Septiembre' + October = 'Octubre' + November = 'Noviembre' + December = 'Diciembre' + East = 'Este' + West = 'Oeste' + South = 'Sur' + North = 'Norte' + Total = 'Total' + Plan = 'Plan' + SwimmingPool = 'Swimming-pool' + Administration = 'Administration' + Park = 'Park' + CarParking = 'Car-Parking' + CorporateHeadquarters = 'Corporate' + SalesAndMarketing = 'Sales and' + Engineering = 'Engineering' + FieldOfficeCanada = 'Field Office:' + OrderNoCaption = 'OrderNo' + NameCaption = 'Name' + CountCaption = 'Count' + CompanyCaption = 'Company' + AddressCaption = 'Address' + PriceCaption = 'Price' + CashCaption = 'Cash' + Name1 = 'Jennie Valentine' + Name2 = 'Sam Hill' + Company1 = 'Jennie Inc.' + Company2 = 'Daimler-Chrysler AG' + Address1 = '123 Home Lane' + Address2 = '9333 Holmes Dr.' + CountIs = 'Count is: %d' + Regular = 'Regular' + Irregular = 'Irregular' + TLBand = 'Item Data' + TLColumnName = 'Name' + TLColumnAxisymmetric = 'Axisymmetric' + TLColumnItemShape = 'Shape' + ItemShapeAsText = '(Graphic)' + Item1Name = 'Cone' + Item2Name = 'Cylinder' + Item3Name = 'Pyramid' + Item4Name = 'Box' + Item5Name = 'Free Surface' + Item2Description = 'Axisymmetric geometry figure' + Item3Description = 'Axisymmetric geometry figure' + Item4Description = 'Acute-angled geometry figure' + Item7Description = 'Simple extrusion surface' + PatternIsNotRegistered = 'Pattern "%s" is not registered' + SolidEdgePattern = 'Solid' + ThinSolidEdgePattern = 'Medium Solid' + MediumSolidEdgePattern = 'Medium Solid' + ThickSolidEdgePattern = 'Thick Solid' + DottedEdgePattern = 'Dotted' + DashedEdgePattern = 'Dashed' + DashDotDotEdgePattern = 'Dash Dot Dot' + DashDotEdgePattern = 'Dash Dot' + SlantedDashDotEdgePattern = 'Slanted Dash Dot' + MediumDashDotDotEdgePattern = 'Medium Dash Dot Dot' + HairEdgePattern = 'Hair' + MediumDashDotEdgePattern = 'Medium Dash Dot' + MediumDashedEdgePattern = 'Medium Dashed' + DoubleLineEdgePattern = 'Double Line' + SolidFillPattern = 'Solid' + Gray75FillPattern = '75% Gray' + Gray50FillPattern = '50% Gray' + Gray25FillPattern = '25% Gray' + Gray125FillPattern = '12.5% Gray' + Gray625FillPattern = '6.25% Gray' + HorizontalStripeFillPattern = 'Horizontal Stripe' + VerticalStripeFillPattern = 'Vertical Stripe' + ReverseDiagonalStripeFillPattern = 'Reverse Diagonal Stripe' + DiagonalStripeFillPattern = 'Diagonal Stripe' + DiagonalCrossHatchFillPattern = 'Diagonal Cross Hatch' + ThickCrossHatchFillPattern = 'Thick Cross Hatch' + ThinHorizontalStripeFillPattern = 'Thin Horizontal Stripe' + ThinVerticalStripeFillPattern = 'Thin Vertical Stripe' + ThinReverseDiagonalStripeFillPattern = 'Thin Reverse Diagonal Stripe' + ThinDiagonalStripeFillPattern = 'Thin Diagonal Stripe' + ThinHorizontalCrossHatchFillPattern = 'Thin Horizontal Cross Hatch' + ThinDiagonalCrossHatchFillPattern = 'Thin Diagonal Cross Hatch' + ShowRowAndColumnHeadings = '&Row and column headings' + ShowGridLines = 'GridLines' + SuppressSourceFormats = '&Suppress Source Formats' + RepeatHeaderRowAtTop = 'Repeat header row at top' + DataToPrintDoesnotExist = + 'Can not activate ReportLink because PrintingSystem did not find ' + + 'anything to print.' + JanuaryShort = 'Ene' + FebruaryShort = 'Feb' + MarchShort = 'Mar' + AprilShort = 'Abril' + MayShort = 'Mayo' + JuneShort = 'Jun' + JulyShort = 'Jul' + AugustShort = 'Ago' + SeptemberShort = 'Sept' + OctoberShort = 'Oct' + NovemberShort = 'Nov' + DecemberShort = 'Dic' + TechnicalDepartment = 'Technical Department' + SoftwareDepartment = 'Software Department' + SystemProgrammers = 'System Programmers' + EndUserProgrammers = 'EndUser Programmers' + BetaTesters = 'Beta Testers' + HumanResourceDepartment = 'Human Resource Department' + TreeLines = '&L'#237'neas'#193'rbol' + TreeLinesColor = 'Colore L'#237'neas '#193'rbol:' + ExpandButtons = 'Botones E&xpansi'#243'n' + CheckMarks = 'Cajas Verificaci'#243'n' + TreeEffects = 'Efectos '#193'rbol' + Appearance = 'Apariencia' + CarLevelCaption = 'Coches' + ManufacturerBandCaption = 'Manufacturer Data' + ModelBandCaption = 'Car Data' + ManufacturerNameColumnCaption = 'Name' + ManufacturerLogoColumnCaption = 'Logo' + ManufacturerCountryColumnCaption = 'Country' + CarModelColumnCaption = 'Model' + CarIsSUVColumnCaption = 'SUV' + CarPhotoColumnCaption = 'Photo' + CarManufacturerName1 = 'BMW' + CarManufacturerName2 = 'Ford' + CarManufacturerName3 = 'Audi' + CarManufacturerName4 = 'Land Rover' + CarManufacturerCountry1 = 'Germany' + CarManufacturerCountry2 = 'United States' + CarManufacturerCountry3 = 'Germany' + CarManufacturerCountry4 = 'United Kingdom' + CarModel1 = 'X5 4WD' + CarModel2 = 'Excursion' + CarModel3 = 'S8 Quattro' + CarModel4 = 'G4 Challenge' + True = 'True' + False = 'False' + Auto = 'Auto' + Custom = 'Personal.' + Env = 'Env' + LookAndFeelFlat = 'Plano' + LookAndFeelStandard = 'Estandar' + LookAndFeelUltraFlat = 'UltraPlano' + ViewTab = 'Vista' + BehaviorsTab = 'Comportamiento' + PreviewTab = 'Vista Previa' + CardsTab = 'Fichas' + Formatting = 'Formato' + LookAndFeel = 'Aspecto' + LevelCaption = '&T'#237'tulo' + FilterBar = 'Barra de &Filtro' + Refinements = 'Perfeccionamiento' + ProcessSelection = 'Procesar &Selecci'#243'n' + ProcessExactSelection = 'Procesar Selecci'#243'n E&xacta' + Expanding = 'Despliege' + Groups = '&Grupos' + Details = '&Detalles' + StartFromActiveDetails = 'Empieza desde Detalles Activas' + OnlyActiveDetails = 'S'#243'lo Detalles Activos' + Visible = '&Visible' + PreviewAutoHeight = 'Altura A&utom'#225'tica' + PreviewMaxLineCount = 'L'#237'neas &M'#225'ximas:' + Sizes = 'Tama'#241'os' + KeepSameWidth = 'Manten.Misma Anchura' + KeepSameHeight = 'Manten.Misma Altura' + Framing = 'Marco' + Spacing = 'Espacios' + Shadow = 'Sombra' + Depth = '&Profundidad:' + Position = '&Posici'#243'n' + Positioning = 'Posicionando' + Horizontal = 'H&orizontal:' + Vertical = 'V&ertical:' + SummaryFormat = 'Recuento = 0' + CannotUseOnEveryPageMode = 'Cannot Use OnEveryPage Mode' + IncorrectBandHeadersState = 'Cannot Use BandHeaders OnEveryPage Mode' + IncorrectHeadersState = 'Cannot Use Headers OnEveryPage Mode' + IncorrectFootersState = 'Cannot Use Footers OnEveryPage Mode' + TPicture = 'TPicture' + Copy = '&Copiar' + Save = '&Salvar...' + BaseStyle = 'Estilo Base' + Rectangle = 'Rectangle' + Square = 'Square' + Ellipse = 'Ellipse' + Circle = 'Circle' + RoundRect = 'RoundRect' + RoundSquare = 'RoundSquare' + HorizontalFillPattern = 'Horizontal' + VerticalFillPattern = 'Vertical' + FDiagonalFillPattern = 'FDiagonal' + BDiagonalFillPattern = 'BDiagonal' + CrossFillPattern = 'Cross' + DiagCrossFillPattern = 'DiagCros' + CyclicIDReferences = 'Cyclic ID references %s and %s' + LoadReportDataToFileTitle = 'Cargar Informe' + SaveReportDataToFileTitle = 'Salvar Informe Como' + InvalidExternalStorage = 'Almacenamiento Externo No V'#225'lido' + LinkIsNotIncludedInUsesClause = 'ReportFile contains ReportLink "%0:s"' + InvalidStorageVersion = 'Versi'#243'n de Almacenamiento no V'#225'lido: %d' + PSReportFiles = 'Ficheros de Informes' + ReportFileLoadError = 'No se pudo cargar el informe "%s".' + None = '(Ninguno)' + ReportDocumentIsCorrupted = '(El fichero no es un informe o esta corrupto)' + CloseExplorerHint = 'Cerrar Explorador' + ExplorerCaption = 'Explorador' + ExplorerRootFolderCaption = 'Ra'#237'z' + NewExplorerFolderItem = 'Nueva Carpeta' + CopyOfItem = 'Copia de' + ReportExplorer = 'Explorer de Informes' + DataLoadErrorText = 'No se pudo cargar los datos del informe' + DBBasedExplorerItemDataLoadError = 'No se pudo cargar los datos.' + FileBasedExplorerItemDataLoadError = 'No se pudo cargar los datos.' + DeleteNonEmptyFolderMessageText = 'La carpeta "%s" no est'#225' vacia. A'#250'n as'#237' '#191'desea eliminarlo?' + DeleteFolderMessageText = 'Borrar Carpeta "%s" ?' + DeleteItemMessageText = 'Borrar elemento "%s" ?' + CannotRenameFolderText = + 'Cannot rename folder "%s". A folder with name "%s" already exist' + + 's. Specify a different name.' + CannotRenameItemText = + 'Cannot rename item "%s". An item with name "%s" already exists. ' + + 'Specify a different name.' + OverwriteFolderMessageText = 'This folder "%s" already contains folder named "%s".' + OverwriteItemMessageText = 'This Folder "%s" already contains item named "%s".' + SelectNewRoot = 'Select new Root Directory where the Reports will be stored' + InvalidFolderName = 'Nombre de Carpeta no V'#225'lida "%s"' + InvalidReportName = 'Nombre de Informe no V'#225'lido "%s"' + ExplorerBar = 'Explorador' + MenuFileSave = '&Salvar' + MenuFileSaveAs = 'S&alvar Como...' + MenuFileLoad = '&Cargar' + MenuFileClose = '&Descargar' + HintFileSave = 'Salvar Informe' + HintFileSaveAs = 'Salvar Informe Como' + HintFileLoad = 'Cargar Informe' + HintFileClose = 'Descargar Informe' + MenuExplorer = 'E&xplorador' + MenuExplorerCreateFolder = 'Crear &Carpeta' + MenuExplorerDelete = '&Borrar...' + MenuExplorerRename = 'Reno&mbrar' + MenuExplorerProperties = '&Propiedades...' + MenuExplorerRefresh = 'Refrescar' + MenuExplorerChangeRootPath = 'Cambiar Ra'#237'z...' + MenuExplorerSetAsRoot = 'Establecer Como Ra'#237'z' + MenuExplorerGoToUpOneLevel = 'Subir Un Nivel' + HintExplorerCreateFolder = 'Crear Nueva Carpeta' + HintExplorerDelete = 'Borrar' + HintExplorerRename = 'Renombrar' + HintExplorerProperties = 'Propiedades' + HintExplorerRefresh = 'Refrescar' + HintExplorerChangeRootPath = 'Cambiar Ra'#237'z' + HintExplorerSetAsRoot = 'Establecder Carpeta Actual Como Ra'#237'z' + HintExplorerGoToUpOneLevel = 'Subir Un Nivel' + MenuViewExplorer = 'E&xplorador' + HintViewExplorer = 'Mostar Explorador' + Summary = 'Resumen' + Creator = 'Creado&r:' + CreationDate = 'Crea&do:' + MenuViewThumbnails = 'Miniat&uras' + HintViewThumbnails = 'Mostar Miniaturas' + MenuFormatTitle = 'T&'#237'tulo...' + HintFormatTitle = 'Formatear T'#237'tulo del Informe' + Half = 'Medio' + PredefinedFunctions = 'Funciones Predefinidos' + ZoomParameters = '&Par'#225'metros de Aumento' + WrapData = 'Doblar Datos' + MenuShortcutExplorer = 'Explorador' + ExplorerToolBar = 'Explorador' + MenuThumbnailsSmall = 'Miniaturas &Peque'#241'as' + MenuThumbnailsLarge = 'Miniaturas &Grandes' + MenuShortcutThumbnails = 'Miniaturas' + Buttons = 'Botones' + BtnHeadersFont = 'Fuente &Cabeceras...' + HeadersTransparent = 'Cabeceras Transparentes' + HintListViewDesignerMessage = 'Most Options Are Being Taken Into Account Only In Detailed View' + ColumnHeaders = 'Cabeceras de &Columnas' + ReportGroupNullLookAndFeel = 'Null' + ReportGroupStandardLookAndFeel = 'Standard' + ReportGroupOfficeLookAndFeel = 'Office' + ReportGroupWebLookAndFeel = 'Web' + LayoutGroupDefaultCaption = 'Layout Group' + LayoutItemDefaultCaption = 'Layout Item' + CarManufacturerName5 = 'Volkswagen' + CarManufacturerCountry5 = 'Germany' + CarModel5 = 'Golf GTI' + LuxurySedans = 'Luxury Sedans' + CarManufacturer = 'Manufacturer' + CarModel = 'Model' + CarEngine = 'Engine' + CarTransmission = 'Transmission' + CarTires = 'Tires' + Volvo760V12Manufacturer = 'BMW' + Volvo760V12Model = '760Li V12' + Volvo760V12Engine = + '6.0L DOHC V12 438 HP 48V DI Valvetronic 12-cylinder engine with ' + + '6.0-liter displacement, dual overhead cam valvetrain' + Volvo760V12Transmission = 'Elec 6-Speed Automatic w/Steptronic' + Volvo760V12Tires = + 'P245/45R19 Fr - P275/40R19 Rr Performance. Low Profile tires wit' + + 'h 245mm width, 19.0" rim' + BandHeaderStyle = 'CabeceraGrupo' + CaptionStyle = 'T'#237'tulo' + CardCaptionRowStyle = 'T'#237'tulo Fila Fichas' + CardRowCaptionStyle = 'T'#237'tulo Fila Fichas' + CategoryStyle = 'Categor'#237'a' + ContentStyle = 'Contenido' + ContentEvenStyle = 'Contenido Filas Pares' + ContentOddStyle = 'Contenido Filas Impares' + FilterBarStyle = 'Barra de Filto' + FooterStyle = 'Pie' + FooterRowStyle = 'Pie de Fila' + GroupStyle = 'Grupo' + HeaderStyle = 'Cabecera' + IndentStyle = 'Indentaci'#243'n' + PreviewStyle = 'Vista Previa' + SelectionStyle = 'Selecci'#243'n' + Styles = 'Estilos' + StyleSheets = 'Hojas de Estilos' + BtnTexture = '&Textura...' + BtnTextureClear = 'Elimin&ar' + BtnColor = 'Co&lor...' + BtnSaveAs = 'Salvar &Como...' + BtnRename = '&Renombrar...' + LoadBitmapDlgTitle = 'Cargar Imagen' + DeleteStyleSheet = 'Borrar Hoja de Estilos con Nombre "%s"?' + UnnamedStyleSheet = 'SinNombre' + CreateNewStyleQueryNamePrompt = 'Entre un Nombre de Hoja de Estilo:' + StyleSheetNameAlreadyExists = 'Hoja de Estilo "%s" Ya Existe' + CannotLoadImage = 'No se pudo cargar el imagen "%s"' + UseNativeStyles = '&Usar Estilo Nativo' + SuppressBackgroundBitmaps = '&Suprimir Texturas de Fondo' + ConsumeSelectionStyle = 'Consumir Estilos de Selecci'#243'n' + Size = 'Tama'#241'o' + Levels = 'Niveles' + Unwrap = '&Desdoblar' + UnwrapTopLevel = 'Desdoblar Nivel Superior' + RiseActiveToTop = 'Subir Nivel Activo al Princ'#237'pio' + CannotUseOnEveryPageModeInAggregatedState = 'No se puede usar modo "EnCadaP'#225'gina"' + Pagination = 'Paginaci'#243'n' + ByBands = 'Por Grupos' + ByColumns = 'Por Columnas' + ByRows = 'Por Filas' + ByTopLevelGroups = 'Por Grupos de Primer Nivel' + OneGroupPerPage = 'Un Grupo por P'#225'gina' + Borders = 'Margenes' + ExplicitlyExpandNodes = 'Expandir Expl'#237'citamente los Nodos' + Nodes = '&Nodos' + Separators = 'Separadores' + Thickness = 'Grueso' + TLIncorrectHeadersState = 'No se puede usar el modo EnCadaP'#225'gina' + Rows = '&Filas' + BestFit = 'Ajuste &'#211'ptimo' + KeepSameRecordWidths = '&Mantaner Anchuras Iguales' + WrapRecords = '&Doblar Registros' + ByWrapping = 'Doblando' + OneWrappingPerPage = 'Doblando Uno por P'#225'gina' + PaginateByControlDetails = 'Detalles de Controles' + PaginateByControls = 'Controles' + PaginateByGroups = 'Grupos' + PaginateByItems = 'Elementos' + ControlsPlace = 'Enplazamiento de Controles' + ExpandHeight = 'Expandir Altura' + ExpandWidth = 'Expandir Anchura' + ShrinkHeight = 'Contraer Altura' + ShrinkWidth = 'Contraer Anchura' + CheckAll = 'Check &All' + CheckAllChildren = 'Check All &Children' + ControlsTab = 'Controls' + ExpandAll = 'E&xpand All' + HiddenControlsTab = 'Hidden Controls' + ReportLinksTab = 'Aggregated Designers' + Transparents = 'Transparents' + UncheckAllChildren = 'Uncheck &All Children' + Root = '&Ra'#237'z' + RootBorders = 'Root &Borders' + Controls = '&Controls' + Containers = 'C&ontainers' + HideCustomContainers = '&Hide Custom Containers' + Bytes = 'Bytes' + KiloBytes = 'KB' + MegaBytes = 'MB' + GigaBytes = 'GB' + Left = 224 + Top = 16 + end +end diff --git a/Source/Base/uDataModuleBase.pas b/Source/Base/uDataModuleBase.pas new file mode 100644 index 00000000..812a1627 --- /dev/null +++ b/Source/Base/uDataModuleBase.pas @@ -0,0 +1,125 @@ +unit uDataModuleBase; + +interface + +uses + Controls, PngImageList, JvComponent, JvNavigationPane, TBXSwitcher, + TBXOffice2003Theme, Classes, ImgList, + DataAbstract4_Intf, uDADataTable, JvAppStorage, JvAppRegistryStorage, cxintl, + JvComponentBase, cxIntlPrintSys3; + +type + TdmBase = class(TDataModule) + SmallImages: TPngImageList; + StyleManager: TJvNavPaneStyleManager; + TBXSwitcher: TTBXSwitcher; + cxIntl: TcxIntl; + cxIntlPrintSys31: TcxIntlPrintSys3; + procedure DAClientDataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); + private + FOnThemeChange: TNotifyEvent; + procedure InitStyleManager; + procedure OnTBXThemeChange(Sender: TObject); + procedure LeerConfiguracion; + public + procedure SalvarConfiguracion; + function DarVersion : String; + property OnThemeChange: TNotifyEvent read FOnThemeChange write + FOnThemeChange; + end; + +var + dmBase: TdmBase; + +implementation + +{$R *.DFM} + +uses + uDataModuleConexion, Dialogs, TBX, TBXThemes, Forms, Windows, + JclFileUtils, cxControls, SysUtils, uDataModuleConfiguracion; + +{ +*********************************** TdmBase ************************************ +} +procedure TdmBase.DAClientDataModuleCreate(Sender: TObject); +begin + dmConexion := TdmConexion.Create(NIL); + dmConfiguracion := TdmConfiguracion.Create(NIL); + + TBXSwitcher.OnThemeChange := OnTBXThemeChange; + TBXSetTheme('Office2003'); + + LeerConfiguracion; +end; + +procedure TdmBase.InitStyleManager; +begin + if not USE_THEMES then + begin + TBXSwitcher.EnableXPStyles := False; + StyleManager.Theme := nptStandard; + end + else begin + TBXSwitcher.EnableXPStyles := True; + with StyleManager do + begin + if CurrentTheme is TTBXOffice2003Theme then + begin + case GetOffice2003Scheme of + osBlue : Theme := nptXPBlue; + osMetallic : Theme := nptXPSilver; + osGreen : Theme := nptXPOlive; + else + Theme := nptStandard; + end; + end; + end; + end; +end; + + +procedure TdmBase.LeerConfiguracion; +begin + dmConfiguracion.LeerConfiguracion; +end; + +procedure TdmBase.OnTBXThemeChange(Sender: TObject); +begin + InitStyleManager; + + if Assigned(FOnThemeChange) then + FOnThemeChange(Sender); +end; + +procedure TdmBase.SalvarConfiguracion; +begin + dmConfiguracion.SalvarConfiguracion; +end; + +function TdmBase.DarVersion: String; +var + Obj : TJclFileVersionInfo; +begin + Obj := TJclFileVersionInfo.Create(Application.ExeName); + try + Result := 'v' + Obj.FileVersion; + finally + FreeAndNil(Obj); + end; +end; + +procedure TdmBase.DataModuleDestroy(Sender: TObject); +begin + FreeANDNIL(dmConfiguracion); + FreeAndNil(dmConexion); +end; + +initialization + dmBase := TdmBase.Create(NIL); + +finalization + dmBase.Free; + +end. diff --git a/Source/Base/uDataModuleConexion.dfm b/Source/Base/uDataModuleConexion.dfm new file mode 100644 index 00000000..717d8d58 --- /dev/null +++ b/Source/Base/uDataModuleConexion.dfm @@ -0,0 +1,31 @@ +object dmConexion: TdmConexion + OldCreateOrder = False + Height = 264 + Width = 275 + object ROChannel: TROWinInetHTTPChannel + OnFailure = ROChannelFailure + OnException = ROChannelFailure + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + KeepConnection = True + ServerLocators = <> + DispatchOptions = [] + Left = 42 + Top = 16 + end + object ROMessage: TROBinMessage + Left = 42 + Top = 88 + end + object DABINAdapter: TDABINAdapter + Left = 136 + Top = 16 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'srvConfiguracion' + Left = 136 + Top = 88 + end +end diff --git a/Source/Base/uDataModuleConexion.pas b/Source/Base/uDataModuleConexion.pas new file mode 100644 index 00000000..78f9d421 --- /dev/null +++ b/Source/Base/uDataModuleConexion.pas @@ -0,0 +1,152 @@ +unit uDataModuleConexion; + +interface + +uses + SysUtils, Classes, uROServiceComponent, uRORemoteService, uDADataTable, + uDABINAdapter, uROClient, uROBinMessage, uROWinInetHttpChannel, + uDADataStreamer; + +const + SERVER_URL = 'http://localhost:8099/bin'; // Direccin por defecto del servidor + +type + TdmConexion = class(TDataModule) + ROChannel: TROWinInetHTTPChannel; + ROMessage: TROBinMessage; + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + procedure ROChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); + private + function GetChannel: TROWinInetHTTPChannel; + function GetMessage: TROBinMessage; + function GetTargetURL: String; + procedure SetTargetURL(const Value: String); + public + function HayConexion : Boolean; + function ProbarConexion(const ATargetURL : String): Boolean; + procedure ConfigurarConexion; + property TargetURL : String read GetTargetURL write SetTargetURL; + property Channel: TROWinInetHTTPChannel read GetChannel; + property Message: TROBinMessage read GetMessage; + end; + +var + dmConexion: TdmConexion; + +implementation + +{$R *.dfm} + +uses + Windows, WinInet, cxControls, uConfigurarConexion, Dialogs, Controls, + uDataModuleBase, FactuGES_Intf; + +const + IE_OFFLINE_ERROR = 'Unexpected error in WinInet HTTP Channel (2)'; + +function TdmConexion.HayConexion: Boolean; +begin + Result := ROChannel.Connected; +end; + +procedure TdmConexion.ConfigurarConexion; +begin + with TfConfigurarConexion.Create(NIL) do + try + TargetURL := ROChannel.TargetURL; + if ShowModal = mrOk then + begin + ROChannel.TargetURL := TargetURL; + ROChannel.Connected := False; + ROChannel.Connected := True; + dmBase.SalvarConfiguracion; + end; + finally + Free; + end; +end; + +function TdmConexion.GetChannel: TROWinInetHTTPChannel; +begin + Result := ROChannel; +end; + +function TdmConexion.GetMessage: TROBinMessage; +begin + Result := ROMessage; +end; + +function TdmConexion.GetTargetURL: String; +begin + Result := ROChannel.TargetURL; +end; + +function TdmConexion.ProbarConexion(const ATargetURL: String): Boolean; +var + AHTTPChannel: TROWinInetHTTPChannel; + AROBinMessage: TROBinMessage; + ACoService: TRORemoteService; +begin + if ATargetURL = '' then + raise Exception.Create('No se ha indicado la URL del servidor (HayConexion)'); + + AHTTPChannel := TROWinInetHTTPChannel.Create(Self); + AROBinMessage := TROBinMessage.Create(Self); + ACoService := TRORemoteService.Create(Self); + + ShowHourglassCursor; + try + with AHTTPChannel do + begin + Name := 'HTTPChannel'; + if Length(ATargetURL) > 0 then + TargetURL := ATargetURL + else + TargetURL := ROChannel.TargetURL; + end; + + with ACoService do + begin + ServiceName := 'srvLogin'; + ACoService.Message := AROBinMessage; + Channel := AHTTPChannel; + end; + + try + AHTTPChannel.Connected := True; + (ACoService as IsrvLogin).Ping; + AHTTPChannel.Connected := False; + Result := True; + except + Result := False; + end; + finally + AHTTPChannel.Connected := False; + FreeAndNil(AHTTPChannel); + FreeAndNil(ACoService); + FreeAndNil(AROBinMessage); + HideHourglassCursor; + end; +end; + +procedure TdmConexion.ROChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); +begin + if (Pos(anException.Message, IE_OFFLINE_ERROR) > 0) then + begin + // Preguntar al usuario si se quiere conectar + if InternetGoOnline(PAnsiChar(ROChannel.TargetURL), GetDesktopWindow(), 0) then + Retry := True // Si el usuario pulsa en 'Conectar' reintentar la operacin + else + Abort; // Si el usuario pulsa en 'Seguir desconectado' parar todo + end +end; + +procedure TdmConexion.SetTargetURL(const Value: String); +begin + ROChannel.TargetURL := Value; +end; + +end. diff --git a/Source/Base/uDataModuleConfiguracion.dfm b/Source/Base/uDataModuleConfiguracion.dfm new file mode 100644 index 00000000..362d229c --- /dev/null +++ b/Source/Base/uDataModuleConfiguracion.dfm @@ -0,0 +1,33 @@ +object dmConfiguracion: TdmConfiguracion + OldCreateOrder = False + Height = 264 + Width = 275 + object ROChannel: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + Login.Username = '123456' + Login.Password = 'sa' + KeepConnection = True + Left = 42 + Top = 16 + end + object ROMessage: TROBinMessage + Left = 42 + Top = 88 + end + object DABINAdapter: TDABINAdapter + Left = 136 + Top = 16 + end + object RORemoteService: TRORemoteService + ServiceName = 'srvConfiguracion' + Message = ROMessage + Channel = ROChannel + Left = 136 + Top = 88 + end +end diff --git a/Source/Base/uDataModuleConfiguracion.pas b/Source/Base/uDataModuleConfiguracion.pas new file mode 100644 index 00000000..54d0adc8 --- /dev/null +++ b/Source/Base/uDataModuleConfiguracion.pas @@ -0,0 +1,70 @@ +unit uDataModuleConfiguracion; + +interface + +uses + SysUtils, Classes, uROServiceComponent, uRORemoteService, uDADataTable, + uDABINAdapter, uROClient, uROBinMessage, uROWinInetHttpChannel, IniFiles; + +const + SERVER_URL = 'http://localhost:8099/bin'; + +type + TdmConfiguracion = class(TDataModule) + ROChannel: TROWinInetHTTPChannel; + ROMessage: TROBinMessage; + DABINAdapter: TDABINAdapter; + RORemoteService: TRORemoteService; + private + FIniFile : TIniFile; + public + function DarValor(const CODIGO: String): Variant; + procedure LeerConfiguracion; + procedure SalvarConfiguracion; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +var + dmConfiguracion: TdmConfiguracion; + +implementation + +{$R *.dfm} + +uses + Forms, FactuGES_Intf, Variants, uDataModuleConexion; + + +{ TdmConfiguracion } + +constructor TdmConfiguracion.Create(AOwner: TComponent); +begin + inherited; + FIniFile := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini' ) ); +end; + +function TdmConfiguracion.DarValor(const CODIGO: String): Variant; +begin + Result := (RORemoteService as IsrvConfiguracion).DarValor(CODIGO); +end; + +destructor TdmConfiguracion.Destroy; +begin + FreeAndNIL(FIniFile); + inherited; +end; + +procedure TdmConfiguracion.LeerConfiguracion; +begin + with FIniFile do + dmConexion.TargetURL := ReadString('Server', 'URL', SERVER_URL); +end; + +procedure TdmConfiguracion.SalvarConfiguracion; +begin + with FIniFile do + WriteString('Server', 'URL', dmConexion.TargetURL); +end; + +end. diff --git a/Source/Base/uExceptions.pas b/Source/Base/uExceptions.pas new file mode 100644 index 00000000..d3e6e852 --- /dev/null +++ b/Source/Base/uExceptions.pas @@ -0,0 +1,20 @@ +unit uExceptions; + +interface + +uses + uDADataTable; + +const + AUF_FKVIOLATION = 'violation of FOREIGN KEY'; + AUF_HAVEVALUE = 'must have a value'; + +type + IApplyUpdateFailedException = interface + ['{B090A762-3D65-405E-A810-14DB4F6E8F82}'] + procedure ShowApplyUpdateFailed (const Error: EDAApplyUpdateFailed); + end; + +implementation + +end. diff --git a/Source/Base_Group.bdsgroup b/Source/Base_Group.bdsgroup new file mode 100644 index 00000000..92e0b127 --- /dev/null +++ b/Source/Base_Group.bdsgroup @@ -0,0 +1,21 @@ + + + + + + + + + + + DataAbstract_D10\DataAbstract_D10.bdsproj + Base\Base.bdsproj + Base\ControllerBase\ControllerBase.bdsproj + Base\GUIBase\GUIBase.bdsproj + Base\Usuarios\Usuarios.bdsproj + DataAbstract_D10.bpl Base.bpl ControllerBase.bpl GUIBase.bpl Usuarios.bpl + + + + diff --git a/Source/Base_Group.groupproj b/Source/Base_Group.groupproj new file mode 100644 index 00000000..0a895197 --- /dev/null +++ b/Source/Base_Group.groupproj @@ -0,0 +1,54 @@ + + + {d51b0489-bd4f-4ed4-a8cc-05ea2af327dd} + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/ClearFiles.msbuild b/Source/ClearFiles.msbuild new file mode 100644 index 00000000..30f4b9de --- /dev/null +++ b/Source/ClearFiles.msbuild @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Cliente/Cliente_Group.bdsgroup b/Source/Cliente/Cliente_Group.bdsgroup new file mode 100644 index 00000000..9dca6ab5 --- /dev/null +++ b/Source/Cliente/Cliente_Group.bdsgroup @@ -0,0 +1,20 @@ + + + + + + + + + + + + + ..\Base\Base.bdsproj + FactuGES.bdsproj + Base.bpl FactuGES.exe + + + + diff --git a/Source/Cliente/Empresas_controller.drc b/Source/Cliente/Empresas_controller.drc new file mode 100644 index 00000000..4678b4d6 --- /dev/null +++ b/Source/Cliente/Empresas_controller.drc @@ -0,0 +1,19 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +DESCRIPTION RCDATA +BEGIN + "\x47", "\x00", "\x65", "\x00", "\x73", "\x00", "\x74", "\x00", /* 0000: G.e.s.t. */ + "\x69", "\x00", "\xf3", "\x00", "\x6e", "\x00", "\x20", "\x00", /* 0008: i...n. . */ + "\x64", "\x00", "\x65", "\x00", "\x20", "\x00", "\x75", "\x00", /* 0010: d.e. .u. */ + "\x73", "\x00", "\x75", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0018: s.u.a.r. */ + "\x69", "\x00", "\x6f", "\x00", "\x73", "\x00", "\x00", "\x00" /* 0020: i.o.s... */ +END + diff --git a/Source/Cliente/Empresas_data.drc b/Source/Cliente/Empresas_data.drc new file mode 100644 index 00000000..686f8580 --- /dev/null +++ b/Source/Cliente/Empresas_data.drc @@ -0,0 +1,10 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Source/Cliente/Empresas_plugin.drc b/Source/Cliente/Empresas_plugin.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Cliente/Empresas_plugin.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Cliente/Empresas_view.drc b/Source/Cliente/Empresas_view.drc new file mode 100644 index 00000000..4678b4d6 --- /dev/null +++ b/Source/Cliente/Empresas_view.drc @@ -0,0 +1,19 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +DESCRIPTION RCDATA +BEGIN + "\x47", "\x00", "\x65", "\x00", "\x73", "\x00", "\x74", "\x00", /* 0000: G.e.s.t. */ + "\x69", "\x00", "\xf3", "\x00", "\x6e", "\x00", "\x20", "\x00", /* 0008: i...n. . */ + "\x64", "\x00", "\x65", "\x00", "\x20", "\x00", "\x75", "\x00", /* 0010: d.e. .u. */ + "\x73", "\x00", "\x75", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0018: s.u.a.r. */ + "\x69", "\x00", "\x6f", "\x00", "\x73", "\x00", "\x00", "\x00" /* 0020: i.o.s... */ +END + diff --git a/Source/Cliente/FactuGES.bdsproj b/Source/Cliente/FactuGES.bdsproj new file mode 100644 index 00000000..48e333ed --- /dev/null +++ b/Source/Cliente/FactuGES.bdsproj @@ -0,0 +1,682 @@ + + + + + + + + + + + + FactuGES.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\Output\Debug\Cliente + .\ + .\ + .\ + ..\Lib;..\Modulos\Lib + PluginSDK_D10R;GUISDK_D10;DataAbstract_D10;Base;GUIBase;Usuarios;Contactos_plugin;Empresas_plugin;Empresas_controller;Empresas_model;rtl + _VER6;EUREKALOG;EUREKALOG_VER6 + T:\Codigo (Luis Leon)\Source\Modulos\Pedidos de cliente\Controller\ + True + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 2 + 2 + 2 + 0 + False + False + False + False + False + 3082 + 1252 + + + Rodax Software S.L. + + 2.2.2.0 + FactuGES + + + + FactuGES + 2.1.4 + + + File c:\archivos de programa\borland\delphi10\Bin\dclIntraweb_80_100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclnet100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclsoap100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclie100.bpl not found + + + + diff --git a/Source/Cliente/FactuGES.dpr b/Source/Cliente/FactuGES.dpr new file mode 100644 index 00000000..01cb7fad --- /dev/null +++ b/Source/Cliente/FactuGES.dpr @@ -0,0 +1,42 @@ +program FactuGES; + +uses + ExceptionLog, + Forms, + Windows, + SysUtils, + uActualizacion, + uPantallaPrincipal in 'uPantallaPrincipal.pas' {fPantallaPrincipal}, + uMenuUtils in 'Utiles\uMenuUtils.pas', + uSplash in 'uSplash.pas' {SplashScreen}, + uAcercaDe in 'uAcercaDe.pas', + uNavPaneController in 'uNavPaneController.pas', + uNavPaneUtils in 'Utiles\uNavPaneUtils.pas', + uMainMenuController in 'uMainMenuController.pas', + uClienteUtils in 'Utiles\uClienteUtils.pas'; + + + +{$R *.res} + +var + Version : String; + +begin + Application.Initialize; + Application.Title := 'FactuGES'; + + fActualizacion := TfActualizacion.Create(Application); + try + if fActualizacion.HayConfiguracion then + fActualizacion.Actualizar; + Version := fActualizacion.DarVersion; + finally + FreeAndNIL(fActualizacion); + end; + + Application.CreateForm(TfPantallaPrincipal, fPantallaPrincipal); + Application.Run; + Application.Terminate; +end. + diff --git a/Source/Cliente/FactuGES.dproj b/Source/Cliente/FactuGES.dproj new file mode 100644 index 00000000..689dcdf6 --- /dev/null +++ b/Source/Cliente/FactuGES.dproj @@ -0,0 +1,611 @@ + + + {53016ac3-0937-40b6-917c-48fcd13f2260} + FactuGES.dpr + Debug + AnyCPU + true + PluginSDK_D10R;GUISDK_D10;DataAbstract_D10;Base;GUIBase;Usuarios;Contactos_plugin;Empresas_plugin;Empresas_controller;Empresas_model;rtl + DCC32 + ..\..\Output\Debug\Cliente\FactuGES.exe + + + 7.0 + False + False + False + True + 0 + 3 + ..\..\Output\Debug\Cliente + .\ + .\ + .\ + .\ + .\ + ..\Lib;..\Modulos\Lib + ..\Lib;..\Modulos\Lib + ..\Lib;..\Modulos\Lib + ..\Lib;..\Modulos\Lib + _VER6;EUREKALOG;EUREKALOG_VER6;RELEASE + + + 7.0 + False + True + 3 + ..\..\Output\Debug\Cliente + .\ + .\ + .\ + .\ + .\ + ..\Lib;..\Modulos\Lib + ..\Lib;..\Modulos\Lib + ..\Lib;..\Modulos\Lib + ..\Lib;..\Modulos\Lib + _VER6;EUREKALOG;EUREKALOG_VER6;DEBUG + + + Delphi.Personality + VCLApplication + + + T:\Codigo (Luis Leon)\Source\Modulos\Pedidos de cliente\Controller\ + False + True + False + + + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 2 + 2 + 2 + 0 + False + False + False + False + False + 3082 + 1252 + + + Rodax Software S.L. + + 2.2.2.0 + FactuGES + + + + FactuGES + 2.1.4 + + + + + + + + + + + + File c:\archivos de programa\borland\delphi10\Bin\dclIntraweb_80_100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclnet100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclsoap100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclie100.bpl not found + + + FactuGES.dpr + + + + + + + MainSource + + + + + +
fPantallaPrincipal
+
+ +
SplashScreen
+
+ + + +
+ +
+ + diff --git a/Source/Cliente/FactuGES.drc b/Source/Cliente/FactuGES.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Cliente/FactuGES.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Cliente/FactuGES.identcache b/Source/Cliente/FactuGES.identcache new file mode 100644 index 00000000..5a0cd405 Binary files /dev/null and b/Source/Cliente/FactuGES.identcache differ diff --git a/Source/Cliente/FactuGES.rc b/Source/Cliente/FactuGES.rc new file mode 100644 index 00000000..ea1ce68a --- /dev/null +++ b/Source/Cliente/FactuGES.rc @@ -0,0 +1,26 @@ +MAINICON ICON "E:\Codigo (Luis Len)\Source\Iconos\Factuges.ico" +1 VERSIONINFO +FILEVERSION 2,2,2,0 +PRODUCTVERSION 2,2,2,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "CompanyName", "Rodax Software S.L.\0" + VALUE "FileVersion", "2.2.2.0\0" + VALUE "InternalName", "FactuGES\0" + VALUE "ProductName", "FactuGES\0" + VALUE "ProductVersion", "2.1.4\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/Source/Cliente/FactuGES.res b/Source/Cliente/FactuGES.res new file mode 100644 index 00000000..fbc3c2b3 Binary files /dev/null and b/Source/Cliente/FactuGES.res differ diff --git a/Source/Cliente/FacturasCliente_data.drc b/Source/Cliente/FacturasCliente_data.drc new file mode 100644 index 00000000..239017f3 --- /dev/null +++ b/Source/Cliente/FacturasCliente_data.drc @@ -0,0 +1,20 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +DESCRIPTION RCDATA +BEGIN + "\x46", "\x00", "\x61", "\x00", "\x73", "\x00", "\x74", "\x00", /* 0000: F.a.s.t. */ + "\x51", "\x00", "\x75", "\x00", "\x65", "\x00", "\x72", "\x00", /* 0008: Q.u.e.r. */ + "\x79", "\x00", "\x42", "\x00", "\x75", "\x00", "\x69", "\x00", /* 0010: y.B.u.i. */ + "\x6c", "\x00", "\x64", "\x00", "\x65", "\x00", "\x72", "\x00", /* 0018: l.d.e.r. */ + "\x20", "\x00", "\x31", "\x00", "\x2e", "\x00", "\x30", "\x00", /* 0020: .1...0. */ + "\x33", "\x00", "\x00", "\x00" /* 0028: 3... */ +END + diff --git a/Source/Cliente/Utiles/uClienteUtils.pas b/Source/Cliente/Utiles/uClienteUtils.pas new file mode 100644 index 00000000..2f5827d7 --- /dev/null +++ b/Source/Cliente/Utiles/uClienteUtils.pas @@ -0,0 +1,19 @@ +unit uClienteUtils; + +interface + +uses + Classes, Menus, SysUtils; + + +function EsUnModulo(AMenuItem : TMenuItem) : Boolean; + +implementation + +function EsUnModulo(AMenuItem : TMenuItem) : Boolean; +begin + Result := (AMenuItem.Tag >= 0) and (AMenuItem.Tag < 9000) +end; + + +end. diff --git a/Source/Cliente/Utiles/uMenuUtils.pas b/Source/Cliente/Utiles/uMenuUtils.pas new file mode 100644 index 00000000..f31420e7 --- /dev/null +++ b/Source/Cliente/Utiles/uMenuUtils.pas @@ -0,0 +1,139 @@ +unit uMenuUtils; + +interface + +uses + Forms, ImgList, ActnList, JvPageList, JvNavigationPane, Menus, + Controls; + + +procedure MergeMenus(Source, Dest: TMainMenu; ImageIndex : Integer = -1); +procedure SortMenuByTag(Menu : TMainMenu); + +function BuscarMenu(const AMainMenu: TMainMenu; const ACaption: String): TMenuItem; +procedure copiarItemsMenu(MenuDestino: TMenuItem; pMenu: TMenuItem); + +implementation + +uses + ComCtrls, Classes, Math, TBXDkPanels, StrUtils, SysUtils, + ExtCtrls, Graphics, Dialogs; + +type + TAssignCallback = procedure(Source, Dest: TMenuItem); + + +procedure AssignMenus(Source, Dest: TMenuItem; AImageIndex : Integer; + AssignProc: TAssignCallback); +var + I: Integer; + Item: TMenuItem; +begin + for I := 0 to Source.Count - 1 do + begin + Item := Dest.Find(Source.Items[I].Caption); + if Item = NIL then + begin + Item := TMenuItem.Create(Dest); + Dest.Add(Item); + if Assigned(AssignProc) then + begin + AssignProc(Source.Items[I], Item); + if (Source.Items[I].ImageIndex >= 0) then + Item.ImageIndex := Source.Items[I].ImageIndex + AImageIndex; + end; + end; + AssignMenus(Source.Items[I], Item, AImageIndex, AssignProc); + end; +end; + +procedure AssignMenuItem(Source, Dest: TMenuItem); +begin + Dest.Caption := Source.Caption; + Dest.Hint := Source.Hint; + Dest.Checked := Source.Checked; + Dest.GroupIndex := Source.GroupIndex; + Dest.Tag := Source.Tag; + Dest.Action := Source.Action; + Dest.ImageIndex := Source.ImageIndex; + Dest.ShortCut := Source.ShortCut; + Dest.RadioItem := Source.RadioItem; + Dest.AutoCheck := Source.AutoCheck; + Dest.AutoHotkeys := Source.AutoHotkeys; + Dest.AutoLineReduction := Source.AutoLineReduction; + Dest.Break := Source.Break; + Dest.Default := Source.Default; + Dest.Enabled := Source.Enabled; + Dest.HelpContext := Source.HelpContext; + Dest.Visible := Source.Visible; +end; + +procedure SortMenuItems(MenuItems : TMenuItem); + + function CompareTags(Item1, Item2: Pointer): Integer; + begin + Result := CompareValue(TMenuItem(Item1).Tag, TMenuItem(Item2).Tag); + end; + +var + I: Integer; + AList : TList; +begin + AList := TList.Create; + + try + for I := 0 to MenuItems.Count - 1 do + begin + SortMenuItems(MenuItems.Items[i]); + AList.Add(Pointer(MenuItems.Items[i])); + end; + + AList.Sort(@CompareTags); + + for i := 0 to AList.Count - 1 do + TMenuItem(AList.Items[i]).MenuIndex := i; + + finally + AList.Free; + end; +end; + +procedure MergeMenus(Source, Dest: TMainMenu; ImageIndex : Integer = -1); +begin + AssignMenus(Source.Items, Dest.Items, ImageIndex, AssignMenuItem); +end; + +procedure SortMenuByTag(Menu : TMainMenu); +begin + SortMenuItems(Menu.Items); +end; + +function BuscarMenu(const AMainMenu: TMainMenu; const ACaption: String): TMenuItem; +var + i: Integer; +begin + i:=0; + while ((i < AMainMenu.Items.Count-1) and + (StringReplace(AMainMenu.Items[i].Caption,'&','',[]) <> ACaption)) do + Inc(i); + Result := AMainMenu.Items[i]; +end; + +procedure copiarItemsMenu(MenuDestino, pMenu: TMenuItem); +var + i: Integer; + Item: TMenuItem; +begin + for i := 0 to (pMenu.Count - 1) do + begin + Item := TMenuItem.Create(MenuDestino); + Item.Caption := pMenu.Items[i].Caption; + Item.Action := pMenu.Items[i].Action; + MenuDestino.Add(Item); + end; +end; + + + +end. + diff --git a/Source/Cliente/Utiles/uNavPaneUtils.pas b/Source/Cliente/Utiles/uNavPaneUtils.pas new file mode 100644 index 00000000..7e9658ca --- /dev/null +++ b/Source/Cliente/Utiles/uNavPaneUtils.pas @@ -0,0 +1,58 @@ +unit uNavPaneUtils; + +interface + +uses + Forms, ImgList, ActnList, JvPageList, JvNavigationPane, Menus, + Controls; + +procedure PopulateNavPagePane(AParentControl : TWinControl; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); overload; + +implementation + +uses + ComCtrls, Classes, Math, TBXDkPanels, StrUtils, SysUtils, + ExtCtrls, Graphics, Dialogs; + + +procedure PopulateNavPagePane(AParentControl : TWinControl; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); +var + ItemIndex : Integer; + AHeight : Integer; +begin + AHeight := 0; + for ItemIndex := 0 to (AMenuItem.Count - 1) do + begin + if ((not AMenuItem[ItemIndex].IsLine) // que no sea una lnea separadora + and (AMenuItem[ItemIndex].Count = 0)) // y que no sea el padre de un submen + then + with TTBXLink.Create(Application) do + begin + Parent := AParentControl;//APanel; + Align := alTop; + ParentFont := True; + Tag := AMenuItem[ItemIndex].Tag; + Caption := AMenuItem[ItemIndex].Caption; + Action := AMenuItem[ItemIndex].Action; + Images := AImageList; + ImageIndex := AMenuItem[ItemIndex].ImageIndex; + if ItemIndex = 0 then + Margins.Top := 15 + else + Margins.Top := 6; + Margins.Bottom := 6; + Margins.Left := 10; + Margins.Right := 10; + Height := 18; + Invalidate; + AHeight := AHeight + Margins.Top + Margins.Bottom + Height; + end; + end; + AParentControl.Height := AHeight; +end; + +end. diff --git a/Source/Cliente/dbrtl.drc b/Source/Cliente/dbrtl.drc new file mode 100644 index 00000000..686f8580 --- /dev/null +++ b/Source/Cliente/dbrtl.drc @@ -0,0 +1,10 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Source/Cliente/uAcercaDe.dfm b/Source/Cliente/uAcercaDe.dfm new file mode 100644 index 00000000..cc801f7f --- /dev/null +++ b/Source/Cliente/uAcercaDe.dfm @@ -0,0 +1,1092 @@ +object fAcercaDe: TfAcercaDe + Left = 531 + Top = 365 + ActiveControl = bAceptar + BorderStyle = bsDialog + Caption = 'Acerca de...' + ClientHeight = 401 + ClientWidth = 427 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvGradient1: TJvGradient + Left = 0 + Top = 88 + Width = 427 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Bevel1: TBevel + Left = 128 + Top = 359 + Width = 290 + Height = 9 + Shape = bsTopLine + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 427 + Height = 88 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Image1: TImage + Left = -23 + Top = -9 + Width = 450 + Height = 97 + Picture.Data = { + 0B544A76474946496D6167651A7F0000474946383961C201FA00E60000625E5C + FFFFFFE66738AB8259F6D2A8B72624886A4DC538298F8F8FAC2724000000FBFB + FBB2B2B2E4E4E4F2F2F2EDEDED30302FEC733CF48544D5AC83DFDFDFF07B40CD + 432CF7F7F7F9A8A6FCEDC2DD5933D1482EF6D7CEE9E9E9D5D4D4EABB95DA5532 + D1B1ACFA9630C4746ECD9992C7C6C6D75130FBCC30D44D2FF39367594E44BD96 + 6FC0574EFBE8DFB04D41CC665AFDF3E6B0AC8FD7C5C1D8D8E6BA3532B08981CE + A87DE15F35BF2E26C2433AE59D90FDD75DF8A57DFDF5F1D26F2F423D37D9D5D4 + FA812EF1E1DDEAEAF9FEF8F5AD3A35AB302CA22824DACFCCFEFBFA878686E3E4 + E9CECEDEDD6142BDBCBCA48C33A6A6A6BBBCC8F6792FD2513AE1E1E1F5F6F1E3 + 7D62D6D6D8EBEBEBE0D8D7999999F6F0EFFDFDFDF1EDEAFCAA4CDADBDBEDE9E4 + E7E8E9CE827DD45A44EAEBECEFEFEF767473FBF1F0D85538F9F9F9CCCCCCEBED + EDC94E40F5F5F5DA4E2FD9D9D9FAFAEFEFEFF5F3F5F3ECECE9444343CACA9DE1 + 7630E96D3AF4C2BAD1D1D1DD8542D3AF34D7D7D7D75E32E7E7E7EAE6E62C0000 + 0000C201FA000007FF801282838485868788898A831F04305C01919293949596 + 9798999A9B9C9D9E9FA0A1A2A3935C0B17650F580F0E176990A4B1B2B3B4B5A4 + 12221229B8BABCB982BBB9C1BDC283C3C7BEBCBBC0CABA3C041949B6D3D4D5D6 + D7D8A50B6D657EDE58656D170B0B01B0D9E8B3905CECEDEEEFECE6E9968BF5F6 + F7885E3C1C30F3FEFF00038AE292A6CD033F541A34E800AE559A05E7044AAC64 + EAD4853618336A14E70AA2C45ECC42821CB98CA4B193224BAA342682079E7E13 + 63CA9C69CD94C10614285049E86795B85734279A2AE820D5AAA3AA92B26AE531 + 20BEA75017A5F89021A8D5AB5837D9C4D2E00B05AF5EA9F42CE31062BCACD6C8 + 5D4CD5C18FC2B770FF15FAE9F020DCB888E906FDE26568AF5F7C7B09FD3534B5 + 05DAC38883DA7C8033A7E39D0D7AB26A930668E25A04DB3850E576A7CECF5474 + EEE4B9CA01E572FEA2AA5E3D68DFD9CBB063635BEC272758C7A2E74EBEF05A36 + A805698AB66D101AB771E33C3B901D979AB5737C29F611C1EBBBBAF550B44343 + 56E85967642C584CDFA57EBD54E63258DC1E7FFCF93864C9E27A5B4B54E1797D + 45F725E43FE4120691F20006A8096D3925D74107C43D469A5D4D091889291738 + 804518097E65A168A365681B6E3BF5C4143ACF85584F0A53F1439E8328566753 + 37A1454616375C35A6A0870E3C84A24D0E20581C870945E68D379171B7236E0B + 7D888D6AFB2D92A4FF214B12F64C34294609E0296574305A789545889E5B0986 + F5DD8B0FC917DB8A086E285A6407829714780702495C715E5150641B62D622E2 + 9D8AF040D57F52F6291B3B11EAD800166D40A4168C9D15D7E35CCB59A6628458 + 20C8259A0FD4E5C0A59A657A69A5E001A9E8770E9D388B7EA4D6676AA9A89EAA + 2AA982ACDAEA20ABC6CAEA333DF8692B6C5CA0820564E1C5C3CE2945455AE163 + 0BB172973CA25A056C5165344B9678955506DCB4695CA459B39CC9459769D226 + 1BCBABE0B22A6E7EE41E522E93B0A61B6E0A041876EBBB59019A23710B158A6C + 00C05DB4D9703B26B75C470D8252861208D0A1C0C108230C01024A3831CA50D5 + 46FC103966C1F30EFF5197A692CA4F2528A1040409274C87C7B2A46AB2AC289F + AC72CAAA16C627BC30D34490846F2A07D43AED54A6992A0A291859A56455EBAD + 251F876CF4D14A6CA2C5D14C376D3400B96A8629656928E1F4D100382CCAB9E3 + AADB75B85C87ED759253393274CC685FC34E705CF154A3AFF7021AE103FC12EB + CDB374B6B30903205FED3403992CEDF7E0099B911946AE70E144DF84270C4019 + A1AC2C39CB9357DEF2332D4893F6E600CDBC6B42E135B80EB2C01195ADA29085 + 01CE4FDE02D0B8D3495F22F8EB7E435DED4F0B584D7BC81040FE891E964B003C + E5C4077FAA045E50552BE7FF98B1BBD197C9ABA31F65004572DCC81214A184EA + CDA81CB7273E60F0FFF34723203BF94E1B6ED12BB3A3AF0004A05420FFFCFACD + 6FFFFDF2D76F6AFEF4F7CFFFFFFB0BA0FE04E192CC31CF1FAE739F02709506F4 + 2CA40CE370C2C19236BA0ACAE3503C7B9363BE139E1A996512E35360C2D46089 + F689F06000C05765B8F085134EF013C58BA1F166589F12F5E06C079485F31418 + BD5C6D86156978430215603EEC5970285A12D68EE43216713445772E3C18FC2A + 61C213AA2F4C211421041EE009FC79F18B600CA318C7581FCCD52987B61822FA + 70B53D57EC10611434A2114FC18D8374E92B1D5A1D44A010C59069818A7D4421 + BE20D2C23EC68E13FE0BA0FDF4B7C8440ED08B8F046024EFA32703A2111B6F5C + 6362D6E68A2A2A20FF76479423272F252C0D7AC70FADE002E30249074006D270 + A6E002145D38454492F196B8CCE5FDF450A2E95CF21A6A241FAE8033CB84C531 + 94C8AC484152E18D9DC4A9010F4803020219320A50C2930A4C613BB2E8422EDA + 528C8C14A31EC4E9C571DE323AEDD2DC2FA9914961C20622C54458119129CA0B + 9A2E46DE81E02A9D0600C005C009ED6CDA2123814DF7C11212FB341A04B45099 + 1204F4685ADB842E23A04BF951147F17AD680A30C08116E0709D9E08E6F3C624 + 4BA61D931C70A367052D122CB78487018383000929A186C10D940B0545D81740 + F12B762434645FD0D9052E5002BFFDF19B154DAA52F1278102BE0CA4B478E8C1 + 8E9A2276C4F3850FFF32947CE8F9207340486369906AC220B0534BD4946966F0 + 98372591D38359931338FB55007EAA307210C58D47FB81C7943053895234A37F + AD0060E717D8C21256B088B5E86115AB58C31A969204581E5469215284515514 + 6A508254D37AD94D5040B30ABD1E264A8A3449C4551E14B9D72532330EBA26EC + 8FA3A3C40E47C6D74CE0D46F651D90572BE2D3ABD1E10D11EBC81961B8D4E21A + 5717ED9A6C2DC4DA594F40C1B5466B6E25D4C04D93AE5512D5759A166E5BBEAE + 42A2B20A704245B0E037081064851FA508779DF6D64EF4B41CD05598C7A4558E + F45A02B18EC5AF7EF31BD8C6EEF7BFFC05B0609B5A15E5CE02BC0A90EE2610DC + B45662E2AA4E8B68FF24B2DBB4ED62F39891002FE020C1C7AB292138A1B26F29 + DABA3BF1F256AC4D4BAB882BC158010FD6BFFD5DAC8B671CE00A3C8308EA34B0 + 28981B0A14C3EE120C6E9A8429CCB43F5EF81D01006F44219CB012B4013C10FC + 2076D6EB4287518C0B1D7EDEC2AE1BBFBF4620C0FCFD328DC70CE6FFDA50C7A4 + 40B082312141F4B557124CC62D765F67619312841C19665A447DAC8006BAB40D + 24365A6E1710E8D789775AE510211DFAFA89323B9ACC907E7405D0E95134EF18 + 7DB59CB04169EA3E070780C84733B2494BE711254BC2C710682071FC708169D2 + EEADEC2874E30E3D2D2EC054846608C59777CDEB5EFB5AB062F6B5B0833DEC5F + EF1AD85EFE6B5339FFF0544B7722C8579B04051498E9B92A506BA08E6E002E6C + 91BB6878CE4EA3C302BA512F59EB5412840EE4A1A305CF1392B5D1918EF7A3E7 + 0D605A391B147C6E5AA6990C80BE16B4BD6D36295BE99AC24FD379DB762E487C + 4CADE9706F836E58B880B9DDFA202A9F70DDECE642BECB9BDB4D10BBD8200FB9 + C8471E722BE0A1D2F77EB6FB2601DE5C5382E106679A3F25F1809F6ED1B4101E + 2841055E2DA6C03CDBAD5C668D26AE80DC5A5C841877C55DB2DC694F241BD950 + 3FB6D43F1E75AA4FFDE957AFBAB2F77186947762E347AB7600A0C0300424D077 + 93803055E9AAF348E8AEEC3AB72AD38AE85584978F93AF8079907F608EDBA5FB + D5A625FAD5C49BA5FF8B0C354C7126DC9A2941F2C63BFEF1C59EB474BCBEE095 + 83E2B3158EC4B499F6664FC8BDB46B7BC885BD8AD26FE739DABF8208D18D2EF8 + 0843C8F019019812B2ED34B15F02F2B8CF3DC9059B8297505E136057A827B450 + 34ED4622E0BC7B18698D064AA18DFE5E4A6E079FB9383AA2530067AD17B2F6C4 + C17DC44DCC141E8BEFD1188D895DDF210276D875FACFCFEBF5A3BFD7EC87FFFB + E39F7E5F9FDFFDF8973FAFADF00166AF78B2D0E6349AE03107677746E3693CB5 + 7C21134714337AB1157DED763533050BAB670AE640623BA552D99325C17578E3 + 60281453190800768B2709BA778228286C12A003EDF27F50C563A1F059E2176A + 3B77342E37651036FF4FF1804D0860414A362DB7F663D5B73B41152624767DB1 + 040F5A655712134B4B5811E48011ADE00A8987559A1001E7978558B8855AD885 + 5CF8855E18866038866258865F161D1C7043BF67096A160A55687C0618320587 + 83025741A34731A767340C700A0B405E573345B145095C70357C102185426259 + 503A0FB188D4122D43E50A69F0057BE531DC04000B2021614017855254573387 + 99F0655E088A64687E5F288A62688A5B888A66A88A5B38691FD002CDB6860100 + 839E407B4AA005D87454D8748382A80911C87CDE1587C6942F364261B4368846 + 158C9570356F6010D583818A182DD2185CD532540B807C4CD3014F2617D5C305 + 2AD0899C308A66D8FF8577308EE2788EE6E88536860767E082BFD4869EC06F03 + 958B91C07463650981888F0A684CBB75814C033586071174E530D23738B0865A + 9270564DC3070ED01312875B50885220483121480E85043B6CC32810916DBC88 + 09E9888E20F99122398ABD248B93408B9C206495A07691A09046C36591E08769 + E53112F67946633E49288C080335A7F0101769345AC30EF6A892955006D0C690 + 07D26A1069314CF95E830305B7731A24D67696508E5679955899955AB9955CD9 + 95598985E508965C6905BDD775269987DAD6092EE93896405754255014917338 + 5787EE50505FE00E62B561F1D0380040554A10800AC090730168D45474E43083 + 74A005AEC0000108FF059CE0955B69075629995949997760999139999A099995 + 19011B058BEE984328A909D8A4022B99790D377E9CC634137874076338FD3894 + 0AA306ECC060E2855AAE569807F30639D2010F494D59600AC1F73A305995E528 + 005E899CC8C999CCC999CB7907CF7995D1790715A003AF28596B088F9C505037 + A805D0055BAE094770A66F7A139E0A707D92F8005CB096CF6362F2F000BA8930 + 82A98DD9E7345F00119CC84A9DC09962D99CFEF99F90690556D01F67399A8173 + 42DB552D0B3083DAD59310818DACC9057EE83E4E808790509F7EC307DDE09BB9 + D9476F001C5C407B25B69FCA79073E009D5859A2275AA2C8B9A228CAA22F1AA3 + 2EAAA2310AA3365AFFA37760051C956394A79D9BC09ECF8300970841B2D938A9 + C62C94F193DAA74A0AB487DD020922AA657EC018BE89A14C1354AE00A10A8480 + 9A9095D3799CC96995370AA3D289A2607AA6669AA6656A9564D982B268A099C0 + A0EFF3531F562510349C09C3074F3617849206E2075B6FA8005255A1D6721735 + 474D007011DF9006567A34595010E380A7FAD6715D3AA6386AA9987AA99A9AA9 + 997A072BC801ED989DA8D909457A3414905D6690068C814A6910A521E30417C0 + 187954357EA304908005E2D74A7AC605D7621A10B1795104058172378C5A9841 + A51969D001723A7808A909CFF9AC9B9AA6D08AA6D05AA2D42AA6D86AAD388AA6 + 9EC903964479709AFF095528535CD0A10A131CBA4119C3E904C1A123A1413D7E + 105FB906095A3A56EAA967C07129E20111E2734200C06A12C2100F40278D6A34 + C0551435F206CB2A73DD8652A2029D0210B13E10B1264AB1112BB1173BB1CA69 + B1177BB110DBA21CBBB11D2BB202A0B11F5BB221FBB1D0D97BD899723EDA0971 + 4607EAC9056FA067CC822969E004220A001DD0737483103AA18DF9F98F5DC537 + FFB89747C300E73554DC7717E64A3B74500273B30A93C13EC66A100C01417E00 + 984743077CD04040132A98C0A2294BB622BBA9656BB135DAB16B6BA36A7BA3FC + F7AD67290B0393450BB3537404894A272DFA921138CB07E1C77C1FD66DA68320 + 0A31B055134C1040FF9371537C13449B28853D15F72B0A271E36D9386620B506 + 01654CB18385C99BC3D113E2E0045C7B307420AC7B4A1A037B2C9510B223FBBA + B01BBBAE0BBB27EBB1B27BBBB51BB19E79723C3AB7B4B00EC01229748137A621 + 8587172CA5E128A6052C2F6216CB941E0752171E485F152965D9A31617415F39 + 59414321854EC40E92E8B8BCE331521B1C07C128A7818F82188D7B0B89D3388D + 7BFA193F532369000504C834B4E50ADCD03DB9D110007316676BBB691BC003AC + B2024CB2076CC005ECB19ECA2E72EBBBB2D0BD5B422FBAF122A651BCD6423772 + 512395B00DD08BB8E8B63D461129ABD02CCCE22C97321EF76257D652BC18A1BD + 71A54CD578780EABFFBE2B921E7231B001635A0889445278C2CE421642ACAF6C + 312CDEA1891FE8844E483117A1C143722692C12DF51500B70BBB4D50C5589CC5 + 5ABCC54D60053A00AA101CC143B119FC9B472FE2BD2E4CC6383128BC4109B14A + 2F1DF036E64047178C1E860B1709B120B85331CAA42F433C85DACBC7731C95FB + 8A17EBC03609D22165801AEAA5847E4C37771C1792DC1D71724A0DC111333CC3 + 52A3C1326221B7C113CB811A5B3CCAA45CCAA6FC99B118C6EEB50DDCA02305F2 + 1D4BB1112EBC3308B11384821717C0157212C7E3A0339B61C14571BE466CC967 + 1C2638031C689C2998FC7D2BA533DE9752EDB0BFFDC2AAA3953D3EBC19E98110 + A6B41E3CC2449C8BFF2917AC2944AC0AD92C24EB31BF4071B137A0CE02B0CEEB + 1CB1EFDCCEEC0CCFF21CCFF6CCCE137BCFEE8CCFF24CCFF4BCCFFB4CCF77F099 + AA8C1DCBD416DD2116C3ABAF0CCDD018C14C384105B7ECC60F0019CA91110EF4 + 0D76714F3DE3C939A110591B62A4573A3F8C377BFC0E209871FDB83637B12162 + 0141DE72CCF99231AAD0165CA221DA311A6F311774511728FCD3260CD4D892CD + A1711BCFC4CBE560CAB21BCF1DCBD4B07BCFA5ECD4B17B073A80073DD0BB058D + 8FC062471B042AADF0C30D3D35DCF326133D09B9BCC653DA2CE9F12940C4C2C2 + D119EEF13360F20AEE80BD0D8D38902891BE020FD7FB709D2C163AAC37ABB581 + 2DFC436DE21693C2FF44DE90263EDDD043FCD8083BCBD782C39DEC18536A2FF5 + 9CD900ADD99CBDD99E9DD97DD0D99C1DDA9F5DDAA02D0015C051A19AD599F0BC + 1592100BCD1152F3D30ECD4CDA51D69210AB3A3D17DCE1C909D1D676752D3F5B + 2171921C96225C381395608DD7E865CD7B9DDC2D7D2183E241829C5AC95DD86A + 0D1EC23B173C4DC2541BC4E01DDE288C298FA82FD80CD7B7014DF612D0A2BDD9 + FEDCCFED9DD9FF0CDFEE1DDFECFDD902409678C06CAC8D090F07D779042D5992 + 31269C31E0CC3D574227949006BB222779FCC4AF8C2520C8B42D35CC72B2101D + 943832ED880F3D352BA4554826D39BF1D7D37D78CC5CCDA167DE045E1795D2E2 + 1AE3D3418DB0421CFFE37FCCDC4AD7C255322C808DD9A6DDE3ED7D03EE0CE4ED + 2CE4004DE4F56CE49E4DE448AED942DEC5558D72FD6D5A057110C501D20C32E1 + 7504E3350ED13A81DBEC9023EC51203CD1195F003A1E74412C65C7C46D210B22 + C50EDB0EC82C35189CD720EE0E5E35E58DF14CE1B1CCC6DCACBDE8C3E26CE090 + 3DE8272CE3913D35263E8DFA22AB60F1DBEB6DDF90EEE3921EE9948EDF9FBADA + 518E2F0601B47232A553A8D73DA7317F7CE06BBD13035B0AA8501BC601D2ACE0 + 40117EE6A917956C01D74482262F92C45980013A2004444047C9CC117ACDC715 + 11DDAF5EDE265EC36DE0049A0500508005A6B5B4D602D6613DEDD41ECEB1F788 + 8ABEE89CAE13979DFFD4401EE4DF1EEEE22EEE430EEEE37EEEE87EEEE55EEEE9 + DEEE40FE025E0CC6999E2B07B141D443DD13B90DC1ACE587BE25B7ADE010322F + B7D1E9D2DB730D5EE625BE8421F8C8B42EDDC5120EAFE0042CD0041F7043F952 + D229FC811479319BCE1ED3DDB44D8BDC25000000A00200600679F0072590070E + 10EBD528EDD51EF388C311E59DC9144EC654D0E8EA5D0E459EE4E0BEEE3F7F03 + 4DF0EDEC4EEE3E1FEE40CFE4EA4EF49BDD048581D5104C105552E5178D67EF35 + D3A21EE3445CEA125D2343251C8DD1230C91C2F5C5366CED41497831220CC9FC + CBED7B6E6B286002567DE716E1BD74AED7A9D7CA88FD16E131BD4C6B8D5CD000 + 4A60004A10020C10FF026AC00066300040F0EC1073E37F1FF28F08F2D3FBBE8B + 1831DDB729DB0ED8CCE1EE9EFFF9A01FFAA2DFEE2FF0F4AC6D0A34F3D1171D26 + 0A8FCC3FC4EFCF122C3DF3D2151EF60FFF1374AD3DE851D42F5D281FC4BD4C98 + 2530F2260F44BF32E00226100237F4DCE7F57D751EEBDB43D3BA41DD32DC1101 + 9007245F029100071DF097FDA65E294D9188B6C4ECA6F0E50FE7173FDB54AEF3 + E1C0F340AFE442BFF4403EF4F05FF4E3FEFEE96EFFE6CEF4F70F083782023702 + 7729783D5C018C8D8E8F909192939495969798975C6D0F0D54140D1D0E6D690B + 5C0BA8A8A70B69170E65580F0F65B4650EB7AF587E549F7E1DBA9F1414540D7E + 58A3A55CCAA6CC69FF0E580DC2C565A45C5B2D5B175D426749015C497F421C42 + 2D441765BE586D5B60E324161B78175C69DB1C781C1C678B6D5D2DFC025C6B91 + 6415AB3614D494B8320796037A581222A1B0255599062154007022A4CC852C03 + 00986120A4439A301D9571F1D3A04D80050E1A60B910008B90120C182001A3F2 + 4287966DDE5068636A53423542885E68738B163061C3FC3CB8B020C08D3E82AE + 66DDAA212B56415F6F74E5AA5550D7B35BBD661D5B562BDAB46EDBA20D8B5543 + 93173A38F4C8C4B7AFDFBF802F39DB15F5015166A9121F7420AB712D5A4DA17D + E2D5C0D39761C53AD83AFCEDDB2A65ADCA740816EA6100286248C8A83126C599 + 001756BB60D37A5EFF1AA6DA640C78C1BB8885103D16FCA9C1C285050B2FC4B4 + E092A586151D491690C0BBC5A0032766546864E08A5416040000A83003A58C32 + 064AC48F0700C5497AF1060C20A0029E4199000D949829B18981991A145C0045 + 78DA01800005A67CA184124E302052092F95014576E13951C66DAFD0F2C02E97 + 7D418C61558105D788249668E28964A1A86289117CC0011181C528E38C343292 + 4627D26071612A06A9824A68B0C852C62CB61409CB2E930D230C15BED8724129 + CC9C62D02A4B6D48DA03697051036D2CE4604113599CC60672237439860E8751 + 50837153BC30660E785484040B6E5821C60839B021C61969D490039873BA31C1 + 32A638A8C2826698FFF1E4022550A85F7808146A8678E101A005769402608012 + 73287128050138119E165C94E1A9167F7430A9125AE8A7C2005804A0C6A4145A + BAD2A400D4909E0A2400E14C864F2D29155156D515175A73891597B1C622ABAC + B35D35AB2CB3D33E5B6DB4D662EB6C1F0258F1811035862BEEB88F28D34644BC + F8410D628AA59206860F60110B918F31064D34147418D53154152565BB3FB2F2 + 8C1F5075D006174A5890030B62842046173218801C122D84C082052C70700A09 + 5E8AC1011250F816423642848044165B34300272430480C4CA620C70C0C3CB94 + 8A804679F85142090EDCE8A9194E44A3051D1BA581C51B5068C700105279E029 + 000C64D1401A499BFF91C7025A88A74403658807C5026538A10615B624ADC217 + 5CE441E04839A5011E0031EC72B3A50BB4518B951D12B36E007D34116D136669 + C5ACDF8257DB37B4D66245ADE2842B5EB85D8163BBB8E1C7021E410A2F92ABF9 + E681D5E300C11418F310C03CFEE84ABC42D26BCB2B1D20099534A2F4AB12BBEE + B2623B533F49E3C0027E5A40B310499050C414217406850507E0C1C51F74B221 + 042A4E208FC116ADBC9B06120C5CCC82108B38D125C6CA1B24A078314CBD541A + 258CAA121FD9D5E08032256804844A6D68315E1E9D79105E0917E00A800C0D10 + 8F1A1641403E406100F24B1B85F8730179656700256800D23462864D008B30C2 + 02915534D007C49DFFA583620121B234F0C11286D0841C3C0B094FB8420F9EF0 + 85C8EA600B618895E770837338CC61256E83232651832A3D6AD7BB9812AF790D + A95EF1F284302E839907ECEE3342B45D29A6E88A7450E10B0D78C002CC700079 + 1030004A38001B3850152EC8A0080720411A64609C3DA12204681C992B644002 + 33B0E08E46D89E32B6508303CCEC0FDFB0DD02DE800003D061241E4983FD54C0 + 809EBCA703E7D18E1A8A8285A7C9A02706B0140554A0854921A00487A44200D2 + E0815689443D7C485B7894F0BE6FBC413B4A789B7634B2802A0E8943F9FA10B1 + 5CC8CB6CF9B297BC14E12F8589C26122AB094D48C107CCA1C3663AB31EA28906 + 158EF12ED229E636FF439297638894A1D6F1E275D3A08A67A23845EBBDEB02A7 + F3C434FB64842670C0335A3AC01834B688881D4007B129C20680A38C101C8006 + 1F7888F7BA388210F4D179A668430870708011706F15505A807F3402052C250D + 6A52EA93461AA00C27686492A6A8A40A0CC09FA2D88F3C2AC88383CC603F2D74 + 21006AD308831840B4F9E5213B0C789F29628A0004D02A514AB0A05330581871 + 925086293C2A0997CA54A53AB5A948452A53A3BA54AA3ED5AA506DEA559B7A83 + 26E8000FCB71A65839B7898BF4622A11B5262BE0A5CD6D422689F862E2340E46 + A8C494D39CE644A76888611225D0600C485049006A400338C1C88C68240117E0 + 788010D0840B4E30FF42636F34023186A01550C0011BB2F02E24B8E09F39800E + 68DC454A04108D0154D3CED794612A8D6021922A504396B8205200F0E7140130 + 547628F086EC98810E390DC0CD54E084AA785405A9541B7B76F7AE2F6807010D + C8D02B7667370DE1D2435CDBE52FB7BB54EE7AD783C42466B6C20BAD1996D72E + 56E0011E6030D6F68EAB6ED0888A47AE694DB6B63575AF7880375F275F62D955 + 8A787D92805B3130995CA0064678011EE0490223E4400CCA18EC0170A0BC33CE + 8C08D6101E0D30C01C0334947A5918010D9C7701215476043528C20BDE998A0B + 78A004EF72C0CD06E0002AAC92AEE9E3245D3D0A80492A030B35D08E1358CB05 + 2A4C6AA47E58C0AEFF5400A107FCEC3E7E80424D619A9DF2D472010D30C07806 + 680A3EA8010875BB60300AB34BAD6A1504664E339AD34CC235B3190D4B85339B + 35E06635CF59AB4D88000632E7DE3ECB0826A3E18566A03445415ED3BEA8738C + 867E120C26FA9028842A7480058CCE4A33451726318311D81058CFCC09070F0E + C1088A8083EDB9CCC30FAEC108468D0335368005A026C10894308204E480B329 + 3E0007B2E0021C8CE00C824C9A12A030A0433D44CAE38142D688960555D0940E + B2458503CCC6D21A20E0424AA0C3781EC00564AB409417F0141D3AD9533AD021 + 0F5C5083786A7021743AC07E87D40214C0A304D456F79657CC6516CBCC66A9B6 + F9CE000FB8C09F0AFF70AC32B509DEE2B39F17DE179810A634590A58A18568B7 + 22C6625E421AD27E5FF7E8324234C0D5ABB4C897E2805FB46104090E9F4AA280 + 721C14C108BEC64341B6A0851C140007051003030C80031D0C210DC233821168 + 400206148106BBE6F90B9E44D8E4598F0B0ED2B6B6CDE001AA34A0D8DA396423 + 53C16390B2C2C800D0F6A1B86D362838200025D0B212EE8376F1685B0B397602 + 955500852EDC86146058F62CC70DE3A61C69CC4C9A4A559A8A6637175E037086 + F3E1154F783A3BFEDF875F3CE2279F78CA3795F168AE7CE41BBFF9C8237CCF30 + 62B8E82F0136827DA8671297E2A189A8CD8B671C168C5EA2B0D615E9B59E33E4 + 236FC3524EA79910FF904007CF93D2229020EB55EB0009F0FC0309EE64853885 + 400723E30218963F02E0B7E0F754203EF45B9185DF3BF64969F003035AC5AA3C + 2C8528D7D1020258C53F5650E50BC46E40C0D2366FF6670969506836171EC000 + 28C8761161A37E5A40056D307E6F405BC4A6066DC0140F910601B820081035A3 + 9021F89637D955152020439AD7417D90798E77789087781D48677D907832E481 + 2838796EA6799477822388822F18673128791E8806DDB24CDE307A3A28090E28 + 4DC31271AA9756EEC27AAD976843A25F44357BC41269D6436922A77B50884E9C + 80059AB180BA374511F64575257CF0343B2A4140B3B35655320B56380ABA077E + ADE00AF2B22EFE02FF1A69283BA85069C9F0853CD2235EF8459050338BB13ABA + E723A770777E172C4585812050887456888898888A98888758788BD8888B1889 + 88088993288996688897A88874D60462E02239B883A06823174166B523698636 + 44F6E27A18270B54A844F9A284458118E7347252B87B56B81447E20761D00164 + B8286D288B86463A42F823E7C414B0E707BEC08BD4B0804ED13A2C213AE02786 + 6978864DB87BD1584E689886E6244859D808A0717E7E570BB7B080E04881D695 + 6FD8A5419558881D8889EE9881EBE888F0F88EED288F8D788F88588FF5C888F1 + D888F5E88FF1588F08F72D8B108AA0E8809F100AD40084A61851535471F2A28A + A9B32149D85F1E27FF8B6F688BB66885CC281ACF680C3F545F00D390DB2884C5 + C8182C110A4EB480B7000CBC707AD5737B23877B338986037693319918DDF80D + 04365DB8E0934CC18013385D43057852214E2060028AA89499D89491C8944E99 + 8850A99454199549699553D907CD471006B98337120DA5711841A87AC44884A8 + E37AACC868FA62917A683A96B6911CC99219320B45840C71584D519297F5E087 + 519497A46537BFF043D57369F8123A89647B00E69025B98DC4387188B956AAF0 + 4571E80AB75069B8B07B97E96E148837FAB63726800688089A49299A50A988A4 + 9988A7199A85F899AB299AA6A99A57B99AA8299BB00902A95988AE799BB68988 + 5680082DD0953AD8FF837CB59010359601437216779689468515D971E3F471B5 + 088571C9916678017E400641B9006B4005CC657B19958635730104B80CBEB800 + 724001E6B10A6D2007A4707E651006900613D1953B4CD2334BF1230FF1190E48 + 06C9609E5F200789E100FCB99717100716C42397A10A72F000612007DF784EF2 + B906D6488EA4D00661D000945994501178C4D204B25995207A95213AA2225AA2 + 247AA2269AA228BAA22A9AA220C089605590C0E9675F090AA220960D798A8826 + 918D8184DF944190F62FEE02977139810C480A6AC0001E503D0D8013251006A8 + 100679207FA6400179A0066A400F01D0012510055A1400543036CA100625E004 + 5140065581054E0AFFA527C10041A30C1DC00025B0066645010653066A806E5C + 10A70CE0076B50A572FA3E5C100651E0044E30A05810050C90070E5A645AB004 + 6EBA06A07129CB50066E1A06637A0568BA00841A0561D00A0B70054E4001D5D4 + 204C804DE768811AA4071E2AA2684095AFDAA22C0AA2B1FA99B0BAA2B55AABAE + 3AA2B9CAABBE5AA21AF01CFB20A333DA5E08490C3AB228396A8AB8989CAAF818 + B05719407A91422A85455A8641D9800CF04915DA7FFD1705CAE0010CC06590D5 + 7F5020A95C100507D2A86AA00503945B50A0A84E703014E0534A7005EF7205AC + B204CAF005080005F01968334105C4D6AF89E204509AAEC30669E3D7AE25E0A0 + F53A6C64A00CB3E2FF1F5BA30C14C02A82AA485A405779100568D30651E0AEFD + B20050A004E0CA0A08702961A6A119244EB2D604AF6A02349B94347BB3389BB3 + 3A8BB3364B95350BA23B9BB32A1AB4445BB4466B02C19A177B51ACEE55A36149 + 6863A998662991AB830B70450CEA12A47AE97EE098ADD93A8EA4E000FD47054B + 71292A0505CA7005E39A0A38A16CE6711AA4D2194C000510D26D50D0006E7A76 + 14507F57C00A6F506F90540F6FA005E627B06D70758DC4055730215A80AE2550 + 6F74D57F65A00551601E14D02A0F5B0F79C02AC34601A7E01E0890B201A0055B + 17AAA30A13C44605ABB006989B0A61A07E757337D7A537C412021360051130B3 + A379ABAFDAABBBFBFFBBB6BABBBD7BABBB4BB3BD3ABCC03BBCBE6BABC81BBCCE + ABABCCAB94686005182004A1C7B462259C0A490A513B96C8199146C8871CA971 + 1DC08BA3F32F423A44D73A94B8A07BE2C7005F701B6A0B05F0AB0C54E0A63B42 + 01E31705B3A5B64C80A65CF0050C7005E1AAA85180205CB0040DA204018210ED + D101A820078B7B057B45050643A843B6005F5002C4F6A7E91605AABB5339C100 + 080CA93931B1A14AB78ACAAFE51AAF5C3764A590101C95067B1B0558C00A8B1B + AF3D9306F70B0518E2B283E832CF27064D80B35370B3474CB3496C022880C446 + BBC44DACC43BBBC44B1CB4516C0250ECC4347BC554ACC539BBC46340BD42A0A5 + D8DB4C4E5B85509BFFA365998AE1FB93454A817D08453EE27E72F993760CB624 + C72F593825DA485A91694D61F8C7E8A02357584B95060B4AA42EFD5268B5D798 + 7FAC9353428791599C6E398DE844C7BED80AE4888AB28B8E3EA4A540800421E0 + 307740675B6CB4577CB4557CB36E70B3A91CB43DEBCA3BFBCAA72CC5B5CCC4B3 + 6CBC2FA04C5C59C63A849036BA90DDCBAC10D9569061A4B77886D6D89FE88B18 + EEE6B5776CC7E9500C8631876168AD1C599EA51884781966AD23131EA1992ED9 + 443B1C724D4893E80472798557B7B7CE79558E46DABE2C09CD44F9771B6A0CA4 + 10006FC0074820030E630520E006ADDCC4048DCB597CCA059DD0B8ACD047DCC4 + 078DC55EACD052ACFFD014BDD0169DC505FD99ADF12DD7EBCB9BD383F2857AC3 + 0C6066C94DED5B9DD4D8CE7CD9CC8018CD4D618EF4798160B80CD328949B9C98 + 20178DA783245CF31084297BA1730CCA3CD41A19854E488B22979172B8D4D368 + 8E465224F50CD54FCD991EC2A169C0075FF00640E0CF2B90BB6850D1130DD108 + 6DD115EDD0106DD6192DD6674DD64E5CD66B5DD10D7DD137EB5531EAD19C03D2 + 568D98CBAAC9F69271779CCDD4188DECD2CCF500CF2E3D5D499490A290068C10 + C862787E56584DECECCEEE87920969182C195F1B2A130FF18445AD91481DDAA2 + 5D93E508AD4479DA525DCF82380C1CEA017CA0D56FE0CF448C06538002B67DDB + B75DDBB6ADDBB8DDFFDBBEEDDBBCCDDBB81DDCBF3DDCC59DDBC7BDDBBFCDDB26 + 801778D00D76AD39A547CE693CCC3F7C44E258B5F24C8E824D3A3D4272B890DA + 4F8DC89371948B503A733C44D688D3EF6C3DB5F40CEA94453E5D72719523A3F0 + 965198DFA3BDDFFBDDD4D0FADF000EE054FD8A4C82051E70E058FD05B26D0563 + C0C4CAEDDB0E4ED0B61DE1CC7DDB11BED0B87DE116BEE10F2EE11E9EE1093DE1 + 1CEEE11A8E062FB067D511DDE3321809C92FB627D9514B724FED93E388CCCB0C + 2553A297EAFBD23C8EDA1B224D9C1D515F18863209E3935D92E974565688C81C + C7D9B9F7D946CDDF52BED4A55D2FE28DDAAA5D91C272E057E0016FB0CF25E07B + 5680066E90DC668EFF026C70E66ABEE6C59DE66CBEE663F0022190082A2E2E80 + F692C92A69461E84E04D8134BEDD29EDDD7EC9D7E20D198F112C8F86975E088C + 7B7DE4A5A086A627DF24973BAF18D4F71D9D503EE59A7E93326EE586FEE933DE + C9FAB296075EEA6FF0055FA00674C4E0650EDC232EDCC8FDE61D5EDBB51DE167 + 0EEB6B4EDCC51DC62EA208754E23F0E509C5303A77B5E77A6ED86E6C86149ACE + 38AE18CD5C4B0C78E5D9FDE350312C819E56429A7AC58E577108DF4ACE8C9ABD + 244EEED9FA1DE59BDEDFD61A8E868EE5D26ECFFC05151E9007F17EE01D82044E + 40020CBE011B8002FB6EDBFBFEEFB70DF0FDCEEFBF2DF0BD6DF0087FF0046FF0 + FEBEF001EFF0093FFFF00DBF01711E02C3FAEB32B2099DD00B8739D9D69DEE2E + 1D9446DDCDCE5E3AD71DE0879E3B97B16F5D7B863A494EDCCC98AE10D386818B + 942E57428DDF997EEE53EEDF28FFF3D03AE0A37EE0F25EEA1E70055FE00132A0 + 035630056E20F110FFF0C91DF10F0FF0B8CDF00A6FF5510FF554AFF50D8F02BC + AE17C48AF17DC105176025A0B0908E3ED2B338CF279DCDDD5DF2E8DB93521DE0 + D42E0C8ADCE795B928D94E5F7A3E71E810688F868BE18E19FC42EE3BCFF3A35D + D3EA2EEDEC2E66EF0E15499F07451FEFAF6DA5ABFE024FFFF45BDFF908AFEFFC + 0EFA022FFA5B4FFAFF2EFAA87FFA9FAFFAA1CFFAA3BF019C087A641F18330F96 + FC22D9ECDCBD12C7FFF85E7B8B71DF2ED56A374E7D37B5D08AF9E6070D58C7D9 + DCEC2319F3AA800E84519F5048DF402D3A445DEED6A8F8A28D7BC6E8E9A10EEA + 9B795D4BB2440D90F4468FE0599D07FE9C022F40DB9EBFF053D0F5F1FFFE083F + FF1B60FF5B8FFFF5DFF5F40F0828284D561F1C3D5C018A8B8C8D8E8F90919293 + 94915C690E580D1454580E171769A2A3A40B69A6A8A7AAA669A0A06DB0B16D17 + 6DA20BB7B8B9B75C0BBC696D0E65C2C3C20F65C60F0F1D7E5414147E65B6A2AF + C00E9FA7BAB8ABAAD2BC170F7ECE541D65AF659ACEE20D9EAEAFB4EFB3B3EDF3 + F4F5F6A1AED5C465C1FDFCFFFEFC9D63968E139566141E50F902C4431E871E3C + F07943514D08122FFF9A4C41B1A1239B8E1B3E821C49D26349922243824C79B2 + A5CA922C57BA9C39460C063C3D2AE9DCC9B367A505DFC25181768D15A951A992 + 6E63858F962C50B6B2E9E2650AD8B064C8921D7B80A5438385141A94E392886C + 2BABD6B0F5CAB674D5AD0B653685EDE0205E19AFCEBE385B57371FBCBFF2EE09 + 1EDC8A56B07D8813230607562F95065F29B429138E0FC4881EAEF06168518718 + 1F1C51820CED92F4CCD3A853AB563DA6909024897CCA9E4DFBD1250704FD786A + 63F428D2B6A872716B272FAAD4A9550F233BB6156B5782CFA2C50E60F617AC50 + BB8E034F43F69BDC06E4CCE14DF7981D71C0EF06ABB757D8F0E1610101CA1788 + 05FA5EDD1D3A04C0FF54F932C42B6F008144082188F1C246AB25E892050A36E8 + E048638C80010767D466E1853D91D506160691534B6FBE6DA7542AA3B8D28A71 + C7AD65CA05D614C31C56CE79D5805E0D38C0DD7464DDE2162F54B135622F707D + 47D72CC18CA7D733BBF9150F7AEB350955535611F3DE94F055590C337A7D511E + 3F0E50C72233963D8499666F7880840C055A81C6141B98F6A0836ECE14E79B34 + 15C2011118E6A96724693CB0C9630FD818A26F238AB84D2929E6429561CDC1C8 + 1557CF2104CD05BD94451D5998E6C8A3764A75E7E75E7439A58C5CEA98A7247A + 8139A95E61B0B428E57CB0D2671F92B32CA0082F0E7440051F793C2466667C00 + 01049A628C30069BFF1B30A86CB2CC2ECB6047CE829443B320456B2DB5D14E7B + EDB6D8763B2DB41D4538219E7B96BB671A7189132A88841AFA23896E254A9528 + 56399A0C168FE61759580FF0662B8ED45D8A4B8F522D05E4A7737DC22238721D + C957604B469C9EAA4DB2FA9E6218EFC3589680DAB8404E8A0085C5AEBC6216D1 + 665F7C71260956348142B4232D3BD3B3CCC65CF38227D13C73B725E95C6D4963 + BC6008B9E6165DDB02B91E345439A10C1A62A1501B9C6876405985EFBD8FE28B + 457DD0AD536BA50167AAE95A040B179C3708F365587DFB72A2F6791253AC6A7B + FABC1ADFDDFF0C849033BA7DB2400B442FD04607147C51B2C9115194870C24E8 + 318605DB428EADE4FF902B4B79B3975BCE6DE5C9663EB9E69F770BFAB353BC80 + C16BD3196D6EEA95701154336FB3EB74D4504F5DF02FC1640DE9D65BEBFB9D79 + 51917569A664ABE8E3C06D28B49727D68CDAF65049BA2371AA720B76E22B17E7 + AD3D95C2BCB771E1E55D43000C492C22B8575FF887D91B5F64B1720A2F24EB46 + E4A3636EADE7F487BEB9E8FCEF6F414D7810421A54A73AD64DE23678014F196A + C10DA795C25DC0B19D8A5A110CADED8E775BF343D776F3941B896D6C9B9297E0 + D0013D7E380F324A838CA9A4F797EA552C1FAEAA12DEF0A6B782F48D373CF840 + 06C817B22095C95726A3C81B9030A0158CA1739AAB9C129788C42572EE894E54 + 6213A328C5282271FF8A94732216FF27A1431890801642C54E7891BCAF40CF6F + 0E7C1A046B37357A39006B18C4E032BE42A340D5CD6FC313DBC02488B4917142 + 37C9F04A3394F698F0410C552E7C21A332C6C8AB60097C6A4B430A7298013070 + 873AE85A82E17E859989E8A5882F38E215A138BA2CD6AF94A81CA529F5673FFD + AD92731B00E021C088A1EE4CA62FD83920D20877100F35308DBFA15D042548C1 + 73C4B1035DE9CA1C25D52F6AF445781F04A1F114A5A3C1C10E3F82244F2155B8 + 40B8B53091848161F666182B61B0CD86BB59800444C0031E10A005B1B90465BE + D02BC449643340B008098C45C57EFAB38AFF0CA840FDB9452A22B126A7830D2D + 2D8409AEE5C71894FF3AE0E0D41128603A50986C4C142D2E984C6422538307D1 + 8B1F3CA6235B582A9A9B0AE1713231C86530A3318513C7633C348FB881D37A50 + 1AA795B6B7538635434B9194400A24E0051E70A005705804171C1086F4D93322 + 00E2431688A591825A919403CDAA56B1BA5525025008205BA84F1048AA3F8E45 + 124B25DC7D1678228B3E10A3C3D40E8B8CD9BB8E2A1332E9E8401B5277D2B045 + B378659B9735C302D28218D66D1DB0A33CA677D3703A2586DD2B270D9F43AA1B + 2E400412C86C0ABC30B4B22C200E61A000AFEAC9493EF06140696283050EB0DA + CAB11672AFB5400E2A375BD8BAF6B6B6CD6D6B751BDBDEE276B7B2FDAD6F797B + DB58DAE44E62E509FF1973D5B0980EC58EA7688429DEB80987ED461A6E95065C + 9362BB8529D3A3F909AF1F22A3A50E5C00127D45E91EA74295A4B9EDA732551A + 79C0638CBA2CA9B14EB25823F7EB5348B2230DEB14AA505340000EC00064AE23 + 83682302C4CC00284032609C158ED8D50A5BF8C215AE8921C29ADC49088E6187 + 55876ECA61AB5B4D46577BFB633365E7D6ED4A8D2D73056F78673C5E8474A20D + 96085B1E8997D2E24D575721868C06C7BBAF9962811FD7C1AF22DDB30F724E76 + 3C7C63873A334B65A17E20801552C405C8D08C1FDA937D4394F081663BDCE012 + 97CCAD65AD9A83CB5A34A31972B5056E9BE59C6636D7D9B66F6E6D9EDB1CB410 + CCB2C396E0421961FF9AA5983AC60F0FA014DAC26168F08DA31CBFCCAE8BDF65 + 36607065C6F9F1C332B2B997443322BD3A566F8F73D48ABBC0D76188BE57A444 + 8C682E5D877A4A36514E9BBC53EE69EF7B403D7228048CD9A18A60921F684158 + E1A2AB303DD503610E01FC1E87E128C6B9D9027D76856BCB06A109F08B1D2623 + 65521C62F2F4CD1AF5E1B6B72B9ADD764D3A5EC259188D37ADE9C29A7580B7D2 + 71BC4FFA571E11EF178C21CF5C906C8D0AD638859A0E947D637D0F56D54D86E5 + 8C6CBFF39D0E05D6A2CA1097400E390006720125B40D69304428B2328C4C61CD + 20AF73C8472EF29293FCE4264F39CA57BEDA298CC0CF1C06B489FD849042DBBC + D18F810C0A1B5DE8FF12CEA2DC4739F7BBDCF81C768761C835768C274A3CEF80 + 35BD2C7FDD05A94F4CAA83348028F3685E18766E90301C79E004AF476120BB5F + C4E4EE9187B62395310B71767E80004280436CD240861995C99EA66508129CE0 + 71E2FA9DCE7F2FF39C052FDCDBBA19F0881F6EE97440A1F2C99C8C34EFB6E427 + 7FD8C7689A1F4D03BA76D7F8E2AA0D84DD2ED5205ECD1AD1A7DBC6AFEA5D5191 + F675F5AD617E3814880234D866E3A124D6D5B056B2C1C94E4E85E72DDC05294F + A0221EF1491698870158C03C0F87993C0048EF1719010B6CCBF2EAABFCFAD6CF + 3EF6EB3CAD17E8000F5B707C725D778E7DDDFC483C4FFFF9E56B75296B3EE89C + E72E2B2AC86EA413FFF9A7E0F9443C43DD087AA79E16C75063A0C2257DD11E17 + E00466A0056F200CCB701022E67AB81476D7B348B5568191750C9A005396874C + 02A65954365499555405D6038EA77C7EC0109C743213212C6832026CB066D4B7 + 7D21475C2C1783DA378332785B07506DDF7706E2B75026E88092F71894D76D39 + D73688F673EFF756F157521BC535F6277A42D800FDD20B4AC57F9F867A1F5435 + 5CD136F97748B2D0064E00013F00005A90076F744E7B7175E400764DD2067C00 + 0566308773C8007ED00E74C37B920510CDA386F3355E7E407CC4970229F07680 + 13324C350325F32B62720559305521104AC9027239307295B85A977800997800 + 96A86699988969F6FF896AC68998E889A6B85AA4A889A7A88AA8688A1BE07D78 + D0023FA83AA65006A1A57E6EA31B5D617EB8D8739AC669541006DDB4849B3769 + 3AA26E80687FCF238C97046A96627AFE07146F1406A77675FC300DCE140B4E40 + 0710D08D00A004255043CE7575F5E586F75006500000DCD88DDD480766500278 + 883D65A7185C218085E636572788835888B148346DA060A3C54957E001595026 + C4620553908337A8900CB990D5C783E0876D7B0217B3725888665FC1305E4528 + 0E23D68583D409DDC46216257425050CCF118502B83CBCC17FA0068D7E856F28 + E66D98072561D8065140070010034FF003104007E00862F3B50E02976406E80A + 6F60063C89936600FF00EA98945AF073F87070BED77BBB5856DAA442FA28886E + 9701B21832654001FE515A13B132D2B7019C388A68D98A95988A6779966B9996 + 6E7996AD38977259979CF8966FD9967479976D19979C089187488BE9828BFC12 + 51DDC15C79818BE1D322E84023BA9679EF4792D2588FC93864CF335217B07FCE + C892A8C78540566854A830F050936D50024C09031950074AA0023D69064E307A + 9C1016E0716448660F7E0000DD98800CB09B50A00566C09A3F8000D7208FD973 + 813C750E9C7673B2995859A98F1327405EB910C686387CC009C342021EE7900D + B99DDAE990B1F47D5D59342CA2564698844CE7256FB44C95D77AD6100BE0305F + 49B284247909C818FF85B0B934BCB1999BE908B7606950E636A6429AB290074C + B94330000375B00274F003EEF89A3A37486C882FED992A1D809B74A0051E9032 + BC52024EC000BE498608F0242CA25354C969EB091EE400711540652B9A592D5A + 65C6179848B3090399829D742617F1022FD8973C6A973DFAA33CDA8A403AA444 + 5AA441DA966CA00332D00299692EC0777E7C03697C459FE046103DE775046815 + 8FE436C6A084C4184C22D29F778192A3A7741EC399FAD97F82A33735171647F6 + 6A4E21A06A00002A900176BA4319C00708009C00C000E0516490814C48561C5A + D08D0AA88B60A2061DAA0516EA01FA358F189892F7B886C8940CCD9995C66760 + B7920684B349F5D4FF4952652621A003C642666C09976976AA7B89AA23A7AA3E + BAAAB05A979B4872DE8701E1B927E26658D0D08CF2B6A9C9934D333594F63519 + E8306E82F2A54C3874BF7A75A2777FE44117BC9AA6FA2938B9F25206B1254A22 + A0B040A0005007A869A7078AA031809B10600650101629667B837A015FC08D4A + F00558500B96768279D0A108809B4A100DA0A08753694E296958560748DD73A9 + 985A88E3432E17B0061DF00557F0A9A0FA06A715021360206669A4167BB1189B + B11A6B016C6005212004E7B527507A6824D67F8E700956916989D59E758191C5 + 6A5DC389AC605A2870010E96694689F9688689A69CA954620A659637628B15A7 + DAFA05BFF905779AFFB4DFCAA8DE08051EA081AD27700C00012AE0044B971CBA + E20125C00072C8A07C409C89C13DBB48687FE87A5C42B0CD69B02D000365F18F + 14502696613257700529E30168B202233089AEBAB770998AA9DAB7801BAB7C2B + 72836B971D7B3A6720913E31799362853D2B30C9D10FFD060CB190096DE3A6D7 + 5022323B74BF3010A2C775EA22A5D28A850183B5552794DD1331DA1A0B7EB094 + DE9AB4778A9AA839AEDC68866A107C6C980C48690679E0071F823BC5C6A15080 + 007440074E3076242A1FC6A491956779F8720C7501602B3ABD1240BDD4EBA2D5 + 9BBD2BEA7614722BA055380C26B72B88A36230061A7BBEE89BBE199B031DCB78 + 598621505A98A3CBFF3ADEF058D5D0B299C06859927FF8808D5F1A35B85395A0 + 1BBA3B3BBFA146A5945156EBB04003170FAB1B0B546006745007765A07311003 + B09BB4316006ED88002510536ED354F89A0762E10AD4450179B0B5C38B9B5020 + 8F8D742FD934A9CE1B285C720AD81B712F9AC32C5A659C95013E980817100733 + 726CF7A4324E60202C50B1EABBC44CBCC439E0B1DD8B2121F65C2BE9927DF569 + DAF058ED298EE2F05F9ADBBFC43822B0A00C356695E1130A078C293C7B2BF439 + 10A7FBA62CF4C0B2D000AEFBAD767AC1141CBB785A074849B5E0A84D1EB0A008 + 900709D1B2A69605F5EA04BD09003FA005C84B6BCA8181BE1364023B70366CBD + DA9BC9988CC94465FF08609508333A03BDA27112C1827C2706D3D7C4AABCCA18 + DBBE14A2B83A717E5E73493CEB8CF7661DF8FBB2CB13B3FD0B99F2B90A00E853 + 6DCAA51E034D2855CB285B7E7BC34D11E8C0720C0B743CC1195C07169CC77A9C + 9A4A90944AC000E29007ACA9044EC0076211800D5026C2BBC210A0052EBC535B + 812F99F652F7287CA92B0D3A7CC3D96BCFF51C82EE64606D7B820CF62B032911 + 6F6B11E5BBA3AC7CD008AD97AEFCBEB411640B2475D054CBBD5A1DEE60B929C6 + 175F7C3DFF3B1C234A7B7FE821560875D154CB9E09A8B79764A3F9CCB0D0BA2A + F0BAD40CAE151C03792CBB788A04ABD99A4E205AB8E99A6AF00657F7531EA006 + 2AAC05C4FB030CF0FFC8AFD2CEBC9369664C5F936B1C9A1CD59B2CD5D50B6CB1 + F82F6DD0540E918279B01954F006FA642C9C88030740D6643DD6659DD666ADD6 + 67B9D667CDD66F1DD76D3DD768BDD6685DD770CDD6786DD72F40024705CB9320 + CBFFB50B12AD9FF342419A708F91D4148CDD562DB614FB7A76A7DB861FA28523 + 7DC5D4E17978E1180AB44060A8D2B110CDD65C075AF0D2775ACDD61CBB7540BC + B9C90008A0002A00054ED0D314E1102530D4BE59BC5F4B811A73411F05CFCE55 + C90C940B537DBD545DDC84F87607D61DFE7C6C01DD10C4320695F8D66D29D777 + DD97D4BDCAD9CDA3D69DD6DCDDA34FECBE801D0941E6213F2775858DA6543119 + B382D1D3A0D160ACFF794C31A28C2917677C0A2875D92C39999CD67A33990FA0 + DD0692010B11AC02189CB4167CE0A77DC14A8BA71970AF64C88EDBEC0425A006 + 161E051DEAA15AA004F8DA1464A7D4C8D43B32127C238664D8A01615B0C9297E + DC2CBEA285680859B6006B4005FF6CA36F9005765B203A9A036E9DD73DFEE36C + 4D033E3EE4405EE4447EE4424ED6429E03DEC7015B401BB2DC86B8143C06EC8C + 984073FB1B2AF0BDE59AE74C928B98515AC0F92D36FB6D92C0FD5CD650530FFC + 057238E000E09AB040BC329DC11980C7B06BE77A4C00ACCD8E748000B2ED0480 + AEC8BD49D41C5CAE58402FB7E422AA16E290D280603153F3AC16D850DC2D5EE9 + 12A7433E481D6D00FF069E8A386412206A20618F53DDE7BBDDDE7D0042CE89A9 + 9ED0AA4ED7409A034DA00348004FB251DEB89764E85DE57E551508C3099E90D1 + BDECD86EE5E50468D17FA47F639EDF07CC22C0C791D193D2A4890525C0E13DF9 + 06B0C08D3EE904AB79E0041003488BE0738EE07A1C03EBD8934FC09A7D0E05BB + C9B5838E0048C99365E8A78B04237194356A68795D3ADCD950BD2B9EE2D3DBEF + 00FFEF02CFEFFFAE0799CAB6FBC16577074462122C614602A85CB1463EF1474E + F1165FF1180FE407F00262800743308B9510E5C53EB9D851296AEC7FC70C751B + E2808BDD1E2E6F22C044EC52026E91F168CD98EC63FE16969BB33794ADA4F900 + 4E809B0C5ABC5F70FFED2AB08E0BAAE0099EDAA9C9E0D34CAE7E4C00A9D98E66 + E0E75A40D4EE4EAE3FC093DE88007C70155A83418E82055B6775B75714C741E9 + 6A5FE92B6A05C98D5C0100175F1DBE63724F61360118B1013D9EE418BFD7A88E + E479CDF768CDF76BCDF7849FF17FCFE41DDF028B7B580AC4B22C0B0B549EC663 + 1E3648032976148F5BEECBBEE1E5BCD72291777536B26338BFEB016C1FECF9D9 + 35E9005120F4E66A9A749005B0F0E679908EEDF804A38DDA49EB01329DDA7580 + ED5E0F0777BA025CCF9474A88EDDA80276E00306C0F53DA9046A700E1CF528C8 + C035CCAA5828A20B01EFEFDCDFFD044FF0DD1FFE2B6E8855C00549305199C1F0 + 502511388A113B7AFFF1F08FF8F13FFF184F035F05F29220F293BBFFB2000869 + 0B5C5C01858488898A890B0B178F176D9090691795979699699B9C9C6D6D650E + 0F65A3A365A70EA9587E5414541D65698BB38B865C0B69A01D7E14145FAE1D0F + 0E928F929FC79F0E516610744A4E0CD166745F9F74667E69D1003F103F003175 + 19E331E51904E31975E6E3752A100017B730E31F7AEF10F9FA10472E41412282 + D87181AF991935581E245CF8A094C25D7E3A6029236953A38B18175490B0B123 + C78F1E43821C29D2638A0F1F849C09106041075F7CF27898E9E14A4D3E319184 + 2031E2458E0338800A0D4A74A8D1A2488F2A0D4A63A9D3A4509F1A3DF0620406 + 2149586ADDCA3540FFAFAFBD1AC04AD56698D9B264DB6CBA45AB2D2243706F6D + D2441793DD4E73CB92C292B0A129B2A258B9F2E34096DB59B62A3928E3A7C157 + 2A6285118B840C190525747E9861E0044A342700E8BCF904000083694A2894C0 + DC0D000274EDC2894B473BC33B0019E020A2B7C38B0F032A54FC08EEC34EC07F + FF4EEC79223C1F02857EFD9EDA2B7122C50B19B337AAC0BDBBF7EFE0C38BF72E + 41C2490E2DB2A629B3E48B0799F0697A78E37EA798172E80E2D84F743F0DFEFA + E1F0DF7E011608A080FD11F55F800326682081074228A18300D290C30B5715D2 + D586BF74E88B58A1A422E288227EF2884587D87218215A1D820B2E954C722225 + 27E25549590DF1D5FFD774213AB04A2B54F8110B2183ACE86225A434D6CB2F54 + 84211924C654D6461EDC00E004057920A085675084568D0374D0E14D664A8411 + 06135A0090CF0F4AC490CE3AB2D5E60E042AECB10301BA7101070C3BF0208204 + 76048ADC3F52FC23820827246A80737D45C7A3427C9D529120DA35724B781C71 + 9769479A76B7E9A79876C7C3070408D1C3200EF811937CF2BDD18B0725384182 + 186C18285554B8DEAA6BAEBCDE6A81551C64B52157607D05226065257BD6596A + 0962A49183E042A35D757512C9623936440A2A663D205890853DAB482E6560D1 + 8063BD4016CC3091B42B651B0DA840070241FA9187165B7A165A167E20D01A03 + 5F7053661843CCB0FF8C983F1810CE38049433DB383B88A942A227EC90010C88 + 407C82085E1C2AC21E1C234A71A27A38A76D293C92A2502893BEA81D5BE3C52C + F3CC155891020F7870704612EB5181930740B0CA6A1E32CCCA460EFC2D886083 + 4C27EDF48406FED7B47F4F2348B5D254676DF5D6521375E155C20ECB92871D1E + 0BD8D9668D6822A56C89DBD65C9CD4556D5EA240BAE374227A0BA49086157958 + 23E49A4B8587413E590C65529AF10302E7FA61AF96F9AAA9C4BF11A9CA8D164B + 643EC412512020263C4FD4814E1DA4ABA3CE3B759EE045A277E6C9056F23C74E + 71403E74F3DCB6294F678A249562C496467AC81C3C77C37F573CCD9ADE4C0007 + 30A8F780CFF1B18AFFD31748147D1F1B07EEAA7DAF5029BDFDF738FC8A87101A + 8A5D6C58632DABACB2C8AECDF6216E2312ED8B73CD486DDC7AE97832B7382A19 + 6419F230922170010AC1152B22EC3ADCBBDAF0063A00800FE76A801FD48000C8 + 75291F008002053AB00BC794204C6A58021534370334A9C91B4F70136D085007 + 89C9AE6217DB4D0676B083179E003976704EEE74A72D7659A477BFD34804BA33 + 44EE14B102474C2211C3630724C6CC3C1FC0430B88D0120734E00D79C8A2D070 + F20620A861272FD84083F843C6329AF18C684CA31AD7C84636B2E10521E0802C + C446B60FA58F4478CC23591E61A9F8CD225A989891202DA198BAE9CF14DC0ACC + DE00182DF9FDD111FFBA68C0E07C81BE50B86B8165D10204A00019C834400D4A + A820BE4E680688B4E20B6FF08026CD308325F46206B05C02134EF339703C2C06 + 12DB83EA36363B1AC2A0487CAA21C54026856206C107F9D0C20E55360A1F02AE + 52B7B8C8059047CD6A22D13CA3CAC019B840843684810257E0C34C6442139C50 + 200BD5E3C9180214210A41AD9D0F4A1019D9D9CE79D6139EF8DC0F1B80B5CD61 + 9D8F02665B9FFA060A981AF5D18F8A005CDCEE47B7BDECE82F66618C63FE270F + BFF98D11B9F05107A8D08A7449100BA98012E2A48485D0E481A392FCA4124239 + CA7C286117BD788338F35002663020731C9DC1176009CBCE7D4E054A20C00E5A + 48271B52CC6230B0FF05EC0E55A84209C4398B41C52950C6AEDE5DE477B968C3 + 1287C8552776F5AB4E34E256C34A56B062536749E0C205BEF91E72B2EA0DA9AC + 5E08C4C08236DAF5AE78CD2B5EF789812CA4615875FC82D9D24658B414B644C3 + 20C641111A44854E8B90D772E8DD1693B70E4812A00FC04EDBDAA6A20594E547 + 94FC02642692C04B2E900A0E74154AA900CA95569094309D891AD450821230E0 + 1B8275E5126079059E96304DF9A0433950A7CBD519D59744CA400A8250CCA61E + B31BCA8CEA547BC83B4A4113907AB1A676AB79330E302F0D4948D517C4F91EA1 + 010D9D4EB8CF4FCA38C633C6736A5B43637BD5085F32C277BE38D8671CA9D895 + 7F0674A0020D30B3FF4ED448C612299A70D3444321B5BF10E9C5B2287D401B0E + 7AD1689605C26091A0306A14A328BD8B0210484DBA204341D70237C41CF48307 + 665B5B2738611A08F0004E774B01583281A74CB82002883A31A3C60EA95CE081 + 319DFB54082080B2D36D261FAD7AD54DE8E5015E8D3258A7ECC426527988562E + 6B942B908293E06167017000196670852CBA95264048B30CE64A57A49DB100FC + 81B35ED128E734D679CE7626E31B758004FE6E25B083D5A3A0054D0C41BCEF6F + 8B8DA642EB07D9271F9247222A03861B20E1465AF416919034BA9814910D1B3A + 460A1CE927BE00013350325DAD5DA912601B912FC42A56D0D02438C2E18A1A93 + B9844CB8F10CA000FF8172480C51AB33AE8F692802E73A17991050260F9BC93B + 262B3AA37B018F12A52DB32356B388E521550B321187067C217AAD92693A57F0 + 02ECE1F9DCE84EF77E2EC4E77E6AC5BFE913B0BC019C581311B22D96FE9DBE2D + 0D23BAA085C18874F062200C994A5F9A109B48C52E3AAA2E0957847EA07697A8 + 41AC845F3C6635AEF50C669410915DA8210A2E8E4697E8A08637ACA30E6FA082 + 6F739D6BCF85C3853EB6E1A008F58F1C1A39AA7E092976ACFB32EC622B21520E + FA95854EF4A19B75541C00832CE0E59EF2BE953E40D0094F58805F755BFDEA66 + 3C000BAC2083956805D07734ACD8118BB6B1ABAD59962AF0BED7AE76C72E5847 + B8A3EC3034DD0A4AFF4F78B38350CC032CBBA4D10290E73062B4C491416A337C + C143AA716D34A250828F3B8E83148886C8A1A0382DCCE1254E880103F2C05B5C + 33410910D8430C88BBCB9853CC0BCC4DFDB16D97644B02BEE75C70F2CF15A244 + 2A8BF5F6451F2B58716FED1460003DB1B72238CD4B932B443D042118C118D68B + F5E63B9F4039E0730FDE7DBEFFCEFBFACB6A9F412B9CEFEE3BF2996FBF1BFF06 + 2EC9824FD8A2D20ACC655DD100905A427E104FB0488F815A33F0E1F05FA160BE + 38D3F82F38AE7251C0255000059E63060DD101614005255007BB856333A0382F + 575431274C15932833977A4566647CD0103AC76496066D7603655C1501243882 + 2468072578652488FF442588822988652D287429E87BA5727E65400536016E33 + 71055DA41331701F4001674680037076676F1667449884FB51674C8884459884 + 4DB88450E8844A58854628856CA00321E07560D72383F6855F982C0F877EF353 + 868A76861871233FC717DA8237A9407798A5597EA3778241495430119A7560E0 + 17373212251D605287970587E76A50902F2E56027CD0188E13066A508885A805 + 9EF3030C500773E0380D40633656428AB30EBF767AA6A71CAA178AC8165C5060 + 49D8E16C1701820C810546977BADF88AB9C76538C33C49B000EC814AAC621357 + C083E1B466E47600F4F47CC2786E16C2753D4004F02670D8B78C04955896E03B + DE178DFB262D7AC1FF4C9016510B677E14462E7CF7187E506971A168F4D36F11 + 670C0E300D51F00682483679000D0CC078572041FFD70003882FF81226A41303 + 2540016180532AB7533300002A50077B00739F383217E85436B70F005002AF97 + 1D08762DD9C2102B58822C688217999116B99115D9912F78912FF8825044002D + 7006555006644005A9E474AD7278BE380248F38452389353D8844F2893359993 + 3749853B49933B89934C588CE30304A165473D6276875576649794CE8876DCC7 + 7650E9584FB632A1E060E57259EDA7167D44407B774AE8E30001640B65388EF2 + A740BCA6057C005783687114C0076AE0042590078D238F0C802F1584006AA206 + 5D00069947018DB1FF5B2A074B743090A34727C57590A0686CA9573BF0B00FF0 + A0065615916F081D8DC28AAE7899B098995B064552B4059E150714407CBB0857 + 5EB46662E066C3989AE7A6753A800148C09695842CF4C68CB4A95897268DB899 + 7E2AE38568015AED571816950B7A632CDF0896D198119F267892D0000EE40169 + 491FB0F915CE1941FFE704908800A1C40D25000755500573D00508E88FAD3498 + 04699088794333A7902E4500A0E70D18D400B0A7182AB38AD01192F6799FF899 + 9FFAB99F56807460A016C2D7564303347C804E3C91036EF6933AB9A00ADAA00C + FAA00E1AA14448032C2006242003AE52367704861CDAA1224209D09876226A86 + 57053817F0869116FF69C3F90AC0592490349CBF702C4E39A2E2989C837401A1 + C1005C441FEB08161C855211540215B45266A026E1D0055DE09D73602697D84A + 0D349066803A22537A31877A8A5928C836000440001FC00CFBA004192199F309 + 1D13B99FFA0992661A92689A9F56804DA5D203DC840558A245D273055F000432 + C00053E7930B2A8540C99348E8A75618A865D49383CAA7FC9103FB4402AF692C + F1369B904A9BEA730C04867751C976FD461928BA18A07587C0293FE452870035 + 16F6B616DD978A30E29099F0084E1062CE9996EB887F8FE1498D53624A600698 + 215C7560795BE09D7BD78F99C304A596AB02799E14939035B79EE8C04206D00D + 6B02050755481349FF99F599A6D67AADD8BA82E6913367400417F03C027A66A3 + 797C2130002C1084109AAE12BAAEEADAAE3769212370A144295861B7944879AF + F69AAFC8F28C6977A9B9D908D7A2A2FED3015AE9A2C2B951BE305A10352998FA + 4C9A1462ABFA06DEC000F3311FD0897F16F7A39E9407446A06D30001600007DC + 79924ADA41615002DFE0AC74B202C61A108AF90F3EF00E5ABAA5343B0105E10D + 90197B273AA6F4B910F8B9A61FC99141EB91409BAD50C4015D200F6DE0073968 + 5E57D00B59F0456230024723A87CFAA7826AA85178A85C6B935D3B854B08AF24 + 800744697D917AB6929A162DC336B8E9AF37920CE5C20BC05018CE2217A0A024 + 83010B6EF87051B9FF0093A30F740005DAE0AC00F0AACF89B13E4AAB1CEBB11E + FB0D22FBB823DB0592C64151A00F23E0B1A063AC178843DDA004E7C001CB7A0E + 2BE0ACDDA09BD3DAB30F100177A0BAAC1B92ABFBBA2FB8BA2408BBB3DBBAB65B + BBB04BBBB69BBBACDB9F52841D373853C417342B5634547B000590BC44A8BC0D + CABC50C8BCD01BA1CECBAEC95B84D3BBBC0A4A032F20AF81E6A1DEEBBDA5CA73 + 6848A3258A9C37729509DB01C669B0172069A7D470295355E53B3F5EEA982A4B + 275A30133BFA053D0A9B1C555345FAB14AC09D905B05493A07959807CCA00223 + 800778800123405CBA647A7B108A4E250276D00D063001344BB3E74000270401 + F279BAD4EAB3B16BFF9FABEB82FA29BBF6A9C2B5FBC227ECBA1180821280121C + B0053CF33C5844A7F28113E8643D2C9003D4EBAE443CC4463C8517220632B041 + CA88B64E9CB6CCF243FDDAB6C719095D395A74EBA28EE000DD0850DF18707B64 + 116CCB05DCA00F21ACB20610263A1A4E870B9D894B052F0600459A196A500504 + 0CB93050057EC000B7F1C01880010E1C028A9330131C739B1B108B321C1BBCA5 + E790011C300E2BA00F3B4BC2A83BC3AC0BBB28C8BB98CCBA997CC996CCBB9DAC + C99FECC99D1CCA35D35D2D9051EDD1B4B908577245023E91B5D85B93D75BBD0C + 5ACBCFFB93B8ACCB124AA14A9C055DA0AF4C89AF4A59CC847576DBD7B0E2188D + E7BB0AC1D06C4482FF24082B5AAF301128E36093718A5CF039DE200344E004DC + 0C0106600303000F4EA0BFCF79B1A7D60B6952A4EFA00473D09D772CB255D000 + 0C202674F0C7FAACCF78F0B72AF004856C43C536737650102A30B38C8C0E1C30 + 018B920FD852C2106DC230CCC2148DC22558D1136DA6BACBC22948D1BEE75D60 + 40110FD0007C60135B449A5237027555C42C7DC42EFDA0BE8C0759C0324F5CD3 + 92BA3E943AC663E98169B8B32CB31644B2C55DAC6188045169C14799B1264040 + 0470C0D40CA02666300152FD0E0781135C747F75E40B1E5B1AF0C0077260C776 + 0CB973E03999B1CF660DC8355003B9E4633387C1EFF0033F500403B002A19B0E + 133000E5DC0D3C1BFFD1D4EAC977F0D77E0DD8A29CBB822DD87EADBA86FDBA89 + 1DD8841D013713454AC7050F004EC41B3D7C0004970D046094A0D5DBD99EFDD9 + A01DDAA23DDAA45DDAA18D032C60150DF0BDACDDDAC84C4821CAD3D09855B629 + 3F278A055E1924D6C143F1CB2EFAF0031E708C3DB0273D00037520D553DD0C25 + 504E6979B883480194172674A206A9D09DF26CC71E8000DE5003AD79D618D09A + 3AF0C024D00D09F30402ED544120002EB026074DD7092DBA78DDD01080BAF44D + 7BBBEBC9198DBB87BDD1F87DDFFACDBBFFADBA34EC65DB76B75F506648706633 + 91A12510033D91033460CB2F2DE1BB8CBD15CECBEA1ABD056004153A3E376DD3 + 208ED38536C5CB1CFF998004A28E940BE6429C6D8873DBB2B0FA1002C33DE37B + B2273080041F60B3F0B0DCCEF9AA32A596BF004A496D6A8071DD555053745203 + 7EECDD671D0265FCCF2F34280270032ED00D076D03A1FBC81CB002788DD7FAC0 + D7F56D07AF2BE688ADC9644ED88A9DE602AEE67770E66EAEC9827DE6852DBB1B + 312A4290CA174006EEA1060A1E4EE385044E30573069E1A65DE8867EE888EED9 + 34300662E0E1C24CCCC3FCE8927ED4A728DB4CC60914B600A2E0189C661DD2C5 + 4CD2B118FA30002951DCA60E03A80E032D4000EF400771D9C3CDAD968DA8053F + 400751B0047110072362DDA701012E30B64CBECFDDFDC73AA00327F4CF013DD0 + 37D007549E0FE3BCFF3CA14B005CDEE5F25DDFF43DD8FB9DEDD8BEEDDADEED83 + DDA6D9D4023DE00073400158C49235114EF4E101C6EB02421CBDB34CE1D6EBD9 + F10EEFF25EEFF38EEFF8DED9D84B03DADBE87FB0054E2C9B1FFEE1942EC6961E + A6CF54BEB78D2E83911052F5E28E320AFAB00252FD011753DCA99EEA1CF00D3C + AEBF3EBE620CE0880E84EBBA5E2272F000A0010F21B0E4C1EEDD7850ECDC40C8 + B323050270F352D0ACCFDEC80C33EDD4FEE5D60ED17F3DF4445FF4465FE6469F + F44ABFF44CDFF4442F8BE37306ED4BD27C0E6E79A05AE94402419CE85CDFF55E + FFD9319D051EDAC4AECDDA62B87D09DF3B79E1BE76E807BBCDDBD2E117A38EDC + 1380F1A97E312D40FF0F30900566066E7CC000A1840003282F4B3004B91E0721 + 420550F00E06D0F24C3EEC90AFCFDD8D07A141272AE003017103382F05BFC1C1 + EF2DED5DFEF3F910F43D3BF4655EE6623EE7A83FF4A99FE66F6EF4AD8FF4AC3F + FB73DEFAB11F0112C003357892A1497CF29107800ECB3129DAFA2EEFFC7EEFC8 + 6FEFCA3FEFC70FEFDA3BB67FC08C7257F0213EA92D93F6DA513F9C5A870ABB4C + BAA332154FF7525D0779AFEAE69FF72DD00296ED9C50C0525A70CF003003871F + 075B009A98516A8EFFF2FABFCF2100082C3F103F3E025252411512031304198F + 19902B0395960306109A0F589C9E9DA09F9E77A4A5A6A7A8A9AAABACADAEA612 + 291F045D170B650DFF5779BB791EBE79577C7C6F482124232C3405CBCCCDCECF + D00509D1D4D5D6D7CC342F62485D6D0EE0DFE10EE2650F0F6565E3DFE2E4E0EE + E3F1F0F3EDEDEFE46D171769690BFEFF00030AF4C74F1FB8077E2850F8D2A0C3 + 3907E9224A34674E1384463626649CC051460B1819607CCCD0A224855D1E7A79 + 80A2048116285000D09931E4C190380F3C28A1030100093C18820A1D1A548750 + A3458F0AC5536350A14441820C98C5E1D1A30F942E59CAA4299457515E4F4528 + 359654D9556755A57DC56A6DAB085624F0C0D3629F033F6F52FAF275C583B037 + 403CC8303682068E02879F25460C6D71B3C59099455E36993165C998ABE1D046 + 0289902DEED8E1FBFF56068BE987A3DB885E1DBA35EBD7AE53E7E337B0B6C07E + B8D3E87BD04021950E58D2419C28119DC5151B392A9F30ABA4C8E71F5B64E8D5 + 8BA54B280C00006032E4E603260006D5900194A8F9F3E883720891A99088208C + EA58959401ABD64B5C2180DDFFB5958053FFB1A54A80000A68CA7F0422586005 + 3C7CC081105D3880C50C7CFCB2974A6F0026830C35BC908332CC4C538D88CE90 + 88CD89282E43A289056823860C54DC730F699CF8110670E8A823E38E3CF6E8E3 + 8FAAD1869B6D44FEC3C5026D744005157E74922371C4598491465426E70807D2 + 6549124904A4C4404B2F6547077743CC905D4F4E70C0011EE50D8514066FC6A9 + D45278A450C40F85FF443515017C4252DF7D5AE5F7D5A06019C8168103A682A8 + 808BA255410A3AE02104175C944141857AEDC5C7156F0823D8316CE490E2A8A4 + 966ACD66DB2001C66BAA99D341077EBC7ADA0310AD131B6CB8DE4A0F3EFA0859 + 64915C5C20E143E9A0F32494651CC75172562A4740495A6AC90103085C979D0A + 6446C1930A329CD1829A6C62D0667AE48A8B81151F1EF1830152C9E7A7241F00 + 1AA845FCD5DB49290AE67B87BE09E2EBAF82A4E81BF0BE040F6C70C104039C30 + C2F94690021E1C9C014E427D51B79707C150F0A9182CB0E198A920877C220E2C + 8821693DF070F26AACAFE228DCAEF2A01CF33B32EFCACE6C450E39A440FAE443 + A3B1C8A623659544FF2FBBDC23DF66C9017D75586BC60F512C3104143C0D80C7 + 10420801EEB849750DE79C41E1A1C31846D050840A10F830009F55F96983BCF3 + 76652F7FFD1E2C30C3FEDA9D37DE07F25DA0C2752F7C470AB23CABCF1A4B58B8 + 575FC3BC91C760C7B080C3C78A6566D9E5D754168DE69657866A6743ACA69A03 + 0FAC0CAB1FA837199C8EB9B6AEABEBE1E4B3CFCE01E9BC80ED0B1C79641AA4BD + 532C94C731AB5CB3CAD581E5965A6650157666D01145770CD0A1C2083A7C9081 + 102D68CD66B8E59A87070156B051360D39A8A0C2DAF349624356705792DFDC84 + EE2B00BF043731FFC2F3D38FE0FDFA27CC3FFFF80BE0FEF8F53F04C1E5037800 + 03391E4085BC58ECFF626FF802108A11B92224661A180C913436A8A20DAE4883 + 190C21073D48C20F76B083193CE10639E399191D040B1D0843AC6CC4321CE5C8 + 563FCAA10E65A41AD5F4AA1F00B19D10FD71A4DBF1AE87103987122532B48C38 + 91684F5C4E08D4A4BC2A2E4D4D75300304A23684E8FD60042310C3141F94B570 + 95C728724A0A523E200651D1E08D343000FADAF688B7B50F3F1621941E3901B8 + 7F09106FFDBB5BFF0616C8BD05727E0EC3800CB0D4065C38F06229E1C3172890 + 05C184400C23C801E544C6C94E2E838542B859234B07AB52CEB094C0595DEC5C + C7CAD7DD4A76B421C8ED6639C45AEAA691143956B234B102A3F9924ACB09E62C + AC484C0EC4A00471FF1882B6BE280631E88004E2CA9AD6D60414AE1125526C7A + 011CE1C802F4BD2B03ECBBA3FBE8B54742019080F94BE71FF375CE75B67380F2 + D3DF39DF994EB81885917FA040A72009492038EE922F2802084B48D00F8AD084 + 051D21420DAA501276B00823E8CCAA520643539A1275B03A8D3A5847B38ECEEC + A3309BC73D7EE82B59D6929601B940398693A32642F1A5C4630E151FB1349A72 + 406A6A000004C2884930EA608A43F81635DDA4146CEA409BE3334C37FB445370 + 8A336E102827DDD6E9BF42A293AAF0646756055840770AC00A8FC20096B6D086 + 2D34800FBCE0E71B16A20619800A449E54615C47788D04908F7A1C180DE94C77 + CABEB62C952FEBE1FFE85A49D857FA7076B543E94909A21B958E6E89C11B1E47 + 9023D9605A9600572C660690909D1F984107CD6C661875A0A6AC51937B6E6293 + 0E3EB44D1A0C60056D5B9A245610CEA7BE4FAA5F49A7000CA1DBDEE68FB7BE0D + AE70874BDCE21AF70E119040A438D0852D38F2811004021F9020831888C10520 + 3A6842B5CBDDED7AB7BBE09586117240BD2CFCE11D2A9321ACD44BC3F59ED249 + 3B8CAF7C77349B93DA57B1B71396398CA389293DD100728429308559153AD291 + 0010285968C3C8D3E56ECD5C5F438A9D9401C702B060056CB30A019E0A2841C1 + 0F2CF98BA73A434CE2AE9678802336716FE3C9E2138BF8C4294690156421A932 + 6C414979519C2F84FF41C962708C0D3430423416AAC167107944283AB2347040 + 5E1D202174AEB2A85F67983A967522B08375656159094B7EDC77884154E97094 + 35E0B701D800BD2CB3658FD6D4F93C4206A18D3318A9B7DC69A2964D5668ED1B + 7DB0023F4562C31CBECF6D3F1C0AE31ABAB83738B4A2839BE84557E0517421C2 + 05CA4005E82E4E92405003615820E4F07AFABBA0FEB4A7C71B51E692AEA25396 + B24553890E1C86B466B0F6A8CD7AB80FFC7E99965EFEC6035CFADF33CBB1974F + 8CE9721C649502F389007860302617DC4C36D9797B18E0410E8A90546D60783E + 55097487F348E84F2CFADBE00EB7B8757B87B908010CCE4D08A654B2B84E0161 + 3035C8245C1BAA42FF25DBBBC8F4CEB7BD994C3D214439D5003F1DCB5063AB2D + 6B59CB5DB6B5C271C73B0744D69798F0B51C6D20EC353BC2CD07AE439C996D32 + 2C4D53087840979E0740023FC976C3B5D5F6A071EB090124DA7E7D1080FD5EEE + 7299D73CD134A779CCE767BF99DFDCE631C739D06DDEE89AFBFCE8461740CC61 + FE73A4EB5CE6C8859467F6518619E8022517130610F2E08410C41BBBA20EB5D8 + C34E761C4034044248EF0CD9CBF6B553D9CAAB0BAC48E74BF7D891F4D6B8CB6F + 1B784D250003E0CC7FFFB5802D3E8B631B1ED9CBE6694F9D89F62D70E0A84610 + 321C8BF0041BD0517975D0B6BCF2C3803CB01C14E30EBDE847EF5B52C845525B + E8028E75EC170FB8FF7B4324E098A8F02D42147AB7DE634FA8ED6BBF8CF18A51 + 08370AB8F05129AB568BF2E0066F5DC2F1AED8349099591197F89907B0918A07 + F3F0D8DF78E2C5C801316C40CFAEB581C9259179CD6F5B13D5D242E7FDF0E1FC + 093DE7EE8FBFD37F2EF4F9C1BFFEF4277AFCF15FF4F7373DE9F7477F8F824010 + 820B1450316AF505C4C059B2D769B947760F188118446A21F01BAA5643C3973A + C5271C1C0552B1E681B2763377B7700BC77719217D28487D2FB51C4E44711F50 + 78D88778CAC65323805D65B3196F54048DE067CA132FE6777E10502D2EF1124E + 90070D602F8C7668FD177FC35574E9E484A1B784F6E75B52383F566005E2D202 + 5DC01BFAC44F5947FF0CC6F002E2437B0E4550BB37500C456429D4506BB8229B + F1227F906AC0C157172870B2E22458967CC8E71AB4B67C24683B84000169164C + D1B715D2570914575983178386B771B1E731233701C4940113F05A3F28681621 + 845A10260CE00425C007EC975B41A774F9378AFE778AF9878AAA588AACB88AAE + 988AF4770756D0200F02111DF00579C00499A22912A4060C002A28940018248C + D2408CC2388CC8588CC9788CCAD88CCCF88CC6188DCB688C05E0022410020DE0 + 7677886AEED58DEDD55EB2227775378E3CE4877837342C38017E274786187806 + 1078354002304571F4488F2FC88804C04671F6212D92833B886D76748998887E + E9F712D8D18925A0FF067CD0109FF08A5338853E3785A8F890B0E87F12597317 + 097F19599118599160651404F0190E708B39A6297E310CD3351835681910D892 + 12387638608D321087A6741AA6318775D85755E6322EA4873E496B88756B6446 + 88D3276887580392156C2F05838C185AC90047393015E3478902B97999288430 + C1009DE88979B05638D2091CF98A6219966439966659963F37387391055DD005 + F9E43858C78B11A4922C500434005ED25842D4B88C1E949721B497CEE8971E64 + 042CD0194C824A36691A154587538651567643AD018292F96A1D7558BE625FE8 + 184CBEB6792888662D588FA0598F4C997D620064FE683D6D967255394E043984 + 59C90051500279C0FF07BFD19068799616C9911B7996BB799B1C298B0F13315B + 00065FA00BFC140CC3F06E4E700C9A74862EF99C2F1942E415024850934EF209 + 8B999317A85105B7873E191A3E74990A178883B81C85D83E29086C02A694A379 + 6C9030066F1495D6235BB36589AB095505F99A4EE0046AD0955460930F7003EF + 27A0048A7302EA72075AA0048AA00A5AA02ED70406AAA00C3AA10DBAA0114AA1 + 0CDAA0196AA115DA0702EA3004F8070FB0045F9012EC967514F06EC7E0020215 + 98D3F8A22E1AA3D008A3332AA3D389043469434AC4098AF957DFD8767688873A + 220FE4587796E965B69699CBB19977B48E4E8A1CA119A589D89EF93800E42395 + 6EA69AF7890957E9FF9A075902B2F906B5090AEF07A1F467A6B8E99B69BAA618 + 7AA1AA68A65F358BA877015870127189317E91056FD05684E102D0F9A7D14950 + 84F922E6A53A3B0A1630C48D197887A8717CDF49587D289E433294E65994B675 + 88EAA9949A7A8F9855A5563A0075404C04A0A55B9A1F9AA89FFCD9950D00A015 + DAAAAEFAAAB01AABB23AABB44AABC8553D1CF0075DA06E1792759E520C215083 + 9D768C334AACCA48ACC68AACCABAACC898ACD2C8AC0930A8329005C5A744D779 + 0EA0A0A8DA794A2E33A49439991F386B23881B4AAA1C4CCA619D6906521A9AC0 + C42701394C4D85045B8A9E5DBA89AF09A679C0100E41A66D4A7F097A7309FAAF + 656AA1A918B03700FFA106CBA0087BB01C7A8A02BBA100EBA601AB9678C096A5 + A131AC270C5FF00559006F998403801AB2813AA8784001B3E209878A9D3EBAAD + 1805581C85448FEA4AAB243B3F344BE4B966E749AA1D76889A5A342C689F7D46 + 9FA36A9FF38A9F5EAA95FBD99F0C210AB52AAB1EDAA04FDBB4AD1AB5512BB550 + 6BB57D3038159B0E7881295E5821D4E575016504D05AB6667BB6689BB6C74898 + 240023D75A4E3D0AA43FBA7673780E436A0F456AA4CB57AE1C71AE9AE7A406A0 + 021317A50336595AD1543E58B4F28236AD69AF5F5A021EC0105E61B5945BB996 + 7BB9B33A6304480E1D708077BA6340A09CCC49B632EA97A68BACA54BA3A7EB8C + 0500512490056987FFADFBB1A3D9BAB28BDAAD3DE99DBACB2A2445A9CA719E97 + D89935A0946B169095603D7FA2B88B6B114178B408A906911B8A9E80B90A5AB5 + 04EAA11A50BD3710B5D97BB50DDABD3700BEE08BB9E2EBAA4F1B0115F0534220 + 2C6180B15F2B0C8FB3A220ABB6F45BBFF64BAC46E0BA386AADB3CBBF37A9ADC3 + C76A90291AE01A82061C3340C9B7EA68A902E96BEE487D51144CB5D56789ABBC + 5AC11316D112F9891D9E08BD5FD0240D49BDAF6ABD054AC2226CB9086BC2AF1A + 01E6766E7EB00456F7B56BA5A235900CD12AB2CF49BA2DE97B6827BB9FC7A38C + A99D2D631A79B8BB462C3A1770B39695B396C03E3A8B1F9D599E124CB4BD5409 + 4FBC9A8390C19A68FF90482B9B1E4001D2DB09E13BC6D95BC6647CC6669CC6E1 + DB076ADCC66BECC670FCC6683CC7715CC76C2CC7753CC683130292B285B9B08B + 2A81927980043150036077BF889CC865EB7B3200A07B94B237D932DA38B755A6 + 51DE9AB7E3A81A0AECB7E6C78ED1F78E8067003175C5163C0059AC094AA0C11B + FCBCD13BB9732CA0E50BCBDBFBCA744CCB6A2CCBB26CC6B28CBD045ABEBC8CCB + 639CCB63CCCBBA1CCC73CCCB144B015B984FBB08496BE5010CB0022F50977AD9 + AC356AB62EEAAC894CB634C0024EF6072C47BB3C1AC98B5A4342BA0E5916B3AD + E3BB1C01BCF32A7136F082C55BCA7774CA10A0CAABCC0060AA9060CCB465AC01 + 791CD0771CD0E10BFFD0B54CD06D3CD007BDD01AA0D0696CD06ADC049A6BB158 + B0A796160CBDB869C3AAC81CADC8DDDC19DDA647D959CE432C8EDF7AD2E1FA0D + 9BCCC08AAB04F9988F6B46CA459B1FAD29841BBC9F09C90714F0959CA0014D80 + D00CCDD03F1DD4693CD4706CD4748CD46DACD4449DD4121D9C5AF8070AC87A57 + C02979016F7509B27D79C3C248B6D2E8D55CADBA629DBACE485E784005219DB2 + 403CD239B993E70C9EEAFC3AEC5C8945E9C44D7CD756FC54D706D3964509764D + CF03C0BC3F60D336EDB85A199BB3B9D3FECCC600DDD80DFDCF900DD0033DD010 + CDD88EFDD86F7CD998DDD899BDD9951DD99EADD9974DD997DDD9967DDA0D8D06 + 002D8BE616210DF0FF064CF0B957B0B16FE0B13900D61D9DDBF5EB02E3B1AA3F + 2CCEB50B43722BB78CEAAD788BC93CE2524BCAD27FBB155A8161B3F001310DD8 + 50857EAA8CCF86DDC15EE915A16DD96FCCC6935DC6E1FDDD8D0DDEE27DDE050D + D9784CDAE6BDDEE7EDDD8FDDDEF1BDD9E6FDD9F20DD14D506E74D1065DD085C7 + 7931F1FBB1BA3DE06AEBBAB99AD6A140BB3DBAADAAE610B4F2B247AC6573EDCE + 8A7B6DF26C59C64BDDCC4B07844DD886ADCFB2499BFBEA09A25DE2E56DE228EE + D8969DE22C3EDA27DEE22DBEE2A22DE39ADD0411704F6090060EB0045777A71A + CB752B7A97043EE4D09ABF2350813F9CE087AA986C0D703B89BBB151C0209899 + C971663540CFD0CDFFD7534CDD5C6A111CDEE1856DAF5B19A6FFC9DDE98DDA92 + 7DE2E6BDE6F38DE66DFEE26FCEE6721EE76F9EE6765EE78F7DE7A85DDF6FDE04 + 4DA05C1CB00549B0E36FD017FC24498E33182BC0022EA022678BDB6B1BE9CA0A + E9936EB6607DE92E0087490E3F0B4ED273D809331BD7ECA0C44419027C425B78 + 4DC581E6D7C726DD184EB4164CD32A00E61ECEC59E18A60C190A1AA0DA000D02 + 8DEDEBC0FEEBC2DEEBC3AE01BE0ED0BC6EEC8D9DECC7AEECC48EECC5DEECD21E + EDD4FEECCEBEEBC5CEECD92EECBC6E054E46056D99103976A29BC2075B670C06 + 406D097004C7C8EE65EBEED00AEFC40AEFF2DEEE6A7B046C2B034B30E29B7EAD + 9F20C9C3ED76A873FF235776C9C8FD0E265889F718DD32CD6159EEEA5B4ECF34 + CDE1D72D84D89D9549AB0662EAC8D63EED1D5FEDD7EEF1210FF2225FF2247FF2 + 1F9FF223AFF237306327433A0798B1C88904CBC9E8447EF3CAEA02479E058E8C + E04BBED641DC9870472CA24E0E73BDF0AD3EB45B6AE110FFB312CFBC0040EB1D + FEE1601AB9AB2A0ACA1EEC5A9FF55CBFF55EDFF560FFF5621FF6643FF6665FF6 + 687FF620D0F215DB05E9D000258A1227CAB11E80EE2E1079388FF34690E9D3EA + F39F07C00C0EE5297DC0EE40E59215DD2F3D0B13D0F070F3F0D35DCA8CAB0951 + 2FF51E0E05EAB795FDA9D85E01027D00EC7DA0DA9CEFF9A26FEC9D4FFAA31FFA + A69FFAA8BFFA595FFFFAABEFFAAE8FEDAF7FFA9FAFFAB04FFBB8AFECA0CFF5A0 + 5FFA1AA0B974A10F7E808BC7992113E40431800CEACEAC972EE9614DE9CFEFFC + CC2FFDD1AABF22DAEFFDABE0B6DBD670F732DDB96581680616A71C9CFAD2F988 + EA0E7FD77BDDF4CAC1F88116F9106006943FF50689D30AC9EF240E026800ECFB + 0F081A206820822085878984828B898C888D8D89938E83948F869088878F9399 + 87919A999D96A4928AA81A1A77563C78606D5D0D5F571E79B61EB91E57596F25 + 0C032F45464709C5C7C6C9C8CBCACDCCCFCED1D045233A59580FD8DAD9DCDBDE + DDDC0FE2DD58581DE77E617E1DE9EBEDEC7EEBE7D8E2650E0E6DF8F7FBFCFDFD + 100021A81830C146FFC183060D7E20B0B021810903224A9C48B1E20A860C2768 + DC386145C58F2043AA0808010002250852A25499F2644B2D5AA03060E0C4499E + 0EE0B42112C473A74F417D2A0115FAB368504E4447F96CD413694FA6457B362D + EA34AAD547372AE8902104CC960E146ADDD2958B02852F324290A8E1C24882B7 + 70E3BE2D26B7AEDDBB74EFEA856B2487981042FEE41CFCAD30E16CE6CEB15BEC + 8EB1633FE51ED8D397AF32E5CB96DBFC20297005C7CF1AEB10C038FA03C49021 + 2F32340DDA06EAD72047065CD9B2B6EDDA30A1C8B489D330A5DFC0830B1F4EBC + B8F1E3C8931FD7D04407060E2D6451E0C387ACAE2BD4D5C82031A22DB4BCDFA5 + C10D3F77BC796809FF8CB020C1D5B0FBC3DBC68D2BD72131BAC78CE3C5AB2FCE + C1E4CCFBE4738F80FA38A0051D9CA9E099411A317890430EB906DB441735B491 + 831E4D38A1019B0564C66D20DA969B4C0CA8F11E16961012948AA81C729425BF + 11024A8A89BCB8228C34BE38E38B32D2D8238F3506E9A2253A06C9E26F361A09 + C28D3736718773D0A5D1861F5F78A0062EBABCA12510DB89C1820B72B9559798 + E9D945E6997CA5F9169A6BAA59660E238490057C74BE279F37F6E1D7D89EF360 + 51C67F6D0028E8654A40D0A1A10038089A46A461F481841F65388047AA65C491 + 69906A88DAA13FD016E2A7BAC964229D209850EAA9A6A68AEAA98798DA6A22AE + AE1AABAAB4CACAAAFFADAFD63A2BACB6EA7AABAFBB02DBEBAA6E3067450A7808 + 7141191D5499C7B3BA00C107106F58A9D697058817DEB6DA764B9E0B715210D9 + 89751E268E3679BEA3AE3AECB0BB0E3693F923EFBC66700681010B22A42F840C + D521296A156694D046FF6A5A118701FDC0D2C22E31BCD28825908B62A9329A50 + 311AA9563CC9C5AD724CC9AC1A77FC9BC5AFB60863AC93A0CCABC81467CC32C9 + 1497DC72CC34EF0A82153AE0C141170E74719675B95C71C5176F2011420C23B0 + 304C794C27D33478E63D1DB5D354435D9E7A62E0D1C0B8E54A1C8E7C88D1A718 + 9F64EF47CF9F0362A636800070F683018A2EEAA8A399465A5A1D0D6A84A9C120 + 210C101D9F06FE12FF4CA3926B42AA87CB9A38B08BA3DAB8B08747BEF8E3C346 + AE38E2985F5EEAE4BA72BE39E6927FAEF9E168DCD1C4736DA4510615573C3B56 + D07C546B34034993C9EDEDDEE63E0D0B62202198D7C0D7694E6264EBD9677F01 + 269FF6F2FA7CD1366706907050DE097DC0AFF505538851DE1B7D903DDF069004 + B8E082130EBCC519A73F33FAEB63DCBEFAECC7EFBEFCF0CF6F7FFDF8BFAF3FFD + FB63EC7FFEF43341043EB033FFF8212C40BB8E07D252031618215BC610D31124 + 383566CC8582177C9A0437A84123C44908C10B2138EE8418C5186F4FFBE14FBC + 06C5427C38CF500953C2A2F2E690D230A460941A0D431465BDBA81EF50E3235F + E0B450B87249CE04FF5338A21297C8C4264A2E894E84A213232745264AF18A4B + ACE2149FB8C52E9AA00911D0C10784E0806551C075409B16107E513BDDB91177 + 704C860B488084AED9D13060238709D7E50E77A530327FFA4F81E6D58F122088 + 243F18C0C0165910EBCDCD7A16D9DEF4F4F63D0D852F202669982669C3C996AC + 246277B49C283917BA5166CE942DC318E7FE273A54BAD273AF3C252C6729CB23 + B61296F36B427392E5801E600181B7789D07F840B41284A0814B8B4679E2B8CC + 6E49AD9947A0869CF823C26A12867827748C62B091B616B2B004CF0B081D0842 + BD7D3DF28612518DF5BA37811EF24D22970448268518B83788D08B48C4E716B5 + 18457CF2339FFA0CFF6813FF69452A9A00056E68420A42C0813F6CE19762C152 + 2EBEF00520A8E198C220C61B371AC7EF804B4E5CB366F04828B6FB14CF1DFA51 + 61BC0649A096264F0B8702880A6AC0C881B5F37AA7198024D9E9BD770E4036F2 + A4A7E0EC79C76C0854A0FF24E85197CAD4A6EAB30F2FC01974B6D080E9243068 + 670C81184690CC093E43A3DF012B589521D66D8DB518EA2141438B2AD2AF9D2B + 6CD83C293CE41119C900CA9B9839100C658A80493AC8068E5C880E1F02D8D2B4 + F3B07578D43BE35912A1D6D39A078D2C0A242BD9294CF6B294C5AC660F6A5914 + 5CD6B2990DED662FEB59D19A76B4A74D2D6A57AB5AD14E610A68D0805485B005 + 07746006AD93681EFF88F90563D680ABE339C231846B0CE20A77B8C82D6E728F + ABDCE632F7B9C43542D6FED0D6EAE624AEEECA6E1FE5511FB40D9290F24280BD + 1454D3E905F69C9F314D4F0D0654087C68939E8CAFC310A005A256F3709BC52F + 6593C85AFDF2B7B598F56F64FF8B59028756BF018E2C82153CE0D0FE57BF1066 + F064239CDF039B40B639E3406DC940816AA5B11779D80E5729788CB346B0A3DA + 32F157590052EB5A338FF489EB09F5F3AE7A0812AF9931434CEF95AF9A3AD286 + 0D51EF4DDDA9A9F6BED7B1B7D10264D8CA0DC99656B34F8E32693DFB592A1F54 + CA95B5B2662DCBE5295F79CA9DA53296572B66274F59CC613EAD67413BDA27BB + 76B26888400A3E80FF872E3C940A55C2453079CB25EE0C63B9C60D34A0077DDC + 413B57D02EA8819C98EC62B0E1C9A4D96C8C6224C30F9732CFA5F5829E0DCACB + A0F32E84A7D82B32498E8C64DC2C59A455E66CAAB7BC6A36B339CB997575AB67 + ADEA5AA380CD4F7E35AD6FED655EDB5AD6BFDE35B07D7DEBD259E13944581615 + F8104CB250A75ADB61CB7854AC626954DBAC5F2D02EF90508E46B7F54EE98AB4 + 63FCB4B6725BC63F6F08A7876CEAD7C492C63489B55E627D181B9278AAD42951 + B275C32CE67E5399DFFE0EF89A030E70811BFCE0084773C217CEF082335CCC1B + 40C3B1EB7C8136CC0208BADD8596D4B0963F2BB7D01F2FB4C8053DF2911F1AD0 + D26C406F18CDF2F8FF38BADB7BD46EBBEA73B6CB80775E7F7A8007D46D2803E8 + 8B9113709490ADB7DED7C474259D9CEF7CA1B0B5966703CAFDFE729A1F9ED931 + 5B3DEA0897BA96C76CE687F7FAE05D3FF3C39B80333C542100178028B4AE43CC + 0532A081605286714F2C77E496F5C48226C6DCBDBAF7B4FACEDB4E7F2BBAEA03 + 694973131F814A3C8E6D9EF36C18D26D8AFCB9793F8037A2535EB146B737BE6D + 0305A76FC3EBA00FBDE8474FFAD29B5ECC68D8E516D290062C2C1B5AAFD3521E + 9000851A18A02D212779C9410E5D91E71EB92307970CAE0178EB82BBA48BA139 + A5CB7881345CA0E2E766A9F2F491F36D38E19009F379790FAB5EA213A0921239 + FAE66BD3796FF3DAFFDF6176F8D4738DF52E7779E00A57FFBFB77E7E5ECB3AFD + C4863FD607EE7E30CF1FD7FD867FE8377F9E955039D302AC27074B501DC2F46C + 5FE00424C01D4A0356C275776155625F95817B17411E4447BFE3792008632564 + 1FE5600F81F27CAC077D81626E6AE31F652078D9C0003BA620DCA33788E57D98 + 07129C327EE407829FB70128008440E85942D86F453884548684441884067784 + 4C88844E18854CB8844EE86F55988453988554888510F78459288545B8845D28 + 85CD21032D70010BE00054502DC2940B7CC00021000524600606A077BB778778 + 98877A68042EF01720E48380E81E89416ECF5788CDF77C2B7873F2527D83A157 + 24311093046A8E44FF6F03C05810205FF0A5742EE10481980D57288646A8855C + E8854A188AA56885A4E88563288AABB88AA7388AA81886A1B885AF088AB46880 + 3200066980767ED03A6DE80135E1040C400203E04075A787C8988C25A76D1E58 + 7C80485291514669B000AC97822AB878E7D678EEA105E3253D4387833B041288 + C4832D11059D880DA90886E9B88EEAD88EECF88EEE188FF0388FF2588FECF845 + 0B2504BBE8000DC086D6118CC2488C13A88C045990C7F551C4778E21381FE180 + 0FD5788885B88296267D69C388EF916924812F3668798EF43DE2438E29C189CE + 880557A88EB48885B25892AA988AA0088528F9852FA992EED89231F9849DE592 + 347992ED38050A85FF01CA920655D02CB5401600F90B6BD11D142872766887CA + B594C7E59415F8942567047EF78123D98994868287E87CD7C88200E28230E81E + 85023D21008E8255378C354FE347440A890D1BF09670199772399770C9067479 + 977849977639977BB9017D79977F59977939986FD9978629987CA9978A999885 + 2997096505807106BCF805CCA60B340190C35803C260909C898C4650047F415D + 6D899594D606CDC7958698888AD80F1659273B672F6630641132118C15444997 + 89F0C507A3F90070198473E99B42F896C0F98471498F79498FC42997C3D99B47 + 289CCD199CD0498ACE998ED3A99CCFB99CCE599DC0C90663706C1CD0065CD006 + 1C5699C008904E50FF024E704C23D699ECB97BD24401A3E98C59B99510A9785E + C9782F5854AF894866E06990C2582A00925AA09B57290E8479A0089AA00ABAA0 + 0CDAA00EFAA0BDD99D3AC00167C0050BF000146025794013970990EA5904ED19 + A252B91E7F779580570F0E9982A8097D14D9A2F9D09AC07305D807103F50030E + 91216909920840A00A792ED009A1404A97D8699DC7C99C0C0A9C415A9C423A98 + 484A975320A11AC60566940BE6198C2570A57E96949D6987BBC7A5C1F71759F0 + 075D60A2CF680F5AE97C5C699FD8780FDAC8644EC07380331AAEC158A4B67950 + F0053D0A3672690170C9A76FE9A71BC0A782DAA7709903854AA87F8AA881AAA8 + 7769A87309A8807AFF9790AAA8914AA98AEAA88B9AA86F89A97139A99A9AA97B + 6AA96C507608A83A1DC6A1C298AA25A01D2500054829A2215A047D1802A249A6 + C6579AA76988884820ABB90F30CA564E602F74100336D05EF3749BC8EA495AD0 + 00BB391F49FAACD01AADD23AAD4E2A55A5FA005490AAE679A56A5002225604BF + 07ABCAE8022C460521159F2C379F685A9F89779FD9989FD6E588E2346A02CAAC + F2391F89B1A883BAAFFA4A9793CAAF00DBAF01CBAF893AB0A0FAAF072BB00A5B + B00A6BB00EDBB010FBB0FC3A05C7922C5CC0050E50025180AA97D9AD6AD0AD5A + F0AAE2DA997364AEE87AAB26F8902B2A91D337912FFA82DEC68DF6E25E20C974 + CD5A0EF14005C059FFA995FAA8A1EAB383DAA9102BB40C2BB43CEBAFA11AB046 + BBB096AAB44D4BA8040BB549BB013C6905C9920469C007DDBAADABAA0679A01D + 6BE102205A685E3A7265CB9E9F2906590006B61A82664A9F69DAAE6B0A969DA8 + 633104920C40A6E7620E7E400514F00253D0B016C0A786CAAF85BB01872BB111 + 2BB883ABB88EBBB88A9BB8900BB9833BB9913B066240405BF0065A8B9EDACAAD + 5E1B62AE2AB6236B901E2403F0D9B6DF86ABD6989ABCDAAB603992997664C9AA + 894A90B779BAB77ED0007EFB0562D00441F8B8C26BB9C43BBCC64BBC0C7BBCCA + BBB81B40763A03041DB6B53501BA1F6B254E507BA45BBA04192759B072AACB64 + EA4A9F5D39B76DFAFFBDE65B2EBADBB77E4B015AD504812BA895DBB8811ABFF1 + ABAFF50BBF007BBF114BBFF98BBFF3DBBFFF1BC0F23BC0FA3BC08CBBBFFE4BC0 + 8DBBC0FC2BB0F78BB91810024090055FF0B556BAAA5D9B07DE1AB663ABBD7A28 + AB7E78BE2284A2A9A3A2AEEBA22D1BBB27BBC2235C42BC7B1667A1064EB00256 + 30065360C000BCAF05DCC0C2CBC3072CB13C1CC4C65BC03F2CC402BCC3044B76 + 3A10021E4051D64BBD5EAB0648D0AD5020062EE0C11F7C0408C9C2E9FAB6EB1A + B72CBB78742BC25C8C47F89AB36691C614705124600580CBC0701CC7723CC771 + 9C03747CC7784CC7769CC70CBCC773ECC77CACC781BCC080CCA763F0024B8C04 + 5940011685C11E9B7FC154CC551D8CC5779868DC56C64545C2B9AAABAA09BB2A + 4CC6A0EC5658B0BB54B0BE5F00C36B9C16DC3106717CC4096CC40AFCBF0BECCA + B37CC7B28CC3B70CC7B4ACC0B52CC478BCCBFC5BCBF68BBF83CB93897CCA9CFB + B58EFCB1571262617BB6947C5CD42003983CC25E2CBE6AEAAE6C0AAFD5DCCDF4 + 50427DABC6691C08003B} + end + end + object bAceptar: TButton + Left = 344 + Top = 367 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 1 + end + object memModulos: TMemo + Left = 128 + Top = 112 + Width = 289 + Height = 233 + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + ParentColor = True + TabOrder = 2 + end +end diff --git a/Source/Cliente/uAcercaDe.pas b/Source/Cliente/uAcercaDe.pas new file mode 100644 index 00000000..312711ec --- /dev/null +++ b/Source/Cliente/uAcercaDe.pas @@ -0,0 +1,66 @@ +unit uAcercaDe; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, JvGIF, ExtCtrls, JvExControls, JvComponent, JvGradient, StdCtrls, + uHostManager; + +type + TfAcercaDe = class(TForm) + JvGradient1: TJvGradient; + Panel1: TPanel; + Bevel1: TBevel; + bAceptar: TButton; + memModulos: TMemo; + Image1: TImage; + procedure FormShow(Sender: TObject); + private + FHostManager: THostManager; + public + property HostManager : THostManager read FHostManager write FHostManager; + end; + +var + fAcercaDe: TfAcercaDe; + +implementation + +{$R *.dfm} + +uses JclFileUtils; + +procedure TfAcercaDe.FormShow(Sender: TObject); +var + i : integer; + Obj : TJclFileVersionInfo; +begin + memModulos.Lines.Clear; + + Obj := TJclFileVersionInfo.Create(Application.ExeName); + try + with Obj do + begin + memModulos.Lines.Add(ProductName + ' - Versin ' + FileVersion); + memModulos.Lines.Add(CompanyName); + memModulos.Lines.Add(''); +{ memModulos.Lines.Add('Se autoriza el uso de este programa a:'); + memModulos.Lines.Add('VARELA IMAGEN Y DISEO S.L.');} + end; + finally + FreeAndNil(Obj); + end; + + if Assigned(FHostManager) then + begin + memModulos.Lines.Add(''); + memModulos.Lines.Add(''); + memModulos.Lines.Add('Mdulos disponibles:'); + for i := 0 to (HostManager.ModulesCount - 1) do + memModulos.Lines.Add(' - ' + FHostManager.Modules[i].Module.ModuleName + + ' - v. ' + FHostManager.Modules[i].Module.Version); + end; +end; + +end. diff --git a/Source/Cliente/uMainMenuController.pas b/Source/Cliente/uMainMenuController.pas new file mode 100644 index 00000000..45381c1d --- /dev/null +++ b/Source/Cliente/uMainMenuController.pas @@ -0,0 +1,144 @@ +unit uMainMenuController; + +interface + +uses + SysUtils, Menus, Controls, Classes, uHostManager, + PngImageList, uPantallaPrincipal; + +type + TMainMenuController = class(TObject) + private + FMainMenu: TMainMenu; + FMainForm: IMainForm; + FLargeImages: TImageList; + FSmallImages: TImageList; + procedure SetMainMenu(const Value: TMainMenu); + procedure CambiarEmpresaClick(Sender: TObject); + published + public + procedure RegisterModule(AModuleInfo : TModuleInfo); + procedure SortMenuByTag; + procedure InitMainMenu; + + property MainMenu : TMainMenu read FMainMenu write SetMainMenu; + property SmallImages: TImageList read FSmallImages write FSmallImages; + property LargeImages: TImageList read FLargeImages write FLargeImages; + property MainForm : IMainForm read FMainForm write FMainForm; + end; + +procedure CopyImages(const SrcList: TPngImageList; var DstList: + TPngImageList; out Index, Count: Integer); + +var + MainMenuController : TMainMenuController; + +implementation + +uses + Dialogs, PNGImage, uModuleController, uPluginEmpresas, + uBizEmpresas, schEmpresasClient_Intf, + uMenuUtils, uDataModuleUsuarios; + + +{ TMainMenuController } + +procedure CopyImages(const SrcList: TPngImageList; var DstList: + TPngImageList; out Index, Count: Integer); +begin + Index := -1; + Count := 0; + + if not Assigned(SrcList) or not Assigned(DstList) then + Exit; + + DstList.BeginUpdate; + try + Index := DstList.Count; + DstList.AddImages(SrcList); + Count := SrcList.Count; + finally + DstList.EndUpdate; + end; +end; + + +procedure TMainMenuController.CambiarEmpresaClick(Sender: TObject); +begin + dmUsuarios.IDEmpresaActual := (Sender as TMenuItem).Tag; +end; + +procedure TMainMenuController.InitMainMenu; +var + AEmpresas : IBizEmpresa; + AEmpresaMenu : TMenuItem; + AListaEmpresasItem : TMenuItem; + AItem: TMenuItem; +begin + AEmpresaMenu := BuscarMenu(FMainMenu, 'Empresa'); + AListaEmpresasItem := AEmpresaMenu.Find('Lista de empresas'); + + if Assigned(AListaEmpresasItem) then + begin + AEmpresas := FMainForm.EmpresasController.BuscarTodos; + try + AEmpresas.DataTable.Active := True; + while not AEmpresas.DataTable.EOF do + begin + AItem := TMenuItem.Create(nil); + with AItem do + begin + Caption := AEmpresas.NOMBRE; + Tag := AEmpresas.ID; + AutoCheck := True; + ShortCut := 0; + OnClick := CambiarEmpresaClick; + HelpContext := 0; + RadioItem := True; + Enabled := True; + end; + AListaEmpresasItem.Add(AItem); + AEmpresas.Next; + end; + finally + AEmpresas := NIL; + end; + end; +end; + +procedure TMainMenuController.RegisterModule(AModuleInfo: TModuleInfo); +var + AModule: TModuleController; + AIndex: Integer; + ACount: Integer; + AMenu : TMainMenu; +begin + AModule := AModuleInfo.Module; + + if Assigned(AModule.ModuleMenu) then + begin + CopyImages(TPngImageList(AModule.SmallImages), TPngImageList(FSmallImages), AIndex, ACount); + CopyImages(TPngImageList(AModule.LargeImages), TPngImageList(FLargeImages), AIndex, ACount); + + MergeMenus(AModule.ModuleMenu, FMainMenu, AIndex); + end; +end; + +procedure TMainMenuController.SetMainMenu(const Value: TMainMenu); +begin + FMainMenu := Value; +end; + +procedure TMainMenuController.SortMenuByTag; +begin + uMenuUtils.SortMenuByTag(FMainMenu); +end; + +initialization + MainMenuController := TMainMenuController.Create; + +finalization + MainMenuController.Free; + MainMenuController := NIL; + +end. diff --git a/Source/Cliente/uNavPaneController.pas b/Source/Cliente/uNavPaneController.pas new file mode 100644 index 00000000..b47ccadd --- /dev/null +++ b/Source/Cliente/uNavPaneController.pas @@ -0,0 +1,230 @@ +unit uNavPaneController; + +interface + +uses + Forms, SysUtils, ActnList, uHostManager, Classes, JvNavigationPane, Controls, + uPantallaPrincipal; + +type + TNavPaneController = class(TObject) + private + FNavigationPane: TJvNavigationPane; + FLargeImages: TImageList; + FSmallImages: TImageList; + FMainForm: IMainForm; + procedure SetNavigationPane(const Value: TJvNavigationPane); + function CrearPagina(const APageList: TJvNavigationPane; + ACaption: String; AAction: TAction; AImageIndex: Integer): Integer; + function EncontrarPagina(const APageList: TJvNavigationPane; + ACaption: String): Integer; + function EncontrarSeccionPadre(AParent : TWinControl): TScrollBox; + + function CrearDivisor(AParent: TWinControl; + ACaption: String) : TJvNavPanelDivider; + function CrearSeccion(AParent : TWinControl): TScrollBox; + public + destructor Destroy; override; + procedure InitNavPane; + constructor Create; + procedure RegisterModule(AModuleInfo : TModuleInfo); + + property SmallImages: TImageList read FSmallImages write FSmallImages; + property LargeImages: TImageList read FLargeImages write FLargeImages; + + property NavigationPane : TJvNavigationPane read FNavigationPane + write SetNavigationPane; + + property MainForm : IMainForm read FMainForm write FMainForm; + end; + +var + NavPaneController : TNavPaneController; + +implementation + +uses + Dialogs, uModuleController, uAcercaDe, uNavPaneUtils, + uMainMenuController, uClienteUtils, Menus, uDataModuleBase, + uBizEmpresas, schEmpresasClient_Intf, JvPageList; + +{ TNavPaneController } + +function TNavPaneController.CrearDivisor(AParent: TWinControl; + ACaption: String): TJvNavPanelDivider; +begin + Result := TJvNavPanelDivider.Create(AParent); + with Result do + begin + Parent := AParent; + Caption := ACaption; + Cursor := crSizeNS; + Align := alTop; + Enabled := false; + Cursor := crDefault; + StyleManager := dmBase.StyleManager; + end; +end; + +function TNavPaneController.CrearPagina(const APageList : TJvNavigationPane; + ACaption : String; AAction : TAction; AImageIndex : Integer): Integer; +var + APanePage: TJvNavPanelPage; +begin + Result := 0; + APanePage := TJvNavPanelPage.Create(Application); + with APanePage do + begin + Caption := StringReplace(ACaption, '&', '', []); + Action := AAction; + PageList := APageList; + Iconic := False; + ImageIndex := AImageIndex; + Result := PageIndex; + end; +end; + +constructor TNavPaneController.Create; +begin + inherited; +end; + +function TNavPaneController.CrearSeccion(AParent : TWinControl): TScrollBox; +begin + Result := TScrollBox.Create(AParent); + with Result do + begin + Parent := AParent; + BorderStyle := bsNone; + end; +end; + +procedure TNavPaneController.InitNavPane; +var + AListaSecciones : TStringList; + AEmpresasCount: Integer; + AIndex : Integer; + ADivisor :TJvNavPanelDivider; + ASeccion : TScrollBox; + ASeccionPadre : TScrollBox; + ASeccionCount: Integer; + AEmpresas : IBizEmpresa; +begin + AListaSecciones := TStringList.Create; + AListaSecciones.Duplicates := dupIgnore; + + try + // Guardar la lista de secciones (Ventas, Compras, etc...) + for ASeccionCount := 0 to MainMenuController.MainMenu.Items.Count - 1 do + begin + if not EsUnModulo(MainMenuController.MainMenu.Items[ASeccionCount]) then + Continue; + AListaSecciones.AddObject(StringReplace(MainMenuController.MainMenu.Items[ASeccionCount].Caption, '&', '', []), + MainMenuController.MainMenu.Items[ASeccionCount]) + end; + + // Crear pginas con empresas y rellenarlas + AEmpresas := FMainForm.EmpresasController.BuscarTodos; + try + AEmpresas.DataTable.Active := True; + while not AEmpresas.DataTable.EOF do + begin + ASeccionPadre := NIL; + AIndex := -1; + + // Buscar la pgina si existe + AIndex := EncontrarPagina(FNavigationPane, AEmpresas.NOMBRE); + if AIndex > -1 then + ASeccionPadre := EncontrarSeccionPadre(FNavigationPane.NavPages[AIndex]) + else begin + // Crear la pgina de la empresa + AIndex := CrearPagina(FNavigationPane, AEmpresas.NOMBRE, nil, -1); + + ASeccionPadre := CrearSeccion(FNavigationPane.NavPages[AIndex]); + ASeccionPadre.Align := alClient; + ASeccionPadre.AutoScroll := True; + end; + FNavigationPane.NavPages[AIndex].Tag := AEmpresas.ID; + + + // Crear secciones + for ASeccionCount := 0 to AListaSecciones.Count - 1 do + begin + ASeccion := CrearSeccion(ASeccionPadre); + with ASeccion do + begin + Top := 100 * AEmpresasCount; + Align := alTop; + AutoScroll := False; + end; + + ADivisor := CrearDivisor(ASeccion, AListaSecciones[ASeccionCount]); + + PopulateNavPagePane(ASeccion, TMenuItem(AListaSecciones.Objects[ASeccionCount]), + FLargeImages, dmBase.StyleManager); + ASeccion.Height := ASeccion.Height + ADivisor.Height; + end; + + AEmpresas.DataTable.Next; + end; + AEmpresas.DataTable.Active := False; + finally + AEmpresas := NIL; + end; + finally + AListaSecciones.Free; + AListaSecciones := NIL; + end; +end; + +procedure TNavPaneController.RegisterModule(AModuleInfo: TModuleInfo); +begin + // Por si es necesario en el furuto +end; + +destructor TNavPaneController.Destroy; +begin + inherited; +end; + +function TNavPaneController.EncontrarPagina(const APageList: TJvNavigationPane; + ACaption: String): Integer; +var + i: Integer; +begin + Result := -1; + for i := 0 to APageList.PageCount - 1 do + if APageList.NavPages[i].Caption = ACaption then + begin + Result := i; + Break; + end; +end; + +function TNavPaneController.EncontrarSeccionPadre( + AParent: TWinControl): TScrollBox; +var + i: Integer; +begin + Result := nil; + for i := 0 to AParent.ControlCount - 1 do + if AParent.Controls[i] is TScrollBox then + begin + Result := (AParent.Controls[i] as TScrollBox); + Break; + end; +end; + +procedure TNavPaneController.SetNavigationPane(const Value: TJvNavigationPane); +begin + FNavigationPane := Value; +end; + +initialization + NavPaneController := TNavPaneController.Create; + +finalization + NavPaneController.Free; + NavPaneController := NIL; + +end. diff --git a/Source/Cliente/uPantallaPrincipal.dfm b/Source/Cliente/uPantallaPrincipal.dfm new file mode 100644 index 00000000..488c1c56 --- /dev/null +++ b/Source/Cliente/uPantallaPrincipal.dfm @@ -0,0 +1,664 @@ +object fPantallaPrincipal: TfPantallaPrincipal + Left = 358 + Top = 250 + Caption = 'Pantalla principal' + ClientHeight = 662 + ClientWidth = 559 + Color = clWindow + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + Menu = HostMenu + OldCreateOrder = False + Position = poScreenCenter + WindowState = wsMaximized + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object pnlContenido: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 559 + Height = 640 + Margins.Left = 5 + Margins.Top = 5 + Margins.Right = 5 + Margins.Bottom = 5 + ParentColor = True + Align = alClient + TabOrder = 0 + object JvSyncSplitter1: TJvSyncSplitter + Left = 215 + Top = 5 + Width = 5 + Height = 630 + ResizeStyle = rsPattern + ExplicitLeft = 210 + ExplicitHeight = 570 + end + object JvNavigationPane: TJvNavigationPane + Left = 5 + Top = 5 + Width = 210 + Height = 630 + ActivePage = pagInicio + Align = alLeft + AutoHeaders = True + Background.Stretch = False + Background.Proportional = False + Background.Center = False + Background.Tile = False + Background.Transparent = False + ButtonHeight = 32 + Colors.ButtonColorFrom = clWhite + Colors.ButtonColorTo = 12435133 + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.SplitterColorFrom = 13026246 + Colors.SplitterColorTo = 9211532 + Colors.DividerColorFrom = 15725551 + Colors.DividerColorTo = 13026246 + Colors.HeaderColorFrom = 8684164 + Colors.HeaderColorTo = 8684164 + Colors.FrameColor = 8684676 + Colors.ToolPanelHeaderColorFrom = clWhite + Colors.ToolPanelHeaderColorTo = 12435133 + StyleManager = dmBase.StyleManager + ParentStyleManager = False + LargeImages = ModulesLargeImageList + MaximizedCount = 1 + NavPanelFont.Charset = DEFAULT_CHARSET + NavPanelFont.Color = clWindowText + NavPanelFont.Height = -13 + NavPanelFont.Name = 'Tahoma' + NavPanelFont.Style = [] + NavPanelHotTrackFont.Charset = DEFAULT_CHARSET + NavPanelHotTrackFont.Color = clWindow + NavPanelHotTrackFont.Height = -13 + NavPanelHotTrackFont.Name = 'Tahoma' + NavPanelHotTrackFont.Style = [] + SmallImages = ModulesSmallImageList + OnChange = JvNavigationPaneChange + object pagInicio: TJvNavPanelPage + Left = 0 + Top = 0 + Width = 208 + Height = 557 + Background.Stretch = False + Background.Proportional = False + Background.Center = False + Background.Tile = False + Background.Transparent = False + Caption = 'Inicio' + ImageIndex = 0 + object Panel1: TPanel + Left = 0 + Top = 471 + Width = 208 + Height = 86 + Align = alBottom + Color = clWindow + ParentBackground = False + TabOrder = 1 + object Label1: TLabel + Left = 38 + Top = 29 + Width = 137 + Height = 52 + Margins.Bottom = 0 + AutoSize = False + Caption = 'Para empezar a trabajar, elija una empresa en la lista de abajo' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + WordWrap = True + end + object Image1: TImage + Left = 16 + Top = 29 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF610000000774494D45000000000000000973942E00 + 00000970485973000017120000171201679FD2520000000467414D410000B18F + 0BFC6105000001754944415478DA6364C001D6ECBE900CA4E640B92921AE0673 + B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD3EF6BA0C25 + 0B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4EE1008BF345 + BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C29060C3029673 + 4D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDFFF6358B8E7 + 1B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232E03FBACD5F + BEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043C00678586B + 32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF194EDDFE01 + 36A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E467582C800C + E051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A91C3011613 + 30CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA9C589D8D35 + 21E13204047069C69B99608680002ECD380D4036E4C98B77383583000005100E + B8572466A60000000049454E44AE426082} + end + end + end + end + object pnlBorde: TJvXPContainer + Left = 220 + Top = 5 + Width = 334 + Height = 630 + BoundColor = clActiveCaption + BoundLines = [blLeft, blTop, blRight, blBottom] + Caption = 'pnlBorde' + Align = alClient + object pnlMain: TTBXAlignmentPanel + Left = 1 + Top = 1 + Width = 332 + Height = 628 + Align = alClient + Color = clWindow + TabOrder = 0 + object lblBienvenido: TLabel + Left = 8 + Top = 8 + Width = 210 + Height = 54 + Margins.Bottom = 0 + Caption = 'Bienvenido' + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -43 + Font.Name = 'Trebuchet MS' + Font.Style = [] + ParentFont = False + Transparent = True + end + object Label22: TLabel + Left = 116 + Top = 52 + Width = 247 + Height = 22 + Margins.Bottom = 0 + Caption = 'Administraci'#243'n de puntos de venta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clGray + Font.Height = -16 + Font.Name = 'Trebuchet MS' + Font.Style = [] + ParentFont = False + Transparent = True + Visible = False + end + end + end + end + object TBXStatusBar1: TTBXStatusBar + Left = 0 + Top = 640 + Width = 559 + Images = StatusPanelImageList + Panels = < + item + ImageIndex = 1 + Size = 250 + Tag = 0 + TextTruncation = twPathEllipsis + end + item + Framed = False + ImageIndex = 0 + Size = 150 + Tag = 0 + TextTruncation = twEndEllipsis + end + item + Size = 200 + Tag = 0 + end> + UseSystemFont = False + end + object XPManifest1: TXPManifest + Left = 248 + Top = 48 + end + object GeneralActionList: TActionList + Left = 312 + Top = 173 + object actSalir: TAction + Tag = -9000 + Category = 'Archivo' + Caption = '&Salir' + OnExecute = actSalirExecute + end + object actLogin: TAction + Tag = -9000 + Category = 'Archivo' + Caption = 'Login' + OnExecute = actLoginExecute + end + object actAdministracion: TAction + Tag = -9000 + Category = 'Archivo' + Caption = 'Panel de administraci'#243'n' + end + object actCambiarPass: TAction + Tag = -9000 + Category = 'Archivo' + Caption = 'Cambiar mi contrase'#241'a' + Enabled = False + OnExecute = actCambiarPassExecute + end + object actConexion: TAction + Tag = -9000 + Category = 'Archivo' + Caption = 'Configurar conexi'#243'n...' + OnExecute = actConexionExecute + end + object actAcerca: TAction + Tag = 9000 + Category = 'Ayuda' + Caption = 'Acerca de...' + OnExecute = actAcercaExecute + end + object actMenuCompras: TAction + Category = 'Compras' + Caption = 'Compras' + OnExecute = actMenuComprasExecute + OnUpdate = actMenuComprasUpdate + end + object actLogisticaMenu: TAction + Category = 'Log'#237'stica' + Caption = 'Log'#237'stica' + OnExecute = actLogisticaMenuExecute + OnUpdate = actMenuComprasUpdate + end + object actVentasMenu: TAction + Category = 'Ventas' + Caption = 'Ventas' + OnExecute = actVentasMenuExecute + OnUpdate = actMenuComprasUpdate + end + object actActualizaciones: TAction + Category = 'Opciones' + Caption = 'Configurar actualizaciones...' + OnExecute = actActualizacionesExecute + end + object actVerPanel: TAction + Category = 'Ver' + Caption = 'Panel de exploraci'#243'n' + OnExecute = actVerPanelExecute + OnUpdate = actVerPanelUpdate + end + object actVerBarraEstado: TAction + Category = 'Ver' + Caption = 'Barra de estado' + OnExecute = actVerBarraEstadoExecute + OnUpdate = actVerBarraEstadoUpdate + end + end + object ModulesSmallImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300004E2000004E2001167D99DE000001504944415478DA + 63FCFFFF3F0325801197C4840C067D207501CA352898C17071060303D8B60C24 + 7D8CF8343B381880F9070E80CD31E098C170E11990D184CF0064CD0776401CE0 + E0610036E42AD009CF81FC2DB80C40D7AC9F70082C7E71851D03580C6808D02B + 28FA18F16976B0B78578E1E061144360610237009F6610F8F9EB0FC3F1E3C7B1 + 1AC2488C6618BE7AF93C862120032009E107035ECD3F80F817106F3F7886E1EF + 314FCC74E01391F57FF3F2A970898999A811E453F91A6CD0BEE31718A6F75533 + 5CBB708E11A701208533F25919321212C0FC190B1630B8163F07BBE2D8D92BF8 + 0D8039797E2927D880EFDF3F322C5CB99EC136F73158FCECE51BB80D58B37022 + DC8065D5BC0C617ECE0C2B0FBC6660FC7489C12CFD3E58FCCACD3BB80D5838A3 + 9B61D92648E20105949F9B29C3B3E7D718CE5CFECAC06CB51D1E1E380DB877E3 + 0403B1006E00A5D919001742F4296979DC590000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001DD4944415478DA + 63FCFFFF3F032580916203C064C305B24CF95FAFCF0837A0C35205220834EAD7 + EFFF0C9FBEFD67F8FAFD3FC3C7AF0C0C9F81ECF79F80625FFF33FCFC0DD17C4B + F811AA01E8A63771DC6278F9EC21982D2E25CF50F7430DB70B262FDAFE3F27D6 + 032E9193DFC3905C94C0F0879F9FE1E73F26863F9F3F33ACE99BC3505797CEF0 + E7EF3F300E48AC6638B7631AAA018585850C4212560C5C867A0CF9AE6A0C1377 + DF821B6A66A4C87060EE4686772F8E3138F9A730D4774CC53400667B5C431EC3 + CF1F6C0C1F7F32300873323030333130BCFCC5C0B0B3AB87A100E8B2EBF75F62 + 3700E482DFFFA41914BD7D19A494D4199EDDBB097781B7853AC394DA1E0656A6 + A7D85D901EE90AF65B69D94486D0A21486F78C020CB2DC0C0C826C0C0C124057 + FC03C2FEDEB50CBE7E560C8F5F7EC0342029D489E1FD4267864B12C50C5BF7DD + 6188ACCE663871E111D8F6201B1586DECA7EB0ED2080D50581DF5A19441C6218 + 2EED39CD7081C182E1E2AD0F70E783A2D1DBD792E1F79FBF0CBF7FFF6578FFF9 + 3BAA014F66D8FC07697EBA6D1DC39633EC0CE71F9F66086ADA833715C20D8069 + 7EB97723C386A32C60CD17B902894ACA60038A3352FEAB72BE65F8F9F20F58F3 + 82C32F1889CE0BC0740F560C32E4EDD52D2469861900008660FEE14240093000 + 00000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 51 + Top = 181 + Bitmap = {} + end + object ModulesActionList: TActionList + Images = ModulesLargeImageList + Left = 19 + Top = 180 + end + object ModulesLargeImageList: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000002D14944415478DA + B5965F4853511CC7BF238A120DD9437F1E621B0D7D547AE8C18712F1DF42D1C0 + 87081F7C08121FFA4744B190A0B70211A2B208315965A0CDE58386A5CBD61FC5 + 6C2B373633B76BC66C19AD6DEA74BBF776EECDDDEEDDBDFBF390077E9CB373EF + F97CCEF9FDCE85A95896C56636D5A60BB279A9BD1945A4B3274D179FE980831B + 3C849E0D61969FFC49C228E2661424E0A5A5C59279ABD52E481202864C2C9168 + CD5620867BBD7E84C32BFC7C5E5E0E74BABD82645787DE1E248265F2E307896B + D908C4709F6F910F71D36AF7F0C1497698B6221C896171E3045D990462F89CEF + 17E67D140AEA86A056ABF9E7C160086E7339343A2D749A7C5EE2370154040890 + E723E90492B4CC8741CD7DE1E186EA2AC97BC3CF47E1EA2B8376BF1EDA7DB9BC + C4DA0738498E3EA71248764E919D7B2914127875129C21579BA619BC181985C7 + 5C213949A705F8E8571028E5BCB0EE1981572AC2E3711A71D2DB6C36CCF45748 + 6A02D1155629DD168AFAAE989664381F710693136F3163A98446B35B72BB3889 + 4A69E79AAA27A8AF3F9A153C31FE303106EF609DEC249C8015E7BC80A4C59021 + 2DC9707AA3F738A730FBB44A52135E9000A52B6826384DFF7DEE763AB0306410 + D60B45AE39D6C20E3CBA29812716769CDEA6F831D61A9764F2D793D3B8DD6684 + CB3EA54A2B10EFEADEB9ED686E6AFA772A86C1DDEE6E1CB918909D6CDCEECA2C + 10C3B9455D17720401CB32585B5B46574F1F2ACFFB65697BFFC99D5E900CE77A + D3A55C41108D86B1BA1AC263CB30CACE7E93D5C4E19A492D309B6EC8E05CF45C + DE89138DC7118B45115909612918C5CB57361C3AF55556F069CF6C6A41EFFD76 + 199C1BF75EC94763432DD97D0881DF71B40E14A13CFF164A5A28099C6B69053D + 9D6D3238D7F75F55A3A1E6309F1E2ED663AB181B5FC0C1935E093CA3A0FBCE75 + 3CB08CC9AE23FDC6809AF203041EE14FB11E5BC18423842D25838AD737A560CE + FD0EFFAB0982CDFE57F107B61AA443A57B28CB0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003E74944415478DA + D59559685C5518C77FB364EECCDCE9EC596996491BC618432A28246E041B4DEB + 065553445AA122218D55093E0982425F7C9354903EA9141F24421FB4D4D6B6D4 + A549C198496C163B314D4D3219C634D3244C3B6B26D773679AB4433241213E78 + E0DCE570EEFFF76DE7BB1A4551F82F87E6FF0F587BFA70684B49CA070D9A7580 + 8F9A76AEDBB89C8678522196C8DEA37145DC212ADEA3B1EC7B340EB7E377ED1B + 774DFF33407A458826EE8AC7EE80D4793B96155601AAF8BDEE8F3BF300D699BF + 220869616E4A282D8BFB4A5A751EB47A2890C43482AE202BA3D1E47CBA0EF0C9 + 89EF942307F7AC6D48A552CC06E7189F986572FA16716539B39E5C4AD3505726 + F422B88BEC58AD0E24A3118D56875A2F2BC2A87DAFBF8FEFCCA7F901AAF8E464 + 80A1DF4348F6424AAADD388A2C1408CB171723F80726882F452971E8902D5A01 + 2AC66CB608A886ABD76FF0DED1EEFC80AEAE2EE2F138EED28778F2B956763D50 + CA673F4CE4B8BFFB112F17FAFC38E7FE62D8779648640E93C9844EA763CFCB1D + 9B0392C924BF0E8C31BD20B3BBC543A141CF9248EA4F419813A9D06A411261AF + 7289244F0519EBBD4C5585134FF50E0C46137F06173607747676A22DA8C6F3EC + F399F5B6262F5F5FF6E778B0C3EBE59A3FBBA64C8ED27FF1240E8705A3C8C5DE + B6C39B0382C1203D674678F1600B7F2C6A9909835EEC728AA2A9B18BA2128914 + 91E05A040CB2C29593E7D0256E50DF5087C3E922148EE607BC79A095F6F676EA + 9ADA486FAFCCACBB2ABC84A7733DD8FFA8979EDEEC9A2E30C5A5D327B0DB8DC8 + B2CC33FB3BF3033A5E7D9A5028C4573DBD3CDCFA047265315745EC4B65281753 + 2D5497887F914978229E87C31166468204FCFD548BB0399D6E1622C9FC80432F + 35F3CEDB47588A2478EA85B78814DAA8ABF7323A9CEB41578B978FCFFBA991D2 + 4C8D8E3034F03D7ABD2E53497973D0FDF92965EFE3F7633EFF1AC77C0F5254DF + 4C794D35B58DB5CCA7A54CDB2832804358AF881CCC4ECED17BFA9238E0612A3C + 15949555A03748A26DA436061CEDFE5239241DC7DD7C80D8E059CE056AF02D96 + 73DFAE46E6ADDB723CF0C806C67FF1914ECD3332F823369B15499244096BF39F + 83C0F1C714553CFDDBB78C5D49D1775D62D65285697B1546931BC9EC125563E0 + 6620245AC22D2C36232565A5B80B4B44AB9045ABD08A36A19048A5D70356C593 + 03DFE01F5BCE880FCEF4636D3C4CA567A70098C5E98E914A264489EA31CB16AC + 363B168B95021116F50467C4EE34BC1CC04696ABE2176E7A916DC5184CDB328D + 0C6585B59E2C84548B351B74D1D5B106E83BB64FA975A598184BAE897FF17368 + E3AFFEC558FD156BDEED78437945FC81B6523C07A05E544878F4D49689DF0BF8 + 1B2694FBE012B66F2C0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 83 + Top = 181 + Bitmap = {} + end + object HostManager: THostManager + MainMenu = HostMenu + OnAfterLoad = HostManagerAfterLoad + Left = 292 + Top = 47 + end + object StyleManagerButtons: TJvNavPaneStyleManager + Colors.ButtonColorFrom = clWindow + Colors.ButtonColorTo = clWindow + Colors.ButtonHotColorFrom = 13009540 + Colors.ButtonHotColorTo = 13009540 + Colors.ButtonSelectedColorFrom = 14602190 + Colors.ButtonSelectedColorTo = 14602190 + Colors.ButtonSeparatorColor = clWindow + Colors.SplitterColorFrom = clWindow + Colors.SplitterColorTo = clWindow + Colors.DividerColorFrom = clWindow + Colors.DividerColorTo = clWindow + Colors.HeaderColorFrom = clWindow + Colors.HeaderColorTo = clWindow + Colors.FrameColor = clWindow + Colors.ToolPanelHeaderColorFrom = clWindow + Colors.ToolPanelHeaderColorTo = clWindow + Fonts.NavPanelFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelFont.Color = clWindowText + Fonts.NavPanelFont.Height = -11 + Fonts.NavPanelFont.Name = 'Tahoma' + Fonts.NavPanelFont.Style = [] + Fonts.NavPanelHotTrackFont.Charset = DEFAULT_CHARSET + Fonts.NavPanelHotTrackFont.Color = clWindow + Fonts.NavPanelHotTrackFont.Height = -11 + Fonts.NavPanelHotTrackFont.Name = 'Tahoma' + Fonts.NavPanelHotTrackFont.Style = [] + Fonts.DividerFont.Charset = DEFAULT_CHARSET + Fonts.DividerFont.Color = clWindowText + Fonts.DividerFont.Height = -11 + Fonts.DividerFont.Name = 'Tahoma' + Fonts.DividerFont.Style = [] + Fonts.HeaderFont.Charset = DEFAULT_CHARSET + Fonts.HeaderFont.Color = clWindow + Fonts.HeaderFont.Height = -16 + Fonts.HeaderFont.Name = 'Arial' + Fonts.HeaderFont.Style = [] + Theme = nptCustom + Left = 120 + Top = 181 + end + object JvFormStorage: TJvFormStorage + AppStorage = JvAppRegistryStorage + AppStoragePath = 'fPantallaPrincipal\' + VersionCheck = fpvcNocheck + StoredProps.Strings = ( + 'JvNavigationPane.Visible' + 'TBXStatusBar1.Visible') + StoredValues = <> + Left = 472 + Top = 120 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 504 + Top = 128 + end + object ApplicationEvents: TApplicationEvents + OnException = ApplicationEventsException + Left = 152 + Top = 174 + end + object HostMenu: TJvMainMenu + Images = ModulesSmallImageList + Style = msItemPainter + ImageMargin.Left = 0 + ImageMargin.Top = 0 + ImageMargin.Right = 0 + ImageMargin.Bottom = 0 + ImageSize.Height = 0 + ImageSize.Width = 0 + ItemPainter = JvXPMenuItemPainter1 + Left = 384 + Top = 256 + object Archivo2_OLD: TMenuItem + Tag = -9000 + Caption = 'Archivo' + object Cambiarmicontrasea2_OLD: TMenuItem + Tag = 1 + Action = actCambiarPass + end + object N3_OLD: TMenuItem + Tag = 2 + Caption = '-' + end + object Paneldeadministracin2_OLD: TMenuItem + Tag = 4 + Action = actAdministracion + Visible = False + end + object N4_OLD: TMenuItem + Tag = 5 + Caption = '-' + end + object Salir2_OLD: TMenuItem + Tag = 6 + Action = actSalir + end + end + object Edicin1_OLD: TMenuItem + Tag = -8000 + Caption = 'Ver' + object Paneldeexploracin1: TMenuItem + Action = actVerPanel + end + object Paneldeexploracin2: TMenuItem + Tag = 1 + Action = actVerBarraEstado + end + end + object Opciones1_OLD: TMenuItem + Tag = -7000 + Caption = 'Opciones' + object Configuraractualizaciones1: TMenuItem + Action = actActualizaciones + end + object Configurarconexin2_OLD: TMenuItem + Tag = 3 + Action = actConexion + end + end + object Ayuda2_OLD: TMenuItem + Tag = -6000 + Caption = 'Ayuda' + object Acercade2_OLD: TMenuItem + Action = actAcerca + end + end + object N1: TMenuItem + Tag = -5001 + Caption = '|' + end + object Empresa1_OLD: TMenuItem + Tag = -1000 + Caption = 'Empresa' + object Listadeempresas1_OLD: TMenuItem + Caption = 'Lista de empresas' + Visible = False + end + object N1_OLD: TMenuItem + Caption = '-' + Visible = False + end + end + object Logstica1: TMenuItem + Tag = 100 + Action = actLogisticaMenu + end + object Compras1: TMenuItem + Tag = 1000 + Action = actMenuCompras + end + object Ventas1: TMenuItem + Tag = 3000 + Action = actVentasMenu + end + end + object JvXPMenuItemPainter1: TJvXPMenuItemPainter + SelectionFrameBrush.Color = 13811126 + SelectionFramePen.Color = 6956042 + Left = 424 + Top = 256 + end + object StatusPanelImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002A94944415478DA + 7D925D48536118C79FF3B5AF36DD66B639CB924243225010BC49BA914004CDE8 + E32228B482EA4689A22289C8CBA28B32B1061688902912D28D16991F6062B2DC + 45921FB954669BF39C9D6DE7EC9CF3EEBC9D2D8C2CB7079E9BF779FEBFF7F922 + 30C69034822060D3665F5F3A0B90B8C672FCAEC07AD8E35DF0DFBFE3F64EC05F + F647F72FC0DB75AED1E1B43D138438C9B26108B11C0443BC30ECF959D731303F + 9411D0D35C612C2ADBEF3319F5B992AC402412037F9003A4C8E05F17679BDA3E + 976BA9D1F4807B95552E877D90222910250556023170E66481D900F0CD17C0AD + 5DDE63F3CBFC505AC0685B6DE34654762B88009B350B8AF658815011C8521C04 + 518487DD530D9D83BECEB480C98EDA13F9798E5E9A61526F098440D1CA572409 + 24298EEFBA271B7BC756D203FA5A8FE49516EDF3313A5D8AA0AAAAD6BF929A01 + CFC7505DCBBBAAD590349C710BD3EEFA57D916D3A954920648249255283031B3 + 3A7BE1D164A5F61CCC0878D15C917FA8C43165D6334E558B25DBD80847E51BCF + A79B3E7D65DB33AEF1E04D570EE5723DB513C4C966E9006101ED0662043C6697 + 30B7DB3021CE6D5C5EEA58FAB22DE0F0ADBD36D25E38A6E6E2126413E00CAA81 + FAE27AE85FEB876EF10D30DC0E2083542432F3E3F8E2CBC5F7FF01CA5A8E3E21 + 6CC6AB8A264636110C7A80EADC2AE88B0E004474C0B026A035C76BF2B2A7ED43 + 29E671680BA0FC76B50F5BC902641501658B90304BA0EA11100A05544C0774D8 + 0834A7396B04DFE8C8E9B58FC19EAD80EB358B84852E44D9F1DF62930C9856B5 + 6320801419A0A27AA079430AB4303E722530EE6FDF3A838B15E729B3E50195C3 + D855B34A247F074A8BA91A40A2808C91803955E6E70233F36F3D0D58C6DEEDD6 + B8D35040179B9DA602305266AC028925A4A0B822A090C20BAB09BF96F35D736E + 53F70B90E997F07974AFDF0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001A54944415478DA + 63FCFFFF3F0308303232322083DA9E05FF19F080A6E278B006466C0680340315 + C0F96F3EFD6178F5F13790FECBB067C75A862DBB4F329CDB310DBB0184344BC9 + AB33CC9AB308BB0120CD26C6A6589D7CE6EC69B06610C06A405DEF429C7EFEF3 + E72F839CB2169C8FD30064A72303238F2C8698A86086DD3BB732F80786E137E0 + EBF75F0CAFDF7D6178F0F41DC3BEC347194AB36218EC037319C48539185CDDBD + 19B8B8B8F11B00A4516CCF488C64F0892A60F070B565387FEE34D89025CBD612 + F6C2E7EF7FC1F81310472517835D6068640A76C1BA8D3B88F782AF7F08437A4E + 2983A99126C3A387F7C186ECD87D18BB0135F9B10C2D1317A378C1C92388A1A8 + B81CEC02397945064E4E2E864347CF6237203F2D9AE1D33788B37FFDF9CFF0F5 + E73F862F3FFE32D4555731A8288831700035737272329C3E771DBB018931110C + F397AC00F36D5C028186800CF8C7D0D55CC3202DCE03B6FDCE83570CE7774E47 + 24406403828343A1B6426C0EBE20C4305BE515C3B4EE7AB0175EBEFD01D60C52 + 8FD5000F9F60B86608FE07969BD3DF00A6619A711A00CA65B800B26664030085 + B441F03700F9CE0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 267 + Top = 333 + Bitmap = {} + end +end diff --git a/Source/Cliente/uPantallaPrincipal.pas b/Source/Cliente/uPantallaPrincipal.pas new file mode 100644 index 00000000..e6243efe --- /dev/null +++ b/Source/Cliente/uPantallaPrincipal.pas @@ -0,0 +1,604 @@ +unit uPantallaPrincipal; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, XPMan, uGUIBase, uCustomEditor, + JvNavigationPane, JvExExtCtrls, JvComponent, Menus, ImgList, + PngImageList, ActnList, uHostManager, JvExControls, JvPageList, JvPanel, + TBX, TB2Item, TB2Dock, TB2Toolbar, ComCtrls, TBXToolPals, TBXLists, + TBXExtItems, TB2ExtItems, TBXMDI, TBXDkPanels, JvSplitter, JvSyncSplitter, + JvXPBar, JvXPCore, JvXPContainer, JvLookOut, JvOutlookBar, Buttons, + JvExButtons, JvBitBtn, JvSpeedButton, JvExStdCtrls, JvButton, JvCtrls, + JvStartMenuButton, JvTransparentButton, JvExComCtrls, JvListView, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvBaseDlg, + JvJVCLAboutForm, AppEvnts, JvWaitingGradient, JvGradient, + cxControls, JvComponentBase, JvMenus, TBXStatusBars, uEmpresasController, + pngimage; +type + + IMainForm = interface(IHostForm) + ['{56FCE1D7-E163-4A36-A468-A6324A4E3911}'] + function GetEmpresasController : IEmpresasController; + property EmpresasController : IEmpresasController read GetEmpresasController; + procedure ReleaseEmbedded; + end; + + + TfPantallaPrincipal = class(TForm, IHostForm, IMainForm) + GeneralActionList: TActionList; + ModulesSmallImageList: TPngImageList; + XPManifest1: TXPManifest; + actSalir: TAction; + ModulesActionList: TActionList; + ModulesLargeImageList: TPngImageList; + pnlContenido: TTBXAlignmentPanel; + JvNavigationPane: TJvNavigationPane; + pnlMain: TTBXAlignmentPanel; + JvSyncSplitter1: TJvSyncSplitter; + HostManager: THostManager; + actLogin: TAction; + StyleManagerButtons: TJvNavPaneStyleManager; + JvFormStorage: TJvFormStorage; + JvAppRegistryStorage: TJvAppRegistryStorage; + actAdministracion: TAction; + ApplicationEvents: TApplicationEvents; + actCambiarPass: TAction; + actConexion: TAction; + actAcerca: TAction; + pnlBorde: TJvXPContainer; + HostMenu: TJvMainMenu; + JvXPMenuItemPainter1: TJvXPMenuItemPainter; + Archivo2_OLD: TMenuItem; + Ayuda2_OLD: TMenuItem; + Cambiarmicontrasea2_OLD: TMenuItem; + N3_OLD: TMenuItem; + Configurarconexin2_OLD: TMenuItem; + Paneldeadministracin2_OLD: TMenuItem; + N4_OLD: TMenuItem; + Salir2_OLD: TMenuItem; + Acercade2_OLD: TMenuItem; + lblBienvenido: TLabel; + Label22: TLabel; + TBXStatusBar1: TTBXStatusBar; + StatusPanelImageList: TPngImageList; + Empresa1_OLD: TMenuItem; + Listadeempresas1_OLD: TMenuItem; + N1_OLD: TMenuItem; + Opciones1_OLD: TMenuItem; + Edicin1_OLD: TMenuItem; + N1: TMenuItem; + Compras1: TMenuItem; + Ventas1: TMenuItem; + actMenuCompras: TAction; + actLogisticaMenu: TAction; + actVentasMenu: TAction; + Logstica1: TMenuItem; + pagInicio: TJvNavPanelPage; + Panel1: TPanel; + Label1: TLabel; + Image1: TImage; + actActualizaciones: TAction; + Configuraractualizaciones1: TMenuItem; + actVerPanel: TAction; + actVerBarraEstado: TAction; + Paneldeexploracin1: TMenuItem; + Paneldeexploracin2: TMenuItem; + procedure FormCreate(Sender: TObject); + procedure FormDestroy(Sender: TObject); + procedure HostManagerAfterLoad(Sender: TObject; AModuleInfo: TModuleInfo); + procedure Salir1Click(Sender: TObject); + procedure actSalirExecute(Sender: TObject); + procedure actLoginExecute(Sender: TObject); + procedure actCambiarPassExecute(Sender: TObject); + procedure actAcercaExecute(Sender: TObject); + procedure actConexionExecute(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure JvNavigationPaneChange(Sender: TObject); + procedure ApplicationEventsException(Sender: TObject; E: Exception); + procedure actMenuComprasExecute(Sender: TObject); + procedure actMenuComprasUpdate(Sender: TObject); + procedure actLogisticaMenuExecute(Sender: TObject); + procedure actVentasMenuExecute(Sender: TObject); + procedure actActualizacionesExecute(Sender: TObject); + procedure actVerPanelUpdate(Sender: TObject); + procedure actVerPanelExecute(Sender: TObject); + procedure actVerBarraEstadoUpdate(Sender: TObject); + procedure actVerBarraEstadoExecute(Sender: TObject); + private + FContenido : TCustomEditor; + FEmpresasController : IEmpresasController; + procedure ShowEmbedded(AEditor : ICustomEditor); + procedure ReleaseEmbedded; + procedure AplicarPerfil; + procedure RefrescarUI; + procedure InicializarUI; + procedure CargarModulos; + procedure OnThemeChange(Sender: TObject); + procedure RegisterModule(AModuleInfo : TModuleInfo); + procedure ExecuteActionMenu(Sender : TObject); + protected + function GetWorkPanel : TWinControl; + function GetEmpresasController : IEmpresasController; + public + function IsShortcut(var Message: TWMKey): Boolean; override; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + constructor Create(AOwner: TComponent); override; + property WorkPanel : TWinControl read GetWorkPanel; + property EmpresasController : IEmpresasController read GetEmpresasController; + end; + +var + fPantallaPrincipal: TfPantallaPrincipal; + +implementation + +uses + uDataModuleConexion, uModuleController, uDataModuleBase, Math, uMenuUtils, + uSplash, uAcercaDe, UxTheme, Themes, uDataModuleUsuarios, uPluginEmpresas, + uNavPaneController, uMainMenuController, uROSessions, FactuGES_Intf, + uDialogUtils, uActualizacion; + +{$R *.dfm} + +function OpenThemeData(hwnd: HWND; pszClassList: LPCWSTR): THandle; stdcall; + external 'uxtheme.dll'; + +function CloseThemeData(hTheme: THandle): HRESULT; stdcall; + external 'uxtheme.dll'; + +function DrawThemeBackground(hTheme: THandle; hdc: HDC; iPartId, iStateId: +Integer; const pRect: TRect; + pClipRect: PRECT): HRESULT; stdcall; + external 'uxtheme.dll'; + +{ +***************************** TfPantallaPrincipal ****************************** +} + +procedure TfPantallaPrincipal.FormCloseQuery(Sender: TObject; + var CanClose: Boolean); +begin + CanClose := True; + if Assigned(FContenido) then + CanClose := FContenido.CloseQuery; +end; + +procedure TfPantallaPrincipal.FormCreate(Sender: TObject); +begin + ApplicationEvents.Activate; + Caption := Application.Title + ' - ' + dmBase.DarVersion; + SplashScreen := TSplashScreen.Create(Application) ; + SplashScreen.Show; + + JvNavigationPane.StyleManager := dmBase.StyleManager; + dmBase.OnThemeChange := Self.OnThemeChange; + Self.OnThemeChange(Self); // Forzar el refresco de los colores del tema activo + + with HostManager do + begin + BPLPath := ExtractFilePath(Application.ExeName) + '\'; + MainMenu := Self.Menu; + MainForm := Self; + OnAfterLoad := HostManagerAfterLoad; + end; + + actLogin.Execute; +end; + +procedure TfPantallaPrincipal.FormDestroy(Sender: TObject); +begin +// ReleaseEmbedded; + HostManager.UnloadModules; + ApplicationEvents.CancelDispatch; +end; + +procedure TfPantallaPrincipal.HostManagerAfterLoad(Sender: TObject; + AModuleInfo: TModuleInfo); +begin + RegisterModule(AModuleInfo); +end; + +procedure TfPantallaPrincipal.RefrescarUI; +var + ATitulo : String; +begin + ATitulo := Application.Title + ' - ' + dmBase.DarVersion; + if Assigned(dmUsuarios.EmpresaActual) then + ATitulo := ATitulo + ' - ' + dmUsuarios.EmpresaActual.NOMBRE; + Caption := ATitulo; + + if dmConexion.HayConexion then + TBXStatusBar1.Panels[0].Caption := 'Conectado a: ' + dmConexion.TargetURL + else + TBXStatusBar1.Panels[0].Caption := 'Desconectado'; + + if Assigned(dmUsuarios.LoginInfo) then + TBXStatusBar1.Panels[1].Caption := dmUsuarios.LoginInfo.Usuario + else + TBXStatusBar1.Panels[1].Caption := ''; +end; + +procedure TfPantallaPrincipal.RegisterModule(AModuleInfo : TModuleInfo); +var + AModule: TModuleController; + AEmpresasPlugin : IEmpresasPlugin; +begin + AModule := AModuleInfo.Module; + + SplashScreen.Texto := 'Cargando ''' + AModule.ModuleName + '''...'; + + if Supports(AModule, IEmpresasPlugin, AEmpresasPlugin) then + FEmpresasController := AEmpresasPlugin.Controller; +end; + +procedure TfPantallaPrincipal.ReleaseEmbedded; +begin + if Assigned(FContenido) then + FContenido.Release; + FContenido := Nil; + Application.ProcessMessages; +end; + +procedure TfPantallaPrincipal.Salir1Click(Sender: TObject); +begin + Close; +end; + +procedure TfPantallaPrincipal.actSalirExecute(Sender: TObject); +begin + Close; +end; + +procedure TfPantallaPrincipal.actVentasMenuExecute(Sender: TObject); +begin + // +end; + +procedure TfPantallaPrincipal.actVerBarraEstadoExecute(Sender: TObject); +begin + TBXStatusBar1.Visible := not TBXStatusBar1.Visible; +end; + +procedure TfPantallaPrincipal.actVerBarraEstadoUpdate(Sender: TObject); +begin + (Sender as TAction).Checked := TBXStatusBar1.Visible; +end; + +procedure TfPantallaPrincipal.actVerPanelExecute(Sender: TObject); +begin + JvNavigationPane.Visible := not JvNavigationPane.Visible; + if (JvNavigationPane.Visible) and (JvNavigationPane.Width = 0) then + JvNavigationPane.Width := 210; +end; + +procedure TfPantallaPrincipal.actVerPanelUpdate(Sender: TObject); +begin + (Sender as TAction).Checked := JvNavigationPane.Visible and (JvNavigationPane.Width > 0); +end; + +procedure TfPantallaPrincipal.OnThemeChange(Sender: TObject); +begin + LockWindowUpdate(Handle); + try + Color := dmBase.StyleManager.Colors.DividerColorTo; + //pnlBorde.Color := dmBase.StyleManager.Colors.FrameColor; + pnlBorde.BoundColor := dmBase.StyleManager.Colors.FrameColor; + with StyleManagerButtons do + begin + Colors.ButtonColorFrom := clWindow; + Colors.ButtonColorTo := clWindow; + Colors.ButtonSeparatorColor := clWindow; + Colors.SplitterColorFrom := clWindow; + Colors.SplitterColorTo := clWindow; + Colors.DividerColorFrom := clWindow; + Colors.DividerColorTo := clWindow; + Colors.HeaderColorFrom := clWindow; + Colors.HeaderColorTo := clWindow; + Colors.FrameColor := clWindow; + Colors.ToolPanelHeaderColorFrom := clWindow; + Colors.ToolPanelHeaderColorTo := clWindow; + + Colors.ButtonHotColorFrom := dmBase.StyleManager.Colors.ButtonHotColorFrom; + Colors.ButtonHotColorTo := dmBase.StyleManager.Colors.ButtonHotColorTo; + + Colors.ButtonSelectedColorFrom := dmBase.StyleManager.Colors.ButtonSelectedColorFrom; + Colors.ButtonSelectedColorTo := dmBase.StyleManager.Colors.ButtonSelectedColorTo; + end; + lblBienvenido.Font.Color := JvNavigationPane.Colors.ButtonColorTo; +{ JvGradient1.StartColor := JvNavigationPane.Colors.ButtonColorFrom; + JvGradient1.EndColor := JvNavigationPane.Colors.ButtonColorTo;} + finally + LockWindowUpdate(0); + Refresh; + end; +end; + +function TfPantallaPrincipal.GetEmpresasController: IEmpresasController; +begin + Result := FEmpresasController; +end; + +function TfPantallaPrincipal.GetWorkPanel: TWinControl; +begin + Result := pnlMain; +end; + +procedure TfPantallaPrincipal.InicializarUI; +var + i : Integer; +begin + for i := 0 to HostManager.ModulesCount - 1 do + MainMenuController.RegisterModule(HostManager.Modules[i]); + + MainMenuController.SortMenuByTag; + MainMenuController.InitMainMenu; + + for i := 0 to HostManager.ModulesCount - 1 do + NavPaneController.RegisterModule(HostManager.Modules[i]); + + NavPaneController.InitNavPane; + + if dmUsuarios.Empresas.Count = 1 then + begin + // Oculto la pgina de inicio para que no parezca + // que se pueden manejar varias empresas. + JvNavigationPane.ActivePageIndex := 1; + pagInicio.PageList := NIL; + pagInicio.Visible := False; + end; + + RefrescarUI; +end; + + +procedure TfPantallaPrincipal.actLoginExecute(Sender: TObject); +begin + HostManager.UnloadModules; + + if dmUsuarios.Login then + begin + ShowHourglassCursor; + SplashScreen.Update; + Application.ProcessMessages; + CargarModulos; + try + InicializarUI; + Application.ProcessMessages; + Visible := True; + AplicarPerfil; + finally + SplashScreen.Update; + SplashScreen.Hide; + FreeAndNIL(SplashScreen); + HideHourglassCursor; + end; + end + else + Application.Terminate; +end; + +procedure TfPantallaPrincipal.actMenuComprasExecute(Sender: TObject); +begin + // +end; + +procedure TfPantallaPrincipal.actMenuComprasUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(dmUsuarios.EmpresaActual); +end; + +procedure TfPantallaPrincipal.actLogisticaMenuExecute(Sender: TObject); +begin + // +end; + +procedure TfPantallaPrincipal.ExecuteActionMenu(Sender: TObject); +var + i : integer; +begin + for i := 0 to JvNavigationPane.PageCount - 1 do + begin + if JvNavigationPane.NavPages[i].Caption = (Sender as TAction).Caption then + begin + JvNavigationPane.ActivePageIndex := i; + Break; + end; + end; +end; + +procedure TfPantallaPrincipal.AplicarPerfil; +begin + // +end; + +procedure TfPantallaPrincipal.ApplicationEventsException(Sender: TObject; + E: Exception); +begin + if E is EROSessionNotFound then + begin + if not dmUsuarios.Login then + ShowMessage(E.Message); + end + else + ShowMessage(E.Message); + //ShowErrorMessage('Se ha producido un error', '', E); +end; + +procedure TfPantallaPrincipal.OnWorkPanelChanged(AEditor: ICustomEditor); +begin + // +end; + +procedure TfPantallaPrincipal.ShowEmbedded(AEditor: ICustomEditor); +begin + if Assigned(FContenido) and not FContenido.CloseQuery then + begin + AEditor.Release; + AEditor := NIL; + Exit; + end; + + ShowHourglassCursor; + LockWindowUpdate(Handle); + ReleaseEmbedded; + try + FContenido := TCustomEditor(AEditor.GetInstance); + with (FContenido) do + begin + Visible := False; + BorderIcons := []; + BorderStyle := bsNone; + Parent := WorkPanel; + FContenido.Show; + Align := alClient; + FContenido.SetFocus; + end; + finally + Application.ProcessMessages; + LockWindowUpdate(0); + HideHourglassCursor; + end; + OnWorkPanelChanged(FContenido); +end; + +procedure TfPantallaPrincipal.CargarModulos; +begin + HostManager.LoadModule('Empresas_plugin.bpl'); + HostManager.LoadModule('FormasPago_plugin.bpl'); + HostManager.LoadModule('TiposIVA_plugin.bpl'); +// HostManager.LoadModule('Almacenes_plugin.bpl'); +// HostManager.LoadModule('Familias_plugin.bpl'); +// HostManager.LoadModule('Articulos_plugin.bpl'); +// HostManager.LoadModule('Inventario_plugin.bpl'); + HostManager.LoadModule('Contactos_plugin.bpl'); +// HostManager.LoadModule('RecibosCliente_plugin.bpl'); +// HostManager.LoadModule('RemesasCliente_plugin.bpl'); +// HostManager.LoadModule('FacturasCliente_plugin.bpl'); +// HostManager.LoadModule('RecibosProveedor_plugin.bpl'); +// HostManager.LoadModule('FacturasProveedor_plugin.bpl'); +{ + HostManager.LoadModule('Presupuestos_plugin.bpl'); + HostManager.LoadModule('Montajes_plugin.bpl'); + HostManager.LoadModule('PedidosProveedor_plugin.bpl'); + HostManager.LoadModule('PedidosCliente_plugin.bpl'); + HostManager.LoadModule('AlbaranesProveedor_plugin.bpl'); + HostManager.LoadModule('AlbaranesCliente_plugin.bpl'); + HostManager.LoadModule('BancaElectronica_plugin.bpl'); + HostManager.LoadModule('Comisiones_plugin.bpl'); + HostManager.LoadModule('TiendaWeb_plugin.bpl'); + + HostManager.LoadModule('HistoricoMovimientos_plugin.bpl'); + HostManager.LoadModule('RemesasProveedor_plugin.bpl'); + HostManager.LoadModule('Referencias_plugin.bpl'); + + HostManager.LoadModule('Informes_plugin.bpl'); + HostManager.LoadModule('InfVentasArticulo_plugin.bpl'); + HostManager.LoadModule('InfMargenArticulo_plugin.bpl'); + + HostManager.LoadModule('PedidosMontaje_plugin.bpl'); + HostManager.LoadModule('CobrosMontaje_plugin.bpl'); + HostManager.LoadModule('MontajesDetalle_plugin.bpl'); + HostManager.LoadModule('MontajesCompleto_plugin.bpl'); +} +end; + +constructor TfPantallaPrincipal.Create(AOwner: TComponent); +begin + inherited; + FContenido := NIL; + + with NavPaneController do + begin + SmallImages := ModulesSmallImageList; + LargeImages := ModulesLargeImageList; + NavigationPane := JvNavigationPane; + MainForm := Self; + end; + + with MainMenuController do + begin + SmallImages := ModulesSmallImageList; + LargeImages := ModulesLargeImageList; + MainMenu := HostMenu; + MainForm := Self; + end; +end; + +procedure TfPantallaPrincipal.actActualizacionesExecute(Sender: TObject); +begin + fActualizacion := TfActualizacion.Create(Self); + try + fActualizacion.ShowModal; + finally + FreeAndNil(fActualizacion); + end; +end; + +procedure TfPantallaPrincipal.actCambiarPassExecute(Sender: TObject); +begin +// dmUsuarios.CambiarPassword; + RefrescarUI; +end; + +procedure TfPantallaPrincipal.actAcercaExecute(Sender: TObject); +begin + with TfAcercaDe.Create(NIL) do + try + HostManager := Self.HostManager; + ShowModal; + finally + Free; + end; +end; + +function TfPantallaPrincipal.IsShortcut(var Message: TWMKey): Boolean; +Var + ctrl: TWinControl; + comp: TComponent; + i: Integer; + Begin + ctrl := ActiveControl; + If ctrl <> Nil Then Begin + Repeat + ctrl := ctrl.Parent + Until (ctrl = nil) or (ctrl Is TCustomForm); + // Note: replace TCustomFrame with TForm, check if the found form is + // self, if not, execute the following block of code. + If ctrl <> nil Then Begin + For i:= 0 To ctrl.componentcount-1 Do Begin + comp:= ctrl.Components[i]; + If comp Is TCustomActionList Then Begin + result := TCustomActionList(comp).IsShortcut( message ); + If result Then + Exit; + End; + End; + End; + End; + //Result := inherited IsShortCut(Message); +end; + +procedure TfPantallaPrincipal.JvNavigationPaneChange(Sender: TObject); +begin + { Cuando se destruye el formulario este evento salta pero no + hay que cambiar de empresa } + if (csDestroying in ComponentState) then + Exit; + + //Se libera el contenido que tenga ya que cambiamos de empresa; + ReleaseEmbedded; + + dmUsuarios.IDEmpresaActual := JvNavigationPane.ActivePage.Tag; + RefrescarUI; +end; + +procedure TfPantallaPrincipal.actConexionExecute(Sender: TObject); +begin + dmConexion.ConfigurarConexion; + RefrescarUI; +end; + + +end. diff --git a/Source/Cliente/uSplash.dfm b/Source/Cliente/uSplash.dfm new file mode 100644 index 00000000..e3b377e7 --- /dev/null +++ b/Source/Cliente/uSplash.dfm @@ -0,0 +1,1068 @@ +object SplashScreen: TSplashScreen + Left = 507 + Top = 382 + BorderStyle = bsNone + Caption = 'SplashScreen' + ClientHeight = 275 + ClientWidth = 452 + Color = clBlack + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object lblTexto: TLabel + Left = 11 + Top = 256 + Width = 3 + Height = 13 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWhite + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 452 + Height = 252 + AutoSize = True + BevelOuter = bvNone + BorderWidth = 1 + Color = clBlack + TabOrder = 0 + object Image1: TImage + Left = 1 + Top = 1 + Width = 450 + Height = 250 + AutoSize = True + Picture.Data = { + 0B544A76474946496D6167651A7F0000474946383961C201FA00E60000625E5C + FFFFFFE66738AB8259F6D2A8B72624886A4DC538298F8F8FAC2724000000FBFB + FBB2B2B2E4E4E4F2F2F2EDEDED30302FEC733CF48544D5AC83DFDFDFF07B40CD + 432CF7F7F7F9A8A6FCEDC2DD5933D1482EF6D7CEE9E9E9D5D4D4EABB95DA5532 + D1B1ACFA9630C4746ECD9992C7C6C6D75130FBCC30D44D2FF39367594E44BD96 + 6FC0574EFBE8DFB04D41CC665AFDF3E6B0AC8FD7C5C1D8D8E6BA3532B08981CE + A87DE15F35BF2E26C2433AE59D90FDD75DF8A57DFDF5F1D26F2F423D37D9D5D4 + FA812EF1E1DDEAEAF9FEF8F5AD3A35AB302CA22824DACFCCFEFBFA878686E3E4 + E9CECEDEDD6142BDBCBCA48C33A6A6A6BBBCC8F6792FD2513AE1E1E1F5F6F1E3 + 7D62D6D6D8EBEBEBE0D8D7999999F6F0EFFDFDFDF1EDEAFCAA4CDADBDBEDE9E4 + E7E8E9CE827DD45A44EAEBECEFEFEF767473FBF1F0D85538F9F9F9CCCCCCEBED + EDC94E40F5F5F5DA4E2FD9D9D9FAFAEFEFEFF5F3F5F3ECECE9444343CACA9DE1 + 7630E96D3AF4C2BAD1D1D1DD8542D3AF34D7D7D7D75E32E7E7E7EAE6E62C0000 + 0000C201FA000007FF801282838485868788898A831F04305C01919293949596 + 9798999A9B9C9D9E9FA0A1A2A3935C0B17650F580F0E176990A4B1B2B3B4B5A4 + 12221229B8BABCB982BBB9C1BDC283C3C7BEBCBBC0CABA3C041949B6D3D4D5D6 + D7D8A50B6D657EDE58656D170B0B01B0D9E8B3905CECEDEEEFECE6E9968BF5F6 + F7885E3C1C30F3FEFF00038AE292A6CD033F541A34E800AE559A05E7044AAC64 + EAD4853618336A14E70AA2C45ECC42821CB98CA4B193224BAA342682079E7E13 + 63CA9C69CD94C10614285049E86795B85734279A2AE820D5AAA3AA92B26AE531 + 20BEA75017A5F89021A8D5AB5837D9C4D2E00B05AF5EA9F42CE31062BCACD6C8 + 5D4CD5C18FC2B770FF15FAE9F020DCB888E906FDE26568AF5F7C7B09FD3534B5 + 05DAC38883DA7C8033A7E39D0D7AB26A930668E25A04DB3850E576A7CECF5474 + EEE4B9CA01E572FEA2AA5E3D68DFD9CBB063635BEC272758C7A2E74EBEF05A36 + A805698AB66D101AB771E33C3B901D979AB5737C29F611C1EBBBBAF550B44343 + 56E85967642C584CDFA57EBD54E63258DC1E7FFCF93864C9E27A5B4B54E1797D + 45F725E43FE4120691F20006A8096D3925D74107C43D469A5D4D091889291738 + 804518097E65A168A365681B6E3BF5C4143ACF85584F0A53F1439E8328566753 + 37A1454616375C35A6A0870E3C84A24D0E20581C870945E68D379171B7236E0B + 7D888D6AFB2D92A4FF214B12F64C34294609E0296574305A789545889E5B0986 + F5DD8B0FC917DB8A086E285A6407829714780702495C715E5150641B62D622E2 + 9D8AF040D57F52F6291B3B11EAD800166D40A4168C9D15D7E35CCB59A6628458 + 20C8259A0FD4E5C0A59A657A69A5E001A9E8770E9D388B7EA4D6676AA9A89EAA + 2AA982ACDAEA20ABC6CAEA333DF8692B6C5CA0820564E1C5C3CE2945455AE163 + 0BB172973CA25A056C5165344B9678955506DCB4695CA459B39CC9459769D226 + 1BCBABE0B22A6E7EE41E522E93B0A61B6E0A041876EBBB59019A23710B158A6C + 00C05DB4D9703B26B75C470D8252861208D0A1C0C108230C01024A3831CA50D5 + 46FC103966C1F30EFF5197A692CA4F2528A1040409274C87C7B2A46AB2AC289F + AC72CAAA16C627BC30D34490846F2A07D43AED54A6992A0A291859A56455EBAD + 251F876CF4D14A6CA2C5D14C376D3400B96A8629656928E1F4D100382CCAB9E3 + AADB75B85C87ED759253393274CC685FC34E705CF154A3AFF7021AE103FC12EB + CDB374B6B30903205FED3403992CEDF7E0099B911946AE70E144DF84270C4019 + A1AC2C39CB9357DEF2332D4893F6E600CDBC6B42E135B80EB2C01195ADA29085 + 01CE4FDE02D0B8D3495F22F8EB7E435DED4F0B584D7BC81040FE891E964B003C + E5C4077FAA045E50552BE7FF98B1BBD197C9ABA31F65004572DCC81214A184EA + CDA81CB7273E60F0FFF34723203BF94E1B6ED12BB3A3AF0004A05420FFFCFACD + 6FFFFDF2D76F6AFEF4F7CFFFFFFB0BA0FE04E192CC31CF1FAE739F02709506F4 + 2CA40CE370C2C19236BA0ACAE3503C7B9363BE139E1A996512E35360C2D46089 + F689F06000C05765B8F085134EF013C58BA1F166589F12F5E06C079485F31418 + BD5C6D86156978430215603EEC5970285A12D68EE43216713445772E3C18FC2A + 61C213AA2F4C211421041EE009FC79F18B600CA318C7581FCCD52987B61822FA + 70B53D57EC10611434A2114FC18D8374E92B1D5A1D44A010C59069818A7D4421 + BE20D2C23EC68E13FE0BA0FDF4B7C8440ED08B8F046024EFA32703A2111B6F5C + 6362D6E68A2A2A20FF76479423272F252C0D7AC70FADE002E30249074006D270 + A6E002145D38454492F196B8CCE5FDF450A2E95CF21A6A241FAE8033CB84C531 + 94C8AC484152E18D9DC4A9010F4803020219320A50C2930A4C613BB2E8422EDA + 528C8C14A31EC4E9C571DE323AEDD2DC2FA9914961C20622C54458119129CA0B + 9A2E46DE81E02A9D0600C005C009ED6CDA2123814DF7C11212FB341A04B45099 + 1204F4685ADB842E23A04BF951147F17AD680A30C08116E0709D9E08E6F3C624 + 4BA61D931C70A367052D122CB78487018383000929A186C10D940B0545D81740 + F12B762434645FD0D9052E5002BFFDF19B154DAA52F1278102BE0CA4B478E8C1 + 8E9A2276C4F3850FFF32947CE8F9207340486369906AC220B0534BD4946966F0 + 98372591D38359931338FB55007EAA307210C58D47FB81C7943053895234A37F + AD0060E717D8C21256B088B5E86115AB58C31A969204581E5469215284515514 + 6A508254D37AD94D5040B30ABD1E264A8A3449C4551E14B9D72532330EBA26EC + 8FA3A3C40E47C6D74CE0D46F651D90572BE2D3ABD1E10D11EBC81961B8D4E21A + 5717ED9A6C2DC4DA594F40C1B5466B6E25D4C04D93AE5512D5759A166E5BBEAE + 42A2B20A704245B0E037081064851FA508779DF6D64EF4B41CD05598C7A4558E + F45A02B18EC5AF7EF31BD8C6EEF7BFFC05B0609B5A15E5CE02BC0A90EE2610DC + B45662E2AA4E8B68FF24B2DBB4ED62F39891002FE020C1C7AB292138A1B26F29 + DABA3BF1F256AC4D4BAB882BC158010FD6BFFD5DAC8B671CE00A3C8308EA34B0 + 28981B0A14C3EE120C6E9A8429CCB43F5EF81D01006F44219CB012B4013C10FC + 2076D6EB4287518C0B1D7EDEC2AE1BBFBF4620C0FCFD328DC70CE6FFDA50C7A4 + 40B082312141F4B557124CC62D765F67619312841C19665A447DAC8006BAB40D + 24365A6E1710E8D789775AE510211DFAFA89323B9ACC907E7405D0E95134EF18 + 7DB59CB04169EA3E070780C84733B2494BE711254BC2C710682071FC708169D2 + EEADEC2874E30E3D2D2EC054846608C59777CDEB5EFB5AB062F6B5B0833DEC5F + EF1AD85EFE6B5339FFF0544B7722C8579B04051498E9B92A506BA08E6E002E6C + 91BB6878CE4EA3C302BA512F59EB5412840EE4A1A305CF1392B5D1918EF7A3E7 + 0D605A391B147C6E5AA6990C80BE16B4BD6D36295BE99AC24FD379DB762E487C + 4CADE9706F836E58B880B9DDFA202A9F70DDECE642BECB9BDB4D10BBD8200FB9 + C8471E722BE0A1D2F77EB6FB2601DE5C5382E106679A3F25F1809F6ED1B4101E + 2841055E2DA6C03CDBAD5C668D26AE80DC5A5C841877C55DB2DC694F241BD950 + 3FB6D43F1E75AA4FFDE957AFBAB2F77186947762E347AB7600A0C0300424D077 + 93803055E9AAF348E8AEEC3AB72AD38AE85584978F93AF8079907F608EDBA5FB + D5A625FAD5C49BA5FF8B0C354C7126DC9A2941F2C63BFEF1C59EB474BCBEE095 + 83E2B3158EC4B499F6664FC8BDB46B7BC885BD8AD26FE739DABF8208D18D2EF8 + 0843C8F019019812B2ED34B15F02F2B8CF3DC9059B8297505E136057A827B450 + 34ED4622E0BC7B18698D064AA18DFE5E4A6E079FB9383AA2530067AD17B2F6C4 + C17DC44DCC141E8BEFD1188D895DDF210276D875FACFCFEBF5A3BFD7EC87FFFB + E39F7E5F9FDFFDF8973FAFADF00166AF78B2D0E6349AE03107677746E3693CB5 + 7C21134714337AB1157DED763533050BAB670AE640623BA552D99325C17578E3 + 60281453190800768B2709BA778228286C12A003EDF27F50C563A1F059E2176A + 3B77342E37651036FF4FF1804D0860414A362DB7F663D5B73B41152624767DB1 + 040F5A655712134B4B5811E48011ADE00A8987559A1001E7978558B8855AD885 + 5CF8855E18866038866258865F161D1C7043BF67096A160A55687C0618320587 + 83025741A34731A767340C700A0B405E573345B145095C70357C102185426259 + 503A0FB188D4122D43E50A69F0057BE531DC04000B2021614017855254573387 + 99F0655E088A64687E5F288A62688A5B888A66A88A5B38691FD002CDB6860100 + 839E407B4AA005D87454D8748382A80911C87CDE1587C6942F364261B4368846 + 158C9570356F6010D583818A182DD2185CD532540B807C4CD3014F2617D5C305 + 2AD0899C308A66D8FF8577308EE2788EE6E88536860767E082BFD4869EC06F03 + 958B91C07463650981888F0A684CBB75814C033586071174E530D23738B0865A + 9270564DC3070ED01312875B50885220483121480E85043B6CC32810916DBC88 + 09E9888E20F99122398ABD248B93408B9C206495A07691A09046C36591E08769 + E53112F67946633E49288C080335A7F0101769345AC30EF6A892955006D0C690 + 07D26A1069314CF95E830305B7731A24D67696508E5679955899955AB9955CD9 + 95598985E508965C6905BDD775269987DAD6092EE93896405754255014917338 + 5787EE50505FE00E62B561F1D0380040554A10800AC090730168D45474E43083 + 74A005AEC0000108FF059CE0955B69075629995949997760999139999A099995 + 19011B058BEE984328A909D8A4022B99790D377E9CC634137874076338FD3894 + 0AA306ECC060E2855AAE569807F30639D2010F494D59600AC1F73A305995E528 + 005E899CC8C999CCC999CB7907CF7995D1790715A003AF28596B088F9C505037 + A805D0055BAE094770A66F7A139E0A707D92F8005CB096CF6362F2F000BA8930 + 82A98DD9E7345F00119CC84A9DC09962D99CFEF99F90690556D01F67399A8173 + 42DB552D0B3083DAD59310818DACC9057EE83E4E808790509F7EC307DDE09BB9 + D9476F001C5C407B25B69FCA79073E009D5859A2275AA2C8B9A228CAA22F1AA3 + 2EAAA2310AA3365AFFA37760051C956394A79D9BC09ECF8300970841B2D938A9 + C62C94F193DAA74A0AB487DD020922AA657EC018BE89A14C1354AE00A10A8480 + 9A9095D3799CC96995370AA3D289A2607AA6669AA6656A9564D982B268A099C0 + A0EFF3531F562510349C09C3074F3617849206E2075B6FA8005255A1D6721735 + 474D007011DF9006567A34595010E380A7FAD6715D3AA6386AA9987AA99A9AA9 + 997A072BC801ED989DA8D909457A3414905D6690068C814A6910A521E30417C0 + 187954357EA304908005E2D74A7AC605D7621A10B1795104058172378C5A9841 + A51969D001723A7808A909CFF9AC9B9AA6D08AA6D05AA2D42AA6D86AAD388AA6 + 9EC903964479709AFF095528535CD0A10A131CBA4119C3E904C1A123A1413D7E + 105FB906095A3A56EAA967C07129E20111E2734200C06A12C2100F40278D6A34 + C0551435F206CB2A73DD8652A2029D0210B13E10B1264AB1112BB1173BB1CA69 + B1177BB110DBA21CBBB11D2BB202A0B11F5BB221FBB1D0D97BD899723EDA0971 + 4607EAC9056FA067CC822969E004220A001DD0737483103AA18DF9F98F5DC537 + FFB89747C300E73554DC7717E64A3B74500273B30A93C13EC66A100C01417E00 + 984743077CD04040132A98C0A2294BB622BBA9656BB135DAB16B6BA36A7BA3FC + F7AD67290B0393450BB3537404894A272DFA921138CB07E1C77C1FD66DA68320 + 0A31B055134C1040FF9371537C13449B28853D15F72B0A271E36D9386620B506 + 01654CB18385C99BC3D113E2E0045C7B307420AC7B4A1A037B2C9510B223FBBA + B01BBBAE0BBB27EBB1B27BBBB51BB19E79723C3AB7B4B00EC01229748137A621 + 8587172CA5E128A6052C2F6216CB941E0752171E485F152965D9A31617415F39 + 59414321854EC40E92E8B8BCE331521B1C07C128A7818F82188D7B0B89D3388D + 7BFA193F532369000504C834B4E50ADCD03DB9D110007316676BBB691BC003AC + B2024CB2076CC005ECB19ECA2E72EBBBB2D0BD5B422FBAF122A651BCD6423772 + 512395B00DD08BB8E8B63D461129ABD02CCCE22C97321EF76257D652BC18A1BD + 71A54CD578780EABFFBE2B921E7231B001635A0889445278C2CE421642ACAF6C + 312CDEA1891FE8844E483117A1C143722692C12DF51500B70BBB4D50C5589CC5 + 5ABCC54D60053A00AA101CC143B119FC9B472FE2BD2E4CC6383128BC4109B14A + 2F1DF036E64047178C1E860B1709B120B85331CAA42F433C85DACBC7731C95FB + 8A17EBC03609D22165801AEAA5847E4C37771C1792DC1D71724A0DC111333CC3 + 52A3C1326221B7C113CB811A5B3CCAA45CCAA6FC99B118C6EEB50DDCA02305F2 + 1D4BB1112EBC3308B11384821717C0157212C7E3A0339B61C14571BE466CC967 + 1C2638031C689C2998FC7D2BA533DE9752EDB0BFFDC2AAA3953D3EBC19E98110 + A6B41E3CC2449C8BFF2917AC2944AC0AD92C24EB31BF4071B137A0CE02B0CEEB + 1CB1EFDCCEEC0CCFF21CCFF6CCCE137BCFEE8CCFF24CCFF4BCCFFB4CCF77F099 + AA8C1DCBD416DD2116C3ABAF0CCDD018C14C384105B7ECC60F0019CA91110EF4 + 0D76714F3DE3C939A110591B62A4573A3F8C377BFC0E209871FDB83637B12162 + 0141DE72CCF99231AAD0165CA221DA311A6F311774511728FCD3260CD4D892CD + A1711BCFC4CBE560CAB21BCF1DCBD4B07BCFA5ECD4B17B073A80073DD0BB058D + 8FC062471B042AADF0C30D3D35DCF326133D09B9BCC653DA2CE9F12940C4C2C2 + D119EEF13360F20AEE80BD0D8D38902891BE020FD7FB709D2C163AAC37ABB581 + 2DFC436DE21693C2FF44DE90263EDDD043FCD8083BCBD782C39DEC18536A2FF5 + 9CD900ADD99CBDD99E9DD97DD0D99C1DDA9F5DDAA02D0015C051A19AD599F0BC + 1592100BCD1152F3D30ECD4CDA51D69210AB3A3D17DCE1C909D1D676752D3F5B + 2171921C96225C381395608DD7E865CD7B9DDC2D7D2183E241829C5AC95DD86A + 0D1EC23B173C4DC2541BC4E01DDE288C298FA82FD80CD7B7014DF612D0A2BDD9 + FEDCCFED9DD9FF0CDFEE1DDFECFDD902409678C06CAC8D090F07D779042D5992 + 31269C31E0CC3D574227949006BB222779FCC4AF8C2520C8B42D35CC72B2101D + 943832ED880F3D352BA4554826D39BF1D7D37D78CC5CCDA167DE045E1795D2E2 + 1AE3D3418DB0421CFFE37FCCDC4AD7C255322C808DD9A6DDE3ED7D03EE0CE4ED + 2CE4004DE4F56CE49E4DE448AED942DEC5558D72FD6D5A057110C501D20C32E1 + 7504E3350ED13A81DBEC9023EC51203CD1195F003A1E74412C65C7C46D210B22 + C50EDB0EC82C35189CD720EE0E5E35E58DF14CE1B1CCC6DCACBDE8C3E26CE090 + 3DE8272CE3913D35263E8DFA22AB60F1DBEB6DDF90EEE3921EE9948EDF9FBADA + 518E2F0601B47232A553A8D73DA7317F7CE06BBD13035B0AA8501BC601D2ACE0 + 40117EE6A917956C01D74482262F92C45980013A2004444047C9CC117ACDC715 + 11DDAF5EDE265EC36DE0049A0500508005A6B5B4D602D6613DEDD41ECEB1F788 + 8ABEE89CAE13979DFFD4401EE4DF1EEEE22EEE430EEEE37EEEE87EEEE55EEEE9 + DEEE40FE025E0CC6999E2B07B141D443DD13B90DC1ACE587BE25B7ADE010322F + B7D1E9D2DB730D5EE625BE8421F8C8B42EDDC5120EAFE0042CD0041F7043F952 + D229FC811479319BCE1ED3DDB44D8BDC25000000A00200600679F0072590070E + 10EBD528EDD51EF388C311E59DC9144EC654D0E8EA5D0E459EE4E0BEEE3F7F03 + 4DF0EDEC4EEE3E1FEE40CFE4EA4EF49BDD048581D5104C105552E5178D67EF35 + D3A21EE3445CEA125D2343251C8DD1230C91C2F5C5366CED41497831220CC9FC + CBED7B6E6B286002567DE716E1BD74AED7A9D7CA88FD16E131BD4C6B8D5CD000 + 4A60004A10020C10FF026AC00066300040F0EC1073E37F1FF28F08F2D3FBBE8B + 1831DDB729DB0ED8CCE1EE9EFFF9A01FFAA2DFEE2FF0F4AC6D0A34F3D1171D26 + 0A8FCC3FC4EFCF122C3DF3D2151EF60FFF1374AD3DE851D42F5D281FC4BD4C98 + 2530F2260F44BF32E00226100237F4DCE7F57D751EEBDB43D3BA41DD32DC1101 + 9007245F029100071DF097FDA65E294D9188B6C4ECA6F0E50FE7173FDB54AEF3 + E1C0F340AFE442BFF4403EF4F05FF4E3FEFEE96EFFE6CEF4F70F083782023702 + 7729783D5C018C8D8E8F909192939495969798975C6D0F0D54140D1D0E6D690B + 5C0BA8A8A70B69170E65580F0F65B4650EB7AF587E549F7E1DBA9F1414540D7E + 58A3A55CCAA6CC69FF0E580DC2C565A45C5B2D5B175D426749015C497F421C42 + 2D441765BE586D5B60E324161B78175C69DB1C781C1C678B6D5D2DFC025C6B91 + 6415AB3614D494B8320796037A581222A1B0255599062154007022A4CC852C03 + 00986120A4439A301D9571F1D3A04D80050E1A60B910008B90120C182001A3F2 + 4287966DDE5068636A53423542885E68738B163061C3FC3CB8B020C08D3E82AE + 66DDAA212B56415F6F74E5AA5550D7B35BBD661D5B562BDAB46EDBA20D8B5543 + 93173A38F4C8C4B7AFDFBF802F39DB15F5015166A9121F7420AB712D5A4DA17D + E2D5C0D39761C53AD83AFCEDDB2A65ADCA740816EA6100286248C8A83126C599 + 001756BB60D37A5EFF1AA6DA640C78C1BB8885103D16FCA9C1C285050B2FC4B4 + E092A586151D491690C0BBC5A0032766546864E08A5416040000A83003A58C32 + 064AC48F0700C5497AF1060C20A0029E4199000D949829B18981991A145C0045 + 78DA01800005A67CA184124E302052092F95014576E13951C66DAFD0F2C02E97 + 7D418C61558105D788249668E28964A1A86289117CC0011181C528E38C343292 + 4627D26071612A06A9824A68B0C852C62CB61409CB2E930D230C15BED8724129 + CC9C62D02A4B6D48DA03697051036D2CE4604113599CC60672237439860E8751 + 50837153BC30660E785484040B6E5821C60839B021C61969D490039873BA31C1 + 32A638A8C2826698FFF1E4022550A85F7808146A8678E101A005769402608012 + 73287128050138119E165C94E1A9167F7430A9125AE8A7C2005804A0C6A4145A + BAD2A400D4909E0A2400E14C864F2D29155156D515175A73891597B1C622ABAC + B35D35AB2CB3D33E5B6DB4D662EB6C1F0258F1811035862BEEB88F28D34644BC + F8410D628AA59206860F60110B918F31064D34147418D53154152565BB3FB2F2 + 8C1F5075D006174A5890030B62842046173218801C122D84C082052C70700A09 + 5E8AC1011250F816423642848044165B34300272430480C4CA620C70C0C3CB94 + 8A804679F85142090EDCE8A9194E44A3051D1BA581C51B5068C700105279E029 + 000C64D1401A499BFF91C7025A88A74403658807C5026538A10615B624ADC217 + 5CE441E04839A5011E0031EC72B3A50BB4518B951D12B36E007D34116D136669 + C5ACDF8257DB37B4D66245ADE2842B5EB85D8163BBB8E1C7021E410A2F92ABF9 + E681D5E300C11418F310C03CFEE84ABC42D26BCB2B1D20099534A2F4AB12BBEE + B2623B533F49E3C0027E5A40B310499050C414217406850507E0C1C51F74B221 + 042A4E208FC116ADBC9B06120C5CCC82108B38D125C6CA1B24A078314CBD541A + 258CAA121FD9D5E08032256804844A6D68315E1E9D79105E0917E00A800C0D10 + 8F1A1641403E406100F24B1B85F8730179656700256800D23462864D008B30C2 + 02915534D007C49DFFA583620121B234F0C11286D0841C3C0B094FB8420F9EF0 + 85C8EA600B618895E770837338CC61256E83232651832A3D6AD7BB9812AF790D + A95EF1F284302E839907ECEE3342B45D29A6E88A7450E10B0D78C002CC700079 + 1030004A38001B3850152EC8A0080720411A64609C3DA12204681C992B644002 + 33B0E08E46D89E32B6508303CCEC0FDFB0DD02DE800003D061241E4983FD54C0 + 809EBCA703E7D18E1A8A8285A7C9A02706B0140554A0854921A00487A44200D2 + E0815689443D7C485B7894F0BE6FBC413B4A789B7634B2802A0E8943F9FA10B1 + 5CC8CB6CF9B297BC14E12F8589C26122AB094D48C107CCA1C3663AB31EA28906 + 158EF12ED229E636FF439297638894A1D6F1E275D3A08A67A23845EBBDEB02A7 + F3C434FB64842670C0335A3AC01834B688881D4007B129C20680A38C101C8006 + 1F7888F7BA388210F4D179A668430870708011706F15505A807F3402052C250D + 6A52EA93461AA00C27686492A6A8A40A0CC09FA2D88F3C2AC88383CC603F2D74 + 21006AD308831840B4F9E5213B0C789F29628A0004D02A514AB0A05330581871 + 925086293C2A0997CA54A53AB5A948452A53A3BA54AA3ED5AA506DEA559B7A83 + 26E8000FCB71A65839B7898BF4622A11B5262BE0A5CD6D422689F862E2340E46 + A8C494D39CE644A76888611225D0600C485049006A400338C1C88C68240117E0 + 788010D0840B4E30FF42636F34023186A01550C0011BB2F02E24B8E09F39800E + 68DC454A04108D0154D3CED794612A8D6021922A504396B8205200F0E7140130 + 547628F086EC98810E390DC0CD54E084AA785405A9541B7B76F7AE2F6807010D + C8D02B7667370DE1D2435CDBE52FB7BB54EE7AD783C42466B6C20BAD1996D72E + 56E0011E6030D6F68EAB6ED0888A47AE694DB6B63575AF7880375F275F62D955 + 8A787D92805B3130995CA0064678011EE0490223E4400CCA18EC0170A0BC33CE + 8C08D6101E0D30C01C0334947A5918010D9C7701215476043528C20BDE998A0B + 78A004EF72C0CD06E0002AAC92AEE9E3245D3D0A80492A030B35D08E1358CB05 + 2A4C6AA47E58C0AEFF5400A107FCEC3E7E80424D619A9DF2D472010D30C07806 + 680A3EA8010875BB60300AB34BAD6A1504664E339AD34CC235B3190D4B85339B + 35E06635CF59AB4D88000632E7DE3ECB0826A3E18566A03445415ED3BEA8738C + 867E120C26FA9028842A7480058CCE4A33451726318311D81058CFCC09070F0E + C1088A8083EDB9CCC30FAEC108468D0335368005A026C10894308204E480B329 + 3E0007B2E0021C8CE00C824C9A12A030A0433D44CAE38142D688960555D0940E + B2458503CCC6D21A20E0424AA0C3781EC00564AB409417F0141D3AD9533AD021 + 0F5C5083786A7021743AC07E87D40214C0A304D456F79657CC6516CBCC66A9B6 + F9CE000FB8C09F0AFF70AC32B509DEE2B39F17DE179810A634590A58A18568B7 + 22C6625E421AD27E5FF7E8324234C0D5ABB4C897E2805FB46104090E9F4AA280 + 721C14C108BEC64341B6A0851C140007051003030C80031D0C210DC233821168 + 400206148106BBE6F90B9E44D8E4598F0B0ED2B6B6CDE001AA34A0D8DA396423 + 53C16390B2C2C800D0F6A1B86D362838200025D0B212EE8376F1685B0B397602 + 955500852EDC86146058F62CC70DE3A61C69CC4C9A4A559A8A6637175E037086 + F3E1154F783A3BFEDF875F3CE2279F78CA3795F168AE7CE41BBFF9C8237CCF30 + 62B8E82F0136827DA8671297E2A189A8CD8B671C168C5EA2B0D615E9B59E33E4 + 236FC3524EA79910FF904007CF93D2229020EB55EB0009F0FC0309EE64853885 + 400723E30218963F02E0B7E0F754203EF45B9185DF3BF64969F003035AC5AA3C + 2C8528D7D1020258C53F5650E50BC46E40C0D2366FF6670969506836171EC000 + 28C8761161A37E5A40056D307E6F405BC4A6066DC0140F910601B820081035A3 + 9021F89637D955152020439AD7417D90798E77789087781D48677D907832E481 + 2838796EA6799477822388822F18673128791E8806DDB24CDE307A3A28090E28 + 4DC31271AA9756EEC27AAD976843A25F44357BC41269D6436922A77B50884E9C + 80059AB180BA374511F64575257CF0343B2A4140B3B35655320B56380ABA077E + ADE00AF2B22EFE02FF1A69283BA85069C9F0853CD2235EF8459050338BB13ABA + E723A770777E172C4585812050887456888898888A98888758788BD8888B1889 + 88088993288996688897A88874D60462E02239B883A06823174166B523698636 + 44F6E27A18270B54A844F9A284458118E7347252B87B56B81447E20761D00164 + B8286D288B86463A42F823E7C414B0E707BEC08BD4B0804ED13A2C213AE02786 + 6978864DB87BD1584E689886E6244859D808A0717E7E570BB7B080E04881D695 + 6FD8A5419558881D8889EE9881EBE888F0F88EED288F8D788F88588FF5C888F1 + D888F5E88FF1588F08F72D8B108AA0E8809F100AD40084A61851535471F2A28A + A9B32149D85F1E27FF8B6F688BB66885CC281ACF680C3F545F00D390DB2884C5 + C8182C110A4EB480B7000CBC707AD5737B23877B338986037693319918DDF80D + 04365DB8E0934CC18013385D43057852214E2060028AA89499D89491C8944E99 + 8850A99454199549699553D907CD471006B98337120DA5711841A87AC44884A8 + E37AACC868FA62917A683A96B6911CC99219320B45840C71584D519297F5E087 + 519497A46537BFF043D57369F8123A89647B00E69025B98DC4387188B956AAF0 + 4571E80AB75069B8B07B97E96E148837FAB63726800688089A49299A50A988A4 + 9988A7199A85F899AB299AA6A99A57B99AA8299BB00902A95988AE799BB68988 + 5680082DD0953AD8FF837CB59010359601437216779689468515D971E3F471B5 + 088571C9916678017E400641B9006B4005CC657B19958635730104B80CBEB800 + 724001E6B10A6D2007A4707E651006900613D1953B4CD2334BF1230FF1190E48 + 06C9609E5F200789E100FCB99717100716C42397A10A72F000612007DF784EF2 + B906D6488EA4D00661D000945994501178C4D204B25995207A95213AA2225AA2 + 247AA2269AA228BAA22A9AA220C089605590C0E9675F090AA220960D798A8826 + 918D8184DF944190F62FEE02977139810C480A6AC0001E503D0D8013251006A8 + 100679207FA6400179A0066A400F01D0012510055A1400543036CA100625E004 + 5140065581054E0AFFA527C10041A30C1DC00025B0066645010653066A806E5C + 10A70CE0076B50A572FA3E5C100651E0044E30A05810050C90070E5A645AB004 + 6EBA06A07129CB50066E1A06637A0568BA00841A0561D00A0B70054E4001D5D4 + 204C804DE768811AA4071E2AA2684095AFDAA22C0AA2B1FA99B0BAA2B55AABAE + 3AA2B9CAABBE5AA21AF01CFB20A333DA5E08490C3AB228396A8AB8989CAAF818 + B05719407A91422A85455A8641D9800CF04915DA7FFD1705CAE0010CC06590D5 + 7F5020A95C100507D2A86AA00503945B50A0A84E703014E0534A7005EF7205AC + B204CAF005080005F01968334105C4D6AF89E204509AAEC30669E3D7AE25E0A0 + F53A6C64A00CB3E2FF1F5BA30C14C02A82AA485A405779100568D30651E0AEFD + B20050A004E0CA0A08702961A6A119244EB2D604AF6A02349B94347BB3389BB3 + 3A8BB3364B95350BA23B9BB32A1AB4445BB4466B02C19A177B51ACEE55A36149 + 6863A998662991AB830B70450CEA12A47AE97EE098ADD93A8EA4E000FD47054B + 71292A0505CA7005E39A0A38A16CE6711AA4D2194C000510D26D50D0006E7A76 + 14507F57C00A6F506F90540F6FA005E627B06D70758DC4055730215A80AE2550 + 6F74D57F65A00551601E14D02A0F5B0F79C02AC34601A7E01E0890B201A0055B + 17AAA30A13C44605ABB006989B0A61A07E757337D7A537C412021360051130B3 + A379ABAFDAABBBFBFFBBB6BABBBD7BABBB4BB3BD3ABCC03BBCBE6BABC81BBCCE + ABABCCAB94686005182004A1C7B462259C0A490A513B96C8199146C8871CA971 + 1DC08BA3F32F423A44D73A94B8A07BE2C7005F701B6A0B05F0AB0C54E0A63B42 + 01E31705B3A5B64C80A65CF0050C7005E1AAA85180205CB0040DA204018210ED + D101A820078B7B057B45050643A843B6005F5002C4F6A7E91605AABB5339C100 + 080CA93931B1A14AB78ACAAFE51AAF5C3764A590101C95067B1B0558C00A8B1B + AF3D9306F70B0518E2B283E832CF27064D80B35370B3474CB3496C022880C446 + BBC44DACC43BBBC44B1CB4516C0250ECC4347BC554ACC539BBC46340BD42A0A5 + D8DB4C4E5B85509BFFA365998AE1FB93454A817D08453EE27E72F993760CB624 + C72F593825DA485A91694D61F8C7E8A02357584B95060B4AA42EFD5268B5D798 + 7FAC9353428791599C6E398DE844C7BED80AE4888AB28B8E3EA4A540800421E0 + 307740675B6CB4577CB4557CB36E70B3A91CB43DEBCA3BFBCAA72CC5B5CCC4B3 + 6CBC2FA04C5C59C63A849036BA90DDCBAC10D9569061A4B77886D6D89FE88B18 + EEE6B5776CC7E9500C8631876168AD1C599EA51884781966AD23131EA1992ED9 + 443B1C724D4893E80472798557B7B7CE79558E46DABE2C09CD44F9771B6A0CA4 + 10006FC0074820030E630520E006ADDCC4048DCB597CCA059DD0B8ACD047DCC4 + 078DC55EACD052ACFFD014BDD0169DC505FD99ADF12DD7EBCB9BD383F2857AC3 + 0C6066C94DED5B9DD4D8CE7CD9CC8018CD4D618EF4798160B80CD328949B9C98 + 20178DA783245CF31084297BA1730CCA3CD41A19854E488B22979172B8D4D368 + 8E465224F50CD54FCD991EC2A169C0075FF00640E0CF2B90BB6850D1130DD108 + 6DD115EDD0106DD6192DD6674DD64E5CD66B5DD10D7DD137EB5531EAD19C03D2 + 568D98CBAAC9F69271779CCDD4188DECD2CCF500CF2E3D5D499490A290068C10 + C862787E56584DECECCEEE87920969182C195F1B2A130FF18445AD91481DDAA2 + 5D93E508AD4479DA525DCF82380C1CEA017CA0D56FE0CF448C06538002B67DDB + B75DDBB6ADDBB8DDFFDBBEEDDBBCCDDBB81DDCBF3DDCC59DDBC7BDDBBFCDDB26 + 801778D00D76AD39A547CE693CCC3F7C44E258B5F24C8E824D3A3D4272B890DA + 4F8DC89371948B503A733C44D688D3EF6C3DB5F40CEA94453E5D72719523A3F0 + 965198DFA3BDDFFBDDD4D0FADF000EE054FD8A4C82051E70E058FD05B26D0563 + C0C4CAEDDB0E4ED0B61DE1CC7DDB11BED0B87DE116BEE10F2EE11E9EE1093DE1 + 1CEEE11A8E062FB067D511DDE3321809C92FB627D9514B724FED93E388CCCB0C + 2553A297EAFBD23C8EDA1B224D9C1D515F18863209E3935D92E974565688C81C + C7D9B9F7D946CDDF52BED4A55D2FE28DDAAA5D91C272E057E0016FB0CF25E07B + 5680066E90DC668EFF026C70E66ABEE6C59DE66CBEE663F0022190082A2E2E80 + F692C92A69461E84E04D8134BEDD29EDDD7EC9D7E20D198F112C8F86975E088C + 7B7DE4A5A086A627DF24973BAF18D4F71D9D503EE59A7E93326EE586FEE933DE + C9FAB296075EEA6FF0055FA00674C4E0650EDC232EDCC8FDE61D5EDBB51DE167 + 0EEB6B4EDCC51DC62EA208754E23F0E509C5303A77B5E77A6ED86E6C86149ACE + 38AE18CD5C4B0C78E5D9FDE350312C819E56429A7AC58E577108DF4ACE8C9ABD + 244EEED9FA1DE59BDEDFD61A8E868EE5D26ECFFC05151E9007F17EE01D82044E + 40020CBE011B8002FB6EDBFBFEEFB70DF0FDCEEFBF2DF0BD6DF0087FF0046FF0 + FEBEF001EFF0093FFFF00DBF01711E02C3FAEB32B2099DD00B8739D9D69DEE2E + 1D9446DDCDCE5E3AD71DE0879E3B97B16F5D7B863A494EDCCC98AE10D386818B + 942E57428DDF997EEE53EEDF28FFF3D03AE0A37EE0F25EEA1E70055FE00132A0 + 035630056E20F110FFF0C91DF10F0FF0B8CDF00A6FF5510FF554AFF50D8F02BC + AE17C48AF17DC105176025A0B0908E3ED2B338CF279DCDDD5DF2E8DB93521DE0 + D42E0C8ADCE795B928D94E5F7A3E71E810688F868BE18E19FC42EE3BCFF3A35D + D3EA2EEDEC2E66EF0E15499F07451FEFAF6DA5ABFE024FFFF45BDFF908AFEFFC + 0EFA022FFA5B4FFAFF2EFAA87FFA9FAFFAA1CFFAA3BF019C087A641F18330F96 + FC22D9ECDCBD12C7FFF85E7B8B71DF2ED56A374E7D37B5D08AF9E6070D58C7D9 + DCEC2319F3AA800E84519F5048DF402D3A445DEED6A8F8A28D7BC6E8E9A10EEA + 9B795D4BB2440D90F4468FE0599D07FE9C022F40DB9EBFF053D0F5F1FFFE083F + FF1B60FF5B8FFFF5DFF5F40F0828284D561F1C3D5C018A8B8C8D8E8F90919293 + 94915C690E580D1454580E171769A2A3A40B69A6A8A7AAA669A0A06DB0B16D17 + 6DA20BB7B8B9B75C0BBC696D0E65C2C3C20F65C60F0F1D7E5414147E65B6A2AF + C00E9FA7BAB8ABAAD2BC170F7ECE541D65AF659ACEE20D9EAEAFB4EFB3B3EDF3 + F4F5F6A1AED5C465C1FDFCFFFEFC9D63968E139566141E50F902C4431E871E3C + F07943514D08122FFF9A4C41B1A1239B8E1B3E821C49D26349922243824C79B2 + A5CA922C57BA9C39460C063C3D2AE9DCC9B367A505DFC25181768D15A951A992 + 6E63858F962C50B6B2E9E2650AD8B064C8921D7B80A5438385141A94E392886C + 2BABD6B0F5CAB674D5AD0B653685EDE0205E19AFCEBE385B57371FBCBFF2EE09 + 1EDC8A56B07D8813230607562F95065F29B429138E0FC4881EAEF06168518718 + 1F1C51820CED92F4CCD3A853AB563DA6909024897CCA9E4DFBD1250704FD786A + 63F428D2B6A872716B272FAAD4A9550F233BB6156B5782CFA2C50E60F617AC50 + BB8E034F43F69BDC06E4CCE14DF7981D71C0EF06ABB757D8F0E1610101CA1788 + 05FA5EDD1D3A04C0FF54F932C42B6F008144082188F1C246AB25E892050A36E8 + E048638C80010767D466E1853D91D506160691534B6FBE6DA7542AA3B8D28A71 + C7AD65CA05D614C31C56CE79D5805E0D38C0DD7464DDE2162F54B135622F707D + 47D72CC18CA7D733BBF9150F7AEB350955535611F3DE94F055590C337A7D511E + 3F0E50C72233963D8499666F7880840C055A81C6141B98F6A0836ECE14E79B34 + 15C2011118E6A96724693CB0C9630FD818A26F238AB84D2929E6429561CDC1C8 + 1557CF2104CD05BD94451D5998E6C8A3764A75E7E75E7439A58C5CEA98A7247A + 8139A95E61B0B428E57CB0D2671F92B32CA0082F0E7440051F793C2466667C00 + 01049A628C30069BFF1B30A86CB2CC2ECB6047CE829443B320456B2DB5D14E7B + EDB6D8763B2DB41D4538219E7B96BB671A7189132A88841AFA23896E254A9528 + 56399A0C168FE61759580FF0662B8ED45D8A4B8F522D05E4A7737DC22238721D + C957604B469C9EAA4DB2FA9E6218EFC3589680DAB8404E8A0085C5AEBC6216D1 + 665F7C71260956348142B4232D3BD3B3CCC65CF38227D13C73B725E95C6D4963 + BC6008B9E6165DDB02B91E345439A10C1A62A1501B9C6876405985EFBD8FE28B + 457DD0AD536BA50167AAE95A040B179C3708F365587DFB72A2F6791253AC6A7B + FABC1ADFDDFF0C849033BA7DB2400B442FD04607147C51B2C9115194870C24E8 + 318605DB428EADE4FF902B4B79B3975BCE6DE5C9663EB9E69F770BFAB353BC80 + C16BD3196D6EEA95701154336FB3EB74D4504F5DF02FC1640DE9D65BEBFB9D79 + 51917569A664ABE8E3C06D28B49727D68CDAF65049BA2371AA720B76E22B17E7 + AD3D95C2BCB771E1E55D43000C492C22B8575FF887D91B5F64B1720A2F24EB46 + E4A3636EADE7F487BEB9E8FCEF6F414D7810421A54A73AD64DE23678014F196A + C10DA795C25DC0B19D8A5A110CADED8E775BF343D776F3941B896D6C9B9297E0 + D0013D7E380F324A838CA9A4F797EA552C1FAEAA12DEF0A6B782F48D373CF840 + 06C817B22095C95726A3C81B9030A0158CA1739AAB9C129788C42572EE894E54 + 6213A328C5282271FF8A94732216FF27A1431890801642C54E7891BCAF40CF6F + 0E7C1A046B37357A39006B18C4E032BE42A340D5CD6FC313DBC02488B4917142 + 37C9F04A3394F698F0410C552E7C21A332C6C8AB60097C6A4B430A7298013070 + 873AE85A82E17E859989E8A5882F38E215A138BA2CD6AF94A81CA529F5673FFD + AD92731B00E021C088A1EE4CA62FD83920D20877100F35308DBFA15D042548C1 + 73C4B1035DE9CA1C25D52F6AF445781F04A1F114A5A3C1C10E3F82244F2155B8 + 40B8B53091848161F666182B61B0CD86BB59800444C0031E10A005B1B90465BE + D02BC449643340B008098C45C57EFAB38AFF0CA840FDB9452A22B126A7830D2D + 2D8409AEE5C71894FF3AE0E0D41128603A50986C4C142D2E984C6422538307D1 + 8B1F3CA6235B582A9A9B0AE1713231C86530A3318513C7633C348FB881D37A50 + 1AA795B6B7538635434B9194400A24E0051E70A005705804171C1086F4D93322 + 00E2431688A591825A919403CDAA56B1BA5525025008205BA84F1048AA3F8E45 + 124B25DC7D1678228B3E10A3C3D40E8B8CD9BB8E2A1332E9E8401B5277D2B045 + B378659B9735C302D28218D66D1DB0A33CA677D3703A2586DD2B270D9F43AA1B + 2E400412C86C0ABC30B4B22C200E61A000AFEAC9493EF06140696283050EB0DA + CAB11672AFB5400E2A375BD8BAF6B6B6CD6D6B751BDBDEE276B7B2FDAD6F797B + DB58DAE44E62E509FF1973D5B0980EC58EA7688429DEB80987ED461A6E95065C + 9362BB8529D3A3F909AF1F22A3A50E5C00127D45E91EA74295A4B9EDA732551A + 79C0638CBA2CA9B14EB25823F7EB5348B2230DEB14AA505340000EC00064AE23 + 83682302C4CC00284032609C158ED8D50A5BF8C215AE8921C29ADC49088E6187 + 55876ECA61AB5B4D46577BFB633365E7D6ED4A8D2D73056F78673C5E8474A20D + 96085B1E8997D2E24D575721868C06C7BBAF9962811FD7C1AF22DDB30F724E76 + 3C7C63873A334B65A17E20801552C405C8D08C1FDA937D4394F081663BDCE012 + 97CCAD65AD9A83CB5A34A31972B5056E9BE59C6636D7D9B66F6E6D9EDB1CB410 + CCB2C396E0421961FF9AA5983AC60F0FA014DAC26168F08DA31CBFCCAE8BDF65 + 36607065C6F9F1C332B2B997443322BD3A566F8F73D48ABBC0D76188BE57A444 + 8C682E5D877A4A36514E9BBC53EE69EF7B403D7228048CD9A18A60921F684158 + E1A2AB303DD503610E01FC1E87E128C6B9D9027D76856BCB06A109F08B1D2623 + 65521C62F2F4CD1AF5E1B6B72B9ADD764D3A5EC259188D37ADE9C29A7580B7D2 + 71BC4FFA571E11EF178C21CF5C906C8D0AD638859A0E947D637D0F56D54D86E5 + 8C6CBFF39D0E05D6A2CA1097400E390006720125B40D69304428B2328C4C61CD + 20AF73C8472EF29293FCE4264F39CA57BEDA298CC0CF1C06B489FD849042DBBC + D18F810C0A1B5DE8FF12CEA2DC4739F7BBDCF81C768761C835768C274A3CEF80 + 35BD2C7FDD05A94F4CAA83348028F3685E18766E90301C79E004AF476120BB5F + C4E4EE9187B62395310B71767E80004280436CD240861995C99EA66508129CE0 + 71E2FA9DCE7F2FF39C052FDCDBBA19F0881F6EE97440A1F2C99C8C34EFB6E427 + 7FD8C7689A1F4D03BA76D7F8E2AA0D84DD2ED5205ECD1AD1A7DBC6AFEA5D5191 + F675F5AD617E3814880234D866E3A124D6D5B056B2C1C94E4E85E72DDC05294F + A0221EF1491698870158C03C0F87993C0048EF1719010B6CCBF2EAABFCFAD6CF + 3EF6EB3CAD17E8000F5B707C725D778E7DDDFC483C4FFFF9E56B75296B3EE89C + E72E2B2AC86EA413FFF9A7E0F9443C43DD087AA79E16C75063A0C2257DD11E17 + E00466A0056F200CCB701022E67AB81476D7B348B5568191750C9A005396874C + 02A65954365499555405D6038EA77C7EC0109C743213212C6832026CB066D4B7 + 7D21475C2C1783DA378332785B07506DDF7706E2B75026E88092F71894D76D39 + D73688F673EFF756F157521BC535F6277A42D800FDD20B4AC57F9F867A1F5435 + 5CD136F97748B2D0064E00013F00005A90076F744E7B7175E400764DD2067C00 + 0566308773C8007ED00E74C37B920510CDA386F3355E7E407CC4970229F07680 + 13324C350325F32B62720559305521104AC9027239307295B85A977800997800 + 96A86699988969F6FF896AC68998E889A6B85AA4A889A7A88AA8688A1BE07D78 + D0023FA83AA65006A1A57E6EA31B5D617EB8D8739AC669541006DDB4849B3769 + 3AA26E80687FCF238C97046A96627AFE07146F1406A77675FC300DCE140B4E40 + 0710D08D00A004255043CE7575F5E586F75006500000DCD88DDD480766500278 + 883D65A7185C218085E636572788835888B148346DA060A3C54957E001595026 + C4620553908337A8900CB990D5C783E0876D7B0217B3725888665FC1305E4528 + 0E23D68583D409DDC46216257425050CCF118502B83CBCC17FA0068D7E856F28 + E66D98072561D8065140070010034FF003104007E00862F3B50E02976406E80A + 6F60063C89936600FF00EA98945AF073F87070BED77BBB5856DAA442FA28886E + 9701B21832654001FE515A13B132D2B7019C388A68D98A95988A6779966B9996 + 6E7996AD38977259979CF8966FD9967479976D19979C089187488BE9828BFC12 + 51DDC15C79818BE1D322E84023BA9679EF4792D2588FC93864CF335217B07FCE + C892A8C78540566854A830F050936D50024C09031950074AA0023D69064E307A + 9C1016E0716448660F7E0000DD98800CB09B50A00566C09A3F8000D7208FD973 + 813C750E9C7673B2995859A98F1327405EB910C686387CC009C342021EE7900D + B99DDAE990B1F47D5D59342CA2564698844CE7256FB44C95D77AD6100BE0305F + 49B284247909C818FF85B0B934BCB1999BE908B7606950E636A6429AB290074C + B94330000375B00274F003EEF89A3A37486C882FED992A1D809B74A0051E9032 + BC52024EC000BE498608F0242CA25354C969EB091EE400711540652B9A592D5A + 65C6179848B3090399829D742617F1022FD8973C6A973DFAA33CDA8A403AA444 + 5AA441DA966CA00332D00299692EC0777E7C03697C459FE046103DE775046815 + 8FE436C6A084C4184C22D29F778192A3A7741EC399FAD97F82A33735171647F6 + 6A4E21A06A00002A900176BA4319C00708009C00C000E0516490814C48561C5A + D08D0AA88B60A2061DAA0516EA01FA358F189892F7B886C8940CCD9995C66760 + B7920684B349F5D4FF4952652621A003C642666C09976976AA7B89AA23A7AA3E + BAAAB05A979B4872DE8701E1B927E26658D0D08CF2B6A9C9934D333594F63519 + E8306E82F2A54C3874BF7A75A2777FE44117BC9AA6FA2938B9F25206B1254A22 + A0B040A0005007A869A7078AA031809B10600650101629667B837A015FC08D4A + F00558500B96768279D0A108809B4A100DA0A08753694E296958560748DD73A9 + 985A88E3432E17B0061DF00557F0A9A0FA06A715021360206669A4167BB1189B + B11A6B016C6005212004E7B527507A6824D67F8E700956916989D59E758191C5 + 6A5DC389AC605A2870010E96694689F9688689A69CA954620A659637628B15A7 + DAFA05BFF905779AFFB4DFCAA8DE08051EA081AD27700C00012AE0044B971CBA + E20125C00072C8A07C409C89C13DBB48687FE87A5C42B0CD69B02D000365F18F + 14502696613257700529E30168B202233089AEBAB770998AA9DAB7801BAB7C2B + 72836B971D7B3A6720913E31799362853D2B30C9D10FFD060CB190096DE3A6D7 + 5022323B74BF3010A2C775EA22A5D28A850183B5552794DD1331DA1A0B7EB094 + DE9AB4778A9AA839AEDC68866A107C6C980C48690679E0071F823BC5C6A15080 + 007440074E3076242A1FC6A491956779F8720C7501602B3ABD1240BDD4EBA2D5 + 9BBD2BEA7614722BA055380C26B72B88A36230061A7BBEE89BBE199B031DCB78 + 598621505A98A3CBFF3ADEF058D5D0B299C06859927FF8808D5F1A35B85395A0 + 1BBA3B3BBFA146A5945156EBB04003170FAB1B0B546006745007765A07311003 + B09BB4316006ED88002510536ED354F89A0762E10AD4450179B0B5C38B9B5020 + 8F8D742FD934A9CE1B285C720AD81B712F9AC32C5A659C95013E980817100733 + 726CF7A4324E60202C50B1EABBC44CBCC439E0B1DD8B2121F65C2BE9927DF569 + DAF058ED298EE2F05F9ADBBFC43822B0A00C356695E1130A078C293C7B2BF439 + 10A7FBA62CF4C0B2D000AEFBAD767AC1141CBB785A074849B5E0A84D1EB0A008 + 900709D1B2A69605F5EA04BD09003FA005C84B6BCA8181BE1364023B70366CBD + DA9BC9988CC94465FF08609508333A03BDA27112C1827C2706D3D7C4AABCCA18 + DBBE14A2B83A717E5E73493CEB8CF7661DF8FBB2CB13B3FD0B99F2B90A00E853 + 6DCAA51E034D2855CB285B7E7BC34D11E8C0720C0B743CC1195C07169CC77A9C + 9A4A90944AC000E29007ACA9044EC0076211800D5026C2BBC210A0052EBC535B + 812F99F652F7287CA92B0D3A7CC3D96BCFF51C82EE64606D7B820CF62B032911 + 6F6B11E5BBA3AC7CD008AD97AEFCBEB411640B2475D054CBBD5A1DEE60B929C6 + 175F7C3DFF3B1C234A7B7FE821560875D154CB9E09A8B79764A3F9CCB0D0BA2A + F0BAD40CAE151C03792CBB788A04ABD99A4E205AB8E99A6AF00657F7531EA006 + 2AAC05C4FB030CF0FFC8AFD2CEBC9369664C5F936B1C9A1CD59B2CD5D50B6CB1 + F82F6DD0540E918279B01954F006FA642C9C88030740D6643DD6659DD666ADD6 + 67B9D667CDD66F1DD76D3DD768BDD6685DD770CDD6786DD72F40024705CB9320 + CBFFB50B12AD9FF342419A708F91D4148CDD562DB614FB7A76A7DB861FA28523 + 7DC5D4E17978E1180AB44060A8D2B110CDD65C075AF0D2775ACDD61CBB7540BC + B9C90008A0002A00054ED0D314E1102530D4BE59BC5F4B811A73411F05CFCE55 + C90C940B537DBD545DDC84F87607D61DFE7C6C01DD10C4320695F8D66D29D777 + DD97D4BDCAD9CDA3D69DD6DCDDA34FECBE801D0941E6213F2775858DA6543119 + B382D1D3A0D160ACFF794C31A28C2917677C0A2875D92C39999CD67A33990FA0 + DD0692010B11AC02189CB4167CE0A77DC14A8BA71970AF64C88EDBEC0425A006 + 161E051DEAA15AA004F8DA1464A7D4C8D43B32127C238664D8A01615B0C9297E + DC2CBEA285680859B6006B4005FF6CA36F9005765B203A9A036E9DD73DFEE36C + 4D033E3EE4405EE4447EE4424ED6429E03DEC7015B401BB2DC86B8143C06EC8C + 984073FB1B2AF0BDE59AE74C928B98515AC0F92D36FB6D92C0FD5CD650530FFC + 057238E000E09AB040BC329DC11980C7B06BE77A4C00ACCD8E748000B2ED0480 + AEC8BD49D41C5CAE58402FB7E422AA16E290D280603153F3AC16D850DC2D5EE9 + 12A7433E481D6D00FF069E8A386412206A20618F53DDE7BBDDDE7D0042CE89A9 + 9ED0AA4ED7409A034DA00348004FB251DEB89764E85DE57E551508C3099E90D1 + BDECD86EE5E50468D17FA47F639EDF07CC22C0C791D193D2A4890525C0E13DF9 + 06B0C08D3EE904AB79E0041003488BE0738EE07A1C03EBD8934FC09A7D0E05BB + C9B5838E0048C99365E8A78B04237194356A68795D3ADCD950BD2B9EE2D3DBEF + 00FFEF02CFEFFFAE0799CAB6FBC16577074462122C614602A85CB1463EF1474E + F1165FF1180FE407F00262800743308B9510E5C53EB9D851296AEC7FC70C751B + E2808BDD1E2E6F22C044EC52026E91F168CD98EC63FE16969BB33794ADA4F900 + 4E809B0C5ABC5F70FFED2AB08E0BAAE0099EDAA9C9E0D34CAE7E4C00A9D98E66 + E0E75A40D4EE4EAE3FC093DE88007C70155A83418E82055B6775B75714C741E9 + 6A5FE92B6A05C98D5C0100175F1DBE63724F61360118B1013D9EE418BFD7A88E + E479CDF768CDF76BCDF7849FF17FCFE41DDF028B7B580AC4B22C0B0B549EC663 + 1E3648032976148F5BEECBBEE1E5BCD72291777536B26338BFEB016C1FECF9D9 + 35E9005120F4E66A9A749005B0F0E679908EEDF804A38DDA49EB01329DDA7580 + ED5E0F0777BA025CCF9474A88EDDA80276E00306C0F53DA9046A700E1CF528C8 + C035CCAA5828A20B01EFEFDCDFFD044FF0DD1FFE2B6E8855C00549305199C1F0 + 502511388A113B7AFFF1F08FF8F13FFF184F035F05F29220F293BBFFB2000869 + 0B5C5C01858488898A890B0B178F176D9090691795979699699B9C9C6D6D650E + 0F65A3A365A70EA9587E5414541D65698BB38B865C0B69A01D7E14145FAE1D0F + 0E928F929FC79F0E516610744A4E0CD166745F9F74667E69D1003F103F003175 + 19E331E51904E31975E6E3752A100017B730E31F7AEF10F9FA10472E41412282 + D87181AF991935581E245CF8A094C25D7E3A6029236953A38B18175490B0B123 + C78F1E43821C29D2638A0F1F849C09106041075F7CF27898E9E14A4D3E319184 + 2031E2458E0338800A0D4A74A8D1A2488F2A0D4A63A9D3A4509F1A3DF0620406 + 2149586ADDCA3540FFAFAFBD1AC04AD56698D9B264DB6CBA45AB2D2243706F6D + D2441793DD4E73CB92C292B0A129B2A258B9F2E34096DB59B62A3928E3A7C157 + 2A6285118B840C190525747E9861E0044A342700E8BCF904000083694A2894C0 + DC0D000274EDC2894B473BC33B0019E020A2B7C38B0F032A54FC08EEC34EC07F + FF4EEC79223C1F02857EFD9EDA2B7122C50B19B337AAC0BDBBF7EFE0C38BF72E + 41C2490E2DB2A629B3E48B0799F0697A78E37EA798172E80E2D84F743F0DFEFA + E1F0DF7E011608A080FD11F55F800326682081074228A18300D290C30B5715D2 + D586BF74E88B58A1A422E288227EF2884587D87218215A1D820B2E954C722225 + 27E25549590DF1D5FFD774213AB04A2B54F8110B2183ACE86225A434D6CB2F54 + 84211924C654D6461EDC00E004057920A085675084568D0374D0E14D664A8411 + 06135A0090CF0F4AC490CE3AB2D5E60E042AECB10301BA7101070C3BF0208204 + 76048ADC3F52FC23820827246A80737D45C7A3427C9D529120DA35724B781C71 + 9769479A76B7E9A79876C7C3070408D1C3200EF811937CF2BDD18B0725384182 + 186C18285554B8DEAA6BAEBCDE6A81551C64B52157607D05226065257BD6596A + 0962A49183E042A35D757512C9623936440A2A663D205890853DAB482E6560D1 + 8063BD4016CC3091B42B651B0DA840070241FA9187165B7A165A167E20D01A03 + 5F7053661843CCB0FF8C983F1810CE38049433DB383B88A942A227EC90010C88 + 407C82085E1C2AC21E1C234A71A27A38A76D293C92A2502893BEA81D5BE3C52C + F3CC155891020F7870704612EB5181930740B0CA6A1E32CCCA460EFC2D886083 + 4C27EDF48406FED7B47F4F2348B5D254676DF5D6521375E155C20ECB92871D1E + 0BD8D9668D6822A56C89DBD65C9CD4556D5EA240BAE374227A0BA49086157958 + 23E49A4B8587413E590C65529AF10302E7FA61AF96F9AAA9C4BF11A9CA8D164B + 643EC412512020263C4FD4814E1DA4ABA3CE3B759EE045A277E6C9056F23C74E + 71403E74F3DCB6294F678A249562C496467AC81C3C77C37F573CCD9ADE4C0007 + 30A8F780CFF1B18AFFD31748147D1F1B07EEAA7DAF5029BDFDF738FC8A87101A + 8A5D6C58632DABACB2C8AECDF6216E2312ED8B73CD486DDC7AE97832B7382A19 + 6419F230922170010AC1152B22EC3ADCBBDAF0063A00800FE76A801FD48000C8 + 75291F008002053AB00BC794204C6A58021534370334A9C91B4F70136D085007 + 89C9AE6217DB4D0676B083179E003976704EEE74A72D7659A477BFD34804BA33 + 44EE14B102474C2211C3630724C6CC3C1FC0430B88D0120734E00D79C8A2D070 + F20620A861272FD84083F843C6329AF18C684CA31AD7C84636B2E10521E0802C + C446B60FA58F4478CC23591E61A9F8CD225A989891202DA198BAE9CF14DC0ACC + DE00182DF9FDD111FFBA68C0E07C81BE50B86B8165D10204A00019C834400D4A + A820BE4E680688B4E20B6FF08026CD308325F46206B05C02134EF339703C2C06 + 12DB83EA36363B1AC2A0487CAA21C54026856206C107F9D0C20E55360A1F02AE + 52B7B8C8059047CD6A22D13CA3CAC019B840843684810257E0C34C6442139C50 + 200BD5E3C9180214210A41AD9D0F4A1019D9D9CE79D6139EF8DC0F1B80B5CD61 + 9D8F02665B9FFA060A981AF5D18F8A005CDCEE47B7BDECE82F66618C63FE270F + BFF98D11B9F05107A8D08A7449100BA98012E2A48485D0E481A392FCA4124239 + CA7C286117BD788338F35002663020731C9DC1176009CBCE7D4E054A20C00E5A + 48271B52CC6230B0FF05EC0E55A84209C4398B41C52950C6AEDE5DE477B968C3 + 1287C8552776F5AB4E34E256C34A56B062536749E0C205BEF91E72B2EA0DA9AC + 5E08C4C08236DAF5AE78CD2B5EF789812CA4615875FC82D9D24658B414B644C3 + 20C641111A44854E8B90D772E8DD1693B70E4812A00FC04EDBDAA6A20594E547 + 94FC02642692C04B2E900A0E74154AA900CA95569094309D891AD450821230E0 + 1B8275E5126079059E96304DF9A0433950A7CBD519D59744CA400A8250CCA61E + B31BCA8CEA547BC83B4A4113907AB1A676AB79330E302F0D4948D517C4F91EA1 + 010D9D4EB8CF4FCA38C633C6736A5B43637BD5085F32C277BE38D8671CA9D895 + 7F0674A0020D30B3FF4ED448C612299A70D3444321B5BF10E9C5B2287D401B0E + 7AD1689605C26091A0306A14A328BD8B0210484DBA204341D70237C41CF48307 + 665B5B2738611A08F0004E774B01583281A74CB82002883A31A3C60EA95CE081 + 319DFB54082080B2D36D261FAD7AD54DE8E5015E8D3258A7ECC426527988562E + 6B942B908293E06167017000196670852CBA95264048B30CE64A57A49DB100FC + 81B35ED128E734D679CE7626E31B758004FE6E25B083D5A3A0054D0C41BCEF6F + 8B8DA642EB07D9271F9247222A03861B20E1465AF416919034BA9814910D1B3A + 460A1CE927BE00013350325DAD5DA912601B912FC42A56D0D02438C2E18A1A93 + B9844CB8F10CA000FF8172480C51AB33AE8F692802E73A17991050260F9BC93B + 262B3AA37B018F12A52DB32356B388E521550B321187067C217AAD92693A57F0 + 02ECE1F9DCE84EF77E2EC4E77E6AC5BFE913B0BC019C581311B22D96FE9DBE2D + 0D23BAA085C18874F062200C994A5F9A109B48C52E3AAA2E0957847EA07697A8 + 41AC845F3C6635AEF50C669410915DA8210A2E8E4697E8A08637ACA30E6FA082 + 6F739D6BCF85C3853EB6E1A008F58F1C1A39AA7E092976ACFB32EC622B21520E + FA95854EF4A19B75541C00832CE0E59EF2BE953E40D0094F58805F755BFDEA66 + 3C000BAC2083956805D07734ACD8118BB6B1ABAD59962AF0BED7AE76C72E5847 + B8A3EC3034DD0A4AFF4F78B38350CC032CBBA4D10290E73062B4C491416A337C + C143AA716D34A250828F3B8E83148886C8A1A0382DCCE1254E880103F2C05B5C + 33410910D8430C88BBCB9853CC0BCC4DFDB16D97644B02BEE75C70F2CF15A244 + 2A8BF5F6451F2B58716FED1460003DB1B72238CD4B932B443D042118C118D68B + F5E63B9F4039E0730FDE7DBEFFCEFBFACB6A9F412B9CEFEE3BF2996FBF1BFF06 + 2EC9824FD8A2D20ACC655DD100905A427E104FB0488F815A33F0E1F05FA160BE + 38D3F82F38AE7251C0255000059E63060DD101614005255007BB856333A0382F + 575431274C15932833977A4566647CD0103AC76496066D7603655C1501243882 + 2468072578652488FF442588822988652D287429E87BA5727E65400536016E33 + 71055DA41331701F4001674680037076676F1667449884FB51674C8884459884 + 4DB88450E8844A58854628856CA00321E07560D72383F6855F982C0F877EF353 + 868A76861871233FC717DA8237A9407798A5597EA3778241495430119A7560E0 + 17373212251D605287970587E76A50902F2E56027CD0188E13066A508885A805 + 9EF3030C500773E0380D40633656428AB30EBF767AA6A71CAA178AC8165C5060 + 49D8E16C1701820C810546977BADF88AB9C76538C33C49B000EC814AAC621357 + C083E1B466E47600F4F47CC2786E16C2753D4004F02670D8B78C04955896E03B + DE178DFB262D7AC1FF4C9016510B677E14462E7CF7187E506971A168F4D36F11 + 670C0E300D51F00682483679000D0CC078572041FFD70003882FF81226A41303 + 2540016180532AB7533300002A50077B00739F383217E85436B70F005002AF97 + 1D08762DD9C2102B58822C688217999116B99115D9912F78912FF8825044002D + 7006555006644005A9E474AD7278BE380248F38452389353D8844F2893359993 + 3749853B49933B89934C588CE30304A165473D6276875576649794CE8876DCC7 + 7650E9584FB632A1E060E57259EDA7167D44407B774AE8E30001640B65388EF2 + A740BCA6057C005783687114C0076AE0042590078D238F0C802F1584006AA206 + 5D00069947018DB1FF5B2A074B743090A34727C57590A0686CA9573BF0B00FF0 + A0065615916F081D8DC28AAE7899B098995B064552B4059E150714407CBB0857 + 5EB46662E066C3989AE7A6753A800148C09695842CF4C68CB4A95897268DB899 + 7E2AE38568015AED571816950B7A632CDF0896D198119F267892D0000EE40169 + 491FB0F915CE1941FFE704908800A1C40D25000755500573D00508E88FAD3498 + 04699088794333A7902E4500A0E70D18D400B0A7182AB38AD01192F6799FF899 + 9FFAB99F56807460A016C2D7564303347C804E3C91036EF6933AB9A00ADAA00C + FAA00E1AA14448032C2006242003AE52367704861CDAA1224209D09876226A86 + 57053817F0869116FF69C3F90AC0592490349CBF702C4E39A2E2989C837401A1 + C1005C441FEB08161C855211540215B45266A026E1D0055DE09D73602697D84A + 0D349066803A22537A31877A8A5928C836000440001FC00CFBA004192199F309 + 1D13B99FFA0992661A92689A9F56804DA5D203DC840558A245D273055F000432 + C00053E7930B2A8540C99348E8A75618A865D49383CAA7FC9103FB4402AF692C + F1369B904A9BEA730C04867751C976FD461928BA18A07587C0293FE452870035 + 16F6B616DD978A30E29099F0084E1062CE9996EB887F8FE1498D53624A600698 + 215C7560795BE09D7BD78F99C304A596AB02799E14939035B79EE8C04206D00D + 6B02050755481349FF99F599A6D67AADD8BA82E6913367400417F03C027A66A3 + 797C2130002C1084109AAE12BAAEEADAAE3769212370A144295861B7944879AF + F69AAFC8F28C6977A9B9D908D7A2A2FED3015AE9A2C2B951BE305A10352998FA + 4C9A1462ABFA06DEC000F3311FD0897F16F7A39E9407446A06D30001600007DC + 79924ADA41615002DFE0AC74B202C61A108AF90F3EF00E5ABAA5343B0105E10D + 90197B273AA6F4B910F8B9A61FC99141EB91409BAD50C4015D200F6DE0073968 + 5E57D00B59F0456230024723A87CFAA7826AA85178A85C6B935D3B854B08AF24 + 800744697D917AB6929A162DC336B8E9AF37920CE5C20BC05018CE2217A0A024 + 83010B6EF87051B9FF0093A30F740005DAE0AC00F0AACF89B13E4AAB1CEBB11E + FB0D22FBB823DB0592C64151A00F23E0B1A063AC178843DDA004E7C001CB7A0E + 2BE0ACDDA09BD3DAB30F100177A0BAAC1B92ABFBBA2FB8BA2408BBB3DBBAB65B + BBB04BBBB69BBBACDB9F52841D373853C417342B5634547B000590BC44A8BC0D + CABC50C8BCD01BA1CECBAEC95B84D3BBBC0A4A032F20AF81E6A1DEEBBDA5CA73 + 6848A3258A9C37729509DB01C669B0172069A7D470295355E53B3F5EEA982A4B + 275A30133BFA053D0A9B1C555345FAB14AC09D905B05493A07959807CCA00223 + 800778800123405CBA647A7B108A4E250276D00D063001344BB3E74000270401 + F279BAD4EAB3B16BFF9FABEB82FA29BBF6A9C2B5FBC227ECBA1180821280121C + B0053CF33C5844A7F28113E8643D2C9003D4EBAE443CC4463C8517220632B041 + CA88B64E9CB6CCF243FDDAB6C719095D395A74EBA28EE000DD0850DF18707B64 + 116CCB05DCA00F21ACB20610263A1A4E870B9D894B052F0600459A196A500504 + 0CB93050057EC000B7F1C01880010E1C028A9330131C739B1B108B321C1BBCA5 + E790011C300E2BA00F3B4BC2A83BC3AC0BBB28C8BB98CCBA997CC996CCBB9DAC + C99FECC99D1CCA35D35D2D9051EDD1B4B908577245023E91B5D85B93D75BBD0C + 5ACBCFFB93B8ACCB124AA14A9C055DA0AF4C89AF4A59CC847576DBD7B0E2188D + E7BB0AC1D06C4482FF24082B5AAF301128E36093718A5CF039DE200344E004DC + 0C0106600303000F4EA0BFCF79B1A7D60B6952A4EFA00473D09D772CB255D000 + 0C202674F0C7FAACCF78F0B72AF004856C43C536737650102A30B38C8C0E1C30 + 018B920FD852C2106DC230CCC2148DC22558D1136DA6BACBC22948D1BEE75D60 + 40110FD0007C60135B449A5237027555C42C7DC42EFDA0BE8C0759C0324F5CD3 + 92BA3E943AC663E98169B8B32CB31644B2C55DAC6188045169C14799B1264040 + 0470C0D40CA02666300152FD0E0781135C747F75E40B1E5B1AF0C0077260C776 + 0CB973E03999B1CF660DC8355003B9E4633387C1EFF0033F500403B002A19B0E + 133000E5DC0D3C1BFFD1D4EAC977F0D77E0DD8A29CBB822DD87EADBA86FDBA89 + 1DD8841D013713454AC7050F004EC41B3D7C0004970D046094A0D5DBD99EFDD9 + A01DDAA23DDAA45DDAA18D032C60150DF0BDACDDDAC84C4821CAD3D09855B629 + 3F278A055E1924D6C143F1CB2EFAF0031E708C3DB0273D00037520D553DD0C25 + 504E6979B883480194172674A206A9D09DF26CC71E8000DE5003AD79D618D09A + 3AF0C024D00D09F30402ED544120002EB026074DD7092DBA78DDD01080BAF44D + 7BBBEBC9198DBB87BDD1F87DDFFACDBBFFADBA34EC65DB76B75F506648706633 + 91A12510033D91033460CB2F2DE1BB8CBD15CECBEA1ABD056004153A3E376DD3 + 208ED38536C5CB1CFF998004A28E940BE6429C6D8873DBB2B0FA1002C33DE37B + B2273080041F60B3F0B0DCCEF9AA32A596BF004A496D6A8071DD555053745203 + 7EECDD671D0265FCCF2F34280270032ED00D076D03A1FBC81CB002788DD7FAC0 + D7F56D07AF2BE688ADC9644ED88A9DE602AEE67770E66EAEC9827DE6852DBB1B + 312A4290CA174006EEA1060A1E4EE385044E30573069E1A65DE8867EE888EED9 + 34300662E0E1C24CCCC3FCE8927ED4A728DB4CC60914B600A2E0189C661DD2C5 + 4CD2B118FA30002951DCA60E03A80E032D4000EF400771D9C3CDAD968DA8053F + 400751B0047110072362DDA701012E30B64CBECFDDFDC73AA00327F4CF013DD0 + 37D007549E0FE3BCFF3CA14B005CDEE5F25DDFF43DD8FB9DEDD8BEEDDADEED83 + DDA6D9D4023DE00073400158C49235114EF4E101C6EB02421CBDB34CE1D6EBD9 + F10EEFF25EEFF38EEFF8DED9D84B03DADBE87FB0054E2C9B1FFEE1942EC6961E + A6CF54BEB78D2E83911052F5E28E320AFAB00252FD011753DCA99EEA1CF00D3C + AEBF3EBE620CE0880E84EBBA5E2272F000A0010F21B0E4C1EEDD7850ECDC40C8 + B323050270F352D0ACCFDEC80C33EDD4FEE5D60ED17F3DF4445FF4465FE6469F + F44ABFF44CDFF4442F8BE37306ED4BD27C0E6E79A05AE94402419CE85CDFF55E + FFD9319D051EDAC4AECDDA62B87D09DF3B79E1BE76E807BBCDDBD2E117A38EDC + 1380F1A97E312D40FF0F30900566066E7CC000A1840003282F4B3004B91E0721 + 420550F00E06D0F24C3EEC90AFCFDD8D07A141272AE003017103382F05BFC1C1 + EF2DED5DFEF3F910F43D3BF4655EE6623EE7A83FF4A99FE66F6EF4AD8FF4AC3F + FB73DEFAB11F0112C003357892A1497CF29107800ECB3129DAFA2EEFFC7EEFC8 + 6FEFCA3FEFC70FEFDA3BB67FC08C7257F0213EA92D93F6DA513F9C5A870ABB4C + BAA332154FF7525D0779AFEAE69FF72DD00296ED9C50C0525A70CF003003871F + 075B009A98516A8EFFF2FABFCF2100082C3F103F3E025252411512031304198F + 19902B0395960306109A0F589C9E9DA09F9E77A4A5A6A7A8A9AAABACADAEA612 + 291F045D170B650DFF5779BB791EBE79577C7C6F482124232C3405CBCCCDCECF + D00509D1D4D5D6D7CC342F62485D6D0EE0DFE10EE2650F0F6565E3DFE2E4E0EE + E3F1F0F3EDEDEFE46D171769690BFEFF00030AF4C74F1FB8077E2850F8D2A0C3 + 3907E9224A34674E1384463626649CC051460B1819607CCCD0A224855D1E7A79 + 80A2048116285000D09931E4C190380F3C28A1030100093C18820A1D1A548750 + A3458F0AC5536350A14441820C98C5E1D1A30F942E59CAA4299457515E4F4528 + 359654D9556755A57DC56A6DAB085624F0C0D3629F033F6F52FAF275C583B037 + 403CC8303682068E02879F25460C6D71B3C59099455E36993165C998ABE1D046 + 0289902DEED8E1FBFF56068BE987A3DB885E1DBA35EBD7AE53E7E337B0B6C07E + B8D3E87BD04021950E58D2419C28119DC5151B392A9F30ABA4C8E71F5B64E8D5 + 8BA54B280C00006032E4E603260006D5900194A8F9F3E883720891A99088208C + EA58959401ABD64B5C2180DDFFB5958053FFB1A54A80000A68CA7F0422586005 + 3C7CC081105D3880C50C7CFCB2974A6F0026830C35BC908332CC4C538D88CE90 + 88CD89282E43A289056823860C54DC730F699CF8110670E8A823E38E3CF6E8E3 + 8FAAD1869B6D44FEC3C5026D744005157E74922371C4598491465426E70807D2 + 6549124904A4C4404B2F6547077743CC905D4F4E70C0011EE50D8514066FC6A9 + D45278A450C40F85FF443515017C4252DF7D5AE5F7D5A06019C8168103A682A8 + 808BA255410A3AE02104175C944141857AEDC5C7156F0823D8316CE490E2A8A4 + 966ACD66DB2001C66BAA99D341077EBC7ADA0310AD131B6CB8DE4A0F3EFA0859 + 64915C5C20E143E9A0F32494651CC75172562A4740495A6AC90103085C979D0A + 6446C1930A329CD1829A6C62D0667AE48A8B81151F1EF1830152C9E7A7241F00 + 1AA845FCD5DB49290AE67B87BE09E2EBAF82A4E81BF0BE040F6C70C104039C30 + C2F94690021E1C9C014E427D51B79707C150F0A9182CB0E198A920877C220E2C + 8821693DF070F26AACAFE228DCAEF2A01CF33B32EFCACE6C450E39A440FAE443 + A3B1C8A623659544FF2FBBDC23DF66C9017D75586BC60F512C3104143C0D80C7 + 10420801EEB849750DE79C41E1A1C31846D050840A10F830009F55F96983BCF3 + 76652F7FFD1E2C30C3FEDA9D37DE07F25DA0C2752F7C470AB23CABCF1A4B58B8 + 575FC3BC91C760C7B080C3C78A6566D9E5D754168DE69657866A6743ACA69A03 + 0FAC0CAB1FA837199C8EB9B6AEABEBE1E4B3CFCE01E9BC80ED0B1C79641AA4BD + 532C94C731AB5CB3CAD581E5965A6650157666D01145770CD0A1C2083A7C9081 + 102D68CD66B8E59A87070156B051360D39A8A0C2DAF349624356705792DFDC84 + EE2B00BF043731FFC2F3D38FE0FDFA27CC3FFFF80BE0FEF8F53F04C1E5037800 + 03391E4085BC58ECFF626FF802108A11B92224661A180C913436A8A20DAE4883 + 190C21073D48C20F76B083193CE10639E399191D040B1D0843AC6CC4321CE5C8 + 563FCAA10E65A41AD5F4AA1F00B19D10FD71A4DBF1AE87103987122532B48C38 + 91684F5C4E08D4A4BC2A2E4D4D75300304A23684E8FD60042310C3141F94B570 + 95C728724A0A523E200651D1E08D343000FADAF688B7B50F3F1621941E3901B8 + 7F09106FFDBB5BFF0616C8BD05727E0EC3800CB0D4065C38F06229E1C3172890 + 05C184400C23C801E544C6C94E2E838542B859234B07AB52CEB094C0595DEC5C + C7CAD7DD4A76B421C8ED6639C45AEAA691143956B234B102A3F9924ACB09E62C + AC484C0EC4A00471FF1882B6BE280631E88004E2CA9AD6D60414AE1125526C7A + 011CE1C802F4BD2B03ECBBA3FBE8B54742019080F94BE71FF375CE75B67380F2 + D3DF39DF994EB81885917FA040A72009492038EE922F2802084B48D00F8AD084 + 051D21420DAA501276B00823E8CCAA520643539A1275B03A8D3A5847B38ECEEC + A3309BC73D7EE82B59D6929601B940398693A32642F1A5C4630E151FB1349A72 + 406A6A000004C2884930EA608A43F81635DDA4146CEA409BE3334C37FB445370 + 8A336E102827DDD6E9BF42A293AAF0646756055840770AC00A8FC20096B6D086 + 2D34800FBCE0E71B16A20619800A449E54615C47788D04908F7A1C180DE94C77 + CABEB62C952FEBE1FFE85A49D857FA7076B543E94909A21B958E6E89C11B1E47 + 9023D9605A9600572C660690909D1F984107CD6C661875A0A6AC51937B6E6293 + 0E3EB44D1A0C60056D5B9A245610CEA7BE4FAA5F49A7000CA1DBDEE68FB7BE0D + AE70874BDCE21AF70E119040A438D0852D38F2811004021F9020831888C10520 + 3A6842B5CBDDED7AB7BBE09586117240BD2CFCE11D2A9321ACD44BC3F59ED249 + 3B8CAF7C77349B93DA57B1B71396398CA389293DD100728429308559153AD291 + 0010285968C3C8D3E56ECD5C5F438A9D9401C702B060056CB30A019E0A2841C1 + 0F2CF98BA73A434CE2AE9678802336716FE3C9E2138BF8C4294690156421A932 + 6C414979519C2F84FF41C962708C0D3430423416AAC167107944283AB2347040 + 5E1D202174AEB2A85F67983A967522B08375656159094B7EDC77884154E97094 + 35E0B701D800BD2CB3658FD6D4F93C4206A18D3318A9B7DC69A2964D5668ED1B + 7DB0023F4562C31CBECF6D3F1C0AE31ABAB83738B4A2839BE84557E0517421C2 + 05CA4005E82E4E92405003615820E4F07AFABBA0FEB4A7C71B51E692AEA25396 + B24553890E1C86B466B0F6A8CD7AB80FFC7E99965EFEC6035CFADF33CBB1974F + 8CE9721C649502F389007860302617DC4C36D9797B18E0410E8A90546D60783E + 55097487F348E84F2CFADBE00EB7B8757B87B908010CCE4D08A654B2B84E0161 + 3035C8245C1BAA42FF25DBBBC8F4CEB7BD994C3D214439D5003F1DCB5063AB2D + 6B59CB5DB6B5C271C73B0744D69798F0B51C6D20EC353BC2CD07AE439C996D32 + 2C4D53087840979E0740023FC976C3B5D5F6A071EB090124DA7E7D1080FD5EEE + 7299D73CD134A779CCE767BF99DFDCE631C739D06DDEE89AFBFCE8461740CC61 + FE73A4EB5CE6C8859467F6518619E8022517130610F2E08410C41BBBA20EB5D8 + C34E761C4034044248EF0CD9CBF6B553D9CAAB0BAC48E74BF7D891F4D6B8CB6F + 1B784D250003E0CC7FFFB5802D3E8B631B1ED9CBE6694F9D89F62D70E0A84610 + 321C8BF0041BD0517975D0B6BCF2C3803CB01C14E30EBDE847EF5B52C845525B + E8028E75EC170FB8FF7B4324E098A8F02D42147AB7DE634FA8ED6BBF8CF18A51 + 08370AB8F05129AB568BF2E0066F5DC2F1AED8349099591197F89907B0918A07 + F3F0D8DF78E2C5C801316C40CFAEB581C9259179CD6F5B13D5D242E7FDF0E1FC + 093DE7EE8FBFD37F2EF4F9C1BFFEF4277AFCF15FF4F7373DE9F7477F8F824010 + 820B1450316AF505C4C059B2D769B947760F188118446A21F01BAA5643C3973A + C5271C1C0552B1E681B2763377B7700BC77719217D28487D2FB51C4E44711F50 + 78D88778CAC65323805D65B3196F54048DE067CA132FE6777E10502D2EF1124E + 90070D602F8C7668FD177FC35574E9E484A1B784F6E75B52383F566005E2D202 + 5DC01BFAC44F5947FF0CC6F002E2437B0E4550BB37500C456429D4506BB8229B + F1227F906AC0C157172870B2E22458967CC8E71AB4B67C24683B84000169164C + D1B715D2570914575983178386B771B1E731233701C4940113F05A3F28681621 + 845A10260CE00425C007EC975B41A774F9378AFE778AF9878AAA588AACB88AAE + 988AF4770756D0200F02111DF00579C00499A22912A4060C002A28940018248C + D2408CC2388CC8588CC9788CCAD88CCCF88CC6188DCB688C05E0022410020DE0 + 7677886AEED58DEDD55EB2227775378E3CE4877837342C38017E274786187806 + 1078354002304571F4488F2FC88804C04671F6212D92833B886D76748998887E + E9F712D8D18925A0FF067CD0109FF08A5338853E3785A8F890B0E87F12597317 + 097F19599118599160651404F0190E708B39A6297E310CD3351835681910D892 + 12387638608D321087A6741AA6318775D85755E6322EA4873E496B88756B6446 + 88D3276887580392156C2F05838C185AC90047393015E3478902B97999288430 + C1009DE88979B05638D2091CF98A6219966439966659963F37387391055DD005 + F9E43858C78B11A4922C500434005ED25842D4B88C1E949721B497CEE8971E64 + 042CD0194C824A36691A154587538651567643AD018292F96A1D7558BE625FE8 + 184CBEB6792888662D588FA0598F4C997D620064FE683D6D967255394E043984 + 59C90051500279C0FF07BFD19068799616C9911B7996BB799B1C298B0F13315B + 00065FA00BFC140CC3F06E4E700C9A74862EF99C2F1942E415024850934EF209 + 8B999317A85105B7873E191A3E74990A178883B81C85D83E29086C02A694A379 + 6C9030066F1495D6235BB36589AB095505F99A4EE0046AD0955460930F7003EF + 27A0048A7302EA72075AA0048AA00A5AA02ED70406AAA00C3AA10DBAA0114AA1 + 0CDAA0196AA115DA0702EA3004F8070FB0045F9012EC967514F06EC7E0020215 + 98D3F8A22E1AA3D008A3332AA3D389043469434AC4098AF957DFD8767688873A + 220FE4587796E965B69699CBB19977B48E4E8A1CA119A589D89EF93800E42395 + 6EA69AF7890957E9FF9A075902B2F906B5090AEF07A1F467A6B8E99B69BAA618 + 7AA1AA68A65F358BA877015870127189317E91056FD05684E102D0F9A7D14950 + 84F922E6A53A3B0A1630C48D197887A8717CDF49587D289E433294E65994B675 + 88EAA9949A7A8F9855A5563A0075404C04A0A55B9A1F9AA89FFCD9950D00A015 + DAAAAEFAAAB01AABB23AABB44AABC8553D1CF0075DA06E1792759E520C215083 + 9D768C334AACCA48ACC68AACCABAACC898ACD2C8AC0930A8329005C5A744D779 + 0EA0A0A8DA794A2E33A49439991F386B23881B4AAA1C4CCA619D6906521A9AC0 + C42701394C4D85045B8A9E5DBA89AF09A679C0100E41A66D4A7F097A7309FAAF + 656AA1A918B03700FFA106CBA0087BB01C7A8A02BBA100EBA601AB9678C096A5 + A131AC270C5FF00559006F998403801AB2813AA8784001B3E209878A9D3EBAAD + 1805581C85448FEA4AAB243B3F344BE4B966E749AA1D76889A5A342C689F7D46 + 9FA36A9FF38A9F5EAA95FBD99F0C210AB52AAB1EDAA04FDBB4AD1AB5512BB550 + 6BB57D3038159B0E7881295E5821D4E575016504D05AB6667BB6689BB6C74898 + 240023D75A4E3D0AA43FBA7673780E436A0F456AA4CB57AE1C71AE9AE7A406A0 + 021317A50336595AD1543E58B4F28236AD69AF5F5A021EC0105E61B5945BB996 + 7BB9B33A6304480E1D708077BA6340A09CCC49B632EA97A68BACA54BA3A7EB8C + 0500512490056987FFADFBB1A3D9BAB28BDAAD3DE99DBACB2A2445A9CA719E97 + D89935A0946B169095603D7FA2B88B6B114178B408A906911B8A9E80B90A5AB5 + 04EAA11A50BD3710B5D97BB50DDABD3700BEE08BB9E2EBAA4F1B0115F0534220 + 2C6180B15F2B0C8FB3A220ABB6F45BBFF64BAC46E0BA386AADB3CBBF37A9ADC3 + C76A90291AE01A82061C3340C9B7EA68A902E96BEE487D51144CB5D56789ABBC + 5AC11316D112F9891D9E08BD5FD0240D49BDAF6ABD054AC2226CB9086BC2AF1A + 01E6766E7EB00456F7B56BA5A235900CD12AB2CF49BA2DE97B6827BB9FC7A38C + A99D2D631A79B8BB462C3A1770B39695B396C03E3A8B1F9D599E124CB4BD5409 + 4FBC9A8390C19A68FF90482B9B1E4001D2DB09E13BC6D95BC6647CC6669CC6E1 + DB076ADCC66BECC670FCC6683CC7715CC76C2CC7753CC683130292B285B9B08B + 2A81927980043150036077BF889CC865EB7B3200A07B94B237D932DA38B755A6 + 51DE9AB7E3A81A0AECB7E6C78ED1F78E8067003175C5163C0059AC094AA0C11B + FCBCD13BB9732CA0E50BCBDBFBCA744CCB6A2CCBB26CC6B28CBD045ABEBC8CCB + 639CCB63CCCBBA1CCC73CCCB144B015B984FBB08496BE5010CB0022F50977AD9 + AC356AB62EEAAC894CB634C0024EF6072C47BB3C1AC98B5A4342BA0E5916B3AD + E3BB1C01BCF32A7136F082C55BCA7774CA10A0CAABCC0060AA9060CCB465AC01 + 791CD0771CD0E10BFFD0B54CD06D3CD007BDD01AA0D0696CD06ADC049A6BB158 + B0A796160CBDB869C3AAC81CADC8DDDC19DDA647D959CE432C8EDF7AD2E1FA0D + 9BCCC08AAB04F9988F6B46CA459B1FAD29841BBC9F09C90714F0959CA0014D80 + D00CCDD03F1DD4693CD4706CD4748CD46DACD4449DD4121D9C5AF8070AC87A57 + C02979016F7509B27D79C3C248B6D2E8D55CADBA629DBACE485E784005219DB2 + 403CD239B993E70C9EEAFC3AEC5C8945E9C44D7CD756FC54D706D3964509764D + CF03C0BC3F60D336EDB85A199BB3B9D3FECCC600DDD80DFDCF900DD0033DD010 + CDD88EFDD86F7CD998DDD899BDD9951DD99EADD9974DD997DDD9967DDA0D8D06 + 002D8BE616210DF0FF064CF0B957B0B16FE0B13900D61D9DDBF5EB02E3B1AA3F + 2CCEB50B43722BB78CEAAD788BC93CE2524BCAD27FBB155A8161B3F001310DD8 + 50857EAA8CCF86DDC15EE915A16DD96FCCC6935DC6E1FDDD8D0DDEE27DDE050D + D9784CDAE6BDDEE7EDDD8FDDDEF1BDD9E6FDD9F20DD14D506E74D1065DD085C7 + 7931F1FBB1BA3DE06AEBBAB99AD6A140BB3DBAADAAE610B4F2B247AC6573EDCE + 8A7B6DF26C59C64BDDCC4B07844DD886ADCFB2499BFBEA09A25DE2E56DE228EE + D8969DE22C3EDA27DEE22DBEE2A22DE39ADD0411704F6090060EB0045777A71A + CB752B7A97043EE4D09ABF2350813F9CE087AA986C0D703B89BBB151C0209899 + C971663540CFD0CDFFD7534CDD5C6A111CDEE1856DAF5B19A6FFC9DDE98DDA92 + 7DE2E6BDE6F38DE66DFEE26FCEE6721EE76F9EE6765EE78F7DE7A85DDF6FDE04 + 4DA05C1CB00549B0E36FD017FC24498E33182BC0022EA022678BDB6B1BE9CA0A + E9936EB6607DE92E0087490E3F0B4ED273D809331BD7ECA0C44419027C425B78 + 4DC581E6D7C726DD184EB4164CD32A00E61ECEC59E18A60C190A1AA0DA000D02 + 8DEDEBC0FEEBC2DEEBC3AE01BE0ED0BC6EEC8D9DECC7AEECC48EECC5DEECD21E + EDD4FEECCEBEEBC5CEECD92EECBC6E054E46056D99103976A29BC2075B670C06 + 406D097004C7C8EE65EBEED00AEFC40AEFF2DEEE6A7B046C2B034B30E29B7EAD + 9F20C9C3ED76A873FF235776C9C8FD0E265889F718DD32CD6159EEEA5B4ECF34 + CDE1D72D84D89D9549AB0662EAC8D63EED1D5FEDD7EEF1210FF2225FF2247FF2 + 1F9FF223AFF237306327433A0798B1C88904CBC9E8447EF3CAEA02479E058E8C + E04BBED641DC9870472CA24E0E73BDF0AD3EB45B6AE110FFB312CFBC0040EB1D + FEE1601AB9AB2A0ACA1EEC5A9FF55CBFF55EDFF560FFF5621FF6643FF6665FF6 + 687FF620D0F215DB05E9D000258A1227CAB11E80EE2E1079388FF34690E9D3EA + F39F07C00C0EE5297DC0EE40E59215DD2F3D0B13D0F070F3F0D35DCA8CAB0951 + 2FF51E0E05EAB795FDA9D85E01027D00EC7DA0DA9CEFF9A26FEC9D4FFAA31FFA + A69FFAA8BFFA595FFFFAABEFFAAE8FEDAF7FFA9FAFFAB04FFBB8AFECA0CFF5A0 + 5FFA1AA0B974A10F7E808BC7992113E40431800CEACEAC972EE9614DE9CFEFFC + CC2FFDD1AABF22DAEFFDABE0B6DBD670F732DDB96581680616A71C9CFAD2F988 + EA0E7FD77BDDF4CAC1F88116F9106006943FF50689D30AC9EF240E026800ECFB + 0F081A206820822085878984828B898C888D8D89938E83948F869088878F9399 + 87919A999D96A4928AA81A1A77563C78606D5D0D5F571E79B61EB91E57596F25 + 0C032F45464709C5C7C6C9C8CBCACDCCCFCED1D045233A59580FD8DAD9DCDBDE + DDDC0FE2DD58581DE77E617E1DE9EBEDEC7EEBE7D8E2650E0E6DF8F7FBFCFDFD + 100021A81830C146FFC183060D7E20B0B021810903224A9C48B1E20A860C2768 + DC386145C58F2043AA0808010002250852A25499F2644B2D5AA03060E0C4499E + 0EE0B42112C473A74F417D2A0115FAB368504E4447F96CD413694FA6457B362D + EA34AAD547372AE8902104CC960E146ADDD2958B02852F324290A8E1C24882B7 + 70E3BE2D26B7AEDDBB74EFEA856B2487981042FEE41CFCAD30E16CE6CEB15BEC + 8EB1633FE51ED8D397AF32E5CB96DBFC20297005C7CF1AEB10C038FA03C49021 + 2F32340DDA06EAD72047065CD9B2B6EDDA30A1C8B489D330A5DFC0830B1F4EBC + B8F1E3C8931FD7D04407060E2D6451E0C387ACAE2BD4D5C82031A22DB4BCDFA5 + C10D3F77BC796809FF8CB020C1D5B0FBC3DBC68D2BD72131BAC78CE3C5AB2FCE + C1E4CCFBE4738F80FA38A0051D9CA9E099411A317890430EB906DB441735B491 + 831E4D38A1019B0564C66D20DA969B4C0CA8F11E16961012948AA81C729425BF + 11024A8A89BCB8228C34BE38E38B32D2D8238F3506E9A2253A06C9E26F361A09 + C28D3736718773D0A5D1861F5F78A0062EBABCA12510DB89C1820B72B9559798 + E9D945E6997CA5F9169A6BAA59660E238490057C74BE279F37F6E1D7D89EF360 + 51C67F6D0028E8654A40D0A1A10038089A46A461F481841F65388047AA65C491 + 69906A88DAA13FD016E2A7BAC964229D209850EAA9A6A68AEAA98798DA6A22AE + AE1AABAAB4CACAAAFFADAFD63A2BACB6EA7AABAFBB02DBEBAA6E3067450A7808 + 7141191D5499C7B3BA00C107106F58A9D697058817DEB6DA764B9E0B715210D9 + 89751E268E3679BEA3AE3AECB0BB0E3693F923EFBC66700681010B22A42F840C + D521296A156694D046FF6A5A118701FDC0D2C22E31BCD28825908B62A9329A50 + 311AA9563CC9C5AD724CC9AC1A77FC9BC5AFB60863AC93A0CCABC81467CC32C9 + 1497DC72CC34EF0A82153AE0C141170E74719675B95C71C5176F2011420C23B0 + 304C794C27D33478E63D1DB5D354435D9E7A62E0D1C0B8E54A1C8E7C88D1A718 + 9F64EF47CF9F0362A636800070F683018A2EEAA8A399465A5A1D0D6A84A9C120 + 210C101D9F06FE12FF4CA3926B42AA87CB9A38B08BA3DAB8B08747BEF8E3C346 + AE38E2985F5EEAE4BA72BE39E6927FAEF9E168DCD1C4736DA4510615573C3B56 + D07C546B34034993C9EDEDDEE63E0D0B62202198D7C0D7694E6264EBD9677F01 + 269FF6F2FA7CD1366706907050DE097DC0AFF505538851DE1B7D903DDF069004 + B8E082130EBCC519A73F33FAEB63DCBEFAECC7EFBEFCF0CF6F7FFDF8BFAF3FFD + FB63EC7FFEF43341043EB033FFF8212C40BB8E07D252031618215BC610D31124 + 383566CC8582177C9A0437A84123C44908C10B2138EE8418C5186F4FFBE14FBC + 06C5427C38CF500953C2A2F2E690D230A460941A0D431465BDBA81EF50E3235F + E0B450B87249CE04FF5338A21297C8C4264A2E894E84A213232745264AF18A4B + ACE2149FB8C52E9AA00911D0C10784E0806551C075409B16107E513BDDB91177 + 704C860B488084AED9D13060238709D7E50E77A530327FFA4F81E6D58F122088 + 243F18C0C0165910EBCDCD7A16D9DEF4F4F63D0D852F202669982669C3C996AC + 246277B49C283917BA5166CE942DC318E7FE273A54BAD273AF3C252C6729CB23 + B61296F36B427392E5801E600181B7789D07F840B41284A0814B8B4679E2B8CC + 6E49AD9947A0869CF823C26A12867827748C62B091B616B2B004CF0B081D0842 + BD7D3DF28612518DF5BA37811EF24D22970448268518B83788D08B48C4E716B5 + 18457CF2339FFA0CFF6813FF69452A9A00056E68420A42C0813F6CE19762C152 + 2EBEF00520A8E198C220C61B371AC7EF804B4E5CB366F04828B6FB14CF1DFA51 + 61BC0649A096264F0B8702880A6AC0C881B5F37AA7198024D9E9BD770E4036F2 + A4A7E0EC79C76C0854A0FF24E85197CAD4A6EAB30F2FC01974B6D080E9243068 + 670C81184690CC093E43A3DF012B589521D66D8DB518EA2141438B2AD2AF9D2B + 6CD83C293CE41119C900CA9B9839100C658A80493AC8068E5C880E1F02D8D2B4 + F3B07578D43BE35912A1D6D39A078D2C0A242BD9294CF6B294C5AC660F6A5914 + 5CD6B2990DED662FEB59D19A76B4A74D2D6A57AB5AD14E610A68D0805485B005 + 07746006AD93681EFF88F90563D680ABE339C231846B0CE20A77B8C82D6E728F + ABDCE632F7B9C43542D6FED0D6EAE624AEEECA6E1FE5511FB40D9290F24280BD + 1454D3E905F69C9F314D4F0D0654087C68939E8CAFC310A005A256F3709BC52F + 6593C85AFDF2B7B598F56F64FF8B59028756BF018E2C82153CE0D0FE57BF1066 + F064239CDF039B40B639E3406DC940816AA5B11779D80E5729788CB346B0A3DA + 32F157590052EB5A338FF489EB09F5F3AE7A0812AF9931434CEF95AF9A3AD286 + 0D51EF4DDDA9A9F6BED7B1B7D10264D8CA0DC99656B34F8E32693DFB592A1F54 + CA95B5B2662DCBE5295F79CA9DA53296572B66274F59CC613EAD67413BDA27BB + 76B26888400A3E80FF872E3C940A55C2453079CB25EE0C63B9C60D34A0077DDC + 413B57D02EA8819C98EC62B0E1C9A4D96C8C6224C30F9732CFA5F5829E0DCACB + A0F32E84A7D82B32498E8C64DC2C59A455E66CAAB7BC6A36B339CB997575AB67 + ADEA5AA380CD4F7E35AD6FED655EDB5AD6BFDE35B07D7DEBD259E13944581615 + F8104CB250A75ADB61CB7854AC626954DBAC5F2D02EF90508E46B7F54EE98AB4 + 63FCB4B6725BC63F6F08A7876CEAD7C492C63489B55E627D181B9278AAD42951 + B275C32CE67E5399DFFE0EF89A030E70811BFCE0084773C217CEF082335CCC1B + 40C3B1EB7C8136CC0208BADD8596D4B0963F2BB7D01F2FB4C8053DF2911F1AD0 + D26C406F18CDF2F8FF38BADB7BD46EBBEA73B6CB80775E7F7A8007D46D2803E8 + 8B9113709490ADB7DED7C474259D9CEF7CA1B0B5966703CAFDFE729A1F9ED931 + 5B3DEA0897BA96C76CE687F7FAE05D3FF3C39B80333C542100178028B4AE43CC + 0532A081605286714F2C77E496F5C48226C6DCBDBAF7B4FACEDB4E7F2BBAEA03 + 694973131F814A3C8E6D9EF36C18D26D8AFCB9793F8037A2535EB146B737BE6D + 0305A76FC3EBA00FBDE8474FFAD29B5ECC68D8E516D290062C2C1B5AAFD3521E + 9000851A18A02D212779C9410E5D91E71EB92307970CAE0178EB82BBA48BA139 + A5CB7881345CA0E2E766A9F2F491F36D38E19009F379790FAB5EA213A0921239 + FAE66BD3796FF3DAFFDF6176F8D4738DF52E7779E00A57FFBFB77E7E5ECB3AFD + C4863FD607EE7E30CF1FD7FD867FE8377F9E955039D302AC27074B501DC2F46C + 5FE00424C01D4A0356C275776155625F95817B17411E4447BFE3792008632564 + 1FE5600F81F27CAC077D81626E6AE31F652078D9C0003BA620DCA33788E57D98 + 07129C327EE407829FB70128008440E85942D86F453884548684441884067784 + 4C88844E18854CB8844EE86F55988453988554888510F78459288545B8845D28 + 85CD21032D70010BE00054502DC2940B7CC00021000524600606A077BB778778 + 98877A68042EF01720E48380E81E89416ECF5788CDF77C2B7873F2527D83A157 + 24311093046A8E44FF6F03C05810205FF0A5742EE10481980D57288646A8855C + E8854A188AA56885A4E88563288AABB88AA7388AA81886A1B885AF088AB46880 + 3200066980767ED03A6DE80135E1040C400203E04075A787C8988C25A76D1E58 + 7C80485291514669B000AC97822AB878E7D678EEA105E3253D4387833B041288 + C4832D11059D880DA90886E9B88EEAD88EECF88EEE188FF0388FF2588FECF845 + 0B2504BBE8000DC086D6118CC2488C13A88C045990C7F551C4778E21381FE180 + 0FD5788885B88296267D69C388EF916924812F3668798EF43DE2438E29C189CE + 880557A88EB48885B25892AA988AA0088528F9852FA992EED89231F9849DE592 + 347992ED38050A85FF01CA920655D02CB5401600F90B6BD11D142872766887CA + B594C7E59415F8942567047EF78123D98994868287E87CD7C88200E28230E81E + 85023D21008E8255378C354FE347440A890D1BF09670199772399770C9067479 + 977849977639977BB9017D79977F59977939986FD9978629987CA9978A999885 + 2997096505807106BCF805CCA60B340190C35803C260909C898C4650047F415D + 6D899594D606CDC7958698888AD80F1659273B672F6630641132118C15444997 + 89F0C507A3F90070198473E99B42F896C0F98471498F79498FC42997C3D99B47 + 289CCD199CD0498ACE998ED3A99CCFB99CCE599DC0C90663706C1CD0065CD006 + 1C5699C008904E50FF024E704C23D699ECB97BD24401A3E98C59B99510A9785E + C9782F5854AF894866E06990C2582A00925AA09B57290E8479A0089AA00ABAA0 + 0CDAA00EFAA0BDD99D3AC00167C0050BF000146025794013970990EA5904ED19 + A252B91E7F779580570F0E9982A8097D14D9A2F9D09AC07305D807103F50030E + 91216909920840A00A792ED009A1404A97D8699DC7C99C0C0A9C415A9C423A98 + 484A975320A11AC60566940BE6198C2570A57E96949D6987BBC7A5C1F71759F0 + 075D60A2CF680F5AE97C5C699FD8780FDAC8644EC07380331AAEC158A4B67950 + F0053D0A3672690170C9A76FE9A71BC0A782DAA7709903854AA87F8AA881AAA8 + 7769A87309A8807AFF9790AAA8914AA98AEAA88B9AA86F89A97139A99A9AA97B + 6AA96C507608A83A1DC6A1C298AA25A01D2500054829A2215A047D1802A249A6 + C6579AA76988884820ABB90F30CA564E602F74100336D05EF3749BC8EA495AD0 + 00BB391F49FAACD01AADD23AAD4E2A55A5FA005490AAE679A56A5002225604BF + 07ABCAE8022C460521159F2C379F685A9F89779FD9989FD6E588E2346A02CAAC + F2391F89B1A883BAAFFA4A9793CAAF00DBAF01CBAF893AB0A0FAAF072BB00A5B + B00A6BB00EDBB010FBB0FC3A05C7922C5CC0050E50025180AA97D9AD6AD0AD5A + F0AAE2DA997364AEE87AAB26F8902B2A91D337912FFA82DEC68DF6E25E20C974 + CD5A0EF14005C059FFA995FAA8A1EAB383DAA9102BB40C2BB43CEBAFA11AB046 + BBB096AAB44D4BA8040BB549BB013C6905C9920469C007DDBAADABAA0679A01D + 6BE102205A685E3A7265CB9E9F2906590006B61A82664A9F69DAAE6B0A969DA8 + 633104920C40A6E7620E7E400514F00253D0B016C0A786CAAF85BB01872BB111 + 2BB883ABB88EBBB88A9BB8900BB9833BB9913B066240405BF0065A8B9EDACAAD + 5E1B62AE2AB6236B901E2403F0D9B6DF86ABD6989ABCDAAB603992997664C9AA + 894A90B779BAB77ED0007EFB0562D00441F8B8C26BB9C43BBCC64BBC0C7BBCCA + BBB81B40763A03041DB6B53501BA1F6B254E507BA45BBA04192759B072AACB64 + EA4A9F5D39B76DFAFFBDE65B2EBADBB77E4B015AD504812BA895DBB8811ABFF1 + ABAFF50BBF007BBF114BBFF98BBFF3DBBFFF1BC0F23BC0FA3BC08CBBBFFE4BC0 + 8DBBC0FC2BB0F78BB91810024090055FF0B556BAAA5D9B07DE1AB663ABBD7A28 + AB7E78BE2284A2A9A3A2AEEBA22D1BBB27BBC2235C42BC7B1667A1064EB00256 + 30065360C000BCAF05DCC0C2CBC3072CB13C1CC4C65BC03F2CC402BCC3044B76 + 3A10021E4051D64BBD5EAB0648D0AD5020062EE0C11F7C0408C9C2E9FAB6EB1A + B72CBB78742BC25C8C47F89AB36691C614705124600580CBC0701CC7723CC771 + 9C03747CC7784CC7769CC70CBCC773ECC77CACC781BCC080CCA763F0024B8C04 + 5940011685C11E9B7FC154CC551D8CC5779868DC56C64545C2B9AAABAA09BB2A + 4CC6A0EC5658B0BB54B0BE5F00C36B9C16DC3106717CC4096CC40AFCBF0BECCA + B37CC7B28CC3B70CC7B4ACC0B52CC478BCCBFC5BCBF68BBF83CB93897CCA9CFB + B58EFCB1571262617BB6947C5CD42003983CC25E2CBE6AEAAE6C0AAFD5DCCDF4 + 50427DABC6691C08003B} + end + end +end diff --git a/Source/Cliente/uSplash.pas b/Source/Cliente/uSplash.pas new file mode 100644 index 00000000..d5794656 --- /dev/null +++ b/Source/Cliente/uSplash.pas @@ -0,0 +1,56 @@ +unit uSplash; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ExtCtrls, JvGIF, StdCtrls; + +type + TSplashScreen = class(TForm) + Panel1: TPanel; + lblTexto: TLabel; + Image1: TImage; + procedure Image1Click(Sender: TObject); + private + function GetTexto: String; + procedure SetTexto(const Value: String); + { Private declarations } + public + property Texto : String read GetTexto write SetTexto; + procedure ShowAsAbout; + end; + +var + SplashScreen: TSplashScreen; + +implementation + +{$R *.dfm} + +{ TSplashScreen } + +procedure TSplashScreen.ShowAsAbout; +begin + Image1.OnClick := Image1Click; + ShowModal; +end; + +procedure TSplashScreen.Image1Click(Sender: TObject); +begin + Close; +end; + +function TSplashScreen.GetTexto: String; +begin + Result := lblTexto.Caption; + +end; + +procedure TSplashScreen.SetTexto(const Value: String); +begin + lblTexto.Caption := Value; + Self.Update; +end; + +end. diff --git a/Source/FactuGES_Group.bdsgroup b/Source/FactuGES_Group.bdsgroup new file mode 100644 index 00000000..7e705069 --- /dev/null +++ b/Source/FactuGES_Group.bdsgroup @@ -0,0 +1,42 @@ + + + + + + + + + + + Base\Base.bdsproj + Base\ControllerBase\ControllerBase.bdsproj + Base\GUIBase\GUIBase.bdsproj + Modulos\Empresas\Model\Empresas_model.bdsproj + Modulos\Empresas\Data\Empresas_data.bdsproj + Modulos\Empresas\Controller\Empresas_controller.bdsproj + Base\Usuarios\Usuarios.bdsproj + Modulos\Empresas\Views\Empresas_view.bdsproj + Modulos\Empresas\Plugin\Empresas_plugin.bdsproj + Modulos\Formas de pago\Model\FormasPago_model.bdsproj + Modulos\Formas de pago\Data\FormasPago_data.bdsproj + Modulos\Formas de pago\Controller\FormasPago_controller.bdsproj + Modulos\Formas de pago\Views\FormasPago_view.bdsproj + Modulos\Formas de pago\Plugin\FormasPago_plugin.bdsproj + Modulos\Tipos de IVA\Model\TiposIVA_model.bdsproj + Modulos\Tipos de IVA\Data\TiposIVA_data.bdsproj + Modulos\Tipos de IVA\Controller\TiposIVA_controller.bdsproj + Modulos\Tipos de IVA\Views\TiposIVA_view.bdsproj + Modulos\Tipos de IVA\Plugin\TiposIVA_plugin.bdsproj + Modulos\Contactos\Model\Contactos_model.bdsproj + Modulos\Contactos\Data\Contactos_data.bdsproj + Modulos\Contactos\Controller\Contactos_controller.bdsproj + Modulos\Contactos\Views\Contactos_view.bdsproj + Modulos\Contactos\Plugin\Contactos_plugin.bdsproj + Cliente\FactuGES.bdsproj + Servidor\FactuGES_Server.bdsproj + Base.bpl ControllerBase.bpl GUIBase.bpl Empresas_model.bpl Empresas_data.bpl Empresas_controller.bpl Usuarios.bpl Empresas_view.bpl Empresas_plugin.bpl FormasPago_model.bpl FormasPago_data.bpl FormasPago_controller.bpl FormasPago_view.bpl FormasPago_plugin.bpl TiposIVA_model.bpl TiposIVA_data.bpl TiposIVA_controller.bpl TiposIVA_view.bpl TiposIVA_plugin.bpl Contactos_model.bpl Contactos_data.bpl Contactos_controller.bpl Contactos_view.bpl Contactos_plugin.bpl FactuGES.exe FactuGES_Server.exe + + + + diff --git a/Source/FactuGES_Group.groupproj b/Source/FactuGES_Group.groupproj new file mode 100644 index 00000000..2a14eaba --- /dev/null +++ b/Source/FactuGES_Group.groupproj @@ -0,0 +1,274 @@ + + + {f98b1c11-3200-4f80-b23f-3591938de211} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Informes/InfEtiquetasContacto.fr3 b/Source/Informes/InfEtiquetasContacto.fr3 new file mode 100644 index 00000000..f1fcad7c --- /dev/null +++ b/Source/Informes/InfEtiquetasContacto.fr3 @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Source/Informes/InfFichaEmpleado.fr3 b/Source/Informes/InfFichaEmpleado.fr3 new file mode 100644 index 00000000..75b3433b --- /dev/null +++ b/Source/Informes/InfFichaEmpleado.fr3 @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Contactos/Contactos_Group.bdsgroup b/Source/Modulos/Contactos/Contactos_Group.bdsgroup new file mode 100644 index 00000000..407bea04 --- /dev/null +++ b/Source/Modulos/Contactos/Contactos_Group.bdsgroup @@ -0,0 +1,35 @@ + + + + + + + + + + + ..\..\DataAbstract_D10\DataAbstract_D10.bdsproj + ..\..\Base\Base.bdsproj + ..\..\Base\Usuarios\Usuarios.bdsproj + ..\..\Base\GUIBase\GUIBase.bdsproj + Model\Contactos_model.bdsproj + Data\Contactos_data.bdsproj + Controller\Contactos_controller.bdsproj + Views\Contactos_view.bdsproj + Plugin\Contactos_plugin.bdsproj + Test\Contactos_Tests.bdsproj + ..\..\Cliente\FactuGES.bdsproj + ..\..\Servidor\FactuGES_Server.bdsproj + DataAbstract_D10.bpl Base.bpl Usuarios.bpl GUIBase.bpl Contactos_model.bpl Contactos_data.bpl Contactos_controller.bpl Contactos_view.bpl Contactos_plugin.bpl Contactos_Tests.exe FactuGES.exe FactuGES_Server.exe + + + + + + + + + + + diff --git a/Source/Modulos/Contactos/Contactos_Group.config b/Source/Modulos/Contactos/Contactos_Group.config new file mode 100644 index 00000000..c8f28340 --- /dev/null +++ b/Source/Modulos/Contactos/Contactos_Group.config @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.bdsproj b/Source/Modulos/Contactos/Controller/Contactos_controller.bdsproj new file mode 100644 index 00000000..078363cf --- /dev/null +++ b/Source/Modulos/Contactos/Controller/Contactos_controller.bdsproj @@ -0,0 +1,179 @@ + + + + + + + + + + + + Contactos_controller.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.dpk b/Source/Modulos/Contactos/Controller/Contactos_controller.dpk new file mode 100644 index 00000000..47b4be61 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/Contactos_controller.dpk @@ -0,0 +1,88 @@ +package Contactos_controller; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} +{%TogetherDiagram 'ModelSupport_Contactos_controller\default.txaPackage'} + +requires + rtl, + vcl, + DataAbstract_D10, + Base, + GUIBase, + Contactos_model, + Contactos_data, + dbrtl, + cxLibraryD10, + dxThemeD10, + GUISDK_D10, + ccpack10, + designide, + xmlrtl, + vclactnband, + vclx, + cfpack_d10, + JvAppFrmD10R, + vcljpg, + JclVcl, + Jcl, + JvSystemD10R, + JvCoreD10R, + dsnap, + vcldb, + adortl, + JvCtrlsD10R, + JvStdCtrlsD10R; + +contains + uContactosController in 'uContactosController.pas', + uIEditorContactos in 'View\uIEditorContactos.pas', + uIEditorContacto in 'View\uIEditorContacto.pas', + uIEditorCliente in 'View\uIEditorCliente.pas', + uIEditorClientes in 'View\uIEditorClientes.pas', + uClientesController in 'uClientesController.pas', + uIEditorProveedores in 'View\uIEditorProveedores.pas', + uIEditorEmpleados in 'View\uIEditorEmpleados.pas', + uIEditorEmpleado in 'View\uIEditorEmpleado.pas', + uIEditorProveedor in 'View\uIEditorProveedor.pas', + uProveedoresController in 'uProveedoresController.pas', + uEmpleadosController in 'uEmpleadosController.pas', + uIEditorElegirClientes in 'View\uIEditorElegirClientes.pas', + uIEditorElegirProveedores in 'View\uIEditorElegirProveedores.pas', + uIEditorElegirContactos in 'View\uIEditorElegirContactos.pas', + uIEditorDireccionContacto in 'View\uIEditorDireccionContacto.pas', + uDireccionesContactoController in 'uDireccionesContactoController.pas', + uIEditorElegirDireccionEntrega in 'View\uIEditorElegirDireccionEntrega.pas', + uGruposClienteController in 'uGruposClienteController.pas', + uIEditorGruposCliente in 'View\uIEditorGruposCliente.pas', + uGruposProveedorController in 'uGruposProveedorController.pas', + uGruposEmpleadoController in 'uGruposEmpleadoController.pas', + uIEditorGruposProveedor in 'View\uIEditorGruposProveedor.pas', + uIEditorGruposEmpleado in 'View\uIEditorGruposEmpleado.pas', + uFichasEmpleadoReportController in 'uFichasEmpleadoReportController.pas', + uIEditorFichasEmpleadoPreview in 'View\uIEditorFichasEmpleadoPreview.pas', + uEtiquetasContactosReportController in 'uEtiquetasContactosReportController.pas', + uIEditorEtiquetasContactosPreview in 'View\uIEditorEtiquetasContactosPreview.pas'; + +end. diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.dproj b/Source/Modulos/Contactos/Controller/Contactos_controller.dproj new file mode 100644 index 00000000..9f21bc9c --- /dev/null +++ b/Source/Modulos/Contactos/Controller/Contactos_controller.dproj @@ -0,0 +1,646 @@ + + + {e4ad187e-0c3a-462a-b435-f69475af2f56} + Contactos_controller.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Contactos_controller.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + Contactos_controller.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.drc b/Source/Modulos/Contactos/Controller/Contactos_controller.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/Contactos_controller.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.rc b/Source/Modulos/Contactos/Controller/Contactos_controller.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Contactos/Controller/Contactos_controller.res b/Source/Modulos/Contactos/Controller/Contactos_controller.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Contactos/Controller/Contactos_controller.res differ diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorCliente.pas b/Source/Modulos/Contactos/Controller/View/uIEditorCliente.pas new file mode 100644 index 00000000..fda93ef7 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorCliente.pas @@ -0,0 +1,16 @@ +unit uIEditorCliente; + +interface + +uses + uIEditorContacto; + +type + IEditorCliente = interface(IEditorContacto) + ['{7B661F3E-3092-4B5C-801D-D7072E41BFEA}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorClientes.pas b/Source/Modulos/Contactos/Controller/View/uIEditorClientes.pas new file mode 100644 index 00000000..15940b3b --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorClientes.pas @@ -0,0 +1,16 @@ +unit uIEditorClientes; + +interface + +uses + uIEditorContactos, uBizContactos, uGUIBase; + +type + IEditorClientes = interface(IEditorContactos) + ['{21B73C91-1C30-4DEE-ADAF-F6BC628CE3FE}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorContacto.pas b/Source/Modulos/Contactos/Controller/View/uIEditorContacto.pas new file mode 100644 index 00000000..5615b02d --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorContacto.pas @@ -0,0 +1,23 @@ +unit uIEditorContacto; + +interface + +uses + uEditorDBItem, uBizContactos, uContactosController; + +type + IEditorContacto = interface(IEditorDBItem) + ['{0397CCD5-5F36-489B-BE3F-F577F99ED28A}'] + function GetController : IContactosController; + procedure SetController (const Value : IContactosController); + property Controller : IContactosController read GetController + write SetController; + + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorContactos.pas b/Source/Modulos/Contactos/Controller/View/uIEditorContactos.pas new file mode 100644 index 00000000..e0f6807d --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorContactos.pas @@ -0,0 +1,24 @@ +unit uIEditorContactos; + +interface + +uses + uEditorGridBase, uBizContactos, uContactosController; + +type + IEditorContactos = interface(IEditorGridBase) + ['{7C24B29A-77B7-46F4-BFB2-9C210393988D}'] + function GetContactos: IBizContacto; + procedure SetContactos(const Value: IBizContacto); + property Contactos: IBizContacto read GetContactos write SetContactos; + + function GetController : IContactosController; + procedure SetController (const Value : IContactosController); + property Controller : IContactosController read GetController + write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorDireccionContacto.pas b/Source/Modulos/Contactos/Controller/View/uIEditorDireccionContacto.pas new file mode 100644 index 00000000..8ac618c0 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorDireccionContacto.pas @@ -0,0 +1,28 @@ +unit uIEditorDireccionContacto; + +interface + +uses + uBizDireccionesContacto, uDireccionesContactoController; + +type + IEditorEditorDireccion = interface + ['{B684971A-1673-4315-BDF5-EFF511B6F04E}'] + + function GetController : IDireccionesContactoController; + procedure SetController (const Value : IDireccionesContactoController); + property Controller : IDireccionesContactoController read GetController + write SetController; + + function GetDireccion: IBizDireccionesContacto; + procedure SetDireccion(const Value: IBizDireccionesContacto); + property Direccion: IBizDireccionesContacto read GetDireccion write SetDireccion; + + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorElegirClientes.pas b/Source/Modulos/Contactos/Controller/View/uIEditorElegirClientes.pas new file mode 100644 index 00000000..5d7e6d40 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorElegirClientes.pas @@ -0,0 +1,16 @@ +unit uIEditorElegirClientes; + +interface + +uses + uIEditorContactos, uIEditorElegirContactos, uBizContactos, uGUIBase; + +type + IEditorElegirClientes = interface(IEditorElegirContactos) + ['{0764982A-B06A-40AF-BE69-1D2FD138B7FE}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorElegirContactos.pas b/Source/Modulos/Contactos/Controller/View/uIEditorElegirContactos.pas new file mode 100644 index 00000000..de3c3799 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorElegirContactos.pas @@ -0,0 +1,26 @@ +unit uIEditorElegirContactos; + +interface + +uses + uIEditorContactos, uBizContactos, uGUIBase; + +type + IEditorElegirContactos = interface(IEditorContactos) + ['{4A37A0C7-3CDB-4C36-BCFB-6AE0FFE0138D}'] + function GetContactosSeleccionados: IBizContacto; + property ContactosSeleccionados: IBizContacto read GetContactosSeleccionados; + + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + property Mensaje : String read GetMensaje write SetMensaje; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorElegirDireccionEntrega.pas b/Source/Modulos/Contactos/Controller/View/uIEditorElegirDireccionEntrega.pas new file mode 100644 index 00000000..c99cb9ed --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorElegirDireccionEntrega.pas @@ -0,0 +1,30 @@ +unit uIEditorElegirDireccionEntrega; + +interface + +uses + uBizDireccionesContacto, uGUIBase; + +type + IEditorElegirDireccionEntrega = interface + ['{AB909782-25E1-4715-B98A-EA62FB9DC03C}'] + function GetDireccion: IBizDireccionesContacto; + procedure SetDireccion(const Value: IBizDireccionesContacto); + property Direccion: IBizDireccionesContacto read GetDireccion write SetDireccion; + + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + property Mensaje : String read GetMensaje write SetMensaje; + + function GetDireccionSeleccionada: IBizDireccionesContacto; + property DireccionSeleccionada: IBizDireccionesContacto read GetDireccionSeleccionada; + + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. + diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorElegirProveedores.pas b/Source/Modulos/Contactos/Controller/View/uIEditorElegirProveedores.pas new file mode 100644 index 00000000..597ed580 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorElegirProveedores.pas @@ -0,0 +1,16 @@ +unit uIEditorElegirProveedores; + +interface + +uses + uIEditorContactos, uIEditorElegirContactos, uBizContactos, uGUIBase; + +type + IEditorElegirProveedores = interface(IEditorElegirContactos) + ['{1049B4E1-FFA6-4700-9FF2-70D1C0B7D6AC}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorEmpleado.pas b/Source/Modulos/Contactos/Controller/View/uIEditorEmpleado.pas new file mode 100644 index 00000000..a56bd519 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorEmpleado.pas @@ -0,0 +1,16 @@ +unit uIEditorEmpleado; + +interface + +uses + uIEditorContacto; + +type + IEditorEmpleado = interface(IEditorContacto) + ['{DB41E4F5-1D48-4B13-8370-5D3FEB0586C0}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorEmpleados.pas b/Source/Modulos/Contactos/Controller/View/uIEditorEmpleados.pas new file mode 100644 index 00000000..a5b2cf5a --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorEmpleados.pas @@ -0,0 +1,16 @@ +unit uIEditorEmpleados; + +interface + +uses + uIEditorContactos, uBizContactos, uGUIBase; + +type + IEditorEmpleados = interface(IEditorContactos) + ['{982A8AC8-5D43-4C91-9E46-35326CD65C2F}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorEtiquetasContactosPreview.pas b/Source/Modulos/Contactos/Controller/View/uIEditorEtiquetasContactosPreview.pas new file mode 100644 index 00000000..009332ee --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorEtiquetasContactosPreview.pas @@ -0,0 +1,16 @@ +unit uIEditorEtiquetasContactosPreview; + +interface + +uses + uEditorPreview, uBizContactos, uEtiquetasContactosReportController; + +type + IEditorEtiquetasContactosPreview = interface(IEditorPreview) + ['{270D1825-A4A4-4480-BBBA-6DD464ACAD3C}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorFichasEmpleadoPreview.pas b/Source/Modulos/Contactos/Controller/View/uIEditorFichasEmpleadoPreview.pas new file mode 100644 index 00000000..dea9a810 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorFichasEmpleadoPreview.pas @@ -0,0 +1,16 @@ +unit uIEditorFichasEmpleadoPreview; + +interface + +uses + uEditorPreview, uBizContactos, uFichasEmpleadoReportController; + +type + IEditorFichasEmpleadoPreview = interface(IEditorPreview) + ['{CED11B0E-2A7E-4CF2-A9CF-60A82BEEE9F2}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorGruposCliente.pas b/Source/Modulos/Contactos/Controller/View/uIEditorGruposCliente.pas new file mode 100644 index 00000000..3fb6d37a --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorGruposCliente.pas @@ -0,0 +1,23 @@ +unit uIEditorGruposCliente; + +interface + +uses + uEditorDBBase, uBizGruposCliente, uGruposClienteController; + +type + IEditorGruposCliente = interface(IEditorDBBase) + ['{7BF79417-A95C-41F3-96DE-707F2D6F29E3}'] + function GetGruposCliente: IBizGrupoCliente; + procedure SetGruposCliente(const Value: IBizGrupoCliente); + property GruposCliente: IBizGrupoCliente read GetGruposCliente write SetGruposCliente; + + function GetController : IGruposClienteController; + procedure SetController (const Value : IGruposClienteController); + property Controller : IGruposClienteController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorGruposEmpleado.pas b/Source/Modulos/Contactos/Controller/View/uIEditorGruposEmpleado.pas new file mode 100644 index 00000000..7fc79bef --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorGruposEmpleado.pas @@ -0,0 +1,23 @@ +unit uIEditorGruposEmpleado; + +interface + +uses + uEditorDBBase, uBizGruposEmpleado, uGruposEmpleadoController; + +type + IEditorGruposEmpleado = interface(IEditorDBBase) + ['{02981B41-9986-48D8-927C-A08A45168EDE}'] + function GetGruposEmpleado: IBizGrupoEmpleado; + procedure SetGruposEmpleado(const Value: IBizGrupoEmpleado); + property GruposEmpleado: IBizGrupoEmpleado read GetGruposEmpleado write SetGruposEmpleado; + + function GetController : IGruposEmpleadoController; + procedure SetController (const Value : IGruposEmpleadoController); + property Controller : IGruposEmpleadoController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorGruposProveedor.pas b/Source/Modulos/Contactos/Controller/View/uIEditorGruposProveedor.pas new file mode 100644 index 00000000..549ee3fb --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorGruposProveedor.pas @@ -0,0 +1,23 @@ +unit uIEditorGruposProveedor; + +interface + +uses + uEditorDBBase, uBizGruposProveedor, uGruposProveedorController; + +type + IEditorGruposProveedor = interface(IEditorDBBase) + ['{A593BC54-0A28-446E-A6B7-E925D7C4B82C}'] + function GetGruposProveedor: IBizGrupoProveedor; + procedure SetGruposProveedor(const Value: IBizGrupoProveedor); + property GruposProveedor: IBizGrupoProveedor read GetGruposProveedor write SetGruposProveedor; + + function GetController : IGruposProveedorController; + procedure SetController (const Value : IGruposProveedorController); + property Controller : IGruposProveedorController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorProveedor.pas b/Source/Modulos/Contactos/Controller/View/uIEditorProveedor.pas new file mode 100644 index 00000000..accb45e7 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorProveedor.pas @@ -0,0 +1,16 @@ +unit uIEditorProveedor; + +interface + +uses + uIEditorContacto; + +type + IEditorProveedor = interface(IEditorContacto) + ['{576E4FBB-035E-41DD-9AF6-6B88649AEADD}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/View/uIEditorProveedores.pas b/Source/Modulos/Contactos/Controller/View/uIEditorProveedores.pas new file mode 100644 index 00000000..724a05fc --- /dev/null +++ b/Source/Modulos/Contactos/Controller/View/uIEditorProveedores.pas @@ -0,0 +1,16 @@ +unit uIEditorProveedores; + +interface + +uses + uIEditorContactos, uBizContactos, uGUIBase; + +type + IEditorProveedores = interface(IEditorContactos) + ['{9193393C-E499-4FE5-8CB6-67C0BB22770A}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Controller/uClientesController.pas b/Source/Modulos/Contactos/Controller/uClientesController.pas new file mode 100644 index 00000000..4ae4bc63 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uClientesController.pas @@ -0,0 +1,407 @@ +unit uClientesController; + +interface + +uses + uCustomEditor, + uContactosController, uBizContactos, uBizDireccionesContacto, + uIEditorClientes, uIEditorCliente, uIDataModuleContactos, uIDataModuleClientes, + uDireccionesContactoController; + +type + IClientesController = interface(IContactosController) + ['{AAC3C51A-37F7-4961-B39F-FBC6B6A2B0F1}'] + function BuscarTodosTiendaWeb: IBizCliente; + function TieneDatosBancarios(ACliente: IBizCliente) : Boolean; + function ElegirDireccionEntrega(ADirecciones: IBizDireccionesContacto; AMensaje: String): IBizDireccionesContacto; + function EsEliminable(ACliente: IBizContacto): Boolean; + function Eliminar(ACliente: IBizContacto; AllItems: Boolean = false): Boolean; overload; + procedure Preview(ACliente : IBizCliente; AllItems: Boolean = false); + procedure Print(ACliente : IBizCliente; AllItems: Boolean = false); + end; + + TClientesController = class(TContactosController, IClientesController) + protected + FDireccionesController : IDireccionesContactoController; + procedure AsignarID(AContacto: IBizContacto; const IDNuevo: Integer); override; + function ValidarContacto(AContacto: IBizContacto): Boolean; override; + public + constructor Create; override; + destructor Destroy; override; + + function Duplicar(AContacto: IBizContacto): IBizContacto; override; + + function Buscar(const ID: Integer): IBizContacto; override; + function BuscarTodos: IBizContacto; override; + function BuscarTodosTiendaWeb: IBizCliente; + function Nuevo : IBizContacto; override; + procedure Ver(AContacto : IBizContacto); override; + procedure VerTodos(AContactos: IBizContacto); override; + function ElegirContacto(AContactos : IBizContacto; + AMensaje: String; AMultiSelect: Boolean): IBizContacto; override; + function TieneDatosBancarios(ACliente: IBizCliente) : Boolean; + function ElegirDireccionEntrega(ADirecciones: IBizDireccionesContacto; + AMensaje: String): IBizDireccionesContacto; + function EsEliminable(ACliente: IBizContacto): Boolean; + function Eliminar(ACliente: IBizContacto; AllItems: Boolean = false): Boolean; overload; + procedure Preview(ACliente : IBizCliente; AllItems: Boolean = false); + procedure Print(ACliente : IBizCliente; AllItems: Boolean = false); + end; + +implementation + +uses + Forms, Classes, Windows, SysUtils, Controls, cxControls, uDialogUtils, uDataModuleClientes, uEditorRegistryUtils, + uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uEtiquetasContactosReportController, + uIEditorElegirClientes, uIEditorElegirDireccionEntrega, uEditorGridBase; + +{ TClientesController } + +procedure TClientesController.AsignarID(AContacto: IBizContacto; + const IDNuevo: Integer); +begin + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado'); + + { Los datos de descuentos hay que comprobarlos siempre + tanto en insercin como en modificacin. } + with (AContacto as IBizCliente) do + if Assigned(Descuentos) then + AsignarIDDetalles(AContacto, IDNuevo, Descuentos.DataTable); + + inherited; +end; + +function TClientesController.Buscar(const ID: Integer): IBizContacto; +begin + Result := (FDataModule as IDataModuleClientes).GetItem(ID); + FiltrarEmpresa(Result); +end; + +function TClientesController.BuscarTodos: IBizContacto; +begin + Result := (FDataModule as IDataModuleClientes).GetItems; + FiltrarEmpresa(Result); +end; + +function TClientesController.BuscarTodosTiendaWeb: IBizCliente; +begin + Result := (FDataModule as IDataModuleClientes).GetItemsTiendaWeb; + FiltrarEmpresa(Result); +end; + +constructor TClientesController.Create; +begin + inherited; + FDataModule := TDataModuleClientes.Create(Nil); + FDireccionesController := TDireccionesContactoController.Create; +end; + +destructor TClientesController.Destroy; +begin + FDireccionesController := NIL; + inherited; +end; + +function TClientesController.Duplicar(AContacto: IBizContacto): IBizContacto; +begin + Result := inherited Duplicar(AContacto); + + if Assigned((Result as IBizCliente).Descuentos) then + DuplicarRegistros((AContacto as IBizCliente).Descuentos.DataTable, (Result as IBizCliente).Descuentos.DataTable, mdrTodos); +end; + +function TClientesController.ElegirContacto(AContactos : IBizContacto; + AMensaje: String; AMultiSelect: Boolean): IBizContacto; +var + AEditor : IEditorElegirClientes; +begin + Result := NIL; + + CreateEditor('EditorElegirClientes', IEditorElegirClientes, AEditor); + try + with AEditor do + begin + Contactos := AContactos; + Controller := Self; + MultiSelect := AMultiSelect; + Mensaje := AMensaje; + if IsPositiveResult(ShowModal) then + Result := ContactosSeleccionados; + Release; + end; + finally + AEditor := NIL; + end; +end; + +function TClientesController.ElegirDireccionEntrega(ADirecciones: IBizDireccionesContacto; + AMensaje: String): IBizDireccionesContacto; +var + AEditor : IEditorElegirDireccionEntrega; +begin + Result := NIL; + + CreateEditor('EditorElegirDireccionEntrega', IEditorElegirDireccionEntrega, AEditor); + try + with AEditor do + begin + Direccion := ADirecciones; + Mensaje := AMensaje; + if IsPositiveResult(ShowModal) then + Result := DireccionSeleccionada; + Release; + end; + finally + AEditor := NIL; + end; +end; + +function TClientesController.Eliminar(ACliente: IBizContacto; AllItems: Boolean): Boolean; +//En el caso de eliminar almenos un elemento del conjunto se devuelve true +var + bEliminado: Boolean; + +begin + Result := False; + + if not Assigned(ACliente) then + raise Exception.Create ('Contacto no asignado'); + + ShowHourglassCursor; + try + if not ACliente.DataTable.Active then + ACliente.DataTable.Active := True; + + if (ACliente.State in dsEditModes) then + ACliente.Cancel; + + //Siempre eliminaremos el seleccionado + if EsEliminable(ACliente) then + begin + ACliente.Delete; + bEliminado := True; + end; + + //En el caso de querer eliminar todos los items del objeto ACliente + if AllItems then + begin + with ACliente.DataTable do + begin + First; + while not EOF do + begin + if EsEliminable(ACliente) then + begin + ACliente.Delete; + bEliminado := True + end + else Next; + end; + end; + end; + + if bEliminado then + begin + ACliente.DataTable.ApplyUpdates; + Result := True; + end + else + Result := False; + + finally + HideHourglassCursor; + end; +end; + +function TClientesController.EsEliminable(ACliente: IBizContacto): Boolean; +begin + if not Assigned(ACliente) then + raise Exception.Create ('Contacto no asignado: EsEliminable'); + + Result := True; +end; + +function TClientesController.Nuevo: IBizContacto; +var + AContacto : IBizCliente; +begin + AContacto := (FDataModule as IDataModuleClientes).NewItem; + FiltrarEmpresa(AContacto); + AContacto.DataTable.Active := True; + AContacto.Insert; + Result := AContacto; +end; + +procedure TClientesController.Preview(ACliente: IBizCliente; AllItems: Boolean); +var + AReportController : IEtiquetasContactosReportController; + ListaID: TStringList; + +begin + AReportController := TEtiquetasContactosReportController.Create; + try + ListaID := TStringList.Create; + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with ACliente.DataTable do + begin + First; + while not EOF do + begin + ListaID.Add(IntToStr(ACliente.ID)); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ListaID.Add(IntToStr(ACliente.ID)); + + AReportController.Preview(ListaID.CommaText); + + finally + AReportController := NIL; + ListaID.Free; + end; +end; + +procedure TClientesController.Print(ACliente: IBizCliente; AllItems: Boolean); +var + AReportController : IEtiquetasContactosReportController; + ListaID: TStringList; + +begin + AReportController := TEtiquetasContactosReportController.Create; + try + ListaID := TStringList.Create; + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with ACliente.DataTable do + begin + First; + while not EOF do + begin + ListaID.Add(IntToStr(ACliente.ID)); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ListaID.Add(IntToStr(ACliente.ID)); + + AReportController.Print(ListaID.CommaText); + + finally + AReportController := NIL; + ListaID.Free; + end; +end; + +function TClientesController.TieneDatosBancarios( + ACliente: IBizCliente): Boolean; +begin + Result := False; + + if not Assigned(ACliente) then + raise Exception.Create ('Cliente no asignado (TieneDatosBancarios)'); + + if ACliente.DataTable.Active then + ACliente.DataTable.Active := True; + + with ACliente.DatosBancarios do + begin + Result := (DataTable.RecordCount > 0) and + ( + (Length(ENTIDAD) > 0) and + (Length(SUCURSAL) > 0) and + (Length(DC) > 0) and + (Length(CUENTA) > 0) + ); + end; +end; + +function TClientesController.ValidarContacto(AContacto: IBizContacto): Boolean; +begin + Result := inherited ValidarContacto(AContacto); + if Result then + begin + with (AContacto as IBizCliente) do + begin + if (BLOQUEADO = 0) then + begin + Edit; + MOTIVO_BLOQUEO := ''; + Post; + end; + + if (TIENDA_WEB = 1) and (Length(EMAIL_1) = 0) then + begin + {ShowWarningMessage('Acceso a la tienda web', + 'Para que el cliente pueda tener acceso a la tienda web es necesario indicar una direccin de e-mail en el campo ''Correo de trabajo''' + + #10#13 + #10#13 + + 'Por favor, indique una direccin o desactive el acceso a la tienda.'); + Result := False;} + raise Exception.Create('Para que el cliente pueda tener acceso a la tienda web es necesario indicar una direccin de e-mail en el campo ''Correo de trabajo''' + + #10#13 + #10#13 + + 'Por favor, indique una direccin o desactive el acceso a la tienda.'); + end; + end; + + if Result and (AContacto.Direcciones.RecordCount = 0) then + if (ShowConfirmMessage('El cliente no tiene direcciones asociadas', + AContacto.NOMBRE + ' no tiene ninguna direccin de envo dada de alta, ' + #10#13 + + 'Desea utilizar el domicilio fiscal para dar de alta una direccin de entrega?') = IDYES) then + begin + FDireccionesController.CopiarDireccionFiscal(AContacto, AContacto.Direcciones); + FDireccionesController.Ver(AContacto.Direcciones); + end; + end; +end; + +procedure TClientesController.Ver(AContacto: IBizContacto); +var + AEditor : IEditorCliente; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorCliente', IEditorCliente, AEditor); + with AEditor do + begin + Contacto := AContacto; + Controller := Self; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TClientesController.VerTodos(AContactos: IBizContacto); +var + AEditor : IEditorClientes; +begin + CreateEditor('EditorClientes', IEditorClientes, AEditor); + with AEditor do + begin + Contactos := AContactos; + Controller := Self; + MultiSelect := True; + ShowEmbedded; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uContactosController.pas b/Source/Modulos/Contactos/Controller/uContactosController.pas new file mode 100644 index 00000000..976d4256 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uContactosController.pas @@ -0,0 +1,385 @@ +unit uContactosController; + +interface + + +uses + Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable, + uBizContactos, uBizContactosDatosBancarios, uIDataModuleContactos; + +type + IContactosController = interface + ['{43F9A4ED-6563-4F95-9A56-330CF9C66731}'] + function Buscar(const ID: Integer): IBizContacto; + function BuscarTodos: IBizContacto; + procedure Ver(AContacto : IBizContacto); + procedure VerTodos(AContactos: IBizContacto); + function Nuevo : IBizContacto; + procedure Anadir(AContacto : IBizContacto); + procedure Eliminar(const ID : Integer); overload; + function Eliminar(AContacto : IBizContacto): Boolean; overload; + function Guardar(AContacto : IBizContacto): Boolean; + procedure DescartarCambios(AContacto : IBizContacto); + function Existe(const ID: Integer) : Boolean; + function Duplicar(AContacto : IBizContacto) : IBizContacto; + function Localizar(AContactos: IBizContacto; const ID : Integer): Boolean; + function ElegirContacto(AContactos : IBizContacto; + AMensaje: String; AMultiSelect: Boolean): IBizContacto; + + function ExtraerSeleccionados(AContactos: IBizContacto) : IBizContacto; + end; + + TContactosController = class(TInterfacedObject, IContactosController) + protected + FDataModule : IDataModuleContactos; + procedure AsignarID(AContacto: IBizContacto; const IDNuevo : Integer); virtual; + procedure AsignarIDDetalles(AContacto: IBizContacto; + const IDCabecera : Integer; ADataTable : TDADataTable); + procedure FiltrarEmpresa(AContacto : IBizContacto); virtual; + function _Vacio : IBizContacto; virtual; + function ValidarContacto(AContacto : IBizContacto): Boolean; virtual; + public + constructor Create; virtual; + destructor Destroy; override; + + procedure Eliminar(const ID : Integer); overload; virtual; + function Eliminar(AContacto : IBizContacto): Boolean; overload; virtual; + function Guardar(AContacto : IBizContacto): Boolean; + procedure DescartarCambios(AContacto : IBizContacto); virtual; + function Existe(const ID: Integer) : Boolean; virtual; + procedure Anadir(AContacto : IBizContacto); virtual; + function Duplicar(AContacto: IBizContacto): IBizContacto; virtual; + function ExtraerSeleccionados(AContactos: IBizContacto) : IBizContacto; virtual; + function Localizar(AContactos: IBizContacto; const ID : Integer): Boolean; + + // Se implementa en los controladores hijos + function Buscar(const ID: Integer): IBizContacto; virtual; abstract; + function BuscarTodos: IBizContacto; virtual; abstract; + function Nuevo : IBizContacto; virtual; abstract; + procedure Ver(AContacto : IBizContacto); virtual; abstract; + procedure VerTodos(AContactos: IBizContacto); virtual; abstract; + function ElegirContacto(AContactos : IBizContacto; + AMensaje: String; AMultiSelect: Boolean): IBizContacto; virtual; abstract; + end; + +implementation + +uses + Dialogs, uEditorRegistryUtils, cxControls, DB, uDAInterfaces, uDataTableUtils, + uDataModuleUsuarios, schContactosClient_Intf; + +{ TContactosController } + +procedure TContactosController.Anadir(AContacto: IBizContacto); +begin + AContacto.Insert; +end; + +procedure TContactosController.AsignarID(AContacto: IBizContacto; const IDNuevo : Integer); +begin + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado'); + + if AContacto.EsNuevo then + begin + { OJO !!! + Primero cambiamos el ID de las tablas detalles + porque si cambiamos antes el ID de la cabecera + deja de funcionar la relacion M/D y no + encontraramos las filas detalle. + + --> MASTER.ID = DETAIL.ID_CONTACTO <-- + } + + with AContacto._Categorias do + begin + if not DataTable.Active then + DataTable.Active := True; + Insert; + ID_CONTACTO := IDNuevo; + ID_CATEGORIA := AContacto.ID_CATEGORIA; + Post; + end; + end; + + { Los datos bancarios hay que comprobarlos siempre + tanto en insercin como en modificacin. } + if Assigned(AContacto.DatosBancarios) then + AsignarIDDetalles(AContacto, IDNuevo, AContacto.DatosBancarios.DataTable); + + + { Las direcciones extras hay que comprobarlas siempre + tanto en insercin como en modificacin. } + if Assigned(AContacto.Direcciones) then + AsignarIDDetalles(AContacto, IDNuevo, AContacto.Direcciones.DataTable); + + + if AContacto.EsNuevo then + begin + AContacto.Edit; + AContacto.ID := IDNuevo; + AContacto.ID_EMPRESA := dmUsuarios.IDEmpresaActual; + AContacto.Post; + end; +end; + + +function TContactosController.Duplicar(AContacto: IBizContacto): IBizContacto; +begin + Result := Self._Vacio; + ShowHourglassCursor; + try + DuplicarRegistros(AContacto.DataTable, Result.DataTable, mdrActual); + DuplicarRegistros(AContacto.DatosBancarios.DataTable, Result.DatosBancarios.DataTable, mdrTodos); + if Assigned(AContacto.Direcciones) then + DuplicarRegistros(AContacto.Direcciones.DataTable, Result.Direcciones.DataTable, mdrTodos); + + // Hay que dejar algunos campos como si fuera un contacto nuevo + Result.Edit; + with Result do + begin + ID_EMPRESA := dmUsuarios.IDEmpresaActual; + USUARIO := dmUsuarios.LoginInfo.Usuario; + end; + + Result.Post; + finally + HideHourglassCursor; + end; +end; + +constructor TContactosController.Create; +begin + FDataModule := NIL; +end; + +procedure TContactosController.DescartarCambios(AContacto: IBizContacto); +begin + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado'); + + ShowHourglassCursor; + try + if (AContacto.State in dsEditModes) then + AContacto.Cancel; + + AContacto.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TContactosController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +function TContactosController.Eliminar(AContacto: IBizContacto): Boolean; +begin + Result := False; + + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado'); + + ShowHourglassCursor; + try + if (AContacto.State in dsEditModes) then + AContacto.Cancel; + + AContacto.Delete; + AContacto.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + except + on E: Exception do + begin + AContacto.DataTable.CancelUpdates; + HideHourglassCursor; + if (Pos('FOREIGN KEY', E.Message) > 0) then + MessageBox(0, 'No se puede borrar este contacto porque tiene documentos dados de alta (como presupuestos, albaranes, facturas, etc)', 'Atencin', MB_ICONWARNING or MB_OK); + end; + end; +end; + +procedure TContactosController.Eliminar(const ID: Integer); +var + AContacto : IBizContacto; +begin + AContacto := Buscar(ID); + + if not Assigned(AContacto) then + raise Exception.Create(Format('No se ha encontrado el contacto con ID = %d', [ID])); + + Eliminar(AContacto); + AContacto := NIL; +end; + +function TContactosController.Existe(const ID: Integer): Boolean; +var + AContacto : IBizContacto; +begin + try + AContacto := Buscar(ID); + Result := Assigned(AContacto) and (AContacto.ID = ID); + finally + AContacto := NIL; + end; +end; + +function TContactosController.ExtraerSeleccionados( + AContactos: IBizContacto): IBizContacto; +var + ASeleccionados : IBizContacto; +begin + ASeleccionados := Self.Buscar(ID_NULO); + CopyDataTable(AContactos.DataTable, ASeleccionados.DataTable, True); + Result := ASeleccionados; +end; + +function TContactosController.Guardar(AContacto: IBizContacto): Boolean; +var + NuevoID : Integer; +begin + Result := False; + + if ValidarContacto(AContacto) then + begin + ShowHourglassCursor; + try + if AContacto.EsNuevo then + NuevoID := FDataModule.GetNextID(AContacto.DataTable.LogicalName) + else + NuevoID := AContacto.ID; + + AsignarID(AContacto, NuevoID); + AContacto.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TContactosController.Localizar(AContactos: IBizContacto; + const ID: Integer): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AContactos.DataTable do + begin + DisableControls; + First; + if not Locate(fld_ContactosID, ID, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +procedure TContactosController.AsignarIDDetalles (AContacto: IBizContacto; const IDCabecera : Integer; ADataTable : TDADataTable); +var + AContador : Integer; +begin + if not ADataTable.Active then + ADataTable.Active := True; + + if AContacto.EsNuevo then + begin + { OJO !!!! + Para asignar el ID en los detalles hay + que tener en cuenta una cosa: + Si se cambia el ID, ese detalle ya no + pertenece a esa cabecera porque ya no se + cumple la condicin de la relacion: + Master.ID = Detail.ID_CONTACTO. + + Por esa razn no sirve hacer un recorrido + desde el principio hasta el final porque + las detalles van desapareciendo segn asignamos + el valor al campo ID y nos mueve aleatoriamente + la posicin del registro actual. + + Es mejor hacer un bucle sencillo hasta que + "se gasten" todos los detalles. Cuando el + RecordCount llegue a 0 quiere decir que hemos + tratado todos los detalles. + } + while ADataTable.RecordCount > 0 do + begin + ADataTable.First; + ADataTable.Edit; + ADataTable.FieldByName('ID').AsInteger := FDataModule.GetNextID(ADataTable.LogicalName); +// ADataTable.FieldByName('ID_CONTACTO').AsInteger := IDCabecera; + //OJO SI UN DIA SON VARIOS LOS CAMPOS FORANEOS, SOLO FUNCIONA CUANDO ES UN NICO CAMPO DE CLAVE FORANEA + ADataTable.FieldByName(ADataTable.DetailFields).AsInteger := IDCabecera; + ADataTable.Post; + end; + end + else begin + { En este caso es un recorrido normal y corriente. } + ADataTable.First; + AContador := ADataTable.RecordCount; + + while (AContador > 0) do + begin + // Es nuevo? + if (ADataTable.FieldByName('ID').AsInteger < 0) then + begin + ADataTable.Edit; + ADataTable.FieldByName('ID').AsInteger := FDataModule.GetNextID(ADataTable.LogicalName); + ADataTable.Post; + end; + AContador := AContador - 1; + ADataTable.Next; + end; + ADataTable.First; + end; +end; + + +function TContactosController.ValidarContacto(AContacto: IBizContacto): Boolean; +begin + Result := False; + + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado'); + + if (AContacto.DataTable.State in dsEditModes) then + AContacto.DataTable.Post; + + if Length(AContacto.NOMBRE) = 0 then + raise Exception.Create('Debe indicar al menos el nombre de este contacto.'); + + // Asegurarse de valores en campos "automticos" + AContacto.Edit; + AContacto.USUARIO := dmUsuarios.LoginInfo.Usuario; + AContacto.Post; + + Result := True; +end; + +function TContactosController._Vacio: IBizContacto; +begin + Result := Buscar(ID_NULO); +end; + +procedure TContactosController.FiltrarEmpresa(AContacto: IBizContacto); +begin + if AContacto.DataTable.Active then + AContacto.DataTable.Active := False; + + // Filtrar los contactos actuales por empresa + with AContacto.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + AddCondition(fld_ContactosID_EMPRESA, cEqual, dmUsuarios.IDEmpresaActual); + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uDireccionesContactoController.pas b/Source/Modulos/Contactos/Controller/uDireccionesContactoController.pas new file mode 100644 index 00000000..f022881b --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uDireccionesContactoController.pas @@ -0,0 +1,194 @@ +unit uDireccionesContactoController; + +interface + +uses + Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable, + uBizContactos, uBizDireccionesContacto, uIDataModuleContactos; + +type + IDireccionesContactoController = interface + ['{9B6CB172-F32C-414F-A0E2-99920CAF88FB}'] + procedure AsignarID(ADetalles: IBizDireccionesContacto; IDCabecera: Integer; AEsNuevo:Boolean); + procedure CopiarDireccionFiscal(AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir : Boolean = True); + procedure Ver(ADireccion : IBizDireccionesContacto); + function Localizar(ADirecciones: IBizDireccionesContacto; const ID : Integer): Boolean; + end; + + TDireccionesContactoController = class(TInterfacedObject, IDireccionesContactoController) + private + FDataModule : IDataModuleContactos; + public + procedure CopiarDireccionFiscal(AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; AAnadir : Boolean = True); + procedure Ver(ADireccion : IBizDireccionesContacto); + procedure AsignarID(ADetalles: IBizDireccionesContacto; IDCabecera: Integer; AEsNuevo:Boolean); + function Localizar(ADirecciones: IBizDireccionesContacto; const ID : Integer): Boolean; + constructor Create; virtual; + destructor Destroy; override; + end; + +implementation + +{ TDireccionesContactoController } + +uses + uDataModuleContactos, schContactosClient_Intf, uIEditorDireccionContacto, + uEditorRegistryUtils, cxControls; + +procedure TDireccionesContactoController.AsignarID( + ADetalles: IBizDireccionesContacto; IDCabecera: Integer; + AEsNuevo: Boolean); +begin + with ADetalles do + begin + DataTable.DisableControls; + try + if not DataTable.Active then + DataTable.Active := True; + +// AuxPosicion := POSICION; + + { OJO !!!! + Para asignar el ID en los detalles hay + que tener en cuenta una cosa: + Si se cambia el ID, ese detalle ya no + pertenece a esa cabecera porque ya no se + cumple la condicin de la relacion: + Master.ID = Detail.ID_PRESUPUESTO. + + Por esa razn no sirve hacer un recorrido + desde el principio hasta el final porque + las detalles van desapareciendo segn asignamos + el valor al campo ID y nos mueve aleatoriamente + la posicin del registro actual. + + Es mejor hacer un bucle sencillo hasta que + "se gasten" todos los detalles. Cuando el + RecordCount llegue a 0 quiere decir que hemos + tratado todos los detalles. + + El bucle cambia en el caso de ser llamada esta funcion desde modificar + un presupuesto ya que en ese caso si que hay que hacer un recorrido + total de las tuplas de detalle. + } + + if AEsNuevo then + begin + while RecordCount > 0 do + begin + DataTable.First; + Edit; + ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_CONTACTO := IDCabecera; + Post + end + end + else + begin + DataTable.First; + while not DataTable.EOF do + begin + if AEsNuevo then + begin + Edit; + ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_CONTACTO := IDCabecera; + Post + end; + DataTable.Next + end; + end; + finally + DataTable.EnableControls; + end; + end; +end; + +procedure TDireccionesContactoController.CopiarDireccionFiscal( + AContacto: IBizContacto; ADireccion: IBizDireccionesContacto; + AAnadir: Boolean); +begin + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado (CopiarDireccionFiscal)'); + + if not Assigned(ADireccion) then + raise Exception.Create ('Direccin no asignada (CopiarDireccionFiscal)'); + + if AAnadir then + ADireccion.DataTable.Insert + else + ADireccion.DataTable.Edit; + try + with ADireccion do + begin + NOMBRE := 'Direccin de entrega'; + CALLE := AContacto.CALLE; + POBLACION := AContacto.POBLACION; + PROVINCIA := AContacto.PROVINCIA; + CODIGO_POSTAL := AContacto.CODIGO_POSTAL; + TELEFONO := AContacto.TELEFONO_1; + EMAIL := AContacto.EMAIL_1; + end; + finally + ADireccion.DataTable.Post; + end; +end; + +constructor TDireccionesContactoController.Create; +begin + inherited; + FDataModule := TDataModuleContactos.Create(Nil); +end; + +destructor TDireccionesContactoController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TDireccionesContactoController.Localizar( + ADirecciones: IBizDireccionesContacto; const ID: Integer): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with ADirecciones.DataTable do + begin + DisableControls; + First; + if not Locate(fld_DireccionesContactoID, ID, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +procedure TDireccionesContactoController.Ver( + ADireccion: IBizDireccionesContacto); +var + AEditor : IEditorEditorDireccion; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorDireccion', IEditorEditorDireccion, AEditor); + with AEditor do + begin + Direccion := ADireccion; + Controller := Self; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; +end. diff --git a/Source/Modulos/Contactos/Controller/uEmpleadosController.pas b/Source/Modulos/Contactos/Controller/uEmpleadosController.pas new file mode 100644 index 00000000..2fdb23b8 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uEmpleadosController.pas @@ -0,0 +1,268 @@ +unit uEmpleadosController; + +interface + +uses + uCustomEditor, + uContactosController, uBizContactos, + uIEditorEmpleados, uIEditorEmpleado, uIDataModuleContactos, uIDataModuleEmpleados; + +type + IEmpleadosController = interface(IContactosController) + ['{A3841871-7EF6-4847-9758-EA2B1C521D4A}'] + function EsEliminable(AEmpleado: IBizContacto): Boolean; + function Eliminar(AEmpleado: IBizContacto; AllItems: Boolean = false): Boolean; overload; + procedure Preview(AEmpleado : IBizEmpleado; AllItems: Boolean = false); + procedure Print(AEmpleado : IBizEmpleado; AllItems: Boolean = false); + end; + + TEmpleadosController = class(TContactosController, IEmpleadosController) + protected + procedure AsignarID(AContacto: IBizContacto; const IDNuevo: Integer); override; + + public + constructor Create; override; + + function Duplicar(AContacto: IBizContacto): IBizContacto; override; + + function Buscar(const ID: Integer): IBizContacto; override; + function BuscarTodos: IBizContacto; override; + function Nuevo : IBizContacto; override; + procedure Ver(AContacto : IBizContacto); override; + procedure VerTodos(AContactos: IBizContacto); override; + + function Eliminar(AEmpleado: IBizContacto; AllItems: Boolean = false): Boolean; overload; + function EsEliminable(AEmpleado: IBizContacto): Boolean; + + procedure Preview(AEmpleado : IBizEmpleado; AllItems: Boolean = false); + procedure Print(AEmpleado : IBizEmpleado; AllItems: Boolean = false); + end; + +implementation + +uses + Classes, Windows, SysUtils, cxControls, Dialogs, uDataModuleEmpleados, uEditorRegistryUtils, + uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uFichasEmpleadoReportController, + uEditorGridBase; + +{ TEmpleadoController } + +procedure TEmpleadosController.AsignarID(AContacto: IBizContacto; + const IDNuevo: Integer); +begin + if not Assigned(AContacto) then + raise Exception.Create ('Contacto no asignado'); + + inherited; +end; + +function TEmpleadosController.Buscar(const ID: Integer): IBizContacto; +begin + Result := (FDataModule as IDataModuleEmpleados).GetItem(ID); + FiltrarEmpresa(Result); +end; + +function TEmpleadosController.BuscarTodos: IBizContacto; +begin + Result := (FDataModule as IDataModuleEmpleados).GetItems; + FiltrarEmpresa(Result); +end; + +constructor TEmpleadosController.Create; +begin + inherited; + FDataModule := TDataModuleEmpleados.Create(Nil); +end; + +function TEmpleadosController.Duplicar(AContacto: IBizContacto): IBizContacto; +begin + Result := inherited Duplicar(AContacto); +end; + +function TEmpleadosController.Eliminar(AEmpleado: IBizContacto; AllItems: Boolean = false): Boolean; +//En el caso de eliminar almenos un elemento del conjunto se devuelve true +var + bEliminado: Boolean; + +begin + Result := False; + + if not Assigned(AEmpleado) then + raise Exception.Create ('Contacto no asignado'); + + ShowHourglassCursor; + try + if not AEmpleado.DataTable.Active then + AEmpleado.DataTable.Active := True; + + if (AEmpleado.State in dsEditModes) then + AEmpleado.Cancel; + + //Siempre eliminaremos el seleccionado + if EsEliminable(AEmpleado) then + begin + AEmpleado.Delete; + bEliminado := True; + end; + + //En el caso de querer eliminar todos los items del objeto AEmpleado + if AllItems then + begin + with AEmpleado.DataTable do + begin + First; + while not EOF do + begin + if EsEliminable(AEmpleado) then + begin + AEmpleado.Delete; + bEliminado := True + end + else Next; + end; + end; + end; + + if bEliminado then + begin + AEmpleado.DataTable.ApplyUpdates; + Result := True; + end + else + Result := False; + + finally + HideHourglassCursor; + end; +end; + +function TEmpleadosController.EsEliminable(AEmpleado: IBizContacto): Boolean; +begin + if not Assigned(AEmpleado) then + raise Exception.Create ('Contacto no asignado: EsEliminable'); + + Result := True; +end; + +function TEmpleadosController.Nuevo: IBizContacto; +var + AContacto : IBizEmpleado; +begin + AContacto := (FDataModule as IDataModuleEmpleados).NewItem; + FiltrarEmpresa(AContacto); + AContacto.DataTable.Active := True; + AContacto.Insert; + Result := AContacto; +end; + +procedure TEmpleadosController.Preview(AEmpleado: IBizEmpleado; AllItems: Boolean); +var + AReportController : IFichasEmpleadoReportController; + ID_Fichas: TStringList; + +begin + AReportController := TFichasEmpleadoReportController.Create; + try + ID_Fichas := TStringList.Create; + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AEmpleado.DataTable do + begin + First; + while not EOF do + begin + ID_Fichas.Add(IntToStr(AEmpleado.ID)); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ID_Fichas.Add(IntToStr(AEmpleado.ID)); + + AReportController.Preview(ID_Fichas.CommaText); + + finally + AReportController := NIL; + ID_Fichas.Free; + end; +end; + +procedure TEmpleadosController.Print(AEmpleado: IBizEmpleado; AllItems: Boolean); +var + AReportController : IFichasEmpleadoReportController; + ID_Fichas: TStringList; + +begin + AReportController := TFichasEmpleadoReportController.Create; + try + ID_Fichas := TStringList.Create; + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AEmpleado.DataTable do + begin + First; + while not EOF do + begin + ID_Fichas.Add(IntToStr(AEmpleado.ID)); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ID_Fichas.Add(IntToStr(AEmpleado.ID)); + + AReportController.Print(ID_Fichas.CommaText); + + finally + AReportController := NIL; + ID_Fichas.Free; + end; +end; + +procedure TEmpleadosController.Ver(AContacto: IBizContacto); +var + AEditor : IEditorEmpleado; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorEmpleado', IEditorEmpleado, AEditor); + with AEditor do + begin + Contacto := AContacto; + Controller := Self; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TEmpleadosController.VerTodos(AContactos: IBizContacto); +var + AEditor : IEditorEmpleados; +begin + CreateEditor('EditorEmpleados', IEditorEmpleados, AEditor); + with AEditor do + begin + Contactos := AContactos; + Controller := Self; + MultiSelect := True; + ShowEmbedded; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uEtiquetasContactosReportController.pas b/Source/Modulos/Contactos/Controller/uEtiquetasContactosReportController.pas new file mode 100644 index 00000000..504875bc --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uEtiquetasContactosReportController.pas @@ -0,0 +1,102 @@ +unit uEtiquetasContactosReportController; + +interface + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleEtiquetasContactosReport, + uEmpleadosController; + +type + IEtiquetasContactosReportController = interface + ['{76BB35E3-554E-4D30-8D3E-54E488EF82E2}'] + procedure Preview(const AContactosID : String); + procedure Print(const AContactosID : String); + end; + + TEtiquetasContactosReportController = class(TInterfacedObject, IEtiquetasContactosReportController) + private + FDataModule : IDataModuleEtiquetasContactosReport; + function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; + public + constructor Create; + destructor Destroy; override; + + procedure Preview(const AContactosID : String); + procedure Print(const AContactosID : String); + end; + + +implementation + +uses + uROTypes, uEditorRegistryUtils, uIEditorEtiquetasContactosPreview, + uEditorPreview, uDataModuleContactos, uEditorBase, cxControls; + +{ TEtiquetasContactosReportController } + +constructor TEtiquetasContactosReportController.Create; +begin + FDataModule := TDataModuleContactos.Create(Nil); +end; + +function TEtiquetasContactosReportController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + + +destructor TEtiquetasContactosReportController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +procedure TEtiquetasContactosReportController.Preview(const AContactosID : String); +var + AStream: Binary; + AEditor : IEditorEtiquetasContactosPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetReport(AContactosID); + try + CreateEditor('EditorEtiquetasContactosPreview', IEditorEtiquetasContactosPreview, AEditor); + AEditor.LoadFromStream(AStream); + finally + AStream.Free; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.Preview; +end; + +procedure TEtiquetasContactosReportController.Print(const AContactosID : String); +var + AStream: Binary; + AEditor : IEditorEtiquetasContactosPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetReport(AContactosID); + try + CreateEditor('EditorEtiquetasContactosPreview', IEditorEtiquetasContactosPreview, AEditor); + AEditor.LoadFromStream(AStream); + finally + AStream.Free; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.Print +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uFichasEmpleadoReportController.pas b/Source/Modulos/Contactos/Controller/uFichasEmpleadoReportController.pas new file mode 100644 index 00000000..a0fd19bb --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uFichasEmpleadoReportController.pas @@ -0,0 +1,102 @@ +unit uFichasEmpleadoReportController; + +interface + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleFichasEmpleadoReport, + uEmpleadosController; + +type + IFichasEmpleadoReportController = interface + ['{8E43F55F-7D5A-4778-8523-7C105EAEB1AB}'] + procedure Preview(const AFichaID : String); + procedure Print(const AFichaID : String); + end; + + TFichasEmpleadoReportController = class(TInterfacedObject, IFichasEmpleadoReportController) + private + FDataModule : IDataModuleFichasEmpleadoReport; + function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; + public + constructor Create; + destructor Destroy; override; + + procedure Preview(const AFichaID : String); + procedure Print(const AFichaID : String); + end; + + +implementation + +uses + uROTypes, uEditorRegistryUtils, uIEditorFichasEmpleadoPreview, + uEditorPreview, uDataModuleEmpleados, uEditorBase, cxControls; + +{ TFichasEmpleadoReportController } + +constructor TFichasEmpleadoReportController.Create; +begin + FDataModule := TDataModuleEmpleados.Create(Nil); +end; + +function TFichasEmpleadoReportController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + + +destructor TFichasEmpleadoReportController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +procedure TFichasEmpleadoReportController.Preview(const AFichaID : String); +var + AStream: Binary; + AEditor : IEditorFichasEmpleadoPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetReport(AFichaID); + try + CreateEditor('EditorFichasEmpleadoPreview', IEditorFichasEmpleadoPreview, AEditor); + AEditor.LoadFromStream(AStream); + finally + AStream.Free; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.Preview; +end; + +procedure TFichasEmpleadoReportController.Print(const AFichaID : String); +var + AStream: Binary; + AEditor : IEditorFichasEmpleadoPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetReport(AFichaID); + try + CreateEditor('EditorFichasEmpleadoPreview', IEditorFichasEmpleadoPreview, AEditor); + AEditor.LoadFromStream(AStream); + finally + AStream.Free; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + AEditor.Print +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uGruposClienteController.pas b/Source/Modulos/Contactos/Controller/uGruposClienteController.pas new file mode 100644 index 00000000..29ffa3b9 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uGruposClienteController.pas @@ -0,0 +1,230 @@ +unit uGruposClienteController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, + uIDataModuleClientes, uBizGruposCliente; + +type + IGruposClienteController = interface(IObservador) + ['{32D31B02-76A6-4C9B-85D4-3C632969AC79}'] + function BuscarTodos: IBizGrupoCliente; + procedure VerTodos(AGruposCliente: IBizGrupoCliente); + procedure Anadir(AGrupoCliente : IBizGrupoCliente); + function Eliminar(AGrupoCliente : IBizGrupoCliente): Boolean; + function Guardar(AGrupoCliente : IBizGrupoCliente): Boolean; + procedure DescartarCambios(AGrupoCliente : IBizGrupoCliente); + function Localizar(AGruposCliente: IBizGrupoCliente; ADescripcion:String): Boolean; + function DarListaGruposCliente: TStringList; + end; + + TGruposClienteController = class(TObservador, IGruposClienteController) + protected + FDataModule : IDataModuleClientes; + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + function ValidarGrupoCliente(AGrupoCliente: IBizGrupoCliente): Boolean; + procedure AsignarDataModule; virtual; + public + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(AGrupoCliente : IBizGrupoCliente): Boolean; + function Guardar(AGrupoCliente : IBizGrupoCliente): Boolean; + procedure DescartarCambios(AGrupoCliente : IBizGrupoCliente); virtual; + procedure Anadir(AGrupoCliente : IBizGrupoCliente); + function BuscarTodos: IBizGrupoCliente; + procedure VerTodos(AGruposCliente: IBizGrupoCliente); + function Localizar(AGruposCliente: IBizGrupoCliente; ADescripcion:String): Boolean; + function DarListaGruposCliente: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, + uIEditorGruposCliente, uDataModuleClientes, + uDAInterfaces, uDataTableUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf; + +{ TGruposClienteController } + +procedure TGruposClienteController.Anadir(AGrupoCliente: IBizGrupoCliente); +begin + AGrupoCliente.Insert; +end; + +procedure TGruposClienteController.AsignarDataModule; +begin + FDataModule := TDataModuleClientes.Create(Nil); +end; + +function TGruposClienteController.BuscarTodos: IBizGrupoCliente; +begin + Result := FDataModule.GetGruposCliente; +end; + +constructor TGruposClienteController.Create; +begin + AsignarDataModule; +end; + +function TGruposClienteController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TGruposClienteController.DarListaGruposCliente: TStringList; +var + AGruposCliente: IBizGrupoCliente; +begin + AGruposCliente := BuscarTodos; + AGruposCliente.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + AGruposCliente.DataTable.First; + while not AGruposCliente.DataTable.EOF do + begin + Add(AGruposCliente.DESCRIPCION); + AGruposCliente.DataTable.Next; + end; + end; + finally + AGruposCliente := NIL; + end; +end; + +procedure TGruposClienteController.DescartarCambios(AGrupoCliente: IBizGrupoCliente); +begin + if not Assigned(AGrupoCliente) then + raise Exception.Create ('GrupoCliente no asignado'); + + ShowHourglassCursor; + try + if (AGrupoCliente.State in dsEditModes) then + AGrupoCliente.Cancel; + + AGrupoCliente.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TGruposClienteController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TGruposClienteController.ValidarGrupoCliente(AGrupoCliente: IBizGrupoCliente): Boolean; +begin + Result := False; + + if not Assigned(AGrupoCliente) then + raise Exception.Create ('GrupoCliente no asignada'); + + if (AGrupoCliente.DataTable.State in dsEditModes) then + AGrupoCliente.DataTable.Post; + + if Length(AGrupoCliente.DESCRIPCION) = 0 then + raise Exception.Create('Debe indicar al menos la descripcin de este grupo.'); + + Result := True; +end; + +procedure TGruposClienteController.VerTodos(AGruposCliente: IBizGrupoCliente); +var + AEditor : IEditorGruposCliente; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorGruposCliente', IEditorGruposCliente, AEditor); + with AEditor do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + GruposCliente := AGruposCliente; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +function TGruposClienteController.Eliminar(AGrupoCliente: IBizGrupoCliente): Boolean; +begin + Result := False; + + if not Assigned(AGrupoCliente) then + raise Exception.Create ('GrupoCliente no asignada'); + + ShowHourglassCursor; + try + if (AGrupoCliente.State in dsEditModes) then + AGrupoCliente.Cancel; + + AGrupoCliente.Delete; + AGrupoCliente.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TGruposClienteController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TGruposClienteController.Guardar(AGrupoCliente: IBizGrupoCliente): Boolean; +begin + Result := False; + + if ValidarGrupoCliente(AGrupoCliente) then + begin + ShowHourglassCursor; + try + if (AGrupoCliente.DataTable.State in dsEditModes) then + AGrupoCliente.DataTable.Post; + + AGrupoCliente.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TGruposClienteController.Localizar(AGruposCliente: IBizGrupoCliente; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AGruposCliente.DataTable do + begin + DisableControls; + First; + if not Locate(fld_GruposClienteDESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uGruposEmpleadoController.pas b/Source/Modulos/Contactos/Controller/uGruposEmpleadoController.pas new file mode 100644 index 00000000..4a1cae1f --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uGruposEmpleadoController.pas @@ -0,0 +1,230 @@ +unit uGruposEmpleadoController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, + uIDataModuleEmpleados, uBizGruposEmpleado; + +type + IGruposEmpleadoController = interface(IObservador) + ['{6820BA19-5E5E-459F-9001-FB4A712ACC4C}'] + function BuscarTodos: IBizGrupoEmpleado; + procedure VerTodos(AGruposEmpleado: IBizGrupoEmpleado); + procedure Anadir(AGrupoEmpleado : IBizGrupoEmpleado); + function Eliminar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean; + function Guardar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean; + procedure DescartarCambios(AGrupoEmpleado : IBizGrupoEmpleado); + function Localizar(AGruposEmpleado: IBizGrupoEmpleado; ADescripcion:String): Boolean; + function DarListaGruposEmpleado: TStringList; + end; + + TGruposEmpleadoController = class(TObservador, IGruposEmpleadoController) + protected + FDataModule : IDataModuleEmpleados; + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + function ValidarGrupoEmpleado(AGrupoEmpleado: IBizGrupoEmpleado): Boolean; + procedure AsignarDataModule; virtual; + public + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean; + function Guardar(AGrupoEmpleado : IBizGrupoEmpleado): Boolean; + procedure DescartarCambios(AGrupoEmpleado : IBizGrupoEmpleado); virtual; + procedure Anadir(AGrupoEmpleado : IBizGrupoEmpleado); + function BuscarTodos: IBizGrupoEmpleado; + procedure VerTodos(AGruposEmpleado: IBizGrupoEmpleado); + function Localizar(AGruposEmpleado: IBizGrupoEmpleado; ADescripcion:String): Boolean; + function DarListaGruposEmpleado: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, + uIEditorGruposEmpleado, uDataModuleEmpleados, + uDAInterfaces, uDataTableUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf; + +{ TGruposEmpleadoController } + +procedure TGruposEmpleadoController.Anadir(AGrupoEmpleado: IBizGrupoEmpleado); +begin + AGrupoEmpleado.Insert; +end; + +procedure TGruposEmpleadoController.AsignarDataModule; +begin + FDataModule := TDataModuleEmpleados.Create(Nil); +end; + +function TGruposEmpleadoController.BuscarTodos: IBizGrupoEmpleado; +begin + Result := FDataModule.GetGruposEmpleado; +end; + +constructor TGruposEmpleadoController.Create; +begin + AsignarDataModule; +end; + +function TGruposEmpleadoController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TGruposEmpleadoController.DarListaGruposEmpleado: TStringList; +var + AGruposEmpleado: IBizGrupoEmpleado; +begin + AGruposEmpleado := BuscarTodos; + AGruposEmpleado.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + AGruposEmpleado.DataTable.First; + while not AGruposEmpleado.DataTable.EOF do + begin + Add(AGruposEmpleado.DESCRIPCION); + AGruposEmpleado.DataTable.Next; + end; + end; + finally + AGruposEmpleado := NIL; + end; +end; + +procedure TGruposEmpleadoController.DescartarCambios(AGrupoEmpleado: IBizGrupoEmpleado); +begin + if not Assigned(AGrupoEmpleado) then + raise Exception.Create ('GrupoEmpleado no asignado'); + + ShowHourglassCursor; + try + if (AGrupoEmpleado.State in dsEditModes) then + AGrupoEmpleado.Cancel; + + AGrupoEmpleado.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TGruposEmpleadoController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TGruposEmpleadoController.ValidarGrupoEmpleado(AGrupoEmpleado: IBizGrupoEmpleado): Boolean; +begin + Result := False; + + if not Assigned(AGrupoEmpleado) then + raise Exception.Create ('GrupoEmpleado no asignada'); + + if (AGrupoEmpleado.DataTable.State in dsEditModes) then + AGrupoEmpleado.DataTable.Post; + + if Length(AGrupoEmpleado.DESCRIPCION) = 0 then + raise Exception.Create('Debe indicar al menos la descripcin de este grupo.'); + + Result := True; +end; + +procedure TGruposEmpleadoController.VerTodos(AGruposEmpleado: IBizGrupoEmpleado); +var + AEditor : IEditorGruposEmpleado; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorGruposEmpleado', IEditorGruposEmpleado, AEditor); + with AEditor do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + GruposEmpleado := AGruposEmpleado; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +function TGruposEmpleadoController.Eliminar(AGrupoEmpleado: IBizGrupoEmpleado): Boolean; +begin + Result := False; + + if not Assigned(AGrupoEmpleado) then + raise Exception.Create ('GrupoEmpleado no asignada'); + + ShowHourglassCursor; + try + if (AGrupoEmpleado.State in dsEditModes) then + AGrupoEmpleado.Cancel; + + AGrupoEmpleado.Delete; + AGrupoEmpleado.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TGruposEmpleadoController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TGruposEmpleadoController.Guardar(AGrupoEmpleado: IBizGrupoEmpleado): Boolean; +begin + Result := False; + + if ValidarGrupoEmpleado(AGrupoEmpleado) then + begin + ShowHourglassCursor; + try + if (AGrupoEmpleado.DataTable.State in dsEditModes) then + AGrupoEmpleado.DataTable.Post; + + AGrupoEmpleado.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TGruposEmpleadoController.Localizar(AGruposEmpleado: IBizGrupoEmpleado; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AGruposEmpleado.DataTable do + begin + DisableControls; + First; + if not Locate(fld_GruposEmpleadoDESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uGruposProveedorController.pas b/Source/Modulos/Contactos/Controller/uGruposProveedorController.pas new file mode 100644 index 00000000..aeb991a5 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uGruposProveedorController.pas @@ -0,0 +1,230 @@ +unit uGruposProveedorController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, + uIDataModuleProveedores, uBizGruposProveedor; + +type + IGruposProveedorController = interface(IObservador) + ['{20B27FB1-ECEA-40B6-9869-5F5EC700EEDD}'] + function BuscarTodos: IBizGrupoProveedor; + procedure VerTodos(AGruposProveedor: IBizGrupoProveedor); + procedure Anadir(AGrupoProveedor : IBizGrupoProveedor); + function Eliminar(AGrupoProveedor : IBizGrupoProveedor): Boolean; + function Guardar(AGrupoProveedor : IBizGrupoProveedor): Boolean; + procedure DescartarCambios(AGrupoProveedor : IBizGrupoProveedor); + function Localizar(AGruposProveedor: IBizGrupoProveedor; ADescripcion:String): Boolean; + function DarListaGruposProveedor: TStringList; + end; + + TGruposProveedorController = class(TObservador, IGruposProveedorController) + protected + FDataModule : IDataModuleProveedores; + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + function ValidarGrupoProveedor(AGrupoProveedor: IBizGrupoProveedor): Boolean; + procedure AsignarDataModule; virtual; + public + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(AGrupoProveedor : IBizGrupoProveedor): Boolean; + function Guardar(AGrupoProveedor : IBizGrupoProveedor): Boolean; + procedure DescartarCambios(AGrupoProveedor : IBizGrupoProveedor); virtual; + procedure Anadir(AGrupoProveedor : IBizGrupoProveedor); + function BuscarTodos: IBizGrupoProveedor; + procedure VerTodos(AGruposProveedor: IBizGrupoProveedor); + function Localizar(AGruposProveedor: IBizGrupoProveedor; ADescripcion:String): Boolean; + function DarListaGruposProveedor: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, + uIEditorGruposProveedor, uDataModuleProveedores, + uDAInterfaces, uDataTableUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows, schContactosClient_Intf; + +{ TGruposProveedorController } + +procedure TGruposProveedorController.Anadir(AGrupoProveedor: IBizGrupoProveedor); +begin + AGrupoProveedor.Insert; +end; + +procedure TGruposProveedorController.AsignarDataModule; +begin + FDataModule := TDataModuleProveedores.Create(Nil); +end; + +function TGruposProveedorController.BuscarTodos: IBizGrupoProveedor; +begin + Result := FDataModule.GetGruposProveedor; +end; + +constructor TGruposProveedorController.Create; +begin + AsignarDataModule; +end; + +function TGruposProveedorController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TGruposProveedorController.DarListaGruposProveedor: TStringList; +var + AGruposProveedor: IBizGrupoProveedor; +begin + AGruposProveedor := BuscarTodos; + AGruposProveedor.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + AGruposProveedor.DataTable.First; + while not AGruposProveedor.DataTable.EOF do + begin + Add(AGruposProveedor.DESCRIPCION); + AGruposProveedor.DataTable.Next; + end; + end; + finally + AGruposProveedor := NIL; + end; +end; + +procedure TGruposProveedorController.DescartarCambios(AGrupoProveedor: IBizGrupoProveedor); +begin + if not Assigned(AGrupoProveedor) then + raise Exception.Create ('GrupoProveedor no asignado'); + + ShowHourglassCursor; + try + if (AGrupoProveedor.State in dsEditModes) then + AGrupoProveedor.Cancel; + + AGrupoProveedor.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TGruposProveedorController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TGruposProveedorController.ValidarGrupoProveedor(AGrupoProveedor: IBizGrupoProveedor): Boolean; +begin + Result := False; + + if not Assigned(AGrupoProveedor) then + raise Exception.Create ('GrupoProveedor no asignada'); + + if (AGrupoProveedor.DataTable.State in dsEditModes) then + AGrupoProveedor.DataTable.Post; + + if Length(AGrupoProveedor.DESCRIPCION) = 0 then + raise Exception.Create('Debe indicar al menos la descripcin de este grupo.'); + + Result := True; +end; + +procedure TGruposProveedorController.VerTodos(AGruposProveedor: IBizGrupoProveedor); +var + AEditor : IEditorGruposProveedor; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorGruposProveedor', IEditorGruposProveedor, AEditor); + with AEditor do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + GruposProveedor := AGruposProveedor; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +function TGruposProveedorController.Eliminar(AGrupoProveedor: IBizGrupoProveedor): Boolean; +begin + Result := False; + + if not Assigned(AGrupoProveedor) then + raise Exception.Create ('GrupoProveedor no asignada'); + + ShowHourglassCursor; + try + if (AGrupoProveedor.State in dsEditModes) then + AGrupoProveedor.Cancel; + + AGrupoProveedor.Delete; + AGrupoProveedor.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TGruposProveedorController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TGruposProveedorController.Guardar(AGrupoProveedor: IBizGrupoProveedor): Boolean; +begin + Result := False; + + if ValidarGrupoProveedor(AGrupoProveedor) then + begin + ShowHourglassCursor; + try + if (AGrupoProveedor.DataTable.State in dsEditModes) then + AGrupoProveedor.DataTable.Post; + + AGrupoProveedor.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TGruposProveedorController.Localizar(AGruposProveedor: IBizGrupoProveedor; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AGruposProveedor.DataTable do + begin + DisableControls; + First; + if not Locate(fld_GruposProveedorDESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Controller/uProveedoresController.pas b/Source/Modulos/Contactos/Controller/uProveedoresController.pas new file mode 100644 index 00000000..0e311c94 --- /dev/null +++ b/Source/Modulos/Contactos/Controller/uProveedoresController.pas @@ -0,0 +1,319 @@ +unit uProveedoresController; + +interface + +uses + uCustomEditor, + uContactosController, uBizContactos, uBizDireccionesContacto, uDireccionesContactoController, + uIEditorProveedores, uIEditorProveedor, uIDataModuleContactos, uIDataModuleProveedores; + +type + IProveedoresController = interface(IContactosController) + ['{50F10D01-5120-470D-A61D-99FE8A76DF93}'] + function BuscarTodosTiendaWeb: IBizProveedor; + function ElegirDireccionEntrega(ADirecciones: IBizDireccionesContacto; AMensaje: String): IBizDireccionesContacto; + function EsEliminable(AProveedor: IBizContacto): Boolean; + function Eliminar(AProveedor: IBizContacto; AllItems: Boolean = false): Boolean; overload; + procedure Preview(AProveedor : IBizProveedor; AllItems: Boolean = false); + procedure Print(AProveedor : IBizProveedor; AllItems: Boolean = false); + end; + + TProveedoresController = class(TContactosController, IProveedoresController) + protected + FDireccionesController : IDireccionesContactoController; + + public + constructor Create; override; + destructor Destroy; override; + + function Buscar(const ID: Integer): IBizContacto; override; + function BuscarTodos: IBizContacto; override; + function BuscarTodosTiendaWeb: IBizProveedor; + function Nuevo : IBizContacto; override; + procedure Ver(AContacto : IBizContacto); override; + procedure VerTodos(AContactos: IBizContacto); override; + function ElegirContacto(AContactos : IBizContacto; + AMensaje: String; AMultiSelect: Boolean): IBizContacto; override; + function ElegirDireccionEntrega(ADirecciones: IBizDireccionesContacto; + AMensaje: String): IBizDireccionesContacto; + function EsEliminable(AProveedor: IBizContacto): Boolean; + function Eliminar(AProveedor: IBizContacto; AllItems: Boolean = false): Boolean; overload; + procedure Preview(AProveedor : IBizProveedor; AllItems: Boolean = false); + procedure Print(AProveedor : IBizProveedor; AllItems: Boolean = false); + end; + +implementation + +uses + Classes, SysUtils, cxControls, Dialogs, uDataModuleProveedores, uEditorRegistryUtils, + uDataTableUtils, uDADataTable, DB, schContactosClient_Intf, uEtiquetasContactosReportController, + uIEditorElegirProveedores, Controls, uIEditorElegirDireccionEntrega, + uEditorGridBase; + +{ TProveedoresController } + +function TProveedoresController.Buscar(const ID: Integer): IBizContacto; +begin + Result := (FDataModule as IDataModuleProveedores).GetItem(ID); + FiltrarEmpresa(Result); +end; + +function TProveedoresController.BuscarTodos: IBizContacto; +begin + Result := (FDataModule as IDataModuleProveedores).GetItems; + FiltrarEmpresa(Result); +end; + +function TProveedoresController.BuscarTodosTiendaWeb: IBizProveedor; +begin + Result := (FDataModule as IDataModuleProveedores).GetItemsTiendaWeb; + FiltrarEmpresa(Result); +end; + +constructor TProveedoresController.Create; +begin + inherited; + FDataModule := TDataModuleProveedores.Create(Nil); + FDireccionesController := TDireccionesContactoController.Create; +end; + +destructor TProveedoresController.Destroy; +begin + FDireccionesController := NIL; + inherited; +end; + +function TProveedoresController.ElegirContacto(AContactos: IBizContacto; + AMensaje: String; AMultiSelect: Boolean): IBizContacto; +var + AEditor : IEditorElegirProveedores; +begin + Result := NIL; + + CreateEditor('EditorElegirProveedores', IEditorElegirProveedores, AEditor); + try + with AEditor do + begin + Contactos := AContactos; + Controller := Self; + MultiSelect := AMultiSelect; + Mensaje := AMensaje; + if IsPositiveResult(ShowModal) then + Result := ContactosSeleccionados; + Release; + end; + finally + AEditor := NIL; + end; +end; + +function TProveedoresController.ElegirDireccionEntrega( + ADirecciones: IBizDireccionesContacto; + AMensaje: String): IBizDireccionesContacto; +var + AEditor : IEditorElegirDireccionEntrega; +begin + Result := NIL; + + CreateEditor('EditorElegirDireccionEntrega', IEditorElegirDireccionEntrega, AEditor); + try + with AEditor do + begin + Direccion := ADirecciones; + Mensaje := AMensaje; + if IsPositiveResult(ShowModal) then + Result := DireccionSeleccionada; + Release; + end; + finally + AEditor := NIL; + end; +end; + +function TProveedoresController.Eliminar(AProveedor: IBizContacto; AllItems: Boolean): Boolean; +//En el caso de eliminar almenos un elemento del conjunto se devuelve true +var + bEliminado: Boolean; + +begin + Result := False; + + if not Assigned(AProveedor) then + raise Exception.Create ('Contacto no asignado'); + + ShowHourglassCursor; + try + if not AProveedor.DataTable.Active then + AProveedor.DataTable.Active := True; + + if (AProveedor.State in dsEditModes) then + AProveedor.Cancel; + + //Siempre eliminaremos el seleccionado + if EsEliminable(AProveedor) then + begin + AProveedor.Delete; + bEliminado := True; + end; + + //En el caso de querer eliminar todos los items del objeto AProveedor + if AllItems then + begin + with AProveedor.DataTable do + begin + First; + while not EOF do + begin + if EsEliminable(AProveedor) then + begin + AProveedor.Delete; + bEliminado := True + end + else Next; + end; + end; + end; + + if bEliminado then + begin + AProveedor.DataTable.ApplyUpdates; + Result := True; + end + else + Result := False; + + finally + HideHourglassCursor; + end; +end; + +function TProveedoresController.EsEliminable(AProveedor: IBizContacto): Boolean; +begin + if not Assigned(AProveedor) then + raise Exception.Create ('Contacto no asignado: EsEliminable'); + + Result := True; +end; + +function TProveedoresController.Nuevo: IBizContacto; +var + AContacto : IBizProveedor; +begin + AContacto := (FDataModule as IDataModuleProveedores).NewItem; + FiltrarEmpresa(AContacto); + AContacto.DataTable.Active := True; + AContacto.Insert; + Result := AContacto; +end; + +procedure TProveedoresController.Preview(AProveedor: IBizProveedor; AllItems: Boolean); +var + AReportController : IEtiquetasContactosReportController; + ListaID: TStringList; + +begin + AReportController := TEtiquetasContactosReportController.Create; + try + ListaID := TStringList.Create; + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AProveedor.DataTable do + begin + First; + while not EOF do + begin + ListaID.Add(IntToStr(AProveedor.ID)); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ListaID.Add(IntToStr(AProveedor.ID)); + + AReportController.Preview(ListaID.CommaText); + + finally + AReportController := NIL; + ListaID.Free; + end; +end; + +procedure TProveedoresController.Print(AProveedor: IBizProveedor; AllItems: Boolean); +var + AReportController : IEtiquetasContactosReportController; + ListaID: TStringList; + +begin + AReportController := TEtiquetasContactosReportController.Create; + try + ListaID := TStringList.Create; + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AProveedor.DataTable do + begin + First; + while not EOF do + begin + ListaID.Add(IntToStr(AProveedor.ID)); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ListaID.Add(IntToStr(AProveedor.ID)); + + AReportController.Print(ListaID.CommaText); + + finally + AReportController := NIL; + ListaID.Free; + end; +end; + +procedure TProveedoresController.Ver(AContacto: IBizContacto); +var + AEditor : IEditorProveedor; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorProveedor', IEditorProveedor, AEditor); + with AEditor do + begin + Contacto := AContacto; + Controller := Self; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TProveedoresController.VerTodos(AContactos: IBizContacto); +var + AEditor : IEditorProveedores; +begin + CreateEditor('EditorProveedores', IEditorProveedores, AEditor); + with AEditor do + begin + Contactos := AContactos; + Controller := Self; + MultiSelect := True; + ShowEmbedded; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Data/Contactos_data.bdsproj b/Source/Modulos/Contactos/Data/Contactos_data.bdsproj new file mode 100644 index 00000000..cc721200 --- /dev/null +++ b/Source/Modulos/Contactos/Data/Contactos_data.bdsproj @@ -0,0 +1,493 @@ + + + + + + + + + + + + Contactos_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + False + diff --git a/Source/Modulos/Contactos/Data/Contactos_data.dpk b/Source/Modulos/Contactos/Data/Contactos_data.dpk new file mode 100644 index 00000000..36692c4d --- /dev/null +++ b/Source/Modulos/Contactos/Data/Contactos_data.dpk @@ -0,0 +1,54 @@ +package Contactos_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} +{%TogetherDiagram 'ModelSupport_Contactos_data\default.txaPackage'} + +requires + rtl, + vcl, + dbrtl, + dsnap, + vcldb, + DataAbstract_D10, + adortl, + vcljpg, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + Base, + Usuarios, + Contactos_model; + +contains + uDataModuleContactos in 'uDataModuleContactos.pas' {DataModuleContactos: TDAClientDataModule}, + uDataModuleClientes in 'uDataModuleClientes.pas' {DataModuleClientes : TDAClientDataModule}, + uDataModuleProveedores in 'uDataModuleProveedores.pas' {DataModuleProveedores: TDAClientDataModule}, + uDataModuleEmpleados in 'uDataModuleEmpleados.pas' {DataModuleEmpleados: TDAClientDataModule}; + +end. diff --git a/Source/Modulos/Contactos/Data/Contactos_data.dproj b/Source/Modulos/Contactos/Data/Contactos_data.dproj new file mode 100644 index 00000000..14b1e409 --- /dev/null +++ b/Source/Modulos/Contactos/Data/Contactos_data.dproj @@ -0,0 +1,609 @@ + + + {13ceca01-95fe-4f1e-80ed-6dcc5ef31c88} + Contactos_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Contactos_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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + Contactos_data.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + +
DataModuleClientes
+
+ +
DataModuleContactos
+
+ +
DataModuleEmpleados
+
+ +
DataModuleProveedores
+
+
+ +
+ + diff --git a/Source/Modulos/Contactos/Data/Contactos_data.drc b/Source/Modulos/Contactos/Data/Contactos_data.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Data/Contactos_data.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Data/Contactos_data.rc b/Source/Modulos/Contactos/Data/Contactos_data.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Contactos/Data/Contactos_data.res b/Source/Modulos/Contactos/Data/Contactos_data.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Contactos/Data/Contactos_data.res differ diff --git a/Source/Modulos/Contactos/Data/tbx_d10.drc b/Source/Modulos/Contactos/Data/tbx_d10.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Data/tbx_d10.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm b/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm new file mode 100644 index 00000000..78190c09 --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleClientes.dfm @@ -0,0 +1,358 @@ +inherited DataModuleClientes: TDataModuleClientes + Height = 433 + Width = 705 + inherited ds_Contactos: TDADataSource + DataSet = tbl_Contactos.Dataset + end + inherited ds_ContactosCategorias: TDADataSource + DataSet = tbl_ContactosCategorias.Dataset + end + inherited ds_DatosBancarios: TDADataSource + DataSet = tbl_DatosBancarios.Dataset + end + inherited ds_DireccionesContacto: TDADataSource + DataSet = tbl_DireccionesContacto.Dataset + end + inherited rda_Contactos: TDARemoteDataAdapter + Top = 79 + end + object tbl_Clientes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + DisplayLabel = 'Contactos_ID_CATEGORIA' + DictionaryEntry = 'Contactos_ID_CATEGORIA' + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DisplayLabel = 'NIF/CIF' + DictionaryEntry = 'Contactos_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + DictionaryEntry = 'Contactos_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Direcci'#243'n' + DictionaryEntry = 'Contactos_CALLE' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DisplayLabel = 'Persona de contacto' + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + DictionaryEntry = 'Contactos_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + DictionaryEntry = 'Contactos_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'digo postal' + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. trabajo' + DictionaryEntry = 'Contactos_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. particular' + DictionaryEntry = 'Contactos_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil' + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail trabajo' + DictionaryEntry = 'Contactos_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail particular' + DictionaryEntry = 'Contactos_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DisplayLabel = 'Web' + DictionaryEntry = 'Contactos_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DisplayLabel = 'Observaciones' + DictionaryEntry = 'Contactos_NOTAS' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DisplayLabel = 'Usuario' + DictionaryEntry = 'Contactos_USUARIO' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_EMPRESA' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Clientes_REFERENCIA' + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + DictionaryEntry = 'Clientes_ID_TIPO_IVA' + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + DisplayLabel = 'R'#233'gimen de IVA' + DictionaryEntry = 'Clientes_REGIMEN_IVA' + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + DictionaryEntry = 'Clientes_ID_FORMA_PAGO' + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + DictionaryEntry = 'Clientes_TIENDA_WEB' + end + item + Name = 'RECARGO_EQUIVALENCIA' + DataType = datInteger + DisplayLabel = 'Rec. equiv.' + DictionaryEntry = 'Clientes_RECARGO_EQUIVALENCIA' + end + item + Name = 'GRUPO_CLIENTE' + DataType = datString + Size = 255 + DisplayLabel = 'Grupo de cliente' + DictionaryEntry = 'Clientes_GRUPO_CLIENTE' + end + item + Name = 'NOMBRE_COMERCIAL' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre comercial' + DictionaryEntry = 'Clientes_NOMBRE_COMERCIAL' + end + item + Name = 'VENCIMIENTO_FACTURAS' + DataType = datInteger + DisplayLabel = 'Vencimiento' + DictionaryEntry = 'Clientes_VENCIMIENTO_FACTURAS' + end + item + Name = 'BLOQUEADO' + DataType = datInteger + DisplayLabel = #191'Bloqueado?' + DictionaryEntry = 'Clientes_BLOQUEADO' + end + item + Name = 'MOTIVO_BLOQUEO' + DataType = datString + Size = 255 + DisplayLabel = 'Motivo del bloqueo' + DictionaryEntry = 'Clientes_MOTIVO_BLOQUEO' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_clientes + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Clientes' + IndexDefs = <> + Left = 288 + Top = 184 + end + object ds_Clientes: TDADataSource + DataSet = tbl_Clientes.Dataset + DataTable = tbl_Clientes + Left = 288 + Top = 304 + end + object tbl_ClientesDescuentos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'ClientesDescuentos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CLIENTE' + DataType = datInteger + DisplayLabel = 'ClientesDescuentos_ID_CLIENTE' + DictionaryEntry = 'ClientesDescuentos_ID_CLIENTE' + end + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + DisplayLabel = 'ClientesDescuentos_ID_PROVEEDOR' + DictionaryEntry = 'ClientesDescuentos_ID_PROVEEDOR' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'ClientesDescuentos_NOMBRE' + ServerAutoRefresh = True + end + item + Name = 'DESCUENTO' + DataType = datFloat + DisplayLabel = 'Descuento (%)' + Alignment = taRightJustify + DictionaryEntry = 'ClientesDescuentos_DESCUENTO' + end> + Params = < + item + Name = 'ID_CLIENTE' + DataType = datInteger + Value = 1018 + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ID_CLIENTE=ID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_clientesDescuentos + MasterSource = ds_Clientes + MasterFields = 'ID' + DetailFields = 'ID_CLIENTE' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ClientesDescuentos' + IndexDefs = <> + Left = 392 + Top = 184 + end + object ds_ClientesDescuentos: TDADataSource + DataSet = tbl_ClientesDescuentos.Dataset + DataTable = tbl_ClientesDescuentos + Left = 384 + Top = 304 + end + object tbl_GruposCliente: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_GruposCliente + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'GruposCliente' + IndexDefs = <> + Left = 512 + Top = 184 + end + object ds_GruposCliente: TDADataSource + DataSet = tbl_GruposCliente.Dataset + DataTable = tbl_GruposCliente + Left = 512 + Top = 304 + end + object rda_clientes: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 291 + Top = 239 + end + object rda_clientesDescuentos: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 395 + Top = 239 + end + object rda_GruposCliente: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 515 + Top = 239 + end +end diff --git a/Source/Modulos/Contactos/Data/uDataModuleClientes.pas b/Source/Modulos/Contactos/Data/uDataModuleClientes.pas new file mode 100644 index 00000000..74abeab0 --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleClientes.pas @@ -0,0 +1,163 @@ +unit uDataModuleClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + DB, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, + uROClient, uROBinMessage, uROWinInetHttpChannel, uBizClientesDescuentos, + uBizGruposCliente, uBizContactos, uDataModuleContactos, + uIDataModuleClientes, uDADesigntimeCall, uDARemoteDataAdapter, + uDADataStreamer, uRODynamicRequest, uDAInterfaces; + +type + TDataModuleClientes = class(TDataModuleContactos, IDataModuleClientes) + tbl_Clientes: TDACDSDataTable; + ds_Clientes: TDADataSource; + tbl_ClientesDescuentos: TDACDSDataTable; + ds_ClientesDescuentos: TDADataSource; + tbl_GruposCliente: TDACDSDataTable; + ds_GruposCliente: TDADataSource; + rda_clientes: TDARemoteDataAdapter; + rda_clientesDescuentos: TDARemoteDataAdapter; + rda_GruposCliente: TDARemoteDataAdapter; + protected + function _GetDescuentos: IBizClienteDescuentos; + public + function GetItem(const ID : Integer) : IBizCliente; + function NewItem : IBizCliente; + function GetItems : IBizCliente; + function GetItemsTiendaWeb : IBizCliente; + function GetNextID(const DataSetName : String) : Integer; override; + function GetGruposCliente : IBizGrupoCliente; + end; + +implementation + +{$R *.dfm} + +uses + FactuGES_Intf, uBizContactosDatosBancarios, cxControls, uDAInterfaces, schContactosClient_Intf, + uDataTableUtils, Dialogs; + +{ TdmClientes } + +function TDataModuleClientes.GetGruposCliente: IBizGrupoCliente; +var + AGrupoCliente : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AGrupoCliente := _CloneDataTable(tbl_GruposCliente); + AGrupoCliente.BusinessRulesID := BIZ_CLIENT_GRUPOSCLIENTE; + Result := (AGrupoCliente as IBizGrupoCliente); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleClientes.GetItem(const ID: Integer): IBizCliente; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_ContactosID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleClientes.GetItems: IBizCliente; +var + AContacto : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AContacto := _CloneDataTable(tbl_Clientes); + AContacto.BusinessRulesID := BIZ_CLIENT_CLIENTE; + + with TBizCliente(AContacto.BusinessEventsObj) do + begin + DatosBancarios := _GetDatosBancarios; + Direcciones := _GetDirecciones; + Descuentos := _GetDescuentos; + _Categorias := _GetCategorias; + end; + + Result := (AContacto as IBizCliente); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleClientes.GetItemsTiendaWeb: IBizCliente; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_ClientesTIENDA_WEB + ' = 1'); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleClientes.GetNextID(const DataSetName: String): Integer; +var + aDataSet : String; + aGeneratorName : String; +begin + aDataSet := DataSetName; + + if aDataSet = nme_ClientesDescuentos then + begin + aGeneratorName := 'GEN_CLIENTES_DTOS_PROV_ID'; + Result := _InternalGetNextID(aGeneratorName); + Exit; + end; + + if aDataSet = nme_Clientes then + aDataSet := nme_Contactos; + + Result := inherited GetNextID(aDataSet); +end; + +function TDataModuleClientes.NewItem: IBizCliente; +begin + Result := GetItem(ID_NULO) +end; + +function TDataModuleClientes._GetDescuentos: IBizClienteDescuentos; +var + ADescuentos : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ADescuentos := _CloneDataTable(tbl_ClientesDescuentos); + with ADescuentos do + begin + BusinessRulesID := BIZ_CLIENT_CLIENTE_DESCUENTOS; + DetailOptions := DetailOptions - + [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (ADescuentos as IBizClienteDescuentos); + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm b/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm new file mode 100644 index 00000000..f1934dae --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleContactos.dfm @@ -0,0 +1,489 @@ +object DataModuleContactos: TDataModuleContactos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 420 + Width = 527 + object RORemoteService: TRORemoteService + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + ServiceName = 'srvContactos' + Left = 40 + Top = 16 + end + object tbl_Contactos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + DisplayLabel = 'Contactos_ID_CATEGORIA' + DictionaryEntry = 'Contactos_ID_CATEGORIA' + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DisplayLabel = 'NIF/CIF' + DictionaryEntry = 'Contactos_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + DictionaryEntry = 'Contactos_NOMBRE' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DisplayLabel = 'Persona de contacto' + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Direcci'#243'n' + DictionaryEntry = 'Contactos_CALLE' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + DictionaryEntry = 'Contactos_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + DictionaryEntry = 'Contactos_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'digo postal' + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. trabajo' + DictionaryEntry = 'Contactos_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. particular' + DictionaryEntry = 'Contactos_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil' + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail trabajo' + DictionaryEntry = 'Contactos_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail particular' + DictionaryEntry = 'Contactos_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DisplayLabel = 'Web' + DictionaryEntry = 'Contactos_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DisplayLabel = 'Observaciones' + DictionaryEntry = 'Contactos_NOTAS' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DisplayLabel = 'Usuario' + DictionaryEntry = 'Contactos_USUARIO' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_EMPRESA' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + DictionaryEntry = 'Contactos_REFERENCIA' + end> + Params = < + item + Name = 'ID_CATEGORIA' + DataType = datInteger + Value = '22' + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_Contactos + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Contactos' + IndexDefs = <> + Left = 168 + Top = 16 + end + object ds_Contactos: TDADataSource + DataSet = tbl_Contactos.Dataset + DataTable = tbl_Contactos + Left = 168 + Top = 128 + end + object tbl_ContactosCategorias: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + InPrimaryKey = True + end> + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '444' + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ID_CONTACTO=ID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_ContactosCategorias + MasterSource = ds_Contactos + MasterFields = 'ID' + DetailFields = 'ID_CONTACTO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ContactosCategorias' + IndexDefs = <> + Left = 288 + Top = 16 + end + object ds_ContactosCategorias: TDADataSource + DataSet = tbl_ContactosCategorias.Dataset + DataTable = tbl_ContactosCategorias + Left = 288 + Top = 128 + end + object tbl_DatosBancarios: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'DatosBancarios_ID' + InPrimaryKey = True + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + DictionaryEntry = 'DatosBancarios_ID_CONTACTO' + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + DisplayLabel = 'Titular' + DictionaryEntry = 'DatosBancarios_TITULAR' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'digo de entidad' + DictionaryEntry = 'DatosBancarios_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'digo de sucursal' + DictionaryEntry = 'DatosBancarios_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DisplayLabel = 'D'#237'gito de control' + DictionaryEntry = 'DatosBancarios_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'digo de cuenta' + DictionaryEntry = 'DatosBancarios_CUENTA' + end> + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ID_CONTACTO=ID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_DatosBancarios + MasterSource = ds_Contactos + MasterFields = 'ID' + DetailFields = 'ID_CONTACTO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DatosBancarios' + IndexDefs = <> + Left = 432 + Top = 16 + end + object ds_DatosBancarios: TDADataSource + DataSet = tbl_DatosBancarios.Dataset + DataTable = tbl_DatosBancarios + Left = 432 + Top = 128 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteService = LoginRemoteService + Params = <> + Left = 40 + Top = 176 + end + object LoginRemoteService: TRORemoteService + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + ServiceName = 'srvLogin' + Left = 40 + Top = 232 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + ServerLocators = <> + DispatchOptions = [] + Left = 40 + Top = 288 + end + object ROBinMessage1: TROBinMessage + Left = 40 + Top = 340 + end + object tbl_DireccionesContacto: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'DireccionesContacto_ID' + InPrimaryKey = True + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + DictionaryEntry = 'DireccionesContacto_ID_CONTACTO' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'DireccionesContacto_NOMBRE' + DictionaryEntry = 'DireccionesContacto_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Calle' + DictionaryEntry = 'DireccionesContacto_CALLE' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + DictionaryEntry = 'DireccionesContacto_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + DictionaryEntry = 'DireccionesContacto_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'digo postal' + DictionaryEntry = 'DireccionesContacto_CODIGO_POSTAL' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DisplayLabel = 'Persona de contacto' + DictionaryEntry = 'DireccionesContacto_PERSONA_CONTACTO' + end + item + Name = 'TELEFONO' + DataType = datString + Size = 25 + DisplayLabel = 'Tel'#233'fono' + DictionaryEntry = 'DireccionesContacto_TELEFONO' + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil' + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail' + DictionaryEntry = 'DireccionesContacto_EMAIL' + end + item + Name = 'NOTAS' + DataType = datMemo + DisplayLabel = 'Notas' + DictionaryEntry = 'DireccionesContacto_NOTAS' + end + item + Name = 'PORTE' + DataType = datFloat + DisplayLabel = 'Coste del porte' + DictionaryEntry = 'DireccionesContacto_PORTE' + end> + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '9' + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ID_CONTACTO=ID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_DireccionesContacto + MasterSource = ds_Contactos + MasterFields = 'ID' + DetailFields = 'ID_CONTACTO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DireccionesContacto' + IndexDefs = <> + Left = 168 + Top = 208 + end + object ds_DireccionesContacto: TDADataSource + DataSet = tbl_DireccionesContacto.Dataset + DataTable = tbl_DireccionesContacto + Left = 168 + Top = 264 + end + object DataStreamer: TDABinDataStreamer + Left = 40 + Top = 92 + end + object rda_Contactos: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 171 + Top = 71 + end + object rda_ContactosCategorias: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 291 + Top = 71 + end + object rda_DatosBancarios: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 427 + Top = 71 + end + object rda_DireccionesContacto: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 171 + Top = 319 + end +end diff --git a/Source/Modulos/Contactos/Data/uDataModuleContactos.pas b/Source/Modulos/Contactos/Data/uDataModuleContactos.pas new file mode 100644 index 00000000..5049510f --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleContactos.pas @@ -0,0 +1,194 @@ +unit uDataModuleContactos; + +interface + +uses + SysUtils, Classes, DB, DBClient, + uDAClientDataModule, uDADataTable, uDABINAdapter, + uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uBizContactos, uBizContactosDatosBancarios, uBizCategoriasContacto, + uBizDireccionesContacto, uIDataModuleEtiquetasContactosReport, + uIDataModuleContactos, uDADesigntimeCall, uROTypes, uRODynamicRequest, + uDAInterfaces, uDADataStreamer, uDARemoteDataAdapter; + +type + TDataModuleContactos = class(TDAClientDataModule, IDataModuleContactos, IDataModuleEtiquetasContactosReport) + RORemoteService: TRORemoteService; + tbl_Contactos: TDACDSDataTable; + ds_Contactos: TDADataSource; + tbl_ContactosCategorias: TDACDSDataTable; + ds_ContactosCategorias: TDADataSource; + tbl_DatosBancarios: TDACDSDataTable; + ds_DatosBancarios: TDADataSource; + DADesigntimeCall1: TDADesigntimeCall; + LoginRemoteService: TRORemoteService; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + ROBinMessage1: TROBinMessage; + tbl_DireccionesContacto: TDACDSDataTable; + ds_DireccionesContacto: TDADataSource; + DataStreamer: TDABinDataStreamer; + rda_Contactos: TDARemoteDataAdapter; + rda_ContactosCategorias: TDARemoteDataAdapter; + rda_DatosBancarios: TDARemoteDataAdapter; + rda_DireccionesContacto: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + protected + function _InternalGetNextID(const AGeneratorName : String) : Integer; + public + function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; + function _GetDatosBancarios : IBizContactosDatosBancarios; + function _GetDirecciones: IBizDireccionesContacto; + function _GetCategorias : IBizCategoriasContacto; + function _GetItems (IDCategoria : Integer): IBizContacto; virtual; + function GetNextID(const DataSetName : String) : Integer; virtual; + + // Report + function GetReport(const AContactosID: String): Binary; + end; + +implementation + +{$R *.DFM} + +uses + uDataTableUtils, uDataModuleConexion, cxControls, + FactuGES_Intf, uDataModuleUsuarios, schContactosClient_Intf, Dialogs, + uDAInterfaces; + +{ TdmContactos } + +procedure TDataModuleContactos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleContactos.GetNextID(const DataSetName: String): Integer; +var + aGeneratorName : String; +begin + if DataSetName = nme_Contactos then + aGeneratorName := 'GEN_CONTACTOS_ID'; + + if DataSetName = nme_DatosBancarios then + aGeneratorName := 'GEN_CONTACTOS_DATOS_BANCO_ID'; + + if DataSetName = nme_DireccionesContacto then + aGeneratorName := 'GEN_CONTACTOS_DIR_ID'; + + if DataSetName = nme_DireccionesContacto then + aGeneratorName := 'GEN_CONTACTOS_DIR_ID'; + + Result := _InternalGetNextID(aGeneratorName); +end; + +function TDataModuleContactos.GetReport(const AContactosID: String): Binary; +begin + Result := (RORemoteService as IsrvContactos).GenerateEtiquetasReport(AContactosID); +end; + +function TDataModuleContactos._CloneDataTable( + const ADataTable : TDACDSDataTable): TDACDSDataTable; +begin + Result := NIL; + + if not Assigned(ADataTable) then + raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); + + Result := TDACDSDataTable.Create(NIL); + CloneDataTable(ADataTable, Result); +end; + +function TDataModuleContactos._GetCategorias: IBizCategoriasContacto; +var + ACategorias : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ACategorias := _CloneDataTable(tbl_ContactosCategorias); + with ACategorias do + begin + BusinessRulesID := BIZ_CLIENT_CATEGORIAS_CONTACTO; + DetailOptions := DetailOptions - + [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (ACategorias as IBizCategoriasContacto); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleContactos._GetDatosBancarios: IBizContactosDatosBancarios; +var + ADatosBancarios : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ADatosBancarios := _CloneDataTable(tbl_DatosBancarios); + with ADatosBancarios do + begin + BusinessRulesID := BIZ_CLIENT_CONTACTOS_DATOS_BANCARIOS; + DetailOptions := DetailOptions - + [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (ADatosBancarios as IBizContactosDatosBancarios); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleContactos._GetDirecciones: IBizDireccionesContacto; +var + ADirecciones : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ADirecciones := _CloneDataTable(tbl_DireccionesContacto); + with ADirecciones do + begin + BusinessRulesID := BIZ_CLIENT_DIRECCIONES_CONTACTO; + DetailOptions := DetailOptions - + [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (ADirecciones as IBizDireccionesContacto); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleContactos._GetItems(IDCategoria: Integer): IBizContacto; +var + AContacto : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AContacto := _CloneDataTable(tbl_Contactos); + + with AContacto do + case IDCategoria of + CATEGORIA_CLIENTE : BusinessRulesID := BIZ_CLIENT_CLIENTE; + CATEGORIA_PROVEEDOR : BusinessRulesID := BIZ_CLIENT_PROVEEDOR; + CATEGORIA_EMPLEADO : BusinessRulesID := BIZ_CLIENT_EMPLEADO; + end; + + with TBizContacto(AContacto.BusinessEventsObj) do + begin + DatosBancarios := _GetDatosBancarios; + Direcciones := _GetDirecciones; + _Categorias := _GetCategorias; + end; + + Result := (AContacto as IBizContacto); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleContactos._InternalGetNextID( + const AGeneratorName: String): Integer; +begin + Result := (RORemoteService as IsrvContactos).GetNextAutoInc(AGeneratorName) +end; + +end. diff --git a/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm b/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm new file mode 100644 index 00000000..ba80b610 --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleEmpleados.dfm @@ -0,0 +1,587 @@ +inherited DataModuleEmpleados: TDataModuleEmpleados + object tbl_Empleados: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Contactos_ID_CATEGORIA' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_ID_CATEGORIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_NIF_CIF' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Nombre' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_NOMBRE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_CALLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Persona de contacto' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_POBLACION' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_PROVINCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'digo postal' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tlf. trabajo' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_TELEFONO_1' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tlf. particular' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_TELEFONO_2' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'M'#243'vil' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_MOVIL_1' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_MOVIL_2' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fax' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_FAX' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'E-mail trabajo' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_EMAIL_1' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'E-mail particular' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_EMAIL_2' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Web' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_PAGINA_WEB' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_NOTAS' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Usuario' + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_USUARIO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Contactos_ID_EMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + DictionaryEntry = 'Agentes_REFERENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Categor'#237'a' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_CATEGORIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_NACIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha nacimiento' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_FECHA_NACIMIENTO' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA_EMPRESA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de alta' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_FECHA_ALTA_EMPRESA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_BASE' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Formaci'#243'n base' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_FORMACION_BASE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_COMPLE' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Formaci'#243'n complementaria' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_FORMACION_COMPLE' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_RECIBIDA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Formaci'#243'n recibida' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_FORMACION_RECIBIDA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EXPERIENCIA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Experiencia' + Alignment = taLeftJustify + DictionaryEntry = 'Empleados_EXPERIENCIA' + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Empleados' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Empleados' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Empleados' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Empleados' + IndexDefs = <> + Left = 296 + Top = 176 + end + object ds_Empleados: TDADataSource + DataTable = tbl_Empleados + Left = 296 + Top = 248 + end + object tbl_GruposEmpleado: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'GruposEmpleado' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'GruposEmpleado' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'GruposEmpleado' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'GruposEmpleado' + IndexDefs = <> + Left = 432 + Top = 176 + end + object ds_GruposEmpleado: TDADataSource + DataTable = tbl_GruposEmpleado + Left = 432 + Top = 248 + end +end diff --git a/Source/Modulos/Contactos/Data/uDataModuleEmpleados.pas b/Source/Modulos/Contactos/Data/uDataModuleEmpleados.pas new file mode 100644 index 00000000..45f6852e --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleEmpleados.pas @@ -0,0 +1,116 @@ +unit uDataModuleEmpleados; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDataModuleContactos, DB, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, + uROClient, uROBinMessage, uROWinInetHttpChannel, uBizGruposEmpleado, uROTypes, + uIDataModuleEmpleados, uBizContactos, uDADesigntimeCall, uIDataModuleFichasEmpleadoReport; + +type + TDataModuleEmpleados = class(TDataModuleContactos, IDataModuleEmpleados, IDataModuleFichasEmpleadoReport) + tbl_Empleados: TDACDSDataTable; + ds_Empleados: TDADataSource; + tbl_GruposEmpleado: TDACDSDataTable; + ds_GruposEmpleado: TDADataSource; + protected + public + function GetItem(const ID : Integer) : IBizEmpleado; + function NewItem : IBizEmpleado; + function GetItems : IBizEmpleado; + function GetNextID(const DataSetName : String) : Integer; override; + function GetGruposEmpleado : IBizGrupoEmpleado; + + // Report + function GetReport(const AFichaID: String): Binary; + end; + + +implementation + +{$R *.dfm} + +uses + FactuGES_Intf, cxControls, schContactosClient_Intf, uDAInterfaces, uDataTableUtils; + +{ TDataModuleVendedores } + +function TDataModuleEmpleados.GetGruposEmpleado: IBizGrupoEmpleado; +var + AGrupoEmpleado : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AGrupoEmpleado := _CloneDataTable(tbl_GruposEmpleado); + AGrupoEmpleado.BusinessRulesID := BIZ_CLIENT_GRUPOSEMPLEADO; + Result := (AGrupoEmpleado as IBizGrupoEmpleado); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleEmpleados.GetItem(const ID: Integer): IBizEmpleado; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_ContactosID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleEmpleados.GetItems: IBizEmpleado; +var + AContacto : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AContacto := _CloneDataTable(tbl_Empleados); + AContacto.BusinessRulesID := BIZ_CLIENT_EMPLEADO; + + with TBizEmpleado(AContacto.BusinessEventsObj) do + begin + DatosBancarios := _GetDatosBancarios; + _Categorias := _GetCategorias; + end; + + Result := (AContacto as IBizEmpleado); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleEmpleados.GetNextID(const DataSetName: String): Integer; +var + aDataSet : String; + aGeneratorName : String; +begin + aDataSet := DataSetName; + + if aDataSet = nme_Empleados then + aDataSet := nme_Contactos; + + Result := inherited GetNextID(aDataSet); +end; + +function TDataModuleEmpleados.GetReport(const AFichaID: String): Binary; +begin + Result := (RORemoteService as IsrvContactos).GenerateFichaEmpleadoReport(AFichaID); +end; + +function TDataModuleEmpleados.NewItem: IBizEmpleado; +begin + Result := GetItem(ID_NULO) +end; + +end. diff --git a/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm b/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm new file mode 100644 index 00000000..c92bd0c8 --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleProveedores.dfm @@ -0,0 +1,283 @@ +inherited DataModuleProveedores: TDataModuleProveedores + Height = 442 + Width = 763 + inherited ds_Contactos: TDADataSource + DataSet = tbl_Contactos.Dataset + end + inherited ds_ContactosCategorias: TDADataSource + DataSet = tbl_ContactosCategorias.Dataset + end + inherited ds_DatosBancarios: TDADataSource + DataSet = tbl_DatosBancarios.Dataset + end + inherited ds_DireccionesContacto: TDADataSource + DataSet = tbl_DireccionesContacto.Dataset + end + object tbl_Proveedores: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + DisplayLabel = 'Contactos_ID_CATEGORIA' + DictionaryEntry = 'Contactos_ID_CATEGORIA' + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DisplayLabel = 'NIF/CIF' + DictionaryEntry = 'Contactos_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + DictionaryEntry = 'Contactos_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Direcci'#243'n' + DictionaryEntry = 'Contactos_CALLE' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DisplayLabel = 'Persona de contacto' + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + DictionaryEntry = 'Contactos_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + DictionaryEntry = 'Contactos_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'digo postal' + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. trabajo' + DictionaryEntry = 'Contactos_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. particular' + DictionaryEntry = 'Contactos_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil' + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail trabajo' + DictionaryEntry = 'Contactos_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail particular' + DictionaryEntry = 'Contactos_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DisplayLabel = 'Web' + DictionaryEntry = 'Contactos_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DisplayLabel = 'Observaciones' + DictionaryEntry = 'Contactos_NOTAS' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DisplayLabel = 'Usuario' + DictionaryEntry = 'Contactos_USUARIO' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_EMPRESA' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + DictionaryEntry = 'Proveedores_REFERENCIA' + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + DictionaryEntry = 'Proveedores_ID_TIPO_IVA' + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + DisplayLabel = 'R'#233'gimen de IVA' + DictionaryEntry = 'Proveedores_REGIMEN_IVA' + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + DictionaryEntry = 'Proveedores_ID_FORMA_PAGO' + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + DictionaryEntry = 'Proveedores_TIENDA_WEB' + end + item + Name = 'DESCUENTO' + DataType = datFloat + DisplayLabel = 'Descuento (%)' + DictionaryEntry = 'Proveedores_DESCUENTO' + end + item + Name = 'DESCRIPCION_PROVEEDOR' + DataType = datString + Size = 255 + DisplayLabel = 'Proveedor de...' + DictionaryEntry = 'Proveedores_DESCRIPCION_PROVEEDOR' + end + item + Name = 'CODIGO_ASIGNADO' + DataType = datString + Size = 255 + DisplayLabel = 'C'#243'digo asignado' + DictionaryEntry = 'Proveedores_CODIGO_ASIGNADO' + end + item + Name = 'HOMOLOGADO' + DataType = datInteger + DisplayLabel = 'Homologado' + DictionaryEntry = 'Proveedores_HOMOLOGADO' + end + item + Name = 'CERTIFICACION' + DataType = datString + Size = 255 + DisplayLabel = 'Certificaciones' + DictionaryEntry = 'Proveedores_CERTIFICACION' + end + item + Name = 'GRUPO_PROVEEDOR' + DataType = datString + Size = 255 + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_Proveedores + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Proveedores' + IndexDefs = <> + Left = 296 + Top = 184 + end + object ds_Proveedores: TDADataSource + DataSet = tbl_Proveedores.Dataset + DataTable = tbl_Proveedores + Left = 296 + Top = 320 + end + object tbl_GruposProveedor: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_GruposProveedor + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'GruposProveedor' + IndexDefs = <> + Left = 424 + Top = 184 + end + object ds_GruposProveedor: TDADataSource + DataSet = tbl_GruposProveedor.Dataset + DataTable = tbl_GruposProveedor + Left = 432 + Top = 320 + end + object rda_Proveedores: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 299 + Top = 255 + end + object rda_GruposProveedor: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 427 + Top = 255 + end +end diff --git a/Source/Modulos/Contactos/Data/uDataModuleProveedores.pas b/Source/Modulos/Contactos/Data/uDataModuleProveedores.pas new file mode 100644 index 00000000..546744b2 --- /dev/null +++ b/Source/Modulos/Contactos/Data/uDataModuleProveedores.pas @@ -0,0 +1,128 @@ +unit uDataModuleProveedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uDataModuleContactos, DB, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, + uROClient, uROBinMessage, uROWinInetHttpChannel, uBizGruposProveedor, + + uIDataModuleProveedores, uBizContactos, uDADesigntimeCall, + uDARemoteDataAdapter, uDADataStreamer, uRODynamicRequest, uDAInterfaces; + +type + TDataModuleProveedores = class(TDataModuleContactos, IDataModuleProveedores) + tbl_Proveedores: TDACDSDataTable; + ds_Proveedores: TDADataSource; + tbl_GruposProveedor: TDACDSDataTable; + ds_GruposProveedor: TDADataSource; + rda_Proveedores: TDARemoteDataAdapter; + rda_GruposProveedor: TDARemoteDataAdapter; + public + function GetItem(const ID : Integer) : IBizProveedor; + function NewItem : IBizProveedor; + function GetItems : IBizProveedor; + function GetItemsTiendaWeb : IBizProveedor; + function GetNextID(const DataSetName : String) : Integer; override; + function GetGruposProveedor : IBizGrupoProveedor; + end; + +implementation + +{$R *.dfm} + +uses + cxControls, schContactosClient_Intf, uDAInterfaces, uDataTableUtils; + +{ TDataModuleProveedores } + +function TDataModuleProveedores.GetGruposProveedor: IBizGrupoProveedor; +var + AGrupoProveedor : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AGrupoProveedor := _CloneDataTable(tbl_GruposProveedor); + AGrupoProveedor.BusinessRulesID := BIZ_CLIENT_GRUPOSPROVEEDOR; + Result := (AGrupoProveedor as IBizGrupoProveedor); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleProveedores.GetItem(const ID: Integer): IBizProveedor; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_ContactosID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleProveedores.GetItems: IBizProveedor; +var + AContacto : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AContacto := _CloneDataTable(tbl_Proveedores); + AContacto.BusinessRulesID := BIZ_CLIENT_PROVEEDOR; + + with TBizProveedor(AContacto.BusinessEventsObj) do + begin + DatosBancarios := _GetDatosBancarios; + Direcciones := _GetDirecciones; + _Categorias := _GetCategorias; + end; + + Result := (AContacto as IBizProveedor); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleProveedores.GetItemsTiendaWeb: IBizProveedor; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_ProveedoresTIENDA_WEB + ' = 1'); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleProveedores.GetNextID(const DataSetName: String): Integer; +var + aDataSet : String; +begin + aDataSet := DataSetName; + if aDataSet = nme_Proveedores then + aDataSet := nme_Contactos; + + Result := inherited GetNextID(aDataSet); +end; + +function TDataModuleProveedores.NewItem: IBizProveedor; +begin + Result := GetItem(ID_NULO) +end; + +end. diff --git a/Source/Modulos/Contactos/Model/Contactos_model.bdsproj b/Source/Modulos/Contactos/Model/Contactos_model.bdsproj new file mode 100644 index 00000000..9466337d --- /dev/null +++ b/Source/Modulos/Contactos/Model/Contactos_model.bdsproj @@ -0,0 +1,497 @@ + + + + + + + + + + + + Contactos_model.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + + False + diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dpk b/Source/Modulos/Contactos/Model/Contactos_model.dpk new file mode 100644 index 00000000..6a2206f6 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Contactos_model.dpk @@ -0,0 +1,65 @@ +package Contactos_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + DataAbstract_D10, + dsnap, + vcldb, + adortl, + vcljpg, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + Base, + Usuarios, + Empresas_controller; + +contains + uBizContactosDatosBancarios in 'uBizContactosDatosBancarios.pas', + uBizContactos in 'uBizContactos.pas', + uBizCategoriasContacto in 'uBizCategoriasContacto.pas', + uIDataModuleContactos in 'Data\uIDataModuleContactos.pas', + uIDataModuleClientes in 'Data\uIDataModuleClientes.pas', + uIDataModuleProveedores in 'Data\uIDataModuleProveedores.pas', + uIDataModuleEmpleados in 'Data\uIDataModuleEmpleados.pas', + uBizDireccionesContacto in 'uBizDireccionesContacto.pas', + uBizClientesDescuentos in 'uBizClientesDescuentos.pas', + uRegimenIVAUtils in '..\Utiles\uRegimenIVAUtils.pas', + uBizGruposCliente in 'uBizGruposCliente.pas', + schContactosClient_Intf in 'schContactosClient_Intf.pas', + uBizGruposEmpleado in 'uBizGruposEmpleado.pas', + uBizGruposProveedor in 'uBizGruposProveedor.pas', + uIDataModuleFichasEmpleadoReport in 'Data\uIDataModuleFichasEmpleadoReport.pas', + uIDataModuleEtiquetasContactosReport in 'Data\uIDataModuleEtiquetasContactosReport.pas'; + +end. diff --git a/Source/Modulos/Contactos/Model/Contactos_model.dproj b/Source/Modulos/Contactos/Model/Contactos_model.dproj new file mode 100644 index 00000000..7e9e8cca --- /dev/null +++ b/Source/Modulos/Contactos/Model/Contactos_model.dproj @@ -0,0 +1,623 @@ + + + {a7225a8d-f40d-4878-9a27-c5de0e7cb638} + Contactos_model.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Contactos_model.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + Contactos_model.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Contactos/Model/Contactos_model.drc b/Source/Modulos/Contactos/Model/Contactos_model.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Contactos_model.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Model/Contactos_model.rc b/Source/Modulos/Contactos/Model/Contactos_model.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Contactos/Model/Contactos_model.res b/Source/Modulos/Contactos/Model/Contactos_model.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Contactos/Model/Contactos_model.res differ diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas new file mode 100644 index 00000000..2c1b70fe --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleClientes.pas @@ -0,0 +1,21 @@ +unit uIDataModuleClientes; + +interface + +uses + uBizContactos, uIDataModuleContactos, uBizGruposCliente; + +type + IDataModuleClientes = interface(IDataModuleContactos) + ['{A7442A11-01F6-4F1A-B6B0-D3B9CCBC5392}'] + function GetItem(const ID : Integer) : IBizCliente; + function NewItem : IBizCliente; + function GetItems : IBizCliente; + function GetItemsTiendaWeb : IBizCliente; + function GetGruposCliente : IBizGrupoCliente; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleContactos.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleContactos.pas new file mode 100644 index 00000000..66a21778 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleContactos.pas @@ -0,0 +1,19 @@ +unit uIDataModuleContactos; + +interface + +uses + SysUtils, Classes, + uBizContactos, uBizContactosDatosBancarios, uBizCategoriasContacto; + +type + IDataModuleContactos = interface + ['{835FFC4D-1AE9-4020-A042-C9D84EC25A2C}'] + function _GetItems (IDCategoria : Integer): IBizContacto; + function _GetDatosBancarios : IBizContactosDatosBancarios; + function GetNextID(const DataSetName : String) : Integer; + end; + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleEmpleados.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleEmpleados.pas new file mode 100644 index 00000000..0835095d --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleEmpleados.pas @@ -0,0 +1,20 @@ +unit uIDataModuleEmpleados; + +interface + +uses + uBizContactos, uIDataModuleContactos, uBizGruposEmpleado; + +type + IDataModuleEmpleados = interface(IDataModuleContactos) + ['{42FF228B-C69F-4D45-9E86-A8135D0DB981}'] + function GetItem(const ID : Integer) : IBizEmpleado; + function NewItem : IBizEmpleado; + function GetItems : IBizEmpleado; + function GetGruposEmpleado : IBizGrupoEmpleado; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleEtiquetasContactosReport.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleEtiquetasContactosReport.pas new file mode 100644 index 00000000..6b276848 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleEtiquetasContactosReport.pas @@ -0,0 +1,16 @@ +unit uIDataModuleEtiquetasContactosReport; + +interface + +uses + SysUtils, Classes, uROTypes; + +type + IDataModuleEtiquetasContactosReport = interface + ['{26E68DED-5BD9-4227-B07F-9644BED7AE7B}'] + function GetReport(const AClientesID: String): Binary; + end; + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleFichasEmpleadoReport.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleFichasEmpleadoReport.pas new file mode 100644 index 00000000..0cdf5a00 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleFichasEmpleadoReport.pas @@ -0,0 +1,16 @@ +unit uIDataModuleFichasEmpleadoReport; + +interface + +uses + SysUtils, Classes, uROTypes; + +type + IDataModuleFichasEmpleadoReport = interface + ['{45EEB949-2AC0-459F-88B0-235444B005E4}'] + function GetReport(const AFichaID: String): Binary; + end; + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleGruposCliente.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleGruposCliente.pas new file mode 100644 index 00000000..cde45157 --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleGruposCliente.pas @@ -0,0 +1,16 @@ +unit uIDataModuleGruposCliente; + +interface + +uses + uBizGruposCliente; + +type + IDataModuleGruposCliente = interface + ['{0E08FB88-DDF7-48D7-9FA6-A695B8905248}'] + function GetItems: IBizGrupoCliente; + end; + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/Data/uIDataModuleProveedores.pas b/Source/Modulos/Contactos/Model/Data/uIDataModuleProveedores.pas new file mode 100644 index 00000000..638a09bb --- /dev/null +++ b/Source/Modulos/Contactos/Model/Data/uIDataModuleProveedores.pas @@ -0,0 +1,21 @@ +unit uIDataModuleProveedores; + +interface + +uses + uBizContactos, uIDataModuleContactos, uBizGruposProveedor; + +type + IDataModuleProveedores = interface(IDataModuleContactos) + ['{ED948BD0-F836-41FC-9293-76CD8973CA89}'] + function GetItem(const ID : Integer) : IBizProveedor; + function NewItem : IBizProveedor; + function GetItems : IBizProveedor; + function GetItemsTiendaWeb : IBizProveedor; + function GetGruposProveedor : IBizGrupoProveedor; + end; + + +implementation + +end. diff --git a/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas b/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas new file mode 100644 index 00000000..ed5fc7a4 --- /dev/null +++ b/Source/Modulos/Contactos/Model/schContactosClient_Intf.pas @@ -0,0 +1,3049 @@ +unit schContactosClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_Contactos = '{4702B17F-2C8C-4EDB-951F-501A4B940F9D}'; + RID_GruposCliente = '{12028CAB-36D8-48CA-9154-325B58403561}'; + RID_DatosBancarios = '{E2BFD8E8-37C6-4E91-A66E-5021A52A0229}'; + RID_ContactosCategorias = '{A0AE66D8-6E9D-47C4-BC56-3584B21BE55A}'; + RID_Clientes = '{4A4AA93F-8EE6-4967-8046-E19791A0EEC1}'; + RID_Proveedores = '{DC04F4C0-A1A4-41A3-9E00-C8DB73300D35}'; + RID_Empleados = '{19D88701-7312-4C3B-87FB-79C5060AB9EC}'; + RID_DireccionesContacto = '{9E3FAF78-7E14-43F3-875F-87BF6EA34C0B}'; + RID_ClientesDescuentos = '{00A7347D-BC94-43F1-BE47-EB33FECA3941}'; + RID_GruposProveedor = '{74F8D1EC-C607-48A3-92CE-14266EB1D056}'; + RID_GruposEmpleado = '{C8376B2F-DC19-4DB9-9992-3A744251ED6D}'; + + { Data table names } + nme_Contactos = 'Contactos'; + nme_GruposCliente = 'GruposCliente'; + nme_DatosBancarios = 'DatosBancarios'; + nme_ContactosCategorias = 'ContactosCategorias'; + nme_Clientes = 'Clientes'; + nme_Proveedores = 'Proveedores'; + nme_Empleados = 'Empleados'; + nme_DireccionesContacto = 'DireccionesContacto'; + nme_ClientesDescuentos = 'ClientesDescuentos'; + nme_GruposProveedor = 'GruposProveedor'; + nme_GruposEmpleado = 'GruposEmpleado'; + + { Contactos fields } + fld_ContactosID = 'ID'; + fld_ContactosID_CATEGORIA = 'ID_CATEGORIA'; + fld_ContactosNIF_CIF = 'NIF_CIF'; + fld_ContactosNOMBRE = 'NOMBRE'; + fld_ContactosPERSONA_CONTACTO = 'PERSONA_CONTACTO'; + fld_ContactosCALLE = 'CALLE'; + fld_ContactosPOBLACION = 'POBLACION'; + fld_ContactosPROVINCIA = 'PROVINCIA'; + fld_ContactosCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_ContactosTELEFONO_1 = 'TELEFONO_1'; + fld_ContactosTELEFONO_2 = 'TELEFONO_2'; + fld_ContactosMOVIL_1 = 'MOVIL_1'; + fld_ContactosMOVIL_2 = 'MOVIL_2'; + fld_ContactosFAX = 'FAX'; + fld_ContactosEMAIL_1 = 'EMAIL_1'; + fld_ContactosEMAIL_2 = 'EMAIL_2'; + fld_ContactosPAGINA_WEB = 'PAGINA_WEB'; + fld_ContactosNOTAS = 'NOTAS'; + fld_ContactosUSUARIO = 'USUARIO'; + fld_ContactosID_EMPRESA = 'ID_EMPRESA'; + fld_ContactosREFERENCIA = 'REFERENCIA'; + + { Contactos field indexes } + idx_ContactosID = 0; + idx_ContactosID_CATEGORIA = 1; + idx_ContactosNIF_CIF = 2; + idx_ContactosNOMBRE = 3; + idx_ContactosPERSONA_CONTACTO = 4; + idx_ContactosCALLE = 5; + idx_ContactosPOBLACION = 6; + idx_ContactosPROVINCIA = 7; + idx_ContactosCODIGO_POSTAL = 8; + idx_ContactosTELEFONO_1 = 9; + idx_ContactosTELEFONO_2 = 10; + idx_ContactosMOVIL_1 = 11; + idx_ContactosMOVIL_2 = 12; + idx_ContactosFAX = 13; + idx_ContactosEMAIL_1 = 14; + idx_ContactosEMAIL_2 = 15; + idx_ContactosPAGINA_WEB = 16; + idx_ContactosNOTAS = 17; + idx_ContactosUSUARIO = 18; + idx_ContactosID_EMPRESA = 19; + idx_ContactosREFERENCIA = 20; + + { GruposCliente fields } + fld_GruposClienteDESCRIPCION = 'DESCRIPCION'; + + { GruposCliente field indexes } + idx_GruposClienteDESCRIPCION = 0; + + { DatosBancarios fields } + fld_DatosBancariosID = 'ID'; + fld_DatosBancariosID_CONTACTO = 'ID_CONTACTO'; + fld_DatosBancariosTITULAR = 'TITULAR'; + fld_DatosBancariosENTIDAD = 'ENTIDAD'; + fld_DatosBancariosSUCURSAL = 'SUCURSAL'; + fld_DatosBancariosDC = 'DC'; + fld_DatosBancariosCUENTA = 'CUENTA'; + + { DatosBancarios field indexes } + idx_DatosBancariosID = 0; + idx_DatosBancariosID_CONTACTO = 1; + idx_DatosBancariosTITULAR = 2; + idx_DatosBancariosENTIDAD = 3; + idx_DatosBancariosSUCURSAL = 4; + idx_DatosBancariosDC = 5; + idx_DatosBancariosCUENTA = 6; + + { ContactosCategorias fields } + fld_ContactosCategoriasID_CONTACTO = 'ID_CONTACTO'; + fld_ContactosCategoriasID_CATEGORIA = 'ID_CATEGORIA'; + + { ContactosCategorias field indexes } + idx_ContactosCategoriasID_CONTACTO = 0; + idx_ContactosCategoriasID_CATEGORIA = 1; + + { Clientes fields } + fld_ClientesID = 'ID'; + fld_ClientesID_CATEGORIA = 'ID_CATEGORIA'; + fld_ClientesNIF_CIF = 'NIF_CIF'; + fld_ClientesNOMBRE = 'NOMBRE'; + fld_ClientesCALLE = 'CALLE'; + fld_ClientesPERSONA_CONTACTO = 'PERSONA_CONTACTO'; + fld_ClientesPOBLACION = 'POBLACION'; + fld_ClientesPROVINCIA = 'PROVINCIA'; + fld_ClientesCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_ClientesTELEFONO_1 = 'TELEFONO_1'; + fld_ClientesTELEFONO_2 = 'TELEFONO_2'; + fld_ClientesMOVIL_1 = 'MOVIL_1'; + fld_ClientesMOVIL_2 = 'MOVIL_2'; + fld_ClientesFAX = 'FAX'; + fld_ClientesEMAIL_1 = 'EMAIL_1'; + fld_ClientesEMAIL_2 = 'EMAIL_2'; + fld_ClientesPAGINA_WEB = 'PAGINA_WEB'; + fld_ClientesNOTAS = 'NOTAS'; + fld_ClientesUSUARIO = 'USUARIO'; + fld_ClientesID_EMPRESA = 'ID_EMPRESA'; + fld_ClientesREFERENCIA = 'REFERENCIA'; + fld_ClientesID_TIPO_IVA = 'ID_TIPO_IVA'; + fld_ClientesREGIMEN_IVA = 'REGIMEN_IVA'; + fld_ClientesID_FORMA_PAGO = 'ID_FORMA_PAGO'; + fld_ClientesTIENDA_WEB = 'TIENDA_WEB'; + fld_ClientesRECARGO_EQUIVALENCIA = 'RECARGO_EQUIVALENCIA'; + fld_ClientesGRUPO_CLIENTE = 'GRUPO_CLIENTE'; + fld_ClientesNOMBRE_COMERCIAL = 'NOMBRE_COMERCIAL'; + fld_ClientesVENCIMIENTO_FACTURAS = 'VENCIMIENTO_FACTURAS'; + fld_ClientesBLOQUEADO = 'BLOQUEADO'; + fld_ClientesMOTIVO_BLOQUEO = 'MOTIVO_BLOQUEO'; + + { Clientes field indexes } + idx_ClientesID = 0; + idx_ClientesID_CATEGORIA = 1; + idx_ClientesNIF_CIF = 2; + idx_ClientesNOMBRE = 3; + idx_ClientesCALLE = 4; + idx_ClientesPERSONA_CONTACTO = 5; + idx_ClientesPOBLACION = 6; + idx_ClientesPROVINCIA = 7; + idx_ClientesCODIGO_POSTAL = 8; + idx_ClientesTELEFONO_1 = 9; + idx_ClientesTELEFONO_2 = 10; + idx_ClientesMOVIL_1 = 11; + idx_ClientesMOVIL_2 = 12; + idx_ClientesFAX = 13; + idx_ClientesEMAIL_1 = 14; + idx_ClientesEMAIL_2 = 15; + idx_ClientesPAGINA_WEB = 16; + idx_ClientesNOTAS = 17; + idx_ClientesUSUARIO = 18; + idx_ClientesID_EMPRESA = 19; + idx_ClientesREFERENCIA = 20; + idx_ClientesID_TIPO_IVA = 21; + idx_ClientesREGIMEN_IVA = 22; + idx_ClientesID_FORMA_PAGO = 23; + idx_ClientesTIENDA_WEB = 24; + idx_ClientesRECARGO_EQUIVALENCIA = 25; + idx_ClientesGRUPO_CLIENTE = 26; + idx_ClientesNOMBRE_COMERCIAL = 27; + idx_ClientesVENCIMIENTO_FACTURAS = 28; + idx_ClientesBLOQUEADO = 29; + idx_ClientesMOTIVO_BLOQUEO = 30; + + { Proveedores fields } + fld_ProveedoresID = 'ID'; + fld_ProveedoresID_CATEGORIA = 'ID_CATEGORIA'; + fld_ProveedoresNIF_CIF = 'NIF_CIF'; + fld_ProveedoresNOMBRE = 'NOMBRE'; + fld_ProveedoresCALLE = 'CALLE'; + fld_ProveedoresPERSONA_CONTACTO = 'PERSONA_CONTACTO'; + fld_ProveedoresPOBLACION = 'POBLACION'; + fld_ProveedoresPROVINCIA = 'PROVINCIA'; + fld_ProveedoresCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_ProveedoresTELEFONO_1 = 'TELEFONO_1'; + fld_ProveedoresTELEFONO_2 = 'TELEFONO_2'; + fld_ProveedoresMOVIL_1 = 'MOVIL_1'; + fld_ProveedoresMOVIL_2 = 'MOVIL_2'; + fld_ProveedoresFAX = 'FAX'; + fld_ProveedoresEMAIL_1 = 'EMAIL_1'; + fld_ProveedoresEMAIL_2 = 'EMAIL_2'; + fld_ProveedoresPAGINA_WEB = 'PAGINA_WEB'; + fld_ProveedoresNOTAS = 'NOTAS'; + fld_ProveedoresUSUARIO = 'USUARIO'; + fld_ProveedoresID_EMPRESA = 'ID_EMPRESA'; + fld_ProveedoresREFERENCIA = 'REFERENCIA'; + fld_ProveedoresID_TIPO_IVA = 'ID_TIPO_IVA'; + fld_ProveedoresREGIMEN_IVA = 'REGIMEN_IVA'; + fld_ProveedoresID_FORMA_PAGO = 'ID_FORMA_PAGO'; + fld_ProveedoresTIENDA_WEB = 'TIENDA_WEB'; + fld_ProveedoresDESCUENTO = 'DESCUENTO'; + fld_ProveedoresDESCRIPCION_PROVEEDOR = 'DESCRIPCION_PROVEEDOR'; + fld_ProveedoresCODIGO_ASIGNADO = 'CODIGO_ASIGNADO'; + fld_ProveedoresHOMOLOGADO = 'HOMOLOGADO'; + fld_ProveedoresCERTIFICACION = 'CERTIFICACION'; + fld_ProveedoresGRUPO_PROVEEDOR = 'GRUPO_PROVEEDOR'; + + { Proveedores field indexes } + idx_ProveedoresID = 0; + idx_ProveedoresID_CATEGORIA = 1; + idx_ProveedoresNIF_CIF = 2; + idx_ProveedoresNOMBRE = 3; + idx_ProveedoresCALLE = 4; + idx_ProveedoresPERSONA_CONTACTO = 5; + idx_ProveedoresPOBLACION = 6; + idx_ProveedoresPROVINCIA = 7; + idx_ProveedoresCODIGO_POSTAL = 8; + idx_ProveedoresTELEFONO_1 = 9; + idx_ProveedoresTELEFONO_2 = 10; + idx_ProveedoresMOVIL_1 = 11; + idx_ProveedoresMOVIL_2 = 12; + idx_ProveedoresFAX = 13; + idx_ProveedoresEMAIL_1 = 14; + idx_ProveedoresEMAIL_2 = 15; + idx_ProveedoresPAGINA_WEB = 16; + idx_ProveedoresNOTAS = 17; + idx_ProveedoresUSUARIO = 18; + idx_ProveedoresID_EMPRESA = 19; + idx_ProveedoresREFERENCIA = 20; + idx_ProveedoresID_TIPO_IVA = 21; + idx_ProveedoresREGIMEN_IVA = 22; + idx_ProveedoresID_FORMA_PAGO = 23; + idx_ProveedoresTIENDA_WEB = 24; + idx_ProveedoresDESCUENTO = 25; + idx_ProveedoresDESCRIPCION_PROVEEDOR = 26; + idx_ProveedoresCODIGO_ASIGNADO = 27; + idx_ProveedoresHOMOLOGADO = 28; + idx_ProveedoresCERTIFICACION = 29; + idx_ProveedoresGRUPO_PROVEEDOR = 30; + + { Empleados fields } + fld_EmpleadosID = 'ID'; + fld_EmpleadosID_CATEGORIA = 'ID_CATEGORIA'; + fld_EmpleadosNIF_CIF = 'NIF_CIF'; + fld_EmpleadosNOMBRE = 'NOMBRE'; + fld_EmpleadosCALLE = 'CALLE'; + fld_EmpleadosPERSONA_CONTACTO = 'PERSONA_CONTACTO'; + fld_EmpleadosPOBLACION = 'POBLACION'; + fld_EmpleadosPROVINCIA = 'PROVINCIA'; + fld_EmpleadosCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_EmpleadosTELEFONO_1 = 'TELEFONO_1'; + fld_EmpleadosTELEFONO_2 = 'TELEFONO_2'; + fld_EmpleadosMOVIL_1 = 'MOVIL_1'; + fld_EmpleadosMOVIL_2 = 'MOVIL_2'; + fld_EmpleadosFAX = 'FAX'; + fld_EmpleadosEMAIL_1 = 'EMAIL_1'; + fld_EmpleadosEMAIL_2 = 'EMAIL_2'; + fld_EmpleadosPAGINA_WEB = 'PAGINA_WEB'; + fld_EmpleadosNOTAS = 'NOTAS'; + fld_EmpleadosUSUARIO = 'USUARIO'; + fld_EmpleadosID_EMPRESA = 'ID_EMPRESA'; + fld_EmpleadosREFERENCIA = 'REFERENCIA'; + fld_EmpleadosCATEGORIA = 'CATEGORIA'; + fld_EmpleadosFECHA_NACIMIENTO = 'FECHA_NACIMIENTO'; + fld_EmpleadosFECHA_ALTA_EMPRESA = 'FECHA_ALTA_EMPRESA'; + fld_EmpleadosFORMACION_BASE = 'FORMACION_BASE'; + fld_EmpleadosFORMACION_COMPLE = 'FORMACION_COMPLE'; + fld_EmpleadosFORMACION_RECIBIDA = 'FORMACION_RECIBIDA'; + fld_EmpleadosEXPERIENCIA = 'EXPERIENCIA'; + + { Empleados field indexes } + idx_EmpleadosID = 0; + idx_EmpleadosID_CATEGORIA = 1; + idx_EmpleadosNIF_CIF = 2; + idx_EmpleadosNOMBRE = 3; + idx_EmpleadosCALLE = 4; + idx_EmpleadosPERSONA_CONTACTO = 5; + idx_EmpleadosPOBLACION = 6; + idx_EmpleadosPROVINCIA = 7; + idx_EmpleadosCODIGO_POSTAL = 8; + idx_EmpleadosTELEFONO_1 = 9; + idx_EmpleadosTELEFONO_2 = 10; + idx_EmpleadosMOVIL_1 = 11; + idx_EmpleadosMOVIL_2 = 12; + idx_EmpleadosFAX = 13; + idx_EmpleadosEMAIL_1 = 14; + idx_EmpleadosEMAIL_2 = 15; + idx_EmpleadosPAGINA_WEB = 16; + idx_EmpleadosNOTAS = 17; + idx_EmpleadosUSUARIO = 18; + idx_EmpleadosID_EMPRESA = 19; + idx_EmpleadosREFERENCIA = 20; + idx_EmpleadosCATEGORIA = 21; + idx_EmpleadosFECHA_NACIMIENTO = 22; + idx_EmpleadosFECHA_ALTA_EMPRESA = 23; + idx_EmpleadosFORMACION_BASE = 24; + idx_EmpleadosFORMACION_COMPLE = 25; + idx_EmpleadosFORMACION_RECIBIDA = 26; + idx_EmpleadosEXPERIENCIA = 27; + + { DireccionesContacto fields } + fld_DireccionesContactoID = 'ID'; + fld_DireccionesContactoID_CONTACTO = 'ID_CONTACTO'; + fld_DireccionesContactoNOMBRE = 'NOMBRE'; + fld_DireccionesContactoCALLE = 'CALLE'; + fld_DireccionesContactoPOBLACION = 'POBLACION'; + fld_DireccionesContactoPROVINCIA = 'PROVINCIA'; + fld_DireccionesContactoCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_DireccionesContactoPERSONA_CONTACTO = 'PERSONA_CONTACTO'; + fld_DireccionesContactoTELEFONO = 'TELEFONO'; + fld_DireccionesContactoMOVIL = 'MOVIL'; + fld_DireccionesContactoFAX = 'FAX'; + fld_DireccionesContactoEMAIL = 'EMAIL'; + fld_DireccionesContactoNOTAS = 'NOTAS'; + fld_DireccionesContactoPORTE = 'PORTE'; + + { DireccionesContacto field indexes } + idx_DireccionesContactoID = 0; + idx_DireccionesContactoID_CONTACTO = 1; + idx_DireccionesContactoNOMBRE = 2; + idx_DireccionesContactoCALLE = 3; + idx_DireccionesContactoPOBLACION = 4; + idx_DireccionesContactoPROVINCIA = 5; + idx_DireccionesContactoCODIGO_POSTAL = 6; + idx_DireccionesContactoPERSONA_CONTACTO = 7; + idx_DireccionesContactoTELEFONO = 8; + idx_DireccionesContactoMOVIL = 9; + idx_DireccionesContactoFAX = 10; + idx_DireccionesContactoEMAIL = 11; + idx_DireccionesContactoNOTAS = 12; + idx_DireccionesContactoPORTE = 13; + + { ClientesDescuentos fields } + fld_ClientesDescuentosID = 'ID'; + fld_ClientesDescuentosID_CLIENTE = 'ID_CLIENTE'; + fld_ClientesDescuentosID_PROVEEDOR = 'ID_PROVEEDOR'; + fld_ClientesDescuentosNOMBRE = 'NOMBRE'; + fld_ClientesDescuentosDESCUENTO = 'DESCUENTO'; + + { ClientesDescuentos field indexes } + idx_ClientesDescuentosID = 0; + idx_ClientesDescuentosID_CLIENTE = 1; + idx_ClientesDescuentosID_PROVEEDOR = 2; + idx_ClientesDescuentosNOMBRE = 3; + idx_ClientesDescuentosDESCUENTO = 4; + + { GruposProveedor fields } + fld_GruposProveedorDESCRIPCION = 'DESCRIPCION'; + + { GruposProveedor field indexes } + idx_GruposProveedorDESCRIPCION = 0; + + { GruposEmpleado fields } + fld_GruposEmpleadoDESCRIPCION = 'DESCRIPCION'; + + { GruposEmpleado field indexes } + idx_GruposEmpleadoDESCRIPCION = 0; + +type + { IContactos } + IContactos = interface(IDAStronglyTypedDataTable) + ['{F396F244-2087-46CA-B562-068C32F5925F}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CATEGORIAValue: Integer; + procedure SetID_CATEGORIAValue(const aValue: Integer); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetPERSONA_CONTACTOValue: String; + procedure SetPERSONA_CONTACTOValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetTELEFONO_1Value: String; + procedure SetTELEFONO_1Value(const aValue: String); + function GetTELEFONO_2Value: String; + procedure SetTELEFONO_2Value(const aValue: String); + function GetMOVIL_1Value: String; + procedure SetMOVIL_1Value(const aValue: String); + function GetMOVIL_2Value: String; + procedure SetMOVIL_2Value(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAIL_1Value: String; + procedure SetEMAIL_1Value(const aValue: String); + function GetEMAIL_2Value: String; + procedure SetEMAIL_2Value(const aValue: String); + function GetPAGINA_WEBValue: String; + procedure SetPAGINA_WEBValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + end; + + { TContactosDataTableRules } + TContactosDataTableRules = class(TDADataTableRules, IContactos) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IGruposCliente } + IGruposCliente = interface(IDAStronglyTypedDataTable) + ['{1FFF80FA-0CE6-4907-A25E-582E1724B293}'] + { Property getters and setters } + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TGruposClienteDataTableRules } + TGruposClienteDataTableRules = class(TDADataTableRules, IGruposCliente) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IDatosBancarios } + IDatosBancarios = interface(IDAStronglyTypedDataTable) + ['{F87D0636-602D-472C-90BD-8A8F6F783944}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CONTACTOValue: Integer; + procedure SetID_CONTACTOValue(const aValue: Integer); + function GetTITULARValue: String; + procedure SetTITULARValue(const aValue: String); + function GetENTIDADValue: String; + procedure SetENTIDADValue(const aValue: String); + function GetSUCURSALValue: String; + procedure SetSUCURSALValue(const aValue: String); + function GetDCValue: String; + procedure SetDCValue(const aValue: String); + function GetCUENTAValue: String; + procedure SetCUENTAValue(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CONTACTO: Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property TITULAR: String read GetTITULARValue write SetTITULARValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + end; + + { TDatosBancariosDataTableRules } + TDatosBancariosDataTableRules = class(TDADataTableRules, IDatosBancarios) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CONTACTOValue: Integer; virtual; + procedure SetID_CONTACTOValue(const aValue: Integer); virtual; + function GetTITULARValue: String; virtual; + procedure SetTITULARValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CONTACTO: Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property TITULAR: String read GetTITULARValue write SetTITULARValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IContactosCategorias } + IContactosCategorias = interface(IDAStronglyTypedDataTable) + ['{D8DCDA8D-996F-446C-8241-E02D41DDEB09}'] + { Property getters and setters } + function GetID_CONTACTOValue: Integer; + procedure SetID_CONTACTOValue(const aValue: Integer); + function GetID_CATEGORIAValue: Integer; + procedure SetID_CATEGORIAValue(const aValue: Integer); + + + { Properties } + property ID_CONTACTO: Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + end; + + { TContactosCategoriasDataTableRules } + TContactosCategoriasDataTableRules = class(TDADataTableRules, IContactosCategorias) + private + protected + { Property getters and setters } + function GetID_CONTACTOValue: Integer; virtual; + procedure SetID_CONTACTOValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + + { Properties } + property ID_CONTACTO: Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IClientes } + IClientes = interface(IDAStronglyTypedDataTable) + ['{A6D726D9-A0A4-4F7B-B8BD-BCAE0B982891}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CATEGORIAValue: Integer; + procedure SetID_CATEGORIAValue(const aValue: Integer); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPERSONA_CONTACTOValue: String; + procedure SetPERSONA_CONTACTOValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetTELEFONO_1Value: String; + procedure SetTELEFONO_1Value(const aValue: String); + function GetTELEFONO_2Value: String; + procedure SetTELEFONO_2Value(const aValue: String); + function GetMOVIL_1Value: String; + procedure SetMOVIL_1Value(const aValue: String); + function GetMOVIL_2Value: String; + procedure SetMOVIL_2Value(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAIL_1Value: String; + procedure SetEMAIL_1Value(const aValue: String); + function GetEMAIL_2Value: String; + procedure SetEMAIL_2Value(const aValue: String); + function GetPAGINA_WEBValue: String; + procedure SetPAGINA_WEBValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetID_TIPO_IVAValue: Integer; + procedure SetID_TIPO_IVAValue(const aValue: Integer); + function GetREGIMEN_IVAValue: String; + procedure SetREGIMEN_IVAValue(const aValue: String); + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + function GetTIENDA_WEBValue: Integer; + procedure SetTIENDA_WEBValue(const aValue: Integer); + function GetRECARGO_EQUIVALENCIAValue: Integer; + procedure SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); + function GetGRUPO_CLIENTEValue: String; + procedure SetGRUPO_CLIENTEValue(const aValue: String); + function GetNOMBRE_COMERCIALValue: String; + procedure SetNOMBRE_COMERCIALValue(const aValue: String); + function GetVENCIMIENTO_FACTURASValue: Integer; + procedure SetVENCIMIENTO_FACTURASValue(const aValue: Integer); + function GetBLOQUEADOValue: Integer; + procedure SetBLOQUEADOValue(const aValue: Integer); + function GetMOTIVO_BLOQUEOValue: String; + procedure SetMOTIVO_BLOQUEOValue(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property RECARGO_EQUIVALENCIA: Integer read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue; + property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; + property NOMBRE_COMERCIAL: String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue; + property VENCIMIENTO_FACTURAS: Integer read GetVENCIMIENTO_FACTURASValue write SetVENCIMIENTO_FACTURASValue; + property BLOQUEADO: Integer read GetBLOQUEADOValue write SetBLOQUEADOValue; + property MOTIVO_BLOQUEO: String read GetMOTIVO_BLOQUEOValue write SetMOTIVO_BLOQUEOValue; + end; + + { TClientesDataTableRules } + TClientesDataTableRules = class(TDADataTableRules, IClientes) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetID_TIPO_IVAValue: Integer; virtual; + procedure SetID_TIPO_IVAValue(const aValue: Integer); virtual; + function GetREGIMEN_IVAValue: String; virtual; + procedure SetREGIMEN_IVAValue(const aValue: String); virtual; + function GetID_FORMA_PAGOValue: Integer; virtual; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; + function GetTIENDA_WEBValue: Integer; virtual; + procedure SetTIENDA_WEBValue(const aValue: Integer); virtual; + function GetRECARGO_EQUIVALENCIAValue: Integer; virtual; + procedure SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); virtual; + function GetGRUPO_CLIENTEValue: String; virtual; + procedure SetGRUPO_CLIENTEValue(const aValue: String); virtual; + function GetNOMBRE_COMERCIALValue: String; virtual; + procedure SetNOMBRE_COMERCIALValue(const aValue: String); virtual; + function GetVENCIMIENTO_FACTURASValue: Integer; virtual; + procedure SetVENCIMIENTO_FACTURASValue(const aValue: Integer); virtual; + function GetBLOQUEADOValue: Integer; virtual; + procedure SetBLOQUEADOValue(const aValue: Integer); virtual; + function GetMOTIVO_BLOQUEOValue: String; virtual; + procedure SetMOTIVO_BLOQUEOValue(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property RECARGO_EQUIVALENCIA: Integer read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue; + property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; + property NOMBRE_COMERCIAL: String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue; + property VENCIMIENTO_FACTURAS: Integer read GetVENCIMIENTO_FACTURASValue write SetVENCIMIENTO_FACTURASValue; + property BLOQUEADO: Integer read GetBLOQUEADOValue write SetBLOQUEADOValue; + property MOTIVO_BLOQUEO: String read GetMOTIVO_BLOQUEOValue write SetMOTIVO_BLOQUEOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IProveedores } + IProveedores = interface(IDAStronglyTypedDataTable) + ['{3B317406-09C8-4CBA-B708-F2C52CFEAB09}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CATEGORIAValue: Integer; + procedure SetID_CATEGORIAValue(const aValue: Integer); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPERSONA_CONTACTOValue: String; + procedure SetPERSONA_CONTACTOValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetTELEFONO_1Value: String; + procedure SetTELEFONO_1Value(const aValue: String); + function GetTELEFONO_2Value: String; + procedure SetTELEFONO_2Value(const aValue: String); + function GetMOVIL_1Value: String; + procedure SetMOVIL_1Value(const aValue: String); + function GetMOVIL_2Value: String; + procedure SetMOVIL_2Value(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAIL_1Value: String; + procedure SetEMAIL_1Value(const aValue: String); + function GetEMAIL_2Value: String; + procedure SetEMAIL_2Value(const aValue: String); + function GetPAGINA_WEBValue: String; + procedure SetPAGINA_WEBValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetID_TIPO_IVAValue: Integer; + procedure SetID_TIPO_IVAValue(const aValue: Integer); + function GetREGIMEN_IVAValue: String; + procedure SetREGIMEN_IVAValue(const aValue: String); + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + function GetTIENDA_WEBValue: Integer; + procedure SetTIENDA_WEBValue(const aValue: Integer); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + function GetDESCRIPCION_PROVEEDORValue: String; + procedure SetDESCRIPCION_PROVEEDORValue(const aValue: String); + function GetCODIGO_ASIGNADOValue: String; + procedure SetCODIGO_ASIGNADOValue(const aValue: String); + function GetHOMOLOGADOValue: Integer; + procedure SetHOMOLOGADOValue(const aValue: Integer); + function GetCERTIFICACIONValue: String; + procedure SetCERTIFICACIONValue(const aValue: String); + function GetGRUPO_PROVEEDORValue: String; + procedure SetGRUPO_PROVEEDORValue(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCRIPCION_PROVEEDOR: String read GetDESCRIPCION_PROVEEDORValue write SetDESCRIPCION_PROVEEDORValue; + property CODIGO_ASIGNADO: String read GetCODIGO_ASIGNADOValue write SetCODIGO_ASIGNADOValue; + property HOMOLOGADO: Integer read GetHOMOLOGADOValue write SetHOMOLOGADOValue; + property CERTIFICACION: String read GetCERTIFICACIONValue write SetCERTIFICACIONValue; + property GRUPO_PROVEEDOR: String read GetGRUPO_PROVEEDORValue write SetGRUPO_PROVEEDORValue; + end; + + { TProveedoresDataTableRules } + TProveedoresDataTableRules = class(TDADataTableRules, IProveedores) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetID_TIPO_IVAValue: Integer; virtual; + procedure SetID_TIPO_IVAValue(const aValue: Integer); virtual; + function GetREGIMEN_IVAValue: String; virtual; + procedure SetREGIMEN_IVAValue(const aValue: String); virtual; + function GetID_FORMA_PAGOValue: Integer; virtual; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; + function GetTIENDA_WEBValue: Integer; virtual; + procedure SetTIENDA_WEBValue(const aValue: Integer); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetDESCRIPCION_PROVEEDORValue: String; virtual; + procedure SetDESCRIPCION_PROVEEDORValue(const aValue: String); virtual; + function GetCODIGO_ASIGNADOValue: String; virtual; + procedure SetCODIGO_ASIGNADOValue(const aValue: String); virtual; + function GetHOMOLOGADOValue: Integer; virtual; + procedure SetHOMOLOGADOValue(const aValue: Integer); virtual; + function GetCERTIFICACIONValue: String; virtual; + procedure SetCERTIFICACIONValue(const aValue: String); virtual; + function GetGRUPO_PROVEEDORValue: String; virtual; + procedure SetGRUPO_PROVEEDORValue(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCRIPCION_PROVEEDOR: String read GetDESCRIPCION_PROVEEDORValue write SetDESCRIPCION_PROVEEDORValue; + property CODIGO_ASIGNADO: String read GetCODIGO_ASIGNADOValue write SetCODIGO_ASIGNADOValue; + property HOMOLOGADO: Integer read GetHOMOLOGADOValue write SetHOMOLOGADOValue; + property CERTIFICACION: String read GetCERTIFICACIONValue write SetCERTIFICACIONValue; + property GRUPO_PROVEEDOR: String read GetGRUPO_PROVEEDORValue write SetGRUPO_PROVEEDORValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IEmpleados } + IEmpleados = interface(IDAStronglyTypedDataTable) + ['{0A5A325E-1A87-439B-A785-60E26CCD025D}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CATEGORIAValue: Integer; + procedure SetID_CATEGORIAValue(const aValue: Integer); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPERSONA_CONTACTOValue: String; + procedure SetPERSONA_CONTACTOValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetTELEFONO_1Value: String; + procedure SetTELEFONO_1Value(const aValue: String); + function GetTELEFONO_2Value: String; + procedure SetTELEFONO_2Value(const aValue: String); + function GetMOVIL_1Value: String; + procedure SetMOVIL_1Value(const aValue: String); + function GetMOVIL_2Value: String; + procedure SetMOVIL_2Value(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAIL_1Value: String; + procedure SetEMAIL_1Value(const aValue: String); + function GetEMAIL_2Value: String; + procedure SetEMAIL_2Value(const aValue: String); + function GetPAGINA_WEBValue: String; + procedure SetPAGINA_WEBValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + function GetFECHA_NACIMIENTOValue: DateTime; + procedure SetFECHA_NACIMIENTOValue(const aValue: DateTime); + function GetFECHA_ALTA_EMPRESAValue: DateTime; + procedure SetFECHA_ALTA_EMPRESAValue(const aValue: DateTime); + function GetFORMACION_BASEValue: IROStrings; + procedure SetFORMACION_BASEValue(const aValue: IROStrings); + function GetFORMACION_COMPLEValue: IROStrings; + procedure SetFORMACION_COMPLEValue(const aValue: IROStrings); + function GetFORMACION_RECIBIDAValue: IROStrings; + procedure SetFORMACION_RECIBIDAValue(const aValue: IROStrings); + function GetEXPERIENCIAValue: IROStrings; + procedure SetEXPERIENCIAValue(const aValue: IROStrings); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + property FECHA_NACIMIENTO: DateTime read GetFECHA_NACIMIENTOValue write SetFECHA_NACIMIENTOValue; + property FECHA_ALTA_EMPRESA: DateTime read GetFECHA_ALTA_EMPRESAValue write SetFECHA_ALTA_EMPRESAValue; + property FORMACION_BASE: IROStrings read GetFORMACION_BASEValue write SetFORMACION_BASEValue; + property FORMACION_COMPLE: IROStrings read GetFORMACION_COMPLEValue write SetFORMACION_COMPLEValue; + property FORMACION_RECIBIDA: IROStrings read GetFORMACION_RECIBIDAValue write SetFORMACION_RECIBIDAValue; + property EXPERIENCIA: IROStrings read GetEXPERIENCIAValue write SetEXPERIENCIAValue; + end; + + { TEmpleadosDataTableRules } + TEmpleadosDataTableRules = class(TDADataTableRules, IEmpleados) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + function GetFECHA_NACIMIENTOValue: DateTime; virtual; + procedure SetFECHA_NACIMIENTOValue(const aValue: DateTime); virtual; + function GetFECHA_ALTA_EMPRESAValue: DateTime; virtual; + procedure SetFECHA_ALTA_EMPRESAValue(const aValue: DateTime); virtual; + function GetFORMACION_BASEValue: IROStrings; virtual; + procedure SetFORMACION_BASEValue(const aValue: IROStrings); virtual; + function GetFORMACION_COMPLEValue: IROStrings; virtual; + procedure SetFORMACION_COMPLEValue(const aValue: IROStrings); virtual; + function GetFORMACION_RECIBIDAValue: IROStrings; virtual; + procedure SetFORMACION_RECIBIDAValue(const aValue: IROStrings); virtual; + function GetEXPERIENCIAValue: IROStrings; virtual; + procedure SetEXPERIENCIAValue(const aValue: IROStrings); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CATEGORIA: Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + property FECHA_NACIMIENTO: DateTime read GetFECHA_NACIMIENTOValue write SetFECHA_NACIMIENTOValue; + property FECHA_ALTA_EMPRESA: DateTime read GetFECHA_ALTA_EMPRESAValue write SetFECHA_ALTA_EMPRESAValue; + property FORMACION_BASE: IROStrings read GetFORMACION_BASEValue write SetFORMACION_BASEValue; + property FORMACION_COMPLE: IROStrings read GetFORMACION_COMPLEValue write SetFORMACION_COMPLEValue; + property FORMACION_RECIBIDA: IROStrings read GetFORMACION_RECIBIDAValue write SetFORMACION_RECIBIDAValue; + property EXPERIENCIA: IROStrings read GetEXPERIENCIAValue write SetEXPERIENCIAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IDireccionesContacto } + IDireccionesContacto = interface(IDAStronglyTypedDataTable) + ['{8AE98E4A-35D7-4E61-BE7D-64DD5B4AC7AF}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CONTACTOValue: Integer; + procedure SetID_CONTACTOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetPERSONA_CONTACTOValue: String; + procedure SetPERSONA_CONTACTOValue(const aValue: String); + function GetTELEFONOValue: String; + procedure SetTELEFONOValue(const aValue: String); + function GetMOVILValue: String; + procedure SetMOVILValue(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAILValue: String; + procedure SetEMAILValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetPORTEValue: Float; + procedure SetPORTEValue(const aValue: Float); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CONTACTO: Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property TELEFONO: String read GetTELEFONOValue write SetTELEFONOValue; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL: String read GetEMAILValue write SetEMAILValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property PORTE: Float read GetPORTEValue write SetPORTEValue; + end; + + { TDireccionesContactoDataTableRules } + TDireccionesContactoDataTableRules = class(TDADataTableRules, IDireccionesContacto) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CONTACTOValue: Integer; virtual; + procedure SetID_CONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetTELEFONOValue: String; virtual; + procedure SetTELEFONOValue(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAILValue: String; virtual; + procedure SetEMAILValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetPORTEValue: Float; virtual; + procedure SetPORTEValue(const aValue: Float); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CONTACTO: Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property PERSONA_CONTACTO: String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property TELEFONO: String read GetTELEFONOValue write SetTELEFONOValue; + property MOVIL: String read GetMOVILValue write SetMOVILValue; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL: String read GetEMAILValue write SetEMAILValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property PORTE: Float read GetPORTEValue write SetPORTEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IClientesDescuentos } + IClientesDescuentos = interface(IDAStronglyTypedDataTable) + ['{F886D2B5-74CF-4173-A04A-085EB4844795}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_CLIENTEValue: Integer; + procedure SetID_CLIENTEValue(const aValue: Integer); + function GetID_PROVEEDORValue: Integer; + procedure SetID_PROVEEDORValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CLIENTE: Integer read GetID_CLIENTEValue write SetID_CLIENTEValue; + property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + end; + + { TClientesDescuentosDataTableRules } + TClientesDescuentosDataTableRules = class(TDADataTableRules, IClientesDescuentos) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CLIENTEValue: Integer; virtual; + procedure SetID_CLIENTEValue(const aValue: Integer); virtual; + function GetID_PROVEEDORValue: Integer; virtual; + procedure SetID_PROVEEDORValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_CLIENTE: Integer read GetID_CLIENTEValue write SetID_CLIENTEValue; + property ID_PROVEEDOR: Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IGruposProveedor } + IGruposProveedor = interface(IDAStronglyTypedDataTable) + ['{8A40BF38-E4DE-41D3-BC1F-B683003EDC4D}'] + { Property getters and setters } + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TGruposProveedorDataTableRules } + TGruposProveedorDataTableRules = class(TDADataTableRules, IGruposProveedor) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IGruposEmpleado } + IGruposEmpleado = interface(IDAStronglyTypedDataTable) + ['{6E0FF24B-75DD-4796-AE74-B1D28F67770E}'] + { Property getters and setters } + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TGruposEmpleadoDataTableRules } + TGruposEmpleadoDataTableRules = class(TDADataTableRules, IGruposEmpleado) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TContactosDataTableRules } +constructor TContactosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TContactosDataTableRules.Destroy; +begin + inherited; +end; + +function TContactosDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_ContactosID].AsInteger; +end; + +procedure TContactosDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosID].AsInteger := aValue; +end; + +function TContactosDataTableRules.GetID_CATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_ContactosID_CATEGORIA].AsInteger; +end; + +procedure TContactosDataTableRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosID_CATEGORIA].AsInteger := aValue; +end; + +function TContactosDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_ContactosNIF_CIF].AsString; +end; + +procedure TContactosDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosNIF_CIF].AsString := aValue; +end; + +function TContactosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ContactosNOMBRE].AsString; +end; + +procedure TContactosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosNOMBRE].AsString := aValue; +end; + +function TContactosDataTableRules.GetPERSONA_CONTACTOValue: String; +begin + result := DataTable.Fields[idx_ContactosPERSONA_CONTACTO].AsString; +end; + +procedure TContactosDataTableRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPERSONA_CONTACTO].AsString := aValue; +end; + +function TContactosDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_ContactosCALLE].AsString; +end; + +procedure TContactosDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosCALLE].AsString := aValue; +end; + +function TContactosDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_ContactosPOBLACION].AsString; +end; + +procedure TContactosDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPOBLACION].AsString := aValue; +end; + +function TContactosDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_ContactosPROVINCIA].AsString; +end; + +procedure TContactosDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPROVINCIA].AsString := aValue; +end; + +function TContactosDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_ContactosCODIGO_POSTAL].AsString; +end; + +procedure TContactosDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosCODIGO_POSTAL].AsString := aValue; +end; + +function TContactosDataTableRules.GetTELEFONO_1Value: String; +begin + result := DataTable.Fields[idx_ContactosTELEFONO_1].AsString; +end; + +procedure TContactosDataTableRules.SetTELEFONO_1Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosTELEFONO_1].AsString := aValue; +end; + +function TContactosDataTableRules.GetTELEFONO_2Value: String; +begin + result := DataTable.Fields[idx_ContactosTELEFONO_2].AsString; +end; + +procedure TContactosDataTableRules.SetTELEFONO_2Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosTELEFONO_2].AsString := aValue; +end; + +function TContactosDataTableRules.GetMOVIL_1Value: String; +begin + result := DataTable.Fields[idx_ContactosMOVIL_1].AsString; +end; + +procedure TContactosDataTableRules.SetMOVIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosMOVIL_1].AsString := aValue; +end; + +function TContactosDataTableRules.GetMOVIL_2Value: String; +begin + result := DataTable.Fields[idx_ContactosMOVIL_2].AsString; +end; + +procedure TContactosDataTableRules.SetMOVIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosMOVIL_2].AsString := aValue; +end; + +function TContactosDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_ContactosFAX].AsString; +end; + +procedure TContactosDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosFAX].AsString := aValue; +end; + +function TContactosDataTableRules.GetEMAIL_1Value: String; +begin + result := DataTable.Fields[idx_ContactosEMAIL_1].AsString; +end; + +procedure TContactosDataTableRules.SetEMAIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosEMAIL_1].AsString := aValue; +end; + +function TContactosDataTableRules.GetEMAIL_2Value: String; +begin + result := DataTable.Fields[idx_ContactosEMAIL_2].AsString; +end; + +procedure TContactosDataTableRules.SetEMAIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_ContactosEMAIL_2].AsString := aValue; +end; + +function TContactosDataTableRules.GetPAGINA_WEBValue: String; +begin + result := DataTable.Fields[idx_ContactosPAGINA_WEB].AsString; +end; + +procedure TContactosDataTableRules.SetPAGINA_WEBValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosPAGINA_WEB].AsString := aValue; +end; + +function TContactosDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_ContactosNOTAS].AsString; +end; + +procedure TContactosDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_ContactosNOTAS].AsString := aValue.Text; +end; + +function TContactosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_ContactosUSUARIO].AsString; +end; + +procedure TContactosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosUSUARIO].AsString := aValue; +end; + +function TContactosDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_ContactosID_EMPRESA].AsInteger; +end; + +procedure TContactosDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosID_EMPRESA].AsInteger := aValue; +end; + +function TContactosDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_ContactosREFERENCIA].AsString; +end; + +procedure TContactosDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ContactosREFERENCIA].AsString := aValue; +end; + + +{ TGruposClienteDataTableRules } +constructor TGruposClienteDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TGruposClienteDataTableRules.Destroy; +begin + inherited; +end; + +function TGruposClienteDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_GruposClienteDESCRIPCION].AsString; +end; + +procedure TGruposClienteDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_GruposClienteDESCRIPCION].AsString := aValue; +end; + + +{ TDatosBancariosDataTableRules } +constructor TDatosBancariosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDatosBancariosDataTableRules.Destroy; +begin + inherited; +end; + +function TDatosBancariosDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_DatosBancariosID].AsInteger; +end; + +procedure TDatosBancariosDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_DatosBancariosID].AsInteger := aValue; +end; + +function TDatosBancariosDataTableRules.GetID_CONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_DatosBancariosID_CONTACTO].AsInteger; +end; + +procedure TDatosBancariosDataTableRules.SetID_CONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DatosBancariosID_CONTACTO].AsInteger := aValue; +end; + +function TDatosBancariosDataTableRules.GetTITULARValue: String; +begin + result := DataTable.Fields[idx_DatosBancariosTITULAR].AsString; +end; + +procedure TDatosBancariosDataTableRules.SetTITULARValue(const aValue: String); +begin + DataTable.Fields[idx_DatosBancariosTITULAR].AsString := aValue; +end; + +function TDatosBancariosDataTableRules.GetENTIDADValue: String; +begin + result := DataTable.Fields[idx_DatosBancariosENTIDAD].AsString; +end; + +procedure TDatosBancariosDataTableRules.SetENTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_DatosBancariosENTIDAD].AsString := aValue; +end; + +function TDatosBancariosDataTableRules.GetSUCURSALValue: String; +begin + result := DataTable.Fields[idx_DatosBancariosSUCURSAL].AsString; +end; + +procedure TDatosBancariosDataTableRules.SetSUCURSALValue(const aValue: String); +begin + DataTable.Fields[idx_DatosBancariosSUCURSAL].AsString := aValue; +end; + +function TDatosBancariosDataTableRules.GetDCValue: String; +begin + result := DataTable.Fields[idx_DatosBancariosDC].AsString; +end; + +procedure TDatosBancariosDataTableRules.SetDCValue(const aValue: String); +begin + DataTable.Fields[idx_DatosBancariosDC].AsString := aValue; +end; + +function TDatosBancariosDataTableRules.GetCUENTAValue: String; +begin + result := DataTable.Fields[idx_DatosBancariosCUENTA].AsString; +end; + +procedure TDatosBancariosDataTableRules.SetCUENTAValue(const aValue: String); +begin + DataTable.Fields[idx_DatosBancariosCUENTA].AsString := aValue; +end; + + +{ TContactosCategoriasDataTableRules } +constructor TContactosCategoriasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TContactosCategoriasDataTableRules.Destroy; +begin + inherited; +end; + +function TContactosCategoriasDataTableRules.GetID_CONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_ContactosCategoriasID_CONTACTO].AsInteger; +end; + +procedure TContactosCategoriasDataTableRules.SetID_CONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosCategoriasID_CONTACTO].AsInteger := aValue; +end; + +function TContactosCategoriasDataTableRules.GetID_CATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_ContactosCategoriasID_CATEGORIA].AsInteger; +end; + +procedure TContactosCategoriasDataTableRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ContactosCategoriasID_CATEGORIA].AsInteger := aValue; +end; + + +{ TClientesDataTableRules } +constructor TClientesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TClientesDataTableRules.Destroy; +begin + inherited; +end; + +function TClientesDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID].AsInteger; +end; + +procedure TClientesDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetID_CATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID_CATEGORIA].AsInteger; +end; + +procedure TClientesDataTableRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID_CATEGORIA].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_ClientesNIF_CIF].AsString; +end; + +procedure TClientesDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesNIF_CIF].AsString := aValue; +end; + +function TClientesDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ClientesNOMBRE].AsString; +end; + +procedure TClientesDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesNOMBRE].AsString := aValue; +end; + +function TClientesDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_ClientesCALLE].AsString; +end; + +procedure TClientesDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesCALLE].AsString := aValue; +end; + +function TClientesDataTableRules.GetPERSONA_CONTACTOValue: String; +begin + result := DataTable.Fields[idx_ClientesPERSONA_CONTACTO].AsString; +end; + +procedure TClientesDataTableRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesPERSONA_CONTACTO].AsString := aValue; +end; + +function TClientesDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_ClientesPOBLACION].AsString; +end; + +procedure TClientesDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesPOBLACION].AsString := aValue; +end; + +function TClientesDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_ClientesPROVINCIA].AsString; +end; + +procedure TClientesDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesPROVINCIA].AsString := aValue; +end; + +function TClientesDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_ClientesCODIGO_POSTAL].AsString; +end; + +procedure TClientesDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesCODIGO_POSTAL].AsString := aValue; +end; + +function TClientesDataTableRules.GetTELEFONO_1Value: String; +begin + result := DataTable.Fields[idx_ClientesTELEFONO_1].AsString; +end; + +procedure TClientesDataTableRules.SetTELEFONO_1Value(const aValue: String); +begin + DataTable.Fields[idx_ClientesTELEFONO_1].AsString := aValue; +end; + +function TClientesDataTableRules.GetTELEFONO_2Value: String; +begin + result := DataTable.Fields[idx_ClientesTELEFONO_2].AsString; +end; + +procedure TClientesDataTableRules.SetTELEFONO_2Value(const aValue: String); +begin + DataTable.Fields[idx_ClientesTELEFONO_2].AsString := aValue; +end; + +function TClientesDataTableRules.GetMOVIL_1Value: String; +begin + result := DataTable.Fields[idx_ClientesMOVIL_1].AsString; +end; + +procedure TClientesDataTableRules.SetMOVIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_ClientesMOVIL_1].AsString := aValue; +end; + +function TClientesDataTableRules.GetMOVIL_2Value: String; +begin + result := DataTable.Fields[idx_ClientesMOVIL_2].AsString; +end; + +procedure TClientesDataTableRules.SetMOVIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_ClientesMOVIL_2].AsString := aValue; +end; + +function TClientesDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_ClientesFAX].AsString; +end; + +procedure TClientesDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesFAX].AsString := aValue; +end; + +function TClientesDataTableRules.GetEMAIL_1Value: String; +begin + result := DataTable.Fields[idx_ClientesEMAIL_1].AsString; +end; + +procedure TClientesDataTableRules.SetEMAIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_ClientesEMAIL_1].AsString := aValue; +end; + +function TClientesDataTableRules.GetEMAIL_2Value: String; +begin + result := DataTable.Fields[idx_ClientesEMAIL_2].AsString; +end; + +procedure TClientesDataTableRules.SetEMAIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_ClientesEMAIL_2].AsString := aValue; +end; + +function TClientesDataTableRules.GetPAGINA_WEBValue: String; +begin + result := DataTable.Fields[idx_ClientesPAGINA_WEB].AsString; +end; + +procedure TClientesDataTableRules.SetPAGINA_WEBValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesPAGINA_WEB].AsString := aValue; +end; + +function TClientesDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_ClientesNOTAS].AsString; +end; + +procedure TClientesDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_ClientesNOTAS].AsString := aValue.Text; +end; + +function TClientesDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_ClientesUSUARIO].AsString; +end; + +procedure TClientesDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesUSUARIO].AsString := aValue; +end; + +function TClientesDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID_EMPRESA].AsInteger; +end; + +procedure TClientesDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID_EMPRESA].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_ClientesREFERENCIA].AsString; +end; + +procedure TClientesDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesREFERENCIA].AsString := aValue; +end; + +function TClientesDataTableRules.GetID_TIPO_IVAValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID_TIPO_IVA].AsInteger; +end; + +procedure TClientesDataTableRules.SetID_TIPO_IVAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID_TIPO_IVA].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetREGIMEN_IVAValue: String; +begin + result := DataTable.Fields[idx_ClientesREGIMEN_IVA].AsString; +end; + +procedure TClientesDataTableRules.SetREGIMEN_IVAValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesREGIMEN_IVA].AsString := aValue; +end; + +function TClientesDataTableRules.GetID_FORMA_PAGOValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID_FORMA_PAGO].AsInteger; +end; + +procedure TClientesDataTableRules.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID_FORMA_PAGO].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetTIENDA_WEBValue: Integer; +begin + result := DataTable.Fields[idx_ClientesTIENDA_WEB].AsInteger; +end; + +procedure TClientesDataTableRules.SetTIENDA_WEBValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesTIENDA_WEB].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetRECARGO_EQUIVALENCIAValue: Integer; +begin + result := DataTable.Fields[idx_ClientesRECARGO_EQUIVALENCIA].AsInteger; +end; + +procedure TClientesDataTableRules.SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesRECARGO_EQUIVALENCIA].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetGRUPO_CLIENTEValue: String; +begin + result := DataTable.Fields[idx_ClientesGRUPO_CLIENTE].AsString; +end; + +procedure TClientesDataTableRules.SetGRUPO_CLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesGRUPO_CLIENTE].AsString := aValue; +end; + +function TClientesDataTableRules.GetNOMBRE_COMERCIALValue: String; +begin + result := DataTable.Fields[idx_ClientesNOMBRE_COMERCIAL].AsString; +end; + +procedure TClientesDataTableRules.SetNOMBRE_COMERCIALValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesNOMBRE_COMERCIAL].AsString := aValue; +end; + +function TClientesDataTableRules.GetVENCIMIENTO_FACTURASValue: Integer; +begin + result := DataTable.Fields[idx_ClientesVENCIMIENTO_FACTURAS].AsInteger; +end; + +procedure TClientesDataTableRules.SetVENCIMIENTO_FACTURASValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesVENCIMIENTO_FACTURAS].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetBLOQUEADOValue: Integer; +begin + result := DataTable.Fields[idx_ClientesBLOQUEADO].AsInteger; +end; + +procedure TClientesDataTableRules.SetBLOQUEADOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesBLOQUEADO].AsInteger := aValue; +end; + +function TClientesDataTableRules.GetMOTIVO_BLOQUEOValue: String; +begin + result := DataTable.Fields[idx_ClientesMOTIVO_BLOQUEO].AsString; +end; + +procedure TClientesDataTableRules.SetMOTIVO_BLOQUEOValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesMOTIVO_BLOQUEO].AsString := aValue; +end; + + +{ TProveedoresDataTableRules } +constructor TProveedoresDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TProveedoresDataTableRules.Destroy; +begin + inherited; +end; + +function TProveedoresDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetID_CATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID_CATEGORIA].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID_CATEGORIA].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_ProveedoresNIF_CIF].AsString; +end; + +procedure TProveedoresDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresNIF_CIF].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ProveedoresNOMBRE].AsString; +end; + +procedure TProveedoresDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresNOMBRE].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_ProveedoresCALLE].AsString; +end; + +procedure TProveedoresDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresCALLE].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetPERSONA_CONTACTOValue: String; +begin + result := DataTable.Fields[idx_ProveedoresPERSONA_CONTACTO].AsString; +end; + +procedure TProveedoresDataTableRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresPERSONA_CONTACTO].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_ProveedoresPOBLACION].AsString; +end; + +procedure TProveedoresDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresPOBLACION].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_ProveedoresPROVINCIA].AsString; +end; + +procedure TProveedoresDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresPROVINCIA].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_ProveedoresCODIGO_POSTAL].AsString; +end; + +procedure TProveedoresDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresCODIGO_POSTAL].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetTELEFONO_1Value: String; +begin + result := DataTable.Fields[idx_ProveedoresTELEFONO_1].AsString; +end; + +procedure TProveedoresDataTableRules.SetTELEFONO_1Value(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresTELEFONO_1].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetTELEFONO_2Value: String; +begin + result := DataTable.Fields[idx_ProveedoresTELEFONO_2].AsString; +end; + +procedure TProveedoresDataTableRules.SetTELEFONO_2Value(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresTELEFONO_2].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetMOVIL_1Value: String; +begin + result := DataTable.Fields[idx_ProveedoresMOVIL_1].AsString; +end; + +procedure TProveedoresDataTableRules.SetMOVIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresMOVIL_1].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetMOVIL_2Value: String; +begin + result := DataTable.Fields[idx_ProveedoresMOVIL_2].AsString; +end; + +procedure TProveedoresDataTableRules.SetMOVIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresMOVIL_2].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_ProveedoresFAX].AsString; +end; + +procedure TProveedoresDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresFAX].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetEMAIL_1Value: String; +begin + result := DataTable.Fields[idx_ProveedoresEMAIL_1].AsString; +end; + +procedure TProveedoresDataTableRules.SetEMAIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresEMAIL_1].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetEMAIL_2Value: String; +begin + result := DataTable.Fields[idx_ProveedoresEMAIL_2].AsString; +end; + +procedure TProveedoresDataTableRules.SetEMAIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresEMAIL_2].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetPAGINA_WEBValue: String; +begin + result := DataTable.Fields[idx_ProveedoresPAGINA_WEB].AsString; +end; + +procedure TProveedoresDataTableRules.SetPAGINA_WEBValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresPAGINA_WEB].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_ProveedoresNOTAS].AsString; +end; + +procedure TProveedoresDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_ProveedoresNOTAS].AsString := aValue.Text; +end; + +function TProveedoresDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_ProveedoresUSUARIO].AsString; +end; + +procedure TProveedoresDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresUSUARIO].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID_EMPRESA].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID_EMPRESA].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_ProveedoresREFERENCIA].AsString; +end; + +procedure TProveedoresDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresREFERENCIA].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetID_TIPO_IVAValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID_TIPO_IVA].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetID_TIPO_IVAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID_TIPO_IVA].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetREGIMEN_IVAValue: String; +begin + result := DataTable.Fields[idx_ProveedoresREGIMEN_IVA].AsString; +end; + +procedure TProveedoresDataTableRules.SetREGIMEN_IVAValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresREGIMEN_IVA].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetID_FORMA_PAGOValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID_FORMA_PAGO].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID_FORMA_PAGO].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetTIENDA_WEBValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresTIENDA_WEB].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetTIENDA_WEBValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresTIENDA_WEB].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_ProveedoresDESCUENTO].AsFloat; +end; + +procedure TProveedoresDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_ProveedoresDESCUENTO].AsFloat := aValue; +end; + +function TProveedoresDataTableRules.GetDESCRIPCION_PROVEEDORValue: String; +begin + result := DataTable.Fields[idx_ProveedoresDESCRIPCION_PROVEEDOR].AsString; +end; + +procedure TProveedoresDataTableRules.SetDESCRIPCION_PROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresDESCRIPCION_PROVEEDOR].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetCODIGO_ASIGNADOValue: String; +begin + result := DataTable.Fields[idx_ProveedoresCODIGO_ASIGNADO].AsString; +end; + +procedure TProveedoresDataTableRules.SetCODIGO_ASIGNADOValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresCODIGO_ASIGNADO].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetHOMOLOGADOValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresHOMOLOGADO].AsInteger; +end; + +procedure TProveedoresDataTableRules.SetHOMOLOGADOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresHOMOLOGADO].AsInteger := aValue; +end; + +function TProveedoresDataTableRules.GetCERTIFICACIONValue: String; +begin + result := DataTable.Fields[idx_ProveedoresCERTIFICACION].AsString; +end; + +procedure TProveedoresDataTableRules.SetCERTIFICACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresCERTIFICACION].AsString := aValue; +end; + +function TProveedoresDataTableRules.GetGRUPO_PROVEEDORValue: String; +begin + result := DataTable.Fields[idx_ProveedoresGRUPO_PROVEEDOR].AsString; +end; + +procedure TProveedoresDataTableRules.SetGRUPO_PROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresGRUPO_PROVEEDOR].AsString := aValue; +end; + + +{ TEmpleadosDataTableRules } +constructor TEmpleadosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TEmpleadosDataTableRules.Destroy; +begin + inherited; +end; + +function TEmpleadosDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_EmpleadosID].AsInteger; +end; + +procedure TEmpleadosDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpleadosID].AsInteger := aValue; +end; + +function TEmpleadosDataTableRules.GetID_CATEGORIAValue: Integer; +begin + result := DataTable.Fields[idx_EmpleadosID_CATEGORIA].AsInteger; +end; + +procedure TEmpleadosDataTableRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpleadosID_CATEGORIA].AsInteger := aValue; +end; + +function TEmpleadosDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_EmpleadosNIF_CIF].AsString; +end; + +procedure TEmpleadosDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosNIF_CIF].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_EmpleadosNOMBRE].AsString; +end; + +procedure TEmpleadosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosNOMBRE].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_EmpleadosCALLE].AsString; +end; + +procedure TEmpleadosDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosCALLE].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetPERSONA_CONTACTOValue: String; +begin + result := DataTable.Fields[idx_EmpleadosPERSONA_CONTACTO].AsString; +end; + +procedure TEmpleadosDataTableRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosPERSONA_CONTACTO].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_EmpleadosPOBLACION].AsString; +end; + +procedure TEmpleadosDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosPOBLACION].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_EmpleadosPROVINCIA].AsString; +end; + +procedure TEmpleadosDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosPROVINCIA].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_EmpleadosCODIGO_POSTAL].AsString; +end; + +procedure TEmpleadosDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosCODIGO_POSTAL].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetTELEFONO_1Value: String; +begin + result := DataTable.Fields[idx_EmpleadosTELEFONO_1].AsString; +end; + +procedure TEmpleadosDataTableRules.SetTELEFONO_1Value(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosTELEFONO_1].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetTELEFONO_2Value: String; +begin + result := DataTable.Fields[idx_EmpleadosTELEFONO_2].AsString; +end; + +procedure TEmpleadosDataTableRules.SetTELEFONO_2Value(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosTELEFONO_2].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetMOVIL_1Value: String; +begin + result := DataTable.Fields[idx_EmpleadosMOVIL_1].AsString; +end; + +procedure TEmpleadosDataTableRules.SetMOVIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosMOVIL_1].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetMOVIL_2Value: String; +begin + result := DataTable.Fields[idx_EmpleadosMOVIL_2].AsString; +end; + +procedure TEmpleadosDataTableRules.SetMOVIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosMOVIL_2].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_EmpleadosFAX].AsString; +end; + +procedure TEmpleadosDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosFAX].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetEMAIL_1Value: String; +begin + result := DataTable.Fields[idx_EmpleadosEMAIL_1].AsString; +end; + +procedure TEmpleadosDataTableRules.SetEMAIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosEMAIL_1].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetEMAIL_2Value: String; +begin + result := DataTable.Fields[idx_EmpleadosEMAIL_2].AsString; +end; + +procedure TEmpleadosDataTableRules.SetEMAIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosEMAIL_2].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetPAGINA_WEBValue: String; +begin + result := DataTable.Fields[idx_EmpleadosPAGINA_WEB].AsString; +end; + +procedure TEmpleadosDataTableRules.SetPAGINA_WEBValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosPAGINA_WEB].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosNOTAS].AsString; +end; + +procedure TEmpleadosDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosNOTAS].AsString := aValue.Text; +end; + +function TEmpleadosDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_EmpleadosUSUARIO].AsString; +end; + +procedure TEmpleadosDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosUSUARIO].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_EmpleadosID_EMPRESA].AsInteger; +end; + +procedure TEmpleadosDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpleadosID_EMPRESA].AsInteger := aValue; +end; + +function TEmpleadosDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_EmpleadosREFERENCIA].AsString; +end; + +procedure TEmpleadosDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosREFERENCIA].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetCATEGORIAValue: String; +begin + result := DataTable.Fields[idx_EmpleadosCATEGORIA].AsString; +end; + +procedure TEmpleadosDataTableRules.SetCATEGORIAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosCATEGORIA].AsString := aValue; +end; + +function TEmpleadosDataTableRules.GetFECHA_NACIMIENTOValue: DateTime; +begin + result := DataTable.Fields[idx_EmpleadosFECHA_NACIMIENTO].AsDateTime; +end; + +procedure TEmpleadosDataTableRules.SetFECHA_NACIMIENTOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_EmpleadosFECHA_NACIMIENTO].AsDateTime := aValue; +end; + +function TEmpleadosDataTableRules.GetFECHA_ALTA_EMPRESAValue: DateTime; +begin + result := DataTable.Fields[idx_EmpleadosFECHA_ALTA_EMPRESA].AsDateTime; +end; + +procedure TEmpleadosDataTableRules.SetFECHA_ALTA_EMPRESAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_EmpleadosFECHA_ALTA_EMPRESA].AsDateTime := aValue; +end; + +function TEmpleadosDataTableRules.GetFORMACION_BASEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosFORMACION_BASE].AsString; +end; + +procedure TEmpleadosDataTableRules.SetFORMACION_BASEValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosFORMACION_BASE].AsString := aValue.Text; +end; + +function TEmpleadosDataTableRules.GetFORMACION_COMPLEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosFORMACION_COMPLE].AsString; +end; + +procedure TEmpleadosDataTableRules.SetFORMACION_COMPLEValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosFORMACION_COMPLE].AsString := aValue.Text; +end; + +function TEmpleadosDataTableRules.GetFORMACION_RECIBIDAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosFORMACION_RECIBIDA].AsString; +end; + +procedure TEmpleadosDataTableRules.SetFORMACION_RECIBIDAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosFORMACION_RECIBIDA].AsString := aValue.Text; +end; + +function TEmpleadosDataTableRules.GetEXPERIENCIAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosEXPERIENCIA].AsString; +end; + +procedure TEmpleadosDataTableRules.SetEXPERIENCIAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosEXPERIENCIA].AsString := aValue.Text; +end; + + +{ TDireccionesContactoDataTableRules } +constructor TDireccionesContactoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TDireccionesContactoDataTableRules.Destroy; +begin + inherited; +end; + +function TDireccionesContactoDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_DireccionesContactoID].AsInteger; +end; + +procedure TDireccionesContactoDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_DireccionesContactoID].AsInteger := aValue; +end; + +function TDireccionesContactoDataTableRules.GetID_CONTACTOValue: Integer; +begin + result := DataTable.Fields[idx_DireccionesContactoID_CONTACTO].AsInteger; +end; + +procedure TDireccionesContactoDataTableRules.SetID_CONTACTOValue(const aValue: Integer); +begin + DataTable.Fields[idx_DireccionesContactoID_CONTACTO].AsInteger := aValue; +end; + +function TDireccionesContactoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoNOMBRE].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoNOMBRE].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoCALLE].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoCALLE].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoPOBLACION].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoPOBLACION].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoPROVINCIA].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoPROVINCIA].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoCODIGO_POSTAL].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoCODIGO_POSTAL].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetPERSONA_CONTACTOValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoPERSONA_CONTACTO].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoPERSONA_CONTACTO].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetTELEFONOValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoTELEFONO].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetTELEFONOValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoTELEFONO].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetMOVILValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoMOVIL].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetMOVILValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoMOVIL].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoFAX].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoFAX].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetEMAILValue: String; +begin + result := DataTable.Fields[idx_DireccionesContactoEMAIL].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetEMAILValue(const aValue: String); +begin + DataTable.Fields[idx_DireccionesContactoEMAIL].AsString := aValue; +end; + +function TDireccionesContactoDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_DireccionesContactoNOTAS].AsString; +end; + +procedure TDireccionesContactoDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_DireccionesContactoNOTAS].AsString := aValue.Text; +end; + +function TDireccionesContactoDataTableRules.GetPORTEValue: Float; +begin + result := DataTable.Fields[idx_DireccionesContactoPORTE].AsFloat; +end; + +procedure TDireccionesContactoDataTableRules.SetPORTEValue(const aValue: Float); +begin + DataTable.Fields[idx_DireccionesContactoPORTE].AsFloat := aValue; +end; + + +{ TClientesDescuentosDataTableRules } +constructor TClientesDescuentosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TClientesDescuentosDataTableRules.Destroy; +begin + inherited; +end; + +function TClientesDescuentosDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_ClientesDescuentosID].AsInteger; +end; + +procedure TClientesDescuentosDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesDescuentosID].AsInteger := aValue; +end; + +function TClientesDescuentosDataTableRules.GetID_CLIENTEValue: Integer; +begin + result := DataTable.Fields[idx_ClientesDescuentosID_CLIENTE].AsInteger; +end; + +procedure TClientesDescuentosDataTableRules.SetID_CLIENTEValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesDescuentosID_CLIENTE].AsInteger := aValue; +end; + +function TClientesDescuentosDataTableRules.GetID_PROVEEDORValue: Integer; +begin + result := DataTable.Fields[idx_ClientesDescuentosID_PROVEEDOR].AsInteger; +end; + +procedure TClientesDescuentosDataTableRules.SetID_PROVEEDORValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesDescuentosID_PROVEEDOR].AsInteger := aValue; +end; + +function TClientesDescuentosDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ClientesDescuentosNOMBRE].AsString; +end; + +procedure TClientesDescuentosDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesDescuentosNOMBRE].AsString := aValue; +end; + +function TClientesDescuentosDataTableRules.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_ClientesDescuentosDESCUENTO].AsFloat; +end; + +procedure TClientesDescuentosDataTableRules.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_ClientesDescuentosDESCUENTO].AsFloat := aValue; +end; + + +{ TGruposProveedorDataTableRules } +constructor TGruposProveedorDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TGruposProveedorDataTableRules.Destroy; +begin + inherited; +end; + +function TGruposProveedorDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_GruposProveedorDESCRIPCION].AsString; +end; + +procedure TGruposProveedorDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_GruposProveedorDESCRIPCION].AsString := aValue; +end; + + +{ TGruposEmpleadoDataTableRules } +constructor TGruposEmpleadoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TGruposEmpleadoDataTableRules.Destroy; +begin + inherited; +end; + +function TGruposEmpleadoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_GruposEmpleadoDESCRIPCION].AsString; +end; + +procedure TGruposEmpleadoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_GruposEmpleadoDESCRIPCION].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_Contactos, TContactosDataTableRules); + RegisterDataTableRules(RID_GruposCliente, TGruposClienteDataTableRules); + RegisterDataTableRules(RID_DatosBancarios, TDatosBancariosDataTableRules); + RegisterDataTableRules(RID_ContactosCategorias, TContactosCategoriasDataTableRules); + RegisterDataTableRules(RID_Clientes, TClientesDataTableRules); + RegisterDataTableRules(RID_Proveedores, TProveedoresDataTableRules); + RegisterDataTableRules(RID_Empleados, TEmpleadosDataTableRules); + RegisterDataTableRules(RID_DireccionesContacto, TDireccionesContactoDataTableRules); + RegisterDataTableRules(RID_ClientesDescuentos, TClientesDescuentosDataTableRules); + RegisterDataTableRules(RID_GruposProveedor, TGruposProveedorDataTableRules); + RegisterDataTableRules(RID_GruposEmpleado, TGruposEmpleadoDataTableRules); + +end. diff --git a/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas b/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas new file mode 100644 index 00000000..bacbb9a3 --- /dev/null +++ b/Source/Modulos/Contactos/Model/schContactosServer_Intf.pas @@ -0,0 +1,3559 @@ +unit schContactosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schContactosClient_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_ContactosDelta = '{AA1FED77-C1C8-4EA9-9B07-E74C63CBF307}'; + RID_GruposClienteDelta = '{4D46364E-1E11-4648-A9C7-AE4B81FB675C}'; + RID_DatosBancariosDelta = '{D4227F74-9431-45EA-8F09-20FFE80E34B1}'; + RID_ContactosCategoriasDelta = '{EB18171B-206D-4CFF-97FF-CB91350EAF4C}'; + RID_ClientesDelta = '{6C588001-84B7-4F1C-9C6B-84A254E1EA7D}'; + RID_ProveedoresDelta = '{168C19DE-0AD5-40CB-B737-628846E311FE}'; + RID_EmpleadosDelta = '{6544E069-D22D-49D4-AAFE-47DD92FA7744}'; + RID_DireccionesContactoDelta = '{D6123AD7-AA38-4AEF-9E89-E713C83A3DDC}'; + RID_ClientesDescuentosDelta = '{2E020115-E0E9-464F-B175-1BED0E2BF0B1}'; + RID_GruposProveedorDelta = '{14E46C85-BAAE-4A15-B868-EC579AF38A8A}'; + RID_GruposEmpleadoDelta = '{364591F3-D581-4104-9125-7CE465563DEB}'; + +type + { IContactosDelta } + IContactosDelta = interface(IContactos) + ['{AA1FED77-C1C8-4EA9-9B07-E74C63CBF307}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CATEGORIAValue : Integer; + function GetOldNIF_CIFValue : String; + function GetOldNOMBREValue : String; + function GetOldPERSONA_CONTACTOValue : String; + function GetOldCALLEValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldTELEFONO_1Value : String; + function GetOldTELEFONO_2Value : String; + function GetOldMOVIL_1Value : String; + function GetOldMOVIL_2Value : String; + function GetOldFAXValue : String; + function GetOldEMAIL_1Value : String; + function GetOldEMAIL_2Value : String; + function GetOldPAGINA_WEBValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldUSUARIOValue : String; + function GetOldID_EMPRESAValue : Integer; + function GetOldREFERENCIAValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + end; + + { TContactosBusinessProcessorRules } + TContactosBusinessProcessorRules = class(TDABusinessProcessorRules, IContactos, IContactosDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + function GetOldID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + function GetOldPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + function GetOldTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + function GetOldTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + function GetOldMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + function GetOldMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + function GetOldEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + function GetOldEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + function GetOldPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CATEGORIA : Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property PERSONA_CONTACTO : String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property TELEFONO_1 : String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property TELEFONO_2 : String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property MOVIL_1 : String read GetMOVIL_1Value write SetMOVIL_1Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property MOVIL_2 : String read GetMOVIL_2Value write SetMOVIL_2Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL_1 : String read GetEMAIL_1Value write SetEMAIL_1Value; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property EMAIL_2 : String read GetEMAIL_2Value write SetEMAIL_2Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property PAGINA_WEB : String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IGruposClienteDelta } + IGruposClienteDelta = interface(IGruposCliente) + ['{4D46364E-1E11-4648-A9C7-AE4B81FB675C}'] + { Property getters and setters } + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TGruposClienteBusinessProcessorRules } + TGruposClienteBusinessProcessorRules = class(TDABusinessProcessorRules, IGruposCliente, IGruposClienteDelta) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDatosBancariosDelta } + IDatosBancariosDelta = interface(IDatosBancarios) + ['{D4227F74-9431-45EA-8F09-20FFE80E34B1}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CONTACTOValue : Integer; + function GetOldTITULARValue : String; + function GetOldENTIDADValue : String; + function GetOldSUCURSALValue : String; + function GetOldDCValue : String; + function GetOldCUENTAValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CONTACTO : Integer read GetOldID_CONTACTOValue; + property OldTITULAR : String read GetOldTITULARValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property OldDC : String read GetOldDCValue; + property OldCUENTA : String read GetOldCUENTAValue; + end; + + { TDatosBancariosBusinessProcessorRules } + TDatosBancariosBusinessProcessorRules = class(TDABusinessProcessorRules, IDatosBancarios, IDatosBancariosDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CONTACTOValue: Integer; virtual; + function GetOldID_CONTACTOValue: Integer; virtual; + procedure SetID_CONTACTOValue(const aValue: Integer); virtual; + function GetTITULARValue: String; virtual; + function GetOldTITULARValue: String; virtual; + procedure SetTITULARValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + function GetOldENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + function GetOldSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + function GetOldDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + function GetOldCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CONTACTO : Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property OldID_CONTACTO : Integer read GetOldID_CONTACTOValue; + property TITULAR : String read GetTITULARValue write SetTITULARValue; + property OldTITULAR : String read GetOldTITULARValue; + property ENTIDAD : String read GetENTIDADValue write SetENTIDADValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property SUCURSAL : String read GetSUCURSALValue write SetSUCURSALValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property DC : String read GetDCValue write SetDCValue; + property OldDC : String read GetOldDCValue; + property CUENTA : String read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : String read GetOldCUENTAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IContactosCategoriasDelta } + IContactosCategoriasDelta = interface(IContactosCategorias) + ['{EB18171B-206D-4CFF-97FF-CB91350EAF4C}'] + { Property getters and setters } + function GetOldID_CONTACTOValue : Integer; + function GetOldID_CATEGORIAValue : Integer; + + { Properties } + property OldID_CONTACTO : Integer read GetOldID_CONTACTOValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + end; + + { TContactosCategoriasBusinessProcessorRules } + TContactosCategoriasBusinessProcessorRules = class(TDABusinessProcessorRules, IContactosCategorias, IContactosCategoriasDelta) + private + protected + { Property getters and setters } + function GetID_CONTACTOValue: Integer; virtual; + function GetOldID_CONTACTOValue: Integer; virtual; + procedure SetID_CONTACTOValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + function GetOldID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + + { Properties } + property ID_CONTACTO : Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property OldID_CONTACTO : Integer read GetOldID_CONTACTOValue; + property ID_CATEGORIA : Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IClientesDelta } + IClientesDelta = interface(IClientes) + ['{6C588001-84B7-4F1C-9C6B-84A254E1EA7D}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CATEGORIAValue : Integer; + function GetOldNIF_CIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPERSONA_CONTACTOValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldTELEFONO_1Value : String; + function GetOldTELEFONO_2Value : String; + function GetOldMOVIL_1Value : String; + function GetOldMOVIL_2Value : String; + function GetOldFAXValue : String; + function GetOldEMAIL_1Value : String; + function GetOldEMAIL_2Value : String; + function GetOldPAGINA_WEBValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldUSUARIOValue : String; + function GetOldID_EMPRESAValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldID_TIPO_IVAValue : Integer; + function GetOldREGIMEN_IVAValue : String; + function GetOldID_FORMA_PAGOValue : Integer; + function GetOldTIENDA_WEBValue : Integer; + function GetOldRECARGO_EQUIVALENCIAValue : Integer; + function GetOldGRUPO_CLIENTEValue : String; + function GetOldNOMBRE_COMERCIALValue : String; + function GetOldVENCIMIENTO_FACTURASValue : Integer; + function GetOldBLOQUEADOValue : Integer; + function GetOldMOTIVO_BLOQUEOValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldID_TIPO_IVA : Integer read GetOldID_TIPO_IVAValue; + property OldREGIMEN_IVA : String read GetOldREGIMEN_IVAValue; + property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property OldTIENDA_WEB : Integer read GetOldTIENDA_WEBValue; + property OldRECARGO_EQUIVALENCIA : Integer read GetOldRECARGO_EQUIVALENCIAValue; + property OldGRUPO_CLIENTE : String read GetOldGRUPO_CLIENTEValue; + property OldNOMBRE_COMERCIAL : String read GetOldNOMBRE_COMERCIALValue; + property OldVENCIMIENTO_FACTURAS : Integer read GetOldVENCIMIENTO_FACTURASValue; + property OldBLOQUEADO : Integer read GetOldBLOQUEADOValue; + property OldMOTIVO_BLOQUEO : String read GetOldMOTIVO_BLOQUEOValue; + end; + + { TClientesBusinessProcessorRules } + TClientesBusinessProcessorRules = class(TDABusinessProcessorRules, IClientes, IClientesDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + function GetOldID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + function GetOldPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + function GetOldTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + function GetOldTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + function GetOldMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + function GetOldMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + function GetOldEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + function GetOldEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + function GetOldPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetID_TIPO_IVAValue: Integer; virtual; + function GetOldID_TIPO_IVAValue: Integer; virtual; + procedure SetID_TIPO_IVAValue(const aValue: Integer); virtual; + function GetREGIMEN_IVAValue: String; virtual; + function GetOldREGIMEN_IVAValue: String; virtual; + procedure SetREGIMEN_IVAValue(const aValue: String); virtual; + function GetID_FORMA_PAGOValue: Integer; virtual; + function GetOldID_FORMA_PAGOValue: Integer; virtual; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; + function GetTIENDA_WEBValue: Integer; virtual; + function GetOldTIENDA_WEBValue: Integer; virtual; + procedure SetTIENDA_WEBValue(const aValue: Integer); virtual; + function GetRECARGO_EQUIVALENCIAValue: Integer; virtual; + function GetOldRECARGO_EQUIVALENCIAValue: Integer; virtual; + procedure SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); virtual; + function GetGRUPO_CLIENTEValue: String; virtual; + function GetOldGRUPO_CLIENTEValue: String; virtual; + procedure SetGRUPO_CLIENTEValue(const aValue: String); virtual; + function GetNOMBRE_COMERCIALValue: String; virtual; + function GetOldNOMBRE_COMERCIALValue: String; virtual; + procedure SetNOMBRE_COMERCIALValue(const aValue: String); virtual; + function GetVENCIMIENTO_FACTURASValue: Integer; virtual; + function GetOldVENCIMIENTO_FACTURASValue: Integer; virtual; + procedure SetVENCIMIENTO_FACTURASValue(const aValue: Integer); virtual; + function GetBLOQUEADOValue: Integer; virtual; + function GetOldBLOQUEADOValue: Integer; virtual; + procedure SetBLOQUEADOValue(const aValue: Integer); virtual; + function GetMOTIVO_BLOQUEOValue: String; virtual; + function GetOldMOTIVO_BLOQUEOValue: String; virtual; + procedure SetMOTIVO_BLOQUEOValue(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CATEGORIA : Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PERSONA_CONTACTO : String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property TELEFONO_1 : String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property TELEFONO_2 : String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property MOVIL_1 : String read GetMOVIL_1Value write SetMOVIL_1Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property MOVIL_2 : String read GetMOVIL_2Value write SetMOVIL_2Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL_1 : String read GetEMAIL_1Value write SetEMAIL_1Value; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property EMAIL_2 : String read GetEMAIL_2Value write SetEMAIL_2Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property PAGINA_WEB : String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property ID_TIPO_IVA : Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property OldID_TIPO_IVA : Integer read GetOldID_TIPO_IVAValue; + property REGIMEN_IVA : String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property OldREGIMEN_IVA : String read GetOldREGIMEN_IVAValue; + property ID_FORMA_PAGO : Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property TIENDA_WEB : Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property OldTIENDA_WEB : Integer read GetOldTIENDA_WEBValue; + property RECARGO_EQUIVALENCIA : Integer read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue; + property OldRECARGO_EQUIVALENCIA : Integer read GetOldRECARGO_EQUIVALENCIAValue; + property GRUPO_CLIENTE : String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; + property OldGRUPO_CLIENTE : String read GetOldGRUPO_CLIENTEValue; + property NOMBRE_COMERCIAL : String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue; + property OldNOMBRE_COMERCIAL : String read GetOldNOMBRE_COMERCIALValue; + property VENCIMIENTO_FACTURAS : Integer read GetVENCIMIENTO_FACTURASValue write SetVENCIMIENTO_FACTURASValue; + property OldVENCIMIENTO_FACTURAS : Integer read GetOldVENCIMIENTO_FACTURASValue; + property BLOQUEADO : Integer read GetBLOQUEADOValue write SetBLOQUEADOValue; + property OldBLOQUEADO : Integer read GetOldBLOQUEADOValue; + property MOTIVO_BLOQUEO : String read GetMOTIVO_BLOQUEOValue write SetMOTIVO_BLOQUEOValue; + property OldMOTIVO_BLOQUEO : String read GetOldMOTIVO_BLOQUEOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IProveedoresDelta } + IProveedoresDelta = interface(IProveedores) + ['{168C19DE-0AD5-40CB-B737-628846E311FE}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CATEGORIAValue : Integer; + function GetOldNIF_CIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPERSONA_CONTACTOValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldTELEFONO_1Value : String; + function GetOldTELEFONO_2Value : String; + function GetOldMOVIL_1Value : String; + function GetOldMOVIL_2Value : String; + function GetOldFAXValue : String; + function GetOldEMAIL_1Value : String; + function GetOldEMAIL_2Value : String; + function GetOldPAGINA_WEBValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldUSUARIOValue : String; + function GetOldID_EMPRESAValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldID_TIPO_IVAValue : Integer; + function GetOldREGIMEN_IVAValue : String; + function GetOldID_FORMA_PAGOValue : Integer; + function GetOldTIENDA_WEBValue : Integer; + function GetOldDESCUENTOValue : Float; + function GetOldDESCRIPCION_PROVEEDORValue : String; + function GetOldCODIGO_ASIGNADOValue : String; + function GetOldHOMOLOGADOValue : Integer; + function GetOldCERTIFICACIONValue : String; + function GetOldGRUPO_PROVEEDORValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldID_TIPO_IVA : Integer read GetOldID_TIPO_IVAValue; + property OldREGIMEN_IVA : String read GetOldREGIMEN_IVAValue; + property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property OldTIENDA_WEB : Integer read GetOldTIENDA_WEBValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property OldDESCRIPCION_PROVEEDOR : String read GetOldDESCRIPCION_PROVEEDORValue; + property OldCODIGO_ASIGNADO : String read GetOldCODIGO_ASIGNADOValue; + property OldHOMOLOGADO : Integer read GetOldHOMOLOGADOValue; + property OldCERTIFICACION : String read GetOldCERTIFICACIONValue; + property OldGRUPO_PROVEEDOR : String read GetOldGRUPO_PROVEEDORValue; + end; + + { TProveedoresBusinessProcessorRules } + TProveedoresBusinessProcessorRules = class(TDABusinessProcessorRules, IProveedores, IProveedoresDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + function GetOldID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + function GetOldPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + function GetOldTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + function GetOldTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + function GetOldMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + function GetOldMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + function GetOldEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + function GetOldEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + function GetOldPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetID_TIPO_IVAValue: Integer; virtual; + function GetOldID_TIPO_IVAValue: Integer; virtual; + procedure SetID_TIPO_IVAValue(const aValue: Integer); virtual; + function GetREGIMEN_IVAValue: String; virtual; + function GetOldREGIMEN_IVAValue: String; virtual; + procedure SetREGIMEN_IVAValue(const aValue: String); virtual; + function GetID_FORMA_PAGOValue: Integer; virtual; + function GetOldID_FORMA_PAGOValue: Integer; virtual; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; + function GetTIENDA_WEBValue: Integer; virtual; + function GetOldTIENDA_WEBValue: Integer; virtual; + procedure SetTIENDA_WEBValue(const aValue: Integer); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + function GetDESCRIPCION_PROVEEDORValue: String; virtual; + function GetOldDESCRIPCION_PROVEEDORValue: String; virtual; + procedure SetDESCRIPCION_PROVEEDORValue(const aValue: String); virtual; + function GetCODIGO_ASIGNADOValue: String; virtual; + function GetOldCODIGO_ASIGNADOValue: String; virtual; + procedure SetCODIGO_ASIGNADOValue(const aValue: String); virtual; + function GetHOMOLOGADOValue: Integer; virtual; + function GetOldHOMOLOGADOValue: Integer; virtual; + procedure SetHOMOLOGADOValue(const aValue: Integer); virtual; + function GetCERTIFICACIONValue: String; virtual; + function GetOldCERTIFICACIONValue: String; virtual; + procedure SetCERTIFICACIONValue(const aValue: String); virtual; + function GetGRUPO_PROVEEDORValue: String; virtual; + function GetOldGRUPO_PROVEEDORValue: String; virtual; + procedure SetGRUPO_PROVEEDORValue(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CATEGORIA : Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PERSONA_CONTACTO : String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property TELEFONO_1 : String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property TELEFONO_2 : String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property MOVIL_1 : String read GetMOVIL_1Value write SetMOVIL_1Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property MOVIL_2 : String read GetMOVIL_2Value write SetMOVIL_2Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL_1 : String read GetEMAIL_1Value write SetEMAIL_1Value; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property EMAIL_2 : String read GetEMAIL_2Value write SetEMAIL_2Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property PAGINA_WEB : String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property ID_TIPO_IVA : Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property OldID_TIPO_IVA : Integer read GetOldID_TIPO_IVAValue; + property REGIMEN_IVA : String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property OldREGIMEN_IVA : String read GetOldREGIMEN_IVAValue; + property ID_FORMA_PAGO : Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property TIENDA_WEB : Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property OldTIENDA_WEB : Integer read GetOldTIENDA_WEBValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + property DESCRIPCION_PROVEEDOR : String read GetDESCRIPCION_PROVEEDORValue write SetDESCRIPCION_PROVEEDORValue; + property OldDESCRIPCION_PROVEEDOR : String read GetOldDESCRIPCION_PROVEEDORValue; + property CODIGO_ASIGNADO : String read GetCODIGO_ASIGNADOValue write SetCODIGO_ASIGNADOValue; + property OldCODIGO_ASIGNADO : String read GetOldCODIGO_ASIGNADOValue; + property HOMOLOGADO : Integer read GetHOMOLOGADOValue write SetHOMOLOGADOValue; + property OldHOMOLOGADO : Integer read GetOldHOMOLOGADOValue; + property CERTIFICACION : String read GetCERTIFICACIONValue write SetCERTIFICACIONValue; + property OldCERTIFICACION : String read GetOldCERTIFICACIONValue; + property GRUPO_PROVEEDOR : String read GetGRUPO_PROVEEDORValue write SetGRUPO_PROVEEDORValue; + property OldGRUPO_PROVEEDOR : String read GetOldGRUPO_PROVEEDORValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IEmpleadosDelta } + IEmpleadosDelta = interface(IEmpleados) + ['{6544E069-D22D-49D4-AAFE-47DD92FA7744}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CATEGORIAValue : Integer; + function GetOldNIF_CIFValue : String; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPERSONA_CONTACTOValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldTELEFONO_1Value : String; + function GetOldTELEFONO_2Value : String; + function GetOldMOVIL_1Value : String; + function GetOldMOVIL_2Value : String; + function GetOldFAXValue : String; + function GetOldEMAIL_1Value : String; + function GetOldEMAIL_2Value : String; + function GetOldPAGINA_WEBValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldUSUARIOValue : String; + function GetOldID_EMPRESAValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldCATEGORIAValue : String; + function GetOldFECHA_NACIMIENTOValue : DateTime; + function GetOldFECHA_ALTA_EMPRESAValue : DateTime; + function GetOldFORMACION_BASEValue : IROStrings; + function GetOldFORMACION_COMPLEValue : IROStrings; + function GetOldFORMACION_RECIBIDAValue : IROStrings; + function GetOldEXPERIENCIAValue : IROStrings; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + property OldFECHA_NACIMIENTO : DateTime read GetOldFECHA_NACIMIENTOValue; + property OldFECHA_ALTA_EMPRESA : DateTime read GetOldFECHA_ALTA_EMPRESAValue; + property OldFORMACION_BASE : IROStrings read GetOldFORMACION_BASEValue; + property OldFORMACION_COMPLE : IROStrings read GetOldFORMACION_COMPLEValue; + property OldFORMACION_RECIBIDA : IROStrings read GetOldFORMACION_RECIBIDAValue; + property OldEXPERIENCIA : IROStrings read GetOldEXPERIENCIAValue; + end; + + { TEmpleadosBusinessProcessorRules } + TEmpleadosBusinessProcessorRules = class(TDABusinessProcessorRules, IEmpleados, IEmpleadosDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CATEGORIAValue: Integer; virtual; + function GetOldID_CATEGORIAValue: Integer; virtual; + procedure SetID_CATEGORIAValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + function GetOldPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + function GetOldTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + function GetOldTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + function GetOldMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + function GetOldMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + function GetOldEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + function GetOldEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + function GetOldPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetCATEGORIAValue: String; virtual; + function GetOldCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + function GetFECHA_NACIMIENTOValue: DateTime; virtual; + function GetOldFECHA_NACIMIENTOValue: DateTime; virtual; + procedure SetFECHA_NACIMIENTOValue(const aValue: DateTime); virtual; + function GetFECHA_ALTA_EMPRESAValue: DateTime; virtual; + function GetOldFECHA_ALTA_EMPRESAValue: DateTime; virtual; + procedure SetFECHA_ALTA_EMPRESAValue(const aValue: DateTime); virtual; + function GetFORMACION_BASEValue: IROStrings; virtual; + function GetOldFORMACION_BASEValue: IROStrings; virtual; + procedure SetFORMACION_BASEValue(const aValue: IROStrings); virtual; + function GetFORMACION_COMPLEValue: IROStrings; virtual; + function GetOldFORMACION_COMPLEValue: IROStrings; virtual; + procedure SetFORMACION_COMPLEValue(const aValue: IROStrings); virtual; + function GetFORMACION_RECIBIDAValue: IROStrings; virtual; + function GetOldFORMACION_RECIBIDAValue: IROStrings; virtual; + procedure SetFORMACION_RECIBIDAValue(const aValue: IROStrings); virtual; + function GetEXPERIENCIAValue: IROStrings; virtual; + function GetOldEXPERIENCIAValue: IROStrings; virtual; + procedure SetEXPERIENCIAValue(const aValue: IROStrings); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CATEGORIA : Integer read GetID_CATEGORIAValue write SetID_CATEGORIAValue; + property OldID_CATEGORIA : Integer read GetOldID_CATEGORIAValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property PERSONA_CONTACTO : String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property TELEFONO_1 : String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property TELEFONO_2 : String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property MOVIL_1 : String read GetMOVIL_1Value write SetMOVIL_1Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property MOVIL_2 : String read GetMOVIL_2Value write SetMOVIL_2Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL_1 : String read GetEMAIL_1Value write SetEMAIL_1Value; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property EMAIL_2 : String read GetEMAIL_2Value write SetEMAIL_2Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property PAGINA_WEB : String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property CATEGORIA : String read GetCATEGORIAValue write SetCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + property FECHA_NACIMIENTO : DateTime read GetFECHA_NACIMIENTOValue write SetFECHA_NACIMIENTOValue; + property OldFECHA_NACIMIENTO : DateTime read GetOldFECHA_NACIMIENTOValue; + property FECHA_ALTA_EMPRESA : DateTime read GetFECHA_ALTA_EMPRESAValue write SetFECHA_ALTA_EMPRESAValue; + property OldFECHA_ALTA_EMPRESA : DateTime read GetOldFECHA_ALTA_EMPRESAValue; + property FORMACION_BASE : IROStrings read GetFORMACION_BASEValue write SetFORMACION_BASEValue; + property OldFORMACION_BASE : IROStrings read GetOldFORMACION_BASEValue; + property FORMACION_COMPLE : IROStrings read GetFORMACION_COMPLEValue write SetFORMACION_COMPLEValue; + property OldFORMACION_COMPLE : IROStrings read GetOldFORMACION_COMPLEValue; + property FORMACION_RECIBIDA : IROStrings read GetFORMACION_RECIBIDAValue write SetFORMACION_RECIBIDAValue; + property OldFORMACION_RECIBIDA : IROStrings read GetOldFORMACION_RECIBIDAValue; + property EXPERIENCIA : IROStrings read GetEXPERIENCIAValue write SetEXPERIENCIAValue; + property OldEXPERIENCIA : IROStrings read GetOldEXPERIENCIAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IDireccionesContactoDelta } + IDireccionesContactoDelta = interface(IDireccionesContacto) + ['{D6123AD7-AA38-4AEF-9E89-E713C83A3DDC}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CONTACTOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldCALLEValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldPERSONA_CONTACTOValue : String; + function GetOldTELEFONOValue : String; + function GetOldMOVILValue : String; + function GetOldFAXValue : String; + function GetOldEMAILValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldPORTEValue : Float; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CONTACTO : Integer read GetOldID_CONTACTOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property OldTELEFONO : String read GetOldTELEFONOValue; + property OldMOVIL : String read GetOldMOVILValue; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL : String read GetOldEMAILValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldPORTE : Float read GetOldPORTEValue; + end; + + { TDireccionesContactoBusinessProcessorRules } + TDireccionesContactoBusinessProcessorRules = class(TDABusinessProcessorRules, IDireccionesContacto, IDireccionesContactoDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CONTACTOValue: Integer; virtual; + function GetOldID_CONTACTOValue: Integer; virtual; + procedure SetID_CONTACTOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetPERSONA_CONTACTOValue: String; virtual; + function GetOldPERSONA_CONTACTOValue: String; virtual; + procedure SetPERSONA_CONTACTOValue(const aValue: String); virtual; + function GetTELEFONOValue: String; virtual; + function GetOldTELEFONOValue: String; virtual; + procedure SetTELEFONOValue(const aValue: String); virtual; + function GetMOVILValue: String; virtual; + function GetOldMOVILValue: String; virtual; + procedure SetMOVILValue(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAILValue: String; virtual; + function GetOldEMAILValue: String; virtual; + procedure SetEMAILValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetPORTEValue: Float; virtual; + function GetOldPORTEValue: Float; virtual; + procedure SetPORTEValue(const aValue: Float); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CONTACTO : Integer read GetID_CONTACTOValue write SetID_CONTACTOValue; + property OldID_CONTACTO : Integer read GetOldID_CONTACTOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property PERSONA_CONTACTO : String read GetPERSONA_CONTACTOValue write SetPERSONA_CONTACTOValue; + property OldPERSONA_CONTACTO : String read GetOldPERSONA_CONTACTOValue; + property TELEFONO : String read GetTELEFONOValue write SetTELEFONOValue; + property OldTELEFONO : String read GetOldTELEFONOValue; + property MOVIL : String read GetMOVILValue write SetMOVILValue; + property OldMOVIL : String read GetOldMOVILValue; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL : String read GetEMAILValue write SetEMAILValue; + property OldEMAIL : String read GetOldEMAILValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property PORTE : Float read GetPORTEValue write SetPORTEValue; + property OldPORTE : Float read GetOldPORTEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IClientesDescuentosDelta } + IClientesDescuentosDelta = interface(IClientesDescuentos) + ['{2E020115-E0E9-464F-B175-1BED0E2BF0B1}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_CLIENTEValue : Integer; + function GetOldID_PROVEEDORValue : Integer; + function GetOldNOMBREValue : String; + function GetOldDESCUENTOValue : Float; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_CLIENTE : Integer read GetOldID_CLIENTEValue; + property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + end; + + { TClientesDescuentosBusinessProcessorRules } + TClientesDescuentosBusinessProcessorRules = class(TDABusinessProcessorRules, IClientesDescuentos, IClientesDescuentosDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_CLIENTEValue: Integer; virtual; + function GetOldID_CLIENTEValue: Integer; virtual; + procedure SetID_CLIENTEValue(const aValue: Integer); virtual; + function GetID_PROVEEDORValue: Integer; virtual; + function GetOldID_PROVEEDORValue: Integer; virtual; + procedure SetID_PROVEEDORValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetDESCUENTOValue: Float; virtual; + function GetOldDESCUENTOValue: Float; virtual; + procedure SetDESCUENTOValue(const aValue: Float); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_CLIENTE : Integer read GetID_CLIENTEValue write SetID_CLIENTEValue; + property OldID_CLIENTE : Integer read GetOldID_CLIENTEValue; + property ID_PROVEEDOR : Integer read GetID_PROVEEDORValue write SetID_PROVEEDORValue; + property OldID_PROVEEDOR : Integer read GetOldID_PROVEEDORValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property DESCUENTO : Float read GetDESCUENTOValue write SetDESCUENTOValue; + property OldDESCUENTO : Float read GetOldDESCUENTOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IGruposProveedorDelta } + IGruposProveedorDelta = interface(IGruposProveedor) + ['{14E46C85-BAAE-4A15-B868-EC579AF38A8A}'] + { Property getters and setters } + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TGruposProveedorBusinessProcessorRules } + TGruposProveedorBusinessProcessorRules = class(TDABusinessProcessorRules, IGruposProveedor, IGruposProveedorDelta) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IGruposEmpleadoDelta } + IGruposEmpleadoDelta = interface(IGruposEmpleado) + ['{364591F3-D581-4104-9125-7CE465563DEB}'] + { Property getters and setters } + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TGruposEmpleadoBusinessProcessorRules } + TGruposEmpleadoBusinessProcessorRules = class(TDABusinessProcessorRules, IGruposEmpleado, IGruposEmpleadoDelta) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TContactosBusinessProcessorRules } +constructor TContactosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TContactosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TContactosBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosID]; +end; + +function TContactosBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosID]; +end; + +procedure TContactosBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosID] := aValue; +end; + +function TContactosBusinessProcessorRules.GetID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosID_CATEGORIA]; +end; + +function TContactosBusinessProcessorRules.GetOldID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosID_CATEGORIA]; +end; + +procedure TContactosBusinessProcessorRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosID_CATEGORIA] := aValue; +end; + +function TContactosBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNIF_CIF]; +end; + +function TContactosBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNIF_CIF]; +end; + +procedure TContactosBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNIF_CIF] := aValue; +end; + +function TContactosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOMBRE]; +end; + +function TContactosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNOMBRE]; +end; + +procedure TContactosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOMBRE] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPERSONA_CONTACTO]; +end; + +function TContactosBusinessProcessorRules.GetOldPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPERSONA_CONTACTO]; +end; + +procedure TContactosBusinessProcessorRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPERSONA_CONTACTO] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCALLE]; +end; + +function TContactosBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCALLE]; +end; + +procedure TContactosBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCALLE] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPOBLACION]; +end; + +function TContactosBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPOBLACION]; +end; + +procedure TContactosBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPOBLACION] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPROVINCIA]; +end; + +function TContactosBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPROVINCIA]; +end; + +procedure TContactosBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPROVINCIA] := aValue; +end; + +function TContactosBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGO_POSTAL]; +end; + +function TContactosBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCODIGO_POSTAL]; +end; + +procedure TContactosBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCODIGO_POSTAL] := aValue; +end; + +function TContactosBusinessProcessorRules.GetTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO_1]; +end; + +function TContactosBusinessProcessorRules.GetOldTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosTELEFONO_1]; +end; + +procedure TContactosBusinessProcessorRules.SetTELEFONO_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO_1] := aValue; +end; + +function TContactosBusinessProcessorRules.GetTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO_2]; +end; + +function TContactosBusinessProcessorRules.GetOldTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosTELEFONO_2]; +end; + +procedure TContactosBusinessProcessorRules.SetTELEFONO_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosTELEFONO_2] := aValue; +end; + +function TContactosBusinessProcessorRules.GetMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL_1]; +end; + +function TContactosBusinessProcessorRules.GetOldMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosMOVIL_1]; +end; + +procedure TContactosBusinessProcessorRules.SetMOVIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL_1] := aValue; +end; + +function TContactosBusinessProcessorRules.GetMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL_2]; +end; + +function TContactosBusinessProcessorRules.GetOldMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosMOVIL_2]; +end; + +procedure TContactosBusinessProcessorRules.SetMOVIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosMOVIL_2] := aValue; +end; + +function TContactosBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFAX]; +end; + +function TContactosBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosFAX]; +end; + +procedure TContactosBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosFAX] := aValue; +end; + +function TContactosBusinessProcessorRules.GetEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosEMAIL_1]; +end; + +function TContactosBusinessProcessorRules.GetOldEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosEMAIL_1]; +end; + +procedure TContactosBusinessProcessorRules.SetEMAIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosEMAIL_1] := aValue; +end; + +function TContactosBusinessProcessorRules.GetEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosEMAIL_2]; +end; + +function TContactosBusinessProcessorRules.GetOldEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosEMAIL_2]; +end; + +procedure TContactosBusinessProcessorRules.SetEMAIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosEMAIL_2] := aValue; +end; + +function TContactosBusinessProcessorRules.GetPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPAGINA_WEB]; +end; + +function TContactosBusinessProcessorRules.GetOldPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosPAGINA_WEB]; +end; + +procedure TContactosBusinessProcessorRules.SetPAGINA_WEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosPAGINA_WEB] := aValue; +end; + +function TContactosBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOTAS]; +end; + +function TContactosBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosNOTAS]; +end; + +procedure TContactosBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosNOTAS] := aValue.Text; +end; + +function TContactosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosUSUARIO]; +end; + +function TContactosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosUSUARIO]; +end; + +procedure TContactosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosUSUARIO] := aValue; +end; + +function TContactosBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosID_EMPRESA]; +end; + +function TContactosBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosID_EMPRESA]; +end; + +procedure TContactosBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosID_EMPRESA] := aValue; +end; + +function TContactosBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosREFERENCIA]; +end; + +function TContactosBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosREFERENCIA]; +end; + +procedure TContactosBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosREFERENCIA] := aValue; +end; + + +{ TGruposClienteBusinessProcessorRules } +constructor TGruposClienteBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TGruposClienteBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TGruposClienteBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GruposClienteDESCRIPCION]; +end; + +function TGruposClienteBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GruposClienteDESCRIPCION]; +end; + +procedure TGruposClienteBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GruposClienteDESCRIPCION] := aValue; +end; + + +{ TDatosBancariosBusinessProcessorRules } +constructor TDatosBancariosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDatosBancariosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDatosBancariosBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosID]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosID]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosID] := aValue; +end; + +function TDatosBancariosBusinessProcessorRules.GetID_CONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosID_CONTACTO]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldID_CONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosID_CONTACTO]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetID_CONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosID_CONTACTO] := aValue; +end; + +function TDatosBancariosBusinessProcessorRules.GetTITULARValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosTITULAR]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldTITULARValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosTITULAR]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetTITULARValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosTITULAR] := aValue; +end; + +function TDatosBancariosBusinessProcessorRules.GetENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosENTIDAD]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosENTIDAD]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetENTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosENTIDAD] := aValue; +end; + +function TDatosBancariosBusinessProcessorRules.GetSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosSUCURSAL]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosSUCURSAL]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetSUCURSALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosSUCURSAL] := aValue; +end; + +function TDatosBancariosBusinessProcessorRules.GetDCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosDC]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldDCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosDC]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetDCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosDC] := aValue; +end; + +function TDatosBancariosBusinessProcessorRules.GetCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosCUENTA]; +end; + +function TDatosBancariosBusinessProcessorRules.GetOldCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DatosBancariosCUENTA]; +end; + +procedure TDatosBancariosBusinessProcessorRules.SetCUENTAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DatosBancariosCUENTA] := aValue; +end; + + +{ TContactosCategoriasBusinessProcessorRules } +constructor TContactosCategoriasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TContactosCategoriasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TContactosCategoriasBusinessProcessorRules.GetID_CONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCategoriasID_CONTACTO]; +end; + +function TContactosCategoriasBusinessProcessorRules.GetOldID_CONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCategoriasID_CONTACTO]; +end; + +procedure TContactosCategoriasBusinessProcessorRules.SetID_CONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCategoriasID_CONTACTO] := aValue; +end; + +function TContactosCategoriasBusinessProcessorRules.GetID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCategoriasID_CATEGORIA]; +end; + +function TContactosCategoriasBusinessProcessorRules.GetOldID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ContactosCategoriasID_CATEGORIA]; +end; + +procedure TContactosCategoriasBusinessProcessorRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ContactosCategoriasID_CATEGORIA] := aValue; +end; + + +{ TClientesBusinessProcessorRules } +constructor TClientesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TClientesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TClientesBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID]; +end; + +function TClientesBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesID]; +end; + +procedure TClientesBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID] := aValue; +end; + +function TClientesBusinessProcessorRules.GetID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_CATEGORIA]; +end; + +function TClientesBusinessProcessorRules.GetOldID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesID_CATEGORIA]; +end; + +procedure TClientesBusinessProcessorRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_CATEGORIA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNIF_CIF]; +end; + +function TClientesBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesNIF_CIF]; +end; + +procedure TClientesBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNIF_CIF] := aValue; +end; + +function TClientesBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNOMBRE]; +end; + +function TClientesBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesNOMBRE]; +end; + +procedure TClientesBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNOMBRE] := aValue; +end; + +function TClientesBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesCALLE]; +end; + +function TClientesBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesCALLE]; +end; + +procedure TClientesBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesCALLE] := aValue; +end; + +function TClientesBusinessProcessorRules.GetPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPERSONA_CONTACTO]; +end; + +function TClientesBusinessProcessorRules.GetOldPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesPERSONA_CONTACTO]; +end; + +procedure TClientesBusinessProcessorRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPERSONA_CONTACTO] := aValue; +end; + +function TClientesBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPOBLACION]; +end; + +function TClientesBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesPOBLACION]; +end; + +procedure TClientesBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPOBLACION] := aValue; +end; + +function TClientesBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPROVINCIA]; +end; + +function TClientesBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesPROVINCIA]; +end; + +procedure TClientesBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPROVINCIA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesCODIGO_POSTAL]; +end; + +function TClientesBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesCODIGO_POSTAL]; +end; + +procedure TClientesBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesCODIGO_POSTAL] := aValue; +end; + +function TClientesBusinessProcessorRules.GetTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTELEFONO_1]; +end; + +function TClientesBusinessProcessorRules.GetOldTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesTELEFONO_1]; +end; + +procedure TClientesBusinessProcessorRules.SetTELEFONO_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTELEFONO_1] := aValue; +end; + +function TClientesBusinessProcessorRules.GetTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTELEFONO_2]; +end; + +function TClientesBusinessProcessorRules.GetOldTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesTELEFONO_2]; +end; + +procedure TClientesBusinessProcessorRules.SetTELEFONO_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTELEFONO_2] := aValue; +end; + +function TClientesBusinessProcessorRules.GetMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesMOVIL_1]; +end; + +function TClientesBusinessProcessorRules.GetOldMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesMOVIL_1]; +end; + +procedure TClientesBusinessProcessorRules.SetMOVIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesMOVIL_1] := aValue; +end; + +function TClientesBusinessProcessorRules.GetMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesMOVIL_2]; +end; + +function TClientesBusinessProcessorRules.GetOldMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesMOVIL_2]; +end; + +procedure TClientesBusinessProcessorRules.SetMOVIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesMOVIL_2] := aValue; +end; + +function TClientesBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesFAX]; +end; + +function TClientesBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesFAX]; +end; + +procedure TClientesBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesFAX] := aValue; +end; + +function TClientesBusinessProcessorRules.GetEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesEMAIL_1]; +end; + +function TClientesBusinessProcessorRules.GetOldEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesEMAIL_1]; +end; + +procedure TClientesBusinessProcessorRules.SetEMAIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesEMAIL_1] := aValue; +end; + +function TClientesBusinessProcessorRules.GetEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesEMAIL_2]; +end; + +function TClientesBusinessProcessorRules.GetOldEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesEMAIL_2]; +end; + +procedure TClientesBusinessProcessorRules.SetEMAIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesEMAIL_2] := aValue; +end; + +function TClientesBusinessProcessorRules.GetPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPAGINA_WEB]; +end; + +function TClientesBusinessProcessorRules.GetOldPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesPAGINA_WEB]; +end; + +procedure TClientesBusinessProcessorRules.SetPAGINA_WEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesPAGINA_WEB] := aValue; +end; + +function TClientesBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNOTAS]; +end; + +function TClientesBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesNOTAS]; +end; + +procedure TClientesBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNOTAS] := aValue.Text; +end; + +function TClientesBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesUSUARIO]; +end; + +function TClientesBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesUSUARIO]; +end; + +procedure TClientesBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesUSUARIO] := aValue; +end; + +function TClientesBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_EMPRESA]; +end; + +function TClientesBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesID_EMPRESA]; +end; + +procedure TClientesBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_EMPRESA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesREFERENCIA]; +end; + +function TClientesBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesREFERENCIA]; +end; + +procedure TClientesBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesREFERENCIA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetID_TIPO_IVAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_TIPO_IVA]; +end; + +function TClientesBusinessProcessorRules.GetOldID_TIPO_IVAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesID_TIPO_IVA]; +end; + +procedure TClientesBusinessProcessorRules.SetID_TIPO_IVAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_TIPO_IVA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetREGIMEN_IVAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesREGIMEN_IVA]; +end; + +function TClientesBusinessProcessorRules.GetOldREGIMEN_IVAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesREGIMEN_IVA]; +end; + +procedure TClientesBusinessProcessorRules.SetREGIMEN_IVAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesREGIMEN_IVA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetID_FORMA_PAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_FORMA_PAGO]; +end; + +function TClientesBusinessProcessorRules.GetOldID_FORMA_PAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesID_FORMA_PAGO]; +end; + +procedure TClientesBusinessProcessorRules.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesID_FORMA_PAGO] := aValue; +end; + +function TClientesBusinessProcessorRules.GetTIENDA_WEBValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTIENDA_WEB]; +end; + +function TClientesBusinessProcessorRules.GetOldTIENDA_WEBValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesTIENDA_WEB]; +end; + +procedure TClientesBusinessProcessorRules.SetTIENDA_WEBValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesTIENDA_WEB] := aValue; +end; + +function TClientesBusinessProcessorRules.GetRECARGO_EQUIVALENCIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesRECARGO_EQUIVALENCIA]; +end; + +function TClientesBusinessProcessorRules.GetOldRECARGO_EQUIVALENCIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesRECARGO_EQUIVALENCIA]; +end; + +procedure TClientesBusinessProcessorRules.SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesRECARGO_EQUIVALENCIA] := aValue; +end; + +function TClientesBusinessProcessorRules.GetGRUPO_CLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesGRUPO_CLIENTE]; +end; + +function TClientesBusinessProcessorRules.GetOldGRUPO_CLIENTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesGRUPO_CLIENTE]; +end; + +procedure TClientesBusinessProcessorRules.SetGRUPO_CLIENTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesGRUPO_CLIENTE] := aValue; +end; + +function TClientesBusinessProcessorRules.GetNOMBRE_COMERCIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNOMBRE_COMERCIAL]; +end; + +function TClientesBusinessProcessorRules.GetOldNOMBRE_COMERCIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesNOMBRE_COMERCIAL]; +end; + +procedure TClientesBusinessProcessorRules.SetNOMBRE_COMERCIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesNOMBRE_COMERCIAL] := aValue; +end; + +function TClientesBusinessProcessorRules.GetVENCIMIENTO_FACTURASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesVENCIMIENTO_FACTURAS]; +end; + +function TClientesBusinessProcessorRules.GetOldVENCIMIENTO_FACTURASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesVENCIMIENTO_FACTURAS]; +end; + +procedure TClientesBusinessProcessorRules.SetVENCIMIENTO_FACTURASValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesVENCIMIENTO_FACTURAS] := aValue; +end; + +function TClientesBusinessProcessorRules.GetBLOQUEADOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesBLOQUEADO]; +end; + +function TClientesBusinessProcessorRules.GetOldBLOQUEADOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesBLOQUEADO]; +end; + +procedure TClientesBusinessProcessorRules.SetBLOQUEADOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesBLOQUEADO] := aValue; +end; + +function TClientesBusinessProcessorRules.GetMOTIVO_BLOQUEOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesMOTIVO_BLOQUEO]; +end; + +function TClientesBusinessProcessorRules.GetOldMOTIVO_BLOQUEOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesMOTIVO_BLOQUEO]; +end; + +procedure TClientesBusinessProcessorRules.SetMOTIVO_BLOQUEOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesMOTIVO_BLOQUEO] := aValue; +end; + + +{ TProveedoresBusinessProcessorRules } +constructor TProveedoresBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TProveedoresBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TProveedoresBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID]; +end; + +function TProveedoresBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresID]; +end; + +procedure TProveedoresBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_CATEGORIA]; +end; + +function TProveedoresBusinessProcessorRules.GetOldID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresID_CATEGORIA]; +end; + +procedure TProveedoresBusinessProcessorRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_CATEGORIA] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresNIF_CIF]; +end; + +function TProveedoresBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresNIF_CIF]; +end; + +procedure TProveedoresBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresNIF_CIF] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresNOMBRE]; +end; + +function TProveedoresBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresNOMBRE]; +end; + +procedure TProveedoresBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresNOMBRE] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCALLE]; +end; + +function TProveedoresBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresCALLE]; +end; + +procedure TProveedoresBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCALLE] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPERSONA_CONTACTO]; +end; + +function TProveedoresBusinessProcessorRules.GetOldPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresPERSONA_CONTACTO]; +end; + +procedure TProveedoresBusinessProcessorRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPERSONA_CONTACTO] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPOBLACION]; +end; + +function TProveedoresBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresPOBLACION]; +end; + +procedure TProveedoresBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPOBLACION] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPROVINCIA]; +end; + +function TProveedoresBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresPROVINCIA]; +end; + +procedure TProveedoresBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPROVINCIA] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCODIGO_POSTAL]; +end; + +function TProveedoresBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresCODIGO_POSTAL]; +end; + +procedure TProveedoresBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCODIGO_POSTAL] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresTELEFONO_1]; +end; + +function TProveedoresBusinessProcessorRules.GetOldTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresTELEFONO_1]; +end; + +procedure TProveedoresBusinessProcessorRules.SetTELEFONO_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresTELEFONO_1] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresTELEFONO_2]; +end; + +function TProveedoresBusinessProcessorRules.GetOldTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresTELEFONO_2]; +end; + +procedure TProveedoresBusinessProcessorRules.SetTELEFONO_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresTELEFONO_2] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresMOVIL_1]; +end; + +function TProveedoresBusinessProcessorRules.GetOldMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresMOVIL_1]; +end; + +procedure TProveedoresBusinessProcessorRules.SetMOVIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresMOVIL_1] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresMOVIL_2]; +end; + +function TProveedoresBusinessProcessorRules.GetOldMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresMOVIL_2]; +end; + +procedure TProveedoresBusinessProcessorRules.SetMOVIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresMOVIL_2] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresFAX]; +end; + +function TProveedoresBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresFAX]; +end; + +procedure TProveedoresBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresFAX] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresEMAIL_1]; +end; + +function TProveedoresBusinessProcessorRules.GetOldEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresEMAIL_1]; +end; + +procedure TProveedoresBusinessProcessorRules.SetEMAIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresEMAIL_1] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresEMAIL_2]; +end; + +function TProveedoresBusinessProcessorRules.GetOldEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresEMAIL_2]; +end; + +procedure TProveedoresBusinessProcessorRules.SetEMAIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresEMAIL_2] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPAGINA_WEB]; +end; + +function TProveedoresBusinessProcessorRules.GetOldPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresPAGINA_WEB]; +end; + +procedure TProveedoresBusinessProcessorRules.SetPAGINA_WEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresPAGINA_WEB] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresNOTAS]; +end; + +function TProveedoresBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresNOTAS]; +end; + +procedure TProveedoresBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresNOTAS] := aValue.Text; +end; + +function TProveedoresBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresUSUARIO]; +end; + +function TProveedoresBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresUSUARIO]; +end; + +procedure TProveedoresBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresUSUARIO] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_EMPRESA]; +end; + +function TProveedoresBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresID_EMPRESA]; +end; + +procedure TProveedoresBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_EMPRESA] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresREFERENCIA]; +end; + +function TProveedoresBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresREFERENCIA]; +end; + +procedure TProveedoresBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresREFERENCIA] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetID_TIPO_IVAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_TIPO_IVA]; +end; + +function TProveedoresBusinessProcessorRules.GetOldID_TIPO_IVAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresID_TIPO_IVA]; +end; + +procedure TProveedoresBusinessProcessorRules.SetID_TIPO_IVAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_TIPO_IVA] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetREGIMEN_IVAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresREGIMEN_IVA]; +end; + +function TProveedoresBusinessProcessorRules.GetOldREGIMEN_IVAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresREGIMEN_IVA]; +end; + +procedure TProveedoresBusinessProcessorRules.SetREGIMEN_IVAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresREGIMEN_IVA] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetID_FORMA_PAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_FORMA_PAGO]; +end; + +function TProveedoresBusinessProcessorRules.GetOldID_FORMA_PAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresID_FORMA_PAGO]; +end; + +procedure TProveedoresBusinessProcessorRules.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresID_FORMA_PAGO] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetTIENDA_WEBValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresTIENDA_WEB]; +end; + +function TProveedoresBusinessProcessorRules.GetOldTIENDA_WEBValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresTIENDA_WEB]; +end; + +procedure TProveedoresBusinessProcessorRules.SetTIENDA_WEBValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresTIENDA_WEB] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresDESCUENTO]; +end; + +function TProveedoresBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresDESCUENTO]; +end; + +procedure TProveedoresBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresDESCUENTO] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetDESCRIPCION_PROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR]; +end; + +function TProveedoresBusinessProcessorRules.GetOldDESCRIPCION_PROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR]; +end; + +procedure TProveedoresBusinessProcessorRules.SetDESCRIPCION_PROVEEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetCODIGO_ASIGNADOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCODIGO_ASIGNADO]; +end; + +function TProveedoresBusinessProcessorRules.GetOldCODIGO_ASIGNADOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresCODIGO_ASIGNADO]; +end; + +procedure TProveedoresBusinessProcessorRules.SetCODIGO_ASIGNADOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCODIGO_ASIGNADO] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetHOMOLOGADOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresHOMOLOGADO]; +end; + +function TProveedoresBusinessProcessorRules.GetOldHOMOLOGADOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresHOMOLOGADO]; +end; + +procedure TProveedoresBusinessProcessorRules.SetHOMOLOGADOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresHOMOLOGADO] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetCERTIFICACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCERTIFICACION]; +end; + +function TProveedoresBusinessProcessorRules.GetOldCERTIFICACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresCERTIFICACION]; +end; + +procedure TProveedoresBusinessProcessorRules.SetCERTIFICACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresCERTIFICACION] := aValue; +end; + +function TProveedoresBusinessProcessorRules.GetGRUPO_PROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresGRUPO_PROVEEDOR]; +end; + +function TProveedoresBusinessProcessorRules.GetOldGRUPO_PROVEEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ProveedoresGRUPO_PROVEEDOR]; +end; + +procedure TProveedoresBusinessProcessorRules.SetGRUPO_PROVEEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ProveedoresGRUPO_PROVEEDOR] := aValue; +end; + + +{ TEmpleadosBusinessProcessorRules } +constructor TEmpleadosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TEmpleadosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TEmpleadosBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosID]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosID]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosID] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosID_CATEGORIA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldID_CATEGORIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosID_CATEGORIA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetID_CATEGORIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosID_CATEGORIA] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosNIF_CIF]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosNIF_CIF]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosNIF_CIF] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosNOMBRE]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosNOMBRE]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosNOMBRE] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosCALLE]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosCALLE]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosCALLE] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPERSONA_CONTACTO]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosPERSONA_CONTACTO]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPERSONA_CONTACTO] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPOBLACION]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosPOBLACION]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPOBLACION] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPROVINCIA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosPROVINCIA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPROVINCIA] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosCODIGO_POSTAL]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosCODIGO_POSTAL]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosCODIGO_POSTAL] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosTELEFONO_1]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosTELEFONO_1]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetTELEFONO_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosTELEFONO_1] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosTELEFONO_2]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosTELEFONO_2]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetTELEFONO_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosTELEFONO_2] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosMOVIL_1]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosMOVIL_1]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetMOVIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosMOVIL_1] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosMOVIL_2]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosMOVIL_2]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetMOVIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosMOVIL_2] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFAX]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosFAX]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFAX] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosEMAIL_1]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosEMAIL_1]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetEMAIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosEMAIL_1] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosEMAIL_2]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosEMAIL_2]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetEMAIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosEMAIL_2] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPAGINA_WEB]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosPAGINA_WEB]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetPAGINA_WEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosPAGINA_WEB] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosNOTAS]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosNOTAS]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosNOTAS] := aValue.Text; +end; + +function TEmpleadosBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosUSUARIO]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosUSUARIO]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosUSUARIO] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosID_EMPRESA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosID_EMPRESA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosID_EMPRESA] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosREFERENCIA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosREFERENCIA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosREFERENCIA] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosCATEGORIA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosCATEGORIA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetCATEGORIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosCATEGORIA] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetFECHA_NACIMIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFECHA_NACIMIENTO]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldFECHA_NACIMIENTOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosFECHA_NACIMIENTO]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetFECHA_NACIMIENTOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFECHA_NACIMIENTO] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetFECHA_ALTA_EMPRESAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFECHA_ALTA_EMPRESA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldFECHA_ALTA_EMPRESAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosFECHA_ALTA_EMPRESA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetFECHA_ALTA_EMPRESAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFECHA_ALTA_EMPRESA] := aValue; +end; + +function TEmpleadosBusinessProcessorRules.GetFORMACION_BASEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFORMACION_BASE]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldFORMACION_BASEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosFORMACION_BASE]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetFORMACION_BASEValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFORMACION_BASE] := aValue.Text; +end; + +function TEmpleadosBusinessProcessorRules.GetFORMACION_COMPLEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFORMACION_COMPLE]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldFORMACION_COMPLEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosFORMACION_COMPLE]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetFORMACION_COMPLEValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFORMACION_COMPLE] := aValue.Text; +end; + +function TEmpleadosBusinessProcessorRules.GetFORMACION_RECIBIDAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFORMACION_RECIBIDA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldFORMACION_RECIBIDAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosFORMACION_RECIBIDA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetFORMACION_RECIBIDAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosFORMACION_RECIBIDA] := aValue.Text; +end; + +function TEmpleadosBusinessProcessorRules.GetEXPERIENCIAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosEXPERIENCIA]; +end; + +function TEmpleadosBusinessProcessorRules.GetOldEXPERIENCIAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpleadosEXPERIENCIA]; +end; + +procedure TEmpleadosBusinessProcessorRules.SetEXPERIENCIAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpleadosEXPERIENCIA] := aValue.Text; +end; + + +{ TDireccionesContactoBusinessProcessorRules } +constructor TDireccionesContactoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TDireccionesContactoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TDireccionesContactoBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoID]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoID]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoID] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetID_CONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoID_CONTACTO]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldID_CONTACTOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoID_CONTACTO]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetID_CONTACTOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoID_CONTACTO] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoNOMBRE]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoNOMBRE]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoNOMBRE] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoCALLE]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoCALLE]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoCALLE] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPOBLACION]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoPOBLACION]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPOBLACION] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPROVINCIA]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoPROVINCIA]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPROVINCIA] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoCODIGO_POSTAL]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoCODIGO_POSTAL]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoCODIGO_POSTAL] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPERSONA_CONTACTO]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldPERSONA_CONTACTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoPERSONA_CONTACTO]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetPERSONA_CONTACTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPERSONA_CONTACTO] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetTELEFONOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoTELEFONO]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldTELEFONOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoTELEFONO]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetTELEFONOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoTELEFONO] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoMOVIL]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldMOVILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoMOVIL]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetMOVILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoMOVIL] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoFAX]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoFAX]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoFAX] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetEMAILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoEMAIL]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldEMAILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoEMAIL]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetEMAILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoEMAIL] := aValue; +end; + +function TDireccionesContactoBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoNOTAS]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoNOTAS]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoNOTAS] := aValue.Text; +end; + +function TDireccionesContactoBusinessProcessorRules.GetPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPORTE]; +end; + +function TDireccionesContactoBusinessProcessorRules.GetOldPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_DireccionesContactoPORTE]; +end; + +procedure TDireccionesContactoBusinessProcessorRules.SetPORTEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_DireccionesContactoPORTE] := aValue; +end; + + +{ TClientesDescuentosBusinessProcessorRules } +constructor TClientesDescuentosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TClientesDescuentosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TClientesDescuentosBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosID]; +end; + +function TClientesDescuentosBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesDescuentosID]; +end; + +procedure TClientesDescuentosBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosID] := aValue; +end; + +function TClientesDescuentosBusinessProcessorRules.GetID_CLIENTEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosID_CLIENTE]; +end; + +function TClientesDescuentosBusinessProcessorRules.GetOldID_CLIENTEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesDescuentosID_CLIENTE]; +end; + +procedure TClientesDescuentosBusinessProcessorRules.SetID_CLIENTEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosID_CLIENTE] := aValue; +end; + +function TClientesDescuentosBusinessProcessorRules.GetID_PROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosID_PROVEEDOR]; +end; + +function TClientesDescuentosBusinessProcessorRules.GetOldID_PROVEEDORValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesDescuentosID_PROVEEDOR]; +end; + +procedure TClientesDescuentosBusinessProcessorRules.SetID_PROVEEDORValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosID_PROVEEDOR] := aValue; +end; + +function TClientesDescuentosBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosNOMBRE]; +end; + +function TClientesDescuentosBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesDescuentosNOMBRE]; +end; + +procedure TClientesDescuentosBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosNOMBRE] := aValue; +end; + +function TClientesDescuentosBusinessProcessorRules.GetDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosDESCUENTO]; +end; + +function TClientesDescuentosBusinessProcessorRules.GetOldDESCUENTOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ClientesDescuentosDESCUENTO]; +end; + +procedure TClientesDescuentosBusinessProcessorRules.SetDESCUENTOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ClientesDescuentosDESCUENTO] := aValue; +end; + + +{ TGruposProveedorBusinessProcessorRules } +constructor TGruposProveedorBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TGruposProveedorBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TGruposProveedorBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GruposProveedorDESCRIPCION]; +end; + +function TGruposProveedorBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GruposProveedorDESCRIPCION]; +end; + +procedure TGruposProveedorBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GruposProveedorDESCRIPCION] := aValue; +end; + + +{ TGruposEmpleadoBusinessProcessorRules } +constructor TGruposEmpleadoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TGruposEmpleadoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TGruposEmpleadoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GruposEmpleadoDESCRIPCION]; +end; + +function TGruposEmpleadoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GruposEmpleadoDESCRIPCION]; +end; + +procedure TGruposEmpleadoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GruposEmpleadoDESCRIPCION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ContactosDelta, TContactosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_GruposClienteDelta, TGruposClienteBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DatosBancariosDelta, TDatosBancariosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_ContactosCategoriasDelta, TContactosCategoriasBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_ClientesDelta, TClientesBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_ProveedoresDelta, TProveedoresBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_EmpleadosDelta, TEmpleadosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_DireccionesContactoDelta, TDireccionesContactoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_ClientesDescuentosDelta, TClientesDescuentosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_GruposProveedorDelta, TGruposProveedorBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_GruposEmpleadoDelta, TGruposEmpleadoBusinessProcessorRules); + +end. diff --git a/Source/Modulos/Contactos/Model/uBizCategoriasContacto.pas b/Source/Modulos/Contactos/Model/uBizCategoriasContacto.pas new file mode 100644 index 00000000..a54eda33 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizCategoriasContacto.pas @@ -0,0 +1,27 @@ +unit uBizCategoriasContacto; + +interface + +uses + uDAInterfaces, uDADataTable, + schContactosClient_Intf; + +const + BIZ_CLIENT_CATEGORIAS_CONTACTO = 'Client.CategoriasContacto'; + +type + IBizCategoriasContacto = interface(IContactosCategorias) + ['{C056E958-69BE-4819-A6A7-CB7FD6DA0BCB}'] + end; + + TBizCategoriasContacto = class(TContactosCategoriasDataTableRules, IBizCategoriasContacto) + end; + +implementation + + +initialization + RegisterDataTableRules(BIZ_CLIENT_CATEGORIAS_CONTACTO, TBizCategoriasContacto); + + +end. diff --git a/Source/Modulos/Contactos/Model/uBizClientesDescuentos.pas b/Source/Modulos/Contactos/Model/uBizClientesDescuentos.pas new file mode 100644 index 00000000..d5e75abf --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizClientesDescuentos.pas @@ -0,0 +1,47 @@ +unit uBizClientesDescuentos; + +interface + +uses + uDAInterfaces, uDADataTable, + schContactosClient_Intf; + +const + BIZ_CLIENT_CLIENTE_DESCUENTOS = 'Client.ClienteDescuentos'; + +type + IBizClienteDescuentos = interface (IClientesDescuentos) + ['{41EF5532-D013-4976-BE23-6094E4C07CEF}'] + end; + + TBizClienteDescuentos = class(TClientesDescuentosDataTableRules, IBizClienteDescuentos) + private + ContIdAux: Integer; + protected + procedure OnNewRecord(Sender: TDADataTable); override; + public + constructor Create(aDataTable: TDADataTable); override; + end; + +implementation + +{ TBizClienteDescuentos } + +constructor TBizClienteDescuentos.Create(aDataTable: TDADataTable); +begin + inherited; + ContIdAux := -1; +end; + +procedure TBizClienteDescuentos.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := ContIdAux; // -1, -2, -3... + Dec(ContIdAux); +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_CLIENTE_DESCUENTOS, TBizClienteDescuentos); + +end. + diff --git a/Source/Modulos/Contactos/Model/uBizClientesServer.pas b/Source/Modulos/Contactos/Model/uBizClientesServer.pas new file mode 100644 index 00000000..b293b519 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizClientesServer.pas @@ -0,0 +1,125 @@ +unit uBizClientesServer; + +interface + +uses + schContactosServer_Intf, uDAInterfaces, uDADelta, + uDADataTable, uDABusinessProcessor, uBizContactosServer; + +const + BIZ_SERVER_CLIENTE = 'Server.Cliente'; + +type + TBizClienteServer = class(TBizContactosServer) + protected + procedure Insert_Datos_Contacto(aChange: TDADeltaChange); override; + procedure Update_Datos_Contacto(aChange: TDADeltaChange); override; + procedure Delete_Datos_Contacto(aChange: TDADeltaChange); override; + end; + +implementation + +uses + uDataModuleServer, uDAClasses, DARemoteService_Impl, + schContactosClient_Intf, uBusinessUtils; + +{ TBizClienteServer } + +procedure TBizClienteServer.Delete_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_ClientesDatos'); + try + with ACommand do + begin + ParamByName('OLD_ID_CLIENTE').Value := aChange.OldValueByName[fld_ClientesID]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +procedure TBizClienteServer.Insert_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_ClientesDatos'); + try + with ACommand do + begin + ParamByName('ID_CLIENTE').Value := aChange.NewValueByName[fld_ClientesID]; +// ParamByName('ID_AGENTE').Value := aChange.NewValueByName[fld_ClientesID_AGENTE]; + ParamByName('GRUPO_CLIENTE').Value := aChange.NewValueByName[fld_ClientesGRUPO_CLIENTE]; + ParamByName('NOMBRE_COMERCIAL').Value := aChange.NewValueByName[fld_ClientesNOMBRE_COMERCIAL]; + ParamByName('VENCIMIENTO_FACTURAS').Value := aChange.NewValueByName[fld_ClientesVENCIMIENTO_FACTURAS]; + ParamByName('BLOQUEADO').Value := aChange.NewValueByName[fld_ClientesBLOQUEADO]; + ParamByName('MOTIVO_BLOQUEO').Value := aChange.NewValueByName[fld_ClientesMOTIVO_BLOQUEO]; + ParamByName('RECARGO_EQUIVALENCIA').Value := aChange.NewValueByName[fld_ClientesRECARGO_EQUIVALENCIA]; + ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ClientesREGIMEN_IVA]; + ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ClientesID_TIPO_IVA]; + ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ClientesID_FORMA_PAGO]; + ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ClientesTIENDA_WEB]; + + Execute; + end; + finally + ACommand := NIL; + end; +end; + + +procedure TBizClienteServer.Update_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Update_ClientesDatos'); + try + with ACommand do + begin + ParamByName('OLD_ID_CLIENTE').Value := aChange.OldValueByName[fld_ClientesID]; + ParamByName('ID_CLIENTE').Value := aChange.NewValueByName[fld_ClientesID]; +// ParamByName('ID_AGENTE').Value := aChange.NewValueByName[fld_ClientesID_AGENTE]; + ParamByName('GRUPO_CLIENTE').Value := aChange.NewValueByName[fld_ClientesGRUPO_CLIENTE]; + ParamByName('NOMBRE_COMERCIAL').Value := aChange.NewValueByName[fld_ClientesNOMBRE_COMERCIAL]; + ParamByName('VENCIMIENTO_FACTURAS').Value := aChange.NewValueByName[fld_ClientesVENCIMIENTO_FACTURAS]; + ParamByName('BLOQUEADO').Value := aChange.NewValueByName[fld_ClientesBLOQUEADO]; + ParamByName('MOTIVO_BLOQUEO').Value := aChange.NewValueByName[fld_ClientesMOTIVO_BLOQUEO]; + ParamByName('RECARGO_EQUIVALENCIA').Value := aChange.NewValueByName[fld_ClientesRECARGO_EQUIVALENCIA]; + ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ClientesREGIMEN_IVA]; + ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ClientesID_TIPO_IVA]; + ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ClientesID_FORMA_PAGO]; + ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ClientesTIENDA_WEB]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +initialization + RegisterBusinessProcessorRules(BIZ_SERVER_CLIENTE, TBizClienteServer); + +end. diff --git a/Source/Modulos/Contactos/Model/uBizContactos.pas b/Source/Modulos/Contactos/Model/uBizContactos.pas new file mode 100644 index 00000000..dfe8b09a --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizContactos.pas @@ -0,0 +1,797 @@ +unit uBizContactos; + +interface + +uses + uDAInterfaces, uDADataTable, uROClasses, + schContactosClient_Intf, uBizContactosDatosBancarios, uBizCategoriasContacto, + uDBSelectionListUtils, uBizDireccionesContacto, uBizClientesDescuentos; + +const + BIZ_CLIENT_CONTACTO = 'Client.Contacto'; + BIZ_CLIENT_CLIENTE = 'Client.Cliente'; + BIZ_CLIENT_PROVEEDOR = 'Client.Proveedor'; + BIZ_CLIENT_EMPLEADO = 'Client.Empleado'; + + CATEGORIA_CLIENTE = 1; + CATEGORIA_PROVEEDOR = 2; + CATEGORIA_EMPLEADO = 3; + + PROVEEDOR_REGIMEN_IVA = 'General'; + CLIENTE_REGIMEN_IVA = 'General'; + CLIENTE_DIAS_VENCIMIENTO = 15; + CLIENTE_RECARGO_EQUIVALENCIA = 0; + +type + IBizContacto = interface (IContactos) + ['{CD585680-26B6-47A4-B684-89C468670F4A}'] + procedure SetDatosBancarios(AValue : IBizContactosDatosBancarios); + function GetDatosBancarios : IBizContactosDatosBancarios; + property DatosBancarios : IBizContactosDatosBancarios read GetDatosBancarios + write SetDatosBancarios; + + function GetCategoria : String; + property Categoria : String read GetCategoria; + + function _GetCategorias: IBizCategoriasContacto; + procedure _SetCategorias(const Value: IBizCategoriasContacto); + property _Categorias : IBizCategoriasContacto read _GetCategorias + write _SetCategorias; + + function GetDirecciones: IBizDireccionesContacto; + procedure SetDirecciones(const Value: IBizDireccionesContacto); + property Direcciones : IBizDireccionesContacto read GetDirecciones + write SetDirecciones; + + function EsNuevo : Boolean; + end; + + IBizCliente = interface (IBizContacto) + ['{EA48A6AA-AC96-4AD9-B383-F2FD4552EE76}'] + + function GetGRUPO_CLIENTEValue: String; + procedure SetGRUPO_CLIENTEValue(const aValue: String); + + function GetNOMBRE_COMERCIALValue: String; + procedure SetNOMBRE_COMERCIALValue(const aValue: String); + + function GetVENCIMIENTO_FACTURASValue: Integer; + procedure SetVENCIMIENTO_FACTURASValue(const aValue: Integer); + + function GetBLOQUEADOValue: Integer; + procedure SetBLOQUEADOValue(const aValue: Integer); + + function GetMOTIVO_BLOQUEOValue: String; + procedure SetMOTIVO_BLOQUEOValue(const aValue: String); + + function GetRECARGO_EQUIVALENCIAValue: Integer; + procedure SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); + + function GetREGIMEN_IVAValue: String; + procedure SetREGIMEN_IVAValue(const aValue: String); + + function GetID_TIPO_IVAValue: Integer; + procedure SetID_TIPO_IVAValue(const aValue: Integer); + + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + + function GetTIENDA_WEBValue: Integer; + procedure SetTIENDA_WEBValue(const aValue: Integer); + + function GetDescuentos: IBizClienteDescuentos; + procedure SetDescuentos(Value: IBizClienteDescuentos); + property Descuentos: IBizClienteDescuentos read GetDescuentos write SetDescuentos; + + property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; + + property NOMBRE_COMERCIAL: String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue; + property VENCIMIENTO_FACTURAS: Integer read GetVENCIMIENTO_FACTURASValue write SetVENCIMIENTO_FACTURASValue; + property BLOQUEADO: Integer read GetBLOQUEADOValue write SetBLOQUEADOValue; + property MOTIVO_BLOQUEO: String read GetMOTIVO_BLOQUEOValue write SetMOTIVO_BLOQUEOValue; + property RECARGO_EQUIVALENCIA: Integer read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + end; + + IBizProveedor = interface (IBizContacto) + ['{0CC1FBB8-C2F1-4E10-87B9-D4EEB1221299}'] + function GetREGIMEN_IVAValue: String; + procedure SetREGIMEN_IVAValue(const aValue: String); + + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + + function GetDESCRIPCION_PROVEEDORValue: String; + procedure SetDESCRIPCION_PROVEEDORValue(const aValue: String); + + function GetCODIGO_ASIGNADOValue: String; + procedure SetCODIGO_ASIGNADOValue(const aValue: String); + + function GetID_TIPO_IVAValue: Integer; + procedure SetID_TIPO_IVAValue(const aValue: Integer); + + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + + function GetTIENDA_WEBValue: Integer; + procedure SetTIENDA_WEBValue(const aValue: Integer); + + function GetHOMOLOGADOValue: Integer; + procedure SetHOMOLOGADOValue(const aValue: Integer); + + function GetCERTIFICACIONValue: String; + procedure SetCERTIFICACIONValue(const aValue: String); + + function GetGRUPO_PROVEEDORValue: String; + procedure SetGRUPO_PROVEEDORValue(const aValue: String); + + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCRIPCION_PROVEEDOR: String read GetDESCRIPCION_PROVEEDORValue write SetDESCRIPCION_PROVEEDORValue; + property CODIGO_ASIGNADO: String read GetCODIGO_ASIGNADOValue write SetCODIGO_ASIGNADOValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property HOMOLOGADO: Integer read GetHOMOLOGADOValue write SetHOMOLOGADOValue; + property CERTIFICACION: String read GetCERTIFICACIONValue write SetCERTIFICACIONValue; + property GRUPO_PROVEEDOR: String read GetGRUPO_PROVEEDORValue write SetGRUPO_PROVEEDORValue; + end; + + IBizEmpleado = interface (IBizContacto) + ['{CA24021E-A227-47F9-815F-A8565DB0F748}'] + + function GetFECHA_NACIMIENTOValue: TDateTime; + procedure SetFECHA_NACIMIENTOValue(const aValue: TDateTime); + + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + + function GetFECHA_ALTA_EMPRESAValue: TDateTime; + procedure SetFECHA_ALTA_EMPRESAValue(const aValue: TDateTime); + + function GetFORMACION_BASEValue: IROStrings; + procedure SetFORMACION_BASEValue(const aValue: IROStrings); + + function GetFORMACION_COMPLEValue: IROStrings; + procedure SetFORMACION_COMPLEValue(const aValue: IROStrings); + + function GetFORMACION_RECIBIDAValue: IROStrings; + procedure SetFORMACION_RECIBIDAValue(const aValue: IROStrings); + + function GetEXPERIENCIAValue: IROStrings; + procedure SetEXPERIENCIAValue(const aValue: IROStrings); + + property FECHA_NACIMIENTO: TDateTime read GetFECHA_NACIMIENTOValue write SetFECHA_NACIMIENTOValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + property FECHA_ALTA_EMPRESA: TDateTime read GetFECHA_ALTA_EMPRESAValue write SetFECHA_ALTA_EMPRESAValue; + + property FORMACION_BASE: IROStrings read GetFORMACION_BASEValue write SetFORMACION_BASEValue; + property FORMACION_COMPLE: IROStrings read GetFORMACION_COMPLEValue write SetFORMACION_COMPLEValue; + property FORMACION_RECIBIDA: IROStrings read GetFORMACION_RECIBIDAValue write SetFORMACION_RECIBIDAValue; + property EXPERIENCIA: IROStrings read GetEXPERIENCIAValue write SetEXPERIENCIAValue; + end; + + + + TBizContacto = class(TContactosDataTableRules, IBizContacto, ISeleccionable) + protected + FDatosBancarios : IBizContactosDatosBancarios; + FDatosBancariosLink : TDADataSource; + FCategorias : IBizCategoriasContacto; + FCategoriasLink : TDADataSource; + FDirecciones : IBizDireccionesContacto; + FDireccionesLink : TDADataSource; + + FSeleccionableInterface : ISeleccionable; + + function _GetCategorias: IBizCategoriasContacto; + procedure _SetCategorias(const Value: IBizCategoriasContacto); + + procedure SetDatosBancarios(AValue : IBizContactosDatosBancarios); + function GetDatosBancarios : IBizContactosDatosBancarios; + + function GetDirecciones: IBizDireccionesContacto; + procedure SetDirecciones(const Value: IBizDireccionesContacto); + + function GetCategoria : String; + + procedure OnNewRecord(Sender: TDADataTable); override; + public + function EsNuevo : Boolean; + procedure IniciarValoresContactoNuevo; virtual; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + property Categoria : String read GetCategoria; + + property _Categorias : IBizCategoriasContacto read _GetCategorias + write _SetCategorias; + + property DatosBancarios : IBizContactosDatosBancarios read GetDatosBancarios + write SetDatosBancarios; + + property Direcciones : IBizDireccionesContacto read GetDirecciones + write SetDirecciones; + + property SeleccionableInterface : ISeleccionable read FSeleccionableInterface + write FSeleccionableInterface implements ISeleccionable; + end; + + + TBizCliente = class(TBizContacto, IBizCliente) + protected + FDescuentos : IBizClienteDescuentos; + FDescuentosLink : TDADataSource; + + function GetGRUPO_CLIENTEValue: String; + procedure SetGRUPO_CLIENTEValue(const aValue: String); + + function GetNOMBRE_COMERCIALValue: String; + procedure SetNOMBRE_COMERCIALValue(const aValue: String); + + function GetVENCIMIENTO_FACTURASValue: Integer; + procedure SetVENCIMIENTO_FACTURASValue(const aValue: Integer); + + function GetBLOQUEADOValue: Integer; + procedure SetBLOQUEADOValue(const aValue: Integer); + + function GetMOTIVO_BLOQUEOValue: String; + procedure SetMOTIVO_BLOQUEOValue(const aValue: String); + + function GetRECARGO_EQUIVALENCIAValue: Integer; + procedure SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); + + function GetREGIMEN_IVAValue: String; + procedure SetREGIMEN_IVAValue(const aValue: String); + + function GetID_TIPO_IVAValue: Integer; + procedure SetID_TIPO_IVAValue(const aValue: Integer); + + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + + function GetTIENDA_WEBValue: Integer; + procedure SetTIENDA_WEBValue(const aValue: Integer); + + function GetDescuentos: IBizClienteDescuentos; + procedure SetDescuentos(Value: IBizClienteDescuentos); + public + procedure IniciarValoresContactoNuevo; override; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + property Descuentos: IBizClienteDescuentos read GetDescuentos write SetDescuentos; + property GRUPO_CLIENTE: String read GetGRUPO_CLIENTEValue write SetGRUPO_CLIENTEValue; + property NOMBRE_COMERCIAL: String read GetNOMBRE_COMERCIALValue write SetNOMBRE_COMERCIALValue; + property VENCIMIENTO_FACTURAS: Integer read GetVENCIMIENTO_FACTURASValue write SetVENCIMIENTO_FACTURASValue; + property BLOQUEADO: Integer read GetBLOQUEADOValue write SetBLOQUEADOValue; + property MOTIVO_BLOQUEO: String read GetMOTIVO_BLOQUEOValue write SetMOTIVO_BLOQUEOValue; + property RECARGO_EQUIVALENCIA: Integer read GetRECARGO_EQUIVALENCIAValue write SetRECARGO_EQUIVALENCIAValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + end; + + + TBizProveedor = class(TBizContacto, IBizProveedor) + protected + function GetDESCUENTOValue: Float; + procedure SetDESCUENTOValue(const aValue: Float); + + function GetDESCRIPCION_PROVEEDORValue: String; + procedure SetDESCRIPCION_PROVEEDORValue(const aValue: String); + + function GetCODIGO_ASIGNADOValue: String; + procedure SetCODIGO_ASIGNADOValue(const aValue: String); + + function GetREGIMEN_IVAValue: String; + procedure SetREGIMEN_IVAValue(const aValue: String); + + function GetID_TIPO_IVAValue: Integer; + procedure SetID_TIPO_IVAValue(const aValue: Integer); + + function GetTIENDA_WEBValue: Integer; + procedure SetTIENDA_WEBValue(const aValue: Integer); + + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + + function GetHOMOLOGADOValue: Integer; + procedure SetHOMOLOGADOValue(const aValue: Integer); + + function GetCERTIFICACIONValue: String; + procedure SetCERTIFICACIONValue(const aValue: String); + + function GetGRUPO_PROVEEDORValue: String; + procedure SetGRUPO_PROVEEDORValue(const aValue: String); + + public + procedure IniciarValoresContactoNuevo; override; + property DESCUENTO: Float read GetDESCUENTOValue write SetDESCUENTOValue; + property DESCRIPCION_PROVEEDOR: String read GetDESCRIPCION_PROVEEDORValue write SetDESCRIPCION_PROVEEDORValue; + property CODIGO_ASIGNADO: String read GetCODIGO_ASIGNADOValue write SetCODIGO_ASIGNADOValue; + property REGIMEN_IVA: String read GetREGIMEN_IVAValue write SetREGIMEN_IVAValue; + property ID_TIPO_IVA: Integer read GetID_TIPO_IVAValue write SetID_TIPO_IVAValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property TIENDA_WEB: Integer read GetTIENDA_WEBValue write SetTIENDA_WEBValue; + property HOMOLOGADO: Integer read GetHOMOLOGADOValue write SetHOMOLOGADOValue; + property CERTIFICACION: String read GetCERTIFICACIONValue write SetCERTIFICACIONValue; + property GRUPO_PROVEEDOR: String read GetGRUPO_PROVEEDORValue write SetGRUPO_PROVEEDORValue; + end; + + + TBizEmpleado = class(TBizContacto, IBizEmpleado) + protected + function GetFECHA_NACIMIENTOValue: TDateTime; + procedure SetFECHA_NACIMIENTOValue(const aValue: TDateTime); + + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + + function GetFECHA_ALTA_EMPRESAValue: TDateTime; + procedure SetFECHA_ALTA_EMPRESAValue(const aValue: TDateTime); + + function GetFORMACION_BASEValue: IROStrings; + procedure SetFORMACION_BASEValue(const aValue: IROStrings); + + function GetFORMACION_COMPLEValue: IROStrings; + procedure SetFORMACION_COMPLEValue(const aValue: IROStrings); + + function GetFORMACION_RECIBIDAValue: IROStrings; + procedure SetFORMACION_RECIBIDAValue(const aValue: IROStrings); + + function GetEXPERIENCIAValue: IROStrings; + procedure SetEXPERIENCIAValue(const aValue: IROStrings); + + public + property FECHA_NACIMIENTO: TDateTime read GetFECHA_NACIMIENTOValue write SetFECHA_NACIMIENTOValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + property FECHA_ALTA_EMPRESA: TDateTime read GetFECHA_ALTA_EMPRESAValue write SetFECHA_ALTA_EMPRESAValue; + + property FORMACION_BASE: IROStrings read GetFORMACION_BASEValue write SetFORMACION_BASEValue; + property FORMACION_COMPLE: IROStrings read GetFORMACION_COMPLEValue write SetFORMACION_COMPLEValue; + property FORMACION_RECIBIDA: IROStrings read GetFORMACION_RECIBIDAValue write SetFORMACION_RECIBIDAValue; + property EXPERIENCIA: IROStrings read GetEXPERIENCIAValue write SetEXPERIENCIAValue; + procedure IniciarValoresContactoNuevo; override; + end; + + +implementation + +uses + uDataTableUtils, Classes, DateUtils, SysUtils, uDataModuleUsuarios; + +{ TBizContacto } + +constructor TBizContacto.Create(aDataTable: TDADataTable); +begin + inherited; + FCategoriasLink := TDADataSource.Create(NIL); + FCategoriasLink.DataTable := aDataTable; + + FDatosBancariosLink := TDADataSource.Create(NIL); + FDatosBancariosLink.DataTable := aDataTable; + + FDireccionesLink := TDADataSource.Create(NIL); + FDireccionesLink.DataTable := aDataTable; + + FSeleccionableInterface := TSeleccionable.Create(aDataTable); +end; + +destructor TBizContacto.Destroy; +begin + FCategorias := NIL; + FCategoriasLink.Free; + + FDatosBancarios := NIL; + FDatosBancariosLink.Free; + + FDirecciones := NIL; + FDireccionesLink.Free; + + FSeleccionableInterface := NIL; + inherited; +end; + +function TBizContacto.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +function TBizContacto.GetCategoria: String; +begin + case ID_CATEGORIA of + 1 : Result := 'Cliente'; + 2 : Result := 'Proveedor'; + 3 : Result := 'Empleado'; + end; +end; + +function TBizContacto.GetDatosBancarios: IBizContactosDatosBancarios; +begin + Result := FDatosBancarios; +end; + +function TBizContacto.GetDirecciones: IBizDireccionesContacto; +begin + Result := FDirecciones; +end; + +procedure TBizContacto.IniciarValoresContactoNuevo; +begin + // + USUARIO := dmUsuarios.LoginInfo.Usuario; +end; + +procedure TBizContacto.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresContactoNuevo; +end; + +procedure TBizContacto.SetDatosBancarios(AValue: IBizContactosDatosBancarios); +begin + FDatosBancarios := AValue; + EnlazarMaestroDetalle(FDatosBancariosLink, FDatosBancarios); +end; + +procedure TBizContacto.SetDirecciones(const Value: IBizDireccionesContacto); +begin + FDirecciones := Value; + EnlazarMaestroDetalle(FDireccionesLink, FDirecciones); +end; + +function TBizContacto._GetCategorias: IBizCategoriasContacto; +begin + Result := FCategorias; +end; + +procedure TBizContacto._SetCategorias(const Value: IBizCategoriasContacto); +begin + FCategorias := Value; + EnlazarMaestroDetalle(FCategoriasLink, FCategorias); +end; + +{ TBizCliente } + +constructor TBizCliente.Create(aDataTable: TDADataTable); +begin + inherited; + FDescuentos := NIL; + FDescuentosLink := TDADataSource.Create(NIL); + FDescuentosLink.DataTable := aDataTable; +end; + +destructor TBizCliente.Destroy; +begin + FDescuentos := NIL; + FreeAndNIL(FDescuentosLink); + inherited; +end; + +function TBizCliente.GetBLOQUEADOValue: Integer; +begin + result := DataTable.Fields[idx_ClientesBLOQUEADO].AsInteger; +end; + +function TBizCliente.GetDescuentos: IBizClienteDescuentos; +begin + Result := FDescuentos; +end; + +function TBizCliente.GetGRUPO_CLIENTEValue: String; +begin + result := DataTable.Fields[idx_ClientesGRUPO_CLIENTE].AsString; +end; + +function TBizCliente.GetID_FORMA_PAGOValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID_FORMA_PAGO].AsInteger; +end; + +function TBizCliente.GetID_TIPO_IVAValue: Integer; +begin + result := DataTable.Fields[idx_ClientesID_TIPO_IVA].AsInteger; +end; + +function TBizCliente.GetMOTIVO_BLOQUEOValue: String; +begin + result := DataTable.Fields[idx_ClientesMOTIVO_BLOQUEO].AsString; +end; + +function TBizCliente.GetNOMBRE_COMERCIALValue: String; +begin + result := DataTable.Fields[idx_ClientesNOMBRE_COMERCIAL].AsString; +end; + +procedure TBizCliente.SetBLOQUEADOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesBLOQUEADO].AsInteger := aValue; +end; + +procedure TBizCliente.SetDescuentos(Value: IBizClienteDescuentos); +begin + FDescuentos := Value; + EnlazarMaestroDetalle(FDescuentosLink, FDescuentos); +end; + +procedure TBizCliente.SetGRUPO_CLIENTEValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesGRUPO_CLIENTE].AsString := aValue; +end; + +procedure TBizCliente.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID_FORMA_PAGO].AsInteger := aValue; +end; + +procedure TBizCliente.SetID_TIPO_IVAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesID_TIPO_IVA].AsInteger := aValue; +end; + +procedure TBizCliente.SetMOTIVO_BLOQUEOValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesMOTIVO_BLOQUEO].AsString := aValue; +end; + +procedure TBizCliente.SetNOMBRE_COMERCIALValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesNOMBRE_COMERCIAL].AsString := aValue; +end; + +function TBizCliente.GetRECARGO_EQUIVALENCIAValue: Integer; +begin + Result := DataTable.Fields[idx_ClientesRECARGO_EQUIVALENCIA].AsInteger; +end; + +function TBizCliente.GetREGIMEN_IVAValue: String; +begin + Result := DataTable.Fields[idx_ClientesREGIMEN_IVA].AsString; +end; + +function TBizCliente.GetTIENDA_WEBValue: Integer; +begin + result := DataTable.Fields[idx_ClientesTIENDA_WEB].AsInteger; +end; + +function TBizCliente.GetVENCIMIENTO_FACTURASValue: Integer; +begin + result := DataTable.Fields[idx_ClientesVENCIMIENTO_FACTURAS].AsInteger; +end; + +procedure TBizCliente.SetRECARGO_EQUIVALENCIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesRECARGO_EQUIVALENCIA].AsInteger := aValue; +end; + +procedure TBizCliente.SetREGIMEN_IVAValue(const aValue: String); +begin + DataTable.Fields[idx_ClientesREGIMEN_IVA].AsString := aValue; +end; + +procedure TBizCliente.SetTIENDA_WEBValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesTIENDA_WEB].AsInteger := aValue; +end; + +procedure TBizCliente.SetVENCIMIENTO_FACTURASValue(const aValue: Integer); +begin + DataTable.Fields[idx_ClientesVENCIMIENTO_FACTURAS].AsInteger := aValue; +end; + +procedure TBizCliente.IniciarValoresContactoNuevo; +begin + inherited; + ID_CATEGORIA := CATEGORIA_CLIENTE; + VENCIMIENTO_FACTURAS := CLIENTE_DIAS_VENCIMIENTO; + BLOQUEADO := 0; + RECARGO_EQUIVALENCIA := CLIENTE_RECARGO_EQUIVALENCIA; + REGIMEN_IVA := CLIENTE_REGIMEN_IVA; +end; + +{ TBizProveedor } + +function TBizProveedor.GetGRUPO_PROVEEDORValue: String; +begin + result := DataTable.Fields[idx_ProveedoresGRUPO_PROVEEDOR].AsString; +end; + +function TBizProveedor.GetHOMOLOGADOValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresHOMOLOGADO].AsInteger; +end; + +function TBizProveedor.GetID_FORMA_PAGOValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID_FORMA_PAGO].AsInteger; +end; + +function TBizProveedor.GetID_TIPO_IVAValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresID_TIPO_IVA].AsInteger; +end; + +function TBizProveedor.GetREGIMEN_IVAValue: String; +begin + result := DataTable.Fields[idx_ProveedoresREGIMEN_IVA].AsString; +end; + +function TBizProveedor.GetTIENDA_WEBValue: Integer; +begin + result := DataTable.Fields[idx_ProveedoresTIENDA_WEB].AsInteger; +end; + +procedure TBizProveedor.IniciarValoresContactoNuevo; +begin + inherited; + ID_CATEGORIA := CATEGORIA_PROVEEDOR; + REGIMEN_IVA := PROVEEDOR_REGIMEN_IVA; +end; + +function TBizProveedor.GetCERTIFICACIONValue: String; +begin + result := DataTable.Fields[idx_ProveedoresCERTIFICACION].AsString; +end; + +function TBizProveedor.GetCODIGO_ASIGNADOValue: String; +begin + result := DataTable.Fields[idx_ProveedoresCODIGO_ASIGNADO].AsString; +end; + +function TBizProveedor.GetDESCRIPCION_PROVEEDORValue: String; +begin + result := DataTable.Fields[idx_ProveedoresDESCRIPCION_PROVEEDOR].AsString; +end; + +function TBizProveedor.GetDESCUENTOValue: Float; +begin + result := DataTable.Fields[idx_ProveedoresDESCUENTO].AsFloat; +end; + +procedure TBizProveedor.SetCERTIFICACIONValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresCERTIFICACION].AsString := aValue; +end; + +procedure TBizProveedor.SetCODIGO_ASIGNADOValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresCODIGO_ASIGNADO].AsString := aValue; +end; + +procedure TBizProveedor.SetDESCRIPCION_PROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresDESCRIPCION_PROVEEDOR].AsString := aValue; +end; + +procedure TBizProveedor.SetDESCUENTOValue(const aValue: Float); +begin + DataTable.Fields[idx_ProveedoresDESCUENTO].AsFloat := aValue; +end; + +procedure TBizProveedor.SetGRUPO_PROVEEDORValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresGRUPO_PROVEEDOR].AsString := aValue; +end; + +procedure TBizProveedor.SetHOMOLOGADOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresHOMOLOGADO].AsInteger := aValue; +end; + +procedure TBizProveedor.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID_FORMA_PAGO].AsInteger := aValue; +end; + +procedure TBizProveedor.SetID_TIPO_IVAValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresID_TIPO_IVA].AsInteger := aValue; +end; + +procedure TBizProveedor.SetREGIMEN_IVAValue(const aValue: String); +begin + DataTable.Fields[idx_ProveedoresREGIMEN_IVA].AsString := aValue; +end; + +procedure TBizProveedor.SetTIENDA_WEBValue(const aValue: Integer); +begin + DataTable.Fields[idx_ProveedoresTIENDA_WEB].AsInteger := aValue; +end; + + +{ TBizEmpleado } + +function TBizEmpleado.GetCATEGORIAValue: String; +begin + result := DataTable.Fields[idx_EmpleadosCATEGORIA].AsString; +end; + +function TBizEmpleado.GetEXPERIENCIAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosEXPERIENCIA].AsString; +end; + +function TBizEmpleado.GetFECHA_ALTA_EMPRESAValue: TDateTime; +begin + result := DataTable.Fields[idx_EmpleadosFECHA_ALTA_EMPRESA].AsDateTime; +end; + +function TBizEmpleado.GetFECHA_NACIMIENTOValue: TDateTime; +begin + result := DataTable.Fields[idx_EmpleadosFECHA_NACIMIENTO].AsDateTime; +end; + +function TBizEmpleado.GetFORMACION_BASEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosFORMACION_BASE].AsString; +end; + +function TBizEmpleado.GetFORMACION_COMPLEValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosFORMACION_COMPLE].AsString; +end; + +function TBizEmpleado.GetFORMACION_RECIBIDAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpleadosFORMACION_RECIBIDA].AsString; +end; + +procedure TBizEmpleado.IniciarValoresContactoNuevo; +begin + inherited; + ID_CATEGORIA := CATEGORIA_EMPLEADO; +end; + +procedure TBizEmpleado.SetCATEGORIAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpleadosCATEGORIA].AsString := aValue; +end; + +procedure TBizEmpleado.SetEXPERIENCIAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosEXPERIENCIA].AsString := aValue.Text; +end; + +procedure TBizEmpleado.SetFECHA_ALTA_EMPRESAValue(const aValue: TDateTime); +begin + DataTable.Fields[idx_EmpleadosFECHA_ALTA_EMPRESA].AsDateTime := aValue; +end; + +procedure TBizEmpleado.SetFECHA_NACIMIENTOValue(const aValue: TDateTime); +begin + DataTable.Fields[idx_EmpleadosFECHA_NACIMIENTO].AsDateTime := aValue; +end; + +procedure TBizEmpleado.SetFORMACION_BASEValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosFORMACION_BASE].AsString := aValue.Text; +end; + +procedure TBizEmpleado.SetFORMACION_COMPLEValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosFORMACION_COMPLE].AsString := aValue.Text; +end; + +procedure TBizEmpleado.SetFORMACION_RECIBIDAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpleadosFORMACION_RECIBIDA].AsString := aValue.Text; +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_CONTACTO, TBizContacto); + + RegisterDataTableRules(BIZ_CLIENT_CLIENTE, TBizCliente); + RegisterDataTableRules(BIZ_CLIENT_PROVEEDOR, TBizProveedor); + RegisterDataTableRules(BIZ_CLIENT_EMPLEADO, TBizEmpleado); + +finalization + +end. diff --git a/Source/Modulos/Contactos/Model/uBizContactosDatosBancarios.pas b/Source/Modulos/Contactos/Model/uBizContactosDatosBancarios.pas new file mode 100644 index 00000000..91394223 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizContactosDatosBancarios.pas @@ -0,0 +1,58 @@ +unit uBizContactosDatosBancarios; + +interface + +uses + uDAInterfaces, uDADataTable, + schContactosClient_Intf; + +const + BIZ_CLIENT_CONTACTOS_DATOS_BANCARIOS = 'Client.ContactosDatosBancarios'; + +type + IBizContactosDatosBancarios = interface(IDatosBancarios) + ['{87EC6EA3-7DAE-446F-A968-6DA3C716A113}'] + function EsNuevo : Boolean; + end; + + TBizContactosDatosBancarios = class(TDatosBancariosDataTableRules, IBizContactosDatosBancarios) + protected + procedure BeforeInsert(Sender: TDADataTable); override; + procedure OnNewRecord(Sender: TDADataTable); override; + public + function EsNuevo : Boolean; + end; + +implementation + +uses + Dialogs,uDataTableUtils, DB; + +{ TBizDatosBancarios } + +procedure TBizContactosDatosBancarios.BeforeInsert(Sender: TDADataTable); +var + AMasterTable : TDADataTable; +begin + inherited; + AMasterTable := DataTable.GetMasterDataTable; + if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then + AMasterTable.Post; +end; + +function TBizContactosDatosBancarios.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +procedure TBizContactosDatosBancarios.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_CONTACTOS_DATOS_BANCARIOS, TBizContactosDatosBancarios); + + +end. diff --git a/Source/Modulos/Contactos/Model/uBizContactosServer.pas b/Source/Modulos/Contactos/Model/uBizContactosServer.pas new file mode 100644 index 00000000..511399b5 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizContactosServer.pas @@ -0,0 +1,144 @@ +unit uBizContactosServer; + +interface + +uses + SysUtils, schContactosServer_Intf, uDAInterfaces, + uDADataTable, uDABusinessProcessor, uDADelta; + +const + BIZ_SERVER_CONTACTO = 'Server.Contacto'; + +type + TBizContactosServer = class(TContactosBusinessProcessorRules) + protected + procedure Insert_Datos_Contacto(aChange: TDADeltaChange); virtual; + procedure Update_Datos_Contacto(aChange: TDADeltaChange); virtual; + procedure Delete_Datos_Contacto(aChange: TDADeltaChange); virtual; + + procedure AfterProcessChange(Sender: TDABusinessProcessor; + aChange: TDADeltaChange; Processed: Boolean; + var CanRemoveFromDelta: Boolean); override; + + + procedure ProcessError(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; + const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean; + Error: Exception); override; + + end; + +implementation + +uses + Dialogs, uDataModuleServer, uDAClasses, DARemoteService_Impl, + schContactosClient_Intf, uBusinessUtils; + +{ TBizContactosServer } + +procedure TBizContactosServer.AfterProcessChange(Sender: TDABusinessProcessor; + aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); +begin + inherited; + + case aChange.ChangeType of + ctInsert: Insert_Datos_Contacto(aChange); + ctUpdate: Update_Datos_Contacto(aChange); + ctDelete: Delete_Datos_Contacto(aChange); + end; + + CanRemoveFromDelta := True; +end; + +procedure TBizContactosServer.Delete_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + +//En el caso de querer tener los contactos separados por empresas en lugar de tenerlos en comn +// ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_ContactoEmpresa'); +//En el caso de querer tener los contactos en comn para todas las empresas + ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_ContactoEmpresas'); + try + with ACommand do + begin + ParamByName('OLD_ID_CONTACTO').Value := aChange.OldValueByName[fld_ContactosID]; +// ParamByName('OLD_ID_EMPRESA').Value := aChange.OldValueByName[fld_ContactosID_EMPRESA]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +procedure TBizContactosServer.Insert_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + +//En el caso de querer tener los contactos separados por empresas en lugar de tenerlos en comn +// ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_ContactoEmpresa'); +//En el caso de querer tener los contactos en comn para todas las empresas + ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_ContactoEmpresas'); + try + with ACommand do + begin + ParamByName('ID_CONTACTO').Value := aChange.NewValueByName[fld_ContactosID]; +// ParamByName('ID_EMPRESA').Value := aChange.NewValueByName[fld_ContactosID_EMPRESA]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +procedure TBizContactosServer.ProcessError(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; + const aCommand: IDASQLCommand; var CanRemoveFromDelta: Boolean; + Error: Exception); +begin + inherited; + //IMPORTANTE ESTO HACE QUE EL CLIENTE SE ENTERE DEL ERROR Y LOS BP ASOCIADOS EN EL + //SCHEMA HAGAN ROLLBACK TAMBIEN + CanRemoveFromDelta := True; + raise Exception.Create(Error.Message); +end; + +procedure TBizContactosServer.Update_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + +//En el caso update nos da igual lo que se quiera modificar as que se queda igual + ACommand := ASchema.NewCommand(ACurrentConn, 'Update_ContactoEmpresa'); + try + with ACommand do + begin + ParamByName('ID_CONTACTO').Value := aChange.NewValueByName[fld_ContactosID]; + ParamByName('OLD_ID_CONTACTO').Value := aChange.OldValueByName[fld_ContactosID]; + + ParamByName('ID_EMPRESA').Value := aChange.NewValueByName[fld_ContactosID_EMPRESA]; + ParamByName('OLD_ID_EMPRESA').Value := aChange.OldValueByName[fld_ContactosID_EMPRESA]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +initialization + RegisterBusinessProcessorRules(BIZ_SERVER_CONTACTO, TBizContactosServer); + +end. diff --git a/Source/Modulos/Contactos/Model/uBizDireccionesContacto.pas b/Source/Modulos/Contactos/Model/uBizDireccionesContacto.pas new file mode 100644 index 00000000..a1f7a5bf --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizDireccionesContacto.pas @@ -0,0 +1,58 @@ +unit uBizDireccionesContacto; + +interface + +uses + uDAInterfaces, uDADataTable, + schContactosClient_Intf; + +const + BIZ_CLIENT_DIRECCIONES_CONTACTO = 'Client.DireccionesContacto'; + +type + IBizDireccionesContacto = interface(IDireccionesContacto) + ['{CAE362D4-B148-4B54-A426-F178565EA3DE}'] + function EsNuevo : Boolean; + end; + + TBizDireccionesContacto = class(TDireccionesContactoDataTableRules, IBizDireccionesContacto) + protected + procedure BeforeInsert(Sender: TDADataTable); override; + public + function EsNuevo : Boolean; + procedure OnNewRecord(Sender: TDADataTable); override; + end; + +implementation + +uses + Dialogs,uDataTableUtils, DB; + +{ TBizDatosBancarios } + +procedure TBizDireccionesContacto.BeforeInsert(Sender: TDADataTable); +var + AMasterTable : TDADataTable; +begin + inherited; + AMasterTable := DataTable.GetMasterDataTable; + if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then + AMasterTable.Post; +end; + +function TBizDireccionesContacto.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +procedure TBizDireccionesContacto.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_DIRECCIONES_CONTACTO, TBizDireccionesContacto); + + +end. diff --git a/Source/Modulos/Contactos/Model/uBizEmpleadosServer.pas b/Source/Modulos/Contactos/Model/uBizEmpleadosServer.pas new file mode 100644 index 00000000..b7412c81 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizEmpleadosServer.pas @@ -0,0 +1,114 @@ +unit uBizEmpleadosServer; + +interface + +uses + schContactosServer_Intf, uDAInterfaces, uDADelta, + uDADataTable, uDABusinessProcessor, uBizContactosServer; + +const + BIZ_SERVER_EMPLEADO = 'Server.Empleado'; + +type + TBizEmpleadoServer = class(TBizContactosServer) + protected + procedure Insert_Datos_Contacto(aChange: TDADeltaChange); override; + procedure Update_Datos_Contacto(aChange: TDADeltaChange); override; + procedure Delete_Datos_Contacto(aChange: TDADeltaChange); override; + end; + +implementation + +uses + uDataModuleServer, uDAClasses, DARemoteService_Impl, + schContactosClient_Intf, uBusinessUtils; + +{ TBizEmpleadoServer } + +procedure TBizEmpleadoServer.Delete_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_EmpleadosDatos'); + try + with ACommand do + begin + ParamByName('OLD_ID_EMPLEADO').Value := aChange.OldValueByName[fld_EmpleadosID]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +procedure TBizEmpleadoServer.Insert_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_EmpleadosDatos'); + try + with ACommand do + begin + ParamByName('ID_EMPLEADO').Value := aChange.NewValueByName[fld_EmpleadosID]; + ParamByName('FECHA_NACIMIENTO').Value := aChange.NewValueByName[fld_EmpleadosFECHA_NACIMIENTO]; + ParamByName('CATEGORIA').Value := aChange.NewValueByName[fld_EmpleadosCATEGORIA]; + ParamByName('FECHA_ALTA_EMPRESA').Value := aChange.NewValueByName[fld_EmpleadosFECHA_ALTA_EMPRESA]; + ParamByName('FORMACION_BASE').Value := aChange.NewValueByName[fld_EmpleadosFORMACION_BASE]; + ParamByName('FORMACION_COMPLE').Value := aChange.NewValueByName[fld_EmpleadosFORMACION_COMPLE]; + ParamByName('FORMACION_RECIBIDA').Value := aChange.NewValueByName[fld_EmpleadosFORMACION_RECIBIDA]; + ParamByName('EXPERIENCIA').Value := aChange.NewValueByName[fld_EmpleadosEXPERIENCIA]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +procedure TBizEmpleadoServer.Update_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Update_EmpleadosDatos'); + try + with ACommand do + begin + ParamByName('OLD_ID_EMPLEADO').Value := aChange.OldValueByName[fld_EmpleadosID]; + ParamByName('FECHA_NACIMIENTO').Value := aChange.NewValueByName[fld_EmpleadosFECHA_NACIMIENTO]; + ParamByName('CATEGORIA').Value := aChange.NewValueByName[fld_EmpleadosCATEGORIA]; + ParamByName('FECHA_ALTA_EMPRESA').Value := aChange.NewValueByName[fld_EmpleadosFECHA_ALTA_EMPRESA]; + ParamByName('FORMACION_BASE').Value := aChange.NewValueByName[fld_EmpleadosFORMACION_BASE]; + ParamByName('FORMACION_COMPLE').Value := aChange.NewValueByName[fld_EmpleadosFORMACION_COMPLE]; + ParamByName('FORMACION_RECIBIDA').Value := aChange.NewValueByName[fld_EmpleadosFORMACION_RECIBIDA]; + ParamByName('EXPERIENCIA').Value := aChange.NewValueByName[fld_EmpleadosEXPERIENCIA]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +initialization + RegisterBusinessProcessorRules(BIZ_SERVER_EMPLEADO, TBizEmpleadoServer); + +end. diff --git a/Source/Modulos/Contactos/Model/uBizGruposCliente.pas b/Source/Modulos/Contactos/Model/uBizGruposCliente.pas new file mode 100644 index 00000000..349403b6 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizGruposCliente.pas @@ -0,0 +1,27 @@ +unit uBizGruposCliente; + +interface + +uses + uDAInterfaces, uDADataTable, schContactosClient_Intf; + +const + BIZ_CLIENT_GRUPOSCLIENTE = 'Client.GrupoCliente'; + +type + IBizGrupoCliente = interface(IGruposCliente) + ['{14D53184-B350-4506-9527-E7F7D9442515}'] + end; + + TBizGrupoCliente = class(TGruposClienteDataTableRules, IBizGrupoCliente) + end; + +implementation + +initialization + RegisterDataTableRules(BIZ_CLIENT_GRUPOSCLIENTE, TBizGrupoCliente); + +finalization + +end. + diff --git a/Source/Modulos/Contactos/Model/uBizGruposEmpleado.pas b/Source/Modulos/Contactos/Model/uBizGruposEmpleado.pas new file mode 100644 index 00000000..0c106e2a --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizGruposEmpleado.pas @@ -0,0 +1,27 @@ +unit uBizGruposEmpleado; + +interface + +uses + uDAInterfaces, uDADataTable, schContactosClient_Intf; + +const + BIZ_CLIENT_GRUPOSEMPLEADO = 'Client.GrupoEmpleado'; + +type + IBizGrupoEmpleado = interface(IGruposEmpleado) + ['{0952BCC8-09B6-4D09-9B5E-26853E159B79}'] + end; + + TBizGrupoEmpleado = class(TGruposEmpleadoDataTableRules, IBizGrupoEmpleado) + end; + +implementation + +initialization + RegisterDataTableRules(BIZ_CLIENT_GRUPOSEMPLEADO, TBizGrupoEmpleado); + +finalization + +end. + diff --git a/Source/Modulos/Contactos/Model/uBizGruposProveedor.pas b/Source/Modulos/Contactos/Model/uBizGruposProveedor.pas new file mode 100644 index 00000000..8e5a6115 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizGruposProveedor.pas @@ -0,0 +1,29 @@ +unit uBizGruposProveedor; + +interface + +uses + uDAInterfaces, uDADataTable, schContactosClient_Intf; + +const + BIZ_CLIENT_GRUPOSPROVEEDOR = 'Client.GrupoProveedor'; + +type + IBizGrupoProveedor = interface(IGruposProveedor) + ['{2D502FA6-E3D7-4E32-813D-CC5EB554A074}'] + end; + + TBizGrupoProveedor = class(TGruposProveedorDataTableRules, IBizGrupoProveedor) + end; + +implementation + +initialization + RegisterDataTableRules(BIZ_CLIENT_GRUPOSPROVEEDOR, TBizGrupoProveedor); + +finalization + +end. + + + diff --git a/Source/Modulos/Contactos/Model/uBizProveedoresServer.pas b/Source/Modulos/Contactos/Model/uBizProveedoresServer.pas new file mode 100644 index 00000000..132d2066 --- /dev/null +++ b/Source/Modulos/Contactos/Model/uBizProveedoresServer.pas @@ -0,0 +1,122 @@ +unit uBizProveedoresServer; + +interface + +uses + schContactosServer_Intf, uDAInterfaces, uDADelta, + uDADataTable, uDABusinessProcessor, uBizContactosServer; + +const + BIZ_SERVER_PROVEEDOR = 'Server.Proveedor'; + +type + TBizProveedorServer = class(TBizContactosServer) + protected + procedure Insert_Datos_Contacto(aChange: TDADeltaChange); override; + procedure Update_Datos_Contacto(aChange: TDADeltaChange); override; + procedure Delete_Datos_Contacto(aChange: TDADeltaChange); override; + end; + +implementation + +uses + uDataModuleServer, uDAClasses, DARemoteService_Impl, + schContactosClient_Intf, uBusinessUtils; + +{ TBizProveedorServer } + +procedure TBizProveedorServer.Delete_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Delete_ProveedoresDatos'); + try + with ACommand do + begin + ParamByName('OLD_ID_PROVEEDOR').Value := aChange.OldValueByName[fld_ProveedoresID]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +procedure TBizProveedorServer.Insert_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Insert_ProveedoresDatos'); + try + with ACommand do + begin + ParamByName('ID_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresID]; + ParamByName('DESCUENTO').Value := aChange.NewValueByName[fld_ProveedoresDESCUENTO]; + ParamByName('DESCRIPCION_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR]; + ParamByName('CODIGO_ASIGNADO').Value := aChange.NewValueByName[fld_ProveedoresCODIGO_ASIGNADO]; + ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ProveedoresREGIMEN_IVA]; + ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ProveedoresID_TIPO_IVA]; + ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ProveedoresID_FORMA_PAGO]; + ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ProveedoresTIENDA_WEB]; + ParamByName('HOMOLOGADO').Value := aChange.NewValueByName[fld_ProveedoresHOMOLOGADO]; + ParamByName('CERTIFICACION').Value := aChange.NewValueByName[fld_ProveedoresCERTIFICACION]; + ParamByName('GRUPO_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresGRUPO_PROVEEDOR]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + + +procedure TBizProveedorServer.Update_Datos_Contacto(aChange: TDADeltaChange); +var + ASchema : TDASchema; + ACurrentConn : IDAConnection; + ACommand : IDASQLCommand; +begin + inherited; + + ASchema := BusinessProcessor.Schema; + ACurrentConn := GetBusinessProcessorConnection(BusinessProcessor); + + ACommand := ASchema.NewCommand(ACurrentConn, 'Update_ProveedoresDatos'); + try + with ACommand do + begin + ParamByName('OLD_ID_PROVEEDOR').Value := aChange.OldValueByName[fld_ProveedoresID]; + ParamByName('ID_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresID]; + ParamByName('DESCUENTO').Value := aChange.NewValueByName[fld_ProveedoresDESCUENTO]; + ParamByName('DESCRIPCION_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresDESCRIPCION_PROVEEDOR]; + ParamByName('CODIGO_ASIGNADO').Value := aChange.NewValueByName[fld_ProveedoresCODIGO_ASIGNADO]; + ParamByName('REGIMEN_IVA').Value := aChange.NewValueByName[fld_ProveedoresREGIMEN_IVA]; + ParamByName('ID_TIPO_IVA').Value := aChange.NewValueByName[fld_ProveedoresID_TIPO_IVA]; + ParamByName('ID_FORMA_PAGO').Value := aChange.NewValueByName[fld_ProveedoresID_FORMA_PAGO]; + ParamByName('TIENDA_WEB').Value := aChange.NewValueByName[fld_ProveedoresTIENDA_WEB]; + ParamByName('HOMOLOGADO').Value := aChange.NewValueByName[fld_ProveedoresHOMOLOGADO]; + ParamByName('CERTIFICACION').Value := aChange.NewValueByName[fld_ProveedoresCERTIFICACION]; + ParamByName('GRUPO_PROVEEDOR').Value := aChange.NewValueByName[fld_ProveedoresGRUPO_PROVEEDOR]; + Execute; + end; + finally + ACommand := NIL; + end; +end; + +initialization + RegisterBusinessProcessorRules(BIZ_SERVER_PROVEEDOR, TBizProveedorServer); + +end. diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.bdsproj b/Source/Modulos/Contactos/Plugin/Contactos_plugin.bdsproj new file mode 100644 index 00000000..10ee2fba --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/Contactos_plugin.bdsproj @@ -0,0 +1,496 @@ + + + + + + + + + + + + Contactos_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + + diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.dex b/Source/Modulos/Contactos/Plugin/Contactos_plugin.dex new file mode 100644 index 00000000..4ab36310 --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/Contactos_plugin.dex @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.dpk b/Source/Modulos/Contactos/Plugin/Contactos_plugin.dpk new file mode 100644 index 00000000..0b99147d --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/Contactos_plugin.dpk @@ -0,0 +1,54 @@ +package Contactos_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + GUISDK_D10, + ccpack10, + designide, + xmlrtl, + vclactnband, + vclx, + cfpack_d10, + JvAppFrmD10R, + vcljpg, + JclVcl, + Jcl, + JvSystemD10R, + JvCoreD10R, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + Contactos_model, + Contactos_data, + Contactos_controller, + Contactos_view; + +contains + uPluginContactos in 'uPluginContactos.pas' {PluginContactos: TDataModule}; + +end. diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.dproj b/Source/Modulos/Contactos/Plugin/Contactos_plugin.dproj new file mode 100644 index 00000000..01b15aaa --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/Contactos_plugin.dproj @@ -0,0 +1,614 @@ + + + {cafb4b38-ab55-40a5-8d2e-c54895b98402} + Contactos_plugin.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Contactos_plugin.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + Contactos_plugin.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + +
PluginContactos
+
+
+ +
+ + diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.drc b/Source/Modulos/Contactos/Plugin/Contactos_plugin.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/Contactos_plugin.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.rc b/Source/Modulos/Contactos/Plugin/Contactos_plugin.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Contactos/Plugin/Contactos_plugin.res b/Source/Modulos/Contactos/Plugin/Contactos_plugin.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Contactos/Plugin/Contactos_plugin.res differ diff --git a/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm b/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm new file mode 100644 index 00000000..7744fcf8 --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/uPluginContactos.dfm @@ -0,0 +1,498 @@ +object PluginContactos: TPluginContactos + OldCreateOrder = True + Description = 'Contactos' + ModuleMenu = MainMenu + ModuleName = 'Contactos' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE + 56833057E20B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD + 958E06350269D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8 + C08FE739E739E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF + 924601E26274429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156 + AAD74C31D6CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5 + 705358B68EE2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2B + C46499981266F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9 + EBE72694C890288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816 + AFAEDD9509E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495 + ED6D29115533D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A + 264225994CD2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE58 + 9F0988062F11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC + 4EDBAA9ABDCE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B19 + 57DCBEB7A676FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1 + BA2AB2A74E1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0 + D716267859D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE + 7A281DB0A46032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC2 + 27E87799E4CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4 + 004A9C298A785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23 + FB3F3EE9B8824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999 + 887D86E47321FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77 + CFB1744051F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407 + E3E21819A2E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA7 + 5F70B5BD1D53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED23200 + 4BE73E31E6B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A + 98C836E180FF01702244FEF5B056BE0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FF7E56CF7DEE962EA340397D96C0B97291B8AD95227EA08 + 6706460E476AA60B06C3B7966FC3AD482457D01441A13F842141232128288656 + B4ECC58992F8C760E2CB9DB9DBBABBD773CFDD793F3DF7EA86977B74FDE1FEE9 + 811FCF73CEF39CEFE7FB3C3F7ECFF1388EC37836CFFF0370E6EC9571A1BC5E55 + E619058887D10953FB87FE9E4F8986AF61990E534A5633B3BC2E4BC0B26C114E + BA376C3136EDF4D8B42D56ADDFCDE5AE93EE80F06FCDE8FDBDC4E2AA880449CB + 4771E5664A17D4FE27F154FFEA862677C08DEE26D4F00D2C3B075956482492C8 + 8A829C8CB274E33166942E1B156FEA305C8F666775929AB7F6640394C805FA7E + 6C23191B16C9F18BA50E92CF836EE8440623E43F534EE5FA638F749E0EDB61ED + A6BDD980C1BE4E6E9DEFC0D67D8482218239121E8490AAA12493F446C2BCF6DE + EF6911DDB038D8E99EDC862A9975EFEC7707C4FEEC244008C92F097726866188 + D0D1348DDE98CDCAFA2F31CD94E3945BEBBEFB7BCEEDD4CE847B438C6BEB9BB3 + 01F1F0AF442F9DC63B1CC3EB15DEC587E67D88ACA8DC9DFC0A15D58D638AA78E + ADAEE1A07B926F751F47BBD92D8EDF2235770FA0138EFB99B5620F85452F8C29 + 9E7AB7B1B1D51D702EDC43E287369E5455249164C334E8570C060BCAA858D0C0 + 53D3A78E299E9ADBB2FDC36C40D7A53B1C387599EBB13BAC29FB8275D38AB97D + 37CA2772057FFD022BE7CCA069CB8B4CCE9B9216DADBF6B56B92B76FAA62DBAE + 8F3201739F2FA2F5F38B745D88A048010AF306D85053C2CDDB71BE3D9FC0D182 + F8127FB364DE04EAEBCA78FA89E919CE0D33F3D81ADE3F9C09D0FD797C70F467 + E2092FDAC449E83E93C2608C612B80AC4E2464EAF8E2830CE903AC7969162DDB + 96D17AF41BD71DBC5B5B49E3BE8F33017D4370A8FD27F27373D14205E8B91344 + 21A9A20EFCE488AB30479591E428036A94E78AF339DDF206E648613DE07CA4D0 + 761C389209187682347FF63D9AA8626FA00033370F4792402CF6EA1A929E4051 + 8650BC1A358B4BD9F7F6620E9FF8CE75075BDF7C391B50BDA8848B57FB69FFAA + 873FAE5C4B5F038EED495F171EC716209B40C124F66F9EC3FCA2E2873A1F6959 + 80E50B673FF45E49BFB3467A7B4C7157C0D2F2671F9BB82BA0E550FB63FFA38D + 02C6B38D3BE05FAF5B45FEC8107D9F0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003E54944415478DA + DD955D6C145514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A6 + 4896501142B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F + 29840A442925D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D66 + 1FED0BB3999C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E + 29106C00DB180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DA + D6F82FBBDFA8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170B + CB5F4761C5DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C + 7E1CA4F7022231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1 + F31969A5A90B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E1 + 9A968381070F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C + 5575FB9D80D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFF + E05CC74D846B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140 + E7478DD086EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB8 + 1144108D68ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC + 5C00558E4361FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765 + B473628037EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A + 5989E2CBB3DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015 + A50BF169730DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2 + 318A8AD7B276E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A7 + 96D3C8F5C6E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC + 4C5BE4DDD5E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED224 + 94CE89F0FE32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2 + 042C5F9A871B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25 + F05B830F2BD6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B6 + 3B035EC1059A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD4347 + 1D13562DA8D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DD + C2A659D535C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F + 0610289C8F6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F + 16C0CCD9730D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7 + 464BEAA39C5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638 + CC76689DFB23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730 + 314BFE0CBC83B80000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002874944415478DA + B5944D68134114C7DF50C47E585BA2D0B095924095A51E4CA5CA2208D58BE9AD + 154F06CA565452A1A224E736F4165088F45222480881DE6C901EA4274F122FC9 + 0A3DE450684C2FA188C4A6F9EA6EB2CE5BBBC36E13936CA40F1E339999FC7FFB + E63F3344555538CB20670EE864D1FA7AC2471B81E6384DD7C9B044739766C2EB + 15DE760C0804246349F18101A53438A83CE6790EC6C62E82D339C4268B451962 + B1644B5053C0CACA0DF63B184C42A5D20399CC1736B6BC2C6A2004E8B9BD9DC6 + 29FF6908317E7520E022B4EFA1DD18428E8E6428148E211CDE8DD3B9B993B5DA + BCDF3F6102944A0AA4523F1A20C4F8D50B0BEF2012798510D5E79BD0C4313736 + B21ADC58E5E2E2559378B9FCB7CD660F80024853000642D6D65E3071CCADAD1C + 033C7BFE441DE55EC2FCBCA3411C7367A704767B85556102C8721DAAD59A49DC + 66EB856834A301425E507F2AD7A176E91E9CEF7B0A333323267145A9433E9F6F + 345914439B3E9F6796E32E306104A1389AB9B7F75B83B8875D50EBE761F36B11 + F2E7EEC395D1D726F31D8E69AD32FD3FABAB115681872E7C8490C3C3636DF1FE + 7E8196DACF8EA60E79303205A4AA40F0130797C7DDF03EFC81E8772597EB7D83 + 000C141704C16F344E83D0EEAC3EE676BB9B4286732E887EE321994A9B8E396E + 35027471F4A1E54DA65BA7FE0B623C5546006E992EDEF4A2E981860A3C2D5D0A + 811548DB9B6C14770922A43312843E8B5D43483BF14A4E82047D05A44A779590 + 4EC47543AD7A6202B413EFD6786245BC1B08B12A6E1542961EDAD4E93BD7A047 + FE0EF6BE7247E2ED2078D1F055665B74739257EFF2BFC03974D0B1782B087D91 + E31430673279EAF62DB52E172C89378344221F9978C331FD9F40086D4CE2187F + 00FADE10E28785B5A40000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B1300000B1301009A9C180000023C4944415478DA + ED933168136114C7FFB7752A5F1637EDDD2266B8E6EB24C221143AA6A534824B + 82D23A6905419D4C68A0E9E860C8A8D2A18A436A4502A296E40CB52A48EFEC0D + EA747789D26EF92E83B982F0F9DD45A2456C9AA6DDFAE0E37DEF3B78BFF7DEFF + 9DC439C7519A740CE819204952E79E5C4E72F80CF081A59992B49F84FFE4DB13 + F028CEA942A11B264AD78E02F020CE654586B92E00E9B5C301A49EA63A6361E2 + 5099407FE788407CF43D78C25B454B3A38E0F138A751FA1BC0C05A2CF46081F7 + E0BE1080523F8087E33CA81C0D16762047099C8A1B561E4083EEACD5FAC1017F + 6BA0CD6A5C1E013E553C584B7FAA1E3C314826CE4F64652A5F26036284BABE58 + AD56B3CD6693F506B8A272720E7057768F451BD3B2F40C9D238484B1F3C51112 + B17BA562E9464F0035A9F2B6B8BBC712BF107744E543945298EF4D4C5F9D4679 + BDECE5D239D213E07FA6AA2A8F9D8D61FECE3CEC2D1BB661C3F86C788542A13B + C059B81E3E343AABCAC2150D636189E29A2434C80E9F1E9ECBE7F3884422C82C + 64203A1A15007D5F005911CA6E35446207D816F3656EB8A665E621F1B119B6A8 + 69C9454AC9A5E06E3A23F07C326AAD26BA038CDB296EEBCFDBC14EFB676B77D4 + 0CFDAD3A24756C99C6A862D0680433533232770DBCD16D0F0398DC7C3DA5F7AD + 413A67734521B0C5D4CC8A11BEB9BE02E66EB8B54D41EC17302B00244210ACA9 + BE520993C36FC0FD5A76BDDACDFE01F79F594F3EBCC5C51FAD1DD46BDFF16DFB + 273CAFD63A35747272E365E2D59E80C3B6634057FB05197A77E091BE20380000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = SmallImages + Left = 40 + Top = 72 + object actClientes: TAction + Category = 'Ventas' + Caption = 'Clientes' + ImageIndex = 0 + OnExecute = actClientesExecute + end + object actProveedores: TAction + Category = 'Compras' + Caption = 'Proveedores' + ImageIndex = 1 + OnExecute = actProveedoresExecute + end + object actEmpleados: TAction + Category = 'Ventas' + Caption = 'Empleados' + ImageIndex = 2 + OnExecute = actEmpleadosExecute + end + object actGruposCliente: TAction + Caption = 'Grupos de cliente' + ImageIndex = 5 + OnExecute = actGruposClienteExecute + end + object actGruposProveedor: TAction + Caption = 'Grupos de proveedor' + ImageIndex = 5 + OnExecute = actGruposProveedorExecute + end + object actGruposEmpleado: TAction + Caption = 'Categorias de empleado' + ImageIndex = 4 + OnExecute = actGruposEmpleadoExecute + end + end + object MainMenu: TMainMenu + Images = SmallImages + Left = 40 + Top = 16 + object Compras1: TMenuItem + Tag = 200 + Caption = '&Compras' + SubMenuImages = SmallImages + GroupIndex = 1 + OnClick = actProveedoresExecute + object Proveedores1: TMenuItem + Tag = 100 + Action = actProveedores + SubMenuImages = SmallImages + end + object N2: TMenuItem + Tag = 101 + Caption = '-' + end + object Datosauxiliares2: TMenuItem + Tag = 999999 + Caption = 'Datos auxiliares' + SubMenuImages = SmallImages + object Gruposdeproveedor1: TMenuItem + Action = actGruposProveedor + SubMenuImages = SmallImages + end + end + end + object Ventas1: TMenuItem + Tag = 400 + Caption = '&Ventas' + SubMenuImages = SmallImages + GroupIndex = 1 + object Resumen1: TMenuItem + Tag = 101 + Action = actClientes + SubMenuImages = SmallImages + end + object Vendedores1: TMenuItem + Tag = 102 + Action = actEmpleados + SubMenuImages = SmallImages + end + object N4: TMenuItem + Tag = 103 + Caption = '-' + end + object DatosAuxiliares1: TMenuItem + Tag = 99999 + Caption = 'Datos auxiliares' + SubMenuImages = SmallImages + object GruposCliente1: TMenuItem + Tag = 201 + Action = actGruposCliente + end + object Categoriasdeempleado1: TMenuItem + Tag = 202 + Action = actGruposEmpleado + end + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FA4944415478DA + A5934B6813511486BF342610A2C50A86A220150BA2145C58D120828ABA2AD2BA + F0B510C48D1B1154A828A55D5877825474AB45375D58A80B9385292DA8A8B151 + 6B6D8DB50F43C1B4C624364C1E73E7E19DA96408B50BCDC0E5CC65E6FFFE7FCE + DCE3324D936A2E577FE46355041BD076B0C9DE280B23E412E3F6FD9A4DDBF107 + 76965F3464524D33109A8E2A7459350E1FBFEC002CF1FCEB1EF28B82F98534C9 + 5C9203A7EFB2A1712F9A6E70A557AD706EA88970FFD1C012E0E8BECDCC3EEF22 + 33338DAECBA7A64E36FB8B5431C389EBB12557B93461D8CED6FE71F8A5036809 + AE271EBA0879177E9F0FB704284A9ED8B7498EB5476D71671F2B276809D63337 + D481B75892EEC86F5429140A7CD7D6D17CEA4E85B3D5070B181A8A3A00AB07C9 + B70F512643567E8410E4F22A46432B8D7B4E2E130BD9C4672F629580A9D02B86 + E76EB0CDF0CA0425A205D8B5F11C5B8F1C5A26B6D6F09B0F0E2058AB11B97495 + D44F95FAB34D881A831F0F26989A9EA0FDEB275B7CEDD6938A1EECDE117000FE + 701FF1A703D4153D28AB6B71E3C2A72C92F6A8C413292E8CBD2F3B8B3F67213A + 3AEE000AB7BB49CC8E11D03CAC92BFDB251D4A5E93B45B90984973FEDD08DDF7 + C22B27889D69239355FE7A54EBD6FA690D0FDAAEBA61DAD59075F4F31707B0BF + 790BBDFD83FF3C076540D7CD9EFF1FA66AC7F93783B161288AF0DFC000000000 + 49454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FE4944415478DA + A593DD4B145118C69F5574D5458A40DD44FCCA9B42D88B8494104A1242C4AF0B + 4DF1CA3FA08822C110F7C6BA124151BB8990F422304183564165053FD05D575C + 4334694D8D1A97C65DDB666677CE7C78668C1D16F3A276E0F09EC3CCFB7B9EF3 + CEFB9A5455453C8F697C76332E820EA8AF28D60F9C7F0DA1832D7D9F9E7B0396 + CC9BD10F15EA54921410498648641A2554363E31005AF2D14A1FF85F0447FE63 + 302106775B06905D741B92ACE0E9B018A39C9F308B37231367809AF2027C5DB0 + 23B0E7832CD3B7AA8C60F0043FC301343DF79CA9D225114557D6CEEFA7960C40 + 755906761C8F00DE044B6A2A122980E37878F677D1D0EED293BBDEE16207D565 + 567C737622391CA1EAA077142108027E485750D2DC1FA3ACD541033A9C2E03A0 + D58071BF05B7EBD0FC831082102F42C9AF4351E98373C984167166D1130B18DB + 6710986B43B198421D44B0282AB0DAECA8B25D3F97ACADF9D50D0390919783D6 + A14F601358D4DE8B4015C3F8E8B420B8EEC6C1E8333DB9A36732A606B76C9906 + E0C31782B1E94384AC57713999859A988413E112D2FCDFC1B3CBD87EFD38AA4C + FEF482CBBB6500BAE759F8DC8710B27211369B697B9990F29B83F998A1202F36 + 5F3D44F7E0D4C50E1A7A97E92FF4FDBD57D30AE17E795F579515558F0A8DDEED + CF06E04EC9350C8FCFFDF31C4401F6177DFF3F4CF18EF329BD276228E7D4407E + 0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000023A4944415478DA + A593DB4B54511487BF39733C3A9A9930A99486541086169598264184522F3D84 + 34200541FF400FD24B17886E6405911111111614158414955866669A1682E565 + 2A310BAF9490CC4C303367CED9E7B4CF0C34F9E043B95FD67ED8EB5BBFF55B7B + B96CDB6621C7D5D436B820421CB07B7B31C1994986EF9E67EAFD6B66748BBCF2 + 6ACA7D07513D5E8430318585B06C4CD38982C58BD2A8F6D5250015856E461E5C + 461DEA623C1060C634980E8428F31DA072DF4999A050FF449B53B95069A3F1F6 + A304C03BD9CC647323564C472CC964457101A1C02CC35F83D41CB9436A762186 + 252B4B15A62930E5BDB5B32F09D0061A098D77B366DD4ABCD919A4692E8C6898 + 573DA394D49C25ABA0848B2D9EF915443A2EE00EFBD9B9AB8C48304A241CC632 + 755E747DA3747F03D9F94508D9BB21EC78741474BCFB90048C3E3CCAD4A7767C + 7B2A599695251FC5181E9BE0D99B097C87EFB1347FAD4C962D1889644B9AD9D9 + DBFF570BD3FD0CDCBCCF6AAF4E6EA5C1AF90CE582B0473F2D871A29E742D33E1 + 813301D38E4FA1BB6F2809C878DA85DA3E82AD06A0761AD70F0DED713ED1F454 + A60E6D60D3C62A4E5F6999E3C1E6F5394940FAB11BA4842268AA0B75AB8EE767 + 1A51BF228D140CE5EA6CB9762A2E3D3E05A705E945EFC0C72440ADBB8AC71064 + A6A8286E05372E624260183018FA4E45CB25CE5D7F3EBF82E8DB1E66FD5F2010 + 469146D96E09502096E2C62A5A4ED5DEDA7875E7273AD1D99F3EFFE724605BE9 + 2A6E35BDFCE73DF803387EA6E1FF9769A1EBFC1BC1A15528DD8924DF00000000 + 49454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C18000001604944415478DA + A5923F48C34014C6DF81B838A88B145DD22D20D8E8505737330A5D9CE4BA650C + 34739BEE0AE7E658B277A8939364B5A0C6A19231500417A14D177539EF1D5EB8 + E64F1D3C7821B9F7BE1FDFFB08E19CC37F0E512FBE1FE9244FD465C9BCE7FBD6 + 5529000FA58C33E60063B1005A04BFF1BEDBA550AF6F42BFFF5280C8A1C1C025 + CA45ABB507C3E19B04FCDE75D04DAFD780F9FC4BC275880418C649E6220F5060 + D735613A5DC81A8FD3AC4F946D6C4C261FD06CD62008926C40B4F8AC164930CE + A4E937DC3F8E6077E354BA4040470FCCB66D5186B4BAF56E814329C44904EC8E + CAFE6C6D013BDBEB08280D51C274C89949210C23081E4C787A8E899E49BB7DBD + 0CA882DC8ECEA558CF244942C0F00B00DC196D3B37D6D23A7AA895FF8112E3CE + 683BFA647F42489518773E68385E7E9D3C845489D5CE6599E810B24A5C166CFE + 3F918FA343935F1CC7A5E23C44D4AB487FBF900142AAC4ABCE0F9C32EE2C4B99 + 4F200000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001B24944415478DA9D52A16E1B41109D6366595810C90B0307069E59E0 + B29665A1E141B32E3474BF20070FAE1462B8259555D22D88643889A5C8F04C1A + 57AAB4797B4E9C334875CA48A3B9B9BB79F366DE14D433EB6DA27D4BB427AAAD + 2F68809DFC641B9358338518C94F3F02509BA4B5A6B802C02C0C03E8D36EE1AC + 15859520C157BC6F1163138BF70132ED0B7E01688F9E2B73942500FCFF00403B + 773E1410E90B4512A4EB9C41338BB894F701FA495995093BA4185054BF75559F + 9432A5719AB555238C18420D772DEC1460CA495D12893FA55D5E950E637E554A + 75B9ACC190DA6FBEF1D509005B4EAFCBEBD3365F8CA0F398993B85ECD462D161 + E7664E0D920A85892F995040B215922814D771B7582C5421F32AE59FDAA3946D + 27611773F72614D84137020A288FE1E68EC068823C7400E3BCB96DAE82FEE8B0 + CB113204B8591DF65496B66656D7F9390AA3819AC4A509459CD924C11FB8BE1C + D39111AC122AF8CA630AFD8B21B13563728BDF50427634223368076E2E3871DC + 47BECA100F4AEC3508C7FB41001500F2EC4A9D51F0DFBBE2AC94ACC330809BDB + BBE6E70FFAFCE7E92F6D1E1E69B3FD87156D9EB43E37CFDA01027CC229770400 + 00000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 94000000097048597300004E2000004E2001167D99DE000002C04944415478DA + E5D54D6813411400E0B788D816B1A5150CA99404AA2CF5E02AFE2C82503DA5B7 + 14BD054A2A6A130F5549CE6DDA9BD0424A2F69041B42A517B1417A909E3C497A + 3129F49043A131BD8422129BE6A7CDCF3A6F935932C96E9AB0928B0F1E43B233 + FBCD4CDE4C384992A093C1FD1F20C7712D0FF0F9C22ED2882487490AD5AFA324 + F748861D0E71516BAC6CB50356B1059E37C2D0D025309B7B99E72B2BDB4D6155 + D0E389D6EE7188E4278F47F85805A564B20BE2F16F4A879919BB0C67320525B7 + B662F8C85D8F6A82B3B33795CF73733B0C5A1BA4AF8D346B6EF7080366B34588 + 447E36A00A485E2A555E2070F425881E1F17209D3E05BF7F2F449E8DAB6D334E + D0E9BCC660B95CA54D240E81809C2A88C0E4E41204026F10955CAE1119C35C5F + 4FC893A9C75EBC7C260D1AA76162C2D48061EEEE66C160C82BAB6C0031105D5E + 7EA560989B9BC906D0EB00E957F10694061EC185EEE730367685C18AC532A452 + 2966825353F739062C14CA70725262B0FEFE2E0806E30C8898C803947A78D8F8 + 9E81D4F9C77075F02D534C26D3A8BC722CA8FDFD3F303F1F80D5D5D71590AC6A + C3E5B2598DC68B0A8430627400452926887652186BC09D14E1DD17235C1EB6C0 + 7BFF078E1E1F52CD0B086220268AA29BAC7091AED04666F714D1A3A353B9D3C1 + 419AEC7F8F72DE286AE913642C168F423E1985303901C16D1E7E4462CC96631D + 204831FC1D996381D58928E96BA5832C168B2A6AE5ED4D310AE216534CF31CD6 + 86DDEE95B4D0BEA4A08969454B575B3354EDA8E8026981F8A25EF8176853B0B6 + 1AB140BC5FEDBA514DB01EA30512CDEB5BA92AA885D102D1F39B368067617A0B + 89015BC5F4A00AB8E4E4DAC2CE42F176C17F1D4D70FAC98034FAE03A9C2BEC80 + A13BD712D60C2577738880E39A206EE9ED5BBCF490FF0DE6DEC3B66F905A3410 + F8AC8AA916CD9D7B77A57221DD16568B92461363C04E46C7C1BF0E73BFE74CCD + 6AD20000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Plugin/uPluginContactos.pas b/Source/Modulos/Contactos/Plugin/uPluginContactos.pas new file mode 100644 index 00000000..0f30df0f --- /dev/null +++ b/Source/Modulos/Contactos/Plugin/uPluginContactos.pas @@ -0,0 +1,148 @@ +unit uPluginContactos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCContactos = interface(IInterface) + ['{BAEDC5D8-2FE8-4907-8027-C60861829BA9}'] + + end; + + TPluginContactos = class(TModuleController, IMCContactos) + actClientes: TAction; + actProveedores: TAction; + Compras1: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Proveedores1: TMenuItem; + Resumen1: TMenuItem; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + N2: TMenuItem; + actEmpleados: TAction; + Vendedores1: TMenuItem; + N4: TMenuItem; + actGruposCliente: TAction; + actGruposProveedor: TAction; + actGruposEmpleado: TAction; + Categoriasdeempleado1: TMenuItem; + Datosauxiliares2: TMenuItem; + Gruposdeproveedor1: TMenuItem; + procedure actClientesExecute(Sender: TObject); + procedure actProveedoresExecute(Sender: TObject); + procedure actEmpleadosExecute(Sender: TObject); + procedure actGruposClienteExecute(Sender: TObject); + procedure actGruposProveedorExecute(Sender: TObject); + procedure actGruposEmpleadoExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, uContactosController, + uClientesController, uProveedoresController, uEmpleadosController, + uGruposClienteController, uBizGruposCliente, uGruposProveedorController, + uBizGruposProveedor, uGruposEmpleadoController, uBizGruposEmpleado, + uContactosViewRegister, uBizContactos; + +function GetModule : TModuleController; +begin + Result := TPluginContactos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} +procedure TPluginContactos.actClientesExecute(Sender: TObject); +var + AClientesController : IClientesController; + AClientes : IBizCliente; +begin + AClientesController := TClientesController.Create; + AClientes := (AClientesController.BuscarTodos as IBizCliente); + AClientesController.VerTodos(AClientes); +end; + +procedure TPluginContactos.actGruposClienteExecute(Sender: TObject); +var + AGruposClienteController : IGruposClienteController; + AGruposCliente : IBizGrupoCliente; +begin + AGruposClienteController := TGruposClienteController.Create; + AGruposCliente := (AGruposClienteController.BuscarTodos as IBizGrupoCliente); + AGruposClienteController.VerTodos(AGruposCliente); +end; + +procedure TPluginContactos.actGruposEmpleadoExecute(Sender: TObject); +var + AGruposEmpleadoController : IGruposEmpleadoController; + AGruposEmpleado : IBizGrupoEmpleado; +begin + AGruposEmpleadoController := TGruposEmpleadoController.Create; + AGruposEmpleado := (AGruposEmpleadoController.BuscarTodos as IBizGrupoEmpleado); + AGruposEmpleadoController.VerTodos(AGruposEmpleado); +end; + +procedure TPluginContactos.actGruposProveedorExecute(Sender: TObject); +var + AGruposProveedorController : IGruposProveedorController; + AGruposProveedor : IBizGrupoProveedor; +begin + AGruposProveedorController := TGruposProveedorController.Create; + AGruposProveedor := (AGruposProveedorController.BuscarTodos as IBizGrupoProveedor); + AGruposProveedorController.VerTodos(AGruposProveedor); +end; + +procedure TPluginContactos.actProveedoresExecute(Sender: TObject); +var + AProveedoresController : IProveedoresController; + AProveedores : IBizProveedor; +begin + AProveedoresController := TProveedoresController.Create; + AProveedores := (AProveedoresController.BuscarTodos as IBizProveedor); + AProveedoresController.VerTodos(AProveedores); +end; + +procedure TPluginContactos.actEmpleadosExecute(Sender: TObject); +var + AEmpleadosController : IEmpleadosController; + AEmpleados : IBizEmpleado; +begin + AEmpleadosController := TEmpleadosController.Create; + AEmpleados := (AEmpleadosController.BuscarTodos as IBizEmpleado); + AEmpleadosController.VerTodos(AEmpleados); +end; + +constructor TPluginContactos.Create(AOwner: TComponent); +begin + inherited; + uContactosViewRegister.RegisterViews; +end; + +destructor TPluginContactos.Destroy; +begin + uContactosViewRegister.UnregisterViews; + inherited; +end; + +initialization + uHostManager.RegisterModuleClass(TPluginContactos); + +finalization + uHostManager.UnRegisterModuleClass(TPluginContactos); + +end. diff --git a/Source/Modulos/Contactos/Project1.mpb b/Source/Modulos/Contactos/Project1.mpb new file mode 100644 index 00000000..b27cc9b3 Binary files /dev/null and b/Source/Modulos/Contactos/Project1.mpb differ diff --git a/Source/Modulos/Contactos/Reports/Copia de uRptFichasEmpleado_Server.dfm b/Source/Modulos/Contactos/Reports/Copia de uRptFichasEmpleado_Server.dfm new file mode 100644 index 00000000..2ce37c91 --- /dev/null +++ b/Source/Modulos/Contactos/Reports/Copia de uRptFichasEmpleado_Server.dfm @@ -0,0 +1,949 @@ +object RptFichasEmpleado: TRptFichasEmpleado + OldCreateOrder = True + OnCreate = DataModuleCreate + Height = 405 + Width = 447 + object DADataCabecera: TDADataSource + DataTable = tbl_FichaEmpleado + Left = 264 + Top = 72 + end + object tbl_FichaEmpleado: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 264 + Top = 128 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 80 + end + object frxRichObject1: TfrxRichObject + Left = 48 + Top = 296 + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 144 + Top = 296 + end + object frxOLEObject1: TfrxOLEObject + Left = 48 + Top = 344 + end + object frxCrossObject1: TfrxCrossObject + Left = 144 + Top = 344 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 256 + Top = 296 + end + object frxGradientObject1: TfrxGradientObject + Left = 360 + Top = 296 + end + object frxChartObject1: TfrxChartObject + Left = 256 + Top = 344 + end + object schReport: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_EMPLEADOS' + SQL = + 'select'#10' ID,'#10' ID_CATEGORIA,'#10' NIF_CIF,'#10' NOMBRE,'#10' PE' + + 'RSONA_CONTACTO,'#10' CALLE,'#10' POBLACION,'#10' PROVINCIA,'#10' COD' + + 'IGO_POSTAL,'#10' TELEFONO_1,'#10' TELEFONO_2,'#10' MOVIL_1,'#10' MOV' + + 'IL_2,'#10' FAX,'#10' EMAIL_1,'#10' EMAIL_2,'#10' PAGINA_WEB,'#10' NOT' + + 'AS,'#10' FECHA_ALTA,'#10' FECHA_MODIFICACION,'#10' USUARIO,'#10' ID_' + + 'EMPRESA,'#10' REFERENCIA,'#10' FECHA_NACIMIENTO,'#10' CATEGORIA,'#10' ' + + ' FECHA_ALTA_EMPRESA,'#10' FORMACION_BASE,'#10' FORMACION_COMPLE,'#10 + + ' FORMACION_RECIBIDA,'#10' EXPERIENCIA'#10'from V_EMPLEADOS'#10'where I' + + 'D = :ID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = 'ID_CATEGORIA' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHA_NACIMIENTO' + TableField = 'FECHA_NACIMIENTO' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'FECHA_ALTA_EMPRESA' + TableField = 'FECHA_ALTA_EMPRESA' + end + item + DatasetField = 'FORMACION_BASE' + TableField = 'FORMACION_BASE' + end + item + DatasetField = 'FORMACION_COMPLE' + TableField = 'FORMACION_COMPLE' + end + item + DatasetField = 'FORMACION_RECIBIDA' + TableField = 'FORMACION_RECIBIDA' + end + item + DatasetField = 'EXPERIENCIA' + TableField = 'EXPERIENCIA' + end> + end> + Name = 'InformeFichasEmpleado' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_NACIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA_EMPRESA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_BASE' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_COMPLE' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_RECIBIDA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EXPERIENCIA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 16 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'FacturasCliente_ID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_EMPRESA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_CONTRATO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_CONTRATO' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_FACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de las factura' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_VENCIMIENTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vencimiento' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_SITUACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_BASE_IMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_FORMA_PAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_CLIENTE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_CLIENTE' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_ALTA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_MODIFICACION' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cliente' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_POBLACION' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'IVA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'USUARIO' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Dto.' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_ID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_ID_FACTURA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_FACTURA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_TIPO_DETALLE' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo detalle' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_CONCEPTO' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Concepto' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_IMPORTE_UNIDAD' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unidad' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_Detalles_IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_Detalles_VISIBLE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = #191'Visible?' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + end> + Left = 46 + Top = 158 + end + object frxReport: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick] + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Por defecto' + ReportOptions.CreateDate = 39065.872423495400000000 + ReportOptions.LastChange = 39325.839120185180000000 + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'var' + ' Pagina: Variant;' + '' + '' + 'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);' + 'var' + ' Cadena: String;' + 'begin' + '{' + ' DatosEmpresa.Lines.Clear;' + ' if ( <> '#39#39') then' + ' Cadena := '#39'TLF: '#39' + ;' + ' if ( <> '#39#39') then' + + ' Cadena := Cadena + '#39' FAX: '#39' + ;' + ' DatosEmpresa.Lines.Add(Cadena);' + '}' + 'end;' + '' + 'procedure NombreEmpresaOnBeforePrint(Sender: TfrxComponent);' + 'begin' + '// NombreEmpresa.Lines.Clear;' + '// NombreEmpresa.Lines.Add();' + 'end;' + '' + 'procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' if not Engine.FinalPass then' + ' Set('#39'TotalPaginas'#39', ( + 1));' + '' + ' if Engine.FinalPass then' + ' Set('#39'Pagina'#39', ( + 1));' + 'end;' + '' + 'procedure frxReportOnStartReport(Sender: TfrxComponent);' + 'begin' + ' Set('#39'Pagina'#39', 0);' + ' Set('#39'TotalPaginas'#39', 0);' + 'end;' + '' + 'begin' + '' + 'end.') + ShowProgress = False + StoreInDFM = False + OnStartReport = 'frxReportOnStartReport' + Left = 169 + Top = 16 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end> + Variables = < + item + Name = ' Paginacion' + Value = Null + end + item + Name = 'Pagina' + Value = Null + end + item + Name = 'TotalPaginas' + Value = Null + end> + Style = <> + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = True + DataSource = DADataCabecera + Left = 264 + Top = 16 + end +end diff --git a/Source/Modulos/Contactos/Reports/Copia de uRptFichasEmpleado_Server.pas b/Source/Modulos/Contactos/Reports/Copia de uRptFichasEmpleado_Server.pas new file mode 100644 index 00000000..d65c7077 --- /dev/null +++ b/Source/Modulos/Contactos/Reports/Copia de uRptFichasEmpleado_Server.pas @@ -0,0 +1,108 @@ +unit uRptFichasEmpleado_Server; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, frxClass, frxDBSet, uDAScriptingProvider, + uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, + frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, + uDAInterfaces; + +type + TRptFichasEmpleado = class(TDataModule) + DADataCabecera: TDADataSource; + tbl_FichaEmpleado: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + frxRichObject1: TfrxRichObject; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxChartObject1: TfrxChartObject; + frxDBCabecera: TfrxDBDataset; + schReport: TDASchema; + DataDictionary: TDADataDictionary; + frxReport: TfrxReport; + procedure DataModuleCreate(Sender: TObject); + private + FConnection: IDAConnection; + //Genera cada uno de los albaranes a imprimir + procedure GenerarFicha(const ID: integer); overload; + public + function GenerarFicha(const AFichaID : String): Binary; overload; + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleServer, schContactosClient_Intf; + +const + rptFichaEmpleado = 'InfFichaEmpleado.fr3'; + + { Dataset names for schReport } + ds_InformeFichaEmpleado = 'InformeFichasEmpleado'; + + +{ TRptFichaEmpleado } + + +procedure TRptFichasEmpleado.DataModuleCreate(Sender: TObject); +begin + schReport.ConnectionManager := dmServer.ConnectionManager; + FConnection := dmServer.DarNuevaConexion; + frxReport.EngineOptions.NewSilentMode := simReThrow; +end; + +function TRptFichasEmpleado.GenerarFicha(const AFichaID: String): Binary; +var + ID_Fichas: TStringList; + i: Integer; + +begin + Result := Binary.Create; + FConnection.BeginTransaction; + + try + ID_Fichas := TStringList.Create; + ID_Fichas.CommaText := AFichaID; + + //Vamos generando todos y cada uno de las fichas de empleado + for i := 0 to ID_Fichas.Count - 1 do + GenerarFicha(StrToInt(ID_Fichas.Strings[i])); + + frxReport.PreviewPages.SaveToStream(Result); + + finally + FConnection.RollbackTransaction; + end; +end; + +procedure TRptFichasEmpleado.GenerarFicha(const ID: integer); +var + AStream: TMemoryStream; + dsMaster: IDADataset; +begin + AStream := TMemoryStream.Create; + + try + dsMaster := schReport.NewDataset(FConnection, ds_InformeFichaEmpleado, ['ID'], [ID]); + + AStream.Clear; + DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + DABINAdapter.ReadDataset(AStream, tbl_FichaEmpleado, TRUE, '', TRUE, TRUE); + + frxReport.LoadFromFile(DarRutaInformes + rptFichaEmpleado, True); + frxReport.PrepareReport(False); + + finally + AStream.Free; + dsMaster := Nil; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.dfm b/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.dfm new file mode 100644 index 00000000..447b847d --- /dev/null +++ b/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.dfm @@ -0,0 +1,591 @@ +object RptEtiquetasContacto: TRptEtiquetasContacto + OldCreateOrder = True + OnCreate = DataModuleCreate + Height = 405 + Width = 447 + object DADataCabecera: TDADataSource + DataTable = tbl_Contactos + Left = 264 + Top = 72 + end + object tbl_Contactos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 264 + Top = 128 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 80 + end + object frxRichObject1: TfrxRichObject + Left = 48 + Top = 296 + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 144 + Top = 296 + end + object frxOLEObject1: TfrxOLEObject + Left = 48 + Top = 344 + end + object frxCrossObject1: TfrxCrossObject + Left = 144 + Top = 344 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 256 + Top = 296 + end + object frxGradientObject1: TfrxGradientObject + Left = 360 + Top = 296 + end + object frxChartObject1: TfrxChartObject + Left = 256 + Top = 344 + end + object schReport: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_CONTACTOS' + SQL = + 'select'#10' ID,'#10' NIF_CIF,'#10' NOMBRE,'#10' PERSONA_CONTACTO,'#10' ' + + ' CALLE,'#10' POBLACION,'#10' PROVINCIA,'#10' CODIGO_POSTAL'#10'from CO' + + 'NTACTOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end> + end> + Name = 'InformeEtiquetasContacto' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 16 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'FacturasCliente_ID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_EMPRESA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_CONTRATO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_CONTRATO' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_FACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de las factura' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_VENCIMIENTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vencimiento' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_SITUACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_BASE_IMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_FORMA_PAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_CLIENTE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_CLIENTE' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_ALTA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_MODIFICACION' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cliente' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_POBLACION' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'IVA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'USUARIO' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Dto.' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_ID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_ID_FACTURA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_FACTURA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_TIPO_DETALLE' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo detalle' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_CONCEPTO' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Concepto' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_IMPORTE_UNIDAD' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unidad' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_Detalles_IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_Detalles_VISIBLE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = #191'Visible?' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + end> + Left = 46 + Top = 158 + end + object frxReport: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick] + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Por defecto' + ReportOptions.CreateDate = 38330.712904247710000000 + ReportOptions.LastChange = 39328.775946539350000000 + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'procedure Memo2OnBeforePrint(Sender: TfrxComponent);' + 'var' + ' Cadena: String;' + 'begin' + ' Cadena := '#39#39';' + '' + ' if ( <> '#39#39') then' + ' Cadena := UPPERCASE();' + '' + ' Memo2.Lines.Clear;' + ' Memo2.Lines.Add(Cadena);' + '' + ' if ( <> '#39#39') then' + ' Cadena := UPPERCASE();' + ' Memo2.Lines.Add(Cadena);' + '' + ' Cadena := '#39#39';' + ' if ( <> '#39#39') then' + ' Cadena := UPPERCASE();' + '' + ' if ( <> '#39#39') then' + ' if (Cadena <> '#39#39') then' + + ' Cadena := Cadena + '#39' '#39' + UPPERCASE();' + '' + ' if ( <> '#39#39')' + + ' and ( <> ) then' + ' begin' + ' if ( <> '#39#39') then' + + ' Cadena := Cadena + '#39' ('#39' + UPPERCASE() + '#39')'#39 + ' else' + + ' Cadena := Cadena + '#39' '#39' + UPPERCASE();' + ' end;' + ' Memo2.Lines.Add(Cadena);' + '' + ' Cadena := '#39#39';' + ' Memo2.Lines.Add(Cadena);' + ' if ( <> '#39#39') then' + + ' Cadena := '#39'ATT. '#39' + UPPERCASE();' + ' Memo2.Lines.Add(Cadena);' + 'end;' + '' + 'begin' + '' + 'end.') + ShowProgress = False + StoreInDFM = False + Left = 169 + Top = 16 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end> + Variables = <> + Style = <> + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = True + DataSource = DADataCabecera + Left = 264 + Top = 16 + end +end diff --git a/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.pas b/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.pas new file mode 100644 index 00000000..c2c4af9b --- /dev/null +++ b/Source/Modulos/Contactos/Reports/uRptEtiquetasContacto_Server.pas @@ -0,0 +1,92 @@ +unit uRptEtiquetasContacto_Server; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, frxClass, frxDBSet, uDAScriptingProvider, + uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, + frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, + uDAInterfaces; + +type + TRptEtiquetasContacto = class(TDataModule) + DADataCabecera: TDADataSource; + tbl_Contactos: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + frxRichObject1: TfrxRichObject; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxChartObject1: TfrxChartObject; + frxDBCabecera: TfrxDBDataset; + frxReport: TfrxReport; + schReport: TDASchema; + DataDictionary: TDADataDictionary; + procedure DataModuleCreate(Sender: TObject); + private + FConnection: IDAConnection; + public + function GenerarInforme(const AID : String): Binary; overload; + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleServer, schContactosClient_Intf; + +const + rptEtiquetasContacto = 'InfEtiquetasContacto.fr3'; + + { Dataset names for schReport } + ds_InformeContactos = 'InformeEtiquetasContacto'; + + +{ TRptEtiquetasContacto } + + +procedure TRptEtiquetasContacto.DataModuleCreate(Sender: TObject); +begin + schReport.ConnectionManager := dmServer.ConnectionManager; + FConnection := dmServer.DarNuevaConexion; + frxReport.EngineOptions.NewSilentMode := simReThrow; +end; + +function TRptEtiquetasContacto.GenerarInforme(const AID: String): Binary; +var + AStream: TMemoryStream; + dsMaster: IDADataset; + +begin + Result := Binary.Create; + + FConnection.BeginTransaction; + + try + AStream := TMemoryStream.Create; + dsMaster := schReport.NewDataset(FConnection, ds_InformeContactos, [], [], False); //, ['ID'], ['611, 751']); //AID]); + dsMaster.Where.AddText(fld_ContactosID + ' in (' + AID + ')'); + dsMaster.Open; + + AStream.Clear; + DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + DABINAdapter.ReadDataset(AStream, tbl_Contactos, TRUE, '', TRUE, TRUE); + + frxReport.LoadFromFile(DarRutaInformes + rptEtiquetasContacto, True); + frxReport.PrepareReport(True); + + frxReport.PreviewPages.SaveToStream(Result); + + finally + AStream.Free; + dsMaster := Nil; + FConnection.RollbackTransaction; + end; + +end; + +end. diff --git a/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.dfm b/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.dfm new file mode 100644 index 00000000..80a683a7 --- /dev/null +++ b/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.dfm @@ -0,0 +1,1036 @@ +object RptFichasEmpleado: TRptFichasEmpleado + OldCreateOrder = True + OnCreate = DataModuleCreate + Height = 405 + Width = 447 + object DADataCabecera: TDADataSource + DataTable = tbl_FichaEmpleado + Left = 264 + Top = 72 + end + object tbl_FichaEmpleado: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + LogChanges = False + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + SchemaCall.Params = <> + DataRequestCall.Params = <> + DataUpdateCall.Params = <> + ScriptCall.Params = <> + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 264 + Top = 128 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 80 + end + object frxRichObject1: TfrxRichObject + Left = 48 + Top = 296 + end + object frxBarCodeObject1: TfrxBarCodeObject + Left = 144 + Top = 296 + end + object frxOLEObject1: TfrxOLEObject + Left = 48 + Top = 344 + end + object frxCrossObject1: TfrxCrossObject + Left = 144 + Top = 344 + end + object frxCheckBoxObject1: TfrxCheckBoxObject + Left = 256 + Top = 296 + end + object frxGradientObject1: TfrxGradientObject + Left = 360 + Top = 296 + end + object frxChartObject1: TfrxChartObject + Left = 256 + Top = 344 + end + object schReport: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Datasets = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_EMPLEADOS' + SQL = + 'select'#10' V_EMPLEADOS.ID,'#10' V_EMPLEADOS.ID_CATEGORIA,'#10' V_E' + + 'MPLEADOS.NIF_CIF,'#10' V_EMPLEADOS.NOMBRE,'#10' V_EMPLEADOS.PERSON' + + 'A_CONTACTO,'#10' V_EMPLEADOS.CALLE,'#10' V_EMPLEADOS.POBLACION,'#10' ' + + ' V_EMPLEADOS.PROVINCIA,'#10' V_EMPLEADOS.CODIGO_POSTAL,'#10' V_EM' + + 'PLEADOS.TELEFONO_1,'#10' V_EMPLEADOS.TELEFONO_2,'#10' V_EMPLEADOS.' + + 'MOVIL_1,'#10' V_EMPLEADOS.MOVIL_2,'#10' V_EMPLEADOS.FAX,'#10' V_EMP' + + 'LEADOS.EMAIL_1,'#10' V_EMPLEADOS.EMAIL_2,'#10' V_EMPLEADOS.PAGINA_' + + 'WEB,'#10' V_EMPLEADOS.NOTAS,'#10' V_EMPLEADOS.FECHA_ALTA,'#10' V_EM' + + 'PLEADOS.FECHA_MODIFICACION,'#10' V_EMPLEADOS.USUARIO,'#10' V_EMPLE' + + 'ADOS.ID_EMPRESA,'#10' V_EMPLEADOS.REFERENCIA,'#10' V_EMPLEADOS.FEC' + + 'HA_NACIMIENTO,'#10' V_EMPLEADOS.CATEGORIA,'#10' V_EMPLEADOS.FECHA_' + + 'ALTA_EMPRESA,'#10' V_EMPLEADOS.FORMACION_BASE,'#10' V_EMPLEADOS.FO' + + 'RMACION_COMPLE,'#10' V_EMPLEADOS.FORMACION_RECIBIDA,'#10' V_EMPLEA' + + 'DOS.EXPERIENCIA,'#10' EMPRESAS.NOMBRE as NOMBRE_EMPRESA,'#10' EMPR' + + 'ESAS.RAZON_SOCIAL,'#10' EMPRESAS.TELEFONO_1 as TELEFONO_1_EMPRESA' + + ','#10' EMPRESAS.FAX as FAX_EMPRESA,'#10' EMPRESAS.LOGOTIPO'#10' '#10'fr' + + 'om V_EMPLEADOS'#10'left join EMPRESAS on (EMPRESAS.ID = V_EMPLEADOS.' + + 'ID_EMPRESA)'#10'where V_EMPLEADOS.ID = :ID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = 'ID_CATEGORIA' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'FECHA_NACIMIENTO' + TableField = 'FECHA_NACIMIENTO' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'FECHA_ALTA_EMPRESA' + TableField = 'FECHA_ALTA_EMPRESA' + end + item + DatasetField = 'FORMACION_BASE' + TableField = 'FORMACION_BASE' + end + item + DatasetField = 'FORMACION_COMPLE' + TableField = 'FORMACION_COMPLE' + end + item + DatasetField = 'FORMACION_RECIBIDA' + TableField = 'FORMACION_RECIBIDA' + end + item + DatasetField = 'EXPERIENCIA' + TableField = 'EXPERIENCIA' + end + item + DatasetField = 'NOMBRE_EMPRESA' + TableField = 'NOMBRE_EMPRESA' + end + item + DatasetField = 'RAZON_SOCIAL' + TableField = 'RAZON_SOCIAL' + end + item + DatasetField = 'FAX_EMPRESA' + TableField = 'FAX_EMPRESA' + end + item + DatasetField = 'TELEFONO_1_EMPRESA' + TableField = 'TELEFONO_1_EMPRESA' + end + item + DatasetField = 'LOGOTIPO' + TableField = 'LOGOTIPO' + end> + end> + Name = 'InformeFichasEmpleado' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_NACIMIENTO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_ALTA_EMPRESA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_BASE' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_COMPLE' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FORMACION_RECIBIDA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EXPERIENCIA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE_EMPRESA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TELEFONO_1_EMPRESA' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAX_EMPRESA' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LOGOTIPO' + DataType = datBlob + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = <> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 16 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'FacturasCliente_ID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_EMPRESA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_EMPRESA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_CONTRATO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_CONTRATO' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_FACTURA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Fecha de las factura' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_VENCIMIENTO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Vencimiento' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_SITUACION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Situaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_BASE_IMPONIBLE' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Base imponible' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe dto.' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe IVA' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_FORMA_PAGO' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Forma de pago' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_ID_CLIENTE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_CLIENTE' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_NIF_CIF' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'NIF/CIF' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_CODIGO_POSTAL' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'C'#243'd. postal' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_ALTA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_ALTA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_FECHA_MODIFICACION' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'FECHA_MODIFICACION' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_OBSERVACIONES' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Observaciones' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_NOMBRE' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cliente' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_CALLE' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Direcci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_PROVINCIA' + DataType = datString + Size = 30 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Provincia' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_POBLACION' + DataType = datString + Size = 150 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Poblaci'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_IVA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'IVA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_USUARIO' + DataType = datString + Size = 100 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'USUARIO' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_REFERENCIA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Referencia' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_DESCUENTO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Dto.' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_ID' + DataType = datAutoInc + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + DisplayLabel = 'ID' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_ID_FACTURA' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'ID_FACTURA' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_TIPO_DETALLE' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Tipo detalle' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_CONCEPTO' + DataType = datString + Size = 2000 + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Concepto' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_IMPORTE_UNIDAD' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe unidad' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_Detalles_IMPORTE_TOTAL' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'FacturasCliente_Detalles_VISIBLE' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = #191'Visible?' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_POSICION' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Posici'#243'n' + Alignment = taLeftJustify + end + item + Name = 'FacturasCliente_Detalles_CANTIDAD' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + DisplayLabel = 'Cantidad' + Alignment = taLeftJustify + end> + Left = 46 + Top = 158 + end + object frxReport: TfrxReport + Version = '3.23.7' + DotMatrixReport = False + EngineOptions.DoublePass = True + IniFile = '\Software\Fast Reports' + PreviewOptions.Buttons = [pbPrint, pbLoad, pbSave, pbExport, pbZoom, pbFind, pbOutline, pbPageSetup, pbTools, pbEdit, pbNavigator, pbExportQuick] + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Por defecto' + ReportOptions.CreateDate = 39065.872423495400000000 + ReportOptions.LastChange = 39329.847549722220000000 + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'var' + ' Pagina: Variant;' + '' + '' + 'procedure DatosEmpresaOnBeforePrint(Sender: TfrxComponent);' + 'var' + ' Cadena: String;' + 'begin' + ' DatosEmpresa.Lines.Clear;' + ' if ( <> '#39#39') then' + ' Cadena := '#39'TLF: '#39' + ;' + ' DatosEmpresa.Lines.Add(Cadena);' + '' + ' Cadena := '#39#39';' + ' if ( <> '#39#39') then' + ' Cadena := '#39'FAX: '#39' + ;' + ' DatosEmpresa.Lines.Add(Cadena);' + 'end;' + '' + 'procedure NombreEmpresaOnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' NombreEmpresa.Lines.Clear;' + ' NombreEmpresa.Lines.Add();' + 'end;' + '' + 'procedure PageHeader1OnBeforePrint(Sender: TfrxComponent);' + 'begin' + ' if not Engine.FinalPass then' + ' Set('#39'TotalPaginas'#39', ( + 1));' + '' + ' if Engine.FinalPass then' + ' Set('#39'Pagina'#39', ( + 1));' + 'end;' + '' + 'procedure frxReportOnStartReport(Sender: TfrxComponent);' + 'begin' + ' Set('#39'Pagina'#39', 0);' + ' Set('#39'TotalPaginas'#39', 0);' + 'end;' + '' + 'begin' + '' + 'end.') + ShowProgress = False + StoreInDFM = False + OnStartReport = 'frxReportOnStartReport' + Left = 169 + Top = 16 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxDBCabecera' + end> + Variables = < + item + Name = ' Paginacion' + Value = Null + end + item + Name = 'Pagina' + Value = Null + end + item + Name = 'TotalPaginas' + Value = Null + end> + Style = <> + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxDBCabecera' + CloseDataSource = True + DataSource = DADataCabecera + Left = 264 + Top = 16 + end +end diff --git a/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.pas b/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.pas new file mode 100644 index 00000000..d65c7077 --- /dev/null +++ b/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.pas @@ -0,0 +1,108 @@ +unit uRptFichasEmpleado_Server; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, frxClass, frxDBSet, uDAScriptingProvider, + uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, + frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, + uDAInterfaces; + +type + TRptFichasEmpleado = class(TDataModule) + DADataCabecera: TDADataSource; + tbl_FichaEmpleado: TDACDSDataTable; + DABINAdapter: TDABINAdapter; + frxRichObject1: TfrxRichObject; + frxBarCodeObject1: TfrxBarCodeObject; + frxOLEObject1: TfrxOLEObject; + frxCrossObject1: TfrxCrossObject; + frxCheckBoxObject1: TfrxCheckBoxObject; + frxGradientObject1: TfrxGradientObject; + frxChartObject1: TfrxChartObject; + frxDBCabecera: TfrxDBDataset; + schReport: TDASchema; + DataDictionary: TDADataDictionary; + frxReport: TfrxReport; + procedure DataModuleCreate(Sender: TObject); + private + FConnection: IDAConnection; + //Genera cada uno de los albaranes a imprimir + procedure GenerarFicha(const ID: integer); overload; + public + function GenerarFicha(const AFichaID : String): Binary; overload; + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleServer, schContactosClient_Intf; + +const + rptFichaEmpleado = 'InfFichaEmpleado.fr3'; + + { Dataset names for schReport } + ds_InformeFichaEmpleado = 'InformeFichasEmpleado'; + + +{ TRptFichaEmpleado } + + +procedure TRptFichasEmpleado.DataModuleCreate(Sender: TObject); +begin + schReport.ConnectionManager := dmServer.ConnectionManager; + FConnection := dmServer.DarNuevaConexion; + frxReport.EngineOptions.NewSilentMode := simReThrow; +end; + +function TRptFichasEmpleado.GenerarFicha(const AFichaID: String): Binary; +var + ID_Fichas: TStringList; + i: Integer; + +begin + Result := Binary.Create; + FConnection.BeginTransaction; + + try + ID_Fichas := TStringList.Create; + ID_Fichas.CommaText := AFichaID; + + //Vamos generando todos y cada uno de las fichas de empleado + for i := 0 to ID_Fichas.Count - 1 do + GenerarFicha(StrToInt(ID_Fichas.Strings[i])); + + frxReport.PreviewPages.SaveToStream(Result); + + finally + FConnection.RollbackTransaction; + end; +end; + +procedure TRptFichasEmpleado.GenerarFicha(const ID: integer); +var + AStream: TMemoryStream; + dsMaster: IDADataset; +begin + AStream := TMemoryStream.Create; + + try + dsMaster := schReport.NewDataset(FConnection, ds_InformeFichaEmpleado, ['ID'], [ID]); + + AStream.Clear; + DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); + DABINAdapter.ReadDataset(AStream, tbl_FichaEmpleado, TRUE, '', TRUE, TRUE); + + frxReport.LoadFromFile(DarRutaInformes + rptFichaEmpleado, True); + frxReport.PrepareReport(False); + + finally + AStream.Free; + dsMaster := Nil; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm new file mode 100644 index 00000000..5718adab --- /dev/null +++ b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.dfm @@ -0,0 +1,3881 @@ +object srvContactos: TsrvContactos + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + SessionManager = dmServer.SessionManager + ConnectionName = 'IBX' + ServiceSchema = schContactos + ServiceDataStreamer = DABinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 347 + Width = 444 + object schContactos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Diagrams = Diagrams + Datasets = < + item + Params = < + item + Name = 'ID_CATEGORIA' + DataType = datInteger + Value = '22' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = + 'SELECT '#10' ID, ID_CATEGORIA, NIF_CIF, NOMBRE, PERSONA_CONTACTO,' + + ' CALLE, POBLACION,'#10' PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TEL' + + 'EFONO_2, MOVIL_1, '#10' MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WE' + + 'B, NOTAS, '#10' USUARIO, ID_EMPRESA, REFERENCIA'#10' FROM'#10' V_CONT' + + 'ACTOS'#10' WHERE'#10' ID_CATEGORIA = :ID_CATEGORIA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = '' + SQLOrigin = 'ID_CATEGORIA' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = '' + SQLOrigin = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end> + end> + Name = 'Contactos' + Fields = < + item + Name = 'ID' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + end + item + Name = 'FAX' + DataType = datString + Size = 25 + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + end + item + Name = 'NOTAS' + DataType = datMemo + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_GRUPOS' + SQL = 'SELECT DESCRIPCION'#10'FROM CLIENTES_GRUPOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'GruposCliente' + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end> + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DATOS_BANCO' + SQL = + 'SELECT'#10' ID, ID_CONTACTO, TITULAR, ENTIDAD, SUCURSAL, DC, CUEN' + + 'TA'#10' FROM'#10' CONTACTOS_DATOS_BANCO'#10' WHERE ID_CONTACTO = :ID_CO' + + 'NTACTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CONTACTO' + TableField = 'ID_CONTACTO' + end + item + DatasetField = 'TITULAR' + TableField = 'TITULAR' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end> + end> + Name = 'DatosBancarios' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'DatosBancarios_ID' + InPrimaryKey = True + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + DictionaryEntry = 'DatosBancarios_ID_CONTACTO' + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + DictionaryEntry = 'DatosBancarios_TITULAR' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DictionaryEntry = 'DatosBancarios_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DictionaryEntry = 'DatosBancarios_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DictionaryEntry = 'DatosBancarios_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DictionaryEntry = 'DatosBancarios_CUENTA' + end> + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '444' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_CATEGORIAS' + SQL = + 'SELECT '#10' ID_CONTACTO, ID_CATEGORIA'#10' FROM'#10' CONTACTOS_CATEG' + + 'ORIAS'#10' WHERE'#10' ID_CONTACTO = :ID_CONTACTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID_CONTACTO' + TableField = 'ID_CONTACTO' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = 'ID_CATEGORIA' + end> + end> + Name = 'ContactosCategorias' + Fields = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + InPrimaryKey = True + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_CLIENTES' + SQL = + 'SELECT '#10' ID, ID_CATEGORIA, REFERENCIA, NIF_CIF, NOMBRE, PERSO' + + 'NA_CONTACTO, CALLE,'#10' POBLACION, PROVINCIA, CODIGO_POSTAL, TEL' + + 'EFONO_1, TELEFONO_2, '#10' MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_' + + '2, PAGINA_WEB, '#10' NOTAS, USUARIO, ID_EMPRESA,'#10#10' GRUPO_CLIEN' + + 'TE, NOMBRE_COMERCIAL, VENCIMIENTO_FACTURAS, BLOQUEADO,'#10' MOTIV' + + 'O_BLOQUEO, RECARGO_EQUIVALENCIA, REGIMEN_IVA, ID_TIPO_IVA,'#10' I' + + 'D_FORMA_PAGO, TIENDA_WEB'#10' FROM'#10' V_CLIENTES' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = 'ID_CATEGORIA' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'ID_TIPO_IVA' + TableField = 'ID_TIPO_IVA' + end + item + DatasetField = 'REGIMEN_IVA' + TableField = 'REGIMEN_IVA' + end + item + DatasetField = 'ID_FORMA_PAGO' + TableField = 'ID_FORMA_PAGO' + end + item + DatasetField = 'TIENDA_WEB' + TableField = 'TIENDA_WEB' + end + item + DatasetField = 'RECARGO_EQUIVALENCIA' + TableField = 'RECARGO_EQUIVALENCIA' + end + item + DatasetField = 'GRUPO_CLIENTE' + TableField = 'GRUPO_CLIENTE' + end + item + DatasetField = 'NOMBRE_COMERCIAL' + TableField = 'NOMBRE_COMERCIAL' + end + item + DatasetField = 'VENCIMIENTO_FACTURAS' + TableField = 'VENCIMIENTO_FACTURAS' + end + item + DatasetField = 'BLOQUEADO' + TableField = 'BLOQUEADO' + end + item + DatasetField = 'MOTIVO_BLOQUEO' + TableField = 'MOTIVO_BLOQUEO' + end> + end> + Name = 'Clientes' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_CATEGORIA' + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DictionaryEntry = 'Contactos_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_CALLE' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DictionaryEntry = 'Contactos_NOTAS' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DictionaryEntry = 'Contactos_USUARIO' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_EMPRESA' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Clientes_REFERENCIA' + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + DictionaryEntry = 'Clientes_ID_TIPO_IVA' + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + DictionaryEntry = 'Clientes_REGIMEN_IVA' + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + DictionaryEntry = 'Clientes_ID_FORMA_PAGO' + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + DictionaryEntry = 'Clientes_TIENDA_WEB' + end + item + Name = 'RECARGO_EQUIVALENCIA' + DataType = datInteger + DictionaryEntry = 'Clientes_RECARGO_EQUIVALENCIA' + end + item + Name = 'GRUPO_CLIENTE' + DataType = datString + Size = 255 + DictionaryEntry = 'Clientes_GRUPO_CLIENTE' + end + item + Name = 'NOMBRE_COMERCIAL' + DataType = datString + Size = 255 + DictionaryEntry = 'Clientes_NOMBRE_COMERCIAL' + end + item + Name = 'VENCIMIENTO_FACTURAS' + DataType = datInteger + DictionaryEntry = 'Clientes_VENCIMIENTO_FACTURAS' + end + item + Name = 'BLOQUEADO' + DataType = datInteger + DictionaryEntry = 'Clientes_BLOQUEADO' + end + item + Name = 'MOTIVO_BLOQUEO' + DataType = datString + Size = 255 + DictionaryEntry = 'Clientes_MOTIVO_BLOQUEO' + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_PROVEEDORES' + SQL = + 'SELECT '#10' ID, ID_CATEGORIA, REFERENCIA, NIF_CIF, NOMBRE, PERSO' + + 'NA_CONTACTO, CALLE,'#10' POBLACION, PROVINCIA, CODIGO_POSTAL, TEL' + + 'EFONO_1, TELEFONO_2, '#10' MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_' + + '2, PAGINA_WEB,'#10' NOTAS, USUARIO, ID_EMPRESA,'#10#10#10' REGIMEN_IVA' + + ', DESCUENTO, DESCRIPCION_PROVEEDOR,'#10' CODIGO_ASIGNADO, ID_TIPO' + + '_IVA, ID_FORMA_PAGO, TIENDA_WEB, HOMOLOGADO, CERTIFICACION,'#10' ' + + 'GRUPO_PROVEEDOR'#10#10' FROM'#10' V_PROVEEDORES' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = 'ID_CATEGORIA' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'ID_TIPO_IVA' + TableField = 'ID_TIPO_IVA' + end + item + DatasetField = 'REGIMEN_IVA' + TableField = 'REGIMEN_IVA' + end + item + DatasetField = 'ID_FORMA_PAGO' + TableField = 'ID_FORMA_PAGO' + end + item + DatasetField = 'TIENDA_WEB' + TableField = 'TIENDA_WEB' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'DESCRIPCION_PROVEEDOR' + TableField = 'DESCRIPCION_PROVEEDOR' + end + item + DatasetField = 'CODIGO_ASIGNADO' + TableField = 'CODIGO_ASIGNADO' + end + item + DatasetField = 'HOMOLOGADO' + TableField = 'HOMOLOGADO' + end + item + DatasetField = 'CERTIFICACION' + TableField = 'CERTIFICACION' + end + item + DatasetField = 'GRUPO_PROVEEDOR' + TableField = 'GRUPO_PROVEEDOR' + end> + end> + Name = 'Proveedores' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_CATEGORIA' + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DictionaryEntry = 'Contactos_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_CALLE' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DictionaryEntry = 'Contactos_NOTAS' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DictionaryEntry = 'Contactos_USUARIO' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_EMPRESA' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Proveedores_REFERENCIA' + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + DictionaryEntry = 'Proveedores_ID_TIPO_IVA' + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + DictionaryEntry = 'Proveedores_REGIMEN_IVA' + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + DictionaryEntry = 'Proveedores_ID_FORMA_PAGO' + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + DictionaryEntry = 'Proveedores_TIENDA_WEB' + end + item + Name = 'DESCUENTO' + DataType = datFloat + DictionaryEntry = 'Proveedores_DESCUENTO' + end + item + Name = 'DESCRIPCION_PROVEEDOR' + DataType = datString + Size = 255 + DictionaryEntry = 'Proveedores_DESCRIPCION_PROVEEDOR' + end + item + Name = 'CODIGO_ASIGNADO' + DataType = datString + Size = 255 + DictionaryEntry = 'Proveedores_CODIGO_ASIGNADO' + end + item + Name = 'HOMOLOGADO' + DataType = datInteger + DictionaryEntry = 'Proveedores_HOMOLOGADO' + end + item + Name = 'CERTIFICACION' + DataType = datString + Size = 255 + DictionaryEntry = 'Proveedores_CERTIFICACION' + end + item + Name = 'GRUPO_PROVEEDOR' + DataType = datString + Size = 255 + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'V_EMPLEADOS' + SQL = + 'SELECT '#10' ID, ID_CATEGORIA, REFERENCIA, NIF_CIF, NOMBRE, PERSO' + + 'NA_CONTACTO, CALLE,'#10' POBLACION, PROVINCIA, CODIGO_POSTAL, TEL' + + 'EFONO_1, TELEFONO_2,'#10' MOVIL_1, MOVIL_2, FAX, EMAIL_1, EMAIL_2' + + ', PAGINA_WEB,'#10' NOTAS, USUARIO, ID_EMPRESA,'#10' '#10' '#10' CATE' + + 'GORIA, FECHA_NACIMIENTO, FECHA_ALTA_EMPRESA, FORMACION_BASE,'#10' ' + + ' FORMACION_COMPLE, FORMACION_RECIBIDA, EXPERIENCIA'#10' '#10'FROM V_E' + + 'MPLEADOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CATEGORIA' + TableField = 'ID_CATEGORIA' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'FECHA_NACIMIENTO' + TableField = 'FECHA_NACIMIENTO' + end + item + DatasetField = 'FECHA_ALTA_EMPRESA' + TableField = 'FECHA_ALTA_EMPRESA' + end + item + DatasetField = 'FORMACION_BASE' + TableField = 'FORMACION_BASE' + end + item + DatasetField = 'FORMACION_COMPLE' + TableField = 'FORMACION_COMPLE' + end + item + DatasetField = 'FORMACION_RECIBIDA' + TableField = 'FORMACION_RECIBIDA' + end + item + DatasetField = 'EXPERIENCIA' + TableField = 'EXPERIENCIA' + end> + end> + Name = 'Empleados' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'Contactos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_CATEGORIA' + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DictionaryEntry = 'Contactos_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_CALLE' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PERSONA_CONTACTO' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DictionaryEntry = 'Contactos_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DictionaryEntry = 'Contactos_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + BlobType = dabtMemo + DictionaryEntry = 'Contactos_NOTAS' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DictionaryEntry = 'Contactos_USUARIO' + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'Contactos_ID_EMPRESA' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Agentes_REFERENCIA' + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Empleados_CATEGORIA' + end + item + Name = 'FECHA_NACIMIENTO' + DataType = datDateTime + DictionaryEntry = 'Empleados_FECHA_NACIMIENTO' + end + item + Name = 'FECHA_ALTA_EMPRESA' + DataType = datDateTime + DictionaryEntry = 'Empleados_FECHA_ALTA_EMPRESA' + end + item + Name = 'FORMACION_BASE' + DataType = datMemo + DictionaryEntry = 'Empleados_FORMACION_BASE' + end + item + Name = 'FORMACION_COMPLE' + DataType = datMemo + DictionaryEntry = 'Empleados_FORMACION_COMPLE' + end + item + Name = 'FORMACION_RECIBIDA' + DataType = datMemo + DictionaryEntry = 'Empleados_FORMACION_RECIBIDA' + end + item + Name = 'EXPERIENCIA' + DataType = datMemo + DictionaryEntry = 'Empleados_EXPERIENCIA' + end> + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '9' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DIRECCIONES' + SQL = + 'SELECT'#10' ID, ID_CONTACTO, NOMBRE, CALLE, POBLACION, PROVINCIA,' + + ' CODIGO_POSTAL, PERSONA_CONTACTO,'#10' TELEFONO, MOVIL, FAX, EMAI' + + 'L, NOTAS, PORTE'#10' FROM'#10' CONTACTOS_DIRECCIONES'#10' WHERE ID_CONT' + + 'ACTO = :ID_CONTACTO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CONTACTO' + TableField = 'ID_CONTACTO' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'PERSONA_CONTACTO' + TableField = 'PERSONA_CONTACTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'TELEFONO' + TableField = 'TELEFONO' + end + item + DatasetField = 'EMAIL' + TableField = 'EMAIL' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'PORTE' + TableField = 'PORTE' + end + item + DatasetField = 'MOVIL' + TableField = 'MOVIL' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end> + end> + Name = 'DireccionesContacto' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + DictionaryEntry = 'DireccionesContacto_ID' + InPrimaryKey = True + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + DictionaryEntry = 'DireccionesContacto_ID_CONTACTO' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'DireccionesContacto_NOMBRE' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DictionaryEntry = 'DireccionesContacto_CALLE' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DictionaryEntry = 'DireccionesContacto_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'DireccionesContacto_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DictionaryEntry = 'DireccionesContacto_CODIGO_POSTAL' + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + DictionaryEntry = 'DireccionesContacto_PERSONA_CONTACTO' + end + item + Name = 'TELEFONO' + DataType = datString + Size = 25 + DictionaryEntry = 'DireccionesContacto_TELEFONO' + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_MOVIL_1' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DictionaryEntry = 'Contactos_FAX' + end + item + Name = 'EMAIL' + DataType = datString + Size = 255 + DictionaryEntry = 'DireccionesContacto_EMAIL' + end + item + Name = 'NOTAS' + DataType = datMemo + DictionaryEntry = 'DireccionesContacto_NOTAS' + end + item + Name = 'PORTE' + DataType = datFloat + DictionaryEntry = 'DireccionesContacto_PORTE' + end> + end + item + Params = < + item + Name = 'ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DTOS_PROVEEDORES' + SQL = + 'SELECT '#10' CLIENTES_DTOS_PROVEEDORES.ID,'#10' CLIENTES_DTOS_PROV' + + 'EEDORES.ID_CLIENTE,'#10' CLIENTES_DTOS_PROVEEDORES.ID_PROVEEDOR,'#10 + + ' CONTACTOS.NOMBRE,'#10' CLIENTES_DTOS_PROVEEDORES.DESCUENTO'#10' ' + + 'FROM'#10' CLIENTES_DTOS_PROVEEDORES'#10' LEFT JOIN CONTACTOS ON (CON' + + 'TACTOS.ID = CLIENTES_DTOS_PROVEEDORES.ID_PROVEEDOR)'#10'WHERE CLIENT' + + 'ES_DTOS_PROVEEDORES.ID_CLIENTE = :ID_CLIENTE' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_CLIENTE' + TableField = 'ID_CLIENTE' + end + item + DatasetField = 'ID_PROVEEDOR' + TableField = 'ID_PROVEEDOR' + end + item + DatasetField = 'DESCUENTO' + TableField = 'DESCUENTO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end> + end> + Name = 'ClientesDescuentos' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'ClientesDescuentos_ID' + InPrimaryKey = True + end + item + Name = 'ID_CLIENTE' + DataType = datInteger + DictionaryEntry = 'ClientesDescuentos_ID_CLIENTE' + end + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + DictionaryEntry = 'ClientesDescuentos_ID_PROVEEDOR' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'ClientesDescuentos_NOMBRE' + ServerAutoRefresh = True + end + item + Name = 'DESCUENTO' + DataType = datFloat + DictionaryEntry = 'ClientesDescuentos_DESCUENTO' + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PROVEEDORES_GRUPOS' + SQL = 'SELECT DESCRIPCION'#10'FROM PROVEEDORES_GRUPOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'GruposProveedor' + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPLEADOS_GRUPOS' + SQL = 'SELECT DESCRIPCION'#10'FROM EMPLEADOS_GRUPOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'GruposEmpleado' + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'FAX' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'NOTAS' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = + 'INSERT'#10' INTO CONTACTOS'#10' (ID, NIF_CIF, NOMBRE, PERSONA_CONTAC' + + 'TO, CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL,'#10' TELEFONO_1,' + + ' TELEFONO_2, MOVIL_1, MOVIL_2, FAX, EMAIL_1, '#10' EMAIL_2, PAGI' + + 'NA_WEB, NOTAS, USUARIO, REFERENCIA)'#10' VALUES'#10' (:ID, :NIF_CIF,' + + ' :NOMBRE, :PERSONA_CONTACTO, :CALLE, :POBLACION, :PROVINCIA,'#10' ' + + ' :CODIGO_POSTAL, :TELEFONO_1, :TELEFONO_2, :MOVIL_1, '#10' :MOV' + + 'IL_2, :FAX, :EMAIL_1, :EMAIL_2, :PAGINA_WEB, :NOTAS, '#10' :USUA' + + 'RIO, :REFERENCIA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Contactos' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = 'DELETE '#10' FROM'#10' CONTACTOS'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Contactos' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'FAX' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'NOTAS' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS' + SQL = + 'UPDATE CONTACTOS'#10' SET '#10' ID = :ID,'#10' NIF_CIF = :NIF_CIF, '#10' ' + + ' NOMBRE = :NOMBRE, '#10' PERSONA_CONTACTO = :PERSONA_CONTACTO,'#10 + + ' CALLE = :CALLE, '#10' POBLACION = :POBLACION, '#10' PROVINCIA ' + + '= :PROVINCIA, '#10' CODIGO_POSTAL = :CODIGO_POSTAL, '#10' TELEFONO' + + '_1 = :TELEFONO_1, '#10' TELEFONO_2 = :TELEFONO_2, '#10' MOVIL_1 = ' + + ':MOVIL_1, '#10' MOVIL_2 = :MOVIL_2, '#10' FAX = :FAX, '#10' EMAIL_1' + + ' = :EMAIL_1, '#10' EMAIL_2 = :EMAIL_2, '#10' PAGINA_WEB = :PAGINA_' + + 'WEB, '#10' NOTAS = :NOTAS, '#10' USUARIO = :USUARIO,'#10' REFERENCI' + + 'A = :REFERENCIA'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Contactos' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'DC' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DATOS_BANCO' + SQL = + 'INSERT'#10' INTO CONTACTOS_DATOS_BANCO'#10' (ID, ID_CONTACTO, TITULA' + + 'R, ENTIDAD, SUCURSAL, DC, CUENTA)'#10' VALUES'#10' (:ID, :ID_CONTACT' + + 'O, :TITULAR, :ENTIDAD, :SUCURSAL, :DC, :CUENTA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_DatosBancarios' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DATOS_BANCO' + SQL = + 'DELETE '#10' FROM'#10' CONTACTOS_DATOS_BANCO'#10' WHERE'#10' (ID = :OLD_' + + 'ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_DatosBancarios' + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'DC' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DATOS_BANCO' + SQL = + 'UPDATE CONTACTOS_DATOS_BANCO'#10' SET '#10' ID_CONTACTO = :ID_CONTAC' + + 'TO, '#10' TITULAR = :TITULAR, '#10' ENTIDAD = :ENTIDAD, '#10' SUCUR' + + 'SAL = :SUCURSAL, '#10' DC = :DC, '#10' CUENTA = :CUENTA'#10' WHERE'#10' ' + + ' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_DatosBancarios' + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_CATEGORIAS' + SQL = + 'INSERT'#10' INTO CONTACTOS_CATEGORIAS'#10' (ID_CONTACTO, ID_CATEGORI' + + 'A)'#10' VALUES'#10' (:ID_CONTACTO, :ID_CATEGORIA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ContactosCategorias' + end + item + Params = < + item + Name = 'OLD_ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_CATEGORIA' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_CATEGORIAS' + SQL = + 'DELETE '#10' FROM'#10' CONTACTOS_CATEGORIAS'#10' WHERE'#10' (ID_CONTACTO' + + ' = :OLD_ID_CONTACTO) AND '#10' (ID_CATEGORIA = :OLD_ID_CATEGORIA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ContactosCategorias' + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CATEGORIA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_CATEGORIA' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_CATEGORIAS' + SQL = + 'UPDATE CONTACTOS_CATEGORIAS'#10' SET '#10' ID_CONTACTO = :ID_CONTACT' + + 'O, '#10' ID_CATEGORIA = :ID_CATEGORIA'#10' WHERE'#10' (ID_CONTACTO = ' + + ':OLD_ID_CONTACTO) AND '#10' (ID_CATEGORIA = :OLD_ID_CATEGORIA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ContactosCategorias' + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_CONTACTOS' + SQL = + 'INSERT INTO EMPRESAS_CONTACTOS'#10' (ID_EMPRESA, ID_CONTACTO)'#10#10'SE' + + 'LECT ID, :ID_CONTACTO'#10'FROM EMPRESAS' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ContactoEmpresas' + end + item + Params = < + item + Name = 'OLD_ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_CONTACTOS' + SQL = + 'DELETE '#10' FROM'#10' EMPRESAS_CONTACTOS'#10' WHERE'#10' (ID_CONTACTO =' + + ' :OLD_ID_CONTACTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ContactoEmpresas' + end + item + Params = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_CONTACTOS' + SQL = + 'UPDATE EMPRESAS_CONTACTOS'#10' SET '#10' ID_EMPRESA = :ID_EMPRESA, '#10 + + ' ID_CONTACTO = :ID_CONTACTO'#10' WHERE'#10' (ID_EMPRESA = :OLD_ID' + + '_EMPRESA) AND '#10' (ID_CONTACTO = :OLD_ID_CONTACTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ContactoEmpresa' + end + item + Params = < + item + Name = 'ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'GRUPO_CLIENTE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'RECARGO_EQUIVALENCIA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE_COMERCIAL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'VENCIMIENTO_FACTURAS' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'BLOQUEADO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'MOTIVO_BLOQUEO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DATOS' + SQL = + 'INSERT'#10' INTO CLIENTES_DATOS'#10' (ID_CLIENTE, GRUPO_CLIENTE, REC' + + 'ARGO_EQUIVALENCIA,'#10' NOMBRE_COMERCIAL, VENCIMIENTO_FACTURAS, ' + + 'BLOQUEADO, MOTIVO_BLOQUEO,'#10' REGIMEN_IVA, ID_TIPO_IVA, ID_FOR' + + 'MA_PAGO, TIENDA_WEB)'#10' VALUES'#10' (:ID_CLIENTE, :GRUPO_CLIENTE, ' + + ':RECARGO_EQUIVALENCIA,'#10' :NOMBRE_COMERCIAL, :VENCIMIENTO_FACT' + + 'URAS,'#10' :BLOQUEADO, :MOTIVO_BLOQUEO, :REGIMEN_IVA,'#10' :ID_T' + + 'IPO_IVA, :ID_FORMA_PAGO, :TIENDA_WEB)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ClientesDatos' + end + item + Params = < + item + Name = 'OLD_ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DATOS' + SQL = + 'DELETE '#10' FROM'#10' CLIENTES_DATOS'#10' WHERE'#10' (ID_CLIENTE = :OLD' + + '_ID_CLIENTE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ClientesDatos' + end + item + Params = < + item + Name = 'ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'GRUPO_CLIENTE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'MOTIVO_BLOQUEO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'RECARGO_EQUIVALENCIA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE_COMERCIAL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'VENCIMIENTO_FACTURAS' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'BLOQUEADO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DATOS' + SQL = + 'UPDATE CLIENTES_DATOS'#10' SET '#10' ID_CLIENTE = :ID_CLIENTE, '#10' ' + + 'GRUPO_CLIENTE = :GRUPO_CLIENTE,'#10' MOTIVO_BLOQUEO = :MOTIVO_BLO' + + 'QUEO,'#10' RECARGO_EQUIVALENCIA = :RECARGO_EQUIVALENCIA,'#10' NOMB' + + 'RE_COMERCIAL = :NOMBRE_COMERCIAL,'#10' VENCIMIENTO_FACTURAS = :VE' + + 'NCIMIENTO_FACTURAS,'#10' BLOQUEADO = :BLOQUEADO,'#10' REGIMEN_IVA ' + + '= :REGIMEN_IVA,'#10' ID_TIPO_IVA = :ID_TIPO_IVA,'#10' ID_FORMA_PAG' + + 'O = :ID_FORMA_PAGO,'#10' TIENDA_WEB = :TIENDA_WEB'#10' WHERE'#10' (ID' + + '_CLIENTE = :OLD_ID_CLIENTE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ClientesDatos' + end + item + Params = < + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION_PROVEEDOR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_ASIGNADO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'HOMOLOGADO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'CERTIFICACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'GRUPO_PROVEEDOR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PROVEEDORES_DATOS' + SQL = + 'INSERT'#10' INTO PROVEEDORES_DATOS'#10' (ID_PROVEEDOR, REGIMEN_IVA, ' + + 'DESCUENTO, DESCRIPCION_PROVEEDOR,'#10' CODIGO_ASIGNADO, ID_TIPO_I' + + 'VA,'#10' ID_FORMA_PAGO, TIENDA_WEB, HOMOLOGADO, CERTIFICACION, GR' + + 'UPO_PROVEEDOR)'#10' VALUES'#10' (:ID_PROVEEDOR, :REGIMEN_IVA, :DESCU' + + 'ENTO, :DESCRIPCION_PROVEEDOR,'#10' :CODIGO_ASIGNADO, :ID_TIPO_IVA' + + ','#10' :ID_FORMA_PAGO, :TIENDA_WEB, :HOMOLOGADO, :CERTIFICACION, ' + + ':GRUPO_PROVEEDOR)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ProveedoresDatos' + end + item + Params = < + item + Name = 'OLD_ID_PROVEEDOR' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PROVEEDORES_DATOS' + SQL = + 'DELETE '#10' FROM'#10' PROVEEDORES_DATOS'#10' WHERE'#10' (ID_PROVEEDOR =' + + ' :OLD_ID_PROVEEDOR)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ProveedoresDatos' + end + item + Params = < + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'REGIMEN_IVA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION_PROVEEDOR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_ASIGNADO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ID_TIPO_IVA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'TIENDA_WEB' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'HOMOLOGADO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'CERTIFICACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'GRUPO_PROVEEDOR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_PROVEEDOR' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'PROVEEDORES_DATOS' + SQL = + 'UPDATE PROVEEDORES_DATOS'#10' SET '#10' ID_PROVEEDOR = :ID_PROVEEDOR' + + ', '#10' REGIMEN_IVA = :REGIMEN_IVA,'#10' DESCUENTO = :DESCUENTO,'#10' ' + + ' DESCRIPCION_PROVEEDOR = :DESCRIPCION_PROVEEDOR,'#10' CODIGO_AS' + + 'IGNADO = :CODIGO_ASIGNADO,'#10' ID_TIPO_IVA = :ID_TIPO_IVA,'#10' I' + + 'D_FORMA_PAGO = :ID_FORMA_PAGO,'#10' TIENDA_WEB = :TIENDA_WEB,'#10' ' + + ' HOMOLOGADO = :HOMOLOGADO,'#10' CERTIFICACION = :CERTIFICACION,'#10' ' + + ' GRUPO_PROVEEDOR = :GRUPO_PROVEEDOR'#10' WHERE'#10' (ID_PROVEEDOR ' + + '= :OLD_ID_PROVEEDOR)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ProveedoresDatos' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'FAX' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'NOTAS' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'PORTE' + DataType = datFloat + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DIRECCIONES' + SQL = + 'INSERT'#10' INTO CONTACTOS_DIRECCIONES'#10' (ID, ID_CONTACTO, NOMBRE' + + ', CALLE, POBLACION, PROVINCIA, CODIGO_POSTAL,'#10' PERSONA_CONTA' + + 'CTO, TELEFONO, MOVIL, FAX, EMAIL, NOTAS, PORTE)'#10' VALUES'#10' (:I' + + 'D, :ID_CONTACTO, :NOMBRE, :CALLE, :POBLACION, :PROVINCIA, :CODIG' + + 'O_POSTAL,'#10' :PERSONA_CONTACTO, :TELEFONO, :MOVIL, :FAX, :EMAI' + + 'L, :NOTAS, :PORTE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_DireccionesContacto' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DIRECCIONES' + SQL = + 'DELETE '#10' FROM'#10' CONTACTOS_DIRECCIONES'#10' WHERE'#10' (ID = :OLD_' + + 'ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_DireccionesContacto' + end + item + Params = < + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'PERSONA_CONTACTO' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'FAX' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'NOTAS' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'PORTE' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONTACTOS_DIRECCIONES' + SQL = + 'UPDATE CONTACTOS_DIRECCIONES'#10' SET '#10' ID_CONTACTO = :ID_CONTAC' + + 'TO, '#10' NOMBRE = :NOMBRE,'#10' CALLE = :CALLE,'#10' POBLACION = :' + + 'POBLACION, '#10' PROVINCIA = :PROVINCIA, '#10' CODIGO_POSTAL = :CO' + + 'DIGO_POSTAL, '#10' PERSONA_CONTACTO = :PERSONA_CONTACTO,'#10' TELE' + + 'FONO = :TELEFONO,'#10' MOVIL = :MOVIL,'#10' FAX = :FAX,'#10' EMAIL ' + + '= :EMAIL,'#10' NOTAS = :NOTAS,'#10' PORTE = :PORTE'#10' WHERE'#10' (ID' + + ' = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_DireccionesContacto' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DTOS_PROVEEDORES' + SQL = + 'INSERT'#10' INTO CLIENTES_DTOS_PROVEEDORES'#10' (ID, ID_CLIENTE, ID_' + + 'PROVEEDOR, DESCUENTO)'#10' VALUES'#10' (:ID, :ID_CLIENTE, :ID_PROVEE' + + 'DOR, :DESCUENTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ClientesDescuentos' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DTOS_PROVEEDORES' + SQL = + 'DELETE '#10' FROM'#10' CLIENTES_DTOS_PROVEEDORES'#10' WHERE'#10' (ID = :' + + 'OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ClientesDescuentos' + end + item + Params = < + item + Name = 'ID_CLIENTE' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_PROVEEDOR' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'DESCUENTO' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CLIENTES_DTOS_PROVEEDORES' + SQL = + 'UPDATE CLIENTES_DTOS_PROVEEDORES'#10' SET '#10' ID_CLIENTE = :ID_CLI' + + 'ENTE,'#10' ID_PROVEEDOR = :ID_PROVEEDOR, '#10' DESCUENTO = :DESCUE' + + 'NTO'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ClientesDescuentos' + end + item + Params = < + item + Name = 'OLD_ID_EMPLEADO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPLEADOS_DATOS' + SQL = + 'DELETE '#10' FROM'#10' EMPLEADOS_DATOS'#10' WHERE'#10' (ID_EMPLEADO = :O' + + 'LD_ID_EMPLEADO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_EmpleadosDatos' + end + item + Params = < + item + Name = 'ID_EMPLEADO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_NACIMIENTO' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_ALTA_EMPRESA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'FORMACION_BASE' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'FORMACION_COMPLE' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'FORMACION_RECIBIDA' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'EXPERIENCIA' + DataType = datMemo + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPLEADOS_DATOS' + SQL = + 'INSERT'#10' INTO EMPLEADOS_DATOS'#10' (ID_EMPLEADO, FECHA_NACIMIENTO' + + ', CATEGORIA, FECHA_ALTA_EMPRESA, FORMACION_BASE,'#10' FORMACION_C' + + 'OMPLE, FORMACION_RECIBIDA, EXPERIENCIA)'#10' VALUES'#10' (:ID_EMPLEA' + + 'DO, :FECHA_NACIMIENTO, :CATEGORIA, :FECHA_ALTA_EMPRESA, :FORMACI' + + 'ON_BASE,'#10' :FORMACION_COMPLE, :FORMACION_RECIBIDA, :EXPERIENCI' + + 'A)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_EmpleadosDatos' + end + item + Params = < + item + Name = 'FECHA_NACIMIENTO' + Value = '' + end + item + Name = 'CATEGORIA' + Value = '' + end + item + Name = 'FECHA_ALTA_EMPRESA' + Value = '' + end + item + Name = 'FORMACION_BASE' + Value = '' + end + item + Name = 'FORMACION_COMPLE' + Value = '' + end + item + Name = 'FORMACION_RECIBIDA' + Value = '' + end + item + Name = 'EXPERIENCIA' + Value = '' + end + item + Name = 'OLD_ID_EMPLEADO' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPLEADOS_DATOS' + SQL = + 'UPDATE EMPLEADOS_DATOS'#10' SET '#10' FECHA_NACIMIENTO = :FECHA_NACI' + + 'MIENTO,'#10' CATEGORIA = :CATEGORIA,'#10' FECHA_ALTA_EMPRESA = :FE' + + 'CHA_ALTA_EMPRESA,'#10' FORMACION_BASE = :FORMACION_BASE,'#10' FORM' + + 'ACION_COMPLE = :FORMACION_COMPLE,'#10' FORMACION_RECIBIDA = :FORM' + + 'ACION_RECIBIDA,'#10' EXPERIENCIA = :EXPERIENCIA'#10' WHERE'#10' (ID_E' + + 'MPLEADO = :OLD_ID_EMPLEADO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_EmpleadosDatos' + end + item + Params = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_CONTACTOS' + SQL = + 'INSERT'#10' INTO EMPRESAS_CONTACTOS'#10' (ID_EMPRESA, ID_CONTACTO)'#10' ' + + ' VALUES'#10' (:ID_EMPRESA, :ID_CONTACTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ContactoEmpresa' + end + item + Params = < + item + Name = 'OLD_ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID_CONTACTO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_CONTACTOS' + SQL = + 'DELETE '#10' FROM'#10' EMPRESAS_CONTACTOS'#10' WHERE'#10' (ID_EMPRESA = ' + + ':OLD_ID_EMPRESA) AND '#10' (ID_CONTACTO = :OLD_ID_CONTACTO)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ContactoEmpresa' + end> + RelationShips = <> + UpdateRules = < + item + Name = 'Insert Contactos' + DoUpdate = False + DoDelete = False + DatasetName = 'Contactos' + FailureBehavior = fbRaiseException + end + item + Name = 'Update Contactos' + DoInsert = False + DoDelete = False + DatasetName = 'Contactos' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert DatosBancarios' + DoUpdate = False + DoDelete = False + DatasetName = 'DatosBancarios' + FailureBehavior = fbRaiseException + end + item + Name = 'Update DatosBancarios' + DoInsert = False + DoDelete = False + DatasetName = 'DatosBancarios' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert DireccionesContacto' + DoUpdate = False + DoDelete = False + DatasetName = 'DireccionesContacto' + FailureBehavior = fbRaiseException + end + item + Name = 'Update DireccionesContacto' + DoInsert = False + DoDelete = False + DatasetName = 'DireccionesContacto' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert ContactosCategorias' + DoUpdate = False + DoDelete = False + DatasetName = 'ContactosCategorias' + FailureBehavior = fbRaiseException + end + item + Name = 'Update ContactosCategorias' + DoInsert = False + DoDelete = False + DatasetName = 'ContactosCategorias' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert AgentesComisiones' + DoUpdate = False + DoDelete = False + DatasetName = 'AgentesComisiones' + FailureBehavior = fbRaiseException + end + item + Name = 'Update AgentesComisiones' + DoInsert = False + DoDelete = False + DatasetName = 'AgentesComisiones' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert ClientesDescuentos' + DoUpdate = False + DoDelete = False + DatasetName = 'ClientesDescuentos' + FailureBehavior = fbRaiseException + end + item + Name = 'Update ClientesDescuentos' + DoInsert = False + DoDelete = False + DatasetName = 'ClientesDescuentos' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete DatosBancarios' + DoUpdate = False + DoInsert = False + DatasetName = 'DatosBancarios' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete ClientesDescuentos' + DoUpdate = False + DoInsert = False + DatasetName = 'ClientesDescuentos' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete AgentesComisiones' + DoUpdate = False + DoInsert = False + DatasetName = 'AgentesComisiones' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete DireccionesContacto' + DoUpdate = False + DoInsert = False + DatasetName = 'DireccionesContacto' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete ContactosCategorias' + DoUpdate = False + DoInsert = False + DatasetName = 'ContactosCategorias' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete Contactos' + DoUpdate = False + DoInsert = False + DatasetName = 'Contactos' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 30 + Top = 14 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'DatosBancarios_ID' + DataType = datAutoInc + DisplayLabel = 'ID' + end + item + Name = 'DatosBancarios_ID_CONTACTO' + DataType = datInteger + DisplayLabel = 'ID_CONTACTO' + end + item + Name = 'DatosBancarios_TITULAR' + DataType = datString + Size = 255 + DisplayLabel = 'Titular' + end + item + Name = 'DatosBancarios_ENTIDAD' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'digo de entidad' + end + item + Name = 'DatosBancarios_SUCURSAL' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'digo de sucursal' + end + item + Name = 'DatosBancarios_DC' + DataType = datString + Size = 15 + DisplayLabel = 'D'#237'gito de control' + end + item + Name = 'DatosBancarios_CUENTA' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'digo de cuenta' + end + item + Name = 'Contactos_ID' + DataType = datAutoInc + DisplayLabel = 'ID' + end + item + Name = 'Contactos_NIF_CIF' + DataType = datString + Size = 15 + DisplayLabel = 'NIF/CIF' + end + item + Name = 'Contactos_NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + end + item + Name = 'Contactos_CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Direcci'#243'n' + end + item + Name = 'Contactos_POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + end + item + Name = 'Contactos_PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + end + item + Name = 'Contactos_CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'digo postal' + end + item + Name = 'Contactos_TELEFONO_1' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. trabajo' + end + item + Name = 'Contactos_TELEFONO_2' + DataType = datString + Size = 25 + DisplayLabel = 'Tlf. particular' + end + item + Name = 'Contactos_MOVIL_1' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil' + end + item + Name = 'Contactos_MOVIL_2' + DataType = datString + Size = 25 + DisplayLabel = 'MOVIL_2' + end + item + Name = 'Contactos_FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + end + item + Name = 'Contactos_EMAIL_1' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail trabajo' + end + item + Name = 'Contactos_EMAIL_2' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail particular' + end + item + Name = 'Contactos_PAGINA_WEB' + DataType = datString + Size = 255 + DisplayLabel = 'Web' + end + item + Name = 'Contactos_NOTAS' + DataType = datMemo + BlobType = dabtMemo + DisplayLabel = 'Observaciones' + end + item + Name = 'Contactos_FECHA_ALTA' + DataType = datDateTime + DisplayLabel = 'Fecha de alta' + end + item + Name = 'Contactos_FECHA_MODIFICACION' + DataType = datDateTime + DisplayLabel = 'Fecha de modificaci'#243'n' + end + item + Name = 'Contactos_USUARIO' + DataType = datString + Size = 20 + DisplayLabel = 'Usuario' + end + item + Name = 'Contactos_ID_CATEGORIA' + DataType = datInteger + end + item + Name = 'Contactos_ID_EMPRESA' + DataType = datInteger + DisplayLabel = 'ID_EMPRESA' + end + item + Name = 'Proveedores_DISTRIBUYE' + DataType = datString + Size = 2000 + DisplayLabel = 'Distribuye' + end + item + Name = 'Proveedores_DESCUENTO' + DataType = datFloat + DisplayLabel = 'Descuento (%)' + end + item + Name = 'Clientes_ID_AGENTE' + DataType = datInteger + DisplayLabel = 'ID_AGENTE' + end + item + Name = 'Clientes_GRUPO_CLIENTE' + DataType = datString + Size = 255 + DisplayLabel = 'Grupo de cliente' + end + item + Name = 'DatosBancarios_PERSONA_CONTACTO' + DataType = datString + Size = 255 + end + item + Name = 'DireccionesContacto_CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Calle' + end + item + Name = 'DireccionesContacto_POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + end + item + Name = 'DireccionesContacto_PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + end + item + Name = 'DireccionesContacto_CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'digo postal' + end + item + Name = 'DireccionesContacto_PERSONA_CONTACTO' + DataType = datString + Size = 255 + DisplayLabel = 'Persona de contacto' + end + item + Name = 'DireccionesContacto_ID' + DataType = datAutoInc + DisplayLabel = 'ID' + end + item + Name = 'DireccionesContacto_ID_CONTACTO' + DataType = datInteger + DisplayLabel = 'ID_CONTACTO' + end + item + Name = 'Clientes_NOMBRE_COMERCIAL' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre comercial' + end + item + Name = 'Clientes_VENCIMIENTO_FACTURAS' + DataType = datInteger + DisplayLabel = 'Vencimiento' + end + item + Name = 'Clientes_BLOQUEADO' + DataType = datInteger + DisplayLabel = #191'Bloqueado?' + end + item + Name = 'Contactos_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + end + item + Name = 'Proveedores_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + end + item + Name = 'Agentes_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + end + item + Name = 'AgentesComisiones_ID' + DataType = datInteger + end + item + Name = 'AgentesComisiones_ID_AGENTE' + DataType = datInteger + end + item + Name = 'AgentesComisiones_ID_PROVEEDOR' + DataType = datInteger + end + item + Name = 'AgentesComisiones_COMISION' + DataType = datFloat + DisplayLabel = 'Comisi'#243'n (%)' + Alignment = taRightJustify + end + item + Name = 'ClientesDescuentos_ID' + DataType = datInteger + DisplayLabel = 'ID' + end + item + Name = 'ClientesDescuentos_ID_CLIENTE' + DataType = datInteger + end + item + Name = 'ClientesDescuentos_ID_PROVEEDOR' + DataType = datInteger + end + item + Name = 'ClientesDescuentos_DESCUENTO' + DataType = datFloat + DisplayLabel = 'Descuento (%)' + Alignment = taRightJustify + end + item + Name = 'Clientes_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'REFERENCIA' + end + item + Name = 'Clientes_MOTIVO_BLOQUEO' + DataType = datString + Size = 255 + DisplayLabel = 'Motivo del bloqueo' + end + item + Name = 'DireccionesContacto_NOMBRE' + DataType = datString + Size = 255 + end + item + Name = 'DireccionesContacto_TELEFONO' + DataType = datString + Size = 25 + DisplayLabel = 'Tel'#233'fono' + end + item + Name = 'DireccionesContacto_EMAIL' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail' + end + item + Name = 'DireccionesContacto_NOTAS' + DataType = datMemo + DisplayLabel = 'Notas' + end + item + Name = 'DireccionesContacto_PORTE' + DataType = datFloat + DisplayLabel = 'Coste del porte' + end + item + Name = 'Clientes_RECARGO_EQUIVALENCIA' + DataType = datInteger + DisplayLabel = 'Rec. equiv.' + end + item + Name = 'Clientes_REGIMEN_IVA' + DataType = datString + Size = 255 + DisplayLabel = 'R'#233'gimen de IVA' + end + item + Name = 'Clientes_ID_TIPO_IVA' + DataType = datInteger + DisplayLabel = 'ID_TIPO_IVA' + end + item + Name = 'Clientes_ID_FORMA_PAGO' + DataType = datInteger + DisplayLabel = 'ID_FORMA_PAGO' + end + item + Name = 'Proveedores_REGIMEN_IVA' + DataType = datString + Size = 255 + DisplayLabel = 'R'#233'gimen de IVA' + end + item + Name = 'Proveedores_ID_TIPO_IVA' + DataType = datInteger + DisplayLabel = 'ID_TIPO_IVA' + end + item + Name = 'Proveedores_ID_FORMA_PAGO' + DataType = datInteger + DisplayLabel = 'ID_FORMA_PAGO' + end + item + Name = 'Clientes_TIENDA_WEB' + DataType = datInteger + DisplayLabel = 'TIENDA_WEB' + end + item + Name = 'Clientes_AGENTE' + DataType = datString + Size = 255 + end + item + Name = 'Contactos_PERSONA_CONTACTO' + DataType = datString + Size = 255 + DisplayLabel = 'Persona de contacto' + end + item + Name = 'Proveedores_GRUPO_PROVEEDOR' + DataType = datString + DisplayLabel = 'Grupo proveedor' + end + item + Name = 'Proveedores_TIENDA_WEB' + DataType = datInteger + DisplayLabel = 'TIENDA_WEB' + end + item + Name = 'Proveedores_HOMOLOGADO' + DataType = datInteger + DisplayLabel = 'Homologado' + end + item + Name = 'Proveedores_CERTIFICACION' + DataType = datString + Size = 255 + DisplayLabel = 'Certificaciones' + end + item + Name = 'Proveedores_DESCRIPCION_PROVEEDOR' + DataType = datString + Size = 255 + DisplayLabel = 'Proveedor de...' + end + item + Name = 'Proveedores_CODIGO_ASIGNADO' + DataType = datString + Size = 255 + DisplayLabel = 'C'#243'digo asignado' + end + item + Name = 'Empleados_FECHA_NACIMIENTO' + DataType = datDateTime + DisplayLabel = 'Fecha nacimiento' + end + item + Name = 'Empleados_CATEGORIA' + DataType = datString + Size = 255 + DisplayLabel = 'Categor'#237'a' + end + item + Name = 'Empleados_FECHA_ALTA_EMPRESA' + DataType = datDateTime + DisplayLabel = 'Fecha de alta' + end + item + Name = 'Empleados_FORMACION_BASE' + DataType = datMemo + DisplayLabel = 'Formaci'#243'n base' + end + item + Name = 'Empleados_FORMACION_COMPLE' + DataType = datMemo + DisplayLabel = 'Formaci'#243'n complementaria' + end + item + Name = 'Empleados_FORMACION_RECIBIDA' + DataType = datMemo + DisplayLabel = 'Formaci'#243'n recibida' + end + item + Name = 'Empleados_EXPERIENCIA' + DataType = datMemo + DisplayLabel = 'Experiencia' + end> + Left = 126 + Top = 14 + end + object Diagrams: TDADiagrams + Left = 126 + Top = 82 + DiagramData = + ''#13#10' '#13#10' '#13#10' '#13#10' '#13#10' '#13#10''#13#10 + end + object bpContactos: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_Contactos' + DeleteCommandName = 'Delete_Contactos' + UpdateCommandName = 'Update_Contactos' + ReferencedDataset = 'Contactos' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 224 + Top = 15 + end + object bpDatosBancarios: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_DatosBancarios' + DeleteCommandName = 'Delete_DatosBancarios' + UpdateCommandName = 'Update_DatosBancarios' + ReferencedDataset = 'DatosBancarios' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 224 + Top = 79 + end + object bpCategoriasContactos: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_ContactosCategorias' + DeleteCommandName = 'Delete_ContactosCategorias' + UpdateCommandName = 'Update_ContactosCategorias' + ReferencedDataset = 'ContactosCategorias' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 224 + Top = 143 + end + object bpEmpleados: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_Contactos' + DeleteCommandName = 'Delete_Contactos' + UpdateCommandName = 'Update_Contactos' + ReferencedDataset = 'Empleados' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 344 + Top = 15 + end + object bpClientes: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_Contactos' + DeleteCommandName = 'Delete_Contactos' + UpdateCommandName = 'Update_Contactos' + ReferencedDataset = 'Clientes' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 344 + Top = 143 + end + object bpProveedores: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_Contactos' + DeleteCommandName = 'Delete_Contactos' + UpdateCommandName = 'Update_Contactos' + ReferencedDataset = 'Proveedores' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 344 + Top = 79 + end + object bpDireccionesContacto: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_DireccionesContacto' + DeleteCommandName = 'Delete_DireccionesContacto' + UpdateCommandName = 'Update_DireccionesContacto' + ReferencedDataset = 'DireccionesContacto' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 224 + Top = 207 + end + object bpClientesDescuentos: TDABusinessProcessor + Schema = schContactos + InsertCommandName = 'Insert_ClientesDescuentos' + DeleteCommandName = 'Delete_ClientesDescuentos' + UpdateCommandName = 'Update_ClientesDescuentos' + ReferencedDataset = 'ClientesDescuentos' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 344 + Top = 207 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 32 + Top = 88 + end +end diff --git a/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas new file mode 100644 index 00000000..099dddea --- /dev/null +++ b/Source/Modulos/Contactos/Servidor/srvContactos_Impl.pas @@ -0,0 +1,137 @@ +unit srvContactos_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf, uDADataTable, uDABINAdapter, uDAClasses, + uDAInterfaces, uDAScriptingProvider, + uDABusinessProcessor, uDADataStreamer; + +type + { TsrvContactos } + TsrvContactos = class(TDataAbstractService, IsrvContactos) + Diagrams: TDADiagrams; + bpContactos: TDABusinessProcessor; + bpDatosBancarios: TDABusinessProcessor; + bpCategoriasContactos: TDABusinessProcessor; + bpEmpleados: TDABusinessProcessor; + bpClientes: TDABusinessProcessor; + bpProveedores: TDABusinessProcessor; + bpDireccionesContacto: TDABusinessProcessor; + bpClientesDescuentos: TDABusinessProcessor; + DABinDataStreamer: TDABinDataStreamer; + schContactos: TDASchema; + DataDictionary: TDADataDictionary; + procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset; + const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + public + function GetNextAutoInc(const GeneratorName: string): Integer; + function GenerateFichaEmpleadoReport(const EmpleadoID: String): Binary; + function GenerateEtiquetasReport(const ContactosID: String): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, Dialogs, uBizContactosServer, + uDataModuleServer, uDatabaseUtils, uUsersManager, + schContactosClient_Intf, uBizEmpleadosServer, + uBizClientesServer, uBizProveedoresServer, uRestriccionesUsuarioUtils; +// uRptFichasEmpleado_Server, uRptEtiquetasContacto_Server; + +procedure Create_srvContactos(out anInstance : IUnknown); +begin + anInstance := TsrvContactos.Create(NIL); +end; + +{ TsrvContactos } + +procedure TsrvContactos.DARemoteServiceBeforeGetDatasetData( + const Dataset: IDADataset; const IncludeSchema: Boolean; + const MaxRecords: Integer); +begin + if (DataSet.Name <> nme_DatosBancarios) and + (DataSet.Name <> nme_DireccionesContacto) and + (DataSet.Name <> nme_GruposCliente) and + (DataSet.Name <> nme_GruposProveedor) and + (DataSet.Name <> nme_GruposEmpleado) and + (DataSet.Name <> nme_ClientesDescuentos) and + (DataSet.Name <> nme_ContactosCategorias) then + begin + { Aqu se asegura que el usuario slo accede a contactos + de las empresas a las que tiene permiso para acceder + filtrando DataSet por ID_EMPRESA. } + FiltrarAccesoUsuario(Session, Connection, schContactos, DataSet, fld_ContactosID_EMPRESA); + end; +end; + +procedure TsrvContactos.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; + + bpContactos.BusinessRulesID := BIZ_SERVER_CONTACTO; + bpEmpleados.BusinessRulesID := BIZ_SERVER_EMPLEADO; + bpClientes.BusinessRulesID := BIZ_SERVER_CLIENTE; + bpProveedores.BusinessRulesID := BIZ_SERVER_PROVEEDOR; +end; + +procedure TsrvContactos.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +function TsrvContactos.GenerateEtiquetasReport(const ContactosID: String): Binary; +//var +// AReportGenerator : TRptEtiquetasContacto; +begin +{ AReportGenerator := TRptEtiquetasContacto.Create(nil); + try + Result := AReportGenerator.GenerarInforme(ContactosID); + finally + FreeAndNIL(AReportGenerator); + end; +} +end; + +function TsrvContactos.GenerateFichaEmpleadoReport(const EmpleadoID: String): Binary; +//var +// AReportGenerator : TRptFichasEmpleado; +begin +{ + AReportGenerator := TRptFichasEmpleado.Create(nil); + try + Result := AReportGenerator.GenerarFicha(EmpleadoID); + finally + FreeAndNIL(AReportGenerator); + end; +} +end; + +function TsrvContactos.GetNextAutoInc(const GeneratorName: string): Integer; +begin + Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) +end; + +initialization + TROClassFactory.Create('srvContactos', Create_srvContactos, TsrvContactos_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Contactos/Test/Contactos_Tests.bdsproj b/Source/Modulos/Contactos/Test/Contactos_Tests.bdsproj new file mode 100644 index 00000000..5c4224da --- /dev/null +++ b/Source/Modulos/Contactos/Test/Contactos_Tests.bdsproj @@ -0,0 +1,496 @@ + + + + + + + + + + + + Contactos_Tests.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\..\Output\Cliente + .\ + + ..\..\Lib + ..\..\..\Lib;..\..\Lib + DataAbstract_D10;Base;GUIBase;ClassRegistry;Contactos_model;Contactos_controller;Contactos_view + _CONSOLE_TESTRUNNER;EUREKALOG;EUREKALOG_VER5 + + True + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + Contactos (Test) + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + DUnit / Delphi Win32 + GUI + + + diff --git a/Source/Modulos/Contactos/Test/Contactos_Tests.dpr b/Source/Modulos/Contactos/Test/Contactos_Tests.dpr new file mode 100644 index 00000000..88b99a2a --- /dev/null +++ b/Source/Modulos/Contactos/Test/Contactos_Tests.dpr @@ -0,0 +1,42 @@ +program Contactos_Tests; +{ + + Delphi DUnit Test Project + ------------------------- + This project contains the DUnit test framework and the GUI/Console test runners. + Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options + to use the console test runner. Otherwise the GUI test runner will be used by + default. + +} + +{$IFDEF CONSOLE_TESTRUNNER} +{$APPTYPE CONSOLE} +{$ENDIF} + +uses + ExceptionLog, + Forms, + TestFramework, + GUITestRunner, + TextTestRunner, + uContactosViewRegister, + uDataModuleUsuarios, + uDataModuleContactos_Test in 'uDataModuleContactos_Test.pas', + uClientesController_test in 'uClientesController_test.pas', + uHostMainForm in 'uHostMainForm.pas' {HostMainForm}; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(THostMainForm, HostMainForm); + uContactosViewRegister.RegisterViews; + if dmUsuarios.Login then + begin + dmUsuarios.IDEmpresaActual := 1; + Application.Run; + end; + Application.Terminate; +end. + diff --git a/Source/Modulos/Contactos/Test/Contactos_Tests.drc b/Source/Modulos/Contactos/Test/Contactos_Tests.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Test/Contactos_Tests.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Test/Contactos_Tests.res b/Source/Modulos/Contactos/Test/Contactos_Tests.res new file mode 100644 index 00000000..759b21ba Binary files /dev/null and b/Source/Modulos/Contactos/Test/Contactos_Tests.res differ diff --git a/Source/Modulos/Contactos/Test/Contactos_data.drc b/Source/Modulos/Contactos/Test/Contactos_data.drc new file mode 100644 index 00000000..686f8580 --- /dev/null +++ b/Source/Modulos/Contactos/Test/Contactos_data.drc @@ -0,0 +1,10 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Source/Modulos/Contactos/Test/cxIntlPrintSys3D10.drc b/Source/Modulos/Contactos/Test/cxIntlPrintSys3D10.drc new file mode 100644 index 00000000..686f8580 --- /dev/null +++ b/Source/Modulos/Contactos/Test/cxIntlPrintSys3D10.drc @@ -0,0 +1,10 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Source/Modulos/Contactos/Test/uClientesController_test.pas b/Source/Modulos/Contactos/Test/uClientesController_test.pas new file mode 100644 index 00000000..b5b7a705 --- /dev/null +++ b/Source/Modulos/Contactos/Test/uClientesController_test.pas @@ -0,0 +1,197 @@ +unit uClientesController_test; +{ + + Delphi DUnit Test Case + ---------------------- + This unit contains a skeleton test case class generated by the Test Case Wizard. + Modify the generated code to correctly setup and call the methods from the unit + being tested. + +} + +interface + +uses + TestFramework, uIEditorCliente, + uIEditorClientes, uClientesController, uCustomEditor, uBizContactos; +type + // Test methods for class TClientesController + + TestTClientesController = class(TTestCase) + strict private + FClientesController: IClientesController; + public + procedure SetUp; override; + procedure TearDown; override; + constructor Create(MethodName: string); override; + destructor Destroy; override; + published + procedure TestListar; + procedure TestVer; + procedure TestNuevo; + procedure TestNuevoYVer; + procedure TestEncontrar; + procedure TestSalvar; + procedure TestNuevoYSalvar; + procedure RecuperarUnCliente; + procedure SeleccionarUnCliente; + end; + +implementation + +uses + schContactosClient_Intf, uDADataTable, + SysUtils, Dialogs, uIDataModuleContactos, uDataModuleContactos, + uBizDatosBancarios, + uContactosViewRegister, uHostMainForm; + +constructor TestTClientesController.Create(MethodName: string); +begin + inherited; + +end; + +destructor TestTClientesController.Destroy; +begin + //uContactosViewRegister.UnRegisterViews; + inherited; +end; + +procedure TestTClientesController.RecuperarUnCliente; +var + ACliente : IBizCliente; +begin + ACliente := FClientesController.Buscar(400) as IBizCliente; + CheckNotNull(ACliente, 'Cliente ID=400 no encontrado'); + FClientesController.Ver(ACliente); +end; + +procedure TestTClientesController.SeleccionarUnCliente; +var + AClientes : IBizCliente; + ACliente : IBizCliente; +begin + AClientes := (FClientesController.BuscarTodos as IBizCliente); + CheckNotNull(AClientes, 'Clientes no encontrados'); + ACliente := (FClientesController.ElegirContacto(AClientes, 'Selecciona una lciente', False) as IBizCliente); + CheckNotNull(ACliente, 'Cliente no elegido'); + FClientesController.Ver(ACliente); +end; + +procedure TestTClientesController.SetUp; +begin + FClientesController := TClientesController.Create; +end; + +procedure TestTClientesController.TearDown; +begin + FClientesController := nil; +end; + +procedure TestTClientesController.TestListar; +var + AContactos : IBizCliente; +begin + AContactos := (FClientesController.BuscarTodos as IBizCliente); + FClientesController.VerTodos(AContactos); +end; + +procedure TestTClientesController.TestVer; +begin + CheckTrue(False); + // TODO: Validate method results +end; + +procedure TestTClientesController.TestNuevo; +var + ACliente: IBizCliente; +begin + ACliente := (FClientesController.Nuevo as IBizCliente); + Check(Assigned(ACliente), 'Cliente no creado'); + Check(ACliente.ID < 0, 'Cliente creado pero con ID incorrecto'); + CheckEquals('Cliente', ACliente.Categoria, 'No es un cliente'); + Check(Assigned(ACliente.DatosBancarios), 'Al cliente le faltan los datos bancarios'); + FClientesController.Ver(ACliente); +end; + +procedure TestTClientesController.TestNuevoYSalvar; +var + ACliente: IBizCliente; + I: Integer; +begin + ACliente := (FClientesController.Nuevo as IBizCliente); + with ACliente do + begin + NIF_CIF := '1234567890-X'; + NOMBRE := 'David Arranz Puerta'; + CALLE := 'Dehesa de Viclvaro, 47 2C'; + POBLACION := 'Madrid'; + PROVINCIA := 'Madrid'; + CODIGO_POSTAL := '28053'; + TELEFONO_1 := '123456789'; + TELEFONO_2 := '9876543231'; + MOVIL_1 := '101918171615141312'; + MOVIL_2 := '010203040506070809'; + FAX := '1111111111'; + EMAIL_1 := 'porqueyolovalgo@osea.com'; + EMAIL_2 := 'fromlost@totheriver.com'; + PAGINA_WEB := 'http://www.trapicheos.com'; + DataTable.Post; + end; + + with ACliente.DatosBancarios do + begin + Check(Assigned(ACliente.DatosBancarios), 'Datos bancarios no creado'); + for i := 1 to 5 do + begin + Insert; + Check(ID < 0, 'Datos bancarios nuevo pero con ID incorrecto'); + TITULAR := ACliente.NOMBRE; + ENTIDAD := '1931'; + SUCURSAL := '3034'; + DC := '15'; + CUENTA := '000000' + IntToStr(i); + Post; + end; + end; + + FClientesController.Guardar(ACliente); + + Check(ACliente.ID >= 0, 'ID no asignado correctamente al contacto'); + Check((ACliente.DatosBancarios.RecordCount = 5), 'Faltan filas de datos bancarios'); +end; + +procedure TestTClientesController.TestNuevoYVer; +var + ACliente: IBizCliente; +begin + CheckTrue(False); + ACliente := (FClientesController.Nuevo as IBizCliente); +end; + +procedure TestTClientesController.TestEncontrar; +var + ReturnValue: Boolean; + ID: Integer; +begin + CheckTrue(False); + // TODO: Setup method call parameters +// ReturnValue := FClientesController.ExisteContacto(ID); + // TODO: Validate method results +end; + +procedure TestTClientesController.TestSalvar; +var + AContacto: IBizCliente; +begin + CheckTrue(False); + // TODO: Setup method call parameters +// FClientesController.Salvar(AContacto); + // TODO: Validate method results +end; + +initialization + // Register any test cases with the test runner + RegisterTest(TestTClientesController.Suite); +end. + diff --git a/Source/Modulos/Contactos/Test/uDataModuleContactos_Test.pas b/Source/Modulos/Contactos/Test/uDataModuleContactos_Test.pas new file mode 100644 index 00000000..190dc72c --- /dev/null +++ b/Source/Modulos/Contactos/Test/uDataModuleContactos_Test.pas @@ -0,0 +1,140 @@ +unit uDataModuleContactos_Test; +{ + + Delphi DUnit Test Case + ---------------------- + This unit contains a skeleton test case class generated by the Test Case Wizard. + Modify the generated code to correctly setup and call the methods from the unit + being tested. + +} + +interface + +uses + TestFramework, uBizContactos, uROBinMessage, uROServiceComponent, + uDAClientDataModule, uROClient, uDataModuleContactos, uDACDSDataTable, + uBizDatosBancarios, uDADataTable, Contnrs, Classes, SysUtils, DB, uDAScriptingProvider, + uROWinInetHttpChannel, uDABINAdapter, uRORemoteService, DBClient, + uBizCategoriasContacto; +type + // Test methods for class TdmContactos + + TestTdmContactos = class(TTestCase) + strict private + FdmContactos: TDataModuleContactos; + private + procedure Test_GetItems; + public + procedure SetUp; override; + procedure TearDown; override; + published + procedure Test_GetItems_Clientes; + procedure Test_GetItems_Proveedor; + function Test_GetDatosBancarios : IBizDatosBancarios; + function Test_GetCategorias : IBizCategoriasContacto; +// function Test_GetItems (IDCategoria : Integer): IBizContacto; + end; + +implementation + +uses + Dialogs, uDataTableUtils; + +procedure TestTdmContactos.SetUp; +begin + FdmContactos := TDataModuleContactos.Create(NIL); +end; + +procedure TestTdmContactos.TearDown; +begin + FdmContactos.Free; + FdmContactos := nil; +end; + +function TestTdmContactos.Test_GetCategorias: IBizCategoriasContacto; +begin + +end; + +function TestTdmContactos.Test_GetDatosBancarios: IBizDatosBancarios; +begin + +end; + +procedure TestTdmContactos.Test_GetItems; +begin + // +end; + +procedure TestTdmContactos.Test_GetItems_Clientes; +var + AContacto : IBizContacto; + ACliente: IBizCliente; + I: Integer; +begin + AContacto := FdmContactos._GetItems(CATEGORIA_CLIENTE); + CheckIs(AContacto.DataTable.BusinessEventsObj, TBizCliente); + ACliente := (AContacto as IBizCliente); + + try + with ACliente do + begin + DataTable.Active := True; + Insert; + + Check(ID < 0, Format('ID no vlido ID=%d', [ID])); + CheckEquals('Cliente', Categoria); + + NIF_CIF := '1234567890-X'; + NOMBRE := 'David Arranz Puerta'; + CALLE := 'Dehesa de Viclvaro, 47 2C'; + POBLACION := 'Madrid'; + PROVINCIA := 'Madrid'; + CODIGO_POSTAL := '28053'; + TELEFONO_1 := '123456789'; + TELEFONO_2 := '9876543231'; + MOVIL_1 := '101918171615141312'; + MOVIL_2 := '010203040506070809'; + FAX := '1111111111'; + EMAIL_1 := 'porqueyolovalgo@osea.com'; + EMAIL_2 := 'fromlost@totheriver.com'; + PAGINA_WEB := 'http://www.trapicheos.com'; + + Post; + end; + + Check(Assigned(ACliente.DatosBancarios), 'Datos bancarios no creado'); + with ACliente.DatosBancarios do + begin + Insert; + for i := 0 to 5 do + begin + Insert; + Check(ID < 0, Format('ID no vlido ID=%d', [ID])); + TITULAR := ACliente.NOMBRE; + ENTIDAD := '1931'; + SUCURSAL := '3034'; + DC := '15'; + CUENTA := '000000' + IntToStr(i); + Post; + end; + end; + ACliente.DataTable.ApplyUpdates; + ShowMessage(SysUtils.Format('ID = %d', [ACliente.ID])); + finally + ACliente := NIL; + AContacto := NIL; + end; +end; + +procedure TestTdmContactos.Test_GetItems_Proveedor; +begin + +end; + +initialization + // Register any test cases with the test runner + RegisterTest(TestTdmContactos.Suite); +end. + diff --git a/Source/Modulos/Contactos/Test/uHostMainForm.dfm b/Source/Modulos/Contactos/Test/uHostMainForm.dfm new file mode 100644 index 00000000..1de986c4 --- /dev/null +++ b/Source/Modulos/Contactos/Test/uHostMainForm.dfm @@ -0,0 +1,28 @@ +object HostMainForm: THostMainForm + Left = 0 + Top = 0 + Caption = 'HostMainForm' + ClientHeight = 598 + ClientWidth = 690 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCloseQuery = FormCloseQuery + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 690 + Height = 598 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + end +end diff --git a/Source/Modulos/Contactos/Test/uHostMainForm.pas b/Source/Modulos/Contactos/Test/uHostMainForm.pas new file mode 100644 index 00000000..f036830a --- /dev/null +++ b/Source/Modulos/Contactos/Test/uHostMainForm.pas @@ -0,0 +1,127 @@ +unit uHostMainForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uGUIBase, ExtCtrls, uCustomEditor, cxControls, XPMan; + +type + THostMainForm = class(TForm, IHostForm) + Panel1: TPanel; + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure FormShow(Sender: TObject); + protected + FContenido : TCustomEditor; + function GetWorkPanel: TWinControl; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + procedure ShowEmbedded(AEditor : ICustomEditor); + procedure ReleaseEmbedded; + function Login: Boolean; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property WorkPanel: TWinControl read GetWorkPanel; + end; + +var + HostMainForm: THostMainForm; + +implementation + +{$R *.dfm} + +uses + TestFramework, GUITestRunner, TextTestRunner, uDataModuleUsuarios; + + +{ TForm1 } + +constructor THostMainForm.Create(AOwner: TComponent); +begin + inherited; + FContenido := NIL; + Login; +end; + +destructor THostMainForm.Destroy; +begin + ReleaseEmbedded; + inherited; +end; + +procedure THostMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + CanClose := True; + if Assigned(FContenido) then + CanClose := FContenido.CloseQuery; +end; + +procedure THostMainForm.FormShow(Sender: TObject); +begin + if IsConsole then + TextTestRunner.RunRegisteredTests + else + GUITestRunner.RunRegisteredTestsModeless; + Self.SendToBack; +end; + +function THostMainForm.GetWorkPanel: TWinControl; +begin + Result := Panel1; +end; + +function THostMainForm.Login: Boolean; +begin + // + Result := dmUsuarios.Login('Administrador', '1'); + if Result then + dmUsuarios.IDEmpresaActual := 1; + +end; + +procedure THostMainForm.OnWorkPanelChanged(AEditor: ICustomEditor); +begin + // +end; + +procedure THostMainForm.ReleaseEmbedded; +begin + if Assigned(FContenido) then + FContenido.Release; + Application.ProcessMessages; +end; + +procedure THostMainForm.ShowEmbedded(AEditor: ICustomEditor); +begin + if Assigned(FContenido) then + if not FContenido.CloseQuery then + begin + AEditor.Release; + AEditor := NIL; + Exit; + end; + + ShowHourglassCursor; + LockWindowUpdate(Handle); + try + FContenido := AEditor.GetInstance as TCustomEditor; + with (FContenido) do + begin + Visible := False; + BorderIcons := []; + BorderStyle := bsNone; + Parent := WorkPanel; + FContenido.Show; + Align := alClient; + FContenido.SetFocus; + end; + finally + Application.ProcessMessages; + LockWindowUpdate(0); + HideHourglassCursor; + end; + OnWorkPanelChanged(FContenido); +end; + +end. diff --git a/Source/Modulos/Contactos/Test/vclie.drc b/Source/Modulos/Contactos/Test/vclie.drc new file mode 100644 index 00000000..686f8580 --- /dev/null +++ b/Source/Modulos/Contactos/Test/vclie.drc @@ -0,0 +1,10 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Source/Modulos/Contactos/Utiles/uRegimenIVAUtils.pas b/Source/Modulos/Contactos/Utiles/uRegimenIVAUtils.pas new file mode 100644 index 00000000..d6c240cb --- /dev/null +++ b/Source/Modulos/Contactos/Utiles/uRegimenIVAUtils.pas @@ -0,0 +1,31 @@ +unit uRegimenIVAUtils; + +interface + +uses + Classes; + +const + REGIMEN_IVA_GENERAL = 'General'; + REGIMEN_IVA_EXENTO = 'Exento'; + REGIMEN_IVA_UE = 'U.E.'; + REGIMEN_IVA_IMPORTACIONES = 'Importaciones'; + +function DarRegimenesIVA : TStringList; + +implementation + +function DarRegimenesIVA : TStringList; +begin + Result := TStringList.Create; + with Result do + begin + Add(REGIMEN_IVA_GENERAL); + Add(REGIMEN_IVA_EXENTO); + Add(REGIMEN_IVA_UE); + Add(REGIMEN_IVA_IMPORTACIONES); + end; +end; + + +end. diff --git a/Source/Modulos/Contactos/Views/Contactos_controller.drc b/Source/Modulos/Contactos/Views/Contactos_controller.drc new file mode 100644 index 00000000..686f8580 --- /dev/null +++ b/Source/Modulos/Contactos/Views/Contactos_controller.drc @@ -0,0 +1,10 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + diff --git a/Source/Modulos/Contactos/Views/Contactos_view.bdsproj b/Source/Modulos/Contactos/Views/Contactos_view.bdsproj new file mode 100644 index 00000000..c1f237f8 --- /dev/null +++ b/Source/Modulos/Contactos/Views/Contactos_view.bdsproj @@ -0,0 +1,543 @@ + + + + + + + + + + + + Contactos_view.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + ExpressBars extended items by Developer Express Inc. + ExpressCommonLibrary by Developer Express Inc. + ExpressBars by Developer Express Inc. + Express Cross Platform Library by Developer Express Inc. + Express XP Theme Manager by Developer Express Inc. + ExpressEditors Library 5 by Developer Express Inc. + ExpressDataController by Developer Express Inc. + ExpressExtendedEditors Library 5 by Developer Express Inc. + ExpressQuantumGrid 5 by Developer Express Inc. + Express Cross Platform PageControl by Developer Express Inc. + Express Cross Platform Export Library by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressQuantumTreeList 4 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressDocking Library by Developer Express Inc. + ExpressLayout Control by Developer Express Inc. + ExpressNavBar by Developer Express Inc. + ExpressPrinting System by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Application and Form Components Runtime Package + JVCL Core Runtime Package + JEDI Code Library RTL package + JEDI Code Library VCL package + JVCL System Runtime Package + JVCL Standard Controls Runtime Package + JVCL Band Objects Runtime Package + JVCL BDE Components Runtime Package + JVCL Controls Runtime Package + JVCL Components Runtime Package + JVCL DotNet Controls Runtime Package + JVCL EDI Components + JVCL Globus Components + JVCL HMI Controls runtime package + JVCL Interpreter Components Runtime Package + JVCL Jans Components + JVCL Managed Threads - runtime package + JVCL Multimedia and Image Components Runtime Package + JVCL Network Components Runtime Package + JVCL Page Style Components Runtime Package + JVCL Plugin Components Runtime Package + JVCL Print Preview Components + JVCL Runtime Design Components Runtime Package + JVCL Time Framework + JVCL Validators and Error Indicator Components + JVCL Wizard Run Time Package + JVCL XP Controls Runtime Package + (untitled) + ExpressGDI+ Library by Developer Express Inc. + + + + diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dpk b/Source/Modulos/Contactos/Views/Contactos_view.dpk new file mode 100644 index 00000000..5959ca63 --- /dev/null +++ b/Source/Modulos/Contactos/Views/Contactos_view.dpk @@ -0,0 +1,129 @@ +package Contactos_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + vcljpg, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + vclx, + cxExportD10, + tbx_d10, + tb2k_d10, + dsnap, + adortl, + dxLayoutControlD10, + dxComnD10, + dxPSCoreD10, + dxPScxCommonD10, + dxPSLnksD10, + designide, + xmlrtl, + vclactnband, + vclshlctrls, + dxPScxGridLnkD10, + dclcxLibraryD10, + JvCoreD10R, + Jcl, + JclVcl, + JvSystemD10R, + JvStdCtrlsD10R, + JvAppFrmD10R, + JvPageCompsD10R, + PNG_D10, + PngComponentsD10, + GUISDK_D10, + ccpack10, + cfpack_d10, + DataAbstract_D10, + Base, + GUIBase, + FormasPago_model, + FormasPago_controller, + TiposIVA_model, + TiposIVA_controller, + Contactos_model, + Contactos_controller, + JvCtrlsD10R, + JvGlobusD10R, + VclSmp, + bdertl, + vclie, + JvCustomD10R, + frx10, + fs10, + fqb100, + frxe10, + frxTee10, + fsTee10, + tee, + teeui, + teedb; + +contains + uContactosViewRegister in 'uContactosViewRegister.pas', + uViewContactos in 'uViewContactos.pas' {frViewContactos: TCustomView}, + uViewClientes in 'uViewClientes.pas' {frViewClientes: TCustomView}, + uEditorContactos in 'uEditorContactos.pas' {fEditorContactos: TCustomEditor}, + uEditorClientes in 'uEditorClientes.pas' {fEditorClientes: TCustomEditor}, + uViewContacto in 'uViewContacto.pas' {frViewContacto: TCustomView}, + uEditorCliente in 'uEditorCliente.pas' {fEditorCliente: TCustomEditor}, + uEditorContacto in 'uEditorContacto.pas' {fEditorContacto: TCustomEditor}, + uViewCliente in 'uViewCliente.pas' {frViewCliente: TCustomView}, + uViewDatosYSeleccionProveedor in 'uViewDatosYSeleccionProveedor.pas' {frViewDatosYSeleccionProveedor: TFrame}, + uViewProveedores in 'uViewProveedores.pas' {frViewProveedores: TCustomView}, + uViewEmpleados in 'uViewEmpleados.pas' {frViewEmpleados: TCustomView}, + uEditorProveedores in 'uEditorProveedores.pas' {fEditorProveedores: TCustomEditor}, + uViewProveedor in 'uViewProveedor.pas' {frViewProveedor: TCustomView}, + uViewEmpleado in 'uViewEmpleado.pas' {frViewEmpleado: TCustomView}, + uEditorProveedor in 'uEditorProveedor.pas' {fEditorProveedor: TCustomEditor}, + uEditorElegirClientes in 'uEditorElegirClientes.pas' {fEditorElegirClientes: TCustomEditor}, + uViewDatosYSeleccionCliente in 'uViewDatosYSeleccionCliente.pas' {frViewDatosYSeleccionCliente: TFrame}, + uEditorElegirProveedores in 'uEditorElegirProveedores.pas' {fEditorElegirProveedores: TCustomEditor}, + uViewDireccionesEntrega in 'uViewDireccionesEntrega.pas' {frViewDireccionesEntrega: TFrame}, + uViewClienteDescuentos in 'uViewClienteDescuentos.pas' {frViewClienteDescuentos: TFrame}, + uEditorDireccion in 'uEditorDireccion.pas' {fEditorDireccion}, + uEditorElegirDireccionEntrega in 'uEditorElegirDireccionEntrega.pas' {fEditorElegirDireccionEntrega: TfEditorElegirDireccionEntrega}, + uViewContactoDatosBancarios in 'uViewContactoDatosBancarios.pas' {frViewClienteDatosBancarios: TFrame}, + uViewProveedorDatosComerciales in 'uViewProveedorDatosComerciales.pas' {frViewProveedorDatosComerciales: TFrame}, + uViewClienteDatosComerciales in 'uViewClienteDatosComerciales.pas' {frViewClienteDatosComerciales: TFrame}, + uEditorGruposCliente in 'uEditorGruposCliente.pas' {fEditorGruposCliente: TCustomEditor}, + uEditorEmpleado in 'uEditorEmpleado.pas' {fEditorEmpleado: TCustomEditor}, + uEditorEmpleados in 'uEditorEmpleados.pas' {fEditorEmpleados: TCustomEditor}, + uEditorGruposProveedor in 'uEditorGruposProveedor.pas' {fEditorGruposProveedor: TCustomEditor}, + uEditorGruposEmpleado in 'uEditorGruposEmpleado.pas' {fEditorGruposEmpleado: TCustomEditor}, + uEditorFichasEmpleadoReport in 'uEditorFichasEmpleadoReport.pas' {fEditorFichasEmpleadoReport: TCustomEditor}, + uEditorEtiquetasContactosReport in 'uEditorEtiquetasContactosReport.pas' {fEditorEtiquetasContactosReport: TCustomEditor}; + +end. diff --git a/Source/Modulos/Contactos/Views/Contactos_view.dproj b/Source/Modulos/Contactos/Views/Contactos_view.dproj new file mode 100644 index 00000000..1a5d4c63 --- /dev/null +++ b/Source/Modulos/Contactos/Views/Contactos_view.dproj @@ -0,0 +1,892 @@ + + + {3a12ff5e-75c6-4e1e-bc5c-b6b9010ba595} + Contactos_view.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Contactos_view.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExpressBars extended items by Developer Express Inc. + ExpressCommonLibrary by Developer Express Inc. + ExpressBars by Developer Express Inc. + Express Cross Platform Library by Developer Express Inc. + Express XP Theme Manager by Developer Express Inc. + ExpressEditors Library 5 by Developer Express Inc. + ExpressDataController by Developer Express Inc. + ExpressExtendedEditors Library 5 by Developer Express Inc. + ExpressQuantumGrid 5 by Developer Express Inc. + Express Cross Platform PageControl by Developer Express Inc. + Express Cross Platform Export Library by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressQuantumTreeList 4 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressDocking Library by Developer Express Inc. + ExpressLayout Control by Developer Express Inc. + ExpressNavBar by Developer Express Inc. + ExpressPrinting System by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Application and Form Components Runtime Package + JVCL Core Runtime Package + JEDI Code Library RTL package + JEDI Code Library VCL package + JVCL System Runtime Package + JVCL Standard Controls Runtime Package + JVCL Band Objects Runtime Package + JVCL BDE Components Runtime Package + JVCL Controls Runtime Package + JVCL Components Runtime Package + JVCL DotNet Controls Runtime Package + JVCL EDI Components + JVCL Globus Components + JVCL HMI Controls runtime package + JVCL Interpreter Components Runtime Package + JVCL Jans Components + JVCL Managed Threads - runtime package + JVCL Multimedia and Image Components Runtime Package + JVCL Network Components Runtime Package + JVCL Page Style Components Runtime Package + JVCL Plugin Components Runtime Package + JVCL Print Preview Components + JVCL Runtime Design Components Runtime Package + JVCL Time Framework + JVCL Validators and Error Indicator Components + JVCL Wizard Run Time Package + JVCL XP Controls Runtime Package + (untitled) + ExpressGDI+ Library by Developer Express Inc. + + + Contactos_view.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fEditorCliente
+
+ +
fEditorClientes
+
+ +
fEditorContacto
+
+ +
fEditorContactos
+
+ +
fEditorDireccion
+
+ +
fEditorElegirClientes
+
+ +
fEditorElegirDireccionEntrega
+
+ +
fEditorElegirProveedores
+
+ +
fEditorEmpleado
+
+ +
fEditorEmpleados
+
+ +
fEditorEtiquetasContactosReport
+
+ +
fEditorFichasEmpleadoReport
+
+ +
fEditorGruposCliente
+
+ +
fEditorGruposEmpleado
+
+ +
fEditorGruposProveedor
+
+ +
fEditorProveedor
+
+ +
fEditorProveedores
+
+ +
frViewCliente
+
+ +
frViewClienteDatosComerciales
+
+ +
frViewClienteDescuentos
+
+ +
frViewClientes
+
+ +
frViewContacto
+
+ +
frViewClienteDatosBancarios
+
+ +
frViewContactos
+
+ +
frViewDatosYSeleccionCliente
+
+ +
frViewDatosYSeleccionProveedor
+
+ +
frViewDireccionesEntrega
+
+ +
frViewEmpleado
+
+ +
frViewEmpleados
+
+ +
frViewProveedor
+
+ +
frViewProveedorDatosComerciales
+
+ +
frViewProveedores
+
+
+ +
+ + diff --git a/Source/Modulos/Contactos/Views/Contactos_view.drc b/Source/Modulos/Contactos/Views/Contactos_view.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Contactos/Views/Contactos_view.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Contactos/Views/Contactos_view.rc b/Source/Modulos/Contactos/Views/Contactos_view.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Contactos/Views/Contactos_view.res b/Source/Modulos/Contactos/Views/Contactos_view.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Contactos/Views/Contactos_view.res differ diff --git a/Source/Modulos/Contactos/Views/uContactosViewRegister.pas b/Source/Modulos/Contactos/Views/uContactosViewRegister.pas new file mode 100644 index 00000000..1e6e0b3e --- /dev/null +++ b/Source/Modulos/Contactos/Views/uContactosViewRegister.pas @@ -0,0 +1,67 @@ +unit uContactosViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, + uEditorClientes, uEditorProveedores, + uEditorEmpleados, uEditorElegirCLientes, + uEditorCliente, uEditorProveedor, + uEditorEmpleado, uEditorElegirProveedores, uEditorDireccion, + uEditorElegirDireccionEntrega, uEditorGruposCliente, uEditorGruposProveedor, uEditorGruposEmpleado, + uEditorFichasEmpleadoReport, uEditorEtiquetasContactosReport; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorClientes, 'EditorClientes'); + EditorRegistry.RegisterClass(TfEditorProveedores, 'EditorProveedores'); + EditorRegistry.RegisterClass(TfEditorEmpleados, 'EditorEmpleados'); + + EditorRegistry.RegisterClass(TfEditorCliente, 'EditorCliente'); + EditorRegistry.RegisterClass(TfEditorProveedor, 'EditorProveedor'); + EditorRegistry.RegisterClass(TfEditorEmpleado, 'EditorEmpleado'); + + EditorRegistry.RegisterClass(TfEditorElegirClientes, 'EditorElegirClientes'); + EditorRegistry.RegisterClass(TfEditorElegirProveedores, 'EditorElegirProveedores'); + + EditorRegistry.RegisterClass(TfEditorDireccion, 'EditorDireccion'); + EditorRegistry.RegisterClass(TfEditorElegirDireccionEntrega, 'EditorElegirDireccionEntrega'); + + EditorRegistry.RegisterClass(TfEditorGruposCliente, 'EditorGruposCliente'); + EditorRegistry.RegisterClass(TfEditorGruposProveedor, 'EditorGruposProveedor'); + EditorRegistry.RegisterClass(TfEditorGruposEmpleado, 'EditorGruposEmpleado'); + + EditorRegistry.RegisterClass(TfEditorFichasEmpleadoPreview, 'EditorFichasEmpleadoPreview'); + EditorRegistry.RegisterClass(TfEditorEtiquetasContactosPreview, 'EditorEtiquetasContactosPreview'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorClientes); + EditorRegistry.UnRegisterClass(TfEditorProveedores); + EditorRegistry.UnRegisterClass(TfEditorEmpleados); + + EditorRegistry.UnRegisterClass(TfEditorCliente); + EditorRegistry.UnRegisterClass(TfEditorProveedor); + EditorRegistry.UnRegisterClass(TfEditorEmpleado); + + EditorRegistry.UnRegisterClass(TfEditorElegirClientes); + EditorRegistry.UnRegisterClass(TfEditorElegirProveedores); + + EditorRegistry.UnRegisterClass(TfEditorDireccion); + EditorRegistry.UnRegisterClass(TfEditorElegirDireccionEntrega); + + EditorRegistry.UnRegisterClass(TfEditorGruposCliente); + EditorRegistry.UnRegisterClass(TfEditorGruposProveedor); + EditorRegistry.UnRegisterClass(TfEditorGruposEmpleado); + + EditorRegistry.UnRegisterClass(TfEditorFichasEmpleadoPreview); + EditorRegistry.UnRegisterClass(TfEditorEtiquetasContactosPreview); +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorCliente.dfm b/Source/Modulos/Contactos/Views/uEditorCliente.dfm new file mode 100644 index 00000000..fa00f52b --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorCliente.dfm @@ -0,0 +1,1011 @@ +inherited fEditorCliente: TfEditorCliente + Left = 387 + Top = 297 + Caption = 'Ficha de cliente' + ClientHeight = 585 + ClientWidth = 656 + ExplicitWidth = 664 + ExplicitHeight = 619 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 656 + Caption = 'Ficha de cliente' + ExplicitWidth = 656 + inherited Image1: TImage + Left = 629 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000033B4944415478DADD957F6856 + 5518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D6642496A32874A1 + 329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821CBA0D572928 + 46A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE1F0F3CDC73 + 78CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA79CA18400E + C61C86162270F93043033D986692E9454B99337F459A80695AA37EFB6B58D6BD + F1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C47431B7BC9EE2 + 05B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C951627AA06A9AC + FB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F1C401D1A91 + C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BCD9D09C0E08 + F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F768E8A08C3 + 64D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F6482103210442D7D125E4 + 7AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF2051989613214 + 19BB5C681806868444E30922D32B295DBC7E42717B5CB761977391FBBB5AD16E + 76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DDCE806B7D17 + E8ED68656622814716591882802AB893534259453D3373674F286EFBDED9F259 + 3AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF30ED5854B78 + 7FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F655FE711DA03 + 5DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7E06D0AB2E7 + A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468CBC58169A57 + 10F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F95B3A9797F + 2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC872BECE3EF + 500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7340F56A620 + E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD63060DCB5F + 4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A52964E678D9 + 5CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF173E327147 + C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A30000000049454E44 + AE426082} + ExplicitLeft = 565 + end + end + inherited TBXDock: TTBXDock + Width = 656 + ExplicitWidth = 656 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 446 + object TBXItem7: TTBXItem [7] + Action = actGruposCliente + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 656 + end + end + inherited pgPaginas: TPageControl + Width = 656 + Height = 490 + ExplicitWidth = 656 + ExplicitHeight = 490 + inherited pagGeneral: TTabSheet + ExplicitWidth = 648 + ExplicitHeight = 462 + inline frViewCliente1: TfrViewCliente + Left = 0 + Top = 0 + Width = 648 + Height = 462 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 648 + ExplicitHeight = 462 + inherited dxLayoutControlContacto: TdxLayoutControl + Width = 648 + Height = 462 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 648 + ExplicitHeight = 462 + inherited PngSpeedButton1: TPngSpeedButton + Left = 603 + Top = 218 + ExplicitLeft = 603 + ExplicitTop = 218 + end + inherited PngSpeedButton2: TPngSpeedButton + Left = 603 + Top = 190 + ExplicitLeft = 603 + ExplicitTop = 190 + end + inherited PngSpeedButton3: TPngSpeedButton + Left = 603 + Top = 162 + ExplicitLeft = 603 + ExplicitTop = 162 + end + inherited Label1: TLabel + Left = 429 + Top = 270 + Width = 269 + ExplicitLeft = 429 + ExplicitTop = 270 + ExplicitWidth = 269 + end + inherited eCalle: TcxDBTextEdit + Top = 267 + ExplicitTop = 267 + ExplicitWidth = 268 + Width = 268 + end + inherited eProvincia: TcxDBTextEdit + Top = 321 + ExplicitTop = 321 + ExplicitWidth = 268 + Width = 268 + end + inherited ePoblacion: TcxDBTextEdit + Top = 294 + ExplicitTop = 294 + ExplicitWidth = 78 + Width = 78 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 336 + Top = 294 + ExplicitLeft = 336 + ExplicitTop = 294 + end + inherited eObservaciones: TcxDBMemo + Top = 372 + ExplicitTop = 372 + ExplicitWidth = 587 + ExplicitHeight = 33 + Height = 33 + Width = 587 + end + inherited eNombreComercial: TcxDBTextEdit + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 265 + Width = 265 + end + inherited cbClienteBloqueado: TcxDBCheckBox + Top = 162 + ExplicitTop = 162 + ExplicitWidth = 163 + Width = 163 + end + inherited cbGrupoCliente: TcxDBComboBox + Top = 111 + ExplicitTop = 111 + ExplicitWidth = 40 + Width = 40 + end + inherited eBloqueo: TcxDBTextEdit + Top = 189 + ExplicitTop = 189 + ExplicitWidth = 205 + Width = 205 + end + inherited cxDBCheckBox1: TcxDBCheckBox + Left = 429 + Top = 315 + ExplicitLeft = 429 + ExplicitTop = 315 + ExplicitWidth = 275 + ExplicitHeight = 21 + Width = 275 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 524 + Top = 57 + ExplicitLeft = 524 + ExplicitTop = 57 + ExplicitWidth = 91 + Width = 91 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 524 + Top = 30 + ExplicitLeft = 524 + ExplicitTop = 30 + ExplicitWidth = 127 + Width = 127 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 524 + Top = 84 + ExplicitLeft = 524 + ExplicitTop = 84 + ExplicitWidth = 140 + Width = 140 + end + inherited eFax: TcxDBTextEdit + Left = 524 + Top = 111 + ExplicitLeft = 524 + ExplicitTop = 111 + ExplicitWidth = 121 + Width = 121 + end + inherited eNombre: TcxDBTextEdit + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 158 + Width = 158 + end + inherited eNIFCIF: TcxDBTextEdit + Left = 220 + Top = 30 + ExplicitLeft = 220 + ExplicitTop = 30 + ExplicitWidth = 268 + Width = 268 + end + inherited eMailTrabajo: TcxDBHyperLinkEdit + Left = 524 + Top = 162 + Properties.Prefix = 'mailto:' + ExplicitLeft = 524 + ExplicitTop = 162 + ExplicitWidth = 121 + Width = 121 + end + inherited eMailParticular: TcxDBHyperLinkEdit + Left = 524 + Top = 190 + Properties.Prefix = 'mailto:' + ExplicitLeft = 524 + ExplicitTop = 190 + ExplicitWidth = 121 + Width = 121 + end + inherited ePaginaWeb: TcxDBHyperLinkEdit + Left = 524 + Top = 217 + ExplicitLeft = 524 + ExplicitTop = 217 + ExplicitWidth = 121 + Width = 121 + end + inherited eReferencia: TcxDBTextEdit + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 102 + Width = 102 + end + inherited ePersonaContacto: TcxDBTextEdit + Top = 240 + ExplicitTop = 240 + ExplicitWidth = 256 + Width = 256 + end + end + inherited dsContacto: TDADataSource + Left = 24 + Top = 56 + end + end + end + inherited pagDatosBancarios: TTabSheet + ExplicitWidth = 648 + ExplicitHeight = 462 + inherited frViewClienteDatosBancarios: TfrViewClienteDatosBancarios + Width = 648 + Height = 462 + ExplicitWidth = 648 + ExplicitHeight = 462 + inherited dxLayoutControl1: TdxLayoutControl + Width = 648 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 648 + inherited eEntidad: TcxDBTextEdit + ExplicitWidth = 114 + Width = 114 + end + inherited eSucursal: TcxDBTextEdit + Left = 418 + ExplicitLeft = 418 + ExplicitWidth = 112 + Width = 112 + end + inherited eCuenta: TcxDBTextEdit + ExplicitWidth = 194 + Width = 194 + end + inherited eTitular: TcxDBTextEdit + ExplicitWidth = 194 + Width = 194 + end + end + end + end + object pagDatosComerciales: TTabSheet + Caption = 'Datos comerciales' + ImageIndex = 4 + inline frViewClienteDatosComerciales1: TfrViewClienteDatosComerciales + Left = 0 + Top = 0 + Width = 648 + Height = 193 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 648 + ExplicitHeight = 193 + inherited dxLayoutControl1: TdxLayoutControl + Width = 648 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 648 + inherited Label1: TLabel + Left = 397 + Top = 30 + Width = 206 + Height = 39 + ExplicitLeft = 397 + ExplicitTop = 30 + ExplicitWidth = 206 + ExplicitHeight = 39 + end + inherited eDiasVencimiento: TcxDBSpinEdit + Left = 464 + Top = 75 + ExplicitLeft = 464 + ExplicitTop = 75 + ExplicitWidth = 160 + Width = 160 + end + inherited cbRegimenIVA: TcxDBComboBox + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 121 + Width = 121 + end + inherited cbRecargoEquivalencia: TcxDBCheckBox + Top = 111 + ExplicitTop = 111 + ExplicitWidth = 121 + Width = 121 + end + inherited cbFormaPago: TcxDBLookupComboBox + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 121 + Width = 121 + end + inherited bFormasPago: TButton + Left = 237 + Top = 57 + ExplicitLeft = 237 + ExplicitTop = 57 + end + inherited eIVA: TcxDBLookupComboBox + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 121 + Width = 121 + end + inherited bTiposIVA: TButton + Left = 237 + Top = 84 + ExplicitLeft = 237 + ExplicitTop = 84 + end + end + end + end + object pagDirecciones: TTabSheet + Caption = 'Direcciones' + ImageIndex = 1 + inline frViewDireccionesEntrega1: TfrViewDireccionesEntrega + Left = 0 + Top = 0 + Width = 648 + Height = 462 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 648 + ExplicitHeight = 462 + inherited cxGrid: TcxGrid + Width = 648 + Height = 437 + ExplicitWidth = 648 + ExplicitHeight = 437 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewID: TcxGridDBColumn + SortIndex = 0 + SortOrder = soAscending + end + end + end + inherited ToolBar1: TToolBar + Width = 648 + ExplicitWidth = 648 + inherited ToolButton1: TToolButton + ExplicitWidth = 62 + end + inherited ToolButton4: TToolButton + ExplicitWidth = 74 + end + inherited ToolButton2: TToolButton + ExplicitWidth = 67 + end + inherited ToolButton7: TToolButton + ExplicitWidth = 117 + end + end + end + end + object pagDescuentos: TTabSheet + Caption = 'Descuentos' + ImageIndex = 2 + inline frViewClienteDescuentos1: TfrViewClienteDescuentos + Left = 0 + Top = 0 + Width = 648 + Height = 462 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 648 + ExplicitHeight = 462 + inherited cxGrid: TcxGrid + Width = 648 + Height = 437 + ExplicitWidth = 648 + ExplicitHeight = 437 + end + inherited ToolBar1: TToolBar + Width = 648 + ExplicitWidth = 648 + inherited ToolButton1: TToolButton + ExplicitWidth = 62 + end + inherited ToolButton4: TToolButton + ExplicitWidth = 74 + end + inherited ToolButton2: TToolButton + ExplicitWidth = 67 + end + inherited ToolButton7: TToolButton + ExplicitWidth = 117 + end + end + end + end + end + inherited StatusBar: TJvStatusBar + Top = 566 + Width = 656 + ExplicitTop = 566 + ExplicitWidth = 656 + end + inherited EditorActionList: TActionList + object actGruposCliente: TAction + Category = 'Acciones' + Caption = 'Grupos de cliente' + ImageIndex = 21 + OnExecute = actGruposClienteExecute + end + end + inherited dsDataTable: TDADataSource + Left = 16 + Top = 240 + end + inherited StatusBarImages: TPngImageList + Left = 48 + Top = 248 + end + inherited SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001B24944415478DA9D52A16E1B41109D6366595810C90B0307069E59E0 + B29665A1E141B32E3474BF20070FAE1462B8259555D22D88643889A5C8F04C1A + 57AAB4797B4E9C334875CA48A3B9B9BB79F366DE14D433EB6DA27D4BB427AAAD + 2F68809DFC641B9358338518C94F3F02509BA4B5A6B802C02C0C03E8D36EE1AC + 15859520C157BC6F1163138BF70132ED0B7E01688F9E2B73942500FCFF00403B + 773E1410E90B4512A4EB9C41338BB894F701FA495995093BA4185054BF75559F + 9432A5719AB555238C18420D772DEC1460CA495D12893FA55D5E950E637E554A + 75B9ACC190DA6FBEF1D509005B4EAFCBEBD3365F8CA0F398993B85ECD462D161 + E7664E0D920A85892F995040B215922814D771B7582C5421F32AE59FDAA3946D + 27611773F72614D84137020A288FE1E68EC068823C7400E3BCB96DAE82FEE8B0 + CB113204B8591DF65496B66656D7F9390AA3819AC4A509459CD924C11FB8BE1C + D39111AC122AF8CA630AFD8B21B13563728BDF50427634223368076E2E3871DC + 47BECA100F4AEC3508C7FB41001500F2EC4A9D51F0DFBBE2AC94ACC330809BDB + BBE6E70FFAFCE7E92F6D1E1E69B3FD87156D9EB43E37CFDA01027CC229770400 + 00000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorCliente.pas b/Source/Modulos/Contactos/Views/uEditorCliente.pas new file mode 100644 index 00000000..4ea16090 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorCliente.pas @@ -0,0 +1,116 @@ +unit uEditorCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContacto, ImgList, PngImageList, StdActns, ActnList, TBX, + TB2Item, TB2Dock, TB2Toolbar, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewCliente, uBizContactos, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, uCustomView, + uViewBase, JvAppStorage, JvAppRegistryStorage, + JvFormPlacement, ExtCtrls, pngimage, JvComponentBase, uViewContacto, StdCtrls, + + uIEditorCliente, TBXStatusBars, JvExComCtrls, JvStatusBar, uViewEmpleado, + uViewDireccionesEntrega, uViewDetallesGenerico, uViewClienteDescuentos, + uViewContactoDatosBancarios, dxLayoutLookAndFeels, + uViewClienteDatosComerciales; + +type + TfEditorCliente = class(TfEditorContacto, IEditorCliente) + frViewCliente1: TfrViewCliente; + pagDirecciones: TTabSheet; + frViewDireccionesEntrega1: TfrViewDireccionesEntrega; + actGruposCliente: TAction; + TBXItem7: TTBXItem; + pagDescuentos: TTabSheet; + frViewClienteDescuentos1: TfrViewClienteDescuentos; + pagDatosComerciales: TTabSheet; + frViewClienteDatosComerciales1: TfrViewClienteDatosComerciales; + procedure FormShow(Sender: TObject); + procedure actGruposClienteExecute(Sender: TObject); + protected + procedure EliminarInterno; override; + procedure SetContacto(const Value: IBizContacto); override; + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uEditorItem, uEditorBase, uDataModuleUsuarios, uEditorDBItem, + uGruposClienteController, uBizGruposCliente, uEditorDBBase, uDialogUtils; + + +{$R *.dfm} + +procedure TfEditorCliente.actGruposClienteExecute(Sender: TObject); +var + AGruposController : IGruposClienteController; + AGrupos : IBizGrupoCliente; +begin + AGruposController := TGruposClienteController.Create; + try + AGrupos := (AGruposController.BuscarTodos as IBizGrupoCliente); + AGruposController.VerTodos(AGrupos); + finally + AGrupos := NIL; + AGruposController := NIL; + end; +end; + +constructor TfEditorCliente.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := frViewCliente1; +end; + +procedure TfEditorCliente.EliminarInterno; +begin + if (ShowConfirmMessage('Desea borrar este cliente?', '') = IDYES) then + inherited; +end; + +procedure TfEditorCliente.FormShow(Sender: TObject); +begin + inherited; + pgPaginas.ActivePageIndex := 0; +end; + +procedure TfEditorCliente.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + if Assigned(Contacto) then + begin + if Contacto.EsNuevo then + FTitulo := 'Nuevo cliente' + else + FTitulo := 'Cliente'; + end; + + inherited PonerTitulos(FTitulo); + + if (Contacto as IBizCliente).BLOQUEADO = 1 then + JvNavPanelHeader.Caption := JvNavPanelHeader.Caption + ' (Bloqueado)'; +end; + +procedure TfEditorCliente.SetContacto(const Value: IBizContacto); +begin + inherited; + if Assigned(Contacto) then + begin + frViewDireccionesEntrega1.dsDetalles.DataTable := Contacto.Direcciones.DataTable; + frViewClienteDescuentos1.dsDetalles.DataTable := (Contacto as IBizCliente).Descuentos.DataTable; + frViewClienteDatosComerciales1.Contacto := Contacto; + end + else begin + frViewDireccionesEntrega1.dsDetalles.DataTable := NIL; + frViewClienteDescuentos1.dsDetalles.DataTable := NIL; + frViewClienteDatosComerciales1.Contacto := NIL; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.dfm b/Source/Modulos/Contactos/Views/uEditorClientes.dfm new file mode 100644 index 00000000..c4c8ff28 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorClientes.dfm @@ -0,0 +1,2481 @@ +inherited fEditorClientes: TfEditorClientes + Left = 441 + Top = 313 + Caption = 'Lista de clientes' + ClientHeight = 519 + ClientWidth = 786 + ExplicitWidth = 794 + ExplicitHeight = 553 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 786 + Caption = 'Lista de clientes' + ExplicitWidth = 786 + inherited Image1: TImage + Left = 759 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000033B4944415478DADD957F6856 + 5518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D6642496A32874A1 + 329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821CBA0D572928 + 46A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE1F0F3CDC73 + 78CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA79CA18400E + C61C86162270F93043033D986692E9454B99337F459A80695AA37EFB6B58D6BD + F1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C47431B7BC9EE2 + 05B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C951627AA06A9AC + FB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F1C401D1A91 + C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BCD9D09C0E08 + F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F768E8A08C3 + 64D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F6482103210442D7D125E4 + 7AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF2051989613214 + 19BB5C681806868444E30922D32B295DBC7E42717B5CB761977391FBBB5AD16E + 76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DDCE806B7D17 + E8ED68656622814716591882802AB893534259453D3373674F286EFBDED9F259 + 3AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF30ED5854B78 + 7FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F655FE711DA03 + 5DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7E06D0AB2E7 + A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468CBC58169A57 + 10F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F95B3A9797F + 2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC872BECE3EF + 500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7340F56A620 + E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD63060DCB5F + 4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A52964E678D9 + 5CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF173E327147 + C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A30000000049454E44 + AE426082} + ExplicitLeft = 658 + end + end + inherited TBXDock: TTBXDock + Width = 786 + ExplicitWidth = 786 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 632 + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 786 + end + end + inherited StatusBar: TJvStatusBar + Top = 500 + Width = 786 + ExplicitTop = 500 + ExplicitWidth = 786 + end + inline frViewClientes1: TfrViewClientes [3] + Left = 0 + Top = 102 + Width = 786 + Height = 398 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 102 + ExplicitWidth = 786 + ExplicitHeight = 398 + inherited cxGrid: TcxGrid + Width = 786 + Height = 270 + ExplicitWidth = 786 + ExplicitHeight = 270 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 clientes' + Kind = skCount + Column = frViewClientes1.cxGridViewNIF_CIF + end> + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 786 + ExplicitWidth = 786 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 786 + inherited dxLayoutControl1: TdxLayoutControl + Width = 786 + ExplicitWidth = 786 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 483 + ExplicitLeft = 483 + ExplicitWidth = 121 + Width = 121 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 786 + ExplicitWidth = 786 + inherited tbxBotones: TTBXToolbar + Width = 776 + ExplicitWidth = 776 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 372 + ExplicitTop = 372 + ExplicitWidth = 786 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 786 + ExplicitWidth = 786 + inherited TBXToolbar1: TTBXToolbar + Width = 776 + ExplicitWidth = 776 + object TBXSeparatorItem17: TTBXSeparatorItem [1] + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.793539675930000000 + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewClientes1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + Left = 104 + end + end + inherited EditorActionList: TActionList [4] + Left = 56 + Top = 144 + inherited actNuevo: TAction + ImageIndex = 22 + end + object actGruposCliente: TAction + Category = 'Acciones' + Caption = 'Grupos de cliente' + ImageIndex = 23 + OnExecute = actGruposClienteExecute + end + end + inherited SmallImages: TPngImageList [5] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001B24944415478DA9D52A16E1B41109D6366595810C90B0307069E59E0 + B29665A1E141B32E3474BF20070FAE1462B8259555D22D88643889A5C8F04C1A + 57AAB4797B4E9C334875CA48A3B9B9BB79F366DE14D433EB6DA27D4BB427AAAD + 2F68809DFC641B9358338518C94F3F02509BA4B5A6B802C02C0C03E8D36EE1AC + 15859520C157BC6F1163138BF70132ED0B7E01688F9E2B73942500FCFF00403B + 773E1410E90B4512A4EB9C41338BB894F701FA495995093BA4185054BF75559F + 9432A5719AB555238C18420D772DEC1460CA495D12893FA55D5E950E637E554A + 75B9ACC190DA6FBEF1D509005B4EAFCBEBD3365F8CA0F398993B85ECD462D161 + E7664E0D920A85892F995040B215922814D771B7582C5421F32AE59FDAA3946D + 27611773F72614D84137020A288FE1E68EC068823C7400E3BCB96DAE82FEE8B0 + CB113204B8591DF65496B66656D7F9390AA3819AC4A509459CD924C11FB8BE1C + D39111AC122AF8CA630AFD8B21B13563728BDF50427634223368076E2E3871DC + 47BECA100F4AEC3508C7FB41001500F2EC4A9D51F0DFBBE2AC94ACC330809BDB + BBE6E70FFAFCE7E92F6D1E1E69B3FD87156D9EB43E37CFDA01027CC229770400 + 00000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315 + 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F + 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499 + B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9 + A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6 + EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4 + 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2 + 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696 + F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0 + CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A + C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138 + 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1 + B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008 + 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42 + F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3 + 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329 + 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9 + 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59 + 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429 + BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6 + 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5 + C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315 + 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422 + C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61 + C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F + 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E + A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76 + 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA + 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8 + 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735 + F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175 + 682F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000032A4944415478DA + BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1 + 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C + 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D + 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC + 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4 + EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F + 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55 + 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0 + AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C + AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80 + F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D + ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213 + 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43 + 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95 + 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F + F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020 + C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48 + FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C + C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2 + E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147 + E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603 + A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D + 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD + AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A + 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4 + B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022C4944415478DA + 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF + 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2 + 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0 + 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1 + 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141 + 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06 + D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022 + 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020 + 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679 + 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8 + F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907 + 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F + 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8 + FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE + 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC + 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430 + 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4 + 02140B6805009C1383EFACA508270000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA + B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989 + 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E + 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4 + 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2 + E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4 + 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA + BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04 + 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096 + 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F + 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935 + 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588 + D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130 + EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7 + 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D + 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D + 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43 + 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA + 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1 + 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9 + 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E + 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422 + BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438 + 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413 + A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239 + 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831 + 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA + 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170 + C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832 + 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C + 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D + 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37 + 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22 + F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36 + 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71 + 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381 + BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355 + 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D + 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C + 4A0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA + B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B + 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828 + 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736 + B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE + A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56 + 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15 + 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C + 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0 + D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E + A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C + EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A + 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2 + BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC + 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E + 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F + BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08 + 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83 + D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683 + 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868 + 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12 + C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3 + 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E + 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3 + 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446 + FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119 + 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C + 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1 + DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45 + 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826 + BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240 + A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C + A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32 + C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C + 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300 + 00000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000027F4944415478DA + 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9 + 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67 + F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970 + 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D + 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F + E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100 + 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21 + 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA + 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B + C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62 + F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF + 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F + C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4 + 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D + 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486 + C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19 + 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4 + 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB + 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5 + 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2 + FA0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000037C4944415478DA + B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36 + 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94 + 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393 + 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F + 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784 + FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2 + E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4 + CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124 + 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB + 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7 + C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1 + 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72 + 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24 + C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3 + 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE + 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255 + 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B + 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB + B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022 + F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833 + B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F + E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989 + 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C + 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C + E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E + 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8 + 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99 + 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA + 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731 + 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67 + E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D + 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72 + 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3 + D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965 + 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF + C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8 + CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880 + AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F + 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31 + 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6 + A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621 + DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5 + 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9 + F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2 + 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066 + 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24 + 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621 + 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA + B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058 + D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60 + 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F + EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1 + B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE + 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6 + CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71 + 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C + 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12 + 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E + 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59 + 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED + 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8 + 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D + CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182 + D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382 + 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A + B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3 + 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5 + 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6 + 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE + 426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000029E4944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12 + 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD + D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA + 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287 + CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341 + 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14 + 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511 + 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B + E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC + DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6 + 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10 + E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84 + EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17 + AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02 + 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187 + 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B + 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090 + 0000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA + ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589 + F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435 + F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF + CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B + 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D + 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD + 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1 + A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE + 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075 + F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2 + 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF + A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C + D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892 + 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806 + 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F + EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E + 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3 + 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5 + DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C + A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA + F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196 + 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E + 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC + BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D + 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68 + 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986 + F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000 + 49454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003784944415478DA + B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61 + AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A + BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39 + 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A + 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965 + 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4 + 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0 + E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63 + 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1 + 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A + B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36 + FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424 + 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45 + DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1 + 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50 + 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC + 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46 + FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0 + 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4 + 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F + 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B + 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2 + D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA + 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F + 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3 + EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92 + 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F + 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945 + 4E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA + BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93 + 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88 + 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C + 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004 + A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F + 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47 + E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA + 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F + 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE + 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A + B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0 + 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06 + 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027 + 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7 + 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F + 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090 + B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE + AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927 + E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627 + 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA + 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD + E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4 + E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779 + 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82 + 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9 + 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C + 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3 + 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE + 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85 + 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C + 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000 + 000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA + 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E + 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18 + D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767 + F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B + 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8 + C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB + B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A + 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD + 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0 + 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6 + 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C + 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418 + 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06 + 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E + 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2 + 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402 + 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F + 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440 + 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA + 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698 + 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080 + 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0 + 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47 + 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC + 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4 + 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74 + D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4 + 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766 + 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05 + F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8 + 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8 + FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125 + 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B + FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42 + 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9 + 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67 + E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF + 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6 + 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F + 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322 + 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303 + 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51 + 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549 + 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3 + 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4 + FE66E507F40000000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA + 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3 + F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958 + 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77 + F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC + AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8 + 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0 + ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA + A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6 + E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99 + 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193 + 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1 + 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068 + BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13 + C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76 + E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96 + 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF + 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF + 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B + C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500 + 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723 + C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B + 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426 + 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B + 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808 + A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9 + 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587 + EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5 + DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3 + 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F + 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D + F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D + 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641 + 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8 + A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515 + E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3 + 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3 + 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A + 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8 + 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6 + 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58 + AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195 + 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB + 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4 + 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C + 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88 + 2F15D20000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002814944415478DA + 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF + 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3 + EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A + 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC + 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395 + E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1 + 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517 + 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1 + 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F + 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138 + BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A + 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605 + 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A + 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3 + 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5 + 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F + C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450 + 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2 + 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07 + CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85 + 5838D40000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026D4944415478DA + B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806 + 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775 + ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C + F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB + 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB + 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3 + E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A + 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D + 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7 + 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B + 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3 + 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4 + D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922 + C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C + 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556 + 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F + 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9 + CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69 + 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0 + 3F84F988A8E02F75743575B8E251160000000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000004124944415478DA + ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983 + 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10 + 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A + 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070 + 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB + A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4 + 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6 + 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289 + 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494 + E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B + 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F + BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26 + 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD + 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A + 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0 + D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57 + 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1 + 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117 + BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C + 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260 + E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D + B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94 + F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40 + D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6 + D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB + 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763 + D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23 + 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593 + BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27 + 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF + 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC + 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A + 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001B74944415478DA + B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434 + BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31 + 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47 + 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60 + F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B + 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284 + C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D + 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4 + 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C + B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5 + D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3 + 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555 + 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE + F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E + 44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited dsDataTable: TDADataSource [9] + end + inherited StatusBarImages: TPngImageList [10] + end + object JsListaContactosNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes clientes no han podido ser eliminados, porque tie' + + 'nen documentos asociados' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end + object JsPrevisualizarDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Previsualizar...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Previsualizar las etiquetas de los clientes seleccionados' + Value = 100 + Default = True + end + item + Caption = 'Previsualizar la lista de clientes actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 296 + Top = 144 + end + object JsImprimirDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Imprimir...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Imprimir las etiquetas de los clientes seleccionados' + Value = 100 + Default = True + end + item + Caption = 'Imprimir la lista de clientes actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 328 + Top = 144 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.dfm.bak b/Source/Modulos/Contactos/Views/uEditorClientes.dfm.bak new file mode 100644 index 00000000..5a8e1774 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorClientes.dfm.bak @@ -0,0 +1,1849 @@ +inherited fEditorClientes: TfEditorClientes + Left = 441 + Top = 313 + Caption = 'Lista de clientes' + ClientHeight = 519 + ClientWidth = 786 + ExplicitWidth = 794 + ExplicitHeight = 553 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 786 + Caption = 'Lista de clientes' + ExplicitWidth = 786 + inherited Image1: TImage + Left = 759 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB51930000033B4944415478DADD957F6856 + 5518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D6642496A32874A1 + 329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821CBA0D572928 + 46A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE1F0F3CDC73 + 78CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA79CA18400E + C61C86162270F93043033D986692E9454B99337F459A80695AA37EFB6B58D6BD + F1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C47431B7BC9EE2 + 05B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C951627AA06A9AC + FB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F1C401D1A91 + C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BCD9D09C0E08 + F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F768E8A08C3 + 64D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F6482103210442D7D125E4 + 7AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF2051989613214 + 19BB5C681806868444E30922D32B295DBC7E42717B5CB761977391FBBB5AD16E + 76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DDCE806B7D17 + E8ED68656622814716591882802AB893534259453D3373674F286EFBDED9F259 + 3AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF30ED5854B78 + 7FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F655FE711DA03 + 5DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7E06D0AB2E7 + A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468CBC58169A57 + 10F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F95B3A9797F + 2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC872BECE3EF + 500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7340F56A620 + E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD63060DCB5F + 4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A52964E678D9 + 5CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF173E327147 + C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A30000000049454E44 + AE426082} + ExplicitLeft = 658 + end + end + inherited TBXDock: TTBXDock + Width = 786 + ExplicitWidth = 786 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 632 + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 786 + end + end + inherited StatusBar: TJvStatusBar + Top = 500 + Width = 786 + ExplicitTop = 500 + ExplicitWidth = 786 + end + inline frViewClientes1: TfrViewClientes [3] + Left = 0 + Top = 102 + Width = 786 + Height = 398 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 102 + ExplicitWidth = 786 + ExplicitHeight = 398 + inherited cxGrid: TcxGrid + Width = 786 + Height = 270 + ExplicitWidth = 786 + ExplicitHeight = 270 + inherited cxGridView: TcxGridDBTableView + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 786 + ExplicitWidth = 786 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 786 + inherited dxLayoutControl1: TdxLayoutControl + Width = 786 + ExplicitWidth = 786 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 528 + ExplicitLeft = 528 + ExplicitWidth = 121 + Width = 121 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 786 + ExplicitWidth = 786 + inherited tbxBotones: TTBXToolbar + Width = 776 + ExplicitWidth = 776 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 372 + ExplicitTop = 372 + ExplicitWidth = 786 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 786 + ExplicitWidth = 786 + inherited TBXToolbar1: TTBXToolbar + Width = 776 + ExplicitWidth = 776 + object TBXSeparatorItem17: TTBXSeparatorItem [1] + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.793539675930000000 + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewClientes1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + Left = 104 + end + end + inherited EditorActionList: TActionList [4] + Left = 56 + Top = 144 + inherited actNuevo: TAction + ImageIndex = 22 + end + object actGruposCliente: TAction + Category = 'Acciones' + Caption = 'Grupos de cliente' + ImageIndex = 23 + OnExecute = actGruposClienteExecute + end + end + inherited SmallImages: TPngImageList [5] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001B24944415478DA9D52A16E1B41109D6366595810C90B0307069E59E0 + B29665A1E141B32E3474BF20070FAE1462B8259555D22D88643889A5C8F04C1A + 57AAB4797B4E9C334875CA48A3B9B9BB79F366DE14D433EB6DA27D4BB427AAAD + 2F68809DFC641B9358338518C94F3F02509BA4B5A6B802C02C0C03E8D36EE1AC + 15859520C157BC6F1163138BF70132ED0B7E01688F9E2B73942500FCFF00403B + 773E1410E90B4512A4EB9C41338BB894F701FA495995093BA4185054BF75559F + 9432A5719AB555238C18420D772DEC1460CA495D12893FA55D5E950E637E554A + 75B9ACC190DA6FBEF1D509005B4EAFCBEBD3365F8CA0F398993B85ECD462D161 + E7664E0D920A85892F995040B215922814D771B7582C5421F32AE59FDAA3946D + 27611773F72614D84137020A288FE1E68EC068823C7400E3BCB96DAE82FEE8B0 + CB113204B8591DF65496B66656D7F9390AA3819AC4A509459CD924C11FB8BE1C + D39111AC122AF8CA630AFD8B21B13563728BDF50427634223368076E2E3871DC + 47BECA100F4AEC3508C7FB41001500F2EC4A9D51F0DFBBE2AC94ACC330809BDB + BBE6E70FFAFCE7E92F6D1E1E69B3FD87156D9EB43E37CFDA01027CC229770400 + 00000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000003CD4944415478DA8D96ED4F53571CC7BF17EC9315 + 11864234C607C6D4E9408621F88CBA88D0C64D48EA906C3E3459F40FD077666F + 7CEB62A2912C43F0A950A12A3001AD2613810908B46869E69E8B2FBA3087F499 + B6F7B63BF7E0BDB6D2A79BDCDE73EEBDE7F339E7777EE7DC3248E1303C346BC9 + A5812FDBED767AAF51D7B9C9F4A07E22595B2655F8DED202642D5E089F3F88B6 + EE415CF8BE857F9C54C2A402DFBD651D7296C8C5FBD3336EE87F7C8206DDBDA4 + 1226197C57493E96662D9A7BF9F810BD861A4BF1EFB4136D5DFDB8D2DC9550C2 + 2482EF2161C9266111E00D470B611C015A75D7E11FD6E2F51B176EF7FC8CA696 + F812261EFCC0F60D502AA451706DB902A7EB5F60D2F32195B8068EC1E5F1C1D0 + CD4B62878B4904F7F8392C3A3922C2C361D280B438736900B6D94FA9E4D5FD5A + C8A46968E9E8C555FDFC9130EFC3856C8984A72F90E0E31C274AD767A3EBF138 + 7A2D6E64AF2D82C99A4E257FDED320C4B1E87C34881BAD3D511226D1840A70E1 + B09AE7269987FB021CBCE49C9C545089AD5B0387CB03E39351E80C0F44892008 + 278207D830BE297F27FAB6DD41E182A4A9CF0698CDF8BDA31A334E2F7E7A6A42 + F36D2395303C3C56B644F69C09BA3139C5E2ECE11C5AE727DA9791274AF8B3C3 + 64A712ABE17338C9C4F70D3D4757DF2FA0829ACF8AE2C2BD410E013F0397C329 + 0A4E9CEB059B5B4005B38110825C083EF25EDFAFFF518959AF86E5E55F387FB9 + 19CCC5EB3D61AD661F14320915683616A2B24C22C2F9DE05FD0B10F4450B9C59 + 6B299C070B23197FE5A082519D0AD6DFFEC677F56F0599194AA8CA8BB1848429 + BDE40768EABEC6EE923431C6E1800C0C1B2D9852AE8E091FB959058F771643A6 + 0974F7BF04535C716A236963D1D6A95173601B9128A1286BA4924DEB58DA98F5 + C891217347096CD29531E16E12FFC1B109DC6A7F3837C9FCAF20397144854315 + 5B91A15C88CC9DD7A864F90A2F8A729538B6F7DD662748C602B9F37AFE74D422 + C2C5348D941CAF55A19A8C840B315855758B4A64996F909FEE84C7350D960D61 + C6C7D1364D7FC829BCFF4A05A97118187901FD1DE3FC85365FA28646BD132E6F + 0005070DC0E6CD5015E6C58C390F9748D2D03F3C8E9B6DD1AB38E66627488E7E + A942D59E2D9090945DA36EA392B2FCEC28F8B31B9598251FA061B335263CEE76 + 2D48BED25462DFF66228E4527CF4C55D2AA1C75B38CD16027F3F2C49059192BA + 9A0AEC2A2B2212193ED174D2673CDCED9DCB96D6F64771E109059192DAEAFDD8 + 515A08B94C0A8EAC5A9A2D6396A4F0A48248C9113292BC651F807C1260FFE735 + F4778D49E129090449E6B25516C7948DD64919A49CD2DF96FF0126B669571175 + 682F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000032A4944415478DA + BD95CD4F134118877F5B0A22D84205341E30087E24021A45893131F1E2C178F1 + 2A26FE07C6C478319E8D9E8C8926EA49E217D1B328F142A24123070B2E6DB76C + 0B5DB6A585B614CA47BB1F6D7D772CDAD22DA0094C32997476F67966DE79F72D + 97CBE5B0958DDB1601C7719B7EE1D18B8F9768E8A17EB660FA2BF537D7AF5DEC + 2F5CCBD8FF22C8C3DF5FBED04D2F73882FAC40CF64114BA6E1F3F9797AC693E4 + EA7F090AE1FB9AEAD9DCD24A1ABA9E81AA6510239920C530CABB71F7E615EE9F + 0425705A6E80753D4B27C8A0AAD24A630EFE5002E25494242E26D994A01C5C55 + 7528AC6BC866B3A8B7D782B35830198A63C829E2D9BDDEFB4EE7F3DBEB0ACCE0 + AAA617C155EA29458546D2867A1B72D90CDEF67F41DFD37E3709DACB0ACCE00C + AA680CAC685A5EA4B13B38D97E00B14412BC57C2C0E0777C7A37545E50166E80 + F302E324EC37CD7775B4223EBF0861621AA35E19636322BE7D18361798C2159D + ED785550024F2C821F9F82673202419882382A221C0897DEC146F0D59014C213 + 0B4BF0D0CE9D8244F020FC3CC127C31819E92DCE2233785AF90B53F360632E43 + 1FD7098A79742E899F047691C0352621264F63C22D3178D177F0F8E540093C95 + 568BE29EA64C512834468A9EEA6CC34C7C1E6E5F082EA3BBA71097C310F9893F + F0B582D7C78EECEFE9EA6883B5C2C2629C5EB373259F9EDDC70F6226364FE020 + C6082E8E87200B0148A25C045F2B983C77FA684BE7E16696D3A9945A10EBBC48 + FB0D8FC617081CA44B0D421483181F19C7AC3C5B023715B43637D109AC58585C + C64A4A29806B043F84394AC561DE4FE560165E418668C083E6F01281A3CED6D2 + E4D8853D0D75D8595DC52ED2C89E2C8D5D14F34834C1B2E5873B00C123232147 + E017A4B2F0B582C14C8E3B5FBDA30A95560BF6EEB6A3916486A4C16187DD5603 + A77B025E2902371FC072740E9E51DFBAF0926A7AE7415FCE6677C052C1C1565D + 81C6FA5AAA2B39D45111CBD2627F7086761E424494E0F30436849B966B4362AD + AC84BDA69A5295C3F2D21295619D95E5C5E40ABC4E3F8B79FB99F68DD8ACBD7A + 728B332B153722B1F987E170181ADD81F1DCE8AECFDE4D410B1B950A6E7BFEF4 + B7B2FD02BC08E5EFAAF547E00000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022C4944415478DA + 63FCFFFF3F032D0123CC82D53BCF13655398871123B18683CC46B120D4DD10AF + 06A01A86F6FED90CE7774E27CA12922CF80754B776D7050651415E86A2BA3EA2 + 2C21DA0290E17FFFFE63D8B0F712838DB12AC3CD7B2F88B284280BFEFDFBCFF0 + 0768F89FBF7F19B61EBC0A0E2218A08A0520D0B3EA2131410E06A5E10A704BB1 + 5AD0B2EA0186260E0646869230798286831CD2317B23C3DB3DF98C382D00F141 + 610E0E963FFF18FEFEFBC7306BEB4BA22D3051F8CD1052BD0D6C098605216E06 + D008FDCFF0FBCF5FB0E1A0C89DBBE335410B7EFDF9CF3069DD23866827617022 + 0059F266771E238A0541AEFA0CED6B1E91144440FBC186FF02FA76F69627E020 + 82010C0BFC1C7519DE7EF88661C8B203EFB15A806C388CDEB9FF2458AE6CC679 + 4C0B3C6DB5C061FF179A2C81084CAF3AFC096E4144CB159CC1D49EA60AB6E4E8 + F133D82D70B5D26098B2FD25C120C2E67264FAF4E9B3D82D70325763F8F8F907 + 8605EB8E7F815B40C87010BE78FE1C760BEC4C5418FEFD852451502A82E4E07F + 0CDBCEFE005B00323CBA0D7710954629327CFBF997E1F6B58BD82DB0355261B8 + FFF41D86C6A3B718180A43E419BEFFFA87D5C520F6CFDF08B187B72E61B760DE + 92B5E0B2071DB8FAA73164F8C912653888FDE2FE654C0B181971975BDD2B1FFC + 4FF292061B5030E5264E75715E32608BDE3DBE4ABA05316E52045DFE0B5CB430 + 307C7C4A8605614E1244190E026459106027CE70E8E869066201C916209731C4 + 02140B6805009C1383EFACA508270000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000004BF4944415478DA + B5D37B4C53571800F0737A5B6ECB4B2F2D2D2D2053408286870CD4C9C0B89989 + 8ACEB041F035064CEB365800D93235C0EA40FD836D380C085B44C7C30993111E + 93199411DE844029B80908586094577B81963EE8E3EE82D311662A35DB97DCE4 + 3CBE737EB9E77C07120401FECF802B010821A8ACACC7BAC453B54A95E6405AE2 + E111631B7C9E7E331102E87431313C76B1FFAFFD9E071492C0A3A109218D8AD4 + 68C68527040281E1799B9FCF2A738306439314971765244598060C3C9E1406FA + BA73EE36F6045E381DD6B672F39339393457C4BE748BFBFAE08AFBED572E9B04 + 94D7B20647645D7111FB7805E58D359DF2817DB97CBE76795E7246717450E096 + 5C7239E5C7AAA62B99C9260039F977B893B3AA9E84A8FD3603C313BA9FAA5B8F + 9C8F0B2D799A73F6AB627B77676E4750A0375BD43B0ACA6ADA7ECE4C8A085935 + 9097574B1F56C89A2342767A6356E6A0AAB6E3E1AF1DFD5B6E0822D5A1A1C588 + D71B66D7DF7B3BE0E862767BCF20A8691265647D1115BF6A6031522E9784B130 + EB9BEF066DA72C68B5C4F5D2BACF5262DF493F935E78684F804FE9C6F53CF8E7 + 040E6E57B7E04A9572DBB7C951FD26018BCDF8B4FCAC5DDB37F377F86C84AD5D + 0353F79A1FECD9ECC22B3EF8E6AB2EB25925B85327D4F70E8DC5640B22AF3E5D + 640A004EA7FCC046D7A06D216F6D73E230AD417E59BD243CF8353B081128FC43 + 0C6A9BBBEF4BF48CBD2582B085970296904B45611C1BEB225F4F67848A40E0FA + 0A178C4864A0F46EEB2C3E33BF332735BA6B79BEC9C062BD5B482D8A5998D5A1 + 0D8E6C60678B01D14331E81D94246509DE4F052BC26400B8FC821E0E5178D9D9 + 326A5BC516E6737225F0B09BEB1892500FB688E7A5A02E52FD72C08E026F3B1E + 2B92CBC676D3E9664E23A313A85EA7910368A6B1E3602C3A1D5DA0D210B14422 + BBFF6860FC3BD018DEB53AC03797C659E79062CF65C6418346AF981AD3E85438 + 9C56D3692C864A6EE1E0A3D62AA6AD0787261A210D250044BCD45A832DB93413 + A8E70544FB49AD5100DB5FF1D14667CE3732F103056A98EBA322C42D8D9ED239 + 348725AEB39CF56438FA2E5066FAB893B8C27D4C4A1D279770C9DF3E09CCE831 + 8002CF12F5C7B28C022E11BF89508DD489AA1ABE26421D12414998FEEF23BBEA + 6683EF46ED7D09BDACD756A61AE2492A05CAA539A73C3A60EB6F03338623D170 + C4D328E01E5DAF21A47D5A864EE92FACFAE49F12F42F28DA84C93CA9F67E2832 + 3FECA4C30739DD5567F067F3BEB9A90035FF9468388A1A053CF8CD7238FDFB3C + 55A7F2E92C8F1D7B329A42A1BCEE52ED8EC9AC11DE56E61A44EE3833DA13DC5D + 9E50B30CB848023124606514F03AD5D24F99E9B5D42B64FEDD5509834B837E37 + 98660CD8E7B616BF2745DD985C267D977E52745D88D49F0025254F8ED0EFFB22 + F21EFC48C0D52860B9B7347B2D9C896252E70E8B2AE24BC1CE142AD0B97ECD36 + 577DCC3197F3BB71762B8FC3CAD8C0D46D958FF59DEA2A4F2804DED99B009D71 + 0B204803D170EC43E3651A50E88F52F4D55C0B45E563B9F597900031185DF381 + BD85A262DA801F5FBAD8C0020F1EDBA61ACE8D40E50225145722C1804AE39355 + 7480A83FDAF8E287E69FCF275BE7C82EC7D152A1C650F5B529037EEE59D52C5D + 7AD166000C17C85610F94D904F2C0D341ECF79E143FBAFE32F16D672EF3D728C + 4A0000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000043D4944415478DA + B5956D6C535518C7FFB7B7ED36B66E5D47D67663731BECD5B18605D8504C084B + 74982DC16468D4F881AD0305E3870550D100EABE482246712A8AA00182BA9828 + 84252006D7264AA2631B461325DD5C9ABDC0686B6F5FB7DEDEE373EF6869C736 + B6189FE4A4A7E79EFBFFF5799EFFE9E11863F83F834BFCF211506AD6A7585DFE + A99E3611BD4B1553DE7FC0DC797B64FC9C13387B883149017C0064549A528F56 + 5A2A9E31AE2CD00EDF700AB62B034DAD22EC8B117E07482B3019F61516E7ED15 + 6F8DA6BB6F79D84D1F0E5A197B8BDB06F06D7A743F5C8827B4997A684A6A804C + 031C7F8D78ED97FA9B5BB130E4531E9B2A2D655D191AA9CAE570201C61CC15C0 + D94911D60EC642DC4915DA9BCA714C97024E6E87C46BA029AE86DA5C08C79F4E + A1F7CAB566AB08DB3DC280C19CA77FBBA42877BB776C940F08018444B0DB3E1C + EE6178AD1B88CAFDE58E02797526D8561BB1324A00519A191A532174E535181A + 1A176C3FF42595EB6360836595E1AB1C9DB660CC39A1EC0F46204E06B0AF4DC2 + BBB17D0A409E1C032AD6E7E3C7223D8C31803C54E999C8B1AC85F3A6CF6BBFFC + 4BB30C3995A2B2D696E6BC2F8602691E6F50D9E79F4298CAD2DE069C4ECC320E + 90E32450BF6605BE37A623231122A9782CAF5A0DF7B44618F869F0FC9A55D94F + BB275DAA6058549EFB66C45BACC085D9654C02C8F1058F268B09DF64A5429B08 + 11A97419463304B707E1E014A669215696093F9EDB097C399701EE01C8714A83 + D60773F1499A1A7C1264D6A0864A54F397A8E65DF3396C4E801C67B4D85F9683 + 4EB50ADC5CE25351B04972CB76865716B2F0BC8083D4DFAA545C2DCEC6BA9868 + 34011096ED18C4E1768657659D2501C8519A2C9DB6AB7A6DB955F8E3376EBE12 + C959F8C238B003E85C3480C497E5E51BCE6C78AA79EBDF17CE21484D5DA80FD3 + 049916B1872047EE0B20F1ACE212F3B71B5B1EDD343E781DA3D7FA93C4C88E1E + 8941CDABA04B5C8F48F289C58BCF2BE76F1E00D55C5DBF42FF5D43D3238F07C3 + 115CEFB90831CAE222816984DD213446818954158E136463ECD413546E428446 + FB2E72FA9C80AF759A37B734D4BC9E663070FDBD5721787C890D955C41B45119 + 3E57F6D29FA31BE8500187E8F1B2B8D80CE459827427014EF0D8FC585DD1C53C + 935E3DEC9CC4B06334A9C6247EC4CAB06776FA1F02D5F4EB8ED3743D77F75EA1 + DE63DB6EE07C1CD05791FB7B6D85B1CAE70FE1D7010722E2DDD2FC13823D1C45 + 039DD4C83C76D61A8197497D3F8DD43B990428BBADF4CE6505602FCAEE7EA826 + BFA56FD0018F371417F747E017A650FB027003F70932482D099FA0A9E5CE9240 + A37127633F739FF16859579ADD3D36E1492A0DB176B72BB7E0E2E23D20450B1C + A0E95ECA86A7526DDEC5582F27A759A6852D330575316708615C1A91B0E50D32 + C9620109BDA9A78F27A9D91D7117D19D6A58AEC6E9340D1AC9350295A796360C + 2D557C76241D34D97E5E4A8F9270ED506EC4FF1E32E05FC9675CEF0AFC725300 + 00000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000027F4944415478DA + 63FCFFFF3F032D0123CC02464646AC0A66243060B820630103230391006EC1C9 + 898CEE406A07B2E4890B40C33AA6A268B8B8229761E9E67F0CD1BE4C1886FD67 + F8E76151C0B0139705FF154C1A18045444212EAFC8061BFEE5C54D86A6E24970 + 0D75BD790C770F4C015BD2B16802C3FFBFBF19FE01F1D7A7BF1836CC69C0F01D + 8A05061153510C7F7D7527032EF0ECF216B025AD73DAC016DCD8D2C870FEC23F + E22C787C6C21C3D64DA70886AFB79F1983988E07D8825B3B3B89B70066092100 + 331C84EFECE923CD027430F9A037410B61A0345C016E095116FCFFFF8F61CA21 + 5F869230798286F7AC7AC8D0317B23C3DB3DF98C445900321C9452A61E0D22DA + 021385DF0C21D5DBC096E0B50066F8BF3FBF18A69F8C2068C1AF3FFF1926AD7B + C410ED24CC70F3DE0BB025382D00451C03D00290E120F6CC33B1382DF8FB0F62 + F8AF3FFF18666F79020E22BC71003210968160ECD91752B05A806C388CDEB9FF + 2458AE6CC6794C0BB0190EF2C5DC2B59700B225AAEE00CA6F63455B025478F9F + C1B4402F740256C341F4BCEBF9283EC0E67264FAF4E9B39816E8067563351CC4 + 5F70AB046E0121C341F8E2F973981668FBB761351C8417DDAD045B00323CBA0D + 7710954629327CFBF997E1F6B58B981668FA346235FCFFBF3F0C8BEFD7321486 + C8337CFFF50FAB8B41EC9FBF11620F6F5DC2B440C3B306ABE120FE92474D0C19 + 7EB244190E62BFB87F19D302559712B8E1E8F4F2E75D0C495ED260030AA6DCC4 + 1944715E32608BDE3DBE8A6981B45E00C3B34B9BB06A3C24798F21C64D8AA0CB + 416C503C7D7C8A6901B8CABC7001BBCB3E7B3E6008739220CA7010C0B00057A5 + 0F03DD2B1FFC0FB013673874F43403B180640B90CB18620100261ED9D6E5FCF2 + FA0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000037C4944415478DA + B595DF4F5B6518C73F2DFD4191B66C6C4E8512618376DD28B485B1C126D90F36 + 8D1B1726264B76B53BAF3431DE99F80F18BDD1449399254B644E1747743ADD94 + 48169C428131268366832D631BC838FC687B0A057AEA7B0EB692B562417D9393 + 9C93F33EDFCFFB7D9EE73C47974824F83F976E25A0E59BCE75D1DEFBF00CD72F + 7FA4CB0A70E268DD9AC4450C454F17F2E63BEF6784FC2780EAEDCFF3580A6784 + FC2B403CAE70EEBB007BFD4E22D15846C8BA01AA783C9EE0FC956E0EECDEC1C2 + E2524648D680E1FB9374760E119A95B1D99FA2AECEC5739BED5C68EBD58AFCE4 + CA1A1096635CBC14D084B7941761CECB25321D66EAFE440A343032811C959124 + 498B39DDF275760055BCE5B3761C9E321CDB1D42DC844EA7435114E6E57946FB + 4778187C44D3613F66B3414BDBC5B6AEEC0167CF77905FBC096F4D3936430EF7 + C2301E5D7E67B5409E3EC648D720F353111A1ADC28A226DFB607B203A839FFE1 + 4A0FF5C71B291169B1EBE14E086E882C0813E488E70D3630CA53F48B4EF2EE72 + 512852F6FDD5EEEC00EAE973375AA93C50C55C04CC0A8C89D3CB4B5060165D24 + C242E2DE4A98B1BE2114D1413E7F053FFEDC9B1DE0E34F2E535A5341597529C3 + 63301703530E3C9B07361308034C2E08A09009DD1A606CE801FB1AABF8E9D7BE + 7F06A8C5FAFCC235AC22FFAE3D2E46C661711136E5C266711905A8C0080BC255 + 707A9E4737832CCE84D95959C6D540FFEA80E32FD56A1FD0E8F8B45683FD279B + 90643D2191A62DA2B076215C201C6C109738070392CC2F5F75E0F26CC5969FCB + B59EDF5607BC7AB84673B0245A51EDFF925D4E0A859389591D46B1F519E1C022 + F2633588B489E79B771E70B73B48B5AF428B09DC185C1DF0CA419FB651854833 + B2E6C2DFBC1BEB461BB373A20E8A0EBB69B9931E4F4DD37BA90B5FA59D2F4F9F + E575DF755AF3DE5E1DD0BCBFFACF39B3EC22223EB6E488F01CF163C9B7109989 + 30D0D6A7C544676EE1609CA6E2DB58BC47986CFF9463AD957F0F78F9054F4A3C + 098A2B097E17436C38389A9A455B9D0E0C7A3D5F7CF02E45917BD497C6707B8C + E4541DD320C5AF756406BCD8B0334D3C39399F0427EF4FBD518FD751AB419C6E + 03267F730A920638B4C7BD26F1E4BE336FED4B41563A490334D63AB52075AEA8 + 814BF1BF84944422A37872AD846C739B18948CE980BDBE726D22AE77F59C3A99 + 829C934AD201997E1E6B5D55D1560A771C659BC7CB1F1C73BA92B5793DE80000 + 000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002724944415478DA + 63FCFFFF3F032D01235D2C606464C42AB978D3F10C0E76EEE9E4181CEAAE0731 + 1B9F05AB775E3A1DE2A66B822E0EF2F3BF7FFF19FEFEFB8742FF03D217AE3F67 + E89DB19261F3BC2AFC16C05C0FB480E1E0E97B0CAFDF7FC5E95A51416E067D0D + 49B02513E6AC66D0D3353A03F481295E0B40AEB73751341115E2818BFDFB0F72 + 2DC4A5A82E87E0CBB75E3014D6F6309CDF391D6C204E0B905D4FACE120B9C9F3 + D6C05D8FD70264D713133C5A2AE20CD7EEBC44713D4E0BD05D4F8CCB4172A965 + 5318FC3C6C18EEDDBDCEC0C6C6CEA0A363C400348311C30264D7136BF88D7BAF + C129C7232C99C152959B61FDFA350C17AE3D63D834B712AB05FF41AE07197EF8 + CC7D82C1A3A620C2905E3115C570297975866DDBF7A35A50DBB3E03F30821880 + AE671012E0C69AC681086BFACFAE9ECED0589D07371C04502C689EB8E4FFEF3F + 7FC9C9B070C0CCCCC2202EA30C371C04E016D4F52EFCDF541C4FD0901FBFFE31 + 7CFFFD1F4CFFF8FD8FE1CF5F18FB3FC3E68D88A0F1F27444F5013116A01B0EA6 + A18683F0FE9DEBC0110B321C2388401650143EB060E2E063E0E6E165E0E1E621 + DE07845CFE1D2A7EE1C82686EF7F9818787878C0961C3A749AB005840C5FF4D5 + 8E61C1850B0C4BB5DE30DC38B585E10D304973F3F2822D397BEE067E0B8871B9 + F76901B0DAB9AAAF181E9CDFC670FFD173065E5E3EB025376F3DC16D01B1C1E2 + 9D21C43083D59481B5790BC38B2BDB192E5EB9C1C0C7C7CFF0F1CB7FD4FA0066 + 0138D9C10C40321C268E6C3848FC75B127D841300B4E9FBBC8C0CA210A361C24 + 8E62415D411CC3EC95BBC94E41CF9F3F07275398E12816C08A0A4A92A8B28621 + 43828F3E4AB90FB7809600004F6ECDEFF6DCFB3B0000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002954944415478DA + B5955F6852511CC7BF3E9882694B723D6450D4A21ED61FB3879EEA295CABA058 + D1CB6A23A315C2A441AC4123368A82FE5011066D63D1ECAF6058291643AC8D60 + 966EB5FE3E64D4966B7B1841B1997A4FF75CF14E773DFE1978E070EE3D1E3F9F + EF399C9FCA082190C964284523F73A88AC54020A8F9E3323A7E0B6EB558352A1 + B2150BAF991C00852B0779742EC143EFDB40CDB64AA3241DDF398EC066F74ABE + 6399372AC2E93B53904ACF0BE00F7CC5C4E45FC99AB15FA3B054AD07ECE781C6 + CB4084876FD743D1DC01D97E736E014DBFC5B8DCA8D3CE17E7387E6D824FCE71 + 9CB083CE07BD387CA94AF84CE1FC88E8EE3550D45961F04411F2DAD882F4F42C + 78821FBB1D3E58E2EF10BD7A425CA7708FC0507F26B7203D3DEB78C423DABA12 + 38DD8868D02D1C0DF6D4C2B0D3CA16CC4E9F2D3927BC13F43CF2C3526B02EE5E + 037E8401F34940AB83C1740C2DC78F0AB74922484F9F0B4EFB1DD70B74D95D59 + 7717ACDF88AC75C00B084D4FE12F5F8799C7439B6EA10AAB962DC291E6EB30ED + 3B84CD152A389D0EB4E9E3D23A3875A19BACAD34804F0F6D994A4C3B939A8EC8 + 987378FA9975B0D770168FBB5A9282F62B3D24164FA0D8565EBE985907BB9E8D + CF085A2FDE226D4D07F302A7FF71988A11619C8E7178EAF531EB40BF64697182 + D9703AF6FAFCCC3A90088A3E9FD41131EAA0E01D644B9E7C267833D0C7AC8382 + 04B9E0B4BF0FF533EB20AF201F7C8A7FAE0E94096B3B2BC6F12DE446F87B046A + B5062AB51A9FBF8CB00585C0E97C75831637E49B206F7F82B1610F86863F41A3 + 5980DF7F8800A7AC0C413C91064883A7E6D3E1747EA2297945538240700872A5 + 4E8467085AAD0770F3FEF3B95C26A14522110C7EF899011705A99F8A39D3F9B6 + 62F506D4ED5827F9E71204A56CFF01E5E2820611E3A8010000000049454E44AE + 426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000029E4944415478DA + 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 + 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 + F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 + 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 + C0918C0E48B2E0D687070C53AF4E62B8F0F6020348B59BB41F43A1661603EF12 + 0E8637E15F188E9C7FC0F0F5DB5786B76FDF82D5CF5BBA89780BE6DC58C0B0FD + D9620C4B4F3FBFCFF0E4EB038697219FC0C1F5E7DF3F30BD79EF29E22D38FDEA + 0283F906230CC303551CC1F4FA3BFB199E057E801BFE0F18275B0F9C26DE0287 + CD4E0C879E1F6028D56B606834AC021B62BEC582415D44106EC123FF7770C341 + 71B3E3D019E22C38F5F20283FB7627860D6EFB18CC8575A0A9E61F83D5762B14 + 0BEEFBBC811B0E8AF83D47CF116741FED12206676064BA49DAC00D1758CE8511 + 5C773D5FC30D07A9D97FE202610B400A6BCEB430D4E95532FC03CA234722321B + E6F2B92FA631C408A581C50E9DBE84DF82084F5370068219C4BF9413C3D5F7BC + DFC033DAD467ED60B164E112B0FA6367AFE0B720D4CD04C595422BB8E1A9E6E6 + 9BF70C5BACF7C00D7FCEFE942160971343B16E1D83277B3058CFE98BD7F15B10 + E46C84121CA2AB79512CD868B10B6CF8DC97D319BA2F3530D8493A30F42A2E84 + EB3977E5267E0BFC1C0D50C25A722D3FDC0274004A454DC67D0CAEAC81703D17 + AFDFC66F81B79D1E4A10C96C106490E15600E75A74806E3828C2AFDCBC83DF02 + 0F6B1D942092DF2CCC70DBE315C3F2D74B18763DDDC400D265206CC020CA2187 + 61380810B4C0C5520B45132C4271255564C389B2C0DE541D258DC33210580C4B + 9E40369C280B6C8C54C125222500AF05D82A0F7200CC0200F191E9EFB5062090 + 0000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE0000035A4944415478DA + ED954D4C134114C7DFEC6E0B420B085A6A040DD88A45C0C4602D4A2D281F5589 + F1AB6AA2094A4C5502DC34F160EAD11BF1E4498D462F1A43FC408BA052C11435 + F8890AA222A2601B6B2D94B26DB73BEEB4168B16E1E2C1C4974C7627F37BFFFF + CB9B995D843186BF19E8BFC1940653012693897AF9CEAEA5696825732FE72B6B + 3877F2B6F01A982A77435595F48F0646A351E4E3E3342CE7BDFBD1F6F1E7024D + 957CE6BCED6FCC66EF6485D71D3DDE617FDFAD9ECC00E96B6BC5727FAC9A65DD + 41718EF795A6CBE6F9699A6925738F67ACE091A5A5235AB2C1502DA1E3F108E1 + A219A0CA4A530C15CFE68F7986DB0814F0072AAC2DD71BC9A276FDA69D98E7CE + 7198DFDC616E6C8866A0D6EB13C448E48AB6078278A5209E22888F05C531E075 + F76E5CBB11660B4AD716D30C732BC0F37A6B5363535403B56090F2BB01D209E2 + 4AA96C99DB1D6A0BE251455BD395C6C8E4253A5D929491248F70CCD7A796CBDF + A219E495EE8A4F605CEE09060683412C92CED6F03CB64C26FE830F9F6B4A187C + D41D144EDECAFBF7D50889AC41039D4EC7C83354050850B0721FEB392441D892 + 1827C62C93E892393F7F3863B1F822049142A110CB6473553C254AA431041806 + 80E3001266A7D8ED036FFA3A3333F94237CB1103B4AD72DF0A0A51EDD18AE91F + EA3F2191CCBADA7CE9ECCD88EA614B556DC9E0A7B71BE7CF997FE0579E773B2E + 386C0EAB5CA962D1DE9A835AD273B25873B41E66C602385900DB28C0C008C0F3 + 0127F49C3282D3ED2F7FD16626170C6FDB53534CE140F39FF8A10FB6D573E6A5 + DE463B761FC061F17C39C0A03B34C209244892F9702924C5607DD6E2A501719C + A4793A7C863203D05C450ED6166AE1C8B17A9821F4718C9B5811097A580CC7AA + F38070E1980E1FDC2C7966567ED1AAD50F4945E1707943C3EE9998402A229196 + 9A06D3E159AF6719D2EB6B63B20A942D19E5C6C2746908F0064209E449E0272E + 1BBC3D5F37D865BD6BCCC9CDE5E4694AB3667F3D4CC5B73E7EB020784CD76EDC + BE70C4EBE9D96ABA0831B470DC9CE2F1EA084CFAF9CDE95C33EAF8D49E9D9D0D + 0AC5224D5C72AA85984CC6B37E9FCAD1FFBA7BFCA269CACA14CB57569CEEEC68 + 2EECEBED1B4F50E6A8067BBA7B770F753F89FC4453E5DB77AE1A1D1EBE13C986 + F9AE675D455FDEBDEA0DEEC1BFFF47FBE70DBE03EC16D6DE8FAAF1BC00000000 + 49454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003784944415478DA + B5566B48544114FE362D31A3C78F104C7B50145A902FECE15299D12668ADBA61 + AE925AA405811585F4A31745FD308A0A42DB5EBBE96E56AE9AAF30CD2CC5C79A + BB998FCCEDA5640F15823233DC7B9BB9EBBDEEB65BAD5207863967E6CCF7CD39 + 6766EE15B12C8BFF29224AA0CCAF89237DD63F051689E21323C5D91CC1F5BC6A + 96186302A0EB68EC0CC3C2C430309918B34E7A2AF2DD2751A23A21B22210F965 + 9A17EB5304DD9ECD34256382FF25C11EA84D82DB8A6B9CDEFF301E771FE8A0D4 + 94E0E1ED745B020A36F69DD39EC5F4552A7CAA88437155A37D02478421FE96E0 + E6366293C610FD5E75D3F822A0E096B9363116E0C4765FA74677690CCA6B0D63 + 23287EDC850B375BF0A4AD177D9FBF63DA94499086CCC1B15D0198E2EA2C44E1 + 21D1E04DF16654D6373B4E702CF3098E663422FFAC049215B35050F5165BD22A + B8B9D0200FA84FAE11A2F00ACBC1CB42191EE99E395E03D76597F1FD8709BB36 + FB207DEF320E689A58C9CD393B89D0551243C6F81A985357D3D4EA5804F47424 + 1DA982BAD488C329FE48952FC6FDDA77901D28177C68CE79F0F91177D09E2B45 + DDD3F6BF13F005A5EDC730C3919C57B7C063E6645434F40804AF8B64233B67B1 + 28528B67B736A2B1A5E3F704F412D1313EDCEE8F0388492B87FE793FC2C45E50 + 1C0A86A7E4A64060BC1B2D6CC447560083261CFAF64E5B82046930B7800233FC + 1927FADAE462E85A7BB9B9B6DC284C759B08CF0D390241475EA4E0CBF7CD1D46 + FB04F4FA0F356CB75AE0BE2E1B43A4C854CA2E4AA02A3222ABE4A54060D044C0 + 89149BFAFAC616A1E146185A3B5FD912C46F5C8989810A7C23EF8AC9E22229B4 + 1D38AED07360625F77246E5A0065A111F7EB7AE03C4184D80DF3B047EE8D3A6F + 4F81D4455B694B200F5F0E97A02BF85293387A4B99D14233BF1C45ABB490A65B + 321B29CA73C84C48B54F10131664B573BB4056F3E6776778C447BF74EE9F09A2 + D707622AB9407D95F1E6428F000D5B00FFFA06D5FB8CA685CA8E3307A1D877CA + 6A4C2090860660C66A1537D853160B8FF51AC1E9457E14164AB582AD5787C34F + 5E840CC34E6ED7ECE057B0FD1FC0F4BD0778BDD380EB060B8288103F3B69F8F3 + EB49D36229DBB78A7145556D3F024A5058A973E89B604F86A242B02D7C01AE92 + 636C5303FAD1CFD196667D1B1C1A3741EC9DD348F40597168D6C3F92E2A4A31F + 7DF207306E605E3200E1FF6727C90CAFFF0482645308AD8246DC000000004945 + 4E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000E9C00000E9C01079453DD000003DC4944415478DA + BD947F4C1B6518C79F7BEF8EFBD56BAFC7951F33BA75E9822B88520C88D92C93 + 05C410CA70986D3261B1DB3F261B24D3F92331F2A799C6B0F96B666668165D88 + 12E7FE598CC14C639C43D0988D41B69974DD5A680B584A5B68EFFA7AAD81306C + 8D0BE2935CEE9E7B9FE7FB79DEF779DF97C018C35A1AF1BF020882C81978E004 + A6EB6BA106236D0B42E4BD080045E3AA8A35ECA3587A607709717531F60ECD7F + 0378FFDBF806A9807E2734956898F027A94844054D03C86310701C02AB950B47 + E3DA075D4EEEA5BB069CB898DCC671D03F3E1655BCDE0548A520F3A4D332DFFA + 9BA208D8B2D5047351B5EB48BDD09B13F0E27B41E7A580E5870B3D849AF64F5F + 49BA522AEE1B198E48B11806DE40416C4EBDA380A9192D03E278048D0DE61BDE + 49B2FAE5ED309515B0AFD7838D14FFEE3C6DE9AEAD559B6211AD7F642842A91A + B1243E3D1D85D999202416E2C08B0A30BC5907109999382A045C5E2674B6DAE0 + 93AC8096377EC7452C8F79237DB6AC5CAC1BBA14165329B4243EE10B82DF3B06 + 34237E93C2DA607C36F4B849595F67B26C22B03E0B399F82E626F9B3A76CB027 + 27A0D0600235F9D7325034B5241E0C84E1E6F591A02E7870F058D599F4F87AE7 + 295654882F8B37D434D08CA4C7226869967F7CA6143D9A1320911C305C5EC65F + 140F8713E0B9368C3535F5E4D069D7F9E53DB0EF38D526291BFB8DCAFD603090 + B0C3257DB7A79474660534BF12C0884A81C9844056988C7824A24168D283FDDE + AB472F7FD17164E52EB3B77D7C1FCF291EB9F8613D8F84D656F3B95D25A83927 + E076488375051498440C825E5178568399D0ED9F3DD7475CE35FB97D2B01B627 + 3EB218154B405E570D160B05AD2D52DF4E1BDA97133039A3427AD714EA0D33EA + 907455A169350E40BA075EB37CBA12B0A9ADEF1E91C9BF251557C1462B03CEAD + E25BED65E8705640E5013F9E5767F553A4014AA9A07700B4E43CA49271482EC4 + E7584172FD76A66E7039A0F2D9F35588CCFB49904BC1F1100F763B77F0390779 + 3C2BA0F11830E274805EF4037F3BD731F5428F757EF91FC7DEAFBB04B3ED6D82 + 12A0A9D1A4996554ED76D0C35901FF74D965B347BA6F725AD8F73D27592BD3B9 + 9DED66DF956B0B9547DB8489FF0450D171712F6750FA106D440F3EC0E9CBC39C + 7CBE266FFF5DDFA6D9CCDE71B98867F02F2C5F50C43024EC6C312646C763F6E3 + 9DD28D5503CADB7F1568160D7086C27A8AD42FB97A51CDB75087DD0EAA373DBE + 6A40C5FEB10F395674CB324B6C731A4010D09B7E0FF56ACFD34462D580C70E85 + 369BCC7874730987CB4AD9D1C980FAFA0BDBD9CF97C7AC0AE03C3423EDDA2D9C + 5414FADCAD089CEDAE20FE58199313B016B6E6803F0192C0D6E065D4DD9D0000 + 000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A0000053A4944415478DA + AD956B50546518C79F73CE2ECB5ED9B3ECB22C48800A02CA45101BBCA005D9D4 + 4C17758C6FD57899FAE0D4871AB3CC6B5FD2748CA91877600AB3A949CA4427E3 + A65C1409729565B92CEEB2807B935DD80BECB2B773F6F4420A5841493D33E7D3 + 7BDEDFEF39FFF799F760F058C5601F2BAB443E079B0C077DF250304086432117 + CDC6AD3EA77FACAC6CAF77EAA5B93BB07F8B3EFD55A37872CC95C7E5725E6671 + 584F4570D871188E7182815068D2E3354E38DC17273C8E2B9DC33A4D735599E7 + B10495E76FC63B6CCED7F8A4708F58267A429620C5C4B1628C601310F006C06E + 1A656CF7ECA151B3ADDB366256EA07BB2EFEF4CD19FBF427FF13FCA4F29214A3 + 88BD9218F2CDB4DCA531B1F1122C40B0C11B02A0C37F74C822502A011F63EA37 + 33BACEBB8377BBD5A75B9B7EF956A3B9E15C50B063C77922AF20622B29979CC8 + 29484D4C7F428647E038DCF703BC70E826681A34F0F9B15720398F0452C0000F + 0FC1B0C640AB9A3ABA55ED8DEFFD5C5D797541C1A7E5D5F2E024766C59CEB29D + F96B5388380E0BC351CFEE2040E187B3024516096C1680044958FE71467D4D1D + AAABAE52B65D6F38BAA0E0E8890B05B21871E5AAC28C94D8043926A601F80480 + 651260DB47B382F47C12BC14008ED6A2793458D4FDE196CBB53D576BBE7B635E + C1543C2B32A8ED4B33932A5617670929161F761EB9396F330F6519EB49A06C56 + 4655D3EA3A5B7162DF0282C3112969A9AFA7E7A794E61467478E072360FD66E5 + CC7A6671E634746E4D0956AD2301BC4EE8ACFDD5AF2C3DF2C9BC824D9B0EB30A + 3624EF589EBDBC3CB7389B1F2004A06A76CEAC2B5BFA66BA9E5B1B3693601DB6 + 30B7EB5B3D155F1C2B5DF00C0E1CAE2C8C8E8B399BFB744EA2302E16333B3020 + D08E680EC09EE3B367B0BD98041A4D2A9A5AF08469E8EAE8635A2E5D19BCF07D + D9A90505EF1CA84814F1F92757ADCFDC96929F8A8F4DA2F9F7014421C1C62DCA + 9958B622C154518866754E80A6454D55559EA96F69AA3E3EAF40B57FCB726D50 + C0D2466DD9268D4F7C376B6396589A28C7EC1E0218344D7DEDB371BD84040CC6 + 80C31F64746A1DEABECE5873F9EBB33A9DFAB3BF15B41F78A690C7659A3D9152 + D044AE8500AE08B1F83266C593692C91428A071836BA0470E0A2B1E4A10747E1 + 38C6BD8C65C014EEBCFE9BA3B1EEC7DAB6EB57CA298A6AFB8BA0637FF18B3C11 + 5D91B03A534684ECA0712583C61D0316271EE408E4DEA495295162B904E39242 + 60B1D998DFE367D04507F6210BD577476DBD73BBF9467B5BED799FC7D38470EE + 47041D1F146D1788C22715B9EB92843C0A5CDA4EE8B708A163221E8C7E4269F3 + B0FB2339FC2269AC224D1EAF904444B2591E97276C1A1A720E1B740383035DB7 + 7A7B54F5341DB88D702E987BD94D752E10D3A58ABC8D4922AE7F1A6E30B2C130 + 26048DD50A23E38EE7CBEB354D19196B93A3158A748C2696D1B43F0AC5002EF7 + 98C334ACEFF47ADD030835821EDF432EF630733E9FFA217ECD3A998817828981 + 2ED0E93130B824A0350D41B7590F6E7FF0B9BA2E67CD833DE8E6017410403CE0 + 4C4D68706A90E0CF3F1CD5C1E2A24801D1B0243707F85C149AF60E188609E877 + 4483D6A8875E8BDEE5F4516F35F6B8CEC1220AEB39FE2CB3247B25F0055C14CB + 2D1834B2C0E010836678007AAD7ABBCB1B3C78AD775CB918F8B4A0FE5409B366 + 752A50860E1832A1CC4705A0351B416DEC7721F8FBD7FAC6CF2C163E2D38B4EF + 6D2647781F12682F82F3A0CF6C821EF3008C7A03AF2E36964704BB77EF629688 + F9407A6CE01CB987E006704FFA76D575BBBFFCAFF06941494949915020688811 + F1E15E4F2BD82CFA5D63DDEE732A80D0FF21F81D69327688E78891A000000000 + 49454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005234944415478DA + AD956B4C53671880DF7329BD9CB6B4A5174A454005112F205E16DCD46C3097ED + C7B2690CFFB665BAE80FB3FDD8E2DC8C739AFD984EE3C8326203D9702E5B069B + 139D8E9B82283299454AB9147B81DA9BB4D00BB4F476DAB3AF80896E02D3ED24 + 5F4E4ECEF99EE7FDDEEF7DBF83C1135D0CF6B9BA4E18F2B0C4896848118B46C4 + 8958CC1767E1CE90373C5E59B92F98FCE8E119D8BF459FFAB6553435EE5BC7E5 + B25F23D9E4F3296C56068663EC6824169B0A04AD931EFFF9C980E7728FC5A0BB + 5657197822414DED4D95C7E57D93120BDE11C9848B6599524C942EC208160191 + 6004DCB631C675CF1D1BB3BBFA5CA376B571B8F7FCAFDF9F764F2F7921F809F5 + 05294613FB2472F1DEFCE225F27495048B102C08C600E2899908490265251262 + 6C4376C6D07377F86E9FF65447DBEF3FE87437BCF30A76EEAC25D695A4BC2E56 + 488E1795E465AD582CC353701CEE870106BD00D1F84C0E481C40CC678087C7C0 + A233C7356D5D7D9A5BAD1F5EAAAFB932AFE0CBAA7A45740A3BBAB468E9DB1B36 + E612196C12C311D11F05E81E07F044101F9B192C12408224647882D15ED5C69A + EAEBD49DD75B8ECC2B3872FC5C894C2EAA59B5A520373D53818950C41401E098 + 0218F2CD940B8F35B38A200D80A37769BC3838B44389F68B8DFD571A7EDC33A7 + 20999EE505F48E25ABB3ABD796AD11D024056EEFC2BBC6E502D02E27A369E8F0 + 9DA93EBE7F1EC1E194DCFCBCB7566CC8AD282A2BE44C445360EF6737E704EB5A + 7470E9B73D4071D043D00B3D8D7F84D5159F7E31A760EBD6C364C973393B9715 + 2EAB2A2E2BA422041F4AB6AAE78D3E295009019C1607D3DDDC11A8FEFA68C5BC + 0B3E78B8664B5A86FC4CF10B4559828C74ECBE77E1B6C9498D436FD720D37EE1 + F2F0B99F2A4FCE3BE3FD83D559428A3AB1EAD9D5DB7337E4E1E353A8FE4300A9 + 6C00394A059B98ED83590A8DEE4EEF24E8DAB5745DCDE9E6F6B6FA63730A3407 + B62DD347F9A43E75DB76A92AEB83359BD788A4590ACC1D208041D5244896650A + 2A4FD4033896DC7C063CE12863D01A50F44DD6868BDF9D3118B45F3D5670EBE0 + 8B5B785CE65A8023051D67234470658CA464CCF267F249A1528A4718549B0C0E + 5CB4021E1A3824C03311641C265BA2E7FA9F9ED6A65F1A3BAF5FAEA269BAF31F + 82AE0365AFF284F1EACCB5AB6544CC0D3A5F0EE8FC727078F1289BAF0866AFCC + 4D15292418572C0092C5C2C28130830E3A708F38E8C13B5AE79DEE6B376E7536 + D68602813684F33F22E8FAB874075F9838A12CDE942DE0D1E0D3F7C09043005D + 932AB08609B52BC01AE2B0A95269BA325FA1524A52382C32E00B246C23235E8B + D9601A36F5DE1EE8D734C7E3916E8443ADF850DB2423E78BE215CA759BB385DC + F034DC6C6581795C003AA71346273CAF5435EBDA0A0A36E6A429952BB038B134 + 1E0FA7A23480CF3FEEB1598C3DC1A0DF8450A368841E70B10739A728FA67D5FA + 4D32212F0693A65E30183130FB24A0B78D409FDD08FE70F4E5A65E6FC3EC1CB4 + C5903C2488590E3A57219A2C24F8FB0F4773A8AC94C3275A1615170185DADCAF + BF03660B01439E34D05B8D30E030FABC21FADDD67EDFD9059BE03117D67FEC25 + 6651E14AA0F85C9496DB306C25C1EC1181CE628201A7D1ED0B460F5D1D98503F + 0D7C5AD07CB29C59BF360F6873178CD850CEC7F8A0B75B416B1DF221F8475707 + 274E3F2D7C5AF0C9FEF79822C17DC88C07119C0783761BF4DB4D30168CBCF1B4 + 697944B07BF72E6691880271C005DED17B086E06FF546857539FFF9BFF0A9F16 + 949797970AF8FC16B990827BFD1DE07218778DF7F9CF6A0062FF87E02F9F6855 + 88E7298D620000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A34944415478DA + 8D960B50546514C7CFBDFB625958DC455049C8074A3C44B490C67C8C5A098A8E + 8E61A0E68C363A4C884C5A3E7240D1F1C13496A58E634FCD0AABC9416DB29C18 + D9626C542052234904158170A10576F7DEBBDF7D75BEBB0B3E82F49BF9CF7767 + F7DCFFEF7CCF731918B8E950C1283B6AB8D96C8C62F5AC4994149EF0A4197F6B + 4575A13894D29F81AAAAC00C601EA6D3416A5090F9F9509B65AA2D3C74C490E8 + C121C19620D6E316E4F616678FCBD973C3E5723B445E2CC7F81A94F7710034EB + B17ABD7E516C42744E424AECA8F8F1234D23C63CC10C8D8900539001BC5E1E5A + 6EFD0DF57537D53F6A1BF9FADAC66B6D8D1DC7144529C3776F51DF8100D43CCD + 1E11B626754A52C69CACA9831252464358B815581DA305CB8A028AAA804F26E0 + 1638686DBBAB5EB9F417549EAA71D6573595096E72103DAEF442EE07B0A8F1B6 + 48EB96CC97A6A72F58362B3866F43046A763FBD2A1C6C5F90ED8F8EEB3C0893C + 78509C28809BF74243FD6DF5E7D2AA9ECB3F5DFF9678C91E0C6FF0FBDF034418 + 0CBA4DF397CE5CBD7CCD7C4B544C24A36391C930BDB940D19A735AE0EB7B9F06 + 0FE1347935103EFB38B8D3D0AE3A3EAD72D59737BD8361FB513DBD0093C1C02E + 9B38257157DE9625914F258F445F06588645E1D46048515E399C2E3D08F372F2 + 20B7244933778B5EF05210422888230234D5DC81F3876B9B3AEA5DEBD1F73402 + 240A181E3ED476287BD5EC3959AFA6B366B34903E8581DF66C9F396D14B0724F + 3CB87D1E70138F96B936020471124E57B7176A8F5F93AE7F7FFB33C9236D4440 + 07CE33A4C7A5C41ECDDF9A13999C1AA7654DB3A7806DF9157DE6BD80FE5AD4AA + 0EE071148244A0F9421B5C3DD2D0E469E65620C0C1982C86E21973D336BF5698 + 6D1844774C20FB9D05950F98D31D24490A88921C90FF39B7E02DB0AF6C418080 + 001F74B5F640DD478DA2EBF79E4259944B98109BE5544E6E46E6E2D5E98CDEA0 + 031617F7ED75171ECB9C2A7F7D21985FB901BCE407705E011A4BEFA8CE739D47 + 245E59C9D822C2AAF28AB3274E9FFB0C43E77EDF869AC736F71109DED85C0CCC + 92BAC0088876465ACF38D5B613CE5F658FFC1C631F32A8A660D7D209A93393B4 + 1D7968F3953E407FA6D243CF9B0A77009F558D009F66EE9345E83CD705EDDF74 + D6CA6E790263B5592A96AD9B37EDC5ECC98C04321045842FB7DE8413C7DE7FA4 + 39ED0B8B77C13F0BCE6BD3A3017C22749C76A9DD673DD58AA0A432C1A1410766 + 2C9A949BB576B60E8218201844213FEC76C1E71FEEFD5F73AAED3B4BA0655E05 + F81040307BA18B40676997CAFF269C54457521C31AD8E58993461F78796346A8 + 2DC61A18A61F72699F0A1FECDFDD6758F06651BFDBB431E34704F8DFE11A04E8 + FECACD49B7E5125556B7D383161F1963FB62F6EA2929492FC4323E55BC079125 + 683C6C85F7DEDEAE01E8822AD957B5E9E051DAB468BDDF5CC445F73838953B2B + FCA276AB5BF01C545240A8C1ACDB903C2B6EFDF455A966A3DD0082ECD3168B42 + 44EC5D47A361CF8E426D41DD8B2EF6ED169A756FE634195F1B016F19D72DD5C9 + 5B41828F11E0E9BDECE22DB6A092B4A5E3D3C7A63FA9978D0AC35388F6B27F67 + E8BF4ED602DB321D81D1899A4445F2F76E51E52A0442CAC5E340A010439BEFBF + 4D8DA8CCC1636D45E316C4260E993458279914C6171809096CBFF09393E166C6 + 59CDD01730A72324682E54119138C845F52E6C432F074A7AB8E0846255586C1F + 655D1B3D6D5842449A5DCFD870573DB026FE7511E994507311FF6B2720541322 + 568BD56A3BD0ABFA3B943050C9B4A266996C8615F6C4B099D6849060D3082303 + 363CD1264583116AEA45E05DEC9B7C2AA9177BA4EBF2192CFD9FE0BB9528FE51 + 45DF801AC31AD9857AAB3ED318AE8F3344E843749178EF5A8021DDA24ADA4549 + 724A3DB24BF95375AB65B8A02703F5587A54D1EF6DF477FAC91285953A99D1C3 + 38303276BC074D8A0CBC4A54271EFACBA8AB18D30EFE4F97FF340AF8172272E4 + FE66E507F40000000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000AEB00000AEB01828B0D5A000005A14944415478DA + 8D960B50546514C7CFBD771FC0C2E22E026A8A2F140145B490C65047AC0445D3 + F111A463A38DE608CA949A1A83864C2AD5E8543A4D33659AD360E3E8A036D958 + 069B943D80C8576E12A8BCC28559D8C7DDBBDF7D75BECB2EBE60F49BF9CFBD77 + F7DCFFEF7CE77B5D06066E1C2A0C65450D0F0D350C6375AC5194141FF19166FC + AD0DD58DE2514A7F06AAAA0233807924C7415A4848E8F31116D30C4B54C4A8D8 + 1183C3C34C21ACC72DC81DAD0E97D3E1FAD7E974DB449F7801E3EB50DE2701D0 + ACC7EB74BA25F14923F29252E3C7244E1E6D1C35EE2966485C341843F4E0F5FA + A0F5F67F60BF7E4BBD56DFE8B3D737DE686FEC3CA6284A05BE7B9BFA0E04A0E6 + E9D6E8C882B48C89D9F396CD1894943A1622A3CCC0728C162C2B0A28AA027E99 + 805BE0A1ADFDAE7AE58F7FA0FA4C9DC35ED35421B8C921F4B81284DC0F605193 + 2D31E6A29CA5B3B216AD9C1316377628C3716C5F3AD4B864A30DB61D781678D1 + 071E142F0AE0F679A1C17E47FDA9BCC675F9879B278997ECC3F0865EFF7B8068 + BD9EDBBE7045E6BA55050B4DC3E262188E4526C30473D12EBB0A2AB5E0B57B13 + C14378F06A201E3C7E1E5A1A3A54DB17354EFB85A6FD18F231CA150418F57A76 + E5D48CE43DF945AFC44C48198DBE0CB00C8BC2D260888A5192224169810DCE96 + 1F820579F9F0D2CE58F02284F68482782240535D0BFCF2697D53A7DDB9197DCF + 2240A280E151432C9FE4AE9D3B6FD96B596C68A85103702C87572C11CB8084CF + 7E4584F736546900DA2824638BB1B70708E2252C578F17EA8FDF906E7E7BE74B + C9236D434027D619B21252E38F6EDC9517939296A0654DB32F2DBCD8EFFCA500 + 3AD892A4C0D2570B21219F0737027CD80B4122D0FC5B3B5C3DD2D0E469E65723 + C0C6184DFA92D9F3D3776C28CED50FA2332690FDBB85D57DD9DEDF82E6A2246B + 5AF5FA56B0AE69458080003F74B7B9E0FA678DA2F32F57B12CCA654CB8C57426 + 6F7D76CEF275598C4ECF01CBB25A0FCADEB8F408E061733170BFBEF06D80BC6B + 1A80F70AD058DEA23A2ABB8E483E650D63898EACC92FC99D3A6BFE338C36B808 + A0A37F606BED038081CCA9FC44822D3B4AA07BF1AFDA1A693BE750DB4F392EC9 + 1EF939C61A3BA8AE70CF8A29699913B5A9884B09449C31878BEC7D80FE4CA587 + EEB7179742FB822A0488D055D90D1D27BAEA65B73C85315B4C552BDF5C30F3C5 + DCE98C0432109C2DA22CC189DD2D1AE049CDDB722AB5ECFD7E113ACF3AD59EF3 + 9E5A4550D298B0889083B3974C5BBF6CD35C0E421820184421DFED75C2A9631F + 3D91792BCD1CEB4F307BA19B405779B7EAFB5338AD8AEA6286D5B3AB92A78D3D + F8F2B6EC084B9CB9370BD4CFFB49BFD3F4C3F7773F98399AD3C1F54BBD89F10D + 02F47CEDE6A53B72992AABBBE9424B8C89B37C35775D46EAC417E219BF2AF641 + 08968ABE4402CF3D4747C2077B77DDCB9C9605CD8580B98883EDB1F12A7F5EB8 + A8F6A8453859AA2920421FCABD95322761F3ACB569A106AB1E04D9AF0D163515 + E5205004B97C02EC2B2DD6CC5B727ED4B20E664E93F1B713F056F03DD27519B3 + 80CF11E0096E7689264B4859FA8AC959E3B346EA6483C2F8E460B77BCD697DC3 + 4E3EAD05DFCAFE5E7BA6A2334EBBBA4595AF1208B9201E0702C518D67CFF6E6A + 40E50C1E6FD93969517C72ECB4C19C6454187FA02724D083A8D3D3D1FCBC66E8 + 0F98D31E1234176A88486CE477F52EBC835E3694F4F0811381A7C272EB18F3A6 + 1133872645A75B758C0567D50363D23B2E222D093517F1BF0E02422D2162AD58 + AB7600DDAABF4109031D9966D41CA345BFDA9A1C99694E0A0F338E323060C195 + 6C543418A1A65E04DEC56B935F2576D125DD94CFE1D17F18DFAD46F91E77E8EB + 51E35803BB5867D6E518A27409FA685D381783FBAE0918D223AAA443942487E4 + 929DCADFAA5BADC0013D1D388FA5C71DFAC1467FA79F2CC3F0A44E617430090C + 8C15B729A322834F25AA0317FD65D4558CE980DE4F97471A05FC0F622CD6FE88 + 2F15D20000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002814944415478DA + 63FCFFFF3F032D0123C8822F5C7FFED767DC625876E301458645692830B0B2FF + 67E8ECD06184391CCC282EBAF6DFC7478B21AA671BC3F36D5E040DFAF3E71FC3 + EFBF7F19FEFDFB0F66FF01B275A20E32AC28E766F0F2F26250538B63387F7E3A + 235E0B3AD73F25CAD571D6BC60DA28E108C3A783A160365116E07339C4D540FC + 07C1364B3EC6D0E0AFCDF0EBD72F8679F3FA48B7009FE1206C957682A1CA5395 + E1E7AFDF0C4B974CA65E10051AB28169FBACD30CC5CE0A401FFC6658BD6A06F1 + 3E20E4F2DF50BE73DE59862C2B09A0057F18B66C9E4F9C05C41A0E4A45EE8517 + 18524C44C03ED8B573097E0B40C9AF7BE333A282C8550D92DEBD4B2F31C4E9F1 + 03E3E017C3C1FDAB705BF0748B2786EB103EC04CFF3039FF8A2B0CE11A9C601F + 1C3FBA1EB7050F37BAE3351C3DB8FE41732CC882402516B005674F6FC16E0138 + BB032D2107C00C07E583CB1777E1B6E02FD07520853F7FFE82D0504DE86C506A + 8188C1F81039909A5BD7F763B7006678754D0159BE5056B303EB7FFCE038A605 + 6E6EC05CF813E292D6B60A9002AC86FCFEF593E1F7CF9F0CBF8018C4CE2E3A0A + 16BF7DF30083AC822558FFCB6767302DB0B757807BB3BBA70E6C0137373758B3 + 868605C3D9B37B310CFFF3FB17437EF969B805E252266033DEBFB9886981A5A5 + 343C0C274D6A065B2025A5C42029A9C8A0AB6BCD307B563586E1BF81EA4B6A2F + C22D1014D107B3B15A606C2C0A8DC4DF0C336674802D303676061BAEA666C450 + 90EB8461F81F20AE68BE4E9C053ABA02F0208216B70C09097560C385852519C2 + 8395300C07D1B59D77095BC0C8C8C8505478F5BF82222B72718B35CC910DFF07 + CC78F53D0F88B300040C0C32A8D202B87061066A9D4C4B40730B0038C31BFE85 + 5838D40000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000026D4944415478DA + B5966D48535118C7FF138A455F84588C0A7A27AA1163CDB69168929851CB5806 + 81D5878A7C29412428484264A85006814342E805112DE8436F94F43E74393775 + ABC1552C87B5EA6286B7B01AB4BBD3CE8D0DC57976B7D9038773B8F79CDFEF9C + F33C17AE821082FF198AE982F607CE946C4DCD3731D8D5A2A063FFDA73E4C9FB + 469C8CB0E30A4AF61A928247D660F9D225A8BE7019366F0B0CD595C8186B43AB + 4D9024F322D06E5C8521F75D2CAB2A85E94026E010C00533D1CD09E99D4014C3 + E87CE482F2A717D93B8A305AA381A97F4282D3484B40E1A248F0BAE33486825A + 188D464C0A5FF1A3AA002A9EC0C7837D457957C7124A6A958DD896AF4146C08D + 1B1E23D46A35789E87D56A452010483EC9244C20465A28B27B6767650CFEE5D7 + 38BE8F7F46AF5026C1559BCDB1AA922D48040F0A1E145B57E06C7D2BAEB5DF4B + 4E20176E7778F0F0A54B9E205E0EA6DF793C38DDC463BB5BFE0992D97974DED3 + 9E01798254E0B4745FF47A120BA2354EFB70E47D435D09FE902294177630E1B4 + D95D6FD88243BBB324F8AEEB01E95959A8166F3F4E4137F509CEC515B0AC3922 + C1D7D574CFC8CF95DC050885C370F4FBD88283057A69277432ED2FD51FC5999C + 85F03FE7E00F2A71E7C322D435DF8A9D303A2F3A767939B6C0B253175BD4D556 + 0197E3154EE95663D0FF1B8E491EE50D7D73C2693FE01B660BF6E569638B8E9F + 3886D1110E2B5504872D7AE8CD179970DABCDC085BB027678B34B1F8F604BED9 + CC385FBA1586FD4D33123F179C26DC37FC8E2D28DCAE99B5482E9C464241BE69 + 53CA705982DCAC0DFFEA5F24B36A9C7E132CB82C41B66E3DEE3FEB433AC114D0 + 3F84F988A8E02F75743575B8E251160000000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000004124944415478DA + ED955F4C5B551CC77FF7DEFE61D0C204D7758139C15684752C1A565A47D7A983 + 1664449D75337301A7D68D8CBD69F4C11463627858427C30DD8B3A0C8B0FBA10 + 71B8F247470706A6996E93617173C060A56D645DD7526EDBDB7BBCE75E6F2D5A + 46E2E29BBFE4E49ED3F33DDFCFEFFCEE39B7044208FECB20FE07AC0A584DE070 + 38C889EB011345C1101EC798786D77D747DF72DDE46A6B1B0F1E54DE1560B7DB + A57136DB4033B17373FEB9BF262872978F898D5C73B9622B257EB4ED83B1C0B4 + 47BF1280B0B6B6CAD4892C3D4D477873868DD76C543D90A028C9101E47A34BC6 + 1FDD83639916DB6C2D0A2A0785B12E1380686A72C8C91CBA72297A67188B9289 + 64C3E8E0D7BD78D2F4F4B3FB11CB7431887D6ECCD5DB9D09A0B75A7365843494 + E91D70E64D9C790167BEC49B2340F5DF9D397D46D41A6BEA9EA024926F922C6B + 1DEDEBEDCB08D07380827F02083367AE55AAB64522425908966818EEEBE94D5F + BCD56C5EAB9428F2C38CE4D625F797B733012A6A5ECAC9958422CB00369B4D26 + 55AE33B02C72AF64FEA75E3CD724D7D88C6F903B79DBCF9FD7138474940798CD + 6689BAB8CC4800C1671EA7A36F2A08E4CECB96215A921752057D373ADDEE789A + 21A1D168642A5561194B4AF3280449890480610072D7150402B3D7A62E9494B0 + D5119AC100E285A6D71F27097224533233F3334E85E2FEAF064E7DDA2F663F57 + 21DC01DB867AE7A60D9B0EA7EBF3E6273EFB708DFF45DF758F90C9AB47DE30E1 + 9AE3C191B60EB82F0B204803F8170166C3003FCF0661F2633B042309CB956117 + BE60E83897EC6B4E07CC3BDF85503F9DD2FB16A2606F7F14C8DDCDFCDCE9CB1C + 605FF361249A57AA01BC11A189001C18E27ABB06D6CA91B574F3634959B66260 + E709278890E91E9AD737BE550E64FD81947957DD6E200A353A64AA36C13BED1D + B086ABE312B37C0738A83B32686FA900AC1303EB87D5592988BAA41408CBBE94 + F97B1A9D50226EA272E78E277FC03B102314135A20BA1C50AC2DE6C745EB8B40 + D48F3F9805AF580BF9BEDF7B93374FF4B3BC9E8E45B711566BABBCD4A81D2CB6 + D8AB372A05C3585200E02736BF18F2C36F278F7AC747CFD9755BB630EA22ADCB + 70A803B05E1EFE1D2C6D55BC398EEE636C4A3FF4D3F70FF1C7B4EE99BD0F8763 + D1C9E71D9F839CE2DE605096DA0D16E3FADF0E069F5A5CB839525E5E0E1ACD23 + 86ECFCF56EA3FD18B4BCBF19FC37A6F9CCF14E30A82AAA033A112F5B98F9D593 + BA6886DA5A4DD5F6864F2E8C0D544F5D9D4A01B4BA32EFA4E76AF3BCE762FA27 + 9AB4ECDDBFE340E897B37B923EE81CF0420F57B646EE0E8990A2CBC2255EF5FF + 60A548580BF7708F2FB0399344CD87003AF1EFDC1146E9907B01A0D1F1004CCC + 254E70E62FA7CFA543FE3560726B3E3A7BE916EE2A38C0E2DFE731A4A1E21E4A + 745CF86CE838F32B77D3FC01CF05F8A9B438C37F0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001B74944415478DA + B5943D2C044114C7DF6A5CA150894204052AD14B7C14D7701D9D44EB4A854434 + BE3A89E28A0BD128080DA7388ABB444E88904B705710111FA5467D91DB9D9D31 + 6F6677CFB9B998DD75AFD8F9DCFF6FDEBCFDAFC118834686810063BB3CC9FB47 + 8AF52988475241C585B6036089C1DA0D7345FE88478C7F030841FF5137CB0A60 + F5395C2156FA95597A80D3F377161BEBF953C7223694BE4C20361563D324109B + 598442762B3800D75110C54DCB167D14C638CEDEC0CE7E3A3800D76C14E4E284 + C81641160761A4CFF2C100388745213617B628942DC2019801952D9180ECE55D + 30804D2950CAE0F0D586E98BDAFA27064A106D3321775DD4074C8C763B93F2E4 + 16BF92965D06F5FC5118FE84ABDB077DC0F88804C8821271E7AD074D10C61F6C + B639E501A2439D62567E2D4464D09EFC08A4EC65B0DC6754D520B997A9DAD0D5 + D10B61FC719FD9AC0096D6376A5E5C5B988730FEF00086A1FE9F9DE4DE42F9C3 + 37C0AF3F7C035C7FE049F1C41240C518A1652703D71F5A00953F4C47D86BC555 + 71805303D71F5A00953F4C2703B7B5BCB104E48B4FFA00953F7E9E5C05283EBE + F8ABC16F7FE8843640E50FDDF0008D8C6F397A5EEFE9EAF0950000000049454E + 44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited dsDataTable: TDADataSource [9] + end + inherited StatusBarImages: TPngImageList [10] + end + object JsListaContactosNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes clientes no han podido ser eliminados, porque tie' + + 'nen documentos asociados' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.pas b/Source/Modulos/Contactos/Views/uEditorClientes.pas new file mode 100644 index 00000000..1ee94a2f --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorClientes.pas @@ -0,0 +1,207 @@ +unit uEditorClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContactos, Menus, ImgList, PngImageList, StdActns, + ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, + JvExControls, JvComponent, JvNavigationPane, DB, uDADataTable, + JvFormAutoSize, ComCtrls, uDAScriptingProvider, uDACDSDataTable, StdCtrls, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, uCustomView, + uViewBase, uViewBarraSeleccion, ExtCtrls, pngimage, JvComponentBase, + + uIEditorClientes, uViewGridBase, uViewGrid, uViewContactos, uViewClientes, + TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog; + +type + TfEditorClientes = class(TfEditorContactos, IEditorClientes) + frViewClientes1: TfrViewClientes; + JsPrevisualizarDialog: TJSDialog; + JsImprimirDialog: TJSDialog; + actGruposCliente: TAction; + JsListaContactosNoEliminados: TJSDialog; + procedure actGruposClienteExecute(Sender: TObject); + protected + procedure ImprimirInterno; override; + procedure PrevisualizarInterno; override; + procedure EliminarInterno; override; + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uGridUtils, uDataModuleContactos, uDataModuleBase, uEditorGridBase, uBizContactos, + uDBSelectionListUtils, uDataModuleUsuarios, uDialogUtils, + uGruposClienteController, uBizGruposCliente, uClientesController; + +{$R *.dfm} + + +{ +******************************* TfEditorClientes ******************************* +} +procedure TfEditorClientes.actGruposClienteExecute(Sender: TObject); +var + AGruposController : IGruposClienteController; + AGrupos : IBizGrupoCliente; +begin + AGruposController := TGruposClienteController.Create; + try + AGrupos := (AGruposController.BuscarTodos as IBizGrupoCliente); + AGruposController.VerTodos(AGrupos); + finally + AGrupos := NIL; + AGruposController := NIL; + end; +end; + +constructor TfEditorClientes.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewClientes1; //CreateView(TfrViewClientes) as IViewContactos; +end; + +procedure TfEditorClientes.EliminarInterno; +var + AContactos: IBizContacto; + AllItems: Boolean; +begin + AContactos := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('¿Desea borrar los clientes seleccionados?', 'Atención', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AContactos := (Controller as IClientesController).ExtraerSeleccionados(Contactos) as IBizContacto; + end + end + else begin + if (Application.MessageBox('¿Desea borrar el cliente seleccionado?', 'Atención', MB_YESNO) = IDYES) then + AContactos := Contactos; + end; + + if Assigned(AContactos) then + begin + (FController as IClientesController).Eliminar(AContactos, AllItems); + if AllItems then + begin + if (AContactos.DataTable.RecordCount > 0) then + begin + with AContactos.DataTable do + begin + First; + while not EOF do + begin + JsListaContactosNoEliminados.Content.Add('Cliente: ' + AContactos.NOMBRE); + Next; + end; + end; + JsListaContactosNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; +end; + +procedure TfEditorClientes.ImprimirInterno; +var + Respuesta : Integer; + AClientes: IBizCliente; + AllItems: Boolean; +begin + AClientes := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podré imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AClientes := (Controller as IClientesController).ExtraerSeleccionados(Contactos) as IBizCliente; + end + else + AClientes := (Contactos as IBizCliente); + + if Assigned(AClientes) then + (FController as IClientesController).Print(AClientes, AllItems); + end; + end; + end; + end; +end; + +procedure TfEditorClientes.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := 'Lista de clientes - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorClientes.PrevisualizarInterno; +var + Respuesta : Integer; + AClientes: IBizCliente; + AllItems: Boolean; +begin + AClientes := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podré imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AClientes := (Controller as IClientesController).ExtraerSeleccionados(Contactos) as IBizCliente; + end + else + AClientes := (Contactos as IBizCliente); + + if Assigned(AClientes) then + (FController as IClientesController).Preview(AClientes, AllItems); + end; + end; + end; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorClientes.pas.bak b/Source/Modulos/Contactos/Views/uEditorClientes.pas.bak new file mode 100644 index 00000000..14184372 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorClientes.pas.bak @@ -0,0 +1,121 @@ +unit uEditorClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContactos, Menus, ImgList, PngImageList, StdActns, + ActnList, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, + JvExControls, JvComponent, JvNavigationPane, DB, uDADataTable, + JvFormAutoSize, ComCtrls, uDAScriptingProvider, uDACDSDataTable, StdCtrls, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, uCustomView, + uViewBase, uViewBarraSeleccion, ExtCtrls, pngimage, JvComponentBase, + + uIEditorClientes, uViewGridBase, uViewGrid, uViewContactos, uViewClientes, + TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog; + +type + TfEditorClientes = class(TfEditorContactos, IEditorClientes) + frViewClientes1: TfrViewClientes; + actGruposCliente: TAction; + JsListaContactosNoEliminados: TJSDialog; + procedure actGruposClienteExecute(Sender: TObject); + protected + procedure EliminarInterno; override; + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uGridUtils, uDataModuleContactos, uDataModuleBase, uEditorGridBase, uBizContactos, + uDBSelectionListUtils, uDataModuleUsuarios, uDialogUtils, + uGruposClienteController, uBizGruposCliente, uClientesController; + +{$R *.dfm} + + +{ +******************************* TfEditorClientes ******************************* +} +procedure TfEditorClientes.actGruposClienteExecute(Sender: TObject); +var + AGruposController : IGruposClienteController; + AGrupos : IBizGrupoCliente; +begin + AGruposController := TGruposClienteController.Create; + try + AGrupos := (AGruposController.BuscarTodos as IBizGrupoCliente); + AGruposController.VerTodos(AGrupos); + finally + AGrupos := NIL; + AGruposController := NIL; + end; +end; + +constructor TfEditorClientes.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewClientes1; //CreateView(TfrViewClientes) as IViewContactos; +end; + +procedure TfEditorClientes.EliminarInterno; +var + AContactos: IBizContacto; + AllItems: Boolean; +begin + AContactos := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('¿Desea borrar los clientes seleccionados?', 'Atención', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AContactos := (Controller as IClientesController).ExtraerSeleccionados(Contactos) as IBizContacto; + end + end + else begin + if (Application.MessageBox('¿Desea borrar el cliente seleccionado?', 'Atención', MB_YESNO) = IDYES) then + AContactos := Contactos; + end; + + if Assigned(AContactos) then + begin + (FController as IClientesController).Eliminar(AContactos, AllItems); + if AllItems then + begin + if (AContactos.DataTable.RecordCount > 0) then + begin + with AContactos.DataTable do + begin + First; + while not EOF do + begin + JsListaContactosNoEliminados.Content.Add('Cliente: ' + AContactos.NOMBRE); + Next; + end; + end; + JsListaContactosNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; +end; + +procedure TfEditorClientes.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := 'Lista de clientes - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorContacto.dfm b/Source/Modulos/Contactos/Views/uEditorContacto.dfm new file mode 100644 index 00000000..432d0a42 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorContacto.dfm @@ -0,0 +1,184 @@ +inherited fEditorContacto: TfEditorContacto + Left = 575 + Top = 291 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Ficha de contacto' + ClientWidth = 632 + Scaled = False + ExplicitWidth = 640 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 632 + Caption = 'Contacto' + ExplicitWidth = 632 + inherited Image1: TImage + Left = 605 + ExplicitLeft = 607 + end + end + inherited TBXDock: TTBXDock + Width = 632 + ExplicitWidth = 632 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 330 + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + ExplicitWidth = 632 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 632 + ExplicitWidth = 632 + inherited pagGeneral: TTabSheet + ExplicitLeft = 4 + ExplicitTop = 24 + ExplicitWidth = 624 + ExplicitHeight = 338 + end + object pagDatosBancarios: TTabSheet + Caption = 'Datos bancarios' + ImageIndex = 1 + inline frViewClienteDatosBancarios: TfrViewClienteDatosBancarios + Left = 0 + Top = 0 + Width = 624 + Height = 338 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 624 + ExplicitHeight = 338 + inherited dxLayoutControl1: TdxLayoutControl + Width = 624 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 624 + inherited eEntidad: TcxDBTextEdit + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 114 + Width = 114 + end + inherited eSucursal: TcxDBTextEdit + Left = 406 + Top = 57 + ExplicitLeft = 406 + ExplicitTop = 57 + ExplicitWidth = 112 + Width = 112 + end + inherited eCuenta: TcxDBTextEdit + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 194 + Width = 194 + end + inherited eDC: TcxDBTextEdit + Top = 84 + ExplicitTop = 84 + end + inherited eTitular: TcxDBTextEdit + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 194 + Width = 194 + end + end + end + end + end + inherited StatusBar: TJvStatusBar + Width = 632 + Panels = < + item + Width = 200 + end> + ExplicitWidth = 632 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited dsDataTable: TDADataSource [5] + Left = 168 + Top = 120 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [6] + Top = 144 + end + inherited StatusBarImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + Top = 144 + end + inherited LargeImages: TPngImageList [9] + Top = 112 + end + inherited SmallImages: TPngImageList [10] + Top = 112 + end + object dxLayoutLookAndFeel: TdxLayoutLookAndFeelList + Left = 320 + Top = 248 + object dxLayoutOfficeLookAndFeel: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'Tahoma' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clHighlight + GroupOptions.CaptionOptions.UseDefaultFont = False + end + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorContacto.pas b/Source/Modulos/Contactos/Views/uEditorContacto.pas new file mode 100644 index 00000000..927b27ae --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorContacto.pas @@ -0,0 +1,179 @@ +unit uEditorContacto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uViewContacto, uBizContactos, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase, + + uIEditorContacto, uContactosController, TBXStatusBars, JvExComCtrls, + JvStatusBar, uViewContactoDatosBancarios, dxLayoutLookAndFeels, JvLabel; + +type + TfEditorContacto = class(TfEditorDBItem, IEditorContacto) + pagDatosBancarios: TTabSheet; + frViewClienteDatosBancarios: TfrViewClienteDatosBancarios; + dxLayoutLookAndFeel: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel: TdxLayoutOfficeLookAndFeel; + procedure FormShow(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + protected + FController : IContactosController; + FContacto: IBizContacto; + FViewContacto : IViewContacto; + function GetContacto: IBizContacto; virtual; + procedure SetContacto(const Value: IBizContacto); virtual; + + function GetViewContacto: IViewContacto; + procedure SetViewContacto(const Value: IViewContacto); + procedure GuardarInterno; override; + procedure EliminarInterno; override; + property ViewContacto: IViewContacto read GetViewContacto write + SetViewContacto; + function GetController : IContactosController; virtual; + procedure SetController (const Value : IContactosController); virtual; + public + procedure PonerTitulos(const ATitulo: string = ''); override; + constructor Create(AOwner: TComponent); override; + property Controller : IContactosController read GetController + write SetController; + property Contacto: IBizContacto read GetContacto write SetContacto; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleContactos, uDataModuleBase, uDataModuleUsuarios; + +{ +******************************* TfEditorContacto ******************************* +} +function TfEditorContacto.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +function TfEditorContacto.GetController: IContactosController; +begin + Result := FController; +end; + +function TfEditorContacto.GetViewContacto: IViewContacto; +begin + Result := FViewContacto; +end; + +procedure TfEditorContacto.GuardarInterno; +begin + inherited; + FController.Guardar(FContacto); + Modified := False; +end; + +procedure TfEditorContacto.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := ATitulo; + + if Assigned(Contacto) then + begin + if (FTitulo = '') then + begin + if Contacto.EsNuevo then + FTitulo := 'Nuevo contacto' + else + FTitulo := 'Contacto'; + end; + + if Length(Contacto.NOMBRE) > 0 then + FTitulo := FTitulo + ' - ' + Contacto.NOMBRE; + end; + + inherited PonerTitulos(FTitulo); + + Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')'; +end; + +procedure TfEditorContacto.SetContacto(const Value: IBizContacto); +begin + FContacto := Value; + dsDataTable.DataTable := FContacto.DataTable; + + if Assigned(FViewContacto) and Assigned(Contacto) then + begin + FViewContacto.Contacto := Contacto; + frViewClienteDatosBancarios.dsDatosBancarios.DataTable := FContacto.DatosBancarios.DataTable; + end + else + frViewClienteDatosBancarios.dsDatosBancarios.DataTable := NIL; +end; + +procedure TfEditorContacto.SetController(const Value: IContactosController); +begin + FController := Value; +end; + +procedure TfEditorContacto.SetViewContacto(const Value: IViewContacto); +begin + FViewContacto := Value; + + if Assigned(FViewContacto) and Assigned(Contacto) then + FViewContacto.Contacto := Contacto; +end; + +procedure TfEditorContacto.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewContacto) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Contacto) then + raise Exception.Create('No hay ningn contacto asignado'); + + Contacto.DataTable.Active := True; +// FViewContacto.ShowEmbedded(pagGeneral); +// FViewContacto.SetFocus; +end; + +constructor TfEditorContacto.Create(AOwner: TComponent); +begin + inherited; + pgPaginas.ActivePageIndex := 0; +end; + +destructor TfEditorContacto.Destroy; +begin + FViewContacto := NIL; + FContacto := NIL; + inherited; +end; + +procedure TfEditorContacto.dsDataTableDataChange(Sender: TObject; + Field: TField); +begin + inherited; + if Assigned(Contacto) and (not (Contacto.DataTable.Fetching) or + not (Contacto.DataTable.Opening) or not (Contacto.DataTable.Closing)) then + PonerTitulos; +end; + +procedure TfEditorContacto.EliminarInterno; +begin + inherited; + if not FController.Eliminar(FContacto) then + actRefrescar.Execute; +end; + +end. + diff --git a/Source/Modulos/Contactos/Views/uEditorContactos.dfm b/Source/Modulos/Contactos/Views/uEditorContactos.dfm new file mode 100644 index 00000000..b46aee58 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorContactos.dfm @@ -0,0 +1,43 @@ +inherited fEditorContactos: TfEditorContactos + Left = 285 + Top = 448 + Caption = 'Lista de contactos' + ExplicitWidth = 320 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de contactos' + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + ExplicitWidth = 543 + end + inherited tbxFiltro: TTBXToolbar + ExplicitWidth = 269 + inherited tbxEditFiltro: TTBXEditItem + EditOptions = [tboUseEditWhenVertical] + end + inherited TBXItem37: TTBXItem + Visible = False + end + end + inherited TBXTMain2: TTBXToolbar + Left = 334 + ExplicitLeft = 334 + end + end + inherited EditorActionList: TActionList + inherited actPrevisualizar: TAction + Visible = True + end + inherited actImprimir: TAction + Visible = True + end + end + inherited GridPopupMenu: TPopupMenu + inherited Duplicar1: TMenuItem + Visible = False + end + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorContactos.pas b/Source/Modulos/Contactos/Views/uEditorContactos.pas new file mode 100644 index 00000000..97aad4a2 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorContactos.pas @@ -0,0 +1,166 @@ +unit uEditorContactos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorBase, uEditorGridBase, ToolWin, ComCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewContactos, uBizContactos, ActnList, DBActns, uViewGridBase, + Menus, uDataModuleBase, ImgList, PngImageList, TB2Dock, TB2Toolbar, TBX, + TB2Item, StdActns, TB2ExtItems, TBXExtItems, TB2MRU, DB, uDADataTable, + JvFormAutoSize, uDAScriptingProvider, uDACDSDataTable, JvAppStorage, + JvAppRegistryStorage, JvFormPlacement, ExtCtrls, uCustomView, uViewBase, + uViewBarraSeleccion, JvComponentBase, uContactosController, + + uIEditorContactos, pngimage, TBXStatusBars, JvExComCtrls, JvStatusBar; + +type + TfEditorContactos = class(TfEditorGridBase, IEditorContactos) + procedure FormShow(Sender: TObject); + protected + FContactos: IBizContacto; + FController : IContactosController; + + function GetContactos: IBizContacto; virtual; + procedure SetContactos(const Value: IBizContacto); virtual; + procedure SetViewGrid(const Value: IViewGridBase); override; + function GetController : IContactosController; virtual; + procedure SetController (const Value : IContactosController); virtual; + procedure NuevoInterno; override; + procedure ModificarInterno; override; + procedure EliminarInterno; override; + procedure DuplicarInterno; override; + procedure ImprimirInterno; override; + procedure PrevisualizarInterno; override; + + public + procedure PonerTitulos(const ATitulo: string = ''); override; + property Controller : IContactosController read GetController + write SetController; + property Contactos: IBizContacto read GetContactos write SetContactos; + destructor Destroy; override; + end; + +implementation + +uses + uCustomEditor, uDataModuleContactos, + uEditorDBBase, uDataModuleUsuarios, + cxGrid, cxGridCustomTableView, uDBSelectionListUtils; + +{$R *.dfm} + +{ +****************************** TfEditorContactos ******************************* +} +procedure TfEditorContactos.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Contactos) then + raise Exception.Create('No hay ningn contacto asignado'); + + Contactos.DataTable.Active := True; + ViewGrid.GotoFirst; +end; + +function TfEditorContactos.GetContactos: IBizContacto; +begin + Result := FContactos; +end; + +function TfEditorContactos.GetController: IContactosController; +begin + Result := FController; +end; + +procedure TfEditorContactos.ImprimirInterno; +begin + inherited; +end; + +procedure TfEditorContactos.ModificarInterno; +begin + inherited; + FController.Ver(Contactos); +end; + +procedure TfEditorContactos.NuevoInterno; +begin + inherited; + FController.Anadir(Contactos); + FController.Ver(Contactos); +end; + +procedure TfEditorContactos.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := ATitulo; + if FTitulo = '' then + FTitulo := 'Lista de contactos - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorContactos.PrevisualizarInterno; +begin + inherited; +end; + +procedure TfEditorContactos.SetContactos(const Value: IBizContacto); +begin + FContactos := Value; + + if Assigned(FContactos) and Assigned(FContactos.DataTable) then + begin + dsDataTable.DataTable := FContactos.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewContactos).Contactos := FContactos; + end; +end; + +procedure TfEditorContactos.SetController(const Value: IContactosController); +begin + FController := Value; +end; + +procedure TfEditorContactos.SetViewGrid(const Value: IViewGridBase); +begin + inherited; + if Assigned(ViewGrid) and Assigned(Contactos) then + (ViewGrid as IViewContactos).Contactos := Contactos; +end; + +destructor TfEditorContactos.Destroy; +begin + FContactos := NIL; + inherited; +end; + +procedure TfEditorContactos.DuplicarInterno; +var + AContacto : IBizContacto; +begin + inherited; + AContacto := FController.Duplicar(Contactos); + try + FController.Ver(AContacto); + finally + actRefrescar.Execute; + end; +end; + +procedure TfEditorContactos.EliminarInterno; +begin + inherited; + //Para que en el caso de no poderse realizar la operacin se refresquen + //los datos y no nos permita eliminar un registro a la segunda + if not FController.Eliminar(Contactos) then + actRefrescar.Execute; +end; + +end. + diff --git a/Source/Modulos/Contactos/Views/uEditorDireccion.dfm b/Source/Modulos/Contactos/Views/uEditorDireccion.dfm new file mode 100644 index 00000000..d9a08928 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorDireccion.dfm @@ -0,0 +1,313 @@ +object fEditorDireccion: TfEditorDireccion + Left = 227 + Top = 108 + ActiveControl = eNombre + BorderStyle = bsDialog + Caption = 'Cambiar datos de la direcci'#243'n' + ClientHeight = 589 + ClientWidth = 426 + Color = clBtnFace + ParentFont = True + OldCreateOrder = True + Position = poOwnerFormCenter + DesignSize = ( + 426 + 589) + PixelsPerInch = 96 + TextHeight = 13 + object Bevel1: TBevel + Left = 8 + Top = 8 + Width = 322 + Height = 511 + Anchors = [akLeft, akTop, akRight] + Shape = bsFrame + end + object Label1: TLabel + Left = 20 + Top = 67 + Width = 110 + Height = 13 + AutoSize = False + Caption = 'Direcci'#243'n:' + end + object Label2: TLabel + Left = 20 + Top = 131 + Width = 110 + Height = 13 + AutoSize = False + Caption = 'Poblaci'#243'n:' + end + object Label3: TLabel + Left = 20 + Top = 159 + Width = 110 + Height = 13 + AutoSize = False + Caption = 'Provincia:' + end + object Label4: TLabel + Left = 20 + Top = 185 + Width = 110 + Height = 13 + AutoSize = False + Caption = 'C'#243'digo postal:' + end + object Label5: TLabel + Left = 20 + Top = 27 + Width = 110 + Height = 13 + AutoSize = False + Caption = 'Nombre descriptivo:' + end + object Label6: TLabel + Left = 20 + Top = 227 + Width = 109 + Height = 13 + AutoSize = False + Caption = 'Persona de contacto:' + end + object Label7: TLabel + Left = 21 + Top = 251 + Width = 109 + Height = 13 + AutoSize = False + Caption = 'Tel'#233'fono:' + end + object PngSpeedButton3: TPngSpeedButton + Left = 304 + Top = 320 + Width = 23 + Height = 22 + OnClick = PngSpeedButton3Click + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001964944415478DA + 63FCFFFF3F03232323033A58BCE9F87F647EAC9F258622B05E6C068034873B8A + 80D92019C62F8F194C1356339CDF399D91A0014B361FFB1FE6208AA299E1F323 + 306D52F90CC5100C03566E3DFC3FD04E02A2F9F727064690462066006A66FC02 + 64FFFAC8603451096E088A01CB361FFDFF8F819981183077D11A86FDAB7B18E1 + 062CDD7CE27F14573FC3B2EF450CD13E86181ABE7DFFCDF0F5DB6F866FDFFE30 + 1CB97897218AB38FC1B85B98E1DC8E698C600396000D8861696058FAB7116CC0 + 94C5FBB0DAEC6CAECF70EED6238668E67AB057500CF8F0E10383A0A0208A0B90 + 6D06B1BF01D9379E3C67387AFE09C389A37BD15CE06B01B47907434EAC13C3EF + 3F7F19662E3F8862BB898606C3EFDFFF1896EF3DCFA0A5C0CD306FE9265403FC + 9D20362F5CB71F4CE7C47AA01890D5BC164C7716F980D56018606BAC0656B079 + EF2986F82047AC6150DEB785A13CD911AC06C300234D05867DC72F30B8D818E1 + 8DC2494B0E63F702281075D455884A07576EDEC134404A5480E1DAED07441900 + 021806F44D5D44B46618801B400900007F4518F05E90AAF20000000049454E44 + AE426082} + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + end + object Label8: TLabel + Left = 21 + Top = 323 + Width = 109 + Height = 13 + AutoSize = False + Caption = 'Correo electr'#243'nico:' + end + object Label9: TLabel + Left = 21 + Top = 363 + Width = 109 + Height = 13 + AutoSize = False + Caption = 'Notas:' + end + object Bevel2: TBevel + Left = 20 + Top = 457 + Width = 306 + Height = 9 + Shape = bsBottomLine + end + object Label10: TLabel + Left = 21 + Top = 489 + Width = 156 + Height = 13 + AutoSize = False + Caption = 'Coste del env'#237'o a esta direcci'#243'n:' + end + object Label11: TLabel + Left = 21 + Top = 275 + Width = 109 + Height = 13 + AutoSize = False + Caption = 'Movil:' + end + object Label12: TLabel + Left = 21 + Top = 299 + Width = 109 + Height = 13 + AutoSize = False + Caption = 'Fax:' + end + object OKBtn: TButton + Left = 343 + Top = 7 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = '&Aceptar' + ModalResult = 1 + TabOrder = 0 + ExplicitLeft = 350 + end + object CancelBtn: TButton + Left = 343 + Top = 38 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + ExplicitLeft = 350 + end + object eDireccion: TDBEdit + Left = 135 + Top = 65 + Width = 191 + Height = 57 + AutoSelect = False + AutoSize = False + DataField = 'CALLE' + DataSource = dsDireccion + TabOrder = 3 + end + object ePoblacion: TDBEdit + Left = 135 + Top = 128 + Width = 191 + Height = 21 + DataField = 'POBLACION' + DataSource = dsDireccion + TabOrder = 4 + end + object eProvincia: TDBEdit + Left = 135 + Top = 156 + Width = 191 + Height = 21 + DataField = 'PROVINCIA' + DataSource = dsDireccion + TabOrder = 5 + end + object eCodigoPostal: TDBEdit + Left = 135 + Top = 182 + Width = 191 + Height = 21 + DataField = 'CODIGO_POSTAL' + DataSource = dsDireccion + TabOrder = 6 + end + object eNombre: TDBEdit + Left = 135 + Top = 24 + Width = 191 + Height = 21 + DataField = 'NOMBRE' + DataSource = dsDireccion + TabOrder = 2 + end + object ePersonaContacto: TDBEdit + Left = 135 + Top = 224 + Width = 191 + Height = 21 + DataField = 'PERSONA_CONTACTO' + DataSource = dsDireccion + TabOrder = 7 + end + object eTelefono: TDBEdit + Left = 136 + Top = 248 + Width = 191 + Height = 21 + DataField = 'TELEFONO' + DataSource = dsDireccion + TabOrder = 8 + end + object eMail: TcxDBHyperLinkEdit + Left = 136 + Top = 320 + DataBinding.DataField = 'EMAIL' + DataBinding.DataSource = dsDireccion + Properties.OnEditValueChanged = eMailPropertiesEditValueChanged + Properties.OnValidate = eMailPropertiesValidate + Properties.Prefix = 'mailto:' + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 9 + Width = 162 + end + object eNotas: TDBMemo + Left = 136 + Top = 360 + Width = 190 + Height = 94 + DataField = 'NOTAS' + DataSource = dsDireccion + ScrollBars = ssVertical + TabOrder = 10 + end + object ePortes: TcxDBCurrencyEdit + Left = 183 + Top = 486 + DataBinding.DataField = 'PORTE' + DataBinding.DataSource = dsDireccion + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 11 + Width = 143 + end + object eMovil: TDBEdit + Left = 136 + Top = 272 + Width = 191 + Height = 21 + DataField = 'MOVIL' + DataSource = dsDireccion + TabOrder = 12 + end + object eFax: TDBEdit + Left = 136 + Top = 296 + Width = 191 + Height = 21 + DataField = 'FAX' + DataSource = dsDireccion + TabOrder = 13 + end + object dsDireccion: TDADataSource + Left = 352 + Top = 72 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorDireccion.pas b/Source/Modulos/Contactos/Views/uEditorDireccion.pas new file mode 100644 index 00000000..dd882276 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorDireccion.pas @@ -0,0 +1,130 @@ +unit uEditorDireccion; + +interface + +uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, + Buttons, ExtCtrls, Mask, DBCtrls, DB, uDADataTable, PngSpeedButton, + cxControls, cxContainer, cxEdit, cxTextEdit, cxHyperLinkEdit, cxDBEdit, + uIEditorDireccionContacto, uDireccionesContactoController, uBizDireccionesContacto, + cxCurrencyEdit; + +type + TfEditorDireccion = class(TForm, IEditorEditorDireccion) + OKBtn: TButton; + CancelBtn: TButton; + Bevel1: TBevel; + eDireccion: TDBEdit; + ePoblacion: TDBEdit; + eProvincia: TDBEdit; + eCodigoPostal: TDBEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + dsDireccion: TDADataSource; + Label5: TLabel; + eNombre: TDBEdit; + Label6: TLabel; + ePersonaContacto: TDBEdit; + Label7: TLabel; + eTelefono: TDBEdit; + eMail: TcxDBHyperLinkEdit; + PngSpeedButton3: TPngSpeedButton; + Label8: TLabel; + Label9: TLabel; + eNotas: TDBMemo; + Bevel2: TBevel; + Label10: TLabel; + ePortes: TcxDBCurrencyEdit; + Label11: TLabel; + eMovil: TDBEdit; + Label12: TLabel; + eFax: TDBEdit; + procedure PngSpeedButton3Click(Sender: TObject); + procedure eMailPropertiesEditValueChanged(Sender: TObject); + procedure eMailPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + protected + FController : IDireccionesContactoController; + FDireccion: IBizDireccionesContacto; + + function GetController : IDireccionesContactoController; + procedure SetController (const Value : IDireccionesContactoController); + function GetDireccion: IBizDireccionesContacto; + procedure SetDireccion(const Value: IBizDireccionesContacto); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property Controller : IDireccionesContactoController read GetController + write SetController; + property Direccion: IBizDireccionesContacto read GetDireccion write SetDireccion; + end; + +implementation + +uses + Variants; + +{$R *.dfm} + +type + THackcxDBHyperLinkEdit = class(TcxDBHyperLinkEdit); + +{ TfEditorDireccion } + +constructor TfEditorDireccion.Create(AOwner: TComponent); +begin + inherited; + FController := NIL; +end; + +destructor TfEditorDireccion.Destroy; +begin + FController := NIL; + inherited; +end; + +procedure TfEditorDireccion.eMailPropertiesEditValueChanged(Sender: TObject); +begin + if not VarIsNull((Sender as TcxDBHyperLinkEdit).EditValue) then + (Sender as TcxDBHyperLinkEdit).EditValue := StringReplace((Sender as TcxDBHyperLinkEdit).EditValue, (Sender as TcxDBHyperLinkEdit).Properties.Prefix, '', []); +end; + +procedure TfEditorDireccion.eMailPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +begin + if not VarIsNull(DisplayValue) then + DisplayValue := StringReplace(DisplayValue, (Sender as TcxDBHyperLinkEdit).Properties.Prefix, '', []); +end; + +function TfEditorDireccion.GetController: IDireccionesContactoController; +begin + Result := FController; +end; + +function TfEditorDireccion.GetDireccion: IBizDireccionesContacto; +begin + Result := FDireccion; +end; + +procedure TfEditorDireccion.PngSpeedButton3Click(Sender: TObject); +begin + THackcxDBHyperLinkEdit(eMail).DoStart; +end; + +procedure TfEditorDireccion.SetController( + const Value: IDireccionesContactoController); +begin + FController := Value; +end; + +procedure TfEditorDireccion.SetDireccion(const Value: IBizDireccionesContacto); +begin + FDireccion := Value; + if Assigned(FDireccion) then + dsDireccion.DataTable := FDireccion.DataTable + else + dsDireccion.DataTable := NIL; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorElegirClientes.dfm b/Source/Modulos/Contactos/Views/uEditorElegirClientes.dfm new file mode 100644 index 00000000..4ecebd75 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorElegirClientes.dfm @@ -0,0 +1,595 @@ +inherited fEditorElegirClientes: TfEditorElegirClientes + Caption = 'Seleccionar el cliente' + ClientWidth = 683 + ExplicitWidth = 691 + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader [0] + Left = 0 + Top = 27 + Width = 683 + Height = 60 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'Tahoma' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'Tahoma' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Seleccione el cliente') + Comments.Strings = ( + ' ') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = False + Gradient.Orientation = fgdVertical + BufferedDraw = True + ExplicitLeft = 16 + ExplicitTop = 8 + end + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 683 + Visible = False + ExplicitWidth = 683 + inherited Image1: TImage + Left = 656 + ExplicitLeft = 629 + end + end + inherited TBXDock: TTBXDock + Top = 87 + Width = 683 + Height = 49 + ExplicitTop = 87 + ExplicitWidth = 683 + ExplicitHeight = 49 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 117 + inherited TBXItem36: TTBXItem + Action = actAnchoAuto2 + end + end + inherited tbxFiltro: TTBXToolbar + Left = 117 + Top = 23 + DockPos = 96 + DockRow = 1 + ExplicitLeft = 117 + ExplicitTop = 23 + inherited TBXItem34: TTBXItem + Action = actQuitarFiltro2 + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 683 + end + end + inherited StatusBar: TJvStatusBar + Width = 683 + Visible = False + ExplicitWidth = 683 + end + inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4] + Left = 0 + Top = 464 + Width = 683 + Height = 36 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 464 + ExplicitWidth = 683 + ExplicitHeight = 36 + inherited JvFooter1: TJvFooter + Width = 683 + Height = 36 + ExplicitWidth = 683 + ExplicitHeight = 36 + inherited bSeleccionar: TJvFooterBtn + Left = 471 + Top = 3 + ModalResult = 0 + ExplicitLeft = 471 + ExplicitTop = 3 + end + inherited bCancelar: TJvFooterBtn + Left = 575 + Top = 4 + ExplicitLeft = 575 + ExplicitTop = 4 + end + end + inherited BarraSeleccionActionList: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccion1actSeleccionarExecute + OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccion1actCancelarExecute + end + end + end + inherited frViewClientes1: TfrViewClientes [5] + Top = 136 + Width = 683 + Height = 328 + Padding.Left = 10 + Padding.Top = 10 + Padding.Right = 10 + Padding.Bottom = 5 + TabOrder = 4 + ExplicitTop = 136 + ExplicitWidth = 683 + ExplicitHeight = 328 + inherited cxGrid: TcxGrid + Left = 10 + Top = 10 + Width = 663 + Height = 313 + ExplicitLeft = 10 + ExplicitTop = 10 + ExplicitWidth = 663 + ExplicitHeight = 313 + inherited cxGridView: TcxGridDBTableView + OptionsView.Footer = False + end + end + inherited dsDataSource: TDADataSource + Left = 144 + Top = 56 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewClientes1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited PngImageList: TPngImageList + Left = 40 + Top = 96 + end + end + inherited EditorActionList: TActionList [6] + Left = 112 + Top = 192 + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actGuardarCerrar: TAction + Visible = False + end + inherited actGuardar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + inherited actConfPagina: TAction + Visible = False + end + inherited actDeshacer: TEditUndo + Visible = False + end + inherited actCortar: TEditCut + Visible = False + end + inherited actCerrar: TAction + Visible = False + end + inherited actCopiar: TEditCopy + Visible = False + end + inherited actPegar: TEditPaste + Visible = False + end + inherited actSeleccionarTodo: TEditSelectAll + Visible = False + end + inherited actLimpiar: TEditDelete + Visible = False + end + inherited actRefrescar: TAction + Visible = False + end + inherited actAcercaDe: TAction + Visible = False + end + inherited actBuscar: TAction + Visible = False + end + inherited actAnterior: TAction + Visible = False + end + inherited actSiguiente: TAction + Visible = False + end + inherited actCancelarCambios: TAction + Visible = False + end + inherited actDuplicar: TAction + Visible = False + end + inherited actGruposCliente: TAction + Visible = False + end + end + inherited SmallImages: TPngImageList [7] + end + inherited LargeImages: TPngImageList [8] + end + inherited JvFormStorage: TJvFormStorage [9] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [10] + end + inherited dsDataTable: TDADataSource [11] + Left = 8 + Top = 192 + end + inherited StatusBarImages: TPngImageList [12] + end + inherited GridPopupMenu: TPopupMenu + Left = 80 + Top = 192 + end + object JsClienteBloqueadoDialog: TJSDialog + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF94000000097048597300004E2000004E2001167D99 + DE0000000467414D410000B18E7CFB51930000037F4944415478DAC5D57B4853 + 511C07F0EF9D73B365E98A69AB344AA908F30F2BEC4130ED01817FF447417F64 + 4541EF07511662312D8AFA53A108E9614456461A948FB234154D31C957E92A5C + 6EF391CD9EBAB9DD57F7DCB5B5E64CE7A87E7077EFE1FCEEF9DCDFD93DF7503C + CFE35F06F5DF418AA286250919547126645339693C0294193CF751E3CA97A89E + 59AD9F4E3595B335874A6077A47BDCEF668C0A6AB590AE0A962E92CB95E7487B + 61E2498D7B3F6731212FF72E6B1DFC503B3864491934A03EA302CCB8C0173B11 + 689931214EAE0C3E4720F98C35BF3F3A67034F7F87DDFC1236533172EF55549B + BFD853BA3A9817D90DA07D069F9EC6ACE010558E3B66EB2A150777C6C405FB05 + F41B58EB4717DADD6B493EF3007A9FC03C2D646AA97CB92C64B2767172A5C61D + 2B28696749BBDF6CAADF73F0F05289622678E61BECBDD5625F5797616D9892AD + DA95EDA8724C60B916D3145355B79CD5B96326A37E7DFE23D41DDD81C5D1B351 + 14B3FC986386ED5FC10E18C42A3F9B2D1B4F14A067CC60951691814A742ED9DA + F61BD6D3ADDF909687FBCEFCCAB3489229F020767516E8BE1A1115AB34E8A34E + E6A373CC60451A22E42A183CC19AE7FAF8CB7568204B45C8E48B52113B251C4D + 0474FEB724AFF39D7E4EC64318C60492B7D31C0A4DE8743CF604073EE8B7CF9B + 059D049070343889145193D4B829829D42E10172312FC8AE4F52ABF0242103CC + 1FC1748A9224A406AF080A1FA8849F31D41F92582EF95A919ECE732382755941 + 09E06D65F1BB7BFCF55077498D269D3C71E7C5A1F291C14C8A77628C317FD441 + 795E5821C2DCF2ACDD71B85D2B628F2373B71A87AEF1D4A8E04818CD70A86FED + 455B473F96C48421664E08590FC330F2102DB51750DB08FFC09AC66E9CCDAE85 + 8D66113E65024EEF8D4364986C18C6B3345AEBB3FD07AFE4B7E07671BBABBD6F + 63349296A904F067952CE3AAF8D5CB1BFE83CDBA1E9CBFDA80BE4F5644842B70 + 62DB5C44A8028661E478DD7CC73F9054C13134721E7688556E5A371F5B564DF4 + 8A91A3ED55C1F841C794D1E239A7D0E4029335815E3192D7DE56383ED01D2383 + 5D2FE973819B57525E3172D6BD29F51DF4C4205C5F2FFDFC0B5C417BC5841FE8 + DE96F9067AC3BCBD8DDE30123E81F4FB5CAF5F0FE71AF3441C7D76D738042331 + 3A984509DB378C0425DF427F82608C1591476EF3C61141B23DDD388099FDDF61 + F459F00861D2238FE6C0F8C7EDE96FC73F077F00E79165F68A80720F00000000 + 49454E44AE426082} + Instruction.Text = 'El cliente est'#225' bloqueado' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Quiero elegir otro cliente' + Value = 100 + Default = True + end + item + Caption = 'Continuar aunque est'#233' bloqueado' + Value = 200 + end> + ButtonBar.Buttons = [] + ButtonBar.Default = cbCancel + MainIcon = tdiCustom + Title = #161'Atenci'#243'n!' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Left = 152 + Top = 232 + end + object EditorSeleccionActionList: TActionList + Images = SmallImages + Left = 200 + Top = 192 + object actBuscar2: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actQuitarFiltro2: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltro2Execute + end + object actAnchoAuto2: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 21 + OnExecute = actAnchoAuto2Execute + end + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorElegirClientes.pas b/Source/Modulos/Contactos/Views/uEditorElegirClientes.pas new file mode 100644 index 00000000..fc6128d1 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorElegirClientes.pas @@ -0,0 +1,156 @@ +unit uEditorElegirClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorClientes, DB, uDADataTable, Menus, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid, + uViewContactos, uViewClientes, ComCtrls, TB2ExtItems, TBXExtItems, TBX, + TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uIEditorElegirClientes, uViewBarraSeleccion, JvgWizardHeader, + StdCtrls, uBizContactos, TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog; + +type + TfEditorElegirClientes = class(TfEditorClientes, IEditorElegirClientes) + frViewBarraSeleccion1: TfrViewBarraSeleccion; + JvgWizardHeader1: TJvgWizardHeader; + JsClienteBloqueadoDialog: TJSDialog; + EditorSeleccionActionList: TActionList; + actBuscar2: TAction; + actQuitarFiltro2: TAction; + actAnchoAuto2: TAction; + procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject); + procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject); + procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actQuitarFiltro2Execute(Sender: TObject); + procedure actAnchoAuto2Execute(Sender: TObject); + protected + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + function GetContactosSeleccionados: IBizContacto; + procedure SetViewGrid(const Value: IViewGridBase); override; + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + public + property Mensaje : String read GetMensaje write SetMensaje; + property ContactosSeleccionados: IBizContacto read GetContactosSeleccionados; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + end; + +implementation + +uses + uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uEditorContactos, + uGridUtils, uEditorBase, cxControls, uDBSelectionListUtils, + uDialogUtils; + +{$R *.dfm} + +{ TfEditorElegirClientes } + +procedure TfEditorElegirClientes.actAnchoAuto2Execute(Sender: TObject); +begin + inherited; + actAnchoAuto.Execute; +end; + +procedure TfEditorElegirClientes.actQuitarFiltro2Execute(Sender: TObject); +begin + inherited; + actQuitarFiltro.Execute; +end; + +procedure TfEditorElegirClientes.FormShow(Sender: TObject); +begin + inherited; + EditorActionList.State := asSuspended; + frViewClientes1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := []; +end; + +procedure TfEditorElegirClientes.frViewBarraSeleccion1actCancelarExecute( + Sender: TObject); +begin + inherited; + Close; +end; + +procedure TfEditorElegirClientes.frViewBarraSeleccion1actSeleccionarExecute( + Sender: TObject); +var + Respuesta : Integer; +begin + inherited; + + // El cliente seleccionado est bloqueado? + if (FContactos as IBizCliente).BLOQUEADO = 1 then + begin + JsClienteBloqueadoDialog.Content.Text := 'Motivo: ' + + (FContactos as IBizCliente).MOTIVO_BLOQUEO; + Respuesta := JsClienteBloqueadoDialog.Execute; + + if Respuesta <> IDCANCEL then + begin + case JsClienteBloqueadoDialog.CustomButtonResult of + 200 : begin // Utilizarlo aunque est bloqueado + ModalResult := mrOk; + Exit; + end; + 100 : begin // Elegir otro + Exit; + end; + end; + end; + end + else // El cliente no est bloqueado. Puedo continuar. + ModalResult := mrOk; +end; + +procedure TfEditorElegirClientes.frViewBarraSeleccion1actSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) +end; + +function TfEditorElegirClientes.GetContactosSeleccionados: IBizContacto; +begin + ShowHourglassCursor; + try + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + // En Contactos.SelectedRecords tengo los ID de las filas seleccionadas del grid + Result := Controller.ExtraerSeleccionados(Contactos); + finally + HideHourglassCursor; + end; +end; + +function TfEditorElegirClientes.GetMensaje: String; +begin + Result := JvgWizardHeader1.Comments.Text; +end; + +function TfEditorElegirClientes.GetMultiSelect: Boolean; +begin + Result := ViewGrid.MultiSelect; +end; + +procedure TfEditorElegirClientes.SetMensaje(const AValue: String); +begin + JvgWizardHeader1.Comments.Text := AValue; +end; + +procedure TfEditorElegirClientes.SetMultiSelect(AValue: Boolean); +begin + ViewGrid.MultiSelect := AValue; +end; + +procedure TfEditorElegirClientes.SetViewGrid(const Value: IViewGridBase); +begin + inherited; + ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorElegirDireccionEntrega.dfm b/Source/Modulos/Contactos/Views/uEditorElegirDireccionEntrega.dfm new file mode 100644 index 00000000..7c3e95ca --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorElegirDireccionEntrega.dfm @@ -0,0 +1,271 @@ +object fEditorElegirDireccionEntrega: TfEditorElegirDireccionEntrega + Left = 227 + Top = 108 + BorderStyle = bsDialog + Caption = 'Elegir una direcciones de entrega' + ClientHeight = 383 + ClientWidth = 599 + Color = clBtnFace + ParentFont = True + OldCreateOrder = True + Position = poOwnerFormCenter + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 599 + Height = 60 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'Tahoma' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'Tahoma' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Seleccione una direcci'#243'n del cliente') + Comments.Strings = ( + + 'Seleccione la direcci'#243'n del cliente que quiere utilizar como dir' + + 'ecci'#243'n de envio.') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = False + Gradient.Orientation = fgdVertical + BufferedDraw = False + ExplicitLeft = -57 + ExplicitTop = 27 + ExplicitWidth = 656 + end + inline frViewBarraSeleccion1: TfrViewBarraSeleccion + Left = 0 + Top = 334 + Width = 599 + Height = 49 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitTop = 334 + ExplicitWidth = 599 + inherited JvFooter1: TJvFooter + Width = 599 + ExplicitWidth = 599 + inherited bSeleccionar: TJvFooterBtn + Left = 387 + ExplicitLeft = 387 + end + inherited bCancelar: TJvFooterBtn + Left = 491 + ExplicitLeft = 491 + end + end + inherited BarraSeleccionActionList: TActionList + Top = 11 + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccion1actSeleccionarExecute + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccion1actCancelarExecute + end + end + end + object DBCtrlGrid1: TDBCtrlGrid + Left = 8 + Top = 66 + Width = 583 + Height = 263 + Margins.Left = 10 + Margins.Top = 10 + Margins.Right = 10 + Margins.Bottom = 0 + AllowDelete = False + AllowInsert = False + Color = clBtnFace + DataSource = dsDirecciones + PanelHeight = 87 + PanelWidth = 566 + ParentColor = False + TabOrder = 1 + SelectedColor = clHighlight + OnDblClick = DBCtrlGrid1DblClick + object eCalle: TDBText + Left = 48 + Top = 28 + Width = 512 + Height = 17 + DataField = 'CALLE' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object ePoblacion: TDBText + Left = 70 + Top = 47 + Width = 277 + Height = 17 + DataField = 'POBLACION' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object eTelefono: TDBText + Left = 423 + Top = 66 + Width = 137 + Height = 17 + DataField = 'TELEFONO' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object eProvincia: TDBText + Left = 423 + Top = 47 + Width = 137 + Height = 17 + DataField = 'PROVINCIA' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object ePersonaContacto: TDBText + Left = 124 + Top = 66 + Width = 284 + Height = 17 + DataField = 'PERSONA_CONTACTO' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object eNombre: TDBText + Left = 8 + Top = 7 + Width = 345 + Height = 17 + DataField = 'NOMBRE' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object eCodigoPostal: TDBText + Left = 353 + Top = 47 + Width = 64 + Height = 17 + DataField = 'CODIGO_POSTAL' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object Label1: TLabel + Left = 15 + Top = 28 + Width = 27 + Height = 13 + Caption = 'Calle:' + OnDblClick = ComponenteDblClick + end + object Label2: TLabel + Left = 15 + Top = 47 + Width = 49 + Height = 13 + Caption = 'Poblaci'#243'n:' + OnDblClick = ComponenteDblClick + end + object Label3: TLabel + Left = 447 + Top = 7 + Width = 30 + Height = 13 + Caption = 'Porte:' + OnDblClick = ComponenteDblClick + end + object ePorte: TDBText + Left = 483 + Top = 7 + Width = 70 + Height = 17 + DataField = 'PORTE' + DataSource = dsDirecciones + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + OnDblClick = ComponenteDblClick + end + object Label4: TLabel + Left = 15 + Top = 66 + Width = 103 + Height = 13 + Caption = 'Persona de contacto:' + OnDblClick = ComponenteDblClick + end + end + object dsDirecciones: TDADataSource + Left = 24 + Top = 286 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorElegirDireccionEntrega.pas b/Source/Modulos/Contactos/Views/uEditorElegirDireccionEntrega.pas new file mode 100644 index 00000000..f4020639 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorElegirDireccionEntrega.pas @@ -0,0 +1,112 @@ +unit uEditorElegirDireccionEntrega; + +interface + +uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, + Buttons, ExtCtrls, Mask, DBCtrls, DB, uDADataTable, + cxControls, cxContainer, cxEdit, cxTextEdit, cxDBEdit, + uIEditorElegirDireccionEntrega, uCustomView, + uViewBase, uViewBarraSeleccion, JvExControls, JvComponent, JvgWizardHeader, + DBCGrids, uBizDireccionesContacto; + +type + TfEditorElegirDireccionEntrega = class(TForm, IEditorElegirDireccionEntrega) + dsDirecciones: TDADataSource; + frViewBarraSeleccion1: TfrViewBarraSeleccion; + JvgWizardHeader1: TJvgWizardHeader; + DBCtrlGrid1: TDBCtrlGrid; + eCalle: TDBText; + ePoblacion: TDBText; + eTelefono: TDBText; + eProvincia: TDBText; + ePersonaContacto: TDBText; + eNombre: TDBText; + eCodigoPostal: TDBText; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + ePorte: TDBText; + Label4: TLabel; + procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); + procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject); + procedure DBCtrlGrid1DblClick(Sender: TObject); + procedure ComponenteDblClick(Sender: TObject); + + protected + FDirecciones: IBizDireccionesContacto; + function GetDireccion: IBizDireccionesContacto; + procedure SetDireccion(const Value: IBizDireccionesContacto); + + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + + function GetDireccionSeleccionada: IBizDireccionesContacto; + public + property Mensaje : String read GetMensaje write SetMensaje; + property Direccion: IBizDireccionesContacto read GetDireccion write SetDireccion; + property DireccionSeleccionada: IBizDireccionesContacto read GetDireccionSeleccionada; + + end; + +implementation +{$R *.dfm} + +uses + uDireccionesContactoController; + +{ TfEditorDireccionEntrega } + +procedure TfEditorElegirDireccionEntrega.DBCtrlGrid1DblClick(Sender: TObject); +begin + frViewBarraSeleccion1.actSeleccionar.Execute; +end; + +procedure TfEditorElegirDireccionEntrega.ComponenteDblClick(Sender: TObject); +begin + DBCtrlGrid1DblClick(Sender); +end; + +procedure TfEditorElegirDireccionEntrega.frViewBarraSeleccion1actCancelarExecute( + Sender: TObject); +begin + ModalResult := mrCancel; +end; + +procedure TfEditorElegirDireccionEntrega.frViewBarraSeleccion1actSeleccionarExecute( + Sender: TObject); +begin + ModalResult := mrOk; +end; + +function TfEditorElegirDireccionEntrega.GetDireccion: IBizDireccionesContacto; +begin + Result := FDirecciones; +end; + +function TfEditorElegirDireccionEntrega.GetDireccionSeleccionada: IBizDireccionesContacto; +begin + // Devuelvo el mismo objeto que recibo pero con el punto de lectura + // posicionado en la direccin elegida. + Result := FDirecciones; +end; + +function TfEditorElegirDireccionEntrega.GetMensaje: String; +begin + Result := JvgWizardHeader1.Comments.Text; +end; + +procedure TfEditorElegirDireccionEntrega.SetDireccion(const Value: IBizDireccionesContacto); +begin + FDirecciones := Value; + if Assigned(FDirecciones) then + dsDirecciones.DataTable := FDirecciones.DataTable + else + dsDirecciones.DataTable := NIL; +end; + +procedure TfEditorElegirDireccionEntrega.SetMensaje(const AValue: String); +begin + JvgWizardHeader1.Comments.Text := AValue; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm new file mode 100644 index 00000000..da38d0b6 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.dfm @@ -0,0 +1,290 @@ +inherited fEditorElegirProveedores: TfEditorElegirProveedores + Caption = 'Seleccionar el proveedor' + ClientHeight = 480 + ClientWidth = 656 + ExplicitWidth = 664 + ExplicitHeight = 514 + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader [0] + Left = 0 + Top = 27 + Width = 656 + Height = 60 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'Tahoma' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'Tahoma' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Seleccione el proveedor') + Comments.Strings = ( + ' ') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = False + Gradient.BufferedDraw = True + Gradient.Orientation = fgdVertical + BufferedDraw = True + ExplicitTop = -10 + end + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 656 + Visible = False + ExplicitLeft = 8 + ExplicitTop = -12 + ExplicitWidth = 656 + inherited Image1: TImage + Left = 629 + ExplicitLeft = 629 + end + end + inherited TBXDock: TTBXDock + Top = 87 + Width = 656 + Height = 49 + ExplicitWidth = 656 + ExplicitHeight = 49 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 117 + inherited TBXItem2: TTBXItem + Images = frViewProveedores1.PngImageList + end + inherited TBXItem36: TTBXItem + Action = actAnchoAuto2 + end + end + inherited tbxFiltro: TTBXToolbar + Left = 117 + Top = 23 + DockPos = 108 + DockRow = 1 + ExplicitLeft = 117 + ExplicitTop = 23 + inherited TBXItem34: TTBXItem + Action = actQuitarFiltro2 + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 656 + end + end + inherited StatusBar: TJvStatusBar + Top = 461 + Width = 656 + Visible = False + ExplicitLeft = 8 + ExplicitTop = 467 + ExplicitWidth = 656 + end + inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4] + Left = 0 + Top = 425 + Width = 656 + Height = 36 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 425 + ExplicitWidth = 656 + ExplicitHeight = 36 + inherited JvFooter1: TJvFooter + Width = 656 + Height = 36 + ExplicitWidth = 656 + ExplicitHeight = 36 + inherited bSeleccionar: TJvFooterBtn + Left = 444 + Top = 3 + ExplicitLeft = 444 + ExplicitTop = 3 + end + inherited bCancelar: TJvFooterBtn + Left = 548 + Top = 4 + ExplicitLeft = 548 + ExplicitTop = 4 + end + end + inherited BarraSeleccionActionList: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccion1actSeleccionarExecute + OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccion1actCancelarExecute + end + end + end + inherited frViewProveedores1: TfrViewProveedores [5] + Top = 136 + Width = 656 + Height = 289 + Padding.Left = 10 + Padding.Top = 10 + Padding.Right = 10 + Padding.Bottom = 5 + TabOrder = 4 + ExplicitTop = 136 + ExplicitWidth = 656 + ExplicitHeight = 289 + inherited cxGrid: TcxGrid + Left = 10 + Top = 10 + Width = 636 + Height = 274 + ExplicitLeft = 10 + ExplicitTop = 10 + ExplicitWidth = 636 + ExplicitHeight = 274 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 proveedores' + Kind = skCount + FieldName = 'ID' + Column = frViewProveedores1.cxGridViewNOMBRE + end> + OptionsView.Footer = False + end + end + inherited dsDataSource: TDADataSource + Left = 144 + Top = 56 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewProveedores1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + end + inherited EditorActionList: TActionList [6] + Left = 112 + Top = 192 + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actGuardarCerrar: TAction + Visible = False + end + inherited actGuardar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + inherited actConfPagina: TAction + Visible = False + end + inherited actDeshacer: TEditUndo + Visible = False + end + inherited actCortar: TEditCut + Visible = False + end + inherited actCerrar: TAction + Visible = False + end + inherited actCopiar: TEditCopy + Visible = False + end + inherited actPegar: TEditPaste + Visible = False + end + inherited actSeleccionarTodo: TEditSelectAll + Visible = False + end + inherited actLimpiar: TEditDelete + Visible = False + end + inherited actRefrescar: TAction + Visible = False + end + inherited actAcercaDe: TAction + Visible = False + end + inherited actBuscar: TAction + Visible = False + end + inherited actAnterior: TAction + Visible = False + end + inherited actSiguiente: TAction + Visible = False + end + inherited actCancelarCambios: TAction + Visible = False + end + inherited actDuplicar: TAction + Visible = False + end + end + inherited SmallImages: TPngImageList [7] + end + inherited LargeImages: TPngImageList [8] + end + inherited JvFormStorage: TJvFormStorage [9] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [10] + end + inherited dsDataTable: TDADataSource [11] + Left = 8 + Top = 192 + end + inherited StatusBarImages: TPngImageList [12] + end + inherited GridPopupMenu: TPopupMenu + Left = 80 + Top = 192 + end + object EditorSeleccionActionList: TActionList + Images = SmallImages + Left = 200 + Top = 192 + object actBuscar2: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actQuitarFiltro2: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltro2Execute + end + object actAnchoAuto2: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 21 + OnExecute = actAnchoAuto2Execute + end + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas new file mode 100644 index 00000000..53e3686e --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorElegirProveedores.pas @@ -0,0 +1,130 @@ +unit uEditorElegirProveedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorProveedores, DB, uDADataTable, Menus, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid, + uViewContactos, uViewProveedores, ComCtrls, TB2ExtItems, TBXExtItems, TBX, + TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uIEditorElegirProveedores, uViewBarraSeleccion, JvgWizardHeader, + StdCtrls, uBizContactos, TBXStatusBars, JvExComCtrls, JvStatusBar; + +type + TfEditorElegirProveedores = class(TfEditorProveedores, IEditorElegirProveedores) + frViewBarraSeleccion1: TfrViewBarraSeleccion; + JvgWizardHeader1: TJvgWizardHeader; + EditorSeleccionActionList: TActionList; + actBuscar2: TAction; + actQuitarFiltro2: TAction; + actAnchoAuto2: TAction; + procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject); + procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject); + procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actQuitarFiltro2Execute(Sender: TObject); + procedure actAnchoAuto2Execute(Sender: TObject); + protected + procedure SetMultiSelect (AValue : Boolean); + function GetMultiSelect : Boolean; + function GetContactosSeleccionados: IBizContacto; + procedure SetViewGrid(const Value: IViewGridBase); override; + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + public + property Mensaje : String read GetMensaje write SetMensaje; + property ContactosSeleccionados: IBizContacto read GetContactosSeleccionados; + property MultiSelect : Boolean read GetMultiSelect write SetMultiSelect; + end; + +implementation + +uses + uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uEditorContactos, + uGridUtils, uEditorBase, cxControls, uDBSelectionListUtils; + +{$R *.dfm} + +{ TfEditorElegirProveedores } + +procedure TfEditorElegirProveedores.actAnchoAuto2Execute(Sender: TObject); +begin + inherited; + actAnchoAuto.Execute; +end; + +procedure TfEditorElegirProveedores.actQuitarFiltro2Execute(Sender: TObject); +begin + inherited; + actQuitarFiltro.Execute; +end; + +procedure TfEditorElegirProveedores.FormShow(Sender: TObject); +begin + inherited; + EditorActionList.State := asSuspended; + frViewProveedores1.cxViewGridPopupMenu.PopupMenus.Items[0].HitTypes := []; +end; + +procedure TfEditorElegirProveedores.frViewBarraSeleccion1actCancelarExecute( + Sender: TObject); +begin + inherited; + Close; +end; + +procedure TfEditorElegirProveedores.frViewBarraSeleccion1actSeleccionarExecute( + Sender: TObject); +begin + inherited; + ModalResult := mrOk; +end; + +procedure TfEditorElegirProveedores.frViewBarraSeleccion1actSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) +end; + +function TfEditorElegirProveedores.GetContactosSeleccionados: IBizContacto; +begin + ShowHourglassCursor; + try + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + // En Contactos.SelectedRecords tengo los ID de las filas seleccionadas del grid + Result := Controller.ExtraerSeleccionados(Contactos); + finally + HideHourglassCursor; + end; +end; + +function TfEditorElegirProveedores.GetMensaje: String; +begin + Result := JvgWizardHeader1.Comments.Text; +end; + +function TfEditorElegirProveedores.GetMultiSelect: Boolean; +begin + Result := ViewGrid.MultiSelect; +end; + +procedure TfEditorElegirProveedores.SetMensaje(const AValue: String); +begin + JvgWizardHeader1.Comments.Text := AValue; +end; + +procedure TfEditorElegirProveedores.SetMultiSelect(AValue: Boolean); +begin + ViewGrid.MultiSelect := AValue; +end; + +procedure TfEditorElegirProveedores.SetViewGrid(const Value: IViewGridBase); +begin + inherited; + ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorEmpleado.dfm b/Source/Modulos/Contactos/Views/uEditorEmpleado.dfm new file mode 100644 index 00000000..7cf338e6 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEmpleado.dfm @@ -0,0 +1,976 @@ +inherited fEditorEmpleado: TfEditorEmpleado + Caption = 'fEditorEmpleado' + ClientHeight = 576 + ClientWidth = 676 + ExplicitWidth = 684 + ExplicitHeight = 610 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 676 + ExplicitWidth = 676 + inherited Image1: TImage + Left = 649 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000003E54944415478DADD955D6C14 + 5514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A64896501142 + B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F29840A4429 + 25D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D661FED0BB399 + 9C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E29106C00DB + 180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DAD6F82FBBDF + A8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170BCB5F4761C5 + DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C7E1CA4F702 + 2231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1F31969A5A9 + 0B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E19A96838107 + 0F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C5575FB9D80 + D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFFE05CC74D84 + 6B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140E7478DD086 + EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB81144108D68 + ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC5C00558E43 + 61FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765B473628037 + EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A5989E2CBB3 + DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015A50BF16973 + 0DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2318A8AD7B2 + 76E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A796D3C8F5C6 + E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC4C5BE4DDD5 + E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED22494CE89F0FE + 32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2042C5F9A87 + 1B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25F05B830F2B + D6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B63B035EC105 + 9A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD43471D13562DA8 + D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DDC2A659D535 + C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F0610289C8F + 6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F16C0CCD973 + 0D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7464BEAA39C + 5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638CC76689DFB + 23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730314BFE0CBC + 83B80000000049454E44AE426082} + ExplicitLeft = 645 + end + end + inherited TBXDock: TTBXDock + Width = 676 + ExplicitWidth = 676 + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 676 + end + end + inherited pgPaginas: TPageControl + Width = 676 + Height = 481 + ExplicitWidth = 676 + ExplicitHeight = 481 + inherited pagGeneral: TTabSheet + ExplicitWidth = 668 + ExplicitHeight = 453 + inline frViewEmpleado1: TfrViewEmpleado + Left = 0 + Top = 0 + Width = 668 + Height = 453 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 668 + ExplicitHeight = 453 + inherited dxLayoutControlContacto: TdxLayoutControl + Width = 668 + Height = 453 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 668 + ExplicitHeight = 453 + inherited PngSpeedButton1: TPngSpeedButton + Left = 623 + Top = 218 + ExplicitLeft = 623 + ExplicitTop = 218 + end + inherited PngSpeedButton2: TPngSpeedButton + Left = 623 + Top = 190 + ExplicitLeft = 623 + ExplicitTop = 190 + end + inherited PngSpeedButton3: TPngSpeedButton + Left = 623 + Top = 162 + ExplicitLeft = 623 + ExplicitTop = 162 + end + inherited eCalle: TcxDBTextEdit + Top = 189 + ExplicitTop = 189 + ExplicitWidth = 174 + Width = 174 + end + inherited eProvincia: TcxDBTextEdit + Top = 243 + ExplicitTop = 243 + ExplicitWidth = 174 + Width = 174 + end + inherited ePoblacion: TcxDBTextEdit + Top = 216 + ExplicitTop = 216 + ExplicitWidth = 108 + Width = 108 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 312 + Top = 216 + ExplicitLeft = 312 + ExplicitTop = 216 + end + inherited eObservaciones: TcxDBMemo + Top = 294 + ExplicitTop = 294 + ExplicitWidth = 185 + ExplicitHeight = 148 + Height = 148 + Width = 185 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 500 + Top = 57 + ExplicitLeft = 500 + ExplicitTop = 57 + ExplicitWidth = 172 + Width = 172 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 500 + Top = 30 + ExplicitLeft = 500 + ExplicitTop = 30 + ExplicitWidth = 172 + Width = 172 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 500 + Top = 84 + ExplicitLeft = 500 + ExplicitTop = 84 + ExplicitWidth = 172 + Width = 172 + end + inherited eFax: TcxDBTextEdit + Left = 500 + Top = 111 + ExplicitLeft = 500 + ExplicitTop = 111 + ExplicitWidth = 172 + Width = 172 + end + inherited eNombre: TcxDBTextEdit + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 263 + Width = 263 + end + inherited eFechaNacimiento: TcxDBDateEdit + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 80 + Width = 80 + end + inherited eFechaAltaEmpresa: TcxDBDateEdit + Left = 290 + Top = 84 + ExplicitLeft = 290 + ExplicitTop = 84 + ExplicitWidth = 80 + Width = 80 + end + inherited eNIFCIF: TcxDBTextEdit + Left = 219 + Top = 30 + ExplicitLeft = 219 + ExplicitTop = 30 + ExplicitWidth = 194 + Width = 194 + end + inherited eMailTrabajo: TcxDBHyperLinkEdit + Left = 500 + Top = 162 + Properties.Prefix = 'mailto:' + ExplicitLeft = 500 + ExplicitTop = 162 + ExplicitWidth = 129 + Width = 129 + end + inherited eMailParticular: TcxDBHyperLinkEdit + Left = 500 + Top = 190 + Properties.Prefix = 'mailto:' + ExplicitLeft = 500 + ExplicitTop = 190 + ExplicitWidth = 165 + Width = 165 + end + inherited cbCategoria: TcxDBComboBox + Top = 111 + ExplicitTop = 111 + ExplicitWidth = 225 + Width = 225 + end + inherited ePaginaWeb: TcxDBHyperLinkEdit + Left = 500 + Top = 217 + ExplicitLeft = 500 + ExplicitTop = 217 + ExplicitWidth = 165 + Width = 165 + end + inherited eReferencia: TcxDBTextEdit + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 97 + Width = 97 + end + inherited ePersonaContacto: TcxDBTextEdit + Top = 162 + ExplicitTop = 162 + ExplicitWidth = 256 + Width = 256 + end + end + inherited dsContacto: TDADataSource + Left = 8 + Top = 64 + end + end + end + inherited pagDatosBancarios: TTabSheet + ExplicitWidth = 668 + ExplicitHeight = 453 + inherited frViewClienteDatosBancarios: TfrViewClienteDatosBancarios + Width = 668 + Height = 453 + ExplicitWidth = 668 + ExplicitHeight = 453 + inherited dxLayoutControl1: TdxLayoutControl + Width = 668 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 668 + inherited eEntidad: TcxDBTextEdit + ExplicitWidth = 114 + Width = 114 + end + inherited eSucursal: TcxDBTextEdit + Left = 429 + ExplicitLeft = 429 + ExplicitWidth = 112 + Width = 112 + end + inherited eCuenta: TcxDBTextEdit + ExplicitWidth = 194 + Width = 194 + end + inherited eTitular: TcxDBTextEdit + ExplicitWidth = 194 + Width = 194 + end + end + end + end + object pagFormacion: TTabSheet + Caption = 'Formaci'#243'n' + ImageIndex = 2 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 668 + Height = 453 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + LookAndFeel = dxLayoutOfficeLookAndFeel + object eFormacionBasica: TcxDBMemo + Left = 22 + Top = 30 + DataBinding.DataField = 'FORMACION_BASE' + DataBinding.DataSource = frViewEmpleado1.dsContacto + Properties.ScrollBars = ssVertical + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Height = 89 + Width = 580 + end + object eFormacionComplementaria: TcxDBMemo + Left = 22 + Top = 176 + DataBinding.DataField = 'FORMACION_COMPLE' + DataBinding.DataSource = frViewEmpleado1.dsContacto + Properties.ScrollBars = ssVertical + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 1 + Height = 89 + Width = 580 + end + object eFormacionRecibida: TcxDBMemo + Left = 22 + Top = 322 + DataBinding.DataField = 'FORMACION_RECIBIDA' + DataBinding.DataSource = frViewEmpleado1.dsContacto + Properties.ScrollBars = ssVertical + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 + Height = 89 + Width = 580 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + Caption = 'Formaci'#243'n b'#225'sica' + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Formaci'#243'n basica' + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Control = eFormacionBasica + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group2: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Fomaci'#243'n complementaria' + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Control = eFormacionComplementaria + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group3: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Formaci'#243'n recibida' + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Control = eFormacionRecibida + ControlOptions.ShowBorder = False + end + end + end + end + end + object pagExperiencia: TTabSheet + Caption = 'Experiencia' + ImageIndex = 3 + object dxLayoutControl2: TdxLayoutControl + Left = 0 + Top = 0 + Width = 668 + Height = 453 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + LookAndFeel = dxLayoutOfficeLookAndFeel + object eExperiencia: TcxDBMemo + Left = 22 + Top = 30 + Align = alClient + DataBinding.DataField = 'EXPERIENCIA' + DataBinding.DataSource = frViewEmpleado1.dsContacto + Properties.ScrollBars = ssVertical + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Height = 89 + Width = 580 + end + object dxLayoutGroup1: TdxLayoutGroup + Caption = 'Formaci'#243'n b'#225'sica' + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutGroup3: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Experiencia (Acci'#243'n formativa / Fecha / Duraci'#243'n)' + object dxLayoutItem1: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Control = eExperiencia + ControlOptions.ShowBorder = False + end + end + end + end + end + end + inherited StatusBar: TJvStatusBar + Top = 557 + Width = 676 + ExplicitTop = 557 + ExplicitWidth = 676 + end + inherited EditorActionList: TActionList + object actGruposEmpleado: TAction + Category = 'Acciones' + Caption = 'Categorias de empleado' + ImageIndex = 21 + OnExecute = actGruposEmpleadoExecute + end + end + inherited SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001B24944415478DA9D52A16E1B41109D6366595810C90B0307069E59E0 + B29665A1E141B32E3474BF20070FAE1462B8259555D22D88643889A5C8F04C1A + 57AAB4797B4E9C334875CA48A3B9B9BB79F366DE14D433EB6DA27D4BB427AAAD + 2F68809DFC641B9358338518C94F3F02509BA4B5A6B802C02C0C03E8D36EE1AC + 15859520C157BC6F1163138BF70132ED0B7E01688F9E2B73942500FCFF00403B + 773E1410E90B4512A4EB9C41338BB894F701FA495995093BA4185054BF75559F + 9432A5719AB555238C18420D772DEC1460CA495D12893FA55D5E950E637E554A + 75B9ACC190DA6FBEF1D509005B4EAFCBEBD3365F8CA0F398993B85ECD462D161 + E7664E0D920A85892F995040B215922814D771B7582C5421F32AE59FDAA3946D + 27611773F72614D84137020A288FE1E68EC068823C7400E3BCB96DAE82FEE8B0 + CB113204B8591DF65496B66656D7F9390AA3819AC4A509459CD924C11FB8BE1C + D39111AC122AF8CA630AFD8B21B13563728BDF50427634223368076E2E3871DC + 47BECA100F4AEC3508C7FB41001500F2EC4A9D51F0DFBBE2AC94ACC330809BDB + BBE6E70FFAFCE7E92F6D1E1E69B3FD87156D9EB43E37CFDA01027CC229770400 + 00000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorEmpleado.pas b/Source/Modulos/Contactos/Views/uEditorEmpleado.pas new file mode 100644 index 00000000..b9fae393 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEmpleado.pas @@ -0,0 +1,103 @@ +unit uEditorEmpleado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContacto, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, DB, uDADataTable, ImgList, PngImageList, StdActns, ActnList, + ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvComponent, JvNavigationPane, uCustomView, uViewBase, uViewContacto, + uViewEmpleado, uBizContactos, + uIEditorEmpleado, pngimage, TBXStatusBars, JvExComCtrls, JvStatusBar, + uViewDetallesGenerico, uViewContactoDatosBancarios, dxLayoutLookAndFeels, + dxLayoutControl, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit, cxControls; + +type + TfEditorEmpleado = class(TfEditorContacto, IEditorEmpleado) + frViewEmpleado1: TfrViewEmpleado; + pagFormacion: TTabSheet; + pagExperiencia: TTabSheet; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + eFormacionBasica: TcxDBMemo; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Item2: TdxLayoutItem; + eFormacionComplementaria: TcxDBMemo; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Item3: TdxLayoutItem; + eFormacionRecibida: TcxDBMemo; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl2: TdxLayoutControl; + eExperiencia: TcxDBMemo; + dxLayoutGroup1: TdxLayoutGroup; + dxLayoutGroup3: TdxLayoutGroup; + dxLayoutItem1: TdxLayoutItem; + actGruposEmpleado: TAction; + procedure actGruposEmpleadoExecute(Sender: TObject); + protected + procedure EliminarInterno; override; + procedure SetContacto(const Value: IBizContacto); override; + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uEditorDBItem, uDialogUtils, uGruposEmpleadoController, uBizGruposEmpleado; + +{$R *.dfm} + +{ TfEditorEmpleado } + +procedure TfEditorEmpleado.actGruposEmpleadoExecute(Sender: TObject); +var + AGruposController : IGruposEmpleadoController; + AGrupos : IBizGrupoEmpleado; +begin + AGruposController := TGruposEmpleadoController.Create; + try + AGrupos := (AGruposController.BuscarTodos as IBizGrupoEmpleado); + AGruposController.VerTodos(AGrupos); + finally + AGrupos := NIL; + AGruposController := NIL; + end; +end; + +constructor TfEditorEmpleado.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := frViewEmpleado1; +end; + +procedure TfEditorEmpleado.EliminarInterno; +begin + if (ShowConfirmMessage('¿Desea borrar este empleado?', '') = IDYES) then + inherited; +end; + +procedure TfEditorEmpleado.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + if Assigned(Contacto) then + begin + if Contacto.EsNuevo then + FTitulo := 'Nuevo empleado' + else + FTitulo := 'Empleado'; + end; + + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorEmpleado.SetContacto(const Value: IBizContacto); +begin + inherited; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorEmpleados.dfm b/Source/Modulos/Contactos/Views/uEditorEmpleados.dfm new file mode 100644 index 00000000..0ecd12d8 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEmpleados.dfm @@ -0,0 +1,1122 @@ +inherited fEditorEmpleados: TfEditorEmpleados + Caption = 'fEditorEmpleados' + ExplicitWidth = 551 + ExplicitHeight = 478 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de empleados' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000003E54944415478DADD955D6C14 + 5514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A64896501142 + B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F29840A4429 + 25D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D661FED0BB399 + 9C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E29106C00DB + 180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DAD6F82FBBDF + A8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170BCB5F4761C5 + DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C7E1CA4F702 + 2231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1F31969A5A9 + 0B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E19A96838107 + 0F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C5575FB9D80 + D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFFE05CC74D84 + 6B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140E7478DD086 + EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB81144108D68 + ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC5C00558E43 + 61FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765B473628037 + EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A5989E2CBB3 + DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015A50BF16973 + 0DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2318A8AD7B2 + 76E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A796D3C8F5C6 + E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC4C5BE4DDD5 + E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED22494CE89F0FE + 32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2042C5F9A87 + 1B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25F05B830F2B + D6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B63B035EC105 + 9A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD43471D13562DA8 + D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DDC2A659D535 + C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F0610289C8F + 6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F16C0CCD973 + 0D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7464BEAA39C + 5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638CC76689DFB + 23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730314BFE0CBC + 83B80000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + ImageIndex = 0 + Images = frViewEmpleados1.PngImageList + end + end + end + inline frViewEmpleados1: TfrViewEmpleados [3] + Left = 0 + Top = 102 + Width = 543 + Height = 323 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 102 + ExplicitWidth = 543 + ExplicitHeight = 323 + inherited cxGrid: TcxGrid + Width = 543 + Height = 195 + ExplicitWidth = 543 + ExplicitHeight = 195 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 empleados' + Kind = skCount + FieldName = 'ID' + Column = frViewEmpleados1.cxGridViewNIF_CIF + end> + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 543 + ExplicitWidth = 543 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 543 + inherited dxLayoutControl1: TdxLayoutControl + Width = 543 + ExplicitWidth = 543 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 277 + ExplicitLeft = 277 + ExplicitWidth = 201 + Width = 201 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 543 + ExplicitWidth = 543 + inherited tbxBotones: TTBXToolbar + Width = 533 + ExplicitWidth = 533 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 297 + ExplicitTop = 297 + ExplicitWidth = 543 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 543 + ExplicitWidth = 543 + inherited TBXToolbar1: TTBXToolbar + Width = 533 + ExplicitWidth = 533 + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.791626689820000000 + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewEmpleados1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002444944415478DA + A5D25F4853711407F0EFFDB3CDEB9DE6367391418B98521ABEA4988619C508F6 + 30A9142A8C281B6188088DA850090A2A288408C47A721404816325E120514C61 + 8159F6070D7CB04599CB66CEFB77D7FBEBF61ABB3ED4F7F5C0E79CC339142104 + FF13EA6F405C5E1A9879DAD7303F3A00411090E61C283DD0800A5F335C1BDDD4 + BA80AA8853D3FD37E7F578349012252CAEAE624992911424541D0F62EFB1CECF + 2E9773AB29F07E344A120F2E835254A46405CB14015B988FE4C222922B32DA7B + 63F0945553A6C0506F17597AF1102A4D83D96087DB5B8C126F11523F7E2232F0 + 12FEE0555405CE9B03915B6D44FB350D6F9907CEBC5CF01C0D312DC042130C8F + 4C6173CD59EC6B6C3307C29DCDA4D0FA05B575E550041992B1BF6AACC3D2402C + F60A9E4321F89A5ACD81DB67EA09A439F803D5E02D399045058CD15D90D278F4 + 780C9547BB703878711D20D44C66C79FC357BF0B153B9DC8A819A87A06F1C904 + 26C667E1EFBE8BA623E7CC8189A1E1F677DDF77B1CBC0C6E4F0A8C434172CE18 + 2A5E004AE7B0BDAF237CB0B2EEA4293018BCD3E39AFCDA2E6969C8FB1790BF3B + 0369300FFC073708CDE263ADF57BCBBD1B9B4C8168E96952906B03A3D0203512 + F2CB09A8213BC46FC614D020ACA8F8D4EA45C7854B5456E049C92962CFB180A7 + 5810BB0EC606B0AB2C94CC1A044D03240AAFB7C8B83212CE0EF46F3B418A381E + 1CCBC04A33A0414137BE5159D3201A88A86A78B3C3866BCF7AB303D1FEC85822 + FE764649A55B605C40FF536268E88C01D9AC608A5D085D0F995FE15FF21B1558 + 1FF02CF09AE30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 224 + Top = 128 + Bitmap = {} + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited dsDataTable: TDADataSource [9] + end + inherited StatusBarImages: TPngImageList [10] + end + object JsPrevisualizarDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Previsualizar...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Previsualizar la ficha/s de emplado seleccionada/s' + Value = 100 + Default = True + end + item + Caption = 'Previsualizar la lista de empleados actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 296 + Top = 144 + end + object JsImprimirDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Imprimir...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Imprimir la ficha/s de empleado seleccionada/s' + Value = 100 + Default = True + end + item + Caption = 'Imprimir la lista de empleados actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 328 + Top = 144 + end + object JsListaContactosNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes empleados no han podido ser eliminados, porque ti' + + 'enen documentos asociados' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorEmpleados.dfm.bak b/Source/Modulos/Contactos/Views/uEditorEmpleados.dfm.bak new file mode 100644 index 00000000..292292d1 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEmpleados.dfm.bak @@ -0,0 +1,1122 @@ +inherited fEditorEmpleados: TfEditorEmpleados + Caption = 'fEditorEmpleados' + ExplicitWidth = 551 + ExplicitHeight = 478 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de empleados' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC000003E54944415478DADD955D6C14 + 5514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A64896501142 + B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F29840A4429 + 25D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D661FED0BB399 + 9C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E29106C00DB + 180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DAD6F82FBBDF + A8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170BCB5F4761C5 + DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C7E1CA4F702 + 2231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1F31969A5A9 + 0B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E19A96838107 + 0F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C5575FB9D80 + D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFFE05CC74D84 + 6B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140E7478DD086 + EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB81144108D68 + ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC5C00558E43 + 61FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765B473628037 + EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A5989E2CBB3 + DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015A50BF16973 + 0DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2318A8AD7B2 + 76E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A796D3C8F5C6 + E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC4C5BE4DDD5 + E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED22494CE89F0FE + 32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2042C5F9A87 + 1B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25F05B830F2B + D6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B63B035EC105 + 9A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD43471D13562DA8 + D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DDC2A659D535 + C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F0610289C8F + 6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F16C0CCD973 + 0D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7464BEAA39C + 5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638CC76689DFB + 23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730314BFE0CBC + 83B80000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + ImageIndex = 0 + Images = frViewEmpleados1.PngImageList + end + end + end + inline frViewEmpleados1: TfrViewEmpleados [3] + Left = 0 + Top = 102 + Width = 543 + Height = 323 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 102 + ExplicitWidth = 543 + ExplicitHeight = 323 + inherited cxGrid: TcxGrid + Width = 543 + Height = 195 + ExplicitWidth = 543 + ExplicitHeight = 195 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 empleados' + Kind = skCount + FieldName = 'ID' + Column = frViewEmpleados1.cxGridViewNIF_CIF + end> + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 543 + ExplicitWidth = 543 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 543 + inherited dxLayoutControl1: TdxLayoutControl + Width = 543 + ExplicitWidth = 543 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 277 + ExplicitLeft = 277 + ExplicitWidth = 201 + Width = 201 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 543 + ExplicitWidth = 543 + inherited tbxBotones: TTBXToolbar + Width = 533 + ExplicitWidth = 533 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 297 + ExplicitTop = 297 + ExplicitWidth = 543 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 543 + ExplicitWidth = 543 + inherited TBXToolbar1: TTBXToolbar + Width = 533 + ExplicitWidth = 533 + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.791626689820000000 + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewEmpleados1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002444944415478DA + A5D25F4853711407F0EFFDB3CDEB9DE6367391418B98521ABEA4988619C508F6 + 30A9142A8C281B6188088DA850090A2A288408C47A721404816325E120514C61 + 8159F6070D7CB04599CB66CEFB77D7FBEBF61ABB3ED4F7F5C0E79CC339142104 + FF13EA6F405C5E1A9879DAD7303F3A00411090E61C283DD0800A5F335C1BDDD4 + BA80AA8853D3FD37E7F578349012252CAEAE624992911424541D0F62EFB1CECF + 2E9773AB29F07E344A120F2E835254A46405CB14015B988FE4C222922B32DA7B + 63F0945553A6C0506F17597AF1102A4D83D96087DB5B8C126F11523F7E2232F0 + 12FEE0555405CE9B03915B6D44FB350D6F9907CEBC5CF01C0D312DC042130C8F + 4C6173CD59EC6B6C3307C29DCDA4D0FA05B575E550041992B1BF6AACC3D2402C + F60A9E4321F89A5ACD81DB67EA09A439F803D5E02D399045058CD15D90D278F4 + 780C9547BB703878711D20D44C66C79FC357BF0B153B9DC8A819A87A06F1C904 + 26C667E1EFBE8BA623E7CC8189A1E1F677DDF77B1CBC0C6E4F0A8C434172CE18 + 2A5E004AE7B0BDAF237CB0B2EEA4293018BCD3E39AFCDA2E6969C8FB1790BF3B + 0369300FFC073708CDE263ADF57BCBBD1B9B4C8168E96952906B03A3D0203512 + F2CB09A8213BC46FC614D020ACA8F8D4EA45C7854B5456E049C92962CFB180A7 + 5810BB0EC606B0AB2C94CC1A044D03240AAFB7C8B83212CE0EF46F3B418A381E + 1CCBC04A33A0414137BE5159D3201A88A86A78B3C3866BCF7AB303D1FEC85822 + FE764649A55B605C40FF536268E88C01D9AC608A5D085D0F995FE15FF21B1558 + 1FF02CF09AE30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 224 + Top = 128 + Bitmap = {} + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited dsDataTable: TDADataSource [9] + end + inherited StatusBarImages: TPngImageList [10] + end + object JsPrevisualizarDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Previsualizar...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Previsualizar la ficha/s de emplado seleccionada/s' + Value = 100 + Default = True + end + item + Caption = 'Previsualizar la lista de empleados actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 296 + Top = 144 + end + object JsImprimirDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Imprimir...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Imprimir la ficha/s de empleado seleccionada/s' + Value = 100 + Default = True + end + item + Caption = 'Imprimir la lista de empleados actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 328 + Top = 144 + end + object JsListaContactosNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes empleados no han podido ser eliminados, porque tienen' + + documentos asociados' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorEmpleados.pas b/Source/Modulos/Contactos/Views/uEditorEmpleados.pas new file mode 100644 index 00000000..18daf1b0 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEmpleados.pas @@ -0,0 +1,187 @@ +unit uEditorEmpleados; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContactos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, + JvExControls, JvComponent, JvNavigationPane, uViewGridBase, uViewGrid, + uViewContactos, uViewEmpleados, uIEditorEmpleados, pngimage, TBXStatusBars, + JvExComCtrls, JvStatusBar, JSDialog, uContactosController; + +type + TfEditorEmpleados = class(TfEditorContactos, IEditorEmpleados) + frViewEmpleados1: TfrViewEmpleados; + JsPrevisualizarDialog: TJSDialog; + JsImprimirDialog: TJSDialog; + JsListaContactosNoEliminados: TJSDialog; + + protected + procedure EliminarInterno; override; + procedure ImprimirInterno; override; + procedure PrevisualizarInterno; override; + + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uGridUtils, uEditorGridBase, uDataModuleUsuarios, uDialogUtils, uBizContactos, + uEmpleadosController, uDBSelectionListUtils; + +{$R *.dfm} + +constructor TfEditorEmpleados.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewEmpleados1; +end; + +procedure TfEditorEmpleados.EliminarInterno; +var + AContactos: IBizContacto; + AllItems: Boolean; +begin + AContactos := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('Desea borrar los empleados seleccionados?', 'Atencin', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AContactos := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizContacto; + end + end + else begin + if (Application.MessageBox('Desea borrar el empleado seleccionado?', 'Atencin', MB_YESNO) = IDYES) then + AContactos := Contactos; + end; + + if Assigned(AContactos) then + begin + (FController as IEmpleadosController).Eliminar(AContactos, AllItems); + if AllItems then + begin + if (AContactos.DataTable.RecordCount > 0) then + begin + with AContactos.DataTable do + begin + First; + while not EOF do + begin + JsListaContactosNoEliminados.Content.Add('Empleado: ' + AContactos.NOMBRE); + Next; + end; + end; + JsListaContactosNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; +end; + +procedure TfEditorEmpleados.ImprimirInterno; +var + Respuesta : Integer; + AFichas: IBizEmpleado; + AllItems: Boolean; +begin +{ + AFichas := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podr imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AFichas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizEmpleado; + end + else + AFichas := Facturas; + + if Assigned(AFichas) then + FController.Preview(AFichas, AllItems); + end; + end; + end; + end; +} +end; + +procedure TfEditorEmpleados.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := 'Lista de empleados - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorEmpleados.PrevisualizarInterno; +var + Respuesta : Integer; + AFichas: IBizEmpleado; + AllItems: Boolean; +begin + AFichas := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podr imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AFichas := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizEmpleado; + end + else + AFichas := (Contactos as IBizEmpleado); + + if Assigned(AFichas) then + (FController as IEmpleadosController).Preview(AFichas, AllItems); + end; + end; + end; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorEmpleados.pas.bak b/Source/Modulos/Contactos/Views/uEditorEmpleados.pas.bak new file mode 100644 index 00000000..cf28ed5b --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEmpleados.pas.bak @@ -0,0 +1,186 @@ +unit uEditorEmpleados; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContactos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, + JvExControls, JvComponent, JvNavigationPane, uViewGridBase, uViewGrid, + uViewContactos, uViewEmpleados, uIEditorEmpleados, pngimage, TBXStatusBars, + JvExComCtrls, JvStatusBar, JSDialog, uContactosController; + +type + TfEditorEmpleados = class(TfEditorContactos, IEditorEmpleados) + frViewEmpleados1: TfrViewEmpleados; + JsPrevisualizarDialog: TJSDialog; + JsImprimirDialog: TJSDialog; + + protected + procedure EliminarInterno; override; + procedure ImprimirInterno; override; + procedure PrevisualizarInterno; override; + + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uGridUtils, uEditorGridBase, uDataModuleUsuarios, uDialogUtils, uBizContactos, + uEmpleadosController, uDBSelectionListUtils; + +{$R *.dfm} + +constructor TfEditorEmpleados.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewEmpleados1; +end; + +procedure TfEditorEmpleados.EliminarInterno; +var + AContactos: IBizContacto; + AllItems: Boolean; +begin + AContactos := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('Desea borrar los empleados seleccionados?', 'Atencin', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AContactos := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizContacto; + end + end + else begin + if (Application.MessageBox('Desea borrar el empleado seleccionado?', 'Atencin', MB_YESNO) = IDYES) then + AContactos := Contactos; + end; + + if Assigned(AContactos) then + begin + FController.Eliminar(AContactos, AllItems); + if AllItems then + begin + if (AContactos.DataTable.RecordCount > 0) then + begin + with AContactos.DataTable do + begin + First; + while not EOF do + begin + JsListaContactosNoEliminados.Content.Add('Empleado: ' + AContactos.NOMBRE); + Next; + end; + end; + JsListaContactosNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; +end; + +procedure TfEditorEmpleados.ImprimirInterno; +var + Respuesta : Integer; + AFichas: IBizEmpleado; + AllItems: Boolean; +begin +{ + AFichas := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podr imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AFichas := (Controller as IFacturasClienteController).ExtraerSeleccionados(Facturas) as IBizEmpleado; + end + else + AFichas := Facturas; + + if Assigned(AFichas) then + FController.Preview(AFichas, AllItems); + end; + end; + end; + end; +} +end; + +procedure TfEditorEmpleados.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := 'Lista de empleados - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorEmpleados.PrevisualizarInterno; +var + Respuesta : Integer; + AFichas: IBizEmpleado; + AllItems: Boolean; +begin + AFichas := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podr imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AFichas := (Controller as IEmpleadosController).ExtraerSeleccionados(Contactos) as IBizEmpleado; + end + else + AFichas := (Contactos as IBizEmpleado); + + if Assigned(AFichas) then + (FController as IEmpleadosController).Preview(AFichas, AllItems); + end; + end; + end; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorEtiquetasContactosReport.dfm b/Source/Modulos/Contactos/Views/uEditorEtiquetasContactosReport.dfm new file mode 100644 index 00000000..30014cbe --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEtiquetasContactosReport.dfm @@ -0,0 +1,21 @@ +inherited fEditorEtiquetasContactosPreview: TfEditorEtiquetasContactosPreview + Caption = 'Previsualizar la factura' + ExplicitWidth = 803 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + ExplicitWidth = 795 + inherited Image1: TImage + Left = 768 + ExplicitLeft = 768 + end + end + inherited StatusBar: TJvStatusBar + ExplicitWidth = 795 + end + inherited frxReport1: TfrxReport + Datasets = <> + Variables = <> + Style = <> + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorEtiquetasContactosReport.pas b/Source/Modulos/Contactos/Views/uEditorEtiquetasContactosReport.pas new file mode 100644 index 00000000..79bbab27 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorEtiquetasContactosReport.pas @@ -0,0 +1,28 @@ +unit uEditorEtiquetasContactosReport; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPreview, frxExportImage, frxExportPDF, frxDCtrl, frxClass, + frxDMPExport, frxGradient, frxChBox, frxCross, frxRich, frxChart, frxOLE, + frxBarcode, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorEtiquetasContactosPreview, + JvExComCtrls, JvStatusBar; + +type + TfEditorEtiquetasContactosPreview = class(TfEditorPreview, IEditorEtiquetasContactosPreview) + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorFichasEmpleadoReport.dfm b/Source/Modulos/Contactos/Views/uEditorFichasEmpleadoReport.dfm new file mode 100644 index 00000000..8a69c09e --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorFichasEmpleadoReport.dfm @@ -0,0 +1,20 @@ +inherited fEditorFichasEmpleadoPreview: TfEditorFichasEmpleadoPreview + Caption = 'Previsualizar la factura' + ExplicitWidth = 803 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + ExplicitWidth = 795 + inherited Image1: TImage + Left = 768 + end + end + inherited StatusBar: TJvStatusBar + ExplicitWidth = 795 + end + inherited frxReport1: TfrxReport + Datasets = <> + Variables = <> + Style = <> + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorFichasEmpleadoReport.pas b/Source/Modulos/Contactos/Views/uEditorFichasEmpleadoReport.pas new file mode 100644 index 00000000..72095b63 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorFichasEmpleadoReport.pas @@ -0,0 +1,28 @@ +unit uEditorFichasEmpleadoReport; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPreview, frxExportImage, frxExportPDF, frxDCtrl, frxClass, + frxDMPExport, frxGradient, frxChBox, frxCross, frxRich, frxChart, frxOLE, + frxBarcode, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorFichasEmpleadoPreview, + JvExComCtrls, JvStatusBar; + +type + TfEditorFichasEmpleadoPreview = class(TfEditorPreview, IEditorFichasEmpleadoPreview) + private + { Private declarations } + public + { Public declarations } + end; + + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorGruposCliente.dfm b/Source/Modulos/Contactos/Views/uEditorGruposCliente.dfm new file mode 100644 index 00000000..9fc08089 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorGruposCliente.dfm @@ -0,0 +1,138 @@ +object fEditorGruposCliente: TfEditorGruposCliente + Left = 453 + Top = 234 + ActiveControl = ListaGruposCliente + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Administraci'#243'n de grupos de clientes' + ClientHeight = 499 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnClose = CustomEditorClose + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 226 + Top = 464 + Width = 75 + Height = 25 + Action = actAceptar + Default = True + TabOrder = 1 + end + object bCancelar: TButton + Left = 314 + Top = 464 + Width = 75 + Height = 25 + Action = actCancelar + Cancel = True + TabOrder = 2 + end + object PageControl1: TPageControl + Left = 8 + Top = 8 + Width = 390 + Height = 442 + ActivePage = TabSheet1 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Grupos de cliente' + object Label1: TLabel + Left = 10 + Top = 12 + Width = 121 + Height = 13 + Caption = 'Lista de grupos de cliente' + end + object ListaGruposCliente: TDBLookupListBox + Left = 8 + Top = 31 + Width = 281 + Height = 277 + KeyField = 'RecID' + ListField = 'DESCRIPCION' + ListSource = DADataSource + TabOrder = 0 + end + object bEliminar: TButton + Left = 304 + Top = 31 + Width = 75 + Height = 25 + Action = actEliminar + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 6 + Top = 318 + Width = 369 + Height = 84 + Caption = 'A'#241'adir un nuevo grupo de cliente' + TabOrder = 2 + object eCategoria: TLabel + Left = 18 + Top = 20 + Width = 87 + Height = 13 + Caption = 'Nombre del grupo:' + end + object bAnadir: TButton + Left = 282 + Top = 38 + Width = 75 + Height = 25 + Action = actAnadir + TabOrder = 1 + end + object editGrupoCliente: TEdit + Left = 18 + Top = 40 + Width = 255 + Height = 21 + TabOrder = 0 + end + end + end + end + object ActionList1: TActionList + Left = 144 + Top = 16 + object actAnadir: TAction + Caption = '&A'#241'adir' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = 'A&ceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + end + object DADataSource: TDADataSource + Left = 168 + Top = 16 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorGruposCliente.pas b/Source/Modulos/Contactos/Views/uEditorGruposCliente.pas new file mode 100644 index 00000000..602a9a42 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorGruposCliente.pas @@ -0,0 +1,179 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorGruposCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, StdCtrls, DBCtrls, uDADataTable, ActnList, + uIEditorGruposCliente, uCustomEditor, uGUIBase, ExtCtrls, + ComCtrls, uBizGruposCliente, uGruposClienteController; + +type + TfEditorGruposCliente = class(TCustomEditor, IEditorGruposCliente) + ActionList1: TActionList; + DADataSource: TDADataSource; + ListaGruposCliente: TDBLookupListBox; + editGrupoCliente: TEdit; + bAnadir: TButton; + actAnadir: TAction; + actEliminar: TAction; + bEliminar: TButton; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + GroupBox1: TGroupBox; + Label1: TLabel; + procedure FormShow(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + protected + FGruposCliente: IBizGrupoCliente; + FController: IGruposClienteController; + function GetGruposCliente: IBizGrupoCliente; + procedure SetGruposCliente(const Value: IBizGrupoCliente); + function GetController : IGruposClienteController; + procedure SetController (const Value : IGruposClienteController); + public + property GruposCliente: IBizGrupoCliente read GetGruposCliente write SetGruposCliente; + property Controller : IGruposClienteController read GetController write SetController; + end; + + +implementation +{$R *.dfm} + +{ TfEditorGruposCliente } + +uses + uDialogUtils; + + +function TfEditorGruposCliente.GetController: IGruposClienteController; +begin + Result := FController; +end; + +function TfEditorGruposCliente.GetGruposCliente: IBizGrupoCliente; +begin + Result := FGruposCliente; +end; + +procedure TfEditorGruposCliente.SetController(const Value: IGruposClienteController); +begin + FController := Value; +end; + +procedure TfEditorGruposCliente.SetGruposCliente(const Value: IBizGrupoCliente); +begin + FGruposCliente := Value; + DADataSource.DataTable := (FGruposCliente as IBizGrupoCliente).DataTable; + DADataSource.DataTable.Open; +end; + +procedure TfEditorGruposCliente.actAnadirExecute(Sender: TObject); +begin + if not FController.Localizar(GruposCliente, editGrupoCliente.Text) then + begin + GruposCliente.Append; + GruposCliente.DESCRIPCION := editGrupoCliente.Text; + GruposCliente.Post; + editGrupoCliente.Clear; + ListaGruposCliente.SetFocus; + end + else + ShowErrorMessage('Ya existe el grupo ' + editGrupoCliente.Text, + 'Ya existe el grupo de cliente ''' + editGrupoCliente.Text + ''' en la lista.'); +end; + +procedure TfEditorGruposCliente.actEliminarExecute(Sender: TObject); +begin + GruposCliente.Delete; + ListaGruposCliente.SetFocus; +end; + +procedure TfEditorGruposCliente.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (FGruposCliente.DataTable.RecordCount > 0) and + (Length(ListaGruposCliente.SelectedItem) > 0); + +end; + +procedure TfEditorGruposCliente.CustomEditorClose(Sender: TObject; var Action: TCloseAction); +begin + FGruposCliente := Nil; + FController := Nil; +end; + +procedure TfEditorGruposCliente.actAceptarExecute(Sender: TObject); +begin + try + GruposCliente.DataTable.ApplyUpdates; + except + on E : Exception do begin + GruposCliente.DataTable.CancelUpdates; + ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); + exit; + end; + end; + actCerrar.Execute; +end; + +procedure TfEditorGruposCliente.actCancelarExecute(Sender: TObject); +begin + GruposCliente.DataTable.CancelUpdates; + actCerrar.Execute; +end; + +procedure TfEditorGruposCliente.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorGruposCliente.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (Length(editGrupoCliente.Text) > 0) +end; + +procedure TfEditorGruposCliente.FormShow(Sender: TObject); +begin + if not FGruposCliente.DataTable.Active then + FGruposCliente.DataTable.Active := true; + + editGrupoCliente.SetFocus; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorGruposEmpleado.dfm b/Source/Modulos/Contactos/Views/uEditorGruposEmpleado.dfm new file mode 100644 index 00000000..2c7190b1 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorGruposEmpleado.dfm @@ -0,0 +1,138 @@ +object fEditorGruposEmpleado: TfEditorGruposEmpleado + Left = 453 + Top = 234 + ActiveControl = ListaGruposEmpleado + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Administraci'#243'n de categoras de empleados' + ClientHeight = 499 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnClose = CustomEditorClose + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 226 + Top = 464 + Width = 75 + Height = 25 + Action = actAceptar + Default = True + TabOrder = 1 + end + object bCancelar: TButton + Left = 314 + Top = 464 + Width = 75 + Height = 25 + Action = actCancelar + Cancel = True + TabOrder = 2 + end + object PageControl1: TPageControl + Left = 8 + Top = 8 + Width = 390 + Height = 442 + ActivePage = TabSheet1 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Categoras de empleado' + object Label1: TLabel + Left = 10 + Top = 12 + Width = 121 + Height = 13 + Caption = 'Lista de categoras de empleado' + end + object ListaGruposEmpleado: TDBLookupListBox + Left = 8 + Top = 31 + Width = 281 + Height = 277 + KeyField = 'RecID' + ListField = 'DESCRIPCION' + ListSource = DADataSource + TabOrder = 0 + end + object bEliminar: TButton + Left = 304 + Top = 31 + Width = 75 + Height = 25 + Action = actEliminar + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 6 + Top = 318 + Width = 369 + Height = 84 + Caption = 'A'#241'adir una nueva categoria de empleado' + TabOrder = 2 + object eCategoria: TLabel + Left = 18 + Top = 20 + Width = 87 + Height = 13 + Caption = 'Nombre del grupo:' + end + object bAnadir: TButton + Left = 282 + Top = 38 + Width = 75 + Height = 25 + Action = actAnadir + TabOrder = 1 + end + object editGrupoEmpleado: TEdit + Left = 18 + Top = 40 + Width = 255 + Height = 21 + TabOrder = 0 + end + end + end + end + object ActionList1: TActionList + Left = 144 + Top = 16 + object actAnadir: TAction + Caption = '&A'#241'adir' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = 'A&ceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + end + object DADataSource: TDADataSource + Left = 168 + Top = 16 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorGruposEmpleado.pas b/Source/Modulos/Contactos/Views/uEditorGruposEmpleado.pas new file mode 100644 index 00000000..4dc8ab9f --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorGruposEmpleado.pas @@ -0,0 +1,179 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorGruposEmpleado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, StdCtrls, DBCtrls, uDADataTable, ActnList, + uIEditorGruposEmpleado, uCustomEditor, uGUIBase, ExtCtrls, + ComCtrls, uBizGruposEmpleado, uGruposEmpleadoController; + +type + TfEditorGruposEmpleado = class(TCustomEditor, IEditorGruposEmpleado) + ActionList1: TActionList; + DADataSource: TDADataSource; + ListaGruposEmpleado: TDBLookupListBox; + editGrupoEmpleado: TEdit; + bAnadir: TButton; + actAnadir: TAction; + actEliminar: TAction; + bEliminar: TButton; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + GroupBox1: TGroupBox; + Label1: TLabel; + procedure FormShow(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + protected + FGruposEmpleado: IBizGrupoEmpleado; + FController: IGruposEmpleadoController; + function GetGruposEmpleado: IBizGrupoEmpleado; + procedure SetGruposEmpleado(const Value: IBizGrupoEmpleado); + function GetController : IGruposEmpleadoController; + procedure SetController (const Value : IGruposEmpleadoController); + public + property GruposEmpleado: IBizGrupoEmpleado read GetGruposEmpleado write SetGruposEmpleado; + property Controller : IGruposEmpleadoController read GetController write SetController; + end; + + +implementation +{$R *.dfm} + +{ TfEditorGruposEmpleado } + +uses + uDialogUtils; + + +function TfEditorGruposEmpleado.GetController: IGruposEmpleadoController; +begin + Result := FController; +end; + +function TfEditorGruposEmpleado.GetGruposEmpleado: IBizGrupoEmpleado; +begin + Result := FGruposEmpleado; +end; + +procedure TfEditorGruposEmpleado.SetController(const Value: IGruposEmpleadoController); +begin + FController := Value; +end; + +procedure TfEditorGruposEmpleado.SetGruposEmpleado(const Value: IBizGrupoEmpleado); +begin + FGruposEmpleado := Value; + DADataSource.DataTable := (FGruposEmpleado as IBizGrupoEmpleado).DataTable; + DADataSource.DataTable.Open; +end; + +procedure TfEditorGruposEmpleado.actAnadirExecute(Sender: TObject); +begin + if not FController.Localizar(GruposEmpleado, editGrupoEmpleado.Text) then + begin + GruposEmpleado.Append; + GruposEmpleado.DESCRIPCION := editGrupoEmpleado.Text; + GruposEmpleado.Post; + editGrupoEmpleado.Clear; + ListaGruposEmpleado.SetFocus; + end + else + ShowErrorMessage('Ya existe el grupo ' + editGrupoEmpleado.Text, + 'Ya existe la categora de empleado ''' + editGrupoEmpleado.Text + ''' en la lista.'); +end; + +procedure TfEditorGruposEmpleado.actEliminarExecute(Sender: TObject); +begin + GruposEmpleado.Delete; + ListaGruposEmpleado.SetFocus; +end; + +procedure TfEditorGruposEmpleado.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (FGruposEmpleado.DataTable.RecordCount > 0) and + (Length(ListaGruposEmpleado.SelectedItem) > 0); + +end; + +procedure TfEditorGruposEmpleado.CustomEditorClose(Sender: TObject; var Action: TCloseAction); +begin + FGruposEmpleado := Nil; + FController := Nil; +end; + +procedure TfEditorGruposEmpleado.actAceptarExecute(Sender: TObject); +begin + try + GruposEmpleado.DataTable.ApplyUpdates; + except + on E : Exception do begin + GruposEmpleado.DataTable.CancelUpdates; + ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); + exit; + end; + end; + actCerrar.Execute; +end; + +procedure TfEditorGruposEmpleado.actCancelarExecute(Sender: TObject); +begin + GruposEmpleado.DataTable.CancelUpdates; + actCerrar.Execute; +end; + +procedure TfEditorGruposEmpleado.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorGruposEmpleado.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (Length(editGrupoEmpleado.Text) > 0) +end; + +procedure TfEditorGruposEmpleado.FormShow(Sender: TObject); +begin + if not FGruposEmpleado.DataTable.Active then + FGruposEmpleado.DataTable.Active := true; + + editGrupoEmpleado.SetFocus; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorGruposProveedor.dfm b/Source/Modulos/Contactos/Views/uEditorGruposProveedor.dfm new file mode 100644 index 00000000..7e214332 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorGruposProveedor.dfm @@ -0,0 +1,138 @@ +object fEditorGruposProveedor: TfEditorGruposProveedor + Left = 453 + Top = 234 + ActiveControl = ListaGruposProveedor + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Administraci'#243'n de grupos de proveedores' + ClientHeight = 499 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnClose = CustomEditorClose + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 226 + Top = 464 + Width = 75 + Height = 25 + Action = actAceptar + Default = True + TabOrder = 1 + end + object bCancelar: TButton + Left = 314 + Top = 464 + Width = 75 + Height = 25 + Action = actCancelar + Cancel = True + TabOrder = 2 + end + object PageControl1: TPageControl + Left = 8 + Top = 8 + Width = 390 + Height = 442 + ActivePage = TabSheet1 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Grupos de proveedor' + object Label1: TLabel + Left = 10 + Top = 12 + Width = 121 + Height = 13 + Caption = 'Lista de grupos de proveedor' + end + object ListaGruposProveedor: TDBLookupListBox + Left = 8 + Top = 31 + Width = 281 + Height = 277 + KeyField = 'RecID' + ListField = 'DESCRIPCION' + ListSource = DADataSource + TabOrder = 0 + end + object bEliminar: TButton + Left = 304 + Top = 31 + Width = 75 + Height = 25 + Action = actEliminar + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 6 + Top = 318 + Width = 369 + Height = 84 + Caption = 'A'#241'adir un nuevo grupo de proveedor' + TabOrder = 2 + object eCategoria: TLabel + Left = 18 + Top = 20 + Width = 87 + Height = 13 + Caption = 'Nombre del grupo:' + end + object bAnadir: TButton + Left = 282 + Top = 38 + Width = 75 + Height = 25 + Action = actAnadir + TabOrder = 1 + end + object editGrupoProveedor: TEdit + Left = 18 + Top = 40 + Width = 255 + Height = 21 + TabOrder = 0 + end + end + end + end + object ActionList1: TActionList + Left = 144 + Top = 16 + object actAnadir: TAction + Caption = '&A'#241'adir' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = 'A&ceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + end + object DADataSource: TDADataSource + Left = 168 + Top = 16 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorGruposProveedor.pas b/Source/Modulos/Contactos/Views/uEditorGruposProveedor.pas new file mode 100644 index 00000000..721f840d --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorGruposProveedor.pas @@ -0,0 +1,179 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorGruposProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, StdCtrls, DBCtrls, uDADataTable, ActnList, + uIEditorGruposProveedor, uCustomEditor, uGUIBase, ExtCtrls, + ComCtrls, uBizGruposProveedor, uGruposProveedorController; + +type + TfEditorGruposProveedor = class(TCustomEditor, IEditorGruposProveedor) + ActionList1: TActionList; + DADataSource: TDADataSource; + ListaGruposProveedor: TDBLookupListBox; + editGrupoProveedor: TEdit; + bAnadir: TButton; + actAnadir: TAction; + actEliminar: TAction; + bEliminar: TButton; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + GroupBox1: TGroupBox; + Label1: TLabel; + procedure FormShow(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + protected + FGruposProveedor: IBizGrupoProveedor; + FController: IGruposProveedorController; + function GetGruposProveedor: IBizGrupoProveedor; + procedure SetGruposProveedor(const Value: IBizGrupoProveedor); + function GetController : IGruposProveedorController; + procedure SetController (const Value : IGruposProveedorController); + public + property GruposProveedor: IBizGrupoProveedor read GetGruposProveedor write SetGruposProveedor; + property Controller : IGruposProveedorController read GetController write SetController; + end; + + +implementation +{$R *.dfm} + +{ TfEditorGruposProveedor } + +uses + uDialogUtils; + + +function TfEditorGruposProveedor.GetController: IGruposProveedorController; +begin + Result := FController; +end; + +function TfEditorGruposProveedor.GetGruposProveedor: IBizGrupoProveedor; +begin + Result := FGruposProveedor; +end; + +procedure TfEditorGruposProveedor.SetController(const Value: IGruposProveedorController); +begin + FController := Value; +end; + +procedure TfEditorGruposProveedor.SetGruposProveedor(const Value: IBizGrupoProveedor); +begin + FGruposProveedor := Value; + DADataSource.DataTable := (FGruposProveedor as IBizGrupoProveedor).DataTable; + DADataSource.DataTable.Open; +end; + +procedure TfEditorGruposProveedor.actAnadirExecute(Sender: TObject); +begin + if not FController.Localizar(GruposProveedor, editGrupoProveedor.Text) then + begin + GruposProveedor.Append; + GruposProveedor.DESCRIPCION := editGrupoProveedor.Text; + GruposProveedor.Post; + editGrupoProveedor.Clear; + ListaGruposProveedor.SetFocus; + end + else + ShowErrorMessage('Ya existe el grupo ' + editGrupoProveedor.Text, + 'Ya existe el grupo de proveedor ''' + editGrupoProveedor.Text + ''' en la lista.'); +end; + +procedure TfEditorGruposProveedor.actEliminarExecute(Sender: TObject); +begin + GruposProveedor.Delete; + ListaGruposProveedor.SetFocus; +end; + +procedure TfEditorGruposProveedor.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (FGruposProveedor.DataTable.RecordCount > 0) and + (Length(ListaGruposProveedor.SelectedItem) > 0); + +end; + +procedure TfEditorGruposProveedor.CustomEditorClose(Sender: TObject; var Action: TCloseAction); +begin + FGruposProveedor := Nil; + FController := Nil; +end; + +procedure TfEditorGruposProveedor.actAceptarExecute(Sender: TObject); +begin + try + GruposProveedor.DataTable.ApplyUpdates; + except + on E : Exception do begin + GruposProveedor.DataTable.CancelUpdates; + ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); + exit; + end; + end; + actCerrar.Execute; +end; + +procedure TfEditorGruposProveedor.actCancelarExecute(Sender: TObject); +begin + GruposProveedor.DataTable.CancelUpdates; + actCerrar.Execute; +end; + +procedure TfEditorGruposProveedor.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorGruposProveedor.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (Length(editGrupoProveedor.Text) > 0) +end; + +procedure TfEditorGruposProveedor.FormShow(Sender: TObject); +begin + if not FGruposProveedor.DataTable.Active then + FGruposProveedor.DataTable.Active := true; + + editGrupoProveedor.SetFocus; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorProveedor.dfm b/Source/Modulos/Contactos/Views/uEditorProveedor.dfm new file mode 100644 index 00000000..bfc66ea5 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorProveedor.dfm @@ -0,0 +1,943 @@ +inherited fEditorProveedor: TfEditorProveedor + Caption = 'fEditorProveedor' + ClientHeight = 590 + ClientWidth = 648 + ExplicitWidth = 656 + ExplicitHeight = 624 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 648 + ExplicitWidth = 648 + inherited Image1: TImage + Left = 621 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000034D4944415478DADD957D6855 + 651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE56833057E2 + 0B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD958E063502 + 69D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8C08FE739E7 + 39E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF924601E262 + 74429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156AAD74C31D6 + CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5705358B68E + E2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2BC464999812 + 66F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9EBE72694C8 + 90288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816AFAEDD9509 + E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495ED6D291155 + 33D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A264225994C + D2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE589F0988062F + 11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC4EDBAA9ABD + CE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B1957DCBEB7A6 + 76FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1BA2AB2A74E + 1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0D716267859 + D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE7A281DB0A4 + 6032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC227E87799E4 + CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4004A9C298A + 785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23FB3F3EE9B8 + 824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999887D86E473 + 21FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77CFB1744051 + F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407E3E21819A2 + E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA75F70B5BD1D + 53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED232004BE73E31E6 + B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A98C836E180 + FF01702244FEF5B056BE0000000049454E44AE426082} + ExplicitLeft = 621 + end + end + inherited TBXDock: TTBXDock + Width = 648 + ExplicitWidth = 648 + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 648 + end + end + inherited pgPaginas: TPageControl + Width = 648 + Height = 495 + ExplicitWidth = 648 + ExplicitHeight = 495 + inherited pagGeneral: TTabSheet + ExplicitWidth = 640 + ExplicitHeight = 467 + inline frViewProveedor1: TfrViewProveedor + Left = 0 + Top = 0 + Width = 640 + Height = 467 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 640 + ExplicitHeight = 467 + inherited dxLayoutControlContacto: TdxLayoutControl + Width = 640 + Height = 467 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 640 + ExplicitHeight = 467 + inherited PngSpeedButton1: TPngSpeedButton + Left = 595 + Top = 218 + ExplicitLeft = 595 + ExplicitTop = 218 + end + inherited PngSpeedButton2: TPngSpeedButton + Left = 595 + Top = 190 + ExplicitLeft = 595 + ExplicitTop = 190 + end + inherited PngSpeedButton3: TPngSpeedButton + Left = 595 + Top = 162 + ExplicitLeft = 595 + ExplicitTop = 162 + end + inherited Label1: TLabel + Left = 391 + Top = 297 + Width = 342 + ExplicitLeft = 391 + ExplicitTop = 297 + ExplicitWidth = 342 + end + inherited eCalle: TcxDBTextEdit + Top = 294 + ExplicitTop = 294 + ExplicitWidth = 174 + Width = 174 + end + inherited eProvincia: TcxDBTextEdit + Top = 348 + ExplicitTop = 348 + ExplicitWidth = 174 + Width = 174 + end + inherited ePoblacion: TcxDBTextEdit + Top = 321 + ExplicitTop = 321 + ExplicitWidth = 108 + Width = 108 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 298 + Top = 321 + ExplicitLeft = 298 + ExplicitTop = 321 + end + inherited eObservaciones: TcxDBMemo + Top = 399 + ExplicitTop = 399 + ExplicitWidth = 580 + ExplicitHeight = 56 + Height = 56 + Width = 580 + end + inherited cxDBCheckBox1: TcxDBCheckBox + Left = 391 + Top = 270 + ExplicitLeft = 391 + ExplicitTop = 270 + ExplicitWidth = 310 + Width = 310 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 486 + Top = 57 + ExplicitLeft = 486 + ExplicitTop = 57 + ExplicitWidth = 172 + Width = 172 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 486 + Top = 30 + ExplicitLeft = 486 + ExplicitTop = 30 + ExplicitWidth = 172 + Width = 172 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 486 + Top = 84 + ExplicitLeft = 486 + ExplicitTop = 84 + ExplicitWidth = 172 + Width = 172 + end + inherited eFax: TcxDBTextEdit + Left = 486 + Top = 111 + ExplicitLeft = 486 + ExplicitTop = 111 + ExplicitWidth = 172 + Width = 172 + end + inherited eNombre: TcxDBTextEdit + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 263 + Width = 263 + end + inherited cxDBCheckBox2: TcxDBCheckBox + Top = 189 + ExplicitTop = 189 + ExplicitWidth = 326 + Width = 326 + end + inherited eCertificaciones: TcxDBTextEdit + Top = 216 + ExplicitTop = 216 + ExplicitWidth = 227 + Width = 227 + end + inherited cbGrupoProveedor: TcxDBComboBox + Top = 138 + ExplicitTop = 138 + ExplicitWidth = 227 + Width = 227 + end + inherited eNIFCIF: TcxDBTextEdit + Left = 210 + Top = 30 + ExplicitLeft = 210 + ExplicitTop = 30 + ExplicitWidth = 254 + Width = 254 + end + inherited eMailTrabajo: TcxDBHyperLinkEdit + Left = 486 + Top = 162 + Properties.Prefix = 'mailto:' + ExplicitLeft = 486 + ExplicitTop = 162 + ExplicitWidth = 129 + Width = 129 + end + inherited eMailParticular: TcxDBHyperLinkEdit + Left = 486 + Top = 190 + Properties.Prefix = 'mailto:' + ExplicitLeft = 486 + ExplicitTop = 190 + ExplicitWidth = 165 + Width = 165 + end + inherited eDescripcionProveedor: TcxDBTextEdit + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 221 + Width = 221 + end + inherited eCodigoAsignado: TcxDBTextEdit + Top = 111 + ExplicitTop = 111 + ExplicitWidth = 221 + Width = 221 + end + inherited ePaginaWeb: TcxDBHyperLinkEdit + Left = 486 + Top = 217 + ExplicitLeft = 486 + ExplicitTop = 217 + ExplicitWidth = 165 + Width = 165 + end + inherited eReferencia: TcxDBTextEdit + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 100 + Width = 100 + end + inherited ePersonaContacto: TcxDBTextEdit + Top = 267 + ExplicitTop = 267 + ExplicitWidth = 256 + Width = 256 + end + end + end + end + inherited pagDatosBancarios: TTabSheet + ExplicitWidth = 640 + ExplicitHeight = 467 + inherited frViewClienteDatosBancarios: TfrViewClienteDatosBancarios + Width = 640 + Height = 467 + ExplicitWidth = 640 + ExplicitHeight = 467 + inherited dxLayoutControl1: TdxLayoutControl + Width = 640 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 640 + inherited eEntidad: TcxDBTextEdit + ExplicitWidth = 114 + Width = 114 + end + inherited eSucursal: TcxDBTextEdit + Left = 325 + ExplicitLeft = 325 + ExplicitWidth = 270 + Width = 270 + end + inherited eCuenta: TcxDBTextEdit + ExplicitWidth = 242 + Width = 242 + end + inherited eTitular: TcxDBTextEdit + ExplicitWidth = 363 + Width = 363 + end + end + end + end + object pagDatosComerciales: TTabSheet + Caption = 'Datos comerciales' + ImageIndex = 2 + inline frViewProveedorDatosComerciales1: TfrViewProveedorDatosComerciales + Left = 0 + Top = 0 + Width = 640 + Height = 121 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 640 + ExplicitHeight = 121 + inherited dxLayoutControl1: TdxLayoutControl + Width = 640 + LookAndFeel = dxLayoutOfficeLookAndFeel + ExplicitWidth = 640 + inherited Label1: TLabel + Left = 416 + Top = 30 + Width = 190 + ExplicitLeft = 416 + ExplicitTop = 30 + ExplicitWidth = 190 + end + inherited cbRegimenIVA: TcxDBComboBox + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 121 + Width = 121 + end + inherited cbFormaPago: TcxDBLookupComboBox + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 121 + Width = 121 + end + inherited bFormasPago: TButton + Left = 256 + Top = 57 + ExplicitLeft = 256 + ExplicitTop = 57 + end + inherited eIVA: TcxDBLookupComboBox + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 121 + Width = 121 + end + inherited bTiposIVA: TButton + Left = 256 + Top = 84 + ExplicitLeft = 256 + ExplicitTop = 84 + end + inherited eDescuento: TcxDBSpinEdit + Left = 460 + Top = 62 + ExplicitLeft = 460 + ExplicitTop = 62 + ExplicitWidth = 73 + Width = 73 + end + end + end + end + object pagDirecciones: TTabSheet + Caption = 'Direcciones' + ImageIndex = 3 + inline frViewDireccionesEntrega1: TfrViewDireccionesEntrega + Left = 0 + Top = 0 + Width = 640 + Height = 467 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 640 + ExplicitHeight = 467 + inherited cxGrid: TcxGrid + Width = 640 + Height = 442 + ExplicitWidth = 640 + ExplicitHeight = 442 + end + inherited ToolBar1: TToolBar + Width = 640 + ExplicitWidth = 640 + inherited ToolButton1: TToolButton + ExplicitWidth = 62 + end + inherited ToolButton4: TToolButton + ExplicitWidth = 74 + end + inherited ToolButton2: TToolButton + ExplicitWidth = 67 + end + inherited ToolButton7: TToolButton + ExplicitWidth = 117 + end + end + end + end + end + inherited StatusBar: TJvStatusBar + Top = 571 + Width = 648 + ExplicitTop = 571 + ExplicitWidth = 648 + end + inherited EditorActionList: TActionList + Left = 32 + Top = 160 + object actGruposProveedor: TAction + Category = 'Acciones' + Caption = 'Grupos de proveedor' + ImageIndex = 21 + OnExecute = actGruposProveedorExecute + end + end + inherited SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001B24944415478DA9D52A16E1B41109D6366595810C90B0307069E59E0 + B29665A1E141B32E3474BF20070FAE1462B8259555D22D88643889A5C8F04C1A + 57AAB4797B4E9C334875CA48A3B9B9BB79F366DE14D433EB6DA27D4BB427AAAD + 2F68809DFC641B9358338518C94F3F02509BA4B5A6B802C02C0C03E8D36EE1AC + 15859520C157BC6F1163138BF70132ED0B7E01688F9E2B73942500FCFF00403B + 773E1410E90B4512A4EB9C41338BB894F701FA495995093BA4185054BF75559F + 9432A5719AB555238C18420D772DEC1460CA495D12893FA55D5E950E637E554A + 75B9ACC190DA6FBEF1D509005B4EAFCBEBD3365F8CA0F398993B85ECD462D161 + E7664E0D920A85892F995040B215922814D771B7582C5421F32AE59FDAA3946D + 27611773F72614D84137020A288FE1E68EC068823C7400E3BCB96DAE82FEE8B0 + CB113204B8591DF65496B66656D7F9390AA3819AC4A509459CD924C11FB8BE1C + D39111AC122AF8CA630AFD8B21B13563728BDF50427634223368076E2E3871DC + 47BECA100F4AEC3508C7FB41001500F2EC4A9D51F0DFBBE2AC94ACC330809BDB + BBE6E70FFAFCE7E92F6D1E1E69B3FD87156D9EB43E37CFDA01027CC229770400 + 00000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end> + Bitmap = {} + end + inherited dxLayoutLookAndFeel: TdxLayoutLookAndFeelList + Left = 280 + Top = 224 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorProveedor.pas b/Source/Modulos/Contactos/Views/uEditorProveedor.pas new file mode 100644 index 00000000..4b48ad21 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorProveedor.pas @@ -0,0 +1,101 @@ +unit uEditorProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContacto, uCustomView, uViewBase, uViewContacto, + uViewProveedor, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, DB, uDADataTable, ImgList, PngImageList, StdActns, ActnList, + ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvComponent, JvNavigationPane, + + uIEditorProveedor, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, + cxSpinEdit, cxDBEdit, pngimage, TBXStatusBars, JvExComCtrls, JvStatusBar, + dxLayoutLookAndFeels, uViewContactoDatosBancarios, uBizContactos, + uViewProveedorDatosComerciales, uViewDetallesGenerico, uViewDireccionesEntrega; + +type + TfEditorProveedor = class(TfEditorContacto, IEditorProveedor) + frViewProveedor1: TfrViewProveedor; + pagDatosComerciales: TTabSheet; + frViewProveedorDatosComerciales1: TfrViewProveedorDatosComerciales; + pagDirecciones: TTabSheet; + frViewDireccionesEntrega1: TfrViewDireccionesEntrega; + actGruposProveedor: TAction; + procedure actGruposProveedorExecute(Sender: TObject); + protected + procedure EliminarInterno; override; + procedure SetContacto(const Value: IBizContacto); override; + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +{$R *.dfm} + +{ TfEditorProveedor } + +uses + uDialogUtils, uGruposProveedorController, uBizGruposProveedor; + +procedure TfEditorProveedor.actGruposProveedorExecute(Sender: TObject); +var + AGruposController : IGruposProveedorController; + AGrupos : IBizGrupoProveedor; +begin + AGruposController := TGruposProveedorController.Create; + try + AGrupos := (AGruposController.BuscarTodos as IBizGrupoProveedor); + AGruposController.VerTodos(AGrupos); + finally + AGrupos := NIL; + AGruposController := NIL; + end; +end; + +constructor TfEditorProveedor.Create(AOwner: TComponent); +begin + inherited; + ViewContacto := frViewProveedor1; +end; + +procedure TfEditorProveedor.EliminarInterno; +begin + if (ShowConfirmMessage('Desea borrar este proveedor?', '') = IDYES) then + inherited; +end; + +procedure TfEditorProveedor.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + if Assigned(Contacto) then + begin + if Contacto.EsNuevo then + FTitulo := 'Nuevo proveedor' + else + FTitulo := 'Proveedor'; + end; + + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorProveedor.SetContacto(const Value: IBizContacto); +begin + inherited; + if Assigned(Contacto) then + begin + frViewDireccionesEntrega1.dsDetalles.DataTable := Contacto.Direcciones.DataTable; + frViewProveedorDatosComerciales1.Contacto := Contacto + end + else + begin + frViewProveedorDatosComerciales1.Contacto := NIL; + frViewDireccionesEntrega1.dsDetalles.DataTable := NIL; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uEditorProveedores.dfm b/Source/Modulos/Contactos/Views/uEditorProveedores.dfm new file mode 100644 index 00000000..334aa1ef --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorProveedores.dfm @@ -0,0 +1,1612 @@ +inherited fEditorProveedores: TfEditorProveedores + Caption = 'fEditorProveedores' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Lista de proveedores' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 520000000467414D410000AA11B57D14DC0000034D4944415478DADD957D6855 + 651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE56833057E2 + 0B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD958E063502 + 69D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8C08FE739E7 + 39E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF924601E262 + 74429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156AAD74C31D6 + CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5705358B68E + E2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2BC464999812 + 66F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9EBE72694C8 + 90288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816AFAEDD9509 + E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495ED6D291155 + 33D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A264225994C + D2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE589F0988062F + 11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC4EDBAA9ABD + CE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B1957DCBEB7A6 + 76FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1BA2AB2A74E + 1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0D716267859 + D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE7A281DB0A4 + 6032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC227E87799E4 + CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4004A9C298A + 785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23FB3F3EE9B8 + 824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999887D86E473 + 21FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77CFB1744051 + F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407E3E21819A2 + E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA75F70B5BD1D + 53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED232004BE73E31E6 + B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A98C836E180 + FF01702244FEF5B056BE0000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + inherited TBXItem2: TTBXItem + Images = SmallImages + end + end + end + inline frViewProveedores1: TfrViewProveedores [3] + Left = 0 + Top = 102 + Width = 543 + Height = 323 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 102 + ExplicitWidth = 543 + ExplicitHeight = 323 + inherited cxGrid: TcxGrid + Width = 543 + Height = 195 + ExplicitWidth = 543 + ExplicitHeight = 195 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 proveedores' + Kind = skCount + FieldName = 'NIF_CIF' + Column = frViewProveedores1.cxGridViewREFERENCIA + end> + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 543 + ExplicitWidth = 543 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 543 + inherited dxLayoutControl1: TdxLayoutControl + Width = 543 + ExplicitWidth = 543 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 460 + Width = 460 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 207 + Width = 207 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 323 + ExplicitLeft = 323 + ExplicitWidth = 201 + Width = 201 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 543 + ExplicitWidth = 543 + inherited tbxBotones: TTBXToolbar + Width = 533 + ExplicitWidth = 533 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 297 + ExplicitTop = 297 + ExplicitWidth = 543 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 543 + ExplicitWidth = 543 + inherited TBXToolbar1: TTBXToolbar + Width = 533 + ExplicitWidth = 533 + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.792703807870000000 + BuiltInReportLink = True + end + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewProveedores1.cxGridView + HitTypes = [gvhtCell] + Index = 0 + end> + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + Left = 228 + Top = 128 + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + ImageIndex = 22 + end + end + inherited SmallImages: TPngImageList [5] + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FA4944415478DA + A5934B6813511486BF342610A2C50A86A220150BA2145C58D120828ABA2AD2BA + F0B510C48D1B1154A828A55D5877825474AB45375D58A80B9385292DA8A8B151 + 6B6D8DB50F43C1B4C624364C1E73E7E19DA96408B50BCDC0E5CC65E6FFFE7FCE + DCE3324D936A2E577FE46355041BD076B0C9DE280B23E412E3F6FD9A4DDBF107 + 76965F3464524D33109A8E2A7459350E1FBFEC002CF1FCEB1EF28B82F98534C9 + 5C9203A7EFB2A1712F9A6E70A557AD706EA88970FFD1C012E0E8BECDCC3EEF22 + 33338DAECBA7A64E36FB8B5431C389EBB12557B93461D8CED6FE71F8A5036809 + AE271EBA0879177E9F0FB704284A9ED8B7498EB5476D71671F2B276809D63337 + D481B75892EEC86F5429140A7CD7D6D17CEA4E85B3D5070B181A8A3A00AB07C9 + B70F512643567E8410E4F22A46432B8D7B4E2E130BD9C4672F629580A9D02B86 + E76EB0CDF0CA0425A205D8B5F11C5B8F1C5A26B6D6F09B0F0E2058AB11B97495 + D44F95FAB34D881A831F0F26989A9EA0FDEB275B7CEDD6938A1EECDE117000FE + 701FF1A703D4153D28AB6B71E3C2A72C92F6A8C413292E8CBD2F3B8B3F67213A + 3AEE000AB7BB49CC8E11D03CAC92BFDB251D4A5E93B45B90984973FEDD08DDF7 + C22B27889D69239355FE7A54EBD6FA690D0FDAAEBA61DAD59075F4F31707B0BF + 790BBDFD83FF3C076540D7CD9EFF1FA66AC7F93783B161288AF0DFC000000000 + 49454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited dsDataTable: TDADataSource [9] + end + inherited StatusBarImages: TPngImageList [10] + end + object JsPrevisualizarDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Previsualizar...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Previsualizar las etiquetas de los proveedores seleccionados' + Value = 100 + Default = True + end + item + Caption = 'Previsualizar la lista de proveedores actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 296 + Top = 144 + end + object JsImprimirDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Imprimir...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Imprimir las etiquetas de los proveedores seleccionados' + Value = 100 + Default = True + end + item + Caption = 'Imprimir la lista de proveedores actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 328 + Top = 144 + end + object JsListaContactosNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes clientes no han podido ser eliminados, porque tie' + + 'nen documentos asociados' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end +end diff --git a/Source/Modulos/Contactos/Views/uEditorProveedores.pas b/Source/Modulos/Contactos/Views/uEditorProveedores.pas new file mode 100644 index 00000000..6a146a33 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uEditorProveedores.pas @@ -0,0 +1,186 @@ +unit uEditorProveedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorContactos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, + JvExControls, JvComponent, JvNavigationPane, + + uIEditorProveedores, uViewGridBase, uViewGrid, uViewContactos, uViewProveedores, + pngimage, TBXStatusBars, JvExComCtrls, JvStatusBar, JSDialog; + +type + TfEditorProveedores = class(TfEditorContactos, IEditorProveedores) + frViewProveedores1: TfrViewProveedores; + JsPrevisualizarDialog: TJSDialog; + JsImprimirDialog: TJSDialog; + JsListaContactosNoEliminados: TJSDialog; + protected + procedure ImprimirInterno; override; + procedure PrevisualizarInterno; override; + procedure EliminarInterno; override; + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + end; + +implementation + +uses + uGridUtils, uEditorGridBase, uDataModuleUsuarios, uDialogUtils, uBizContactos, + uDBSelectionListUtils, uProveedoresController; + +{$R *.dfm} + +{ TfEditorProveedores } + +constructor TfEditorProveedores.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewProveedores1; +end; + +procedure TfEditorProveedores.EliminarInterno; +var + AContactos: IBizContacto; + AllItems: Boolean; +begin + AContactos := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('Desea borrar los proveedores seleccionados?', 'Atencin', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AContactos := (Controller as IProveedoresController).ExtraerSeleccionados(Contactos) as IBizContacto; + end + end + else begin + if (Application.MessageBox('Desea borrar el proveedor seleccionado?', 'Atencin', MB_YESNO) = IDYES) then + AContactos := Contactos; + end; + + if Assigned(AContactos) then + begin + (FController as IProveedoresController).Eliminar(AContactos, AllItems); + if AllItems then + begin + if (AContactos.DataTable.RecordCount > 0) then + begin + with AContactos.DataTable do + begin + First; + while not EOF do + begin + JsListaContactosNoEliminados.Content.Add('Cliente: ' + AContactos.NOMBRE); + Next; + end; + end; + JsListaContactosNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; +end; + +procedure TfEditorProveedores.ImprimirInterno; +var + Respuesta : Integer; + AProveedores: IBizProveedor; + AllItems: Boolean; +begin + AProveedores := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podr imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsImprimirDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsImprimirDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AProveedores := (Controller as IProveedoresController).ExtraerSeleccionados(Contactos) as IBizProveedor; + end + else + AProveedores := (Contactos as IBizProveedor); + + if Assigned(AProveedores) then + (FController as IProveedoresController).Print(AProveedores, AllItems); + end; + end; + end; + end; +end; + +procedure TfEditorProveedores.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := 'Lista de proveedores - ' + dmUsuarios.EmpresaActual.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorProveedores.PrevisualizarInterno; +var + Respuesta : Integer; + AProveedores: IBizProveedor; + AllItems: Boolean; +begin + AProveedores := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podr imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Contactos as ISeleccionable).SelectedRecords); + AProveedores := (Controller as IProveedoresController).ExtraerSeleccionados(Contactos) as IBizProveedor; + end + else + AProveedores := (Contactos as IBizProveedor); + + if Assigned(AProveedores) then + (FController as IProveedoresController).Preview(AProveedores, AllItems); + end; + end; + end; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewCategorias.dfm b/Source/Modulos/Contactos/Views/uViewCategorias.dfm new file mode 100644 index 00000000..ac5389ce --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewCategorias.dfm @@ -0,0 +1,21 @@ +inherited frViewCategorias: TfrViewCategorias + Width = 256 + ExplicitWidth = 256 + object DBGrid1: TDBGrid + Left = 8 + Top = 8 + Width = 241 + Height = 121 + DataSource = DADataSource + TabOrder = 0 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'Tahoma' + TitleFont.Style = [] + end + object DADataSource: TDADataSource + Left = 8 + Top = 136 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewCategorias.pas b/Source/Modulos/Contactos/Views/uViewCategorias.pas new file mode 100644 index 00000000..d71838a1 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewCategorias.pas @@ -0,0 +1,30 @@ +unit uViewCategorias; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, DBCtrls, DB, uDADataTable, Grids, DBGrids, + JvComponent, JvFormAutoSize; + +type + TfrViewCategorias = class(TfrViewBase) + DADataSource: TDADataSource; + DBGrid1: TDBGrid; + end; + +var + frViewCategorias: TfrViewCategorias; + +implementation + +{$R *.dfm} + +initialization + RegisterClass(TfrViewCategorias); + +finalization + + UnRegisterClass(TfrViewCategorias); + +end. diff --git a/Source/Modulos/Contactos/Views/uViewCliente.dfm b/Source/Modulos/Contactos/Views/uViewCliente.dfm new file mode 100644 index 00000000..94a80ead --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewCliente.dfm @@ -0,0 +1,350 @@ +inherited frViewCliente: TfrViewCliente + Width = 646 + Height = 470 + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitWidth = 646 + ExplicitHeight = 470 + inherited dxLayoutControlContacto: TdxLayoutControl + Width = 646 + Height = 470 + ExplicitWidth = 646 + ExplicitHeight = 470 + inherited PngSpeedButton1: TPngSpeedButton + Left = 601 + ExplicitLeft = 601 + end + inherited PngSpeedButton2: TPngSpeedButton + Left = 601 + ExplicitLeft = 601 + end + inherited PngSpeedButton3: TPngSpeedButton + Left = 601 + ExplicitLeft = 601 + end + object Label1: TLabel [3] + Left = 378 + Top = 280 + Width = 269 + Height = 39 + Margins.Bottom = 0 + Caption = + 'Para que el cliente pueda tener acceso a la tienda web, obligato' + + 'riamente debe tener indicado un correo electr'#243'nico de trabajo' + WordWrap = True + end + inherited eCalle: TcxDBTextEdit + Left = 121 + Top = 284 + TabOrder = 8 + ExplicitLeft = 121 + ExplicitTop = 284 + ExplicitWidth = 175 + Width = 175 + end + inherited eProvincia: TcxDBTextEdit + Left = 121 + Top = 338 + TabOrder = 11 + ExplicitLeft = 121 + ExplicitTop = 338 + ExplicitWidth = 167 + Width = 167 + end + inherited ePoblacion: TcxDBTextEdit + Left = 121 + Top = 311 + TabOrder = 9 + ExplicitLeft = 121 + ExplicitTop = 311 + ExplicitWidth = 71 + Width = 71 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 283 + Top = 311 + TabOrder = 10 + ExplicitLeft = 283 + ExplicitTop = 311 + end + inherited eObservaciones: TcxDBMemo + Top = 395 + TabOrder = 20 + ExplicitTop = 395 + ExplicitWidth = 609 + ExplicitHeight = 42 + Height = 42 + Width = 609 + end + object eNombreComercial: TcxDBTextEdit [9] + Left = 121 + Top = 82 + DataBinding.DataField = 'NOMBRE_COMERCIAL' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clWindow + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 3 + Width = 143 + end + object cbClienteBloqueado: TcxDBCheckBox [10] + Left = 22 + Top = 173 + Action = actBloqueoCliente + DataBinding.DataField = 'BLOQUEADO' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 5 + Width = 163 + end + object cbGrupoCliente: TcxDBComboBox [11] + Left = 121 + Top = 109 + DataBinding.DataField = 'GRUPO_CLIENTE' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.OnInitPopup = cbGrupoClientePropertiesInitPopup + Properties.OnValidate = cbGrupoClientePropertiesValidate + 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 = 4 + Width = 87 + end + object eBloqueo: TcxDBTextEdit [12] + Left = 121 + Top = 200 + DataBinding.DataField = 'MOTIVO_BLOQUEO' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 6 + Width = 113 + end + object cxDBCheckBox1: TcxDBCheckBox [13] + Left = 378 + Top = 325 + Caption = 'Permitir el acceso de este cliente a la tienda web' + DataBinding.DataField = 'TIENDA_WEB' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.MultiLine = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 19 + Width = 249 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 473 + TabOrder = 13 + ExplicitLeft = 473 + ExplicitWidth = 157 + Width = 157 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 473 + TabOrder = 12 + ExplicitLeft = 473 + ExplicitWidth = 157 + Width = 157 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 473 + TabOrder = 14 + ExplicitLeft = 473 + ExplicitWidth = 157 + Width = 157 + end + inherited eFax: TcxDBTextEdit + Left = 473 + TabOrder = 15 + ExplicitLeft = 473 + ExplicitWidth = 157 + Width = 157 + end + inherited eNombre: TcxDBTextEdit + Left = 121 + ExplicitLeft = 121 + ExplicitWidth = 135 + Width = 135 + end + inherited eNIFCIF: TcxDBTextEdit + Left = 256 + ExplicitLeft = 256 + ExplicitWidth = 58 + Width = 58 + end + inherited eMailTrabajo: TcxDBHyperLinkEdit + Left = 473 + Properties.Prefix = 'mailto:' + TabOrder = 16 + ExplicitLeft = 473 + ExplicitWidth = 128 + Width = 128 + end + inherited eMailParticular: TcxDBHyperLinkEdit + Left = 473 + Properties.Prefix = 'mailto:' + TabOrder = 17 + ExplicitLeft = 473 + ExplicitWidth = 128 + Width = 128 + end + inherited ePaginaWeb: TcxDBHyperLinkEdit + Left = 473 + TabOrder = 18 + ExplicitLeft = 473 + ExplicitWidth = 128 + Width = 128 + end + inherited eReferencia: TcxDBTextEdit + Left = 121 + ExplicitLeft = 121 + end + inherited ePersonaContacto: TcxDBTextEdit + Left = 121 + Top = 257 + TabOrder = 7 + ExplicitLeft = 121 + ExplicitTop = 257 + end + inherited dxLayoutControlContactoGroup_Root: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avBottom + inherited dxLayoutControlContactoGroup9: TdxLayoutGroup + inherited dxLayoutControlContactoGroup4: TdxLayoutGroup + inherited dxLayoutControlContactoGroup1: TdxLayoutGroup + object dxLayoutControlContactoItem24: TdxLayoutItem + Caption = 'Nombre comercial:' + Control = eNombreComercial + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem19: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Grupo de cliente:' + Control = cbGrupoCliente + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoGroup18: TdxLayoutGroup [1] + Caption = 'Bloqueo' + object dxLayoutControlContactoItem26: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = ' ' + ShowCaption = False + Control = cbClienteBloqueado + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem16: TdxLayoutItem + Caption = 'Motivo del bloqueo:' + Control = eBloqueo + ControlOptions.ShowBorder = False + end + end + inherited dxLayoutControlContactoGroup3: TdxLayoutGroup + Caption = 'Domicilio fiscal' + end + end + inherited dxLayoutControlContactoGroup6: TdxLayoutGroup + object dxLayoutControlContactoGroup10: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Acceso a la tienda web' + Visible = False + object dxLayoutControlContactoItem21: TdxLayoutItem + ShowCaption = False + Control = Label1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem20: TdxLayoutItem + ShowCaption = False + Control = cxDBCheckBox1 + ControlOptions.ShowBorder = False + end + end + end + end + inherited dxLayoutControlContactoGroup7: TdxLayoutGroup + inherited dxLayoutControlContactoItem8: TdxLayoutItem + ControlOptions.MinHeight = 10 + end + end + end + end + inherited dsContacto: TDADataSource + Top = 144 + end + inherited ActionList1: TActionList + inherited actMandarCorreoParticular: TAction + Category = 'Correos' + end + inherited actMandarCorreoTrabajo: TAction + Category = 'Correos' + end + inherited actVerPaginaWeb: TAction + Category = 'Web' + end + object actBloqueoCliente: TAction + Category = 'Bloqueo' + Caption = 'Este cliente est'#225' bloqueado' + OnExecute = actBloqueoClienteExecute + end + end +end diff --git a/Source/Modulos/Contactos/Views/uViewCliente.pas b/Source/Modulos/Contactos/Views/uViewCliente.pas new file mode 100644 index 00000000..944a2f49 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewCliente.pas @@ -0,0 +1,124 @@ +unit uViewCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, DB, uDADataTable, DBCtrls, + StdCtrls, Mask, ExtCtrls, uCustomView, + uViewBase, JvComponent, JvFormAutoSize, cxControls, uBizContactos, + cxContainer, cxEdit, cxTextEdit, cxDBEdit, dxLayoutLookAndFeels, + dxLayoutControl, cxMemo, cxHyperLinkEdit, ImgList, ActnList, Buttons, + PngSpeedButton, PngImageList, cxGraphics, cxMaskEdit, cxDropDownEdit, + cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uGruposClienteController, + cxCheckBox, cxSpinEdit, Grids, DBGrids; + +type + IViewCliente = interface(IViewContacto) + ['{C06F4653-1745-4B7E-A3DC-102B2F23238E}'] + end; + + TfrViewCliente = class(TfrViewContacto, IViewCliente) + dxLayoutControlContactoItem24: TdxLayoutItem; + eNombreComercial: TcxDBTextEdit; + dxLayoutControlContactoItem26: TdxLayoutItem; + cbClienteBloqueado: TcxDBCheckBox; + dxLayoutControlContactoGroup18: TdxLayoutGroup; + dxLayoutControlContactoItem19: TdxLayoutItem; + cbGrupoCliente: TcxDBComboBox; + dxLayoutControlContactoItem16: TdxLayoutItem; + eBloqueo: TcxDBTextEdit; + actBloqueoCliente: TAction; + dxLayoutControlContactoGroup10: TdxLayoutGroup; + dxLayoutControlContactoItem20: TdxLayoutItem; + cxDBCheckBox1: TcxDBCheckBox; + dxLayoutControlContactoItem21: TdxLayoutItem; + Label1: TLabel; + procedure cbGrupoClientePropertiesInitPopup(Sender: TObject); + procedure cbGrupoClientePropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure actBloqueoClienteExecute(Sender: TObject); + protected + FGrupoController: IGruposClienteController; + procedure SetContacto(const Value: IBizContacto); override; + end; + +implementation + +{$R *.dfm} + +uses + uBizGruposCliente; + +{ TfrViewCliente } + +procedure TfrViewCliente.actBloqueoClienteExecute(Sender: TObject); +begin + inherited; + eBloqueo.Enabled := cbClienteBloqueado.Checked; +end; + +procedure TfrViewCliente.cbGrupoClientePropertiesInitPopup(Sender: TObject); +begin + inherited; + with cbGrupoCliente.Properties.Items do + begin + BeginUpdate; + try + Clear; + AddStrings(FGrupoController.DarListaGruposCliente); + finally + EndUpdate; + end; + end; +end; + +procedure TfrViewCliente.cbGrupoClientePropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +var + AGrupo : IBizGrupoCliente; +begin + inherited; + with (Sender as TcxDBComboBox) do + begin + if (Length(DisplayValue) > 0) and (DisplayValue <> (Contacto as IBizCliente).GRUPO_CLIENTE) then + if Properties.LookupItems.IndexOf(DisplayValue) < 0 then + begin + Properties.LookupItems.BeginUpdate; + AGrupo := FGrupoController.BuscarTodos; + AGrupo.DataTable.Active := True; + try + FGrupoController.Anadir(AGrupo); + AGrupo.DESCRIPCION := DisplayValue; + FGrupoController.Guardar(AGrupo); + Properties.LookupItems.Add(DisplayValue); + finally + Properties.LookupItems.EndUpdate; + AGrupo := NIL; + end; + end; + end; +end; + +procedure TfrViewCliente.CustomViewCreate(Sender: TObject); +begin + inherited; + FGrupoController := TGruposClienteController.Create; +end; + +procedure TfrViewCliente.CustomViewDestroy(Sender: TObject); +begin + FGrupoController := NIL; + inherited; +end; + +procedure TfrViewCliente.SetContacto(const Value: IBizContacto); +begin + inherited; + if Assigned(FContacto) then + eBloqueo.Enabled := cbClienteBloqueado.Checked; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewClienteDatosComerciales.dfm b/Source/Modulos/Contactos/Views/uViewClienteDatosComerciales.dfm new file mode 100644 index 00000000..feb8174c --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewClienteDatosComerciales.dfm @@ -0,0 +1,280 @@ +inherited frViewClienteDatosComerciales: TfrViewClienteDatosComerciales + Width = 637 + Height = 284 + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitWidth = 637 + ExplicitHeight = 284 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 637 + Height = 209 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth] + object Label1: TLabel + Left = 353 + Top = 28 + Width = 299 + Height = 26 + Caption = + 'Puede indicar los d'#237'as de vencimiento predeterminados que se uti' + + 'lizar'#225'n para las facturas de este cliente.' + Transparent = True + WordWrap = True + end + object eDiasVencimiento: TcxDBSpinEdit + Left = 420 + Top = 60 + DataBinding.DataField = 'VENCIMIENTO_FACTURAS' + DataBinding.DataSource = dsDatosComerciales + Properties.AssignedValues.MinValue = True + Properties.ImmediatePost = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + 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 = 6 + Width = 79 + end + object cbRegimenIVA: TcxDBComboBox + Left = 107 + Top = 28 + DataBinding.DataField = 'REGIMEN_IVA' + DataBinding.DataSource = dsDatosComerciales + Properties.DropDownListStyle = lsFixedList + Properties.ImmediatePost = True + Properties.ImmediateUpdateText = True + Properties.OnInitPopup = cbRegimenIVAPropertiesInitPopup + 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 = 0 + Width = 121 + end + object cbRecargoEquivalencia: TcxDBCheckBox + Left = 107 + Top = 109 + Caption = 'Aplicar recargo de equivalencia' + DataBinding.DataField = 'RECARGO_EQUIVALENCIA' + DataBinding.DataSource = dsDatosComerciales + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 5 + Width = 121 + end + object cbFormaPago: TcxDBLookupComboBox + Left = 107 + Top = 55 + DataBinding.DataField = 'ID_FORMA_PAGO' + DataBinding.DataSource = dsDatosComerciales + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'REFERENCIA' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsFormaPago + 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 = 1 + Width = 121 + end + object bFormasPago: TButton + Left = 191 + Top = 55 + Width = 132 + Height = 21 + Caption = 'Ver las formas de pago...' + TabOrder = 2 + OnClick = bFormasPagoClick + end + object eIVA: TcxDBLookupComboBox + Left = 107 + Top = 82 + DataBinding.DataField = 'ID_TIPO_IVA' + DataBinding.DataSource = dsDatosComerciales + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'REFERENCIA' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsTiposIVA + 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 = 3 + Width = 121 + end + object bTiposIVA: TButton + Left = 191 + Top = 82 + Width = 132 + Height = 21 + Caption = 'Ver los tipos de IVA...' + TabOrder = 4 + OnClick = bTiposIVAClick + end + object dxLayoutGroup1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Group3: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Datos comerciales' + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'R'#233'gimen de IVA:' + Control = cbRegimenIVA + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Forma de pago:' + Control = cbFormaPago + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item7: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Button1' + ShowCaption = False + Control = bFormasPago + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'IVA por defecto' + Control = eIVA + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + ShowCaption = False + Control = bTiposIVA + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = ' ' + Control = cbRecargoEquivalencia + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Datos para facturaci'#243'n' + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Label1' + ShowCaption = False + Control = Label1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + Caption = 'D'#237'as de vto.:' + Control = eDiasVencimiento + ControlOptions.ShowBorder = False + end + end + end + end + object dsAgentes: TDADataSource + Left = 40 + Top = 8 + end + object dsDatosComerciales: TDADataSource + Left = 8 + Top = 8 + end + object dsFormaPago: TDADataSource + Left = 40 + Top = 48 + end + object dsTiposIVA: TDADataSource + Left = 8 + Top = 48 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewClienteDatosComerciales.pas b/Source/Modulos/Contactos/Views/uViewClienteDatosComerciales.pas new file mode 100644 index 00000000..41ad9582 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewClienteDatosComerciales.pas @@ -0,0 +1,137 @@ +unit uViewClienteDatosComerciales; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxGraphics, DB, uDADataTable, dxLayoutControl, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, + cxDBLookupEdit, cxDBLookupComboBox, cxControls, cxSpinEdit, cxDBEdit, + uBizContactos, cxCheckBox, StdCtrls, uFormasPagoController, uTiposIVAController; + +type + IViewClienteDatosComerciales = interface(IViewBase) + ['{50D671FA-1109-4D7D-B3F8-8E7DCFEB32A4}'] + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + TfrViewClienteDatosComerciales = class(TfrViewBase, IViewClienteDatosComerciales) + dxLayoutControl1: TdxLayoutControl; + dxLayoutGroup1: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dsAgentes: TDADataSource; + dxLayoutControl1Item2: TdxLayoutItem; + eDiasVencimiento: TcxDBSpinEdit; + dxLayoutControl1Item3: TdxLayoutItem; + cbRegimenIVA: TcxDBComboBox; + dsDatosComerciales: TDADataSource; + dxLayoutControl1Item4: TdxLayoutItem; + cbRecargoEquivalencia: TcxDBCheckBox; + dsFormaPago: TDADataSource; + dxLayoutControl1Item5: TdxLayoutItem; + cbFormaPago: TcxDBLookupComboBox; + dxLayoutControl1Group5: TdxLayoutGroup; + Label1: TLabel; + dxLayoutControl1Item6: TdxLayoutItem; + bFormasPago: TButton; + dxLayoutControl1Item7: TdxLayoutItem; + dxLayoutControl1Item8: TdxLayoutItem; + eIVA: TcxDBLookupComboBox; + dxLayoutControl1Item9: TdxLayoutItem; + bTiposIVA: TButton; + dsTiposIVA: TDADataSource; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure cbRegimenIVAPropertiesInitPopup(Sender: TObject); + procedure bFormasPagoClick(Sender: TObject); + procedure bTiposIVAClick(Sender: TObject); + protected + FContacto : IBizContacto; + FFormasPagoController : IFormasPagoController; + FTiposIVAController : ITiposIVAController; + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + public + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + +implementation + +{$R *.dfm} + +uses + uRegimenIVAUtils, uBizFormasPago, uBizTiposIVA; + +{ TfrViewClienteDatosComerciales } + +procedure TfrViewClienteDatosComerciales.bFormasPagoClick(Sender: TObject); +begin + inherited; + FFormasPagoController.VerTodos((dsFormaPago.DataTable) as IBizFormaPago); +end; + +procedure TfrViewClienteDatosComerciales.bTiposIVAClick(Sender: TObject); +begin + inherited; + FTiposIVAController.VerTodos((dsTiposIVA.DataTable) as IBizTipoIVA); +end; + +procedure TfrViewClienteDatosComerciales.cbRegimenIVAPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with cbRegimenIVA.Properties do + begin + if Items.Count = 0 then + Items := DarRegimenesIVA; + end; +end; + +procedure TfrViewClienteDatosComerciales.CustomViewCreate(Sender: TObject); +begin + inherited; +// FAgentesController := TAgentesController.Create; + FFormasPagoController := TFormasPagoController.Create; + FTiposIVAController := TTiposIVAController.Create; +end; + +procedure TfrViewClienteDatosComerciales.CustomViewDestroy(Sender: TObject); +begin + inherited; +// FAgentesController := NIL; + FFormasPagoController := NIL; + FTiposIVAController := NIL; +end; + +function TfrViewClienteDatosComerciales.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +procedure TfrViewClienteDatosComerciales.SetContacto(const Value: IBizContacto); +begin + FContacto := Value; + if Assigned(FContacto) then + begin + dsDatosComerciales.DataTable := FContacto.DataTable; +// dsAgentes.DataTable := FAgentesController.BuscarTodos.DataTable; +// dsAgentes.DataTable.Active := True; + dsFormaPago.DataTable := FFormasPagoController.BuscarTodos.DataTable; + dsFormaPago.DataTable.Active := True; + dsTiposIVA.DataTable := FTiposIVAController.BuscarTodos.DataTable; + dsTiposIVA.DataTable.Active := True; + end + else begin + dsDatosComerciales.DataTable := NIL; +// dsAgentes.DataTable := NIL; + dsFormaPago.DataTable := NIL; + dsTiposIVA.DataTable := NIL; + end +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewClienteDescuentos.dfm b/Source/Modulos/Contactos/Views/uViewClienteDescuentos.dfm new file mode 100644 index 00000000..e9d751c8 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewClienteDescuentos.dfm @@ -0,0 +1,53 @@ +inherited frViewClienteDescuentos: TfrViewClienteDescuentos + Width = 580 + Height = 513 + ExplicitWidth = 580 + ExplicitHeight = 513 + inherited cxGrid: TcxGrid + Width = 580 + Height = 488 + ExplicitWidth = 580 + ExplicitHeight = 488 + inherited cxGridView: TcxGridDBTableView + object cxGridViewPROVEEDOR: TcxGridDBColumn + Caption = 'Proveedor' + DataBinding.FieldName = 'ID_PROVEEDOR' + PropertiesClassName = 'TcxLookupComboBoxProperties' + Properties.ImmediatePost = True + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + SortOrder = soAscending + FieldName = 'NOMBRE' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsProveedores + end + object cxGridViewDESCUENTO: TcxGridDBColumn + Caption = 'Descuento' + DataBinding.FieldName = 'DESCUENTO' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + BestFitMaxWidth = 30 + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 30 + end + end + end + inherited ToolBar1: TToolBar + Width = 580 + ExplicitWidth = 580 + end + inherited ActionListContenido: TActionList + inherited actModificar: TAction + Visible = False + end + end + object dsProveedores: TDADataSource + Left = 72 + Top = 144 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewClienteDescuentos.pas b/Source/Modulos/Contactos/Views/uViewClienteDescuentos.pas new file mode 100644 index 00000000..171e5dca --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewClienteDescuentos.pas @@ -0,0 +1,52 @@ +unit uViewClienteDescuentos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uViewDetallesGenerico, cxStyles, cxCustomData, cxGraphics, + cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, ImgList, + PngImageList, uDADataTable, ComCtrls, ToolWin, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, cxDBLookupComboBox, cxSpinEdit, + uBizContactos, uProveedoresController; + +type + TfrViewClienteDescuentos = class(TfrViewDetallesGenerico) + dsProveedores: TDADataSource; + cxGridViewPROVEEDOR: TcxGridDBColumn; + cxGridViewDESCUENTO: TcxGridDBColumn; + protected + FProvController : IProveedoresController; + FProveedores : IBizProveedor; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +constructor TfrViewClienteDescuentos.Create(AOwner: TComponent); +begin + inherited; + FProvController := TProveedoresController.Create; + FProveedores := (FProvController.BuscarTodos as IBizProveedor); + dsProveedores.DataTable := FProveedores.DataTable; + + if not dsProveedores.DataTable.Active then + dsProveedores.DataTable.Active := True; +end; + +destructor TfrViewClienteDescuentos.Destroy; +begin + if dsProveedores.DataTable.Active then + dsProveedores.DataTable.Active := False; + + FProveedores := NIL; + FProvController := NIL; + inherited; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewClientes.dfm b/Source/Modulos/Contactos/Views/uViewClientes.dfm new file mode 100644 index 00000000..bf928ec1 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewClientes.dfm @@ -0,0 +1,197 @@ +inherited frViewClientes: TfrViewClientes + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 clientes' + Kind = skCount + Column = cxGridViewNIF_CIF + end> + inherited cxGridViewICONO: TcxGridDBColumn + BestFitMaxWidth = 22 + MinWidth = 22 + Options.HorzSizing = False + Width = 22 + end + object cxGridViewBLOQUEADO: TcxGridDBColumn [1] + DataBinding.FieldName = 'BLOQUEADO' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Value = 0 + end + item + Description = 'Bloqueado' + ImageIndex = 1 + Tag = 1 + Value = 1 + end> + Properties.ShowDescriptions = False + BestFitMaxWidth = 22 + MinWidth = 22 + Options.HorzSizing = False + Width = 22 + end + object cxGridViewTiendaWeb: TcxGridDBColumn [2] + Caption = 'Acceso a tienda web' + DataBinding.FieldName = 'TIENDA_WEB' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Value = 0 + end + item + ImageIndex = 2 + Value = 1 + end> + Properties.ShowDescriptions = False + BestFitMaxWidth = 22 + MinWidth = 22 + Options.HorzSizing = False + Width = 22 + end + object cxGridViewNOMBRE_COMERCIAL: TcxGridDBColumn [6] + DataBinding.FieldName = 'NOMBRE_COMERCIAL' + Width = 164 + end + object cxGridViewAGENTE: TcxGridDBColumn + DataBinding.FieldName = 'AGENTE' + Visible = False + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + ExplicitWidth = 201 + Width = 201 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + inherited TBXToolbar1: TTBXToolbar + object TBXItem2: TTBXItem + Action = actAgente + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + Left = 104 + Top = 96 + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 38673.845245682870000000 + BuiltInReportLink = True + end + end + inherited dxPSEngineController1: TdxPSEngineController + Left = 104 + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 64 + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + Left = 32 + end + inherited ActionList1: TActionList + object actAgente: TAction + Caption = 'Agente' + OnExecute = actAgenteExecute + OnUpdate = actAgenteUpdate + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002A94944415478DA + 7D925D48536118C79FF3B5AF36DD66B639CB924243225010BC49BA914004CDE8 + E32228B482EA4689A22289C8CBA28B32B1061688902912D28D16991F6062B2DC + 45921FB954669BF39C9D6DE7EC9CF3EEBC9D2D8C2CB7079E9BF779FEBFF7F922 + 30C69034822060D3665F5F3A0B90B8C672FCAEC07AD8E35DF0DFBFE3F64EC05F + F647F72FC0DB75AED1E1B43D138438C9B26108B11C0443BC30ECF959D731303F + 9411D0D35C612C2ADBEF3319F5B992AC402412037F9003A4C8E05F17679BDA3E + 976BA9D1F4807B95552E877D90222910250556023170E66481D900F0CD17C0AD + 5DDE63F3CBFC505AC0685B6DE34654762B88009B350B8AF658815011C8521C04 + 518487DD530D9D83BECEB480C98EDA13F9798E5E9A61526F098440D1CA572409 + 24298EEFBA271B7BC756D203FA5A8FE49516EDF3313A5D8AA0AAAAD6BF929A01 + CFC7505DCBBBAAD590349C710BD3EEFA57D916D3A954920648249255283031B3 + 3A7BE1D164A5F61CCC0878D15C917FA8C43165D6334E558B25DBD80847E51BCF + A79B3E7D65DB33AEF1E04D570EE5723DB513C4C966E9006101ED0662043C6697 + 30B7DB3021CE6D5C5EEA58FAB22DE0F0ADBD36D25E38A6E6E2126413E00CAA81 + FAE27AE85FEB876EF10D30DC0E2083542432F3E3F8E2CBC5F7FF01CA5A8E3E21 + 6CC6AB8A264636110C7A80EADC2AE88B0E004474C0B026A035C76BF2B2A7ED43 + 29E671680BA0FC76B50F5BC902641501658B90304BA0EA11100A05544C0774D8 + 0834A7396B04DFE8C8E9B58FC19EAD80EB358B84852E44D9F1DF62930C9856B5 + 6320801419A0A27AA079430AB4303E722530EE6FDF3A838B15E729B3E50195C3 + D855B34A247F074A8BA91A40A2808C91803955E6E70233F36F3D0D58C6DEEDD6 + B8D35040179B9DA602305266AC028925A4A0B822A090C20BAB09BF96F35D736E + 53F70B90E997F07974AFDF0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001664944415478DA + 63FCFFFF3F0325801164002323235CE05023A73990D266E3FF3E1726F6EB2367 + 3290BA6A57FFFD244C0C66318A0130CDD679E7E622DBF2FB6627C3DCB9AB8EEA + CAFC2F861982CB802490E6DF2F0F32CCE8C8801B90919100A6418664CFFE6683 + D380131318FE9BC65F67985CA8C960A4C86901B20DE42AA0774E18582430CC98 + B180A1600103235106C014C2C4F11A70B8890B6C0BB1210F0C540BDBBA6F27E1 + 069C9CC8F8DFC0630603ABB83D41CDB0F0C99FFF9F11C50090D3FFBDD9C7F0FF + EF2F04FE87603380D93F18AE9C9ECB70E202037603FEBEDC01D770ECC67D86A6 + 69F718EAB29418CCE538C19AFFFFF9CE70F5FC32DC06FC79B6096EB367C161B8 + B3B7B42A8335FFFBF383E1FAE575B80DF8FD780D8AB3BDCBCEA368FE0FC437AE + 6FC36DC0AFFB8BE1066C3EFD8C61C69A370CD1EEAC0C61269C60038004C3CDDB + FBB01B008A850B3B3208C602385DA01B004A07E7EE139F0E40A914251D500200 + A1723AF0CAFCCBE70000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001E34944415478DAA5932D72E43010855F98D934341BC1858261D10D76 + 8E3047305C1685051A067A59A0E042E70682863D6C608719EE6B399EADDABFAA + AD7595CAB2DCFDF5EB1FDDE13F9FBB9F0FF258225F27AEC415D109B05A35C3CC + EF32E653FD2380CE035F4388720C41609DC2D68ABA28B42688E1820E79CAE7E9 + 17407316E4788F43E8033CF2F46D42F804E8E29084E0A2ACBE7B90E9798334C0 + 40D9145AC2BD1E8591A58B5CFE27406D462915EA59AD4A70812CF142FBD3340E + 750764113C8648C9A214E20A0C762560A1A925A662A8FDD0D48A06846B782220 + 6F80E732C7181F14858079CB69895B1D57D6824BBB99FF4A03C9952134BD9597 + 21ED008BF1F341F52BAA3035098CC23428DB561A70D53EC39888EFB941D4F45E + 5EB2DC0021A6035BC56A0F306660BD1B464A3DB5A8B00CED89606A62B201A61D + 90CB8C3E3EA03BD2F002BD8EF4550FB441D421532B62658D02CFC4C2DBFC9AD3 + 0EC86CDBA349DC24B2F7BA8E2D227BCF9CFD3CB573EC69409EE6D731EF804899 + EC4F3CB6D631927623FFD48F5AC84741B1B572D58B4FEB5CC67A1BA4739ECE34 + 18D185435DE756B070B5CDB17305B63BB741A2F38F41BA41BE38C4324D8FE6C6 + 3E0FBE7CEF15F602716877E7DF5EA6F330B6CBC4F6A55641CAE69EC973245714 + 97FDD7DBF8AFCF7740E00D20BA266C3A0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 64 + Top = 48 + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Views/uViewClientes.pas b/Source/Modulos/Contactos/Views/uViewClientes.pas new file mode 100644 index 00000000..de9f092e --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewClientes.pas @@ -0,0 +1,63 @@ +unit uViewClientes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ActnList, uDADataTable, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, JvComponent, + JvFormAutoSize, cxImage, PngImageList, ImgList, dxPSGlbl, dxPSUtl, + dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, + dxPScxCommon, cxImageComboBox, cxGridCustomPopupMenu, cxGridPopupMenu, + dxPScxGridLnk, ExtCtrls, JvComponentBase, JvBalloonHint, JvHint, + uViewFiltroBase, dxPgsDlg, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock; + +type + IViewClientes = interface(IViewContactos) + ['{7964E0AB-3075-43E7-94BC-513D80A1C116}'] + end; + + TfrViewClientes = class(TfrViewContactos, IViewClientes) + cxGridViewNOMBRE_COMERCIAL: TcxGridDBColumn; + cxGridViewBLOQUEADO: TcxGridDBColumn; + cxGridViewTiendaWeb: TcxGridDBColumn; + actAgente: TAction; + cxGridViewAGENTE: TcxGridDBColumn; + TBXItem2: TTBXItem; + procedure actAgenteExecute(Sender: TObject); + procedure actAgenteUpdate(Sender: TObject); + end; + + +implementation + +uses uViewGridBase; + + +{$R *.dfm} + + +procedure TfrViewClientes.actAgenteExecute(Sender: TObject); +begin + if (cxGridViewAGENTE.GroupIndex < 0) then + begin + cxGridViewAGENTE.GroupIndex := cxGridView.GroupedColumnCount; + cxGridViewAGENTE.Visible := False; + end + else + begin + cxGridViewAGENTE.GroupIndex := -1; + cxGridViewAGENTE.Visible := True; + end; +end; + +procedure TfrViewClientes.actAgenteUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Checked := not (cxGridViewAGENTE.GroupIndex < 0); +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewContacto.dfm b/Source/Modulos/Contactos/Views/uViewContacto.dfm new file mode 100644 index 00000000..62c87a14 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewContacto.dfm @@ -0,0 +1,646 @@ +inherited frViewContacto: TfrViewContacto + Width = 674 + Height = 388 + ExplicitWidth = 674 + ExplicitHeight = 388 + object dxLayoutControlContacto: TdxLayoutControl + Left = 0 + Top = 0 + Width = 674 + Height = 388 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object PngSpeedButton1: TPngSpeedButton + Left = 629 + Top = 222 + Width = 23 + Height = 22 + Action = actVerPaginaWeb + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C18000003734944415478DA + 5D536D685B55187ECEBDB99FB9371F26CB92ACADE9D66E75DDA6D356A6881B82 + 6C32904DA63074B66EEA90CDFDEC3EF0D7500A4357D18A286D6163A820289BCC + 0A83EE872875FB51964E6AD79936ED9A6459BE939B9BDCE4DEEBA1B2317DE1E1 + 1C78CFFB9CE77DCE7909FE17472F7ED6EEF0048E36D5F8FE464509A5EACBD0ED + DB497DE9E0B71E73FBF04FEF4AF30F9F27F7375F5DBA244795F90F798FF350C8 + 25A8204D52327E455ABB89997B69CC2C1EB3513958DEE81646BB4CF183AF0F93 + EA03826D9FBC2AADEFDE7CCE15C8EF0BAB3D64B5732B54BE84941647AC30821B + A934A6E2A750486E876054EC8857FFDEBB5CEE9F1C7A565F21D83DBE635075E5 + 06DABD9DCCA3AE67D04A21D18C6ECAB8BA78067FDC791A7F67A7908C1F875D8E + 81E3BEB4D6284367164E6C3849768D7DD1BB208C4F74866795764F184165275A + DDCF839851F8A55770FD6E0197E782984EA4A06573407314D0AEC04DF6547A5A + 4EBF403A07EF8D2CE84B879E78EA30DABC15F8652F9C9C8FEA62B04AFE18B17C + 04130B04F3E93C6CBD9F220E946F8194FDE80A7E33420283E94CBA58F2B56F7A + 072DBE3928BC0889E321B2AF51834E60BEE0403449FD2B14815A3FD0B806948A + 60AA1236C8C359221C9BB6EB848510FE19ABDB4E83C536B0CC2A18D647D08C16 + 54AA26EAC51250BD492DEFA32B07520C436E5610300E8084DF9CB4133207A880 + 103A0F8BB3C092000813815EDB4D9DB4695181DEFC2325380ED44DB055111EAB + 036AE92D9035AF4FDACBA60EB85C802C03920628BF81F0E760D75F048A8F5382 + C7A879598A8B609A0978B95904C94658ECFE1CF1EF9918CF98DA2EA8EABF04A2 + 08B8AF52A201C034687100C89C070C9A2B95C19ACB5817BC8247ECB53095BDA3 + 6473DF54FF5CECAFB19A53249024DA070F7035C07792BEC46D20F73255F10695 + 5E072A1A78AB82273B0A10A52D0D67CF8EE748C7FBB70423BE185DCA26D6DBA2 + 408BB91510FF59DAB7053B71844A6F50050618D3845BE2B135E2B36AFEAE0BBF + 9F5DD7B7F2137B07FEEC4ECEDEB99CCFA4DAEAB64D2C16F0847F41F9EE26587A + 081C6120700E04A84F1EA76AF3A2F707D3E73B3039D4A63F18A6EEF7AEB53A74 + 32ACE5F22FD51A794E76C5A16522B4230E0A55E6969CB620AB5A4351C6F219F5 + 54F44248FBCF34DE8FDE23333B19ADFAB683AFED330A26388103E371A6ACAAF5 + 5D59653E9FFE744BECE1F3FF00F7B9639E6BE4CA2D0000000049454E44AE4260 + 82} + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + end + object PngSpeedButton2: TPngSpeedButton + Left = 629 + Top = 194 + Width = 23 + Height = 22 + Action = actMandarCorreoParticular + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001964944415478DA + 63FCFFFF3F03232323033A58BCE9F87F647EAC9F258622B05E6C068034873B8A + 80D92019C62F8F194C1356339CDF399D91A0014B361FFB1FE6208AA299E1F323 + 306D52F90CC5100C03566E3DFC3FD04E02A2F9F727064690462066006A66FC02 + 64FFFAC8603451096E088A01CB361FFDFF8F819981183077D11A86FDAB7B18E1 + 062CDD7CE27F14573FC3B2EF450CD13E86181ABE7DFFCDF0F5DB6F866FDFFE30 + 1CB97897218AB38FC1B85B98E1DC8E698C600396000D8861696058FAB7116CC0 + 94C5FBB0DAEC6CAECF70EED6238668E67AB057500CF8F0E10383A0A0208A0B90 + 6D06B1BF01D9379E3C67387AFE09C389A37BD15CE06B01B47907434EAC13C3EF + 3F7F19662E3F8862BB898606C3EFDFFF1896EF3DCFA0A5C0CD306FE9265403FC + 9D20362F5CB71F4CE7C47AA01890D5BC164C7716F980D56018606BAC0656B079 + EF2986F82047AC6150DEB785A13CD911AC06C300234D05867DC72F30B8D818E1 + 8DC2494B0E63F702281075D455884A07576EDEC134404A5480E1DAED07441900 + 021806F44D5D44B46618801B400900007F4518F05E90AAF20000000049454E44 + AE426082} + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + end + object PngSpeedButton3: TPngSpeedButton + Left = 629 + Top = 166 + Width = 23 + Height = 22 + Action = actMandarCorreoTrabajo + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001964944415478DA + 63FCFFFF3F03232323033A58BCE9F87F647EAC9F258622B05E6C068034873B8A + 80D92019C62F8F194C1356339CDF399D91A0014B361FFB1FE6208AA299E1F323 + 306D52F90CC5100C03566E3DFC3FD04E02A2F9F727064690462066006A66FC02 + 64FFFAC8603451096E088A01CB361FFDFF8F819981183077D11A86FDAB7B18E1 + 062CDD7CE27F14573FC3B2EF450CD13E86181ABE7DFFCDF0F5DB6F866FDFFE30 + 1CB97897218AB38FC1B85B98E1DC8E698C600396000D8861696058FAB7116CC0 + 94C5FBB0DAEC6CAECF70EED6238668E67AB057500CF8F0E10383A0A0208A0B90 + 6D06B1BF01D9379E3C67387AFE09C389A37BD15CE06B01B47907434EAC13C3EF + 3F7F19662E3F8862BB898606C3EFDFFF1896EF3DCFA0A5C0CD306FE9265403FC + 9D20362F5CB71F4CE7C47AA01890D5BC164C7716F980D56018606BAC0656B079 + EF2986F82047AC6150DEB785A13CD911AC06C300234D05867DC72F30B8D818E1 + 8DC2494B0E63F702281075D455884A07576EDEC134404A5480E1DAED07441900 + 021806F44D5D44B46618801B400900007F4518F05E90AAF20000000049454E44 + AE426082} + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + end + object eCalle: TcxDBTextEdit + Left = 115 + Top = 169 + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 4 + Width = 181 + end + object eProvincia: TcxDBTextEdit + Left = 115 + Top = 223 + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 7 + Width = 133 + end + object ePoblacion: TcxDBTextEdit + Left = 115 + Top = 196 + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 5 + Width = 111 + end + object eCodigoPostal: TcxDBTextEdit + Left = 303 + Top = 196 + DataBinding.DataField = 'CODIGO_POSTAL' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 6 + Width = 65 + end + object eObservaciones: TcxDBMemo + Left = 22 + Top = 280 + DataBinding.DataField = 'NOTAS' + DataBinding.DataSource = dsContacto + Properties.ScrollBars = ssVertical + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 15 + Height = 54 + Width = 630 + end + object eTlfParticular: TcxDBTextEdit + Left = 493 + Top = 55 + DataBinding.DataField = 'TELEFONO_2' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 9 + Width = 91 + end + object eTlfTrabajo: TcxDBTextEdit + Left = 493 + Top = 28 + DataBinding.DataField = 'TELEFONO_1' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 8 + Width = 127 + end + object eTlfMovil: TcxDBTextEdit + Left = 493 + Top = 82 + DataBinding.DataField = 'MOVIL_1' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 10 + Width = 155 + end + object eFax: TcxDBTextEdit + Left = 493 + Top = 109 + DataBinding.DataField = 'FAX' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 11 + Width = 121 + end + object eNombre: TcxDBTextEdit + Left = 115 + Top = 55 + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clInfoBk + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 221 + end + object eNIFCIF: TcxDBTextEdit + Left = 265 + Top = 28 + DataBinding.DataField = 'NIF_CIF' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 1 + Width = 57 + end + object eMailTrabajo: TcxDBHyperLinkEdit + Left = 493 + Top = 166 + DataBinding.DataField = 'EMAIL_1' + DataBinding.DataSource = dsContacto + Properties.OnEditValueChanged = eMailTrabajoPropertiesEditValueChanged + Properties.OnValidate = eMailTrabajoPropertiesValidate + Properties.Prefix = 'mailto:' + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 12 + Width = 133 + end + object eMailParticular: TcxDBHyperLinkEdit + Left = 493 + Top = 194 + DataBinding.DataField = 'EMAIL_2' + DataBinding.DataSource = dsContacto + Properties.OnEditValueChanged = eMailTrabajoPropertiesEditValueChanged + Properties.OnValidate = eMailTrabajoPropertiesValidate + Properties.Prefix = 'mailto:' + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 13 + Width = 133 + end + object ePaginaWeb: TcxDBHyperLinkEdit + Left = 493 + Top = 221 + DataBinding.DataField = 'PAGINA_WEB' + DataBinding.DataSource = dsContacto + Properties.ValidateOnEnter = True + Properties.OnEditValueChanged = eMailTrabajoPropertiesEditValueChanged + Properties.OnValidate = eMailTrabajoPropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 14 + Width = 133 + end + object eReferencia: TcxDBTextEdit + Left = 115 + Top = 28 + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clWindow + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Width = 38 + end + object ePersonaContacto: TcxDBTextEdit + Left = 115 + Top = 142 + DataBinding.DataField = 'PERSONA_CONTACTO' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 3 + Width = 256 + end + object dxLayoutControlContactoGroup_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlContactoGroup9: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlContactoGroup4: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlContactoGroup1: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Datos generales' + object dxLayoutControlContactoGroup16: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlContactoItem25: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'C'#243'digo:' + Control = eReferencia + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem14: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'NIF/CIF:' + Control = eNIFCIF + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoItem13: TdxLayoutItem + Caption = 'Nombre:' + Control = eNombre + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoGroup3: TdxLayoutGroup + AutoAligns = [aaHorizontal] + Caption = 'Direcci'#243'n' + object dxLayoutControlContactoItem167: TdxLayoutItem + Caption = 'Persona contacto:' + Control = ePersonaContacto + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem1: TdxLayoutItem + Caption = 'Calle:' + Control = eCalle + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoGroup8: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlContactoItem3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Poblaci'#243'n:' + Control = ePoblacion + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem4: TdxLayoutItem + Caption = 'C.P.:' + Control = eCodigoPostal + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoItem2: TdxLayoutItem + Caption = 'Provincia:' + Control = eProvincia + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControlContactoGroup6: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlContactoGroup2: TdxLayoutGroup + Caption = 'Tel'#233'fonos' + object dxLayoutControlContactoItem10: TdxLayoutItem + Caption = 'Tlf. trabajo:' + Control = eTlfTrabajo + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem9: TdxLayoutItem + Caption = 'Tlf. particular:' + Visible = False + Control = eTlfParticular + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem11: TdxLayoutItem + Caption = 'M'#243'vil:' + Control = eTlfMovil + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem12: TdxLayoutItem + Caption = 'Fax:' + Control = eFax + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoGroup5: TdxLayoutGroup + Caption = 'Correo electr'#243'nico e internet' + object dxLayoutControlContactoGroup12: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlContactoItem7: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Correo de trabajo:' + Control = eMailTrabajo + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem18: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'PngSpeedButton3' + ShowCaption = False + Control = PngSpeedButton3 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoGroup110: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlContactoGroup13: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlContactoItem6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Correo particular:' + Control = eMailParticular + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'P'#225'gina web:' + Control = ePaginaWeb + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoGroup11: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahRight + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControlContactoItem17: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'PngSpeedButton2' + ShowCaption = False + Control = PngSpeedButton2 + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem15: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'PngSpeedButton1' + ShowCaption = False + Control = PngSpeedButton1 + ControlOptions.ShowBorder = False + end + end + end + end + end + end + object dxLayoutControlContactoGroup7: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Observaciones' + object dxLayoutControlContactoItem8: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'cxDBMemo1' + ShowCaption = False + Control = eObservaciones + ControlOptions.ShowBorder = False + end + end + end + end + object dsContacto: TDADataSource + Left = 16 + Top = 56 + end + object ActionList1: TActionList + Images = ImageList1 + Left = 200 + Top = 160 + object actMandarCorreoParticular: TAction + ImageIndex = 0 + OnExecute = actMandarCorreoParticularExecute + OnUpdate = actMandarCorreoParticularUpdate + end + object actMandarCorreoTrabajo: TAction + ImageIndex = 0 + OnExecute = actMandarCorreoTrabajoExecute + OnUpdate = actMandarCorreoTrabajoUpdate + end + object actVerPaginaWeb: TAction + ImageIndex = 1 + OnExecute = actVerPaginaWebExecute + OnUpdate = actVerPaginaWebUpdate + end + end + object ImageList1: TPngImageList + PngImages = <> + Left = 200 + Top = 136 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewContacto.pas b/Source/Modulos/Contactos/Views/uViewContacto.pas new file mode 100644 index 00000000..b36096bc --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewContacto.pas @@ -0,0 +1,191 @@ +unit uViewContacto; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizContactos, Mask, ComCtrls, uCustomView, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, dxLayoutControl, dxLayoutLookAndFeels, cxMemo, cxHyperLinkEdit, + ImgList, ActnList, PngImageList, PngSpeedButton; + +type + IViewContacto = interface(IViewBase) + ['{5FCFD172-5F8A-4639-B479-1CF0061526B5}'] + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + TfrViewContacto = class(TfrViewBase, IViewContacto) + dsContacto: TDADataSource; + dxLayoutControlContactoGroup_Root: TdxLayoutGroup; + dxLayoutControlContacto: TdxLayoutControl; + dxLayoutControlContactoGroup1: TdxLayoutGroup; + dxLayoutControlContactoGroup2: TdxLayoutGroup; + dxLayoutControlContactoGroup3: TdxLayoutGroup; + dxLayoutControlContactoGroup4: TdxLayoutGroup; + dxLayoutControlContactoGroup5: TdxLayoutGroup; + dxLayoutControlContactoGroup6: TdxLayoutGroup; + dxLayoutControlContactoGroup7: TdxLayoutGroup; + dxLayoutControlContactoGroup9: TdxLayoutGroup; + dxLayoutControlContactoItem1: TdxLayoutItem; + eCalle: TcxDBTextEdit; + dxLayoutControlContactoItem2: TdxLayoutItem; + eProvincia: TcxDBTextEdit; + dxLayoutControlContactoItem3: TdxLayoutItem; + ePoblacion: TcxDBTextEdit; + dxLayoutControlContactoItem4: TdxLayoutItem; + eCodigoPostal: TcxDBTextEdit; + dxLayoutControlContactoGroup8: TdxLayoutGroup; + eObservaciones: TcxDBMemo; + dxLayoutControlContactoItem8: TdxLayoutItem; + dxLayoutControlContactoItem9: TdxLayoutItem; + eTlfParticular: TcxDBTextEdit; + dxLayoutControlContactoItem10: TdxLayoutItem; + eTlfTrabajo: TcxDBTextEdit; + dxLayoutControlContactoItem11: TdxLayoutItem; + eTlfMovil: TcxDBTextEdit; + dxLayoutControlContactoItem12: TdxLayoutItem; + eFax: TcxDBTextEdit; + dxLayoutControlContactoItem13: TdxLayoutItem; + eNombre: TcxDBTextEdit; + dxLayoutControlContactoItem14: TdxLayoutItem; + eNIFCIF: TcxDBTextEdit; + dxLayoutControlContactoItem7: TdxLayoutItem; + eMailTrabajo: TcxDBHyperLinkEdit; + ActionList1: TActionList; + actMandarCorreoParticular: TAction; + actMandarCorreoTrabajo: TAction; + actVerPaginaWeb: TAction; + dxLayoutControlContactoItem6: TdxLayoutItem; + eMailParticular: TcxDBHyperLinkEdit; + dxLayoutControlContactoGroup110: TdxLayoutGroup; + dxLayoutControlContactoItem5: TdxLayoutItem; + ePaginaWeb: TcxDBHyperLinkEdit; + ImageList1: TPngImageList; + PngSpeedButton1: TPngSpeedButton; + dxLayoutControlContactoItem15: TdxLayoutItem; + PngSpeedButton2: TPngSpeedButton; + dxLayoutControlContactoItem17: TdxLayoutItem; + PngSpeedButton3: TPngSpeedButton; + dxLayoutControlContactoItem18: TdxLayoutItem; + dxLayoutControlContactoGroup12: TdxLayoutGroup; + dxLayoutControlContactoGroup13: TdxLayoutGroup; + dxLayoutControlContactoGroup11: TdxLayoutGroup; + dxLayoutControlContactoItem25: TdxLayoutItem; + eReferencia: TcxDBTextEdit; + dxLayoutControlContactoGroup16: TdxLayoutGroup; + dxLayoutControlContactoItem167: TdxLayoutItem; + ePersonaContacto: TcxDBTextEdit; + procedure eMailTrabajoPropertiesEditValueChanged(Sender: TObject); + procedure actMandarCorreoParticularExecute(Sender: TObject); + procedure actMandarCorreoTrabajoExecute(Sender: TObject); + procedure actVerPaginaWebExecute(Sender: TObject); + procedure actMandarCorreoParticularUpdate(Sender: TObject); + procedure actMandarCorreoTrabajoUpdate(Sender: TObject); + procedure actVerPaginaWebUpdate(Sender: TObject); + procedure eMailTrabajoPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + protected + FContacto: IBizContacto; + function GetContacto: IBizContacto; virtual; + procedure SetContacto(const Value: IBizContacto); virtual; + public + constructor Create(AOwner : TComponent); override; + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + +implementation +{$R *.dfm} + +type + THackcxDBHyperLinkEdit = class(TcxDBHyperLinkEdit); + +{ TfrViewContactos } + +{ +******************************* TfrViewContacto ******************************** +} +procedure TfrViewContacto.actMandarCorreoParticularExecute(Sender: TObject); +begin + inherited; + THackcxDBHyperLinkEdit(eMailParticular).DoStart; +end; + +procedure TfrViewContacto.actMandarCorreoParticularUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(eMailParticular.Text) > 0) +end; + +procedure TfrViewContacto.actMandarCorreoTrabajoExecute(Sender: TObject); +begin + inherited; + THackcxDBHyperLinkEdit(eMailTrabajo).DoStart; +end; + +procedure TfrViewContacto.actMandarCorreoTrabajoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(eMailTrabajo.Text) > 0) +end; + +procedure TfrViewContacto.actVerPaginaWebExecute(Sender: TObject); +begin + inherited; + THackcxDBHyperLinkEdit(ePaginaWeb).DoStart; +end; + +procedure TfrViewContacto.actVerPaginaWebUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(ePaginaWeb.Text) > 0) +end; + +constructor TfrViewContacto.Create(AOwner : TComponent); +begin + inherited; +end; + +procedure TfrViewContacto.eMailTrabajoPropertiesEditValueChanged(Sender: TObject); +begin + inherited; + if not VarIsNull((Sender as TcxDBHyperLinkEdit).EditValue) then + (Sender as TcxDBHyperLinkEdit).EditValue := StringReplace((Sender as TcxDBHyperLinkEdit).EditValue, (Sender as TcxDBHyperLinkEdit).Properties.Prefix, '', []); +end; + +procedure TfrViewContacto.eMailTrabajoPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +begin + inherited; + if not VarIsNull(DisplayValue) then + DisplayValue := StringReplace(DisplayValue, (Sender as TcxDBHyperLinkEdit).Properties.Prefix, '', []); +end; + +function TfrViewContacto.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +procedure TfrViewContacto.SetContacto(const Value: IBizContacto); +begin + FContacto := Value; + if Assigned(FContacto) then + begin + dsContacto.DataTable := FContacto.DataTable; + end + else begin + dsContacto.DataTable := NIL; + end; +end; + +initialization + RegisterClass(TfrViewContacto); + +finalization + UnRegisterClass(TfrViewContacto); + +end. + diff --git a/Source/Modulos/Contactos/Views/uViewContactoDatosBancarios.dfm b/Source/Modulos/Contactos/Views/uViewContactoDatosBancarios.dfm new file mode 100644 index 00000000..db311d51 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewContactoDatosBancarios.dfm @@ -0,0 +1,171 @@ +inherited frViewClienteDatosBancarios: TfrViewClienteDatosBancarios + Width = 501 + Height = 149 + ExplicitWidth = 501 + ExplicitHeight = 149 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 501 + Height = 129 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth] + object eEntidad: TcxDBTextEdit + Left = 117 + Top = 55 + DataBinding.DataField = 'ENTIDAD' + DataBinding.DataSource = dsDatosBancarios + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 1 + Width = 114 + end + object eSucursal: TcxDBTextEdit + Left = 341 + Top = 55 + DataBinding.DataField = 'SUCURSAL' + DataBinding.DataSource = dsDatosBancarios + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 112 + end + object eCuenta: TcxDBTextEdit + Left = 238 + Top = 82 + DataBinding.DataField = 'CUENTA' + DataBinding.DataSource = dsDatosBancarios + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 4 + Width = 194 + end + object eDC: TcxDBTextEdit + Left = 117 + Top = 82 + DataBinding.DataField = 'DC' + DataBinding.DataSource = dsDatosBancarios + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 3 + Width = 47 + end + object eTitular: TcxDBTextEdit + Left = 117 + Top = 28 + DataBinding.DataField = 'TITULAR' + DataBinding.DataSource = dsDatosBancarios + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Width = 194 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group3: TdxLayoutGroup + Caption = 'Datos bancarios' + object dxLayoutControl1Item5: TdxLayoutItem + Caption = 'Nombre del banco:' + Control = eTitular + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'C'#243'd. entidad:' + Control = eEntidad + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'C'#243'd. sucursal:' + Control = eSucursal + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group4: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + Caption = 'DC:' + Control = eDC + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'C'#243'd. cuenta:' + Control = eCuenta + ControlOptions.ShowBorder = False + end + end + end + end + end + end + object dsDatosBancarios: TDADataSource + Left = 8 + Top = 8 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewContactoDatosBancarios.pas b/Source/Modulos/Contactos/Views/uViewContactoDatosBancarios.pas new file mode 100644 index 00000000..e0fbe00b --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewContactoDatosBancarios.pas @@ -0,0 +1,39 @@ +unit uViewContactoDatosBancarios; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, dxLayoutControl, cxControls, cxContainer, cxEdit, + cxTextEdit, cxDBEdit, DB, uDADataTable; + +type + IViewDatosBancarios = interface(IViewBase) + ['{2C3C0C39-F0AE-4FC2-A198-91D901890801}'] + end; + + TfrViewClienteDatosBancarios = class(TfrViewBase, IViewDatosBancarios) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + eEntidad: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + eSucursal: TcxDBTextEdit; + dxLayoutControl1Item3: TdxLayoutItem; + eCuenta: TcxDBTextEdit; + dxLayoutControl1Item4: TdxLayoutItem; + eDC: TcxDBTextEdit; + dxLayoutControl1Item5: TdxLayoutItem; + eTitular: TcxDBTextEdit; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Group4: TdxLayoutGroup; + dxLayoutControl1Group1: TdxLayoutGroup; + dsDatosBancarios: TDADataSource; + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Modulos/Contactos/Views/uViewContactos.dfm b/Source/Modulos/Contactos/Views/uViewContactos.dfm new file mode 100644 index 00000000..d122e107 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewContactos.dfm @@ -0,0 +1,155 @@ +inherited frViewContactos: TfrViewContactos + Width = 557 + Height = 458 + ExplicitWidth = 557 + ExplicitHeight = 458 + inherited cxGrid: TcxGrid + Width = 557 + Height = 330 + ExplicitWidth = 557 + ExplicitHeight = 330 + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'ID' + DataController.Summary.FooterSummaryItems = < + item + Format = '0 clientes' + Kind = skCount + FieldName = 'ID' + Column = cxGridViewNOMBRE + end> + OptionsBehavior.PullFocusing = True + object cxGridViewICONO: TcxGridDBColumn + OnCustomDrawCell = cxGridViewCODIGOCustomDrawCell + BestFitMaxWidth = 18 + Options.Sorting = False + Width = 20 + end + object cxGridViewREFERENCIA: TcxGridDBColumn + Caption = 'C'#243'digo' + DataBinding.FieldName = 'REFERENCIA' + Width = 50 + end + object cxGridViewNIF_CIF: TcxGridDBColumn + DataBinding.FieldName = 'NIF_CIF' + Width = 50 + end + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + SortIndex = 0 + SortOrder = soAscending + Width = 164 + end + object cxGridViewCALLE: TcxGridDBColumn + DataBinding.FieldName = 'CALLE' + Visible = False + end + object cxGridViewPOBLACION: TcxGridDBColumn + DataBinding.FieldName = 'POBLACION' + Visible = False + end + object cxGridViewPROVINCIA: TcxGridDBColumn + DataBinding.FieldName = 'PROVINCIA' + Visible = False + end + object cxGridViewCODIGO_POSTAL: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO_POSTAL' + Visible = False + Width = 47 + end + object cxGridViewTELEFONO_1: TcxGridDBColumn + Caption = 'Tlf. trabajo' + DataBinding.FieldName = 'TELEFONO_1' + Width = 84 + end + object cxGridViewTELEFONO_2: TcxGridDBColumn + Caption = 'Tlf. particular' + DataBinding.FieldName = 'TELEFONO_2' + Visible = False + end + object cxGridViewMOVIL_1: TcxGridDBColumn + DataBinding.FieldName = 'MOVIL_1' + Width = 49 + end + object cxGridViewFAX: TcxGridDBColumn + DataBinding.FieldName = 'FAX' + Visible = False + end + object cxGridViewEMAIL_1: TcxGridDBColumn + Caption = 'E-mail trabajo' + DataBinding.FieldName = 'EMAIL_1' + Width = 43 + end + object cxGridViewEMAIL_2: TcxGridDBColumn + Caption = 'E-mail particular' + DataBinding.FieldName = 'EMAIL_2' + Visible = False + end + object cxGridViewPAGINA_WEB: TcxGridDBColumn + DataBinding.FieldName = 'PAGINA_WEB' + Visible = False + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 557 + ExplicitWidth = 557 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 557 + inherited dxLayoutControl1: TdxLayoutControl + Width = 557 + ExplicitWidth = 557 + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 273 + Width = 273 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + ExplicitWidth = 201 + Width = 201 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 557 + inherited tbxBotones: TTBXToolbar + Width = 547 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 432 + ExplicitTop = 432 + ExplicitWidth = 557 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 557 + ExplicitWidth = 557 + inherited TBXToolbar1: TTBXToolbar + Width = 547 + ExplicitWidth = 547 + end + end + end + inherited dsDataSource: TDADataSource + Left = 32 + Top = 48 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39213.849016018520000000 + BuiltInReportLink = True + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + object PngImageList: TPngImageList + PngImages = <> + Left = 160 + Top = 32 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewContactos.pas b/Source/Modulos/Contactos/Views/uViewContactos.pas new file mode 100644 index 00000000..402ea141 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewContactos.pas @@ -0,0 +1,89 @@ +unit uViewContactos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizContactos, ActnList, Menus, + cxGridBandedTableView, cxGridDBBandedTableView, JvComponent, + JvFormAutoSize, PngImageList, ImgList, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxIntlPrintSys3, dxPSCore, dxPScxCommon, dxPScxGridLnk, + udatamoduleclientes, cxGridCustomPopupMenu, cxGridPopupMenu, uViewFiltroBase, + ComCtrls, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg; + +type + IViewContactos = interface(IViewGrid) + ['{9E43DEE1-F72B-4C93-8592-1C7DF01E293D}'] + function GetContactos: IBizContacto; + procedure SetContactos(const Value: IBizContacto); + property Contactos: IBizContacto read GetContactos write SetContactos; + end; + + TfrViewContactos = class(TfrViewGrid, IViewContactos) + PngImageList: TPngImageList; + cxGridViewICONO: TcxGridDBColumn; + cxGridViewNIF_CIF: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewCALLE: TcxGridDBColumn; + cxGridViewPOBLACION: TcxGridDBColumn; + cxGridViewPROVINCIA: TcxGridDBColumn; + cxGridViewCODIGO_POSTAL: TcxGridDBColumn; + cxGridViewTELEFONO_1: TcxGridDBColumn; + cxGridViewTELEFONO_2: TcxGridDBColumn; + cxGridViewMOVIL_1: TcxGridDBColumn; + cxGridViewFAX: TcxGridDBColumn; + cxGridViewEMAIL_1: TcxGridDBColumn; + cxGridViewEMAIL_2: TcxGridDBColumn; + cxGridViewPAGINA_WEB: TcxGridDBColumn; + cxGridViewREFERENCIA: TcxGridDBColumn; + procedure cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); + protected + FContactos: IBizContacto; + function GetContactos: IBizContacto; virtual; + procedure SetContactos(const Value: IBizContacto); virtual; + public + property DataSet: IBizContacto read GetContactos write SetContactos; + end; + +implementation + +{$R *.dfm} + +{ TfrViewClientes } + +{ +******************************* TfrViewContactos ******************************* +} +function TfrViewContactos.GetContactos: IBizContacto; +begin + Result := FContactos; +end; + +procedure TfrViewContactos.SetContactos(const Value: IBizContacto); +begin + FContactos := Value; + if Assigned(FContactos) then + dsDataSource.DataTable := FContactos.DataTable; +end; + + +procedure TfrViewContactos.cxGridViewCODIGOCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +var + R : TRect; +begin + inherited; + R := AViewInfo.ContentBounds; + ACanvas.FillRect(R); + ACanvas.DrawImage(PngImageList, R.Left, R.Top, 0); + ADone := True; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.dfm b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.dfm new file mode 100644 index 00000000..b158aeb6 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.dfm @@ -0,0 +1,476 @@ +inherited frViewDatosYSeleccionCliente: TfrViewDatosYSeleccionCliente + Width = 350 + Height = 212 + ExplicitWidth = 350 + ExplicitHeight = 212 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 350 + Height = 212 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + DesignSize = ( + 350 + 212) + object edtlNombre: TcxDBTextEdit + Left = 64 + Top = 41 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Height = 21 + Width = 224 + end + object edtNIFCIF: TcxDBTextEdit + Left = 64 + Top = 68 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NIF_CIF' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Height = 21 + Width = 562 + end + object edtCalle: TcxDBTextEdit + Left = 64 + Top = 95 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Height = 21 + Width = 562 + end + object edtPoblacion: TcxDBTextEdit + Left = 64 + Top = 122 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Height = 21 + Width = 177 + end + object edtProvincia: TcxDBTextEdit + Left = 64 + Top = 149 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 7 + Height = 21 + Width = 327 + end + object edtCodigoPostal: TcxDBTextEdit + Left = 258 + Top = 122 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'CODIGO_POSTAL' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 6 + Height = 21 + Width = 82 + end + object Button1: TBitBtn + Left = 10 + Top = 10 + Width = 115 + Height = 25 + Action = actElegirContacto + Caption = 'Elegir un cliente' + TabOrder = 0 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00EB00EB00C507C600AB13AD00A119A2009F19A000A215A400AA10 + AC00B608B800CE00CE00EF00EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00B426B000526840004A823400478F310043962F0042992F0043972F004690 + 3100488533004B7237005A405100D201D200FF00FF00FF00FF00FF00FF00FF00 + FF0062654E004F81350047903100409C2E003AA62C0038AA2B0039A72B003E9E + 2D00459230004D84340056753800A0189F00FF00FF00FF00FF00FF00FF00FF00 + FF005F6B4C004B89330042992F0039A82B0032B428002EBB260031B6270037AB + 2A00409C2E00498C3200527B3600B015B100FF00FF00FF00FF00FF00FF00FF00 + FF0090488700488D32003E9E2D0035AF290035B631007ACB7B002DBF280033B2 + 28003DA12D0047903100576A4800EC01EC00FF00FF00FF00FF00FF00FF00FF00 + FF00F008F1005F7351003E9F2D0034B0290080AC8100D2D3D30081BB820032B2 + 28003DA22D004A863A00C519C500FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00EE09EF007861730036923E00598CAE00498CBB004A81A6002B70 + 3A00606D5900D613D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00EA0CF400608CD00054A2D80053A1D6004F9DD300488B + C2009D11AC00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF008C67DE005CA9DD005CA9DD005AA7DC0056A4D900519F + D400565FAB00EA00EA00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00EC0DF60060A7DE0063B0E30063B0E30061AEE1005CA9DD0056A4 + D9004E94CC00C105C600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00C532ED0066B2E5006BB7E9006BB7E90067B3E60061AEE1005AA7 + DC00539FD500A817BE00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00BA3AE7004989B1004A85AC005895BD0068B2E30064B0E4005CA9 + DE0053A0D400AA1BC300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00CA23E8005098C400539AC7004E93BE00437DA2005190BA005198 + C6003C79A000BE08C300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00F804FC006995D40062ACDA005DA6D3005299C6004284AD003C7F + A900535AA100F300F300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C140ED0071BAEA0068B2E00059A1CF004990BC004378 + AA00C315D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C83EF000808BDF00668BCC007C60C700D116 + E400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object Button2: TBitBtn + Left = 131 + Top = 10 + Width = 143 + Height = 25 + Action = actAnadirContacto + Caption = 'Dar de alta un cliente' + TabOrder = 1 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947 + 3100694731006947310069473100694731006947310069473100694731006947 + 3100694731006947310069473100694731006947310069473100D5BFB100F6F2 + EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2 + 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB1002A80 + 1E00136F0D00136F0D00136F0D00136F0D00136F0D00136F0D002A801E00E3D5 + CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB10059A8 + 5100448B2F003CA02C0032A4260032A526003D9E2C00438D2E00136F0D00E7DB + D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB10080BC + 790042952E0031A62600369B3200369E320032A727003E952C00136F0D00EAE0 + DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100CFE8 + CD004CA741002D942F0071AB90006FA68E0030923100136F0D00EFE8E300EDE4 + DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF + FF00B9DDC2004F9DA000559BC8004E96C2004E8E8F00A8C2AA00F2ECE800EFE8 + E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF + FF00A5CDE8005DAADD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC + E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6 + FA006CB9DF0065B2E50065B1E5005FACDF0056A2D700689EBE00F7F4F100F5F0 + ED00F2ECE800006000000060000000600000B7A2930069473100D5BFB100E9F6 + FA005BB0D5005CA6D50065AFDF0062AFE20058A4D8003285A700FAF8F600F7F4 + F100F7A073000060000033CB510000600000B7A2930069473100D5BFB100F4FA + FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB000060 + 0000006000000060000040D86500006000000060000000600000D5BFB100FFFF + FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF000060 + 000060F898005AF28F004DE57A0040D865003AD25C0000600000D5BFB100FFFF + FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF000060 + 000000600000006000005AF28F00006000000060000000600000D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF + B100D5BFB1000060000060F8980000600000D5BFB100D5BFB100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00006000000060000000600000FF00FF00FF00FF00} + end + object Button3: TBitBtn + Left = 148 + Top = 176 + Width = 192 + Height = 25 + Action = actVerContacto + Caption = 'Ver ficha completa del cliente...' + TabOrder = 8 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947 + 3100694731006947310069473100694731006947310069473100694731006947 + 3100694731006947310069473100694731006947310069473100D5BFB100F6F2 + EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2 + 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB1002A80 + 1E00136F0D00136F0D00136F0D00136F0D00136F0D00136F0D002A801E00E3D5 + CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB10059A8 + 5100448B2F003CA02C0032A4260032A526003D9E2C00438D2E00136F0D00E7DB + D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB10080BC + 790042952E0031A62600369B3200369E320032A727003E952C00136F0D00EAE0 + DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100CFE8 + CD004CA741002D942F0071AB90006FA68E0030923100136F0D00EFE8E300EDE4 + DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF + FF00B9DDC2004F9DA000559BC8004E96C2004E8E8F00A8C2AA00F2ECE800EFE8 + E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF + FF00A5CDE8005DAADD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC + E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6 + FA006CB9DF0065B2E50065B1E5005FACDF0056A2D700689EBE00F7F4F100F5F0 + ED00F2ECE800EFE8E300EDE4DF00EAE0DA00B7A2930069473100D5BFB100E9F6 + FA005BB0D5005CA6D50065AFDF0062AFE20058A4D8003285A700FAF8F600F7F4 + F100F7A07300F7A07300F7A07300F7A07300B7A2930069473100D5BFB100F4FA + FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB00FAF8 + F600F7F4F100F5F0ED00F2ECE800EFE8E300B7A2930069473100D5BFB100FFFF + FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF00FDFC + FB00F7A07300F7A07300F7A07300F7A07300B7A2930069473100D5BFB100FFFF + FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF00FFFF + FF00FEFEFD00FCFAF900F9F6F400F6F2EF00F3EEEA0069473100D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item7: TdxLayoutItem + Caption = 'Button1' + ShowCaption = False + Control = Button1 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item8: TdxLayoutItem + Caption = 'Button2' + ShowCaption = False + Control = Button2 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Nombre:' + Control = edtlNombre + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + Caption = 'NIF/CIF' + Control = edtNIFCIF + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'Calle:' + Control = edtCalle + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group2: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Poblaci'#243'n:' + Control = edtPoblacion + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'C.P.:' + Control = edtCodigoPostal + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item5: TdxLayoutItem + Caption = 'Provincia:' + Control = edtProvincia + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Button3' + ShowCaption = False + Control = Button3 + ControlOptions.ShowBorder = False + end + end + end + object DADataSource: TDADataSource + Left = 8 + Top = 160 + end + object ActionList1: TActionList + Images = PngImageList + Left = 40 + Top = 160 + object actElegirContacto: TAction + Caption = 'Elegir un cliente' + ImageIndex = 1 + OnExecute = actElegirContactoExecute + end + object actAnadirContacto: TAction + Caption = 'Dar de alta un cliente' + ImageIndex = 0 + OnExecute = actAnadirContactoExecute + end + object actVerContacto: TAction + Caption = 'Ver ficha completa del cliente...' + ImageIndex = 2 + OnExecute = actVerContactoExecute + OnUpdate = actVerContactoUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002224944415478DA + 95935D48936114C77FCB36584A6064161515DEA441108B240293E8A682246805 + DEA45020F40196505D081242DE94512B8C20169937056914D52E726B6083B114 + D44CD3D51A216BB6656B5FEF677B5FF31D23033DF070CE03CFFFF73F1CCE6362 + 29D1806AD44E4C5A32F5F58FAA8BD5D73DD8465757034D4D4EFA4E8C62000ED7 + 56E997647490DFE131BD2ED9584971D98EB9478D2603D279B39EE6733DC6DD00 + 68E2EF7E07E95F2291688C48629ABDC71DACABD8AD0334E7B420104D24F4A3D5 + DDD707E60087F66C2234D0CECF2F41643987556566676799C9C4387AD18FF964 + 91E178EA522DF73ADC851D1CA85ECD27D77948995861B552844C2A9962303441 + DD051FA22473E5095C735B3972DAC6D3DB016EED7BC9FD47CFE601E57CF3B661 + C966D1E62C880299549A696915B6639D4892A243D6B6AC349C0B00DA0C22EF7B + 484EBDCA015424512491125036D751B1CBAE8BB5330F12459937EF860A01DEA0 + 8BA0FB0E5B154BAE832C810CACDF594F4DD5C17FC45AF6FA87F3800D95022DFD + ADC47E84682CDF8F222A3C9CF1303915E6C3E5495DDC7AE379C14E546F5F9307 + F8E4C7BC187F4BA6344E49D24C6E8A24AD12E65809A1895102CD6386B3F8B793 + C0F0C73CC0196927188E2297651096A7D096D4922D6659DCC2E7AF43F8CE8C70 + F5AEEBFF1D9CF5D889C7230BAE6F696939BDF6D7BAABACA87A567279647C320F + A8B16DA1BBD7B3A47FA5850168EB702C596C6CA2AA2EFA332E187F0080F1503E + 182A98A90000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002A94944415478DA + 7D925D48536118C79FF3B5AF36DD66B639CB924243225010BC49BA914004CDE8 + E32228B482EA4689A22289C8CBA28B32B1061688902912D28D16991F6062B2DC + 45921FB954669BF39C9D6DE7EC9CF3EEBC9D2D8C2CB7079E9BF779FEBFF7F922 + 30C69034822060D3665F5F3A0B90B8C672FCAEC07AD8E35DF0DFBFE3F64EC05F + F647F72FC0DB75AED1E1B43D138438C9B26108B11C0443BC30ECF959D731303F + 9411D0D35C612C2ADBEF3319F5B992AC402412037F9003A4C8E05F17679BDA3E + 976BA9D1F4807B95552E877D90222910250556023170E66481D900F0CD17C0AD + 5DDE63F3CBFC505AC0685B6DE34654762B88009B350B8AF658815011C8521C04 + 518487DD530D9D83BECEB480C98EDA13F9798E5E9A61526F098440D1CA572409 + 24298EEFBA271B7BC756D203FA5A8FE49516EDF3313A5D8AA0AAAAD6BF929A01 + CFC7505DCBBBAAD590349C710BD3EEFA57D916D3A954920648249255283031B3 + 3A7BE1D164A5F61CCC0878D15C917FA8C43165D6334E558B25DBD80847E51BCF + A79B3E7D65DB33AEF1E04D570EE5723DB513C4C966E9006101ED0662043C6697 + 30B7DB3021CE6D5C5EEA58FAB22DE0F0ADBD36D25E38A6E6E2126413E00CAA81 + FAE27AE85FEB876EF10D30DC0E2083542432F3E3F8E2CBC5F7FF01CA5A8E3E21 + 6CC6AB8A264636110C7A80EADC2AE88B0E004474C0B026A035C76BF2B2A7ED43 + 29E671680BA0FC76B50F5BC902641501658B90304BA0EA11100A05544C0774D8 + 0834A7396B04DFE8C8E9B58FC19EAD80EB358B84852E44D9F1DF62930C9856B5 + 6320801419A0A27AA079430AB4303E722530EE6FDF3A838B15E729B3E50195C3 + D855B34A247F074A8BA91A40A2808C91803955E6E70233F36F3D0D58C6DEEDD6 + B8D35040179B9DA602305266AC028925A4A0B822A090C20BAB09BF96F35D736E + 53F70B90E997F07974AFDF0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 72 + Top = 160 + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas new file mode 100644 index 00000000..85df6bf2 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionCliente.pas @@ -0,0 +1,216 @@ +unit uViewDatosYSeleccionCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel, + cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos, + ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit, + pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask, + DBCtrls, + uClientesController, dxLayoutControl, Buttons; + +type + IViewDatosYSeleccionCliente = interface(IViewBase) + ['{BCC2B36B-4A19-4981-B69A-56E258A898F0}'] + function GetController: IClientesController; + procedure SetController(Value: IClientesController); + property Controller: IClientesController read GetController write SetController; + + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + property Cliente: IBizCliente read GetCliente write SetCliente; + + function GetOnClienteChanged : TNotifyEvent; + procedure SetOnClienteChanged (const Value : TNotifyEvent); + property OnClienteChanged : TNotifyEvent read GetOnClienteChanged + write SetOnClienteChanged; + + function GetMsgElegirCliente: String; + procedure SetMsgElegirCliente(const Value: String); + property MsgElegirCliente : String read GetMsgElegirCliente + write SetMsgElegirCliente; + end; + + TfrViewDatosYSeleccionCliente = class(TfrViewBase, IViewDatosYSeleccionCliente) + DADataSource: TDADataSource; + ActionList1: TActionList; + actElegirContacto: TAction; + actAnadirContacto: TAction; + actVerContacto: TAction; + PngImageList: TPngImageList; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + edtlNombre: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + edtNIFCIF: TcxDBTextEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtCalle: TcxDBTextEdit; + dxLayoutControl1Item4: TdxLayoutItem; + edtPoblacion: TcxDBTextEdit; + dxLayoutControl1Item5: TdxLayoutItem; + edtProvincia: TcxDBTextEdit; + dxLayoutControl1Item6: TdxLayoutItem; + edtCodigoPostal: TcxDBTextEdit; + Button1: TBitBtn; + dxLayoutControl1Item7: TdxLayoutItem; + Button2: TBitBtn; + dxLayoutControl1Item8: TdxLayoutItem; + Button3: TBitBtn; + dxLayoutControl1Item9: TdxLayoutItem; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + procedure actElegirContactoExecute(Sender: TObject); + procedure actAnadirContactoExecute(Sender: TObject); + procedure actVerContactoExecute(Sender: TObject); + procedure actVerContactoUpdate(Sender: TObject); + + private + FController : IClientesController; + FCliente : IBizCliente; + FOnClienteChanged : TNotifyEvent; + FMsgElegirCliente: String; + function GetMsgElegirCliente: String; + procedure SetMsgElegirCliente(const Value: String); + + protected + function GetController: IClientesController; + procedure SetController(Value: IClientesController); + function GetCliente: IBizCliente; + procedure SetCliente(Value: IBizCliente); + function GetOnClienteChanged : TNotifyEvent; + procedure SetOnClienteChanged (const Value : TNotifyEvent); + procedure SetReadOnly(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + property Controller: IClientesController read GetController write SetController; + property Cliente: IBizCliente read GetCliente write SetCliente; + property OnClienteChanged : TNotifyEvent read GetOnClienteChanged write SetOnClienteChanged; + property MsgElegirCliente : String read GetMsgElegirCliente write SetMsgElegirCliente; + + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleClientes, Math, uCustomView; + +procedure TfrViewDatosYSeleccionCliente.actElegirContactoExecute(Sender: TObject); +var + ACliente : IBizCliente; +begin + inherited; + ACliente := (Controller.ElegirContacto(Controller.BuscarTodos, + FMsgElegirCliente, False) as IBizCliente); + + if Assigned(ACliente) then + begin + Self.Update; + ShowHourglassCursor; + try + Cliente := ACliente; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfrViewDatosYSeleccionCliente.actAnadirContactoExecute( + Sender: TObject); +var + ACliente : IBizCliente; +begin + inherited; + ACliente := (FController.Nuevo as IBizCliente); + FController.Ver(ACliente); + Cliente := ACliente; +end; + +procedure TfrViewDatosYSeleccionCliente.actVerContactoExecute(Sender: TObject); +begin + inherited; + FController.Ver(Cliente); +end; + +procedure TfrViewDatosYSeleccionCliente.actVerContactoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0); +end; + +constructor TfrViewDatosYSeleccionCliente.Create(AOwner: TComponent); +begin + inherited; + FMsgElegirCliente := ''; +end; + +function TfrViewDatosYSeleccionCliente.GetCliente: IBizCliente; +begin + Result := FCliente; +end; + +function TfrViewDatosYSeleccionCliente.GetController: IClientesController; +begin + Result := FController; +end; + +function TfrViewDatosYSeleccionCliente.GetMsgElegirCliente: String; +begin + Result := FMsgElegirCliente; +end; + +procedure TfrViewDatosYSeleccionCliente.SetCliente(Value: IBizCliente); +begin + FCliente := Value; + if Assigned(FCliente) then + begin + DADataSource.DataTable := FCliente.DataTable; + if not FCliente.DataTable.Active then + FCliente.DataTable.Active := True; + end + else + DADataSource.DataTable := NIL; + + if Assigned(FOnClienteChanged) then + FOnClienteChanged(Self); +end; + +procedure TfrViewDatosYSeleccionCliente.SetController(Value: IClientesController); +begin + FController := Value; +end; + +procedure TfrViewDatosYSeleccionCliente.SetMsgElegirCliente( + const Value: String); +begin + FMsgElegirCliente := Value; +end; + +function TfrViewDatosYSeleccionCliente.GetOnClienteChanged: TNotifyEvent; +begin + Result := FOnClienteChanged; +end; + +procedure TfrViewDatosYSeleccionCliente.SetOnClienteChanged( + const Value: TNotifyEvent); +begin + FOnClienteChanged := Value; +end; + +procedure TfrViewDatosYSeleccionCliente.SetReadOnly(Value: Boolean); +begin + inherited; + + if ReadOnly then + begin + actAnadirContacto.Enabled := False; + actElegirContacto.Enabled := False; + end; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.dfm b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.dfm new file mode 100644 index 00000000..4dad9bfb --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.dfm @@ -0,0 +1,643 @@ +inherited frViewDatosYSeleccionProveedor: TfrViewDatosYSeleccionProveedor + Width = 350 + Height = 202 + ExplicitWidth = 350 + ExplicitHeight = 202 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 350 + Height = 211 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + DesignSize = ( + 350 + 211) + object edtlNombre: TcxDBTextEdit + Left = 64 + Top = 41 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Height = 21 + Width = 276 + end + object edtNIFCIF: TcxDBTextEdit + Left = 64 + Top = 68 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NIF_CIF' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Height = 21 + Width = 562 + end + object edtCalle: TcxDBTextEdit + Left = 64 + Top = 95 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Height = 21 + Width = 562 + end + object edtPoblacion: TcxDBTextEdit + Left = 64 + Top = 122 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Height = 21 + Width = 177 + end + object edtProvincia: TcxDBTextEdit + Left = 64 + Top = 149 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 7 + Height = 21 + Width = 327 + end + object edtCodigoPostal: TcxDBTextEdit + Left = 258 + Top = 122 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'CODIGO_POSTAL' + DataBinding.DataSource = DADataSource + Enabled = False + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 6 + Height = 21 + Width = 82 + end + object Button1: TBitBtn + Left = 10 + Top = 10 + Width = 120 + Height = 25 + Action = actElegirContacto + Caption = 'Elegir un proveedor' + TabOrder = 0 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00EB00EB00C507C600AB13AD00A119A2009F19A000A215A400AA10 + AC00B608B800CE00CE00EF00EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00B118C10040407B00344A830031498F002F4596002F4499002F4597003148 + 900033498500374678005A3E5300D201D200FF00FF00FF00FF00FF00FF00FF00 + FF004E42860035508100314990002E429C002C3CA6002B3AAA002B3BA7002D40 + 9E0030479200344F840038577500A0189F00FF00FF00FF00FF00FF00FF00FF00 + FF004C428900334D89002F4499002B3CA8002835B4002631BB002734B6002A3A + AB002E429C00324B8C0036537B00B015B100FF00FF00FF00FF00FF00FF00FF00 + FF008726B300324A8D002D409E002938AF003138B6007A7BCB002830BF002835 + B2002D3FA10031499000483B8700EC01EC00FF00FF00FF00FF00FF00FF00FF00 + FF00F002F60051379D002D409F002937B000808AA300D2D3D3008181BB002834 + B2002D3FA2003A3F9300C511CE00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00EE02F4007324B7003C359300598CAE00498CBB004A81A600392A + 71005929A600D608E100FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00EA0CF400608CD00054A2D80053A1D6004F9DD300488B + C2009D11AC00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF008C67DE005CA9DD005CA9DD005AA7DC0056A4D900519F + D400565FAB00EA00EA00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00EC0DF60060A7DE0063B0E30063B0E30061AEE1005CA9DD0056A4 + D9004E94CC00C105C600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00C532ED0066B2E5006BB7E9006BB7E90067B3E60061AEE1005AA7 + DC00539FD500A817BE00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00BA3AE7004989B1004A85AC005895BD0068B2E30064B0E4005CA9 + DE0053A0D400AA1BC300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00CA23E8005098C400539AC7004E93BE00437DA2005190BA005198 + C6003C79A000BE08C300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00F804FC006995D40062ACDA005DA6D3005299C6004284AD003C7F + A900535AA100F300F300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C140ED0071BAEA0068B2E00059A1CF004990BC004378 + AA00C315D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C83EF000808BDF00668BCC007C60C700D116 + E400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object Button2: TBitBtn + Left = 136 + Top = 10 + Width = 149 + Height = 25 + Action = actAnadirContacto + Caption = 'Dar de alta un proveedor' + TabOrder = 1 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947 + 3100694731006947310069473100694731006947310069473100694731006947 + 3100694731006947310069473100694731006947310069473100D5BFB100F6F2 + EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2 + 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB100271E + 80001C0D6F001C0D6F001C0D6F001C0D6F001C0D6F001C0D6F00271E8000E3D5 + CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB1005C51 + A8002F308B00352CA0003526A4003526A500332C9E002E2F8D001C0D6F00E7DB + D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB1008079 + BC00302E95003626A60044329B0045329E003727A700302C95001C0D6F00EAE0 + DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100D1CD + E8004B41A700452D9400718FAB006F91A600463092001C0D6F00EFE8E300EDE4 + DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF + FF00C9B9DD004F9DA000559BC8004E96C2004E8E8F00B0A8C200F2ECE800EFE8 + E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF + FF00A5CDE8005DA9DD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC + E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6 + FA006CB9DF0065B1E50065B0E5005FABDF0056A2D700689EBE00F7F4F100F5F0 + ED00F2ECE800006000000060000000600000B7A2930069473100D5BFB100E9F6 + FA005BB0D5005CA6D50065AFDF0062AEE20058A3D8003285A700FAF8F600F7F4 + F100F7A073000060000033CB510000600000B7A2930069473100D5BFB100F4FA + FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB000060 + 0000006000000060000040D86500006000000060000000600000D5BFB100FFFF + FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF000060 + 000060F898005AF28F004DE57A0040D865003AD25C0000600000D5BFB100FFFF + FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF000060 + 000000600000006000005AF28F00006000000060000000600000D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF + B100D5BFB1000060000060F8980000600000D5BFB100D5BFB100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00006000000060000000600000FF00FF00FF00FF00} + end + object Button3: TBitBtn + Left = 142 + Top = 176 + Width = 198 + Height = 25 + Action = actVerContacto + Caption = 'Ver ficha completa del proveedor...' + TabOrder = 8 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D3BDAE006543 + 2E0065432E0065432E0065432E0065432E0065432E0065432E0065432E006543 + 2E0065432E0065432E0065432E0065432E0065432E0065432E00D3BDAE00F6F1 + EE00B49F8F00B49F8F00B49F8F00B49F8F00B49F8F00B49F8F00B49F8F00B49F + 8F00B49F8F00B49F8F00B49F8F00B49F8F00B49F8F0065432E00D3BDAE00241B + 7C00190B6B00190B6B00190B6B00190B6B00190B6B00190B6B00241B7C00E2D3 + CC00DFCFC700DECDC400DBC9BF00DAC7BD00B49F8F0065432E00D3BDAE00584D + A5002C2D870031299D003123A1003123A20030299B002B2C8900190B6B00E6DA + D3009E7058009E7058009E7058009E705800B49F8F0065432E00D3BDAE007C75 + B9002D2B92003223A300402F9800412F9B003324A4002D299200190B6B00E9DF + D800E6DAD300E3D5CE00E1D1C900DECDC400B49F8F0065432E00D3BDAE00CFCB + E700473DA400412A90006D8BA8006B8DA300422D8E00190B6B00EEE7E200ECE3 + DE009E7058009E7058009E7058009E705800B49F8F0065432E00D3BDAE00FFFF + FF00C7B6DC004B9A9D005198C6004A93C0004A8A8B00ADA5C000F1EBE700EEE7 + E200ECE3DE00E9DFD800E6DAD300E3D5CE00B49F8F0065432E00D3BDAE00FFFF + FF00A2CBE70059A6DC0058A6DC0053A1D7004D97CA009DB7C800F5EFEC00F1EB + E700EEE7E200ECE3DE00E9DFD800E6DAD300B49F8F0065432E00D3BDAE00EBF6 + FA0068B6DE0061AEE40061ADE4005BA8DE00529FD500649BBC00F7F4F000F5EF + EC00F1EBE700EEE7E200ECE3DE00E9DFD800B49F8F0065432E00D3BDAE00E8F6 + FA0057ADD30058A3D30061ACDE005EABE10054A0D6002F81A400FAF8F600F7F4 + F000F79D6F00F79D6F00F79D6F00F79D6F00B49F8F0065432E00D3BDAE00F4FA + FC0074BEDC00529DCB00529AC8004F99C8004089B8002F81A400FDFCFB00FAF8 + F600F7F4F000F5EFEC00F1EBE700EEE7E200B49F8F0065432E00D3BDAE00FFFF + FF00CCE9F4005EB2DD0059A4D300478EBC002F81A400C4DBE500FFFFFF00FDFC + FB00F79D6F00F79D6F00F79D6F00F79D6F00B49F8F0065432E00D3BDAE00FFFF + FF00FFFFFF00CCE9F400A2CBE700A2CBE700CCE9F400FFFFFF00FFFFFF00FFFF + FF00FEFEFD00FCFAF900F9F6F400F6F1EE00F2EDE90065432E00D3BDAE00D3BD + AE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00D3BD + AE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00D3BDAE00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item7: TdxLayoutItem + Caption = 'Button1' + ShowCaption = False + Control = Button1 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item8: TdxLayoutItem + Caption = 'Button2' + ShowCaption = False + Control = Button2 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Nombre:' + Control = edtlNombre + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + Caption = 'NIF/CIF' + Control = edtNIFCIF + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'Calle:' + Control = edtCalle + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group2: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Poblaci'#243'n:' + Control = edtPoblacion + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'C.P.:' + Control = edtCodigoPostal + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item5: TdxLayoutItem + Caption = 'Provincia:' + Control = edtProvincia + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Button3' + ShowCaption = False + Control = Button3 + ControlOptions.ShowBorder = False + end + end + end + object DADataSource: TDADataSource + Left = 8 + Top = 160 + end + object ActionList1: TActionList + Images = PngImageList + Left = 40 + Top = 160 + object actElegirContacto: TAction + Caption = 'Elegir un proveedor' + ImageIndex = 1 + OnExecute = actElegirContactoExecute + end + object actAnadirContacto: TAction + Caption = 'Dar de alta un proveedor' + ImageIndex = 0 + OnExecute = actAnadirContactoExecute + end + object actVerContacto: TAction + Caption = 'Ver ficha completa del proveedor...' + ImageIndex = 2 + OnExecute = actVerContactoExecute + OnUpdate = actVerContactoUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD25200000A4D694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF + F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A + 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5 + 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8 + 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC + 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200 + C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05 + 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2 + 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C + CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97 + 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313 + 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F + 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA + 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED + 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383 + FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A + F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86 + 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432 + 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0 + 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C + 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70 + 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261 + 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA + 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F + 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961 + 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402 + 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2 + 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93 + 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90 + 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452 + A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650 + 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83 + 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7 + 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295 + 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9 + 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685 + 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9 + EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C + 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED + EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB + 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31 + 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87 + 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94 + 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85 + A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6 + 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29 + D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B + 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6 + 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD + D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7 + C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E + 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B + FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5 + 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1 + 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0 + 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67 + BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845 + F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC + A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7 + 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA + 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C + 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423 + F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433 + DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317 + 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2 + A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17 + 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4 + EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E + CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9 + 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD + 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF + B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C + 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD + EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293 + E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7 + 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F + EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6 + EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07 + FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247 + CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73 + ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC + CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F + F73EE77CFEFC2FF784F3FB25D29F33000002254944415478DA95936D48535118 + C7FFB7E58535192C322B880A217A238841238212E94B048EA217E88B26158210 + 548322082422FD52862D30823230BF14A4511823D2185834B60537F37DA516B2 + B6B6E6BABB77F7DC97EE3DE6192303F7C0E1790E9CFFEFFFF0F01C0EA5443D0C + 567782B312D7DB3F642C55EF7DB41D1D1DF5686CEC446FDD1018A0B67A1BBD88 + 89287ECF0CD3BA7CFD56382A76CD3F3AC531485BFB499C3FD7CDEE0C60897F84 + FC90E608E28914E2D959EC3FE1C7DAAA3D1460394B8A8244364B8F5577DD1A9C + 071CDABB015383D7F1EB6B0C9A66620D0D994C06493985A39742283B6D638E67 + 2E57E37EEB407107073DAB301EB800E438ACB0DB613301393187E8F418BC17DF + 83A81AAE3D056E0ED871B8C98D6777C3B853D387078F9F2F002AF13DD80C5ECE + C39AB34214C89284597525DCC7DBA0AA3A85ACF139997311C09A413CD20D71E2 + 95D53F544290CD29D0377A51B5FB18155B670144888637EF3E160362810F087E + BB812D3A6F7690475806DCEB1AB0F940CD3F622B07434201E071AAE8F75DC1CF + A482CA861D20CB74241F0E6372F2337CE302155FBDFDA268273C3B5717008EC0 + 138CBEEC814BE621963B613397CC2ECE215596C7D854124D42843993BF9D8485 + 9102406A6FC1CC1701152A8FE50AE88EE6791D691BC1742C85B391105AEE05FE + DF41B4EE08D26971D1F575B91CA8ED7B4D5D35DDA05937F3A7D18902609F7B13 + BA7ADE96F4AFAC6080E6567FC962B68986B1E4CFB868FC01A6204E3EB3788BD6 + 0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D400000A4D694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF + F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A + 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5 + 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8 + 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC + 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200 + C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05 + 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2 + 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C + CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97 + 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313 + 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F + 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA + 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED + 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383 + FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A + F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86 + 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432 + 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0 + 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C + 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70 + 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261 + 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA + 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F + 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961 + 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402 + 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2 + 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93 + 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90 + 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452 + A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650 + 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83 + 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7 + 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295 + 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9 + 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685 + 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9 + EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C + 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED + EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB + 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31 + 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87 + 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94 + 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85 + A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6 + 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29 + D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B + 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6 + 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD + D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7 + C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E + 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B + FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5 + 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1 + 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0 + 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67 + BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845 + F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC + A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7 + 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA + 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C + 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423 + F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433 + DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317 + 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2 + A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17 + 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4 + EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E + CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9 + 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD + 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF + B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C + 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD + EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293 + E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7 + 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F + EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6 + EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07 + FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247 + CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73 + ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC + CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F + F73EE77CFEFC2FF784F3FB25D29F33000002B44944415478DA7D925F4853511C + C77F67F75EF7A799BB9A6E3A5B85A0203EA820F892502121119A523E14141A41 + F5A244819144E4430F452F99580385A4D0CC2009410B940CCC4CA60BB2F04F43 + 65B639B7DD6DF7EEFED93D9D2D144DE60F0E07CEF97D3FE7F7FBFE0EC218433C + 1042B01973AFAF5C0088DDF007B82CCF7AD0E15C70DFBF63774EC0B6D8D2FD0F + 70F65C6C345BD8673C1FD5F8FD41F0F903E0F571FCA8E34F4DE7E0FCC89E80BE + E6727D7E699ECBA0D7668A920CA15004DCDE0028B204EE7561AEA9FD5B19490D + 2707DCABA8CC31A70F531A0A045186154F042C19FBC1A803F8E5F2E0B61EE7C9 + F9656E2429E0537B75E34658B2CB0A02D6B41FF20F9A00A90A48621478418047 + 2FA71ABA865D5D4901939DD575D66C733FCD3089B398A2804CCA97451144318A + EFDA271BFBC7579203DEB41DCD2EC93FEC6252521204555549FF72C2038E8B28 + 35AD1F2A577DE2E89E5398B6D7F6A6A51ACE25920820168B5721C3C4ECEADCE5 + C79315E4D8BB27A0BBB9DC5A54689E326A198B4AEEE26D6C04C3D2ADE7D34D5F + 7EF83B928E311E2DD6828C9C5CE629C2A6B3D67A1B4A05F20722C49BDE0D9C6B + 084E3804E1EA8BEF4B33DB3FD416A0E550119B9E478F6762B590151408D5D543 + 71552DAC0DBC0561F01504F631E0A534A121257466646CE1E32E40EBF1D227AC + 1E5D677919D8A8025AD041E6892A08BF1F8010B1D46F60C8A2614DC4CB0FBE3A + 4A30877D3B00B74F95B94C14B699C8EB6904601463A0555490290491140A823A + 1A027A1AFC64B77B17EBD7C6BC7D3B00374F972DA6D2E8489AF84F6C9054A055 + 6222F156603410D652C011711CD4BDFCFB9AE7B3BB6307E0FCB1E24B590C7A98 + C150E946ACA2F8EB14B9520940A43410411A08A8587AA78DCDFE1C9A69C01276 + EE9A0219E5019D8D2E305A0C36D05384031A2C2AB2129579C52773FC6ACC4DD2 + 968826B0A9F90BC88690F0ED1F7E3F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FA4944415478DA + A5934B6813511486BF342610A2C50A86A220150BA2145C58D120828ABA2AD2BA + F0B510C48D1B1154A828A55D5877825474AB45375D58A80B9385292DA8A8B151 + 6B6D8DB50F43C1B4C624364C1E73E7E19DA96408B50BCDC0E5CC65E6FFFE7FCE + DCE3324D936A2E577FE46355041BD076B0C9DE280B23E412E3F6FD9A4DDBF107 + 76965F3464524D33109A8E2A7459350E1FBFEC002CF1FCEB1EF28B82F98534C9 + 5C9203A7EFB2A1712F9A6E70A557AD706EA88970FFD1C012E0E8BECDCC3EEF22 + 33338DAECBA7A64E36FB8B5431C389EBB12557B93461D8CED6FE71F8A5036809 + AE271EBA0879177E9F0FB704284A9ED8B7498EB5476D71671F2B276809D63337 + D481B75892EEC86F5429140A7CD7D6D17CEA4E85B3D5070B181A8A3A00AB07C9 + B70F512643567E8410E4F22A46432B8D7B4E2E130BD9C4672F629580A9D02B86 + E76EB0CDF0CA0425A205D8B5F11C5B8F1C5A26B6D6F09B0F0E2058AB11B97495 + D44F95FAB34D881A831F0F26989A9EA0FDEB275B7CEDD6938A1EECDE117000FE + 701FF1A703D4153D28AB6B71E3C2A72C92F6A8C413292E8CBD2F3B8B3F67213A + 3AEE000AB7BB49CC8E11D03CAC92BFDB251D4A5E93B45B90984973FEDD08DDF7 + C22B27889D69239355FE7A54EBD6FA690D0FDAAEBA61DAD59075F4F31707B0BF + 790BBDFD83FF3C076540D7CD9EFF1FA66AC7F93783B161288AF0DFC000000000 + 49454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 72 + Top = 160 + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas new file mode 100644 index 00000000..fca681d5 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDatosYSeleccionProveedor.pas @@ -0,0 +1,213 @@ +unit uViewDatosYSeleccionProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel, + cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos, + ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit, + pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask, + DBCtrls, + uProveedoresController, dxLayoutControl, Buttons; + +type + IViewDatosYSeleccionProveedor = interface(IViewBase) + ['{EE8C51BD-618D-4211-A247-6FA9BD8EBFD9}'] + function GetController: IProveedoresController; + procedure SetController(Value: IProveedoresController); + property Controller: IProveedoresController read GetController write SetController; + + function GetProveedor: IBizProveedor; + procedure SetProveedor(Value: IBizProveedor); + property Proveedor: IBizProveedor read GetProveedor write SetProveedor; + + function GetOnProveedorChanged : TNotifyEvent; + procedure SetOnProveedorChanged (const Value : TNotifyEvent); + property OnProveedorChanged : TNotifyEvent read GetOnProveedorChanged + write SetOnProveedorChanged; + + function GetMsgElegirProveedor: String; + procedure SetMsgElegirProveedor(const Value: String); + property MsgElegirProveedor : String read GetMsgElegirProveedor + write SetMsgElegirProveedor; + end; + + TfrViewDatosYSeleccionProveedor = class(TfrViewBase, IViewDatosYSeleccionProveedor) + DADataSource: TDADataSource; + ActionList1: TActionList; + actElegirContacto: TAction; + actAnadirContacto: TAction; + actVerContacto: TAction; + PngImageList: TPngImageList; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + edtlNombre: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + edtNIFCIF: TcxDBTextEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtCalle: TcxDBTextEdit; + dxLayoutControl1Item4: TdxLayoutItem; + edtPoblacion: TcxDBTextEdit; + dxLayoutControl1Item5: TdxLayoutItem; + edtProvincia: TcxDBTextEdit; + dxLayoutControl1Item6: TdxLayoutItem; + edtCodigoPostal: TcxDBTextEdit; + Button1: TBitBtn; + dxLayoutControl1Item7: TdxLayoutItem; + Button2: TBitBtn; + dxLayoutControl1Item8: TdxLayoutItem; + Button3: TBitBtn; + dxLayoutControl1Item9: TdxLayoutItem; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + procedure actElegirContactoExecute(Sender: TObject); + procedure actAnadirContactoExecute(Sender: TObject); + procedure actVerContactoExecute(Sender: TObject); + procedure actVerContactoUpdate(Sender: TObject); + private + FController : IProveedoresController; + FProveedor : IBizProveedor; + FOnProveedorChanged : TNotifyEvent; + FMsgElegirProveedor : String; + protected + function GetController: IProveedoresController; + procedure SetController(Value: IProveedoresController); + function GetProveedor: IBizProveedor; + procedure SetProveedor(Value: IBizProveedor); + function GetOnProveedorChanged : TNotifyEvent; + procedure SetOnProveedorChanged (const Value : TNotifyEvent); + function GetMsgElegirProveedor: String; + procedure SetMsgElegirProveedor(const Value: String); + procedure SetReadOnly(Value: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + property MsgElegirProveedor : String read GetMsgElegirProveedor write SetMsgElegirProveedor; + property Controller: IProveedoresController read GetController write SetController; + property Proveedor: IBizProveedor read GetProveedor write SetProveedor; + property OnProveedorChanged : TNotifyEvent read GetOnProveedorChanged write SetOnProveedorChanged; + end; + +implementation + +{$R *.dfm} + +uses + uDataModuleProveedores, Math; + +procedure TfrViewDatosYSeleccionProveedor.actElegirContactoExecute(Sender: TObject); +var + AProveedor : IBizProveedor; +begin + inherited; + AProveedor := (Controller.ElegirContacto(Controller.BuscarTodos, + FMsgElegirProveedor, False) as IBizProveedor); + + if Assigned(AProveedor) then + begin + Self.Update; + ShowHourglassCursor; + try + Proveedor := AProveedor; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfrViewDatosYSeleccionProveedor.actAnadirContactoExecute( + Sender: TObject); +var + AProveedor : IBizProveedor; +begin + inherited; + AProveedor := (FController.Nuevo as IBizProveedor); + FController.Ver(AProveedor); + Proveedor := AProveedor; +end; + +procedure TfrViewDatosYSeleccionProveedor.actVerContactoExecute(Sender: TObject); +begin + inherited; + FController.Ver(Proveedor); +end; + +procedure TfrViewDatosYSeleccionProveedor.actVerContactoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0); +end; + +constructor TfrViewDatosYSeleccionProveedor.Create(AOwner: TComponent); +begin + inherited; + FMsgElegirProveedor := ''; +end; + +function TfrViewDatosYSeleccionProveedor.GetProveedor: IBizProveedor; +begin + Result := FProveedor; +end; + +function TfrViewDatosYSeleccionProveedor.GetController: IProveedoresController; +begin + Result := FController; +end; + +function TfrViewDatosYSeleccionProveedor.GetMsgElegirProveedor: String; +begin + Result := FMsgElegirProveedor; +end; + +procedure TfrViewDatosYSeleccionProveedor.SetProveedor(Value: IBizProveedor); +begin + FProveedor := Value; + if Assigned(FProveedor) then + begin + DADataSource.DataTable := FProveedor.DataTable; + if not FProveedor.DataTable.Active then + FProveedor.DataTable.Active := True; + end + else + DADataSource.DataTable := NIL; + + if Assigned(FOnProveedorChanged) then + FOnProveedorChanged(Self); +end; + +procedure TfrViewDatosYSeleccionProveedor.SetReadOnly(Value: Boolean); +begin + inherited; + + if ReadOnly then + begin + actAnadirContacto.Enabled := False; + actElegirContacto.Enabled := False; + end; +end; + +procedure TfrViewDatosYSeleccionProveedor.SetController(Value: IProveedoresController); +begin + FController := Value; +end; + +procedure TfrViewDatosYSeleccionProveedor.SetMsgElegirProveedor( + const Value: String); +begin + FMsgElegirProveedor := Value; +end; + +function TfrViewDatosYSeleccionProveedor.GetOnProveedorChanged: TNotifyEvent; +begin + Result := FOnProveedorChanged; +end; + +procedure TfrViewDatosYSeleccionProveedor.SetOnProveedorChanged( + const Value: TNotifyEvent); +begin + FOnProveedorChanged := Value; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewDireccion.dfm b/Source/Modulos/Contactos/Views/uViewDireccion.dfm new file mode 100644 index 00000000..a8deb648 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDireccion.dfm @@ -0,0 +1,120 @@ +inherited frViewDireccion: TfrViewDireccion + Width = 384 + Height = 152 + ExplicitWidth = 384 + ExplicitHeight = 152 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 384 + Height = 152 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + DesignSize = ( + 384 + 152) + object eCalle: TcxDBTextEdit + Left = 96 + Top = 28 + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 656 + end + object ePoblacion: TcxDBTextEdit + Left = 96 + Top = 55 + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 405 + end + object eCodigoPostal: TcxDBTextEdit + Left = 96 + Top = 82 + DataBinding.DataField = 'CODIGO_POSTAL' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 66 + end + object eProvincia: TcxDBTextEdit + Left = 96 + Top = 109 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 585 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Direcci'#243'n' + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Direcci'#243'n:' + Control = eCalle + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Poblaci'#243'n:' + Control = ePoblacion + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'C'#243'digo postal:' + Control = eCodigoPostal + ControlOptions.MinWidth = 5 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item4: TdxLayoutItem + Caption = 'Provincia:' + Control = eProvincia + ControlOptions.ShowBorder = False + end + end + end + end + end + object DADataSource: TDADataSource + Left = 24 + Top = 32 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewDireccion.pas b/Source/Modulos/Contactos/Views/uViewDireccion.pas new file mode 100644 index 00000000..c33bd090 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDireccion.pas @@ -0,0 +1,39 @@ +unit uViewDireccion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, Mask, DBCtrls, DB, uDADataTable, ExtCtrls, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, dxLayoutControl; + +type + TfrViewDireccion = class(TfrViewBase) + DADataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + eProvincia: TcxDBTextEdit; + eCalle: TcxDBTextEdit; + ePoblacion: TcxDBTextEdit; + eCodigoPostal: TcxDBTextEdit; + dxLayoutControl1Item1: TdxLayoutItem; + dxLayoutControl1Item2: TdxLayoutItem; + dxLayoutControl1Item3: TdxLayoutItem; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Item4: TdxLayoutItem; + protected + end; + +implementation + +{$R *.dfm} + +{initialization + RegisterClass(TfrViewDireccion); + +finalization + UnRegisterClass(TfrViewDireccion);} + +end. diff --git a/Source/Modulos/Contactos/Views/uViewDireccionesEntrega.dfm b/Source/Modulos/Contactos/Views/uViewDireccionesEntrega.dfm new file mode 100644 index 00000000..862fd540 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDireccionesEntrega.dfm @@ -0,0 +1,79 @@ +inherited frViewDireccionesEntrega: TfrViewDireccionesEntrega + Width = 583 + Height = 464 + ExplicitWidth = 583 + ExplicitHeight = 464 + inherited cxGrid: TcxGrid + Width = 583 + Height = 439 + ExplicitWidth = 583 + ExplicitHeight = 439 + inherited cxGridView: TcxGridDBTableView + OnDblClick = cxGridViewDblClick + OptionsData.Appending = False + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + object cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Nombre' + DataBinding.FieldName = 'NOMBRE' + Width = 88 + end + object cxGridViewDIRECCION: TcxGridDBColumn + Caption = 'Direcci'#243'n' + DataBinding.FieldName = 'CALLE' + PropertiesClassName = 'TcxTextEditProperties' + Width = 128 + end + object cxGridViewPOBLACION: TcxGridDBColumn + Caption = 'Poblaci'#243'n' + DataBinding.FieldName = 'POBLACION' + PropertiesClassName = 'TcxTextEditProperties' + BestFitMaxWidth = 64 + Width = 103 + end + object cxGridViewCP: TcxGridDBColumn + Caption = 'Cod. postal' + DataBinding.FieldName = 'CODIGO_POSTAL' + PropertiesClassName = 'TcxTextEditProperties' + Visible = False + Width = 76 + end + object cxGridViewPROVINCIA: TcxGridDBColumn + Caption = 'Provincia' + DataBinding.FieldName = 'PROVINCIA' + PropertiesClassName = 'TcxTextEditProperties' + Visible = False + BestFitMaxWidth = 64 + Width = 213 + end + object cxGridViewPERSONA_CONTACTO: TcxGridDBColumn + Caption = 'Persona de contacto' + DataBinding.FieldName = 'PERSONA_CONTACTO' + PropertiesClassName = 'TcxTextEditProperties' + Width = 92 + end + object cxGridViewTELEFONO: TcxGridDBColumn + DataBinding.FieldName = 'TELEFONO' + Width = 54 + end + object cxGridViewEMAIL: TcxGridDBColumn + DataBinding.FieldName = 'EMAIL' + Width = 50 + end + object cxGridViewPORTE: TcxGridDBColumn + DataBinding.FieldName = 'PORTE' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Width = 54 + end + end + end + inherited ToolBar1: TToolBar + Width = 583 + ExplicitWidth = 583 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewDireccionesEntrega.pas b/Source/Modulos/Contactos/Views/uViewDireccionesEntrega.pas new file mode 100644 index 00000000..10437926 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewDireccionesEntrega.pas @@ -0,0 +1,68 @@ +unit uViewDireccionesEntrega; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, + cxGridDBBandedTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + uDADataTable, Grids, DBGrids, ActnList, ImgList, PngImageList, ComCtrls, + ToolWin, cxGridDBTableView, uViewDetallesGenerico, cxCurrencyEdit; + +type + TfrViewDireccionesEntrega = class(TfrViewDetallesGenerico) + cxGridViewDIRECCION: TcxGridDBColumn; + cxGridViewPOBLACION: TcxGridDBColumn; + cxGridViewCP: TcxGridDBColumn; + cxGridViewPROVINCIA: TcxGridDBColumn; + cxGridViewPERSONA_CONTACTO: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewTELEFONO: TcxGridDBColumn; + cxGridViewEMAIL: TcxGridDBColumn; + cxGridViewPORTE: TcxGridDBColumn; + procedure cxGridViewDblClick(Sender: TObject); + protected + procedure AnadirInterno; override; + procedure ModificarInterno; override; + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +uses + uDireccionesContactoController, uBizDireccionesContacto; + +procedure TfrViewDireccionesEntrega.AnadirInterno; +begin + inherited; + try + with TDireccionesContactoController.Create do + Ver((dsDetalles.DataTable) as IBizDireccionesContacto); + finally + if (dsDetalles.DataTable.State in dsEditModes) then + dsDetalles.DataTable.Post; + end; +end; + +procedure TfrViewDireccionesEntrega.cxGridViewDblClick(Sender: TObject); +begin + inherited; + actModificar.Execute; +end; + +procedure TfrViewDireccionesEntrega.ModificarInterno; +begin + inherited; + with TDireccionesContactoController.Create do + Ver((dsDetalles.DataTable) as IBizDireccionesContacto); +end; + +end. + + + diff --git a/Source/Modulos/Contactos/Views/uViewEmpleado.dfm b/Source/Modulos/Contactos/Views/uViewEmpleado.dfm new file mode 100644 index 00000000..fad2e9eb --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewEmpleado.dfm @@ -0,0 +1,238 @@ +inherited frViewEmpleado: TfrViewEmpleado + Height = 391 + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitHeight = 391 + inherited dxLayoutControlContacto: TdxLayoutControl + Height = 391 + ExplicitHeight = 391 + inherited eCalle: TcxDBTextEdit + Left = 121 + Top = 193 + TabOrder = 7 + ExplicitLeft = 121 + ExplicitTop = 193 + ExplicitWidth = 260 + Width = 260 + end + inherited eProvincia: TcxDBTextEdit + Left = 121 + Top = 247 + TabOrder = 10 + ExplicitLeft = 121 + ExplicitTop = 247 + ExplicitWidth = 260 + Width = 260 + end + inherited ePoblacion: TcxDBTextEdit + Left = 121 + Top = 220 + TabOrder = 8 + ExplicitLeft = 121 + ExplicitTop = 220 + ExplicitWidth = 159 + Width = 159 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 348 + Top = 220 + TabOrder = 9 + ExplicitLeft = 348 + ExplicitTop = 220 + end + inherited eObservaciones: TcxDBMemo + Top = 304 + TabOrder = 18 + ExplicitTop = 304 + ExplicitHeight = 148 + Height = 148 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 538 + TabOrder = 12 + ExplicitLeft = 538 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 538 + TabOrder = 11 + ExplicitLeft = 538 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 538 + TabOrder = 13 + ExplicitLeft = 538 + end + inherited eFax: TcxDBTextEdit + Left = 538 + TabOrder = 14 + ExplicitLeft = 538 + end + inherited eNombre: TcxDBTextEdit + Left = 121 + ExplicitLeft = 121 + ExplicitWidth = 263 + Width = 263 + end + object eFechaNacimiento: TcxDBDateEdit [13] + Left = 121 + Top = 82 + DataBinding.DataField = 'FECHA_NACIMIENTO' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 121 + end + object eFechaAltaEmpresa: TcxDBDateEdit [14] + Left = 262 + Top = 82 + DataBinding.DataField = 'FECHA_ALTA_EMPRESA' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Width = 235 + end + inherited eNIFCIF: TcxDBTextEdit + Left = 289 + ExplicitLeft = 289 + ExplicitWidth = 100 + Width = 100 + end + inherited eMailTrabajo: TcxDBHyperLinkEdit + Left = 538 + Properties.Prefix = 'mailto:' + TabOrder = 15 + ExplicitLeft = 538 + ExplicitWidth = 129 + Width = 129 + end + inherited eMailParticular: TcxDBHyperLinkEdit + Left = 538 + Properties.Prefix = 'mailto:' + TabOrder = 16 + ExplicitLeft = 538 + ExplicitWidth = 165 + Width = 165 + end + object cbCategoria: TcxDBComboBox [18] + Left = 121 + Top = 109 + DataBinding.DataField = 'CATEGORIA' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.OnInitPopup = cbCategoriaPropertiesInitPopup + Properties.OnValidate = cbCategoriaPropertiesValidate + 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 = 5 + Width = 225 + end + inherited ePaginaWeb: TcxDBHyperLinkEdit + Left = 538 + TabOrder = 17 + ExplicitLeft = 538 + ExplicitWidth = 165 + Width = 165 + end + inherited eReferencia: TcxDBTextEdit + Left = 121 + ExplicitLeft = 121 + end + inherited ePersonaContacto: TcxDBTextEdit + Left = 121 + Top = 166 + TabOrder = 6 + ExplicitLeft = 121 + ExplicitTop = 166 + end + inherited dxLayoutControlContactoGroup_Root: TdxLayoutGroup + inherited dxLayoutControlContactoGroup9: TdxLayoutGroup + inherited dxLayoutControlContactoGroup4: TdxLayoutGroup + inherited dxLayoutControlContactoGroup1: TdxLayoutGroup + inherited dxLayoutControlContactoGroup16: TdxLayoutGroup + inherited dxLayoutControlContactoItem14: TdxLayoutItem + Caption = 'DNI:' + end + end + inherited dxLayoutControlContactoItem13: TdxLayoutItem + Caption = 'Nombre y apellidos:' + end + object dxLayoutControlContactoGroup10: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControlContactoItem16: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Fecha nacimiento:' + Control = eFechaNacimiento + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem19: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Fecha de alta:' + Control = eFechaAltaEmpresa + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoItem20: TdxLayoutItem + Caption = 'Categor'#237'a:' + Control = cbCategoria + ControlOptions.ShowBorder = False + end + end + inherited dxLayoutControlContactoGroup3: TdxLayoutGroup + inherited dxLayoutControlContactoItem167: TdxLayoutItem + Visible = False + end + end + end + inherited dxLayoutControlContactoGroup6: TdxLayoutGroup + inherited dxLayoutControlContactoGroup2: TdxLayoutGroup + inherited dxLayoutControlContactoItem9: TdxLayoutItem + Visible = True + end + inherited dxLayoutControlContactoItem12: TdxLayoutItem + Visible = False + end + end + inherited dxLayoutControlContactoGroup5: TdxLayoutGroup + Visible = False + end + end + end + end + end + inherited dsContacto: TDADataSource + Left = 32 + Top = 80 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewEmpleado.pas b/Source/Modulos/Contactos/Views/uViewEmpleado.pas new file mode 100644 index 00000000..af7814bf --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewEmpleado.pas @@ -0,0 +1,96 @@ +unit uViewEmpleado; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, dxLayoutLookAndFeels, DB, uDADataTable, + dxLayoutControl, cxMemo, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxControls, + cxMaskEdit, cxSpinEdit, ImgList, PngImageList, ActnList, cxHyperLinkEdit, + Buttons, PngSpeedButton, cxDropDownEdit, cxCalendar, cxGraphics, uGruposEmpleadoController; + +type + IViewEmpleado = interface(IViewContacto) + ['{245F4A36-39A4-4081-9826-F05FBBC729AE}'] + end; + + TfrViewEmpleado = class(TfrViewContacto, IViewEmpleado) + eFechaNacimiento: TcxDBDateEdit; + dxLayoutControlContactoItem16: TdxLayoutItem; + dxLayoutControlContactoItem19: TdxLayoutItem; + eFechaAltaEmpresa: TcxDBDateEdit; + dxLayoutControlContactoGroup10: TdxLayoutGroup; + dxLayoutControlContactoItem20: TdxLayoutItem; + cbCategoria: TcxDBComboBox; + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure cbCategoriaPropertiesInitPopup(Sender: TObject); + procedure cbCategoriaPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + protected + FGrupoController: IGruposEmpleadoController; + public + { Public declarations } + end; + +implementation +{$R *.dfm} + +uses + uBizGruposEmpleado, uBizContactos; + +procedure TfrViewEmpleado.cbCategoriaPropertiesInitPopup(Sender: TObject); +begin + inherited; + with cbCategoria.Properties.Items do + begin + BeginUpdate; + try + Clear; + AddStrings(FGrupoController.DarListaGruposEmpleado); + finally + EndUpdate; + end; + end; +end; + +procedure TfrViewEmpleado.cbCategoriaPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +var + AGrupo : IBizGrupoEmpleado; +begin + inherited; + with (Sender as TcxDBComboBox) do + begin + if (Length(DisplayValue) > 0) and (DisplayValue <> (Contacto as IBizEmpleado).CATEGORIA) then + if Properties.LookupItems.IndexOf(DisplayValue) < 0 then + begin + Properties.LookupItems.BeginUpdate; + AGrupo := FGrupoController.BuscarTodos; + AGrupo.DataTable.Active := True; + try + FGrupoController.Anadir(AGrupo); + AGrupo.DESCRIPCION := DisplayValue; + FGrupoController.Guardar(AGrupo); + Properties.LookupItems.Add(DisplayValue); + finally + Properties.LookupItems.EndUpdate; + AGrupo := NIL; + end; + end; + end; +end; + +procedure TfrViewEmpleado.CustomViewCreate(Sender: TObject); +begin + inherited; + FGrupoController := TGruposEmpleadoController.Create; +end; + +procedure TfrViewEmpleado.CustomViewDestroy(Sender: TObject); +begin + FGrupoController := NIL; + inherited; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewEmpleados.dfm b/Source/Modulos/Contactos/Views/uViewEmpleados.dfm new file mode 100644 index 00000000..9980a1ed --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewEmpleados.dfm @@ -0,0 +1,60 @@ +inherited frViewEmpleados: TfrViewEmpleados + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 agentes' + Kind = skCount + FieldName = 'ID' + Column = cxGridViewNIF_CIF + end> + inherited cxGridViewICONO: TcxGridDBColumn + BestFitMaxWidth = 22 + MinWidth = 22 + Options.HorzSizing = False + Width = 22 + end + inherited cxGridViewNIF_CIF: TcxGridDBColumn + Caption = 'DNI' + end + inherited cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Nombre y apellidos' + end + inherited cxGridViewTELEFONO_2: TcxGridDBColumn + Visible = True + end + inherited cxGridViewEMAIL_1: TcxGridDBColumn + Visible = False + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited txtFiltroTodo: TcxTextEdit + ExplicitWidth = 457 + Width = 457 + end + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 239 + Width = 239 + end + inherited edtFechaFinFiltro: TcxDateEdit + ExplicitWidth = 219 + Width = 219 + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.791248726860000000 + BuiltInReportLink = True + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end +end diff --git a/Source/Modulos/Contactos/Views/uViewEmpleados.pas b/Source/Modulos/Contactos/Views/uViewEmpleados.pas new file mode 100644 index 00000000..840724b8 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewEmpleados.pas @@ -0,0 +1,28 @@ +unit uViewEmpleados; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, + dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, ImgList, PngImageList, cxGridCustomPopupMenu, + cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGridLnk, uDADataTable, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, dxPgsDlg, ActnList, TB2Item, + TBX, TB2Toolbar, TBXDkPanels, TB2Dock, uViewFiltroBase; + +type + IViewEmpleados = interface(IViewContactos) + ['{15826F4B-664B-4DDA-B9CD-723CE8843094}'] + end; + + TfrViewEmpleados = class(TfrViewContactos, IViewEmpleados) + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Modulos/Contactos/Views/uViewInternet.dfm b/Source/Modulos/Contactos/Views/uViewInternet.dfm new file mode 100644 index 00000000..c28a0d15 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewInternet.dfm @@ -0,0 +1,89 @@ +inherited frViewInternet: TfrViewInternet + Width = 247 + Height = 125 + ExplicitWidth = 247 + ExplicitHeight = 125 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 247 + Height = 125 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth] + ExplicitWidth = 630 + object eMailParticular: TcxDBTextEdit + Left = 86 + Top = 55 + DataBinding.DataField = 'EMAIL_2' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 165 + end + object eMailTrabajo: TcxDBTextEdit + Left = 86 + Top = 28 + DataBinding.DataField = 'EMAIL_1' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 165 + end + object ePaginaWeb: TcxDBTextEdit + Left = 86 + Top = 82 + DataBinding.DataField = 'PAGINA_WEB' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 165 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Internet' + object dxLayoutControl1Item2: TdxLayoutItem + Caption = 'Trabajo:' + Control = eMailTrabajo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Particular:' + Control = eMailParticular + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'P'#225'gina web:' + Control = ePaginaWeb + ControlOptions.ShowBorder = False + end + end + end + end + object DADataSource: TDADataSource + Left = 152 + Top = 8 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewInternet.pas b/Source/Modulos/Contactos/Views/uViewInternet.pas new file mode 100644 index 00000000..7992ee63 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewInternet.pas @@ -0,0 +1,37 @@ +unit uViewInternet; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, dxLayoutControl; + +type + TfrViewInternet = class(TfrViewBase) + DADataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + eMailParticular: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + eMailTrabajo: TcxDBTextEdit; + dxLayoutControl1Item3: TdxLayoutItem; + ePaginaWeb: TcxDBTextEdit; + dxLayoutControl1Group1: TdxLayoutGroup; + end; + +implementation + +{$R *.dfm} + +{initialization + RegisterClass(TfrViewInternet); + +finalization + + UnRegisterClass(TfrViewInternet);} + +end. + diff --git a/Source/Modulos/Contactos/Views/uViewProveedor.dfm b/Source/Modulos/Contactos/Views/uViewProveedor.dfm new file mode 100644 index 00000000..6288153c --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewProveedor.dfm @@ -0,0 +1,339 @@ +inherited frViewProveedor: TfrViewProveedor + Height = 454 + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitHeight = 454 + inherited dxLayoutControlContacto: TdxLayoutControl + Height = 454 + ExplicitHeight = 454 + inherited PngSpeedButton1: TPngSpeedButton + Left = 612 + ExplicitLeft = 612 + end + inherited PngSpeedButton2: TPngSpeedButton + Left = 612 + ExplicitLeft = 612 + end + inherited PngSpeedButton3: TPngSpeedButton + Left = 612 + ExplicitLeft = 612 + end + object Label1: TLabel [3] + Left = 366 + Top = 307 + Width = 342 + Height = 26 + Caption = + '(Al incluir un proveedor en la tienda, todos los materiales que ' + + 'sirve ese proveedor ser'#225'n tambi'#233'n incluidos)' + WordWrap = True + end + inherited eCalle: TcxDBTextEdit + Left = 124 + Top = 304 + TabOrder = 9 + ExplicitLeft = 124 + ExplicitTop = 304 + ExplicitWidth = 264 + Width = 264 + end + inherited eProvincia: TcxDBTextEdit + Left = 124 + Top = 358 + TabOrder = 12 + ExplicitLeft = 124 + ExplicitTop = 358 + ExplicitWidth = 264 + Width = 264 + end + inherited ePoblacion: TcxDBTextEdit + Left = 124 + Top = 331 + TabOrder = 10 + ExplicitLeft = 124 + ExplicitTop = 331 + ExplicitWidth = 163 + Width = 163 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 271 + Top = 331 + TabOrder = 11 + ExplicitLeft = 271 + ExplicitTop = 331 + end + inherited eObservaciones: TcxDBMemo + Top = 415 + TabOrder = 21 + ExplicitTop = 415 + ExplicitHeight = 20 + Height = 20 + end + object cxDBCheckBox1: TcxDBCheckBox [9] + Left = 366 + Top = 280 + Caption = 'Incluir este proveedor en la tienda web' + DataBinding.DataField = 'TIENDA_WEB' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.MultiLine = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 20 + Width = 310 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 461 + TabOrder = 14 + ExplicitLeft = 461 + ExplicitWidth = 91 + Width = 91 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 461 + TabOrder = 13 + ExplicitLeft = 461 + ExplicitWidth = 127 + Width = 127 + end + object cxDBCheckBox2: TcxDBCheckBox [12] + Left = 22 + Top = 193 + Caption = 'El proveedor est'#225' homologado' + DataBinding.DataField = 'HOMOLOGADO' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 1 + Properties.ValueUnchecked = 0 + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 6 + Width = 326 + end + object eCertificaciones: TcxDBTextEdit [13] + Left = 124 + Top = 220 + DataBinding.DataField = 'CERTIFICACION' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 7 + Width = 227 + end + object cbGrupoProveedor: TcxDBComboBox [14] + Left = 124 + Top = 136 + DataBinding.DataField = 'GRUPO_PROVEEDOR' + DataBinding.DataSource = dsContacto + Properties.ImmediatePost = True + Properties.OnInitPopup = cbGrupoProveedorPropertiesInitPopup + Properties.OnValidate = cbGrupoProveedorPropertiesValidate + 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 = 5 + Width = 227 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 461 + TabOrder = 15 + ExplicitLeft = 461 + ExplicitWidth = 155 + Width = 155 + end + inherited eFax: TcxDBTextEdit + Left = 461 + TabOrder = 16 + ExplicitLeft = 461 + ExplicitWidth = 121 + Width = 121 + end + inherited eNombre: TcxDBTextEdit + Left = 124 + ExplicitLeft = 124 + ExplicitWidth = 221 + Width = 221 + end + object eDescripcionProveedor: TcxDBTextEdit [18] + Left = 124 + Top = 82 + DataBinding.DataField = 'DESCRIPCION_PROVEEDOR' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 3 + Width = 221 + end + object eCodigoAsignado: TcxDBTextEdit [19] + Left = 124 + Top = 109 + DataBinding.DataField = 'CODIGO_ASIGNADO' + DataBinding.DataSource = dsContacto + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 4 + Width = 221 + end + inherited eNIFCIF: TcxDBTextEdit + Left = 197 + ExplicitLeft = 197 + ExplicitWidth = 205 + Width = 205 + end + inherited eMailTrabajo: TcxDBHyperLinkEdit + Left = 461 + Properties.Prefix = 'mailto:' + TabOrder = 17 + ExplicitLeft = 461 + ExplicitWidth = 133 + Width = 133 + end + inherited eMailParticular: TcxDBHyperLinkEdit + Left = 461 + Properties.Prefix = 'mailto:' + TabOrder = 18 + ExplicitLeft = 461 + ExplicitWidth = 133 + Width = 133 + end + inherited ePaginaWeb: TcxDBHyperLinkEdit + Left = 461 + TabOrder = 19 + ExplicitLeft = 461 + ExplicitWidth = 133 + Width = 133 + end + inherited eReferencia: TcxDBTextEdit + Left = 124 + ExplicitLeft = 124 + ExplicitWidth = 38 + Width = 38 + end + inherited ePersonaContacto: TcxDBTextEdit + Left = 124 + Top = 277 + TabOrder = 8 + ExplicitLeft = 124 + ExplicitTop = 277 + ExplicitWidth = 256 + Width = 256 + end + inherited dxLayoutControlContactoGroup_Root: TdxLayoutGroup + inherited dxLayoutControlContactoGroup9: TdxLayoutGroup + inherited dxLayoutControlContactoGroup4: TdxLayoutGroup + inherited dxLayoutControlContactoGroup1: TdxLayoutGroup + object dxLayoutControlContactoItem21: TdxLayoutItem + Caption = 'Proveedor de...:' + Control = eDescripcionProveedor + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem24: TdxLayoutItem + Caption = 'C'#243'digo de cliente:' + Control = eCodigoAsignado + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem20: TdxLayoutItem + Caption = 'Grupo de proveedor' + Control = cbGrupoProveedor + ControlOptions.ShowBorder = False + end + end + object dxLayoutControlContactoGroup14: TdxLayoutGroup [1] + Caption = 'Homologaci'#243'n' + object dxLayoutControlContactoItem22: TdxLayoutItem + Caption = 'El proveedor est'#225' homologado' + ShowCaption = False + Control = cxDBCheckBox2 + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem23: TdxLayoutItem + Caption = 'Certificaciones:' + Control = eCertificaciones + ControlOptions.ShowBorder = False + end + end + end + inherited dxLayoutControlContactoGroup6: TdxLayoutGroup + object dxLayoutControlContactoGroup10: TdxLayoutGroup + Caption = 'Tienda web' + Visible = False + object dxLayoutControlContactoItem19: TdxLayoutItem + ShowCaption = False + Control = cxDBCheckBox1 + ControlOptions.ShowBorder = False + end + object dxLayoutControlContactoItem16: TdxLayoutItem + ShowCaption = False + Control = Label1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + end + end + end + end + end + inherited dsContacto: TDADataSource + Left = 32 + Top = 88 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewProveedor.pas b/Source/Modulos/Contactos/Views/uViewProveedor.pas new file mode 100644 index 00000000..736a3b13 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewProveedor.pas @@ -0,0 +1,107 @@ +unit uViewProveedor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContacto, dxLayoutLookAndFeels, DB, uDADataTable, + dxLayoutControl, cxMemo, cxDBEdit, cxContainer, cxEdit, cxTextEdit, cxControls, + cxMaskEdit, cxSpinEdit, ImgList, PngImageList, ActnList, cxHyperLinkEdit, + Buttons, PngSpeedButton, StdCtrls, cxCheckBox, cxGraphics, cxDropDownEdit, + uGruposProveedorController; + +type + IViewProveedor = interface(IViewContacto) + ['{D251B289-767A-489A-A862-BE564C79EFE6}'] + end; + + TfrViewProveedor = class(TfrViewContacto, IViewProveedor) + dxLayoutControlContactoGroup10: TdxLayoutGroup; + dxLayoutControlContactoItem16: TdxLayoutItem; + Label1: TLabel; + dxLayoutControlContactoItem19: TdxLayoutItem; + cxDBCheckBox1: TcxDBCheckBox; + dxLayoutControlContactoItem22: TdxLayoutItem; + cxDBCheckBox2: TcxDBCheckBox; + dxLayoutControlContactoItem23: TdxLayoutItem; + eCertificaciones: TcxDBTextEdit; + dxLayoutControlContactoGroup14: TdxLayoutGroup; + dxLayoutControlContactoItem20: TdxLayoutItem; + cbGrupoProveedor: TcxDBComboBox; + dxLayoutControlContactoItem21: TdxLayoutItem; + eDescripcionProveedor: TcxDBTextEdit; + dxLayoutControlContactoItem24: TdxLayoutItem; + eCodigoAsignado: TcxDBTextEdit; + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure cbGrupoProveedorPropertiesInitPopup(Sender: TObject); + procedure cbGrupoProveedorPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + protected + FGrupoController: IGruposProveedorController; + public + + end; + +implementation +{$R *.dfm} + +uses + uBizGruposProveedor, uBizContactos; + + +procedure TfrViewProveedor.cbGrupoProveedorPropertiesInitPopup(Sender: TObject); +begin + inherited; + with cbGrupoProveedor.Properties.Items do + begin + BeginUpdate; + try + Clear; + AddStrings(FGrupoController.DarListaGruposProveedor); + finally + EndUpdate; + end; + end; +end; + +procedure TfrViewProveedor.cbGrupoProveedorPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +var + AGrupo : IBizGrupoProveedor; +begin + inherited; + with (Sender as TcxDBComboBox) do + begin + if (Length(DisplayValue) > 0) and (DisplayValue <> (Contacto as IBizProveedor).GRUPO_PROVEEDOR) then + if Properties.LookupItems.IndexOf(DisplayValue) < 0 then + begin + Properties.LookupItems.BeginUpdate; + AGrupo := FGrupoController.BuscarTodos; + AGrupo.DataTable.Active := True; + try + FGrupoController.Anadir(AGrupo); + AGrupo.DESCRIPCION := DisplayValue; + FGrupoController.Guardar(AGrupo); + Properties.LookupItems.Add(DisplayValue); + finally + Properties.LookupItems.EndUpdate; + AGrupo := NIL; + end; + end; + end; +end; + +procedure TfrViewProveedor.CustomViewCreate(Sender: TObject); +begin + inherited; + FGrupoController := TGruposProveedorController.Create; +end; + +procedure TfrViewProveedor.CustomViewDestroy(Sender: TObject); +begin + FGrupoController := Nil; + inherited; +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.dfm b/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.dfm new file mode 100644 index 00000000..d684b2a4 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.dfm @@ -0,0 +1,244 @@ +inherited frViewProveedorDatosComerciales: TfrViewProveedorDatosComerciales + Width = 642 + Height = 266 + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitWidth = 642 + ExplicitHeight = 266 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 642 + Height = 129 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth] + object Label1: TLabel + Left = 417 + Top = 28 + Width = 190 + Height = 26 + Caption = + 'Puede indicar el descuento por defecto acordado con este proveed' + + 'or.' + Transparent = True + WordWrap = True + end + object cbRegimenIVA: TcxDBComboBox + Left = 107 + Top = 28 + DataBinding.DataField = 'REGIMEN_IVA' + DataBinding.DataSource = dsDatosComerciales + Properties.DropDownListStyle = lsFixedList + Properties.ImmediatePost = True + Properties.ImmediateUpdateText = True + Properties.OnInitPopup = cbRegimenIVAPropertiesInitPopup + 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 = 0 + Width = 121 + end + object cbFormaPago: TcxDBLookupComboBox + Left = 107 + Top = 55 + DataBinding.DataField = 'ID_FORMA_PAGO' + DataBinding.DataSource = dsDatosComerciales + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'REFERENCIA' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsFormaPago + 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 = 1 + Width = 121 + end + object bFormasPago: TButton + Left = 255 + Top = 55 + Width = 132 + Height = 21 + Caption = 'Ver las formas de pago...' + TabOrder = 2 + OnClick = bFormasPagoClick + end + object eIVA: TcxDBLookupComboBox + Left = 107 + Top = 82 + DataBinding.DataField = 'ID_TIPO_IVA' + DataBinding.DataSource = dsDatosComerciales + Properties.KeyFieldNames = 'ID' + Properties.ListColumns = < + item + FieldName = 'REFERENCIA' + end> + Properties.ListOptions.GridLines = glNone + Properties.ListOptions.ShowHeader = False + Properties.ListSource = dsTiposIVA + 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 = 3 + Width = 121 + end + object bTiposIVA: TButton + Left = 255 + Top = 82 + Width = 132 + Height = 21 + Caption = 'Ver los tipos de IVA...' + TabOrder = 4 + OnClick = bTiposIVAClick + end + object eDescuento: TcxDBSpinEdit + Left = 461 + Top = 60 + DataBinding.DataField = 'DESCUENTO' + DataBinding.DataSource = dsDatosComerciales + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + 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 = 5 + Width = 73 + end + object dxLayoutGroup1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Group3: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Datos comerciales' + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'R'#233'gimen de IVA:' + Control = cbRegimenIVA + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Forma de pago:' + Control = cbFormaPago + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item7: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Button1' + ShowCaption = False + Control = bFormasPago + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'IVA por defecto' + Control = eIVA + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + ShowCaption = False + Control = bTiposIVA + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Descuento por defecto' + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Label1' + ShowCaption = False + Control = Label1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item10: TdxLayoutItem + Caption = '% Dto.:' + Control = eDescuento + ControlOptions.ShowBorder = False + end + end + end + end + object dsAgentes: TDADataSource + Left = 40 + Top = 8 + end + object dsDatosComerciales: TDADataSource + Left = 8 + Top = 8 + end + object dsFormaPago: TDADataSource + Left = 40 + Top = 48 + end + object dsTiposIVA: TDADataSource + Left = 8 + Top = 48 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas b/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas new file mode 100644 index 00000000..912bedf6 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewProveedorDatosComerciales.pas @@ -0,0 +1,136 @@ +unit uViewProveedorDatosComerciales; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxGraphics, DB, uDADataTable, dxLayoutControl, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, + cxDBLookupEdit, cxDBLookupComboBox, cxControls, cxSpinEdit, cxDBEdit, + uBizContactos, cxCheckBox, StdCtrls, uFormasPagoController, uTiposIVAController; + +type + IViewProveedorDatosComerciales = interface(IViewBase) + ['{26EEABD7-5603-48B5-ACC3-F493DAA1A0EC}'] + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + TfrViewProveedorDatosComerciales = class(TfrViewBase, IViewProveedorDatosComerciales) + dxLayoutControl1: TdxLayoutControl; + dxLayoutGroup1: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dsAgentes: TDADataSource; + dxLayoutControl1Item3: TdxLayoutItem; + cbRegimenIVA: TcxDBComboBox; + dsDatosComerciales: TDADataSource; + dsFormaPago: TDADataSource; + dxLayoutControl1Item5: TdxLayoutItem; + cbFormaPago: TcxDBLookupComboBox; + dxLayoutControl1Group5: TdxLayoutGroup; + Label1: TLabel; + dxLayoutControl1Item6: TdxLayoutItem; + bFormasPago: TButton; + dxLayoutControl1Item7: TdxLayoutItem; + dxLayoutControl1Item8: TdxLayoutItem; + eIVA: TcxDBLookupComboBox; + dxLayoutControl1Item9: TdxLayoutItem; + bTiposIVA: TButton; + dsTiposIVA: TDADataSource; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Item10: TdxLayoutItem; + eDescuento: TcxDBSpinEdit; + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure cbRegimenIVAPropertiesInitPopup(Sender: TObject); + procedure bFormasPagoClick(Sender: TObject); + procedure bTiposIVAClick(Sender: TObject); + protected + FContacto : IBizContacto; +// FAgentesController : IAgentesController; + FFormasPagoController : IFormasPagoController; + FTiposIVAController : ITiposIVAController; + function GetContacto: IBizContacto; + procedure SetContacto(const Value: IBizContacto); + public + property Contacto: IBizContacto read GetContacto write SetContacto; + end; + + +implementation + +{$R *.dfm} + +uses + uRegimenIVAUtils, uBizFormasPago, uBizTiposIVA; + +{ TfrViewProveedorDatosComerciales } + +procedure TfrViewProveedorDatosComerciales.bFormasPagoClick(Sender: TObject); +begin + inherited; + FFormasPagoController.VerTodos((dsFormaPago.DataTable) as IBizFormaPago); +end; + +procedure TfrViewProveedorDatosComerciales.bTiposIVAClick(Sender: TObject); +begin + inherited; + FTiposIVAController.VerTodos((dsTiposIVA.DataTable) as IBizTipoIVA); +end; + +procedure TfrViewProveedorDatosComerciales.cbRegimenIVAPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with cbRegimenIVA.Properties do + begin + if Items.Count = 0 then + Items := DarRegimenesIVA; + end; +end; + +procedure TfrViewProveedorDatosComerciales.CustomViewCreate(Sender: TObject); +begin + inherited; +// FAgentesController := TAgentesController.Create; + FFormasPagoController := TFormasPagoController.Create; + FTiposIVAController := TTiposIVAController.Create; +end; + +procedure TfrViewProveedorDatosComerciales.CustomViewDestroy(Sender: TObject); +begin + inherited; +// FAgentesController := NIL; + FFormasPagoController := NIL; + FTiposIVAController := NIL; +end; + +function TfrViewProveedorDatosComerciales.GetContacto: IBizContacto; +begin + Result := FContacto; +end; + +procedure TfrViewProveedorDatosComerciales.SetContacto(const Value: IBizContacto); +begin + FContacto := Value; + if Assigned(FContacto) then + begin + dsDatosComerciales.DataTable := FContacto.DataTable; +// dsAgentes.DataTable := FAgentesController.BuscarTodos.DataTable; +// dsAgentes.DataTable.Active := True; + dsFormaPago.DataTable := FFormasPagoController.BuscarTodos.DataTable; + dsFormaPago.DataTable.Active := True; + dsTiposIVA.DataTable := FTiposIVAController.BuscarTodos.DataTable; + dsTiposIVA.DataTable.Active := True; + end + else begin + dsDatosComerciales.DataTable := NIL; +// dsAgentes.DataTable := NIL; + dsFormaPago.DataTable := NIL; + dsTiposIVA.DataTable := NIL; + end +end; + +end. diff --git a/Source/Modulos/Contactos/Views/uViewProveedores.dfm b/Source/Modulos/Contactos/Views/uViewProveedores.dfm new file mode 100644 index 00000000..52cd0199 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewProveedores.dfm @@ -0,0 +1,230 @@ +inherited frViewProveedores: TfrViewProveedores + Width = 483 + Height = 435 + ExplicitWidth = 483 + ExplicitHeight = 435 + inherited cxGrid: TcxGrid + Width = 483 + Height = 307 + ExplicitWidth = 483 + ExplicitHeight = 307 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 proveedores' + Kind = skCount + FieldName = 'NIF_CIF' + Column = cxGridViewNIF_CIF + end> + inherited cxGridViewICONO: TcxGridDBColumn + BestFitMaxWidth = 22 + MinWidth = 22 + Options.HorzSizing = False + Width = 22 + end + object cxGridViewTIENDA_WEB: TcxGridDBColumn [1] + Caption = 'Incluido en tienda web' + DataBinding.FieldName = 'TIENDA_WEB' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageList + Properties.Items = < + item + Value = 0 + end + item + ImageIndex = 1 + Value = 1 + end> + BestFitMaxWidth = 22 + MinWidth = 22 + Options.HorzSizing = False + Width = 22 + end + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 483 + ExplicitWidth = 483 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 483 + inherited dxLayoutControl1: TdxLayoutControl + Width = 483 + ExplicitWidth = 483 + inherited edtFechaFinFiltro: TcxDateEdit + ExplicitWidth = 149 + Width = 149 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 483 + ExplicitWidth = 483 + inherited tbxBotones: TTBXToolbar + Width = 473 + ExplicitWidth = 473 + end + end + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 409 + ExplicitTop = 409 + ExplicitWidth = 483 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 483 + ExplicitWidth = 483 + inherited TBXToolbar1: TTBXToolbar + Width = 473 + ExplicitWidth = 473 + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39211.790492430550000000 + BuiltInReportLink = True + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D400000A4D694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF + F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A + 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5 + 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8 + 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC + 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200 + C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05 + 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2 + 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C + CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97 + 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313 + 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F + 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA + 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED + 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383 + FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A + F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86 + 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432 + 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0 + 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C + 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70 + 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261 + 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA + 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F + 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961 + 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402 + 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2 + 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93 + 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90 + 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452 + A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650 + 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83 + 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7 + 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295 + 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9 + 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685 + 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9 + EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C + 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED + EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB + 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31 + 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87 + 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94 + 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85 + A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6 + 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29 + D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B + 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6 + 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD + D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7 + C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E + 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B + FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5 + 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1 + 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0 + 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67 + BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845 + F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC + A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7 + 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA + 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C + 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423 + F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433 + DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317 + 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2 + A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17 + 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4 + EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E + CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9 + 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD + 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF + B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C + 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD + EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293 + E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7 + 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F + EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6 + EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07 + FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247 + CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73 + ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC + CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F + F73EE77CFEFC2FF784F3FB25D29F33000002B44944415478DA7D925F4853511C + C77F67F75EF7A799BB9A6E3A5B85A0203EA820F892502121119A523E14141A41 + F5A244819144E4430F452F99580385A4D0CC2009410B940CCC4CA60BB2F04F43 + 65B639B7DD6DF7EEFED93D9D2D144DE60F0E07CEF97D3FE7F7FBFE0EC218433C + 1042B01973AFAF5C0088DDF007B82CCF7AD0E15C70DFBF63774EC0B6D8D2FD0F + 70F65C6C345BD8673C1FD5F8FD41F0F903E0F571FCA8E34F4DE7E0FCC89E80BE + E6727D7E699ECBA0D7668A920CA15004DCDE0028B204EE7561AEA9FD5B19490D + 2707DCABA8CC31A70F531A0A045186154F042C19FBC1A803F8E5F2E0B61EE7C9 + F9656E2429E0537B75E34658B2CB0A02D6B41FF20F9A00A90A48621478418047 + 2FA71ABA865D5D4901939DD575D66C733FCD3089B398A2804CCA97451144318A + EFDA271BFBC7579203DEB41DCD2EC93FEC6252521204555549FF72C2038E8B28 + 35AD1F2A577DE2E89E5398B6D7F6A6A51ACE25920820168B5721C3C4ECEADCE5 + C79315E4D8BB27A0BBB9DC5A54689E326A198B4AEEE26D6C04C3D2ADE7D34D5F + 7EF83B928E311E2DD6828C9C5CE629C2A6B3D67A1B4A05F20722C49BDE0D9C6B + 084E3804E1EA8BEF4B33DB3FD416A0E550119B9E478F6762B590151408D5D543 + 71552DAC0DBC0561F01504F631E0A534A121257466646CE1E32E40EBF1D227AC + 1E5D677919D8A8025AD041E6892A08BF1F8010B1D46F60C8A2614DC4CB0FBE3A + 4A30877D3B00B74F95B94C14B699C8EB6904601463A0555490290491140A823A + 1A027A1AFC64B77B17EBD7C6BC7D3B00374F972DA6D2E8489AF84F6C9054A055 + 6222F156603410D652C011711CD4BDFCFB9AE7B3BB6307E0FCB1E24B590C7A98 + C150E946ACA2F8EB14B9520940A43410411A08A8587AA78DCDFE1C9A69C01276 + EE9A0219E5019D8D2E305A0C36D05384031A2C2AB2129579C52773FC6ACC4DD2 + 968826B0A9F90BC88690F0ED1F7E3F0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001E34944415478DAA5932D72E43010855F98D934341BC1858261D10D76 + 8E3047305C1685051A067A59A0E042E70682863D6C608719EE6B399EADDABFAA + AD7595CAB2DCFDF5EB1FDDE13F9FBB9F0FF258225F27AEC415D109B05A35C3CC + EF32E653FD2380CE035F4388720C41609DC2D68ABA28B42688E1820E79CAE7E9 + 17407316E4788F43E8033CF2F46D42F804E8E29084E0A2ACBE7B90E9798334C0 + 40D9145AC2BD1E8591A58B5CFE27406D462915EA59AD4A70812CF142FBD3340E + 750764113C8648C9A214E20A0C762560A1A925A662A8FDD0D48A06846B782220 + 6F80E732C7181F14858079CB69895B1D57D6824BBB99FF4A03C9952134BD9597 + 21ED008BF1F341F52BAA3035098CC23428DB561A70D53EC39888EFB941D4F45E + 5EB2DC0021A6035BC56A0F306660BD1B464A3DB5A8B00CED89606A62B201A61D + 90CB8C3E3EA03BD2F002BD8EF4550FB441D421532B62658D02CFC4C2DBFC9AD3 + 0EC86CDBA349DC24B2F7BA8E2D227BCF9CFD3CB573EC69409EE6D731EF804899 + EC4F3CB6D631927623FFD48F5AC84741B1B572D58B4FEB5CC67A1BA4739ECE34 + 18D185435DE756B070B5CDB17305B63BB741A2F38F41BA41BE38C4324D8FE6C6 + 3E0FBE7CEF15F602716877E7DF5EA6F330B6CBC4F6A55641CAE69EC973245714 + 97FDD7DBF8AFCF7740E00D20BA266C3A0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/Source/Modulos/Contactos/Views/uViewProveedores.pas b/Source/Modulos/Contactos/Views/uViewProveedores.pas new file mode 100644 index 00000000..2f747b0b --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewProveedores.pas @@ -0,0 +1,29 @@ +unit uViewProveedores; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewContactos, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, + dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, ImgList, PngImageList, cxGridCustomPopupMenu, + cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGridLnk, uDADataTable, + cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, dxPgsDlg, ActnList, TB2Item, + TBX, TB2Toolbar, TBXDkPanels, TB2Dock, uViewFiltroBase, cxImageComboBox; + +type + IViewProveedores = interface(IViewContactos) + ['{C64C0439-5D1D-4B60-9FC0-4E75E58F7384}'] + end; + + TfrViewProveedores = class(TfrViewContactos, IViewProveedores) + cxGridViewTIENDA_WEB: TcxGridDBColumn; + end; + +implementation + +{$R *.dfm} + +end. diff --git a/Source/Modulos/Contactos/Views/uViewTelefonos.dfm b/Source/Modulos/Contactos/Views/uViewTelefonos.dfm new file mode 100644 index 00000000..c312fc00 --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewTelefonos.dfm @@ -0,0 +1,118 @@ +inherited frViewTelefonos: TfrViewTelefonos + Width = 261 + Height = 152 + ExplicitWidth = 261 + ExplicitHeight = 152 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 261 + Height = 152 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth] + ExplicitWidth = 693 + DesignSize = ( + 261 + 152) + object eTlfParticular: TcxDBTextEdit + Left = 76 + Top = 55 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'TELEFONO_2' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 566 + end + object eTlfTrabajo: TcxDBTextEdit + Left = 76 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'TELEFONO_1' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 566 + end + object eTlfMovil: TcxDBTextEdit + Left = 76 + Top = 82 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'MOVIL_1' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 566 + end + object eFax: TcxDBTextEdit + Left = 76 + Top = 109 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FAX' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 566 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + AutoAligns = [aaHorizontal] + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + AutoAligns = [aaHorizontal] + Caption = 'Tel'#233'fonos' + object dxLayoutControl1Item2: TdxLayoutItem + Caption = 'Trabajo:' + Control = eTlfTrabajo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Particular:' + Control = eTlfParticular + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'M'#243'vil:' + Control = eTlfMovil + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item4: TdxLayoutItem + Caption = 'Fax:' + Control = eFax + ControlOptions.ShowBorder = False + end + end + end + end + object DADataSource: TDADataSource + Left = 16 + Top = 32 + end +end diff --git a/Source/Modulos/Contactos/Views/uViewTelefonos.pas b/Source/Modulos/Contactos/Views/uViewTelefonos.pas new file mode 100644 index 00000000..de2368ff --- /dev/null +++ b/Source/Modulos/Contactos/Views/uViewTelefonos.pas @@ -0,0 +1,39 @@ +unit uViewTelefonos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, DB, uDADataTable, StdCtrls, Mask, DBCtrls, ExtCtrls, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, dxLayoutControl; + +type + TfrViewTelefonos = class(TfrViewBase) + DADataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Item1: TdxLayoutItem; + eTlfParticular: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + eTlfTrabajo: TcxDBTextEdit; + dxLayoutControl1Item3: TdxLayoutItem; + eTlfMovil: TcxDBTextEdit; + dxLayoutControl1Item4: TdxLayoutItem; + eFax: TcxDBTextEdit; + end; + +implementation + +{$R *.dfm} + +{initialization + RegisterClass(TfrViewTelefonos); + +finalization + + UnRegisterClass(TfrViewTelefonos);} + +end. + diff --git a/Source/Modulos/Empresas/Controller/Empresas_controller.bdsproj b/Source/Modulos/Empresas/Controller/Empresas_controller.bdsproj new file mode 100644 index 00000000..a78ba8bd --- /dev/null +++ b/Source/Modulos/Empresas/Controller/Empresas_controller.bdsproj @@ -0,0 +1,497 @@ + + + + + + + + + + + + Empresas_controller.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + + True + diff --git a/Source/Modulos/Empresas/Controller/Empresas_controller.dpk b/Source/Modulos/Empresas/Controller/Empresas_controller.dpk new file mode 100644 index 00000000..0ae4f23d --- /dev/null +++ b/Source/Modulos/Empresas/Controller/Empresas_controller.dpk @@ -0,0 +1,86 @@ +package Empresas_controller; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} +{%TogetherDiagram 'ModelSupport_Empresas_controller\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorContacto\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorCliente\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uContactosController\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorClientes\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uClientesController\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorContactos\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uClientesController\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorCliente\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorClientes\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorContactos\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorContacto\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uContactosController\default.txvpck'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorInstalador\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorInstaladores\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorVendedores\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorProveedores\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorVendedor\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uInstaladoresController\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uProveedoresController\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uIEditorProveedor\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uVendedoresController\default.txaPackage'} +{%TogetherDiagram 'ModelSupport_Empresas_controller\uVendedoresController\default.txvpck'} + +requires + rtl, + vcl, + DataAbstract_D10, + Base, + GUIBase, + dbrtl, + cxLibraryD10, + dxThemeD10, + GUISDK_D10, + ccpack10, + designide, + xmlrtl, + vclactnband, + vclx, + cfpack_d10, + JvAppFrmD10R, + vcljpg, + JclVcl, + Jcl, + JvSystemD10R, + JvCoreD10R, + dsnap, + vcldb, + adortl, + Empresas_model, + Empresas_data; + +contains + uEmpresasController in 'uEmpresasController.pas', + uIEditorEmpresas in 'View\uIEditorEmpresas.pas', + uIEditorEmpresa in 'View\uIEditorEmpresa.pas', + uDatosBancariosEmpresaController in 'uDatosBancariosEmpresaController.pas', + uIEditorDatosBancarioEmpresa in 'View\uIEditorDatosBancarioEmpresa.pas'; + +end. diff --git a/Source/Modulos/Empresas/Controller/Empresas_controller.dproj b/Source/Modulos/Empresas/Controller/Empresas_controller.dproj new file mode 100644 index 00000000..874796ac --- /dev/null +++ b/Source/Modulos/Empresas/Controller/Empresas_controller.dproj @@ -0,0 +1,644 @@ + + + {e4ad187e-0c3a-462a-b435-f69475af2f56} + Empresas_controller.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Empresas_controller.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + Empresas_controller.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Empresas/Controller/Empresas_controller.drc b/Source/Modulos/Empresas/Controller/Empresas_controller.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Empresas/Controller/Empresas_controller.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Empresas/Controller/Empresas_controller.rc b/Source/Modulos/Empresas/Controller/Empresas_controller.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Empresas/Controller/Empresas_controller.res b/Source/Modulos/Empresas/Controller/Empresas_controller.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Empresas/Controller/Empresas_controller.res differ diff --git a/Source/Modulos/Empresas/Controller/ModelSupport_Empresas_controller/Empresas_controller.prjconfig b/Source/Modulos/Empresas/Controller/ModelSupport_Empresas_controller/Empresas_controller.prjconfig new file mode 100644 index 00000000..c8f28340 --- /dev/null +++ b/Source/Modulos/Empresas/Controller/ModelSupport_Empresas_controller/Empresas_controller.prjconfig @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/Source/Modulos/Empresas/Controller/ModelSupport_Empresas_controller/default.txaPackage b/Source/Modulos/Empresas/Controller/ModelSupport_Empresas_controller/default.txaPackage new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Empresas/Controller/View/uIEditorDatosBancarioEmpresa.pas b/Source/Modulos/Empresas/Controller/View/uIEditorDatosBancarioEmpresa.pas new file mode 100644 index 00000000..b4d4d6b4 --- /dev/null +++ b/Source/Modulos/Empresas/Controller/View/uIEditorDatosBancarioEmpresa.pas @@ -0,0 +1,28 @@ +unit uIEditorDatosBancarioEmpresa; + +interface + +uses + uBizEmpresasDatosBancarios, uDatosBancariosEmpresaController; + +type + IEditorDatosBancariosEmpresa = interface + ['{486525AD-953D-453D-AF70-2FBBF39B5188}'] + + function GetController : IDatosBancariosEmpresaController; + procedure SetController (const Value : IDatosBancariosEmpresaController); + property Controller : IDatosBancariosEmpresaController read GetController + write SetController; + + function GetDatosBancarios: IBizEmpresasDatosBancarios; + procedure SetDatosBancarios(const Value: IBizEmpresasDatosBancarios); + property DatosBancarios: IBizEmpresasDatosBancarios read GetDatosBancarios write SetDatosBancarios; + + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. diff --git a/Source/Modulos/Empresas/Controller/View/uIEditorEmpresa.pas b/Source/Modulos/Empresas/Controller/View/uIEditorEmpresa.pas new file mode 100644 index 00000000..9c90c847 --- /dev/null +++ b/Source/Modulos/Empresas/Controller/View/uIEditorEmpresa.pas @@ -0,0 +1,23 @@ +unit uIEditorEmpresa; + +interface + +uses + uEditorDBItem, uBizEmpresas, uEmpresasController; + +type + IEditorEmpresa = interface(IEditorDBItem) + ['{88FA3FF3-ACDC-4BCC-ADCE-6BA890E55220}'] + function GetController : IEmpresasController; + procedure SetController (const Value : IEmpresasController); + property Controller : IEmpresasController read GetController + write SetController; + + function GetEmpresa: IBizEmpresa; + procedure SetEmpresa(const Value: IBizEmpresa); + property Empresa: IBizEmpresa read GetEmpresa write SetEmpresa; + end; + +implementation + +end. diff --git a/Source/Modulos/Empresas/Controller/View/uIEditorEmpresas.pas b/Source/Modulos/Empresas/Controller/View/uIEditorEmpresas.pas new file mode 100644 index 00000000..305881f2 --- /dev/null +++ b/Source/Modulos/Empresas/Controller/View/uIEditorEmpresas.pas @@ -0,0 +1,24 @@ +unit uIEditorEmpresas; + +interface + +uses + uEditorGridBase, uBizEmpresas, uEmpresasController; + +type + IEditorEmpresas = interface(IEditorGridBase) + ['{F4E5DE2F-C08A-47DA-827B-78BD31861BD0}'] + function GetEmpresas: IBizEmpresa; + procedure SetEmpresas(const Value: IBizEmpresa); + property Empresas: IBizEmpresa read GetEmpresas write SetEmpresas; + + function GetController : IEmpresasController; + procedure SetController (const Value : IEmpresasController); + property Controller : IEmpresasController read GetController + write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Empresas/Controller/uDatosBancariosEmpresaController.pas b/Source/Modulos/Empresas/Controller/uDatosBancariosEmpresaController.pas new file mode 100644 index 00000000..a16c804e --- /dev/null +++ b/Source/Modulos/Empresas/Controller/uDatosBancariosEmpresaController.pas @@ -0,0 +1,142 @@ +unit uDatosBancariosEmpresaController; + +interface + +uses + Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable, + uBizEmpresas, uBizEmpresasDatosBancarios, uIDataModuleEmpresas; + +type + IDatosBancariosEmpresaController = interface + ['{E9B0313E-7B16-420A-B47E-20E42E96BAC6}'] + procedure AsignarID(ADetalles: IBizEmpresasDatosBancarios; IDCabecera: Integer; AEsNuevo:Boolean); + procedure Ver(ADatosBancarios : IBizEmpresasDatosBancarios); + end; + + TDatosBancariosEmpresaController = class(TInterfacedObject, IDatosBancariosEmpresaController) + private + FDataModule : IDataModuleEmpresas; + public + procedure Ver(ADatosBancarios : IBizEmpresasDatosBancarios); + procedure AsignarID(ADetalles: IBizEmpresasDatosBancarios; IDCabecera : Integer; AEsNuevo : Boolean); + constructor Create; virtual; + destructor Destroy; override; + end; + +implementation + +{ TDatosBancariosEmpresaController } + +uses + uDataModuleEmpresas, schEmpresasClient_Intf, uIEditorDatosBancarioEmpresa, + uEditorRegistryUtils, cxControls; + +procedure TDatosBancariosEmpresaController.AsignarID( + ADetalles: IBizEmpresasDatosBancarios; IDCabecera: Integer; + AEsNuevo:Boolean); +begin + with ADetalles do + begin + DataTable.DisableControls; + try + if not DataTable.Active then + DataTable.Active := True; + +// AuxPosicion := POSICION; + + { OJO !!!! + Para asignar el ID en los detalles hay + que tener en cuenta una cosa: + Si se cambia el ID, ese detalle ya no + pertenece a esa cabecera porque ya no se + cumple la condicin de la relacion: + Master.ID = Detail.ID_PRESUPUESTO. + + Por esa razn no sirve hacer un recorrido + desde el principio hasta el final porque + las detalles van desapareciendo segn asignamos + el valor al campo ID y nos mueve aleatoriamente + la posicin del registro actual. + + Es mejor hacer un bucle sencillo hasta que + "se gasten" todos los detalles. Cuando el + RecordCount llegue a 0 quiere decir que hemos + tratado todos los detalles. + + El bucle cambia en el caso de ser llamada esta funcion desde modificar + un presupuesto ya que en ese caso si que hay que hacer un recorrido + total de las tuplas de detalle. + } + + if AEsNuevo then + begin + while RecordCount > 0 do + begin + DataTable.First; + Edit; + ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_EMPRESA := IDCabecera; + Post + end + end + else + begin + DataTable.First; + while not DataTable.EOF do + begin + if AEsNuevo then + begin + Edit; + ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_EMPRESA := IDCabecera; + Post + end; + DataTable.Next + end; + end; + finally + DataTable.EnableControls; + end; + end; +end; + +constructor TDatosBancariosEmpresaController.Create; +begin + inherited; + FDataModule := TDataModuleEmpresas.Create(Nil); +end; + +destructor TDatosBancariosEmpresaController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +procedure TDatosBancariosEmpresaController.Ver( + ADatosBancarios : IBizEmpresasDatosBancarios); +var + AEditor : IEditorDatosBancariosEmpresa; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorDatosBancariosEmpresa', IEditorDatosBancariosEmpresa, AEditor); + with AEditor do + begin + DatosBancarios := ADatosBancarios; + Controller := Self; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +end. diff --git a/Source/Modulos/Empresas/Controller/uEmpresasController.pas b/Source/Modulos/Empresas/Controller/uEmpresasController.pas new file mode 100644 index 00000000..5e8bc077 --- /dev/null +++ b/Source/Modulos/Empresas/Controller/uEmpresasController.pas @@ -0,0 +1,336 @@ +unit uEmpresasController; + +interface + + +uses + Windows, Forms, Classes, Controls, Contnrs, SysUtils, + uBizEmpresas, uIDataModuleEmpresas, uDADataTable; + +type + IEmpresasController = interface + ['{2F0AB21C-4F19-446E-87C4-B9C1038850FC}'] + function Buscar(const ID: Integer): IBizEmpresa; + function BuscarTodos: IBizEmpresa; + procedure Ver(AEmpresa : IBizEmpresa); + procedure VerTodos(AEmpresas: IBizEmpresa); + function Nuevo : IBizEmpresa; + procedure Anadir(AEmpresa : IBizEmpresa); + function Eliminar(const ID : Integer): Boolean; overload; + function Eliminar(AEmpresa : IBizEmpresa): Boolean; overload; + function Guardar(AEmpresa : IBizEmpresa): Boolean; + procedure DescartarCambios(AEmpresa : IBizEmpresa); + function Existe(const ID: Integer) : Boolean; + function ToStringList(AEmpresa : IBizEmpresa) : TStringList; + end; + + TEmpresasController = class(TInterfacedObject, IEmpresasController) + protected + FDataModule : IDataModuleEmpresas; + procedure AsignarID(AEmpresa: IBizEmpresa; + const IDNuevo : Integer); virtual; + procedure AsignarIDDetalles(AEmpresa: IBizEmpresa; + const IDCabecera : Integer; ADataTable : TDADataTable); + function ValidarEmpresa(AEmpresa : IBizEmpresa): Boolean; virtual; + public + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(const ID : Integer): Boolean; overload; + function Eliminar(AEmpresa : IBizEmpresa): Boolean; overload; + function Guardar(AEmpresa : IBizEmpresa): Boolean; + procedure DescartarCambios(AEmpresa : IBizEmpresa); virtual; + function Existe(const ID: Integer) : Boolean; virtual; + procedure Anadir(AEmpresa : IBizEmpresa); virtual; + + function Buscar(const ID: Integer): IBizEmpresa; virtual; + function BuscarTodos: IBizEmpresa; virtual; + function Nuevo : IBizEmpresa; virtual; + procedure Ver(AEmpresa : IBizEmpresa); virtual; + procedure VerTodos(AEmpresas: IBizEmpresa); virtual; + function ToStringList(AEmpresa : IBizEmpresa) : TStringList; virtual; + end; + +implementation + +uses + uEditorRegistryUtils, cxControls, DB, + uDataModuleEmpresas, uIEditorEmpresa; + +{ TEmpresasController } + +procedure TEmpresasController.Anadir(AEmpresa: IBizEmpresa); +begin + AEmpresa.Insert; +end; + +procedure TEmpresasController.AsignarID(AEmpresa: IBizEmpresa; + const IDNuevo: Integer); +var + AContador : Integer; +begin + if not Assigned(AEmpresa) then + raise Exception.Create ('Empresa no asignada'); + + { Los datos bancarios hay que comprobarlos siempre + tanto en insercin como en modificacin. } + if Assigned(AEmpresa.DatosBancarios) then + AsignarIDDetalles(AEmpresa, IDNuevo, AEmpresa.DatosBancarios.DataTable); + + + if AEmpresa.EsNuevo then + begin + AEmpresa.Edit; + AEmpresa.ID := IDNuevo; + AEmpresa.Post; + end; +end; + +procedure TEmpresasController.AsignarIDDetalles(AEmpresa: IBizEmpresa; + const IDCabecera: Integer; ADataTable: TDADataTable); +var + AContador : Integer; +begin + if not ADataTable.Active then + ADataTable.Active := True; + + if AEmpresa.EsNuevo then + begin + { OJO !!!! + Para asignar el ID en los detalles hay + que tener en cuenta una cosa: + Si se cambia el ID, ese detalle ya no + pertenece AEmpresa esa cabecera porque ya no se + cumple la condicin de la relacion: + Master.ID = Detail.ID_CONTACTO. + + Por esa razn no sirve hacer un recorrido + desde el principio hasta el final porque + las detalles van desapareciendo segn asignamos + el valor al campo ID y nos mueve aleatoriamente + la posicin del registro actual. + + Es mejor hacer un bucle sencillo hasta que + "se gasten" todos los detalles. Cuando el + RecordCount llegue AEmpresa 0 quiere decir que hemos + tratado todos los detalles. + } + while ADataTable.RecordCount > 0 do + begin + ADataTable.First; + ADataTable.Edit; + ADataTable.FieldByName('ID').AsInteger := FDataModule.GetNextID(ADataTable.LogicalName); + ADataTable.FieldByName('ID_EMPRESA').AsInteger := IDCabecera; + ADataTable.Post; + end; + end + else begin + { En este caso es un recorrido normal y corriente. } + ADataTable.First; + AContador := ADataTable.RecordCount; + + while (AContador > 0) do + begin + // Es nuevo? + if (ADataTable.FieldByName('ID').AsInteger < 0) then + begin + ADataTable.Edit; + ADataTable.FieldByName('ID').AsInteger := FDataModule.GetNextID(ADataTable.LogicalName); + ADataTable.Post; + end; + AContador := AContador - 1; + ADataTable.Next; + end; + ADataTable.First; + end; +end; + +function TEmpresasController.Buscar(const ID: Integer): IBizEmpresa; +begin + Result := FDataModule.GetItem(ID) +end; + +function TEmpresasController.BuscarTodos: IBizEmpresa; +begin + Result := FDataModule.GetItems; +end; + +constructor TEmpresasController.Create; +begin + FDataModule := TDataModuleEmpresas.Create(Nil); +end; + +procedure TEmpresasController.DescartarCambios(AEmpresa: IBizEmpresa); +begin + if not Assigned(AEmpresa) then + raise Exception.Create ('Empresa no asignada'); + + ShowHourglassCursor; + try + if (AEmpresa.State in dsEditModes) then + AEmpresa.Cancel; + + AEmpresa.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TEmpresasController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +function TEmpresasController.Eliminar(AEmpresa: IBizEmpresa): Boolean; +begin + Result := False; + + if not Assigned(AEmpresa) then + raise Exception.Create ('Empresa no asignada'); + + ShowHourglassCursor; + try + if (AEmpresa.State in dsEditModes) then + AEmpresa.Cancel; + + AEmpresa.Delete; + AEmpresa.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; +end; + +function TEmpresasController.Eliminar(const ID: Integer): Boolean; +var + AEmpresa : IBizEmpresa; +begin + AEmpresa := Buscar(ID); + + if not Assigned(AEmpresa) then + raise Exception.Create(Format('No se ha encontrado la empresa con ID = %d', [ID])); + + Result := Eliminar(AEmpresa); + AEmpresa := NIL; +end; + +function TEmpresasController.Existe(const ID: Integer): Boolean; +var + AEmpresa : IBizEmpresa; +begin + try + AEmpresa := Buscar(ID); + Result := Assigned(AEmpresa) and (AEmpresa.ID = ID); + finally + AEmpresa := NIL; + end; +end; + +function TEmpresasController.Guardar(AEmpresa: IBizEmpresa): Boolean; +var + NuevoID : Integer; +begin + Result := False; + + if ValidarEmpresa(AEmpresa) then + begin + ShowHourglassCursor; + try + if AEmpresa.EsNuevo then + NuevoID := FDataModule.GetNextID(AEmpresa.DataTable.LogicalName) + else + NuevoID := AEmpresa.ID; + + AsignarID(AEmpresa, NuevoID); + AEmpresa.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TEmpresasController.Nuevo: IBizEmpresa; +begin + Result := FDataModule.NewItem; +end; + +function TEmpresasController.ToStringList(AEmpresa: IBizEmpresa): TStringList; +begin + Result := TStringList.Create; + with Result do + begin + AEmpresa.DataTable.Active := True; + AEmpresa.First; + while not AEmpresa.EOF do + begin + Add(AEmpresa.NOMBRE); + AEmpresa.Next; + end; + end; +end; + +function TEmpresasController.ValidarEmpresa(AEmpresa: IBizEmpresa): Boolean; +begin + Result := False; + + if not Assigned(AEmpresa) then + raise Exception.Create ('Empresa no asignada'); + + if (AEmpresa.DataTable.State in dsEditModes) then + AEmpresa.DataTable.Post; + + if Length(AEmpresa.NOMBRE) = 0 then + raise Exception.Create('Debe indicar al menos el nombre de la empresa.'); + + // Asegurarse de valores en campos "automticos" +{ AEmpresa.Edit; + AEmpresa.USUARIO := dmUsuarios.LoginInfo.Usuario; + AEmpresa.Post;} + + Result := True; +end; + +procedure TEmpresasController.Ver(AEmpresa: IBizEmpresa); +var + AEditor : IEditorEmpresa; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorEmpresa', IEditorEmpresa, AEditor); + with AEditor do + begin + Empresa := AEmpresa; + Controller := Self; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TEmpresasController.VerTodos(AEmpresas: IBizEmpresa); +{var + AEditor : IEditorClientes;} +begin +{ CreateEditor('EditorEmpresas', IEditorClientes, AEditor); + with AEditor do + begin + Contactos := AContactos; + Controller := Self; + ShowEmbedded; + end;} +end; + +end. diff --git a/Source/Modulos/Empresas/Data/Empresas_data.bdsproj b/Source/Modulos/Empresas/Data/Empresas_data.bdsproj new file mode 100644 index 00000000..edfe9d47 --- /dev/null +++ b/Source/Modulos/Empresas/Data/Empresas_data.bdsproj @@ -0,0 +1,493 @@ + + + + + + + + + + + + Empresas_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Empresas + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + False + diff --git a/Source/Modulos/Empresas/Data/Empresas_data.dpk b/Source/Modulos/Empresas/Data/Empresas_data.dpk new file mode 100644 index 00000000..c4ff6683 --- /dev/null +++ b/Source/Modulos/Empresas/Data/Empresas_data.dpk @@ -0,0 +1,51 @@ +package Empresas_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Empresas'} +{$IMPLICITBUILD OFF} +{%TogetherDiagram 'ModelSupport_Empresas_data\default.txaPackage'} + +requires + rtl, + vcl, + dbrtl, + dsnap, + vcldb, + DataAbstract_D10, + adortl, + vcljpg, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + Base, + Empresas_model; + +contains + uDataModuleEmpresas in 'uDataModuleEmpresas.pas' {DataModuleEmpresas}; + +end. diff --git a/Source/Modulos/Empresas/Data/Empresas_data.dproj b/Source/Modulos/Empresas/Data/Empresas_data.dproj new file mode 100644 index 00000000..aa20639b --- /dev/null +++ b/Source/Modulos/Empresas/Data/Empresas_data.dproj @@ -0,0 +1,600 @@ + + + {13ceca01-95fe-4f1e-80ed-6dcc5ef31c88} + Empresas_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Empresas_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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + Empresas + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + Empresas_data.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + +
DataModuleEmpresas
+
+
+ +
+ + diff --git a/Source/Modulos/Empresas/Data/Empresas_data.drc b/Source/Modulos/Empresas/Data/Empresas_data.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Empresas/Data/Empresas_data.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Empresas/Data/Empresas_data.rc b/Source/Modulos/Empresas/Data/Empresas_data.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Empresas/Data/Empresas_data.res b/Source/Modulos/Empresas/Data/Empresas_data.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Empresas/Data/Empresas_data.res differ diff --git a/Source/Modulos/Empresas/Data/uDataModuleEmpresas.dfm b/Source/Modulos/Empresas/Data/uDataModuleEmpresas.dfm new file mode 100644 index 00000000..750502c9 --- /dev/null +++ b/Source/Modulos/Empresas/Data/uDataModuleEmpresas.dfm @@ -0,0 +1,327 @@ +object DataModuleEmpresas: TDataModuleEmpresas + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 427 + Width = 429 + object RORemoteService: TRORemoteService + Message = dmConexion.ROMessage + Channel = dmConexion.ROChannel + ServiceName = 'srvEmpresas' + Left = 32 + Top = 24 + end + object tbl_Empresas: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'Empresas_ID' + InPrimaryKey = True + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DisplayLabel = 'CIF' + DictionaryEntry = 'Empresas_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + DictionaryEntry = 'Empresas_NOMBRE' + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + DisplayLabel = 'Raz'#243'n Social' + DictionaryEntry = 'Empresas_RAZON_SOCIAL' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Calle' + DictionaryEntry = 'Empresas_CALLE' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + DictionaryEntry = 'Empresas_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + DictionaryEntry = 'Empresas_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'd. postal' + DictionaryEntry = 'Empresas_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DisplayLabel = 'Tel'#233'fono 1' + DictionaryEntry = 'Empresas_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DisplayLabel = 'Tel'#233'fono 2' + DictionaryEntry = 'Empresas_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil 1' + DictionaryEntry = 'Empresas_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil 2' + DictionaryEntry = 'Empresas_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + DictionaryEntry = 'Empresas_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail 1' + DictionaryEntry = 'Empresas_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail 2' + DictionaryEntry = 'Empresas_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DisplayLabel = 'P'#225'gina web' + DictionaryEntry = 'Empresas_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + DisplayLabel = 'Notas' + DictionaryEntry = 'Empresas_NOTAS' + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + DisplayLabel = 'Empresas_FECHA_ALTA' + DictionaryEntry = 'Empresas_FECHA_ALTA' + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + DisplayLabel = 'Empresas_FECHA_MODIFICACION' + DictionaryEntry = 'Empresas_FECHA_MODIFICACION' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DisplayLabel = 'Empresas_USUARIO' + DictionaryEntry = 'Empresas_USUARIO' + end + item + Name = 'LOGOTIPO' + DataType = datBlob + BlobType = dabtBlob + DisplayLabel = 'Logotipo' + DictionaryEntry = 'Empresas_LOGOTIPO' + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + DisplayLabel = 'Registro mercantil' + DictionaryEntry = 'Empresas_REGISTRO_MERCANTIL' + end + item + Name = 'IVA' + DataType = datFloat + DictionaryEntry = 'Empresas_IVA' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_Empresas + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Empresas' + IndexDefs = <> + Left = 176 + Top = 24 + end + object ds_Empresas: TDADataSource + DataSet = tbl_Empresas.Dataset + DataTable = tbl_Empresas + Left = 304 + Top = 24 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteService = LoginRemoteService + Params = <> + Left = 32 + Top = 200 + end + object LoginRemoteService: TRORemoteService + Message = dmConexion.ROMessage + Channel = dmConexion.ROChannel + ServiceName = 'srvLogin' + Left = 32 + Top = 256 + end + object ROChannel: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + ServerLocators = <> + DispatchOptions = [] + Left = 32 + Top = 312 + end + object ROMessage: TROBinMessage + Left = 32 + Top = 364 + end + object tbl_EmpresasDatosBanco: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'EmpresasDatosBanco_ID' + InPrimaryKey = True + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DisplayLabel = 'EmpresasDatosBanco_ID_EMPRESA' + DictionaryEntry = 'EmpresasDatosBanco_ID_EMPRESA' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre del banco' + DictionaryEntry = 'EmpresasDatosBanco_NOMBRE' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DisplayLabel = 'Entidad' + DictionaryEntry = 'EmpresasDatosBanco_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DisplayLabel = 'Sucursal' + DictionaryEntry = 'EmpresasDatosBanco_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DisplayLabel = 'Cuenta' + DictionaryEntry = 'EmpresasDatosBanco_CUENTA' + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + DisplayLabel = 'Sufijo 19' + DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_N19' + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + DisplayLabel = 'Sufijo 58' + DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_N58' + end> + Params = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ID_EMPRESA=ID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_EmpresasDatosBanco + MasterSource = ds_Empresas + MasterFields = 'ID' + DetailFields = 'ID_EMPRESA' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'EmpresasDatosBanco' + IndexDefs = <> + Left = 176 + Top = 168 + end + object ds_EmpresasDatosBanco: TDADataSource + DataSet = tbl_EmpresasDatosBanco.Dataset + DataTable = tbl_EmpresasDatosBanco + Left = 296 + Top = 168 + end + object DataStreamer: TDABinDataStreamer + Left = 32 + Top = 100 + end + object rda_Empresas: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 179 + Top = 95 + end + object rda_EmpresasDatosBanco: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 179 + Top = 231 + end +end diff --git a/Source/Modulos/Empresas/Data/uDataModuleEmpresas.pas b/Source/Modulos/Empresas/Data/uDataModuleEmpresas.pas new file mode 100644 index 00000000..21272618 --- /dev/null +++ b/Source/Modulos/Empresas/Data/uDataModuleEmpresas.pas @@ -0,0 +1,141 @@ +unit uDataModuleEmpresas; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, + uROClient, uROBinMessage, uROWinInetHttpChannel, uDADesigntimeCall, + uIDataModuleEmpresas, uBizEmpresas, uBizEmpresasDatosBancarios, + uDARemoteDataAdapter, uDADataStreamer, uRODynamicRequest, uDAInterfaces; + +type + TDataModuleEmpresas = class(TDAClientDataModule, IDataModuleEmpresas) + RORemoteService: TRORemoteService; + tbl_Empresas: TDACDSDataTable; + ds_Empresas: TDADataSource; + DADesigntimeCall1: TDADesigntimeCall; + LoginRemoteService: TRORemoteService; + ROChannel: TROWinInetHTTPChannel; + ROMessage: TROBinMessage; + tbl_EmpresasDatosBanco: TDACDSDataTable; + ds_EmpresasDatosBanco: TDADataSource; + DataStreamer: TDABinDataStreamer; + rda_Empresas: TDARemoteDataAdapter; + rda_EmpresasDatosBanco: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + private + function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; + function _GetDatosBancarios : IBizEmpresasDatosBancarios; + public + function GetItem(const ID : Integer) : IBizEmpresa; + function NewItem : IBizEmpresa; + function GetItems : IBizEmpresa; + function GetNextID(const DataSetName : String) : Integer; + end; + + +implementation + +{$R *.DFM} + +uses + uDataModuleConexion, uDataTableUtils, uDAInterfaces, + FactuGES_Intf, schEmpresasClient_Intf, cxControls; + +procedure TDataModuleEmpresas.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleEmpresas.GetItem(const ID: Integer): IBizEmpresa; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText('EMPRESAS.' + fld_EmpresasID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TDataModuleEmpresas.GetItems: IBizEmpresa; +var + AEmpresa : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AEmpresa := _CloneDataTable(tbl_Empresas); + AEmpresa.BusinessRulesID := BIZ_CLIENT_EMPRESA; + + with TBizEmpresa(AEmpresa.BusinessEventsObj) do + begin + DatosBancarios := _GetDatosBancarios; + end; + + Result := (AEmpresa as IBizEmpresa); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleEmpresas.GetNextID(const DataSetName: String): Integer; +var + aGeneratorName : String; +begin + if DataSetName = nme_Empresas then + aGeneratorName := 'GEN_EMPRESAS_ID'; + + if DataSetName = nme_EmpresasDatosBanco then + aGeneratorName := 'GEN_EMPRESAS_DATOS_BANCO_ID'; + + Result := (RORemoteService as IsrvEmpresas).GetNextAutoInc(aGeneratorName) +end; + +function TDataModuleEmpresas.NewItem: IBizEmpresa; +begin + Result := GetItem(ID_NULO) +end; + +function TDataModuleEmpresas._CloneDataTable( + const ADataTable: TDACDSDataTable): TDACDSDataTable; +begin + Result := NIL; + + if not Assigned(ADataTable) then + raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); + + Result := TDACDSDataTable.Create(NIL); + CloneDataTable(ADataTable, Result); +end; + +function TDataModuleEmpresas._GetDatosBancarios: IBizEmpresasDatosBancarios; +var + ADatosBancarios : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ADatosBancarios := _CloneDataTable(tbl_EmpresasDatosBanco); + with ADatosBancarios do + begin + BusinessRulesID := BIZ_CLIENT_EMPRESAS_DATOS_BANCARIOS; + DetailOptions := DetailOptions - + [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (ADatosBancarios as IBizEmpresasDatosBancarios); + finally + HideHourglassCursor; + end; +end; + +initialization + +end. \ No newline at end of file diff --git a/Source/Modulos/Empresas/Empresas_Group.bdsgroup b/Source/Modulos/Empresas/Empresas_Group.bdsgroup new file mode 100644 index 00000000..3fefbff7 --- /dev/null +++ b/Source/Modulos/Empresas/Empresas_Group.bdsgroup @@ -0,0 +1,31 @@ + + + + + + + + + + + ..\..\Base\Base.bdsproj + ..\..\Base\GUIBase\GUIBase.bdsproj + ..\..\Base\Usuarios\Usuarios.bdsproj + Model\Empresas_model.bdsproj + Data\Empresas_data.bdsproj + Controller\Empresas_controller.bdsproj + Views\Empresas_view.bdsproj + Plugin\Empresas_plugin.bdsproj + Test\Empresas_Tests.bdsproj + Base.bpl GUIBase.bpl Usuarios.bpl Empresas_model.bpl Empresas_data.bpl Empresas_controller.bpl Empresas_view.bpl Empresas_plugin.bpl Empresas_Tests.exe + + + + + + + + + + diff --git a/Source/Modulos/Empresas/Model/Data/uIDataModuleEmpresas.pas b/Source/Modulos/Empresas/Model/Data/uIDataModuleEmpresas.pas new file mode 100644 index 00000000..628a7bef --- /dev/null +++ b/Source/Modulos/Empresas/Model/Data/uIDataModuleEmpresas.pas @@ -0,0 +1,20 @@ +unit uIDataModuleEmpresas; + +interface + +uses + SysUtils, Classes, + uBizEmpresas; + +type + IDataModuleEmpresas = interface + ['{681FD37D-8C67-47F1-8286-2B6EFE95CE7D}'] + function GetItem(const ID : Integer) : IBizEmpresa; + function NewItem : IBizEmpresa; + function GetItems : IBizEmpresa; + function GetNextID(const DataSetName : String) : Integer; + end; + +implementation + +end. diff --git a/Source/Modulos/Empresas/Model/Empresas_model.bdsproj b/Source/Modulos/Empresas/Model/Empresas_model.bdsproj new file mode 100644 index 00000000..84e8891d --- /dev/null +++ b/Source/Modulos/Empresas/Model/Empresas_model.bdsproj @@ -0,0 +1,497 @@ + + + + + + + + + + + + Empresas_model.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + Empresas + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + + False + diff --git a/Source/Modulos/Empresas/Model/Empresas_model.dpk b/Source/Modulos/Empresas/Model/Empresas_model.dpk new file mode 100644 index 00000000..1de1c0f6 --- /dev/null +++ b/Source/Modulos/Empresas/Model/Empresas_model.dpk @@ -0,0 +1,53 @@ +package Empresas_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Empresas'} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + vcl, + dsnap, + vcldb, + adortl, + vcljpg, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + DataAbstract_D10, + Base; + +contains + uBizEmpresas in 'uBizEmpresas.pas', + uIDataModuleEmpresas in 'Data\uIDataModuleEmpresas.pas', + schEmpresasClient_Intf in 'schEmpresasClient_Intf.pas', + schEmpresasServer_Intf in 'schEmpresasServer_Intf.pas', + uBizEmpresasDatosBancarios in 'uBizEmpresasDatosBancarios.pas'; + +end. diff --git a/Source/Modulos/Empresas/Model/Empresas_model.dproj b/Source/Modulos/Empresas/Model/Empresas_model.dproj new file mode 100644 index 00000000..1b3a9275 --- /dev/null +++ b/Source/Modulos/Empresas/Model/Empresas_model.dproj @@ -0,0 +1,611 @@ + + + {a7225a8d-f40d-4878-9a27-c5de0e7cb638} + Empresas_model.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Empresas_model.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + Empresas + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + Empresas_model.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Empresas/Model/Empresas_model.drc b/Source/Modulos/Empresas/Model/Empresas_model.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Empresas/Model/Empresas_model.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Empresas/Model/Empresas_model.rc b/Source/Modulos/Empresas/Model/Empresas_model.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Empresas/Model/Empresas_model.res b/Source/Modulos/Empresas/Model/Empresas_model.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Empresas/Model/Empresas_model.res differ diff --git a/Source/Modulos/Empresas/Model/schEmpresasClient_Intf.pas b/Source/Modulos/Empresas/Model/schEmpresasClient_Intf.pas new file mode 100644 index 00000000..1f2a557f --- /dev/null +++ b/Source/Modulos/Empresas/Model/schEmpresasClient_Intf.pas @@ -0,0 +1,1346 @@ +unit schEmpresasClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_Empresas = '{BDE24289-FA14-4BFD-90FC-C75CDA2903B4}'; + RID_EmpresasDatosBanco = '{B38F881C-BE9D-4956-BC5B-06C922A088A8}'; + RID_Empresas_Refresh = '{74AFE46D-F556-467E-A6AE-1B30229DB923}'; + RID_EmpresasDatosBanco_Refresh = '{A43716FA-0A11-4A8F-9FFA-9DF825914C22}'; + + { Data table names } + nme_Empresas = 'Empresas'; + nme_EmpresasDatosBanco = 'EmpresasDatosBanco'; + nme_Empresas_Refresh = 'Empresas_Refresh'; + nme_EmpresasDatosBanco_Refresh = 'EmpresasDatosBanco_Refresh'; + + { Empresas fields } + fld_EmpresasID = 'ID'; + fld_EmpresasNIF_CIF = 'NIF_CIF'; + fld_EmpresasNOMBRE = 'NOMBRE'; + fld_EmpresasRAZON_SOCIAL = 'RAZON_SOCIAL'; + fld_EmpresasCALLE = 'CALLE'; + fld_EmpresasPOBLACION = 'POBLACION'; + fld_EmpresasPROVINCIA = 'PROVINCIA'; + fld_EmpresasCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_EmpresasTELEFONO_1 = 'TELEFONO_1'; + fld_EmpresasTELEFONO_2 = 'TELEFONO_2'; + fld_EmpresasMOVIL_1 = 'MOVIL_1'; + fld_EmpresasMOVIL_2 = 'MOVIL_2'; + fld_EmpresasFAX = 'FAX'; + fld_EmpresasEMAIL_1 = 'EMAIL_1'; + fld_EmpresasEMAIL_2 = 'EMAIL_2'; + fld_EmpresasPAGINA_WEB = 'PAGINA_WEB'; + fld_EmpresasNOTAS = 'NOTAS'; + fld_EmpresasFECHA_ALTA = 'FECHA_ALTA'; + fld_EmpresasFECHA_MODIFICACION = 'FECHA_MODIFICACION'; + fld_EmpresasUSUARIO = 'USUARIO'; + fld_EmpresasLOGOTIPO = 'LOGOTIPO'; + fld_EmpresasREGISTRO_MERCANTIL = 'REGISTRO_MERCANTIL'; + fld_EmpresasIVA = 'IVA'; + + { Empresas field indexes } + idx_EmpresasID = 0; + idx_EmpresasNIF_CIF = 1; + idx_EmpresasNOMBRE = 2; + idx_EmpresasRAZON_SOCIAL = 3; + idx_EmpresasCALLE = 4; + idx_EmpresasPOBLACION = 5; + idx_EmpresasPROVINCIA = 6; + idx_EmpresasCODIGO_POSTAL = 7; + idx_EmpresasTELEFONO_1 = 8; + idx_EmpresasTELEFONO_2 = 9; + idx_EmpresasMOVIL_1 = 10; + idx_EmpresasMOVIL_2 = 11; + idx_EmpresasFAX = 12; + idx_EmpresasEMAIL_1 = 13; + idx_EmpresasEMAIL_2 = 14; + idx_EmpresasPAGINA_WEB = 15; + idx_EmpresasNOTAS = 16; + idx_EmpresasFECHA_ALTA = 17; + idx_EmpresasFECHA_MODIFICACION = 18; + idx_EmpresasUSUARIO = 19; + idx_EmpresasLOGOTIPO = 20; + idx_EmpresasREGISTRO_MERCANTIL = 21; + idx_EmpresasIVA = 22; + + { EmpresasDatosBanco fields } + fld_EmpresasDatosBancoID = 'ID'; + fld_EmpresasDatosBancoID_EMPRESA = 'ID_EMPRESA'; + fld_EmpresasDatosBancoNOMBRE = 'NOMBRE'; + fld_EmpresasDatosBancoENTIDAD = 'ENTIDAD'; + fld_EmpresasDatosBancoSUCURSAL = 'SUCURSAL'; + fld_EmpresasDatosBancoDC = 'DC'; + fld_EmpresasDatosBancoCUENTA = 'CUENTA'; + fld_EmpresasDatosBancoSUFIJO_N19 = 'SUFIJO_N19'; + fld_EmpresasDatosBancoSUFIJO_N58 = 'SUFIJO_N58'; + + { EmpresasDatosBanco field indexes } + idx_EmpresasDatosBancoID = 0; + idx_EmpresasDatosBancoID_EMPRESA = 1; + idx_EmpresasDatosBancoNOMBRE = 2; + idx_EmpresasDatosBancoENTIDAD = 3; + idx_EmpresasDatosBancoSUCURSAL = 4; + idx_EmpresasDatosBancoDC = 5; + idx_EmpresasDatosBancoCUENTA = 6; + idx_EmpresasDatosBancoSUFIJO_N19 = 7; + idx_EmpresasDatosBancoSUFIJO_N58 = 8; + + { Empresas_Refresh fields } + fld_Empresas_RefreshID = 'ID'; + fld_Empresas_RefreshNIF_CIF = 'NIF_CIF'; + fld_Empresas_RefreshNOMBRE = 'NOMBRE'; + fld_Empresas_RefreshRAZON_SOCIAL = 'RAZON_SOCIAL'; + fld_Empresas_RefreshCALLE = 'CALLE'; + fld_Empresas_RefreshPOBLACION = 'POBLACION'; + fld_Empresas_RefreshPROVINCIA = 'PROVINCIA'; + fld_Empresas_RefreshCODIGO_POSTAL = 'CODIGO_POSTAL'; + fld_Empresas_RefreshTELEFONO_1 = 'TELEFONO_1'; + fld_Empresas_RefreshTELEFONO_2 = 'TELEFONO_2'; + fld_Empresas_RefreshMOVIL_1 = 'MOVIL_1'; + fld_Empresas_RefreshMOVIL_2 = 'MOVIL_2'; + fld_Empresas_RefreshFAX = 'FAX'; + fld_Empresas_RefreshEMAIL_1 = 'EMAIL_1'; + fld_Empresas_RefreshEMAIL_2 = 'EMAIL_2'; + fld_Empresas_RefreshPAGINA_WEB = 'PAGINA_WEB'; + fld_Empresas_RefreshNOTAS = 'NOTAS'; + fld_Empresas_RefreshFECHA_ALTA = 'FECHA_ALTA'; + fld_Empresas_RefreshFECHA_MODIFICACION = 'FECHA_MODIFICACION'; + fld_Empresas_RefreshUSUARIO = 'USUARIO'; + fld_Empresas_RefreshLOGOTIPO = 'LOGOTIPO'; + fld_Empresas_RefreshREGISTRO_MERCANTIL = 'REGISTRO_MERCANTIL'; + fld_Empresas_RefreshIVA = 'IVA'; + + { Empresas_Refresh field indexes } + idx_Empresas_RefreshID = 0; + idx_Empresas_RefreshNIF_CIF = 1; + idx_Empresas_RefreshNOMBRE = 2; + idx_Empresas_RefreshRAZON_SOCIAL = 3; + idx_Empresas_RefreshCALLE = 4; + idx_Empresas_RefreshPOBLACION = 5; + idx_Empresas_RefreshPROVINCIA = 6; + idx_Empresas_RefreshCODIGO_POSTAL = 7; + idx_Empresas_RefreshTELEFONO_1 = 8; + idx_Empresas_RefreshTELEFONO_2 = 9; + idx_Empresas_RefreshMOVIL_1 = 10; + idx_Empresas_RefreshMOVIL_2 = 11; + idx_Empresas_RefreshFAX = 12; + idx_Empresas_RefreshEMAIL_1 = 13; + idx_Empresas_RefreshEMAIL_2 = 14; + idx_Empresas_RefreshPAGINA_WEB = 15; + idx_Empresas_RefreshNOTAS = 16; + idx_Empresas_RefreshFECHA_ALTA = 17; + idx_Empresas_RefreshFECHA_MODIFICACION = 18; + idx_Empresas_RefreshUSUARIO = 19; + idx_Empresas_RefreshLOGOTIPO = 20; + idx_Empresas_RefreshREGISTRO_MERCANTIL = 21; + idx_Empresas_RefreshIVA = 22; + + { EmpresasDatosBanco_Refresh fields } + fld_EmpresasDatosBanco_RefreshID = 'ID'; + fld_EmpresasDatosBanco_RefreshID_EMPRESA = 'ID_EMPRESA'; + fld_EmpresasDatosBanco_RefreshNOMBRE = 'NOMBRE'; + fld_EmpresasDatosBanco_RefreshENTIDAD = 'ENTIDAD'; + fld_EmpresasDatosBanco_RefreshSUCURSAL = 'SUCURSAL'; + fld_EmpresasDatosBanco_RefreshDC = 'DC'; + fld_EmpresasDatosBanco_RefreshCUENTA = 'CUENTA'; + fld_EmpresasDatosBanco_RefreshSUFIJO_N19 = 'SUFIJO_N19'; + fld_EmpresasDatosBanco_RefreshSUFIJO_N58 = 'SUFIJO_N58'; + + { EmpresasDatosBanco_Refresh field indexes } + idx_EmpresasDatosBanco_RefreshID = 0; + idx_EmpresasDatosBanco_RefreshID_EMPRESA = 1; + idx_EmpresasDatosBanco_RefreshNOMBRE = 2; + idx_EmpresasDatosBanco_RefreshENTIDAD = 3; + idx_EmpresasDatosBanco_RefreshSUCURSAL = 4; + idx_EmpresasDatosBanco_RefreshDC = 5; + idx_EmpresasDatosBanco_RefreshCUENTA = 6; + idx_EmpresasDatosBanco_RefreshSUFIJO_N19 = 7; + idx_EmpresasDatosBanco_RefreshSUFIJO_N58 = 8; + +type + { IEmpresas } + IEmpresas = interface(IDAStronglyTypedDataTable) + ['{F5A4EFC5-47CF-4091-B7EA-B1F6F93195F5}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetRAZON_SOCIALValue: String; + procedure SetRAZON_SOCIALValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetTELEFONO_1Value: String; + procedure SetTELEFONO_1Value(const aValue: String); + function GetTELEFONO_2Value: String; + procedure SetTELEFONO_2Value(const aValue: String); + function GetMOVIL_1Value: String; + procedure SetMOVIL_1Value(const aValue: String); + function GetMOVIL_2Value: String; + procedure SetMOVIL_2Value(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAIL_1Value: String; + procedure SetEMAIL_1Value(const aValue: String); + function GetEMAIL_2Value: String; + procedure SetEMAIL_2Value(const aValue: String); + function GetPAGINA_WEBValue: String; + procedure SetPAGINA_WEBValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetFECHA_ALTAValue: DateTime; + procedure SetFECHA_ALTAValue(const aValue: DateTime); + function GetFECHA_MODIFICACIONValue: DateTime; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetLOGOTIPOValue: IROStream; + procedure SetLOGOTIPOValue(const aValue: IROStream); + function GetREGISTRO_MERCANTILValue: String; + procedure SetREGISTRO_MERCANTILValue(const aValue: String); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property RAZON_SOCIAL: String read GetRAZON_SOCIALValue write SetRAZON_SOCIALValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property LOGOTIPO: IROStream read GetLOGOTIPOValue write SetLOGOTIPOValue; + property REGISTRO_MERCANTIL: String read GetREGISTRO_MERCANTILValue write SetREGISTRO_MERCANTILValue; + property IVA: Float read GetIVAValue write SetIVAValue; + end; + + { TEmpresasDataTableRules } + TEmpresasDataTableRules = class(TDADataTableRules, IEmpresas) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetRAZON_SOCIALValue: String; virtual; + procedure SetRAZON_SOCIALValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetLOGOTIPOValue: IROStream; virtual; + procedure SetLOGOTIPOValue(const aValue: IROStream); virtual; + function GetREGISTRO_MERCANTILValue: String; virtual; + procedure SetREGISTRO_MERCANTILValue(const aValue: String); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property RAZON_SOCIAL: String read GetRAZON_SOCIALValue write SetRAZON_SOCIALValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property LOGOTIPO: IROStream read GetLOGOTIPOValue write SetLOGOTIPOValue; + property REGISTRO_MERCANTIL: String read GetREGISTRO_MERCANTILValue write SetREGISTRO_MERCANTILValue; + property IVA: Float read GetIVAValue write SetIVAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IEmpresasDatosBanco } + IEmpresasDatosBanco = interface(IDAStronglyTypedDataTable) + ['{83F8EA10-9660-49FD-8A99-6C9775B435F7}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetENTIDADValue: String; + procedure SetENTIDADValue(const aValue: String); + function GetSUCURSALValue: String; + procedure SetSUCURSALValue(const aValue: String); + function GetDCValue: String; + procedure SetDCValue(const aValue: String); + function GetCUENTAValue: String; + procedure SetCUENTAValue(const aValue: String); + function GetSUFIJO_N19Value: String; + procedure SetSUFIJO_N19Value(const aValue: String); + function GetSUFIJO_N58Value: String; + procedure SetSUFIJO_N58Value(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + end; + + { TEmpresasDatosBancoDataTableRules } + TEmpresasDatosBancoDataTableRules = class(TDADataTableRules, IEmpresasDatosBanco) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IEmpresas_Refresh } + IEmpresas_Refresh = interface(IDAStronglyTypedDataTable) + ['{F4E3D225-DEB3-4ADD-BA79-2845247B3A3A}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetNIF_CIFValue: String; + procedure SetNIF_CIFValue(const aValue: String); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetRAZON_SOCIALValue: String; + procedure SetRAZON_SOCIALValue(const aValue: String); + function GetCALLEValue: String; + procedure SetCALLEValue(const aValue: String); + function GetPOBLACIONValue: String; + procedure SetPOBLACIONValue(const aValue: String); + function GetPROVINCIAValue: String; + procedure SetPROVINCIAValue(const aValue: String); + function GetCODIGO_POSTALValue: String; + procedure SetCODIGO_POSTALValue(const aValue: String); + function GetTELEFONO_1Value: String; + procedure SetTELEFONO_1Value(const aValue: String); + function GetTELEFONO_2Value: String; + procedure SetTELEFONO_2Value(const aValue: String); + function GetMOVIL_1Value: String; + procedure SetMOVIL_1Value(const aValue: String); + function GetMOVIL_2Value: String; + procedure SetMOVIL_2Value(const aValue: String); + function GetFAXValue: String; + procedure SetFAXValue(const aValue: String); + function GetEMAIL_1Value: String; + procedure SetEMAIL_1Value(const aValue: String); + function GetEMAIL_2Value: String; + procedure SetEMAIL_2Value(const aValue: String); + function GetPAGINA_WEBValue: String; + procedure SetPAGINA_WEBValue(const aValue: String); + function GetNOTASValue: IROStrings; + procedure SetNOTASValue(const aValue: IROStrings); + function GetFECHA_ALTAValue: DateTime; + procedure SetFECHA_ALTAValue(const aValue: DateTime); + function GetFECHA_MODIFICACIONValue: DateTime; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); + function GetUSUARIOValue: String; + procedure SetUSUARIOValue(const aValue: String); + function GetLOGOTIPOValue: IROStream; + procedure SetLOGOTIPOValue(const aValue: IROStream); + function GetREGISTRO_MERCANTILValue: String; + procedure SetREGISTRO_MERCANTILValue(const aValue: String); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property RAZON_SOCIAL: String read GetRAZON_SOCIALValue write SetRAZON_SOCIALValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property LOGOTIPO: IROStream read GetLOGOTIPOValue write SetLOGOTIPOValue; + property REGISTRO_MERCANTIL: String read GetREGISTRO_MERCANTILValue write SetREGISTRO_MERCANTILValue; + property IVA: Float read GetIVAValue write SetIVAValue; + end; + + { TEmpresas_RefreshDataTableRules } + TEmpresas_RefreshDataTableRules = class(TDADataTableRules, IEmpresas_Refresh) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetRAZON_SOCIALValue: String; virtual; + procedure SetRAZON_SOCIALValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetLOGOTIPOValue: IROStream; virtual; + procedure SetLOGOTIPOValue(const aValue: IROStream); virtual; + function GetREGISTRO_MERCANTILValue: String; virtual; + procedure SetREGISTRO_MERCANTILValue(const aValue: String); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property NIF_CIF: String read GetNIF_CIFValue write SetNIF_CIFValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property RAZON_SOCIAL: String read GetRAZON_SOCIALValue write SetRAZON_SOCIALValue; + property CALLE: String read GetCALLEValue write SetCALLEValue; + property POBLACION: String read GetPOBLACIONValue write SetPOBLACIONValue; + property PROVINCIA: String read GetPROVINCIAValue write SetPROVINCIAValue; + property CODIGO_POSTAL: String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property TELEFONO_1: String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property TELEFONO_2: String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property MOVIL_1: String read GetMOVIL_1Value write SetMOVIL_1Value; + property MOVIL_2: String read GetMOVIL_2Value write SetMOVIL_2Value; + property FAX: String read GetFAXValue write SetFAXValue; + property EMAIL_1: String read GetEMAIL_1Value write SetEMAIL_1Value; + property EMAIL_2: String read GetEMAIL_2Value write SetEMAIL_2Value; + property PAGINA_WEB: String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property NOTAS: IROStrings read GetNOTASValue write SetNOTASValue; + property FECHA_ALTA: DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property FECHA_MODIFICACION: DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property USUARIO: String read GetUSUARIOValue write SetUSUARIOValue; + property LOGOTIPO: IROStream read GetLOGOTIPOValue write SetLOGOTIPOValue; + property REGISTRO_MERCANTIL: String read GetREGISTRO_MERCANTILValue write SetREGISTRO_MERCANTILValue; + property IVA: Float read GetIVAValue write SetIVAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IEmpresasDatosBanco_Refresh } + IEmpresasDatosBanco_Refresh = interface(IDAStronglyTypedDataTable) + ['{15A7C527-4B34-4012-8FCB-215C4EFDD4FA}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_EMPRESAValue: Integer; + procedure SetID_EMPRESAValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetENTIDADValue: String; + procedure SetENTIDADValue(const aValue: String); + function GetSUCURSALValue: String; + procedure SetSUCURSALValue(const aValue: String); + function GetDCValue: String; + procedure SetDCValue(const aValue: String); + function GetCUENTAValue: String; + procedure SetCUENTAValue(const aValue: String); + function GetSUFIJO_N19Value: String; + procedure SetSUFIJO_N19Value(const aValue: String); + function GetSUFIJO_N58Value: String; + procedure SetSUFIJO_N58Value(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + end; + + { TEmpresasDatosBanco_RefreshDataTableRules } + TEmpresasDatosBanco_RefreshDataTableRules = class(TDADataTableRules, IEmpresasDatosBanco_Refresh) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_EMPRESA: Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + property SUFIJO_N19: String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property SUFIJO_N58: String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TEmpresasDataTableRules } +constructor TEmpresasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TEmpresasDataTableRules.Destroy; +begin + inherited; +end; + +function TEmpresasDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_EmpresasID].AsInteger; +end; + +procedure TEmpresasDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpresasID].AsInteger := aValue; +end; + +function TEmpresasDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_EmpresasNIF_CIF].AsString; +end; + +procedure TEmpresasDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasNIF_CIF].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_EmpresasNOMBRE].AsString; +end; + +procedure TEmpresasDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasNOMBRE].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetRAZON_SOCIALValue: String; +begin + result := DataTable.Fields[idx_EmpresasRAZON_SOCIAL].AsString; +end; + +procedure TEmpresasDataTableRules.SetRAZON_SOCIALValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasRAZON_SOCIAL].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_EmpresasCALLE].AsString; +end; + +procedure TEmpresasDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasCALLE].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_EmpresasPOBLACION].AsString; +end; + +procedure TEmpresasDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasPOBLACION].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_EmpresasPROVINCIA].AsString; +end; + +procedure TEmpresasDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasPROVINCIA].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_EmpresasCODIGO_POSTAL].AsString; +end; + +procedure TEmpresasDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasCODIGO_POSTAL].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetTELEFONO_1Value: String; +begin + result := DataTable.Fields[idx_EmpresasTELEFONO_1].AsString; +end; + +procedure TEmpresasDataTableRules.SetTELEFONO_1Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasTELEFONO_1].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetTELEFONO_2Value: String; +begin + result := DataTable.Fields[idx_EmpresasTELEFONO_2].AsString; +end; + +procedure TEmpresasDataTableRules.SetTELEFONO_2Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasTELEFONO_2].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetMOVIL_1Value: String; +begin + result := DataTable.Fields[idx_EmpresasMOVIL_1].AsString; +end; + +procedure TEmpresasDataTableRules.SetMOVIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasMOVIL_1].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetMOVIL_2Value: String; +begin + result := DataTable.Fields[idx_EmpresasMOVIL_2].AsString; +end; + +procedure TEmpresasDataTableRules.SetMOVIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasMOVIL_2].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_EmpresasFAX].AsString; +end; + +procedure TEmpresasDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasFAX].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetEMAIL_1Value: String; +begin + result := DataTable.Fields[idx_EmpresasEMAIL_1].AsString; +end; + +procedure TEmpresasDataTableRules.SetEMAIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasEMAIL_1].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetEMAIL_2Value: String; +begin + result := DataTable.Fields[idx_EmpresasEMAIL_2].AsString; +end; + +procedure TEmpresasDataTableRules.SetEMAIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasEMAIL_2].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetPAGINA_WEBValue: String; +begin + result := DataTable.Fields[idx_EmpresasPAGINA_WEB].AsString; +end; + +procedure TEmpresasDataTableRules.SetPAGINA_WEBValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasPAGINA_WEB].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_EmpresasNOTAS].AsString; +end; + +procedure TEmpresasDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_EmpresasNOTAS].AsString := aValue.Text; +end; + +function TEmpresasDataTableRules.GetFECHA_ALTAValue: DateTime; +begin + result := DataTable.Fields[idx_EmpresasFECHA_ALTA].AsDateTime; +end; + +procedure TEmpresasDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_EmpresasFECHA_ALTA].AsDateTime := aValue; +end; + +function TEmpresasDataTableRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := DataTable.Fields[idx_EmpresasFECHA_MODIFICACION].AsDateTime; +end; + +procedure TEmpresasDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_EmpresasFECHA_MODIFICACION].AsDateTime := aValue; +end; + +function TEmpresasDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_EmpresasUSUARIO].AsString; +end; + +procedure TEmpresasDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasUSUARIO].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetLOGOTIPOValue: IROStream; +begin + result := NewROStream(); + DataTable.Fields[idx_EmpresasLOGOTIPO].SaveToStream(result); +end; + +procedure TEmpresasDataTableRules.SetLOGOTIPOValue(const aValue: IROStream); +begin + DataTable.Fields[idx_EmpresasLOGOTIPO].LoadFromStream(aValue); +end; + +function TEmpresasDataTableRules.GetREGISTRO_MERCANTILValue: String; +begin + result := DataTable.Fields[idx_EmpresasREGISTRO_MERCANTIL].AsString; +end; + +procedure TEmpresasDataTableRules.SetREGISTRO_MERCANTILValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasREGISTRO_MERCANTIL].AsString := aValue; +end; + +function TEmpresasDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_EmpresasIVA].AsFloat; +end; + +procedure TEmpresasDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_EmpresasIVA].AsFloat := aValue; +end; + + +{ TEmpresasDatosBancoDataTableRules } +constructor TEmpresasDatosBancoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TEmpresasDatosBancoDataTableRules.Destroy; +begin + inherited; +end; + +function TEmpresasDatosBancoDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoID].AsInteger; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpresasDatosBancoID].AsInteger := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoID_EMPRESA].AsInteger; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpresasDatosBancoID_EMPRESA].AsInteger := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoNOMBRE].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoNOMBRE].AsString := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetENTIDADValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoENTIDAD].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetENTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoENTIDAD].AsString := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetSUCURSALValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoSUCURSAL].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetSUCURSALValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoSUCURSAL].AsString := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetDCValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoDC].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetDCValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoDC].AsString := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetCUENTAValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoCUENTA].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetCUENTAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoCUENTA].AsString := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetSUFIJO_N19Value: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_N19].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetSUFIJO_N19Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_N19].AsString := aValue; +end; + +function TEmpresasDatosBancoDataTableRules.GetSUFIJO_N58Value: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_N58].AsString; +end; + +procedure TEmpresasDatosBancoDataTableRules.SetSUFIJO_N58Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBancoSUFIJO_N58].AsString := aValue; +end; + + +{ TEmpresas_RefreshDataTableRules } +constructor TEmpresas_RefreshDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TEmpresas_RefreshDataTableRules.Destroy; +begin + inherited; +end; + +function TEmpresas_RefreshDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_Empresas_RefreshID].AsInteger; +end; + +procedure TEmpresas_RefreshDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_Empresas_RefreshID].AsInteger := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetNIF_CIFValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshNIF_CIF].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetNIF_CIFValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshNIF_CIF].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshNOMBRE].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshNOMBRE].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetRAZON_SOCIALValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshRAZON_SOCIAL].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetRAZON_SOCIALValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshRAZON_SOCIAL].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetCALLEValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshCALLE].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetCALLEValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshCALLE].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetPOBLACIONValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshPOBLACION].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetPOBLACIONValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshPOBLACION].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetPROVINCIAValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshPROVINCIA].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetPROVINCIAValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshPROVINCIA].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetCODIGO_POSTALValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshCODIGO_POSTAL].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetCODIGO_POSTALValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshCODIGO_POSTAL].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetTELEFONO_1Value: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshTELEFONO_1].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetTELEFONO_1Value(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshTELEFONO_1].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetTELEFONO_2Value: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshTELEFONO_2].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetTELEFONO_2Value(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshTELEFONO_2].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetMOVIL_1Value: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshMOVIL_1].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetMOVIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshMOVIL_1].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetMOVIL_2Value: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshMOVIL_2].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetMOVIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshMOVIL_2].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetFAXValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshFAX].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetFAXValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshFAX].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetEMAIL_1Value: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshEMAIL_1].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetEMAIL_1Value(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshEMAIL_1].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetEMAIL_2Value: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshEMAIL_2].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetEMAIL_2Value(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshEMAIL_2].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetPAGINA_WEBValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshPAGINA_WEB].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetPAGINA_WEBValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshPAGINA_WEB].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_Empresas_RefreshNOTAS].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetNOTASValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_Empresas_RefreshNOTAS].AsString := aValue.Text; +end; + +function TEmpresas_RefreshDataTableRules.GetFECHA_ALTAValue: DateTime; +begin + result := DataTable.Fields[idx_Empresas_RefreshFECHA_ALTA].AsDateTime; +end; + +procedure TEmpresas_RefreshDataTableRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Empresas_RefreshFECHA_ALTA].AsDateTime := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := DataTable.Fields[idx_Empresas_RefreshFECHA_MODIFICACION].AsDateTime; +end; + +procedure TEmpresas_RefreshDataTableRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_Empresas_RefreshFECHA_MODIFICACION].AsDateTime := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetUSUARIOValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshUSUARIO].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetUSUARIOValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshUSUARIO].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetLOGOTIPOValue: IROStream; +begin + result := NewROStream(); + DataTable.Fields[idx_Empresas_RefreshLOGOTIPO].SaveToStream(result); +end; + +procedure TEmpresas_RefreshDataTableRules.SetLOGOTIPOValue(const aValue: IROStream); +begin + DataTable.Fields[idx_Empresas_RefreshLOGOTIPO].LoadFromStream(aValue); +end; + +function TEmpresas_RefreshDataTableRules.GetREGISTRO_MERCANTILValue: String; +begin + result := DataTable.Fields[idx_Empresas_RefreshREGISTRO_MERCANTIL].AsString; +end; + +procedure TEmpresas_RefreshDataTableRules.SetREGISTRO_MERCANTILValue(const aValue: String); +begin + DataTable.Fields[idx_Empresas_RefreshREGISTRO_MERCANTIL].AsString := aValue; +end; + +function TEmpresas_RefreshDataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_Empresas_RefreshIVA].AsFloat; +end; + +procedure TEmpresas_RefreshDataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_Empresas_RefreshIVA].AsFloat := aValue; +end; + + +{ TEmpresasDatosBanco_RefreshDataTableRules } +constructor TEmpresasDatosBanco_RefreshDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TEmpresasDatosBanco_RefreshDataTableRules.Destroy; +begin + inherited; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshID].AsInteger; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshID].AsInteger := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetID_EMPRESAValue: Integer; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshID_EMPRESA].AsInteger; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetID_EMPRESAValue(const aValue: Integer); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshID_EMPRESA].AsInteger := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshNOMBRE].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshNOMBRE].AsString := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetENTIDADValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshENTIDAD].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetENTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshENTIDAD].AsString := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetSUCURSALValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshSUCURSAL].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetSUCURSALValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshSUCURSAL].AsString := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetDCValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshDC].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetDCValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshDC].AsString := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetCUENTAValue: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshCUENTA].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetCUENTAValue(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshCUENTA].AsString := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetSUFIJO_N19Value: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshSUFIJO_N19].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetSUFIJO_N19Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshSUFIJO_N19].AsString := aValue; +end; + +function TEmpresasDatosBanco_RefreshDataTableRules.GetSUFIJO_N58Value: String; +begin + result := DataTable.Fields[idx_EmpresasDatosBanco_RefreshSUFIJO_N58].AsString; +end; + +procedure TEmpresasDatosBanco_RefreshDataTableRules.SetSUFIJO_N58Value(const aValue: String); +begin + DataTable.Fields[idx_EmpresasDatosBanco_RefreshSUFIJO_N58].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_Empresas, TEmpresasDataTableRules); + RegisterDataTableRules(RID_EmpresasDatosBanco, TEmpresasDatosBancoDataTableRules); + RegisterDataTableRules(RID_Empresas_Refresh, TEmpresas_RefreshDataTableRules); + RegisterDataTableRules(RID_EmpresasDatosBanco_Refresh, TEmpresasDatosBanco_RefreshDataTableRules); + +end. diff --git a/Source/Modulos/Empresas/Model/schEmpresasServer_Intf.pas b/Source/Modulos/Empresas/Model/schEmpresasServer_Intf.pas new file mode 100644 index 00000000..ed542d8c --- /dev/null +++ b/Source/Modulos/Empresas/Model/schEmpresasServer_Intf.pas @@ -0,0 +1,1581 @@ +unit schEmpresasServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schEmpresasClient_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_EmpresasDelta = '{6B1221C2-AF55-4833-86A5-B17E72AD9776}'; + RID_EmpresasDatosBancoDelta = '{5ADBB10D-263B-49A2-9F6E-B432AB5A76D1}'; + RID_Empresas_RefreshDelta = '{922EDFCA-3764-4B42-9B8D-BF1841156D54}'; + RID_EmpresasDatosBanco_RefreshDelta = '{BF0D6D54-14FC-4676-B1A0-DF972799F923}'; + +type + { IEmpresasDelta } + IEmpresasDelta = interface(IEmpresas) + ['{6B1221C2-AF55-4833-86A5-B17E72AD9776}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldNIF_CIFValue : String; + function GetOldNOMBREValue : String; + function GetOldRAZON_SOCIALValue : String; + function GetOldCALLEValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldTELEFONO_1Value : String; + function GetOldTELEFONO_2Value : String; + function GetOldMOVIL_1Value : String; + function GetOldMOVIL_2Value : String; + function GetOldFAXValue : String; + function GetOldEMAIL_1Value : String; + function GetOldEMAIL_2Value : String; + function GetOldPAGINA_WEBValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldFECHA_ALTAValue : DateTime; + function GetOldFECHA_MODIFICACIONValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldLOGOTIPOValue : IROStream; + function GetOldREGISTRO_MERCANTILValue : String; + function GetOldIVAValue : Float; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldRAZON_SOCIAL : String read GetOldRAZON_SOCIALValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldLOGOTIPO : IROStream read GetOldLOGOTIPOValue; + property OldREGISTRO_MERCANTIL : String read GetOldREGISTRO_MERCANTILValue; + property OldIVA : Float read GetOldIVAValue; + end; + + { TEmpresasBusinessProcessorRules } + TEmpresasBusinessProcessorRules = class(TDABusinessProcessorRules, IEmpresas, IEmpresasDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetRAZON_SOCIALValue: String; virtual; + function GetOldRAZON_SOCIALValue: String; virtual; + procedure SetRAZON_SOCIALValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + function GetOldTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + function GetOldTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + function GetOldMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + function GetOldMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + function GetOldEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + function GetOldEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + function GetOldPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + function GetOldFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + function GetOldFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetLOGOTIPOValue: IROStream; virtual; + function GetOldLOGOTIPOValue: IROStream; virtual; + procedure SetLOGOTIPOValue(const aValue: IROStream); virtual; + function GetREGISTRO_MERCANTILValue: String; virtual; + function GetOldREGISTRO_MERCANTILValue: String; virtual; + procedure SetREGISTRO_MERCANTILValue(const aValue: String); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property RAZON_SOCIAL : String read GetRAZON_SOCIALValue write SetRAZON_SOCIALValue; + property OldRAZON_SOCIAL : String read GetOldRAZON_SOCIALValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property TELEFONO_1 : String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property TELEFONO_2 : String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property MOVIL_1 : String read GetMOVIL_1Value write SetMOVIL_1Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property MOVIL_2 : String read GetMOVIL_2Value write SetMOVIL_2Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL_1 : String read GetEMAIL_1Value write SetEMAIL_1Value; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property EMAIL_2 : String read GetEMAIL_2Value write SetEMAIL_2Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property PAGINA_WEB : String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property LOGOTIPO : IROStream read GetLOGOTIPOValue write SetLOGOTIPOValue; + property OldLOGOTIPO : IROStream read GetOldLOGOTIPOValue; + property REGISTRO_MERCANTIL : String read GetREGISTRO_MERCANTILValue write SetREGISTRO_MERCANTILValue; + property OldREGISTRO_MERCANTIL : String read GetOldREGISTRO_MERCANTILValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IEmpresasDatosBancoDelta } + IEmpresasDatosBancoDelta = interface(IEmpresasDatosBanco) + ['{5ADBB10D-263B-49A2-9F6E-B432AB5A76D1}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_EMPRESAValue : Integer; + function GetOldNOMBREValue : String; + function GetOldENTIDADValue : String; + function GetOldSUCURSALValue : String; + function GetOldDCValue : String; + function GetOldCUENTAValue : String; + function GetOldSUFIJO_N19Value : String; + function GetOldSUFIJO_N58Value : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property OldDC : String read GetOldDCValue; + property OldCUENTA : String read GetOldCUENTAValue; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + end; + + { TEmpresasDatosBancoBusinessProcessorRules } + TEmpresasDatosBancoBusinessProcessorRules = class(TDABusinessProcessorRules, IEmpresasDatosBanco, IEmpresasDatosBancoDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + function GetOldENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + function GetOldSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + function GetOldDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + function GetOldCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + function GetOldSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + function GetOldSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property ENTIDAD : String read GetENTIDADValue write SetENTIDADValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property SUCURSAL : String read GetSUCURSALValue write SetSUCURSALValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property DC : String read GetDCValue write SetDCValue; + property OldDC : String read GetOldDCValue; + property CUENTA : String read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : String read GetOldCUENTAValue; + property SUFIJO_N19 : String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property SUFIJO_N58 : String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IEmpresas_RefreshDelta } + IEmpresas_RefreshDelta = interface(IEmpresas_Refresh) + ['{922EDFCA-3764-4B42-9B8D-BF1841156D54}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldNIF_CIFValue : String; + function GetOldNOMBREValue : String; + function GetOldRAZON_SOCIALValue : String; + function GetOldCALLEValue : String; + function GetOldPOBLACIONValue : String; + function GetOldPROVINCIAValue : String; + function GetOldCODIGO_POSTALValue : String; + function GetOldTELEFONO_1Value : String; + function GetOldTELEFONO_2Value : String; + function GetOldMOVIL_1Value : String; + function GetOldMOVIL_2Value : String; + function GetOldFAXValue : String; + function GetOldEMAIL_1Value : String; + function GetOldEMAIL_2Value : String; + function GetOldPAGINA_WEBValue : String; + function GetOldNOTASValue : IROStrings; + function GetOldFECHA_ALTAValue : DateTime; + function GetOldFECHA_MODIFICACIONValue : DateTime; + function GetOldUSUARIOValue : String; + function GetOldLOGOTIPOValue : IROStream; + function GetOldREGISTRO_MERCANTILValue : String; + function GetOldIVAValue : Float; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldRAZON_SOCIAL : String read GetOldRAZON_SOCIALValue; + property OldCALLE : String read GetOldCALLEValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property OldFAX : String read GetOldFAXValue; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property OldLOGOTIPO : IROStream read GetOldLOGOTIPOValue; + property OldREGISTRO_MERCANTIL : String read GetOldREGISTRO_MERCANTILValue; + property OldIVA : Float read GetOldIVAValue; + end; + + { TEmpresas_RefreshBusinessProcessorRules } + TEmpresas_RefreshBusinessProcessorRules = class(TDABusinessProcessorRules, IEmpresas_Refresh, IEmpresas_RefreshDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetNIF_CIFValue: String; virtual; + function GetOldNIF_CIFValue: String; virtual; + procedure SetNIF_CIFValue(const aValue: String); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetRAZON_SOCIALValue: String; virtual; + function GetOldRAZON_SOCIALValue: String; virtual; + procedure SetRAZON_SOCIALValue(const aValue: String); virtual; + function GetCALLEValue: String; virtual; + function GetOldCALLEValue: String; virtual; + procedure SetCALLEValue(const aValue: String); virtual; + function GetPOBLACIONValue: String; virtual; + function GetOldPOBLACIONValue: String; virtual; + procedure SetPOBLACIONValue(const aValue: String); virtual; + function GetPROVINCIAValue: String; virtual; + function GetOldPROVINCIAValue: String; virtual; + procedure SetPROVINCIAValue(const aValue: String); virtual; + function GetCODIGO_POSTALValue: String; virtual; + function GetOldCODIGO_POSTALValue: String; virtual; + procedure SetCODIGO_POSTALValue(const aValue: String); virtual; + function GetTELEFONO_1Value: String; virtual; + function GetOldTELEFONO_1Value: String; virtual; + procedure SetTELEFONO_1Value(const aValue: String); virtual; + function GetTELEFONO_2Value: String; virtual; + function GetOldTELEFONO_2Value: String; virtual; + procedure SetTELEFONO_2Value(const aValue: String); virtual; + function GetMOVIL_1Value: String; virtual; + function GetOldMOVIL_1Value: String; virtual; + procedure SetMOVIL_1Value(const aValue: String); virtual; + function GetMOVIL_2Value: String; virtual; + function GetOldMOVIL_2Value: String; virtual; + procedure SetMOVIL_2Value(const aValue: String); virtual; + function GetFAXValue: String; virtual; + function GetOldFAXValue: String; virtual; + procedure SetFAXValue(const aValue: String); virtual; + function GetEMAIL_1Value: String; virtual; + function GetOldEMAIL_1Value: String; virtual; + procedure SetEMAIL_1Value(const aValue: String); virtual; + function GetEMAIL_2Value: String; virtual; + function GetOldEMAIL_2Value: String; virtual; + procedure SetEMAIL_2Value(const aValue: String); virtual; + function GetPAGINA_WEBValue: String; virtual; + function GetOldPAGINA_WEBValue: String; virtual; + procedure SetPAGINA_WEBValue(const aValue: String); virtual; + function GetNOTASValue: IROStrings; virtual; + function GetOldNOTASValue: IROStrings; virtual; + procedure SetNOTASValue(const aValue: IROStrings); virtual; + function GetFECHA_ALTAValue: DateTime; virtual; + function GetOldFECHA_ALTAValue: DateTime; virtual; + procedure SetFECHA_ALTAValue(const aValue: DateTime); virtual; + function GetFECHA_MODIFICACIONValue: DateTime; virtual; + function GetOldFECHA_MODIFICACIONValue: DateTime; virtual; + procedure SetFECHA_MODIFICACIONValue(const aValue: DateTime); virtual; + function GetUSUARIOValue: String; virtual; + function GetOldUSUARIOValue: String; virtual; + procedure SetUSUARIOValue(const aValue: String); virtual; + function GetLOGOTIPOValue: IROStream; virtual; + function GetOldLOGOTIPOValue: IROStream; virtual; + procedure SetLOGOTIPOValue(const aValue: IROStream); virtual; + function GetREGISTRO_MERCANTILValue: String; virtual; + function GetOldREGISTRO_MERCANTILValue: String; virtual; + procedure SetREGISTRO_MERCANTILValue(const aValue: String); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property NIF_CIF : String read GetNIF_CIFValue write SetNIF_CIFValue; + property OldNIF_CIF : String read GetOldNIF_CIFValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property RAZON_SOCIAL : String read GetRAZON_SOCIALValue write SetRAZON_SOCIALValue; + property OldRAZON_SOCIAL : String read GetOldRAZON_SOCIALValue; + property CALLE : String read GetCALLEValue write SetCALLEValue; + property OldCALLE : String read GetOldCALLEValue; + property POBLACION : String read GetPOBLACIONValue write SetPOBLACIONValue; + property OldPOBLACION : String read GetOldPOBLACIONValue; + property PROVINCIA : String read GetPROVINCIAValue write SetPROVINCIAValue; + property OldPROVINCIA : String read GetOldPROVINCIAValue; + property CODIGO_POSTAL : String read GetCODIGO_POSTALValue write SetCODIGO_POSTALValue; + property OldCODIGO_POSTAL : String read GetOldCODIGO_POSTALValue; + property TELEFONO_1 : String read GetTELEFONO_1Value write SetTELEFONO_1Value; + property OldTELEFONO_1 : String read GetOldTELEFONO_1Value; + property TELEFONO_2 : String read GetTELEFONO_2Value write SetTELEFONO_2Value; + property OldTELEFONO_2 : String read GetOldTELEFONO_2Value; + property MOVIL_1 : String read GetMOVIL_1Value write SetMOVIL_1Value; + property OldMOVIL_1 : String read GetOldMOVIL_1Value; + property MOVIL_2 : String read GetMOVIL_2Value write SetMOVIL_2Value; + property OldMOVIL_2 : String read GetOldMOVIL_2Value; + property FAX : String read GetFAXValue write SetFAXValue; + property OldFAX : String read GetOldFAXValue; + property EMAIL_1 : String read GetEMAIL_1Value write SetEMAIL_1Value; + property OldEMAIL_1 : String read GetOldEMAIL_1Value; + property EMAIL_2 : String read GetEMAIL_2Value write SetEMAIL_2Value; + property OldEMAIL_2 : String read GetOldEMAIL_2Value; + property PAGINA_WEB : String read GetPAGINA_WEBValue write SetPAGINA_WEBValue; + property OldPAGINA_WEB : String read GetOldPAGINA_WEBValue; + property NOTAS : IROStrings read GetNOTASValue write SetNOTASValue; + property OldNOTAS : IROStrings read GetOldNOTASValue; + property FECHA_ALTA : DateTime read GetFECHA_ALTAValue write SetFECHA_ALTAValue; + property OldFECHA_ALTA : DateTime read GetOldFECHA_ALTAValue; + property FECHA_MODIFICACION : DateTime read GetFECHA_MODIFICACIONValue write SetFECHA_MODIFICACIONValue; + property OldFECHA_MODIFICACION : DateTime read GetOldFECHA_MODIFICACIONValue; + property USUARIO : String read GetUSUARIOValue write SetUSUARIOValue; + property OldUSUARIO : String read GetOldUSUARIOValue; + property LOGOTIPO : IROStream read GetLOGOTIPOValue write SetLOGOTIPOValue; + property OldLOGOTIPO : IROStream read GetOldLOGOTIPOValue; + property REGISTRO_MERCANTIL : String read GetREGISTRO_MERCANTILValue write SetREGISTRO_MERCANTILValue; + property OldREGISTRO_MERCANTIL : String read GetOldREGISTRO_MERCANTILValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IEmpresasDatosBanco_RefreshDelta } + IEmpresasDatosBanco_RefreshDelta = interface(IEmpresasDatosBanco_Refresh) + ['{BF0D6D54-14FC-4676-B1A0-DF972799F923}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_EMPRESAValue : Integer; + function GetOldNOMBREValue : String; + function GetOldENTIDADValue : String; + function GetOldSUCURSALValue : String; + function GetOldDCValue : String; + function GetOldCUENTAValue : String; + function GetOldSUFIJO_N19Value : String; + function GetOldSUFIJO_N58Value : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property OldDC : String read GetOldDCValue; + property OldCUENTA : String read GetOldCUENTAValue; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + end; + + { TEmpresasDatosBanco_RefreshBusinessProcessorRules } + TEmpresasDatosBanco_RefreshBusinessProcessorRules = class(TDABusinessProcessorRules, IEmpresasDatosBanco_Refresh, IEmpresasDatosBanco_RefreshDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_EMPRESAValue: Integer; virtual; + function GetOldID_EMPRESAValue: Integer; virtual; + procedure SetID_EMPRESAValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + function GetOldENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + function GetOldSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + function GetOldDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + function GetOldCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + function GetSUFIJO_N19Value: String; virtual; + function GetOldSUFIJO_N19Value: String; virtual; + procedure SetSUFIJO_N19Value(const aValue: String); virtual; + function GetSUFIJO_N58Value: String; virtual; + function GetOldSUFIJO_N58Value: String; virtual; + procedure SetSUFIJO_N58Value(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_EMPRESA : Integer read GetID_EMPRESAValue write SetID_EMPRESAValue; + property OldID_EMPRESA : Integer read GetOldID_EMPRESAValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property ENTIDAD : String read GetENTIDADValue write SetENTIDADValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property SUCURSAL : String read GetSUCURSALValue write SetSUCURSALValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property DC : String read GetDCValue write SetDCValue; + property OldDC : String read GetOldDCValue; + property CUENTA : String read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : String read GetOldCUENTAValue; + property SUFIJO_N19 : String read GetSUFIJO_N19Value write SetSUFIJO_N19Value; + property OldSUFIJO_N19 : String read GetOldSUFIJO_N19Value; + property SUFIJO_N58 : String read GetSUFIJO_N58Value write SetSUFIJO_N58Value; + property OldSUFIJO_N58 : String read GetOldSUFIJO_N58Value; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TEmpresasBusinessProcessorRules } +constructor TEmpresasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TEmpresasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TEmpresasBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID]; +end; + +function TEmpresasBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasID]; +end; + +procedure TEmpresasBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasID] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasNIF_CIF]; +end; + +function TEmpresasBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasNIF_CIF]; +end; + +procedure TEmpresasBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasNIF_CIF] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasNOMBRE]; +end; + +function TEmpresasBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasNOMBRE]; +end; + +procedure TEmpresasBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasNOMBRE] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetRAZON_SOCIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasRAZON_SOCIAL]; +end; + +function TEmpresasBusinessProcessorRules.GetOldRAZON_SOCIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasRAZON_SOCIAL]; +end; + +procedure TEmpresasBusinessProcessorRules.SetRAZON_SOCIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasRAZON_SOCIAL] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasCALLE]; +end; + +function TEmpresasBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasCALLE]; +end; + +procedure TEmpresasBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasCALLE] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasPOBLACION]; +end; + +function TEmpresasBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasPOBLACION]; +end; + +procedure TEmpresasBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasPOBLACION] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasPROVINCIA]; +end; + +function TEmpresasBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasPROVINCIA]; +end; + +procedure TEmpresasBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasPROVINCIA] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasCODIGO_POSTAL]; +end; + +function TEmpresasBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasCODIGO_POSTAL]; +end; + +procedure TEmpresasBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasCODIGO_POSTAL] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasTELEFONO_1]; +end; + +function TEmpresasBusinessProcessorRules.GetOldTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasTELEFONO_1]; +end; + +procedure TEmpresasBusinessProcessorRules.SetTELEFONO_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasTELEFONO_1] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasTELEFONO_2]; +end; + +function TEmpresasBusinessProcessorRules.GetOldTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasTELEFONO_2]; +end; + +procedure TEmpresasBusinessProcessorRules.SetTELEFONO_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasTELEFONO_2] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasMOVIL_1]; +end; + +function TEmpresasBusinessProcessorRules.GetOldMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasMOVIL_1]; +end; + +procedure TEmpresasBusinessProcessorRules.SetMOVIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasMOVIL_1] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasMOVIL_2]; +end; + +function TEmpresasBusinessProcessorRules.GetOldMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasMOVIL_2]; +end; + +procedure TEmpresasBusinessProcessorRules.SetMOVIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasMOVIL_2] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasFAX]; +end; + +function TEmpresasBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasFAX]; +end; + +procedure TEmpresasBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasFAX] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasEMAIL_1]; +end; + +function TEmpresasBusinessProcessorRules.GetOldEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasEMAIL_1]; +end; + +procedure TEmpresasBusinessProcessorRules.SetEMAIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasEMAIL_1] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasEMAIL_2]; +end; + +function TEmpresasBusinessProcessorRules.GetOldEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasEMAIL_2]; +end; + +procedure TEmpresasBusinessProcessorRules.SetEMAIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasEMAIL_2] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasPAGINA_WEB]; +end; + +function TEmpresasBusinessProcessorRules.GetOldPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasPAGINA_WEB]; +end; + +procedure TEmpresasBusinessProcessorRules.SetPAGINA_WEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasPAGINA_WEB] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasNOTAS]; +end; + +function TEmpresasBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasNOTAS]; +end; + +procedure TEmpresasBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasNOTAS] := aValue.Text; +end; + +function TEmpresasBusinessProcessorRules.GetFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasFECHA_ALTA]; +end; + +function TEmpresasBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasFECHA_ALTA]; +end; + +procedure TEmpresasBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasFECHA_ALTA] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasFECHA_MODIFICACION]; +end; + +function TEmpresasBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasFECHA_MODIFICACION]; +end; + +procedure TEmpresasBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasFECHA_MODIFICACION] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasUSUARIO]; +end; + +function TEmpresasBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasUSUARIO]; +end; + +procedure TEmpresasBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasUSUARIO] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetLOGOTIPOValue: IROStream; +begin + result := NewROStream(); + WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasLOGOTIPO], result.Stream); +end; + +function TEmpresasBusinessProcessorRules.GetOldLOGOTIPOValue: IROStream; +begin + result := NewROStream(); + WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasLOGOTIPO], result.Stream); +end; + +procedure TEmpresasBusinessProcessorRules.SetLOGOTIPOValue(const aValue: IROStream); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasLOGOTIPO] := VariantBinaryFromBinary(aValue.Stream); +end; + +function TEmpresasBusinessProcessorRules.GetREGISTRO_MERCANTILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasREGISTRO_MERCANTIL]; +end; + +function TEmpresasBusinessProcessorRules.GetOldREGISTRO_MERCANTILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasREGISTRO_MERCANTIL]; +end; + +procedure TEmpresasBusinessProcessorRules.SetREGISTRO_MERCANTILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasREGISTRO_MERCANTIL] := aValue; +end; + +function TEmpresasBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasIVA]; +end; + +function TEmpresasBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasIVA]; +end; + +procedure TEmpresasBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasIVA] := aValue; +end; + + +{ TEmpresasDatosBancoBusinessProcessorRules } +constructor TEmpresasDatosBancoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TEmpresasDatosBancoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoID]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoID]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoID] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoID_EMPRESA]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoID_EMPRESA]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoID_EMPRESA] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNOMBRE]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoNOMBRE]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoNOMBRE] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoENTIDAD]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoENTIDAD]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetENTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoENTIDAD] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUCURSAL]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUCURSAL]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUCURSALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUCURSAL] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetDCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoDC]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldDCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoDC]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetDCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoDC] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoCUENTA]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoCUENTA]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetCUENTAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoCUENTA] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_N19]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUFIJO_N19]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUFIJO_N19Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_N19] := aValue; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_N58]; +end; + +function TEmpresasDatosBancoBusinessProcessorRules.GetOldSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBancoSUFIJO_N58]; +end; + +procedure TEmpresasDatosBancoBusinessProcessorRules.SetSUFIJO_N58Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBancoSUFIJO_N58] := aValue; +end; + + +{ TEmpresas_RefreshBusinessProcessorRules } +constructor TEmpresas_RefreshBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TEmpresas_RefreshBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshID]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshID]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshID] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshNIF_CIF]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldNIF_CIFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshNIF_CIF]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetNIF_CIFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshNIF_CIF] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshNOMBRE]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshNOMBRE]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshNOMBRE] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetRAZON_SOCIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshRAZON_SOCIAL]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldRAZON_SOCIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshRAZON_SOCIAL]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetRAZON_SOCIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshRAZON_SOCIAL] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshCALLE]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldCALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshCALLE]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetCALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshCALLE] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshPOBLACION]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldPOBLACIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshPOBLACION]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetPOBLACIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshPOBLACION] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshPROVINCIA]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldPROVINCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshPROVINCIA]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetPROVINCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshPROVINCIA] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshCODIGO_POSTAL]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldCODIGO_POSTALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshCODIGO_POSTAL]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetCODIGO_POSTALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshCODIGO_POSTAL] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshTELEFONO_1]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldTELEFONO_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshTELEFONO_1]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetTELEFONO_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshTELEFONO_1] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshTELEFONO_2]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldTELEFONO_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshTELEFONO_2]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetTELEFONO_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshTELEFONO_2] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshMOVIL_1]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldMOVIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshMOVIL_1]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetMOVIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshMOVIL_1] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshMOVIL_2]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldMOVIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshMOVIL_2]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetMOVIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshMOVIL_2] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshFAX]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldFAXValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshFAX]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetFAXValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshFAX] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshEMAIL_1]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldEMAIL_1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshEMAIL_1]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetEMAIL_1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshEMAIL_1] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshEMAIL_2]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldEMAIL_2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshEMAIL_2]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetEMAIL_2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshEMAIL_2] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshPAGINA_WEB]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldPAGINA_WEBValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshPAGINA_WEB]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetPAGINA_WEBValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshPAGINA_WEB] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshNOTAS]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldNOTASValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshNOTAS]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetNOTASValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshNOTAS] := aValue.Text; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshFECHA_ALTA]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldFECHA_ALTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshFECHA_ALTA]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetFECHA_ALTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshFECHA_ALTA] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshFECHA_MODIFICACION]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldFECHA_MODIFICACIONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshFECHA_MODIFICACION]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetFECHA_MODIFICACIONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshFECHA_MODIFICACION] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshUSUARIO]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldUSUARIOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshUSUARIO]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetUSUARIOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshUSUARIO] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetLOGOTIPOValue: IROStream; +begin + result := NewROStream(); + WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshLOGOTIPO], result.Stream); +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldLOGOTIPOValue: IROStream; +begin + result := NewROStream(); + WriteVariantBinaryToBinary(BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshLOGOTIPO], result.Stream); +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetLOGOTIPOValue(const aValue: IROStream); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshLOGOTIPO] := VariantBinaryFromBinary(aValue.Stream); +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetREGISTRO_MERCANTILValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshREGISTRO_MERCANTIL]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldREGISTRO_MERCANTILValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshREGISTRO_MERCANTIL]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetREGISTRO_MERCANTILValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshREGISTRO_MERCANTIL] := aValue; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshIVA]; +end; + +function TEmpresas_RefreshBusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Empresas_RefreshIVA]; +end; + +procedure TEmpresas_RefreshBusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Empresas_RefreshIVA] := aValue; +end; + + +{ TEmpresasDatosBanco_RefreshBusinessProcessorRules } +constructor TEmpresasDatosBanco_RefreshBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TEmpresasDatosBanco_RefreshBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshID]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshID]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshID] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshID_EMPRESA]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldID_EMPRESAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshID_EMPRESA]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetID_EMPRESAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshID_EMPRESA] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshNOMBRE]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshNOMBRE]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshNOMBRE] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshENTIDAD]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshENTIDAD]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetENTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshENTIDAD] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshSUCURSAL]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshSUCURSAL]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetSUCURSALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshSUCURSAL] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetDCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshDC]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldDCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshDC]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetDCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshDC] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshCUENTA]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshCUENTA]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetCUENTAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshCUENTA] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshSUFIJO_N19]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldSUFIJO_N19Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshSUFIJO_N19]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetSUFIJO_N19Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshSUFIJO_N19] := aValue; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshSUFIJO_N58]; +end; + +function TEmpresasDatosBanco_RefreshBusinessProcessorRules.GetOldSUFIJO_N58Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EmpresasDatosBanco_RefreshSUFIJO_N58]; +end; + +procedure TEmpresasDatosBanco_RefreshBusinessProcessorRules.SetSUFIJO_N58Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EmpresasDatosBanco_RefreshSUFIJO_N58] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_EmpresasDelta, TEmpresasBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_EmpresasDatosBancoDelta, TEmpresasDatosBancoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Empresas_RefreshDelta, TEmpresas_RefreshBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_EmpresasDatosBanco_RefreshDelta, TEmpresasDatosBanco_RefreshBusinessProcessorRules); + +end. diff --git a/Source/Modulos/Empresas/Model/uBizEmpresas.pas b/Source/Modulos/Empresas/Model/uBizEmpresas.pas new file mode 100644 index 00000000..be05cd05 --- /dev/null +++ b/Source/Modulos/Empresas/Model/uBizEmpresas.pas @@ -0,0 +1,100 @@ +unit uBizEmpresas; + +interface + +uses + uDAInterfaces, uDADataTable, schEmpresasClient_Intf, + uBizEmpresasDatosBancarios; + +const + BIZ_CLIENT_EMPRESA = 'Client.Empresa'; + +type + IBizEmpresa = interface (IEmpresas) + ['{1DB69F36-969C-4078-B862-6D697670BCFD}'] + procedure SetDatosBancarios(AValue : IBizEmpresasDatosBancarios); + function GetDatosBancarios : IBizEmpresasDatosBancarios; + property DatosBancarios : IBizEmpresasDatosBancarios read GetDatosBancarios + write SetDatosBancarios; + + function EsNuevo : Boolean; + end; + + TBizEmpresa = class(TEmpresasDataTableRules, IBizEmpresa) + protected + FDatosBancarios : IBizEmpresasDatosBancarios; + FDatosBancariosLink : TDADataSource; + + procedure OnNewRecord(Sender: TDADataTable); override; + + procedure SetDatosBancarios(AValue : IBizEmpresasDatosBancarios); + function GetDatosBancarios : IBizEmpresasDatosBancarios; + public + function EsNuevo : Boolean; + procedure IniciarValoresEmpresaNueva; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + property DatosBancarios : IBizEmpresasDatosBancarios read GetDatosBancarios + write SetDatosBancarios; + end; + + +implementation + +uses + uDataTableUtils, Classes, DateUtils, SysUtils; + +{ TBizEmpresa } + + +constructor TBizEmpresa.Create(aDataTable: TDADataTable); +begin + inherited; + FDatosBancariosLink := TDADataSource.Create(NIL); + FDatosBancariosLink.DataTable := aDataTable; +end; + +destructor TBizEmpresa.Destroy; +begin + FDatosBancarios := NIL; + FDatosBancariosLink.Free; + inherited; +end; + +function TBizEmpresa.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +function TBizEmpresa.GetDatosBancarios: IBizEmpresasDatosBancarios; +begin + Result := FDatosBancarios; +end; + +procedure TBizEmpresa.IniciarValoresEmpresaNueva; +begin +// USUARIO := dmUsuarios.LoginInfo.Usuario; +end; + +procedure TBizEmpresa.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresEmpresaNueva; +end; + +procedure TBizEmpresa.SetDatosBancarios(AValue: IBizEmpresasDatosBancarios); +begin + FDatosBancarios := AValue; + EnlazarMaestroDetalle(FDatosBancariosLink, FDatosBancarios); +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_EMPRESA, TBizEmpresa); + +finalization + +end. + diff --git a/Source/Modulos/Empresas/Model/uBizEmpresasDatosBancarios.pas b/Source/Modulos/Empresas/Model/uBizEmpresasDatosBancarios.pas new file mode 100644 index 00000000..d86524c7 --- /dev/null +++ b/Source/Modulos/Empresas/Model/uBizEmpresasDatosBancarios.pas @@ -0,0 +1,58 @@ +unit uBizEmpresasDatosBancarios; + +interface + +uses + uDAInterfaces, uDADataTable, + schEmpresasClient_Intf; + +const + BIZ_CLIENT_EMPRESAS_DATOS_BANCARIOS = 'Client.EmpresasDatosBancarios'; + +type + IBizEmpresasDatosBancarios = interface(IEmpresasDatosBanco) + ['{CF695D8D-B9C0-406F-A3EA-B251E35A7E19}'] + function EsNuevo : Boolean; + end; + + TBizEmpresasDatosBancarios = class(TEmpresasDatosBancoDataTableRules, IBizEmpresasDatosBancarios) + protected + procedure BeforeInsert(Sender: TDADataTable); override; + procedure OnNewRecord(Sender: TDADataTable); override; + public + function EsNuevo : Boolean; + end; + +implementation + +uses + Dialogs,uDataTableUtils, DB; + +{ TBizDatosBancarios } + +procedure TBizEmpresasDatosBancarios.BeforeInsert(Sender: TDADataTable); +var + AMasterTable : TDADataTable; +begin + inherited; + AMasterTable := DataTable.GetMasterDataTable; + if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then + AMasterTable.Post; +end; + +function TBizEmpresasDatosBancarios.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +procedure TBizEmpresasDatosBancarios.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_EMPRESAS_DATOS_BANCARIOS, TBizEmpresasDatosBancarios); + + +end. diff --git a/Source/Modulos/Empresas/Plugin/Empresas_plugin.bdsproj b/Source/Modulos/Empresas/Plugin/Empresas_plugin.bdsproj new file mode 100644 index 00000000..f5a22bd8 --- /dev/null +++ b/Source/Modulos/Empresas/Plugin/Empresas_plugin.bdsproj @@ -0,0 +1,496 @@ + + + + + + + + + + + + Empresas_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + + diff --git a/Source/Modulos/Empresas/Plugin/Empresas_plugin.dpk b/Source/Modulos/Empresas/Plugin/Empresas_plugin.dpk new file mode 100644 index 00000000..b3ef334c --- /dev/null +++ b/Source/Modulos/Empresas/Plugin/Empresas_plugin.dpk @@ -0,0 +1,55 @@ +package Empresas_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + GUISDK_D10, + ccpack10, + designide, + xmlrtl, + vclactnband, + vclx, + cfpack_d10, + JvAppFrmD10R, + vcljpg, + JclVcl, + Jcl, + JvSystemD10R, + JvCoreD10R, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + Usuarios, + Empresas_model, + Empresas_data, + Empresas_controller, + Empresas_view; + +contains + uPluginEmpresas in 'uPluginEmpresas.pas' {PluginEmpresas: TDataModule}; + +end. diff --git a/Source/Modulos/Empresas/Plugin/Empresas_plugin.dproj b/Source/Modulos/Empresas/Plugin/Empresas_plugin.dproj new file mode 100644 index 00000000..1f8fd125 --- /dev/null +++ b/Source/Modulos/Empresas/Plugin/Empresas_plugin.dproj @@ -0,0 +1,615 @@ + + + {cafb4b38-ab55-40a5-8d2e-c54895b98402} + Empresas_plugin.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Empresas_plugin.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + JCL Debug IDE extension + JCL Project Analyzer + JCL Open and Save IDE dialogs with favorite folders + + + Empresas_plugin.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + +
PluginEmpresas
+
+
+ +
+ + diff --git a/Source/Modulos/Empresas/Plugin/Empresas_plugin.drc b/Source/Modulos/Empresas/Plugin/Empresas_plugin.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Empresas/Plugin/Empresas_plugin.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Empresas/Plugin/Empresas_plugin.rc b/Source/Modulos/Empresas/Plugin/Empresas_plugin.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Empresas/Plugin/Empresas_plugin.res b/Source/Modulos/Empresas/Plugin/Empresas_plugin.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Empresas/Plugin/Empresas_plugin.res differ diff --git a/Source/Modulos/Empresas/Plugin/uPluginEmpresas.dfm b/Source/Modulos/Empresas/Plugin/uPluginEmpresas.dfm new file mode 100644 index 00000000..cbe91335 --- /dev/null +++ b/Source/Modulos/Empresas/Plugin/uPluginEmpresas.dfm @@ -0,0 +1,816 @@ +object PluginEmpresas: TPluginEmpresas + OldCreateOrder = True + DefaultAction = actNuevaEmpresa + ModuleMenu = MainMenu + ModuleName = 'Empresas' + SmallImages = SmallImages + LargeImages = LargeImages + Version = '1.0' + Height = 193 + Width = 422 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002744944415478DA + 63FCFFFF3F032D01E3F0B060F9D6D334B3056E41A4B729491AFFFCFDCFF0F7EF + 3F869FBFFE80E93FFFFE8169301B887FFDFECB109E5E876A41E249438206FF05 + AAFFF5F72FC3AF3F7FC0F4975FBF207C10065A02932BFAB59C61DED24D9816CC + 373F8F6291F45B6F8626CF660C8BFE010D0361CFD5F60C1F791E800DBF14F082 + 4169A520D8928ABFAB705B00022036B2E11718CF33189F346660B809E4A83330 + 9C353FCBA0F9438BE117D007415B3C189EB2DF66B811FC1AAC566C3137431DC3 + 5AFC3E8019CE7C8A89E1AFD93F300D32FC6CDC5906E379408BB419183EEB7C61 + E0BDC2C3F05AE50D43F84E5F86BD51C718841771817DD0CEB211BB05E841C3BC + 1C684124D082C54C10C39719339C8D02D2B38C193E447C6410D8C2CFF0C2E525 + 43D49E00860B7F2EC0E3A3977D0B911620FBE02A508203887F30807DF056ED1D + 83F02D218627324F18E20E86329CFA79166EC164AEEDF82D40B6E42F50C36596 + 4B9038B80894D087C481DC5B79869F3F7E60180E02382D404E4520C58A1FFC18 + 6A9C6BC196FC03A7F5BF700CE247EF0D841BFE33E50F03E34C46FC16C0003C6D + 03B1CCB31F0C5325B4B1E60BDE877B505C0E03582D40CFA57FA039F3EA444D06 + 09A7200645CB1E86FBC74BC06A5EDC0726E7FBF719E6EE7BCE30A7DA09C3E229 + 4F73312D98B2780756570A7E3BC7A0F4660ED8307450DD928DD3E273AC89080B + BA27CF27584C9C2B7B88553CA5751FA65AA0E12000B680919191A0E1C75A14FF + 93124C404BC3E6EEFBB19A140B4281D42A6CC13467EF77AC96022D6024CA0290 + E196969AABB0C91D3F7E1D6BDC008101D0828BC45A803778402EC5A597681FE0 + 0A1E200087355E0B6809686E0100FA3E2AAB1481BE0E0000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000033B4944415478DA + DD957F68565518C73F77EF0FDFBDB9B94DC1214D5BB2FD61A3B0399236D66424 + 96A32874A1329D2D322C7F24686C0D539318FE964419E29F6AFF5810D982821C + BA0D57292846A4AD36B7D770BEEFF6FEBA7BEF3DF7DEB773A72EDFDE3BD71FEE + 1F0F3CDC7378CEF97E9EE73CE79CAB24934926B3298F07E0EB73BF4E0AE5B5AA + 79CA18400EC61C86162270F93043033D986692E9454B99337F459A80695AA37E + FB6B58D6BDF1DDFE2BAB3EE2D277479D01033FED440FFC4E389C60381263C474 + 31B7BC9EE205B5FF4BDCFED6AC6E7406F47535A1057AE5242FD1689C585C9516 + 27AA06A9ACFB9C278B5F1A136F3A2D1CB766D3E2115E5FFB713A203E78893F2F + 1C401D1A91C571CBA9493C2E055DE80C066F93F55429E5CB0F3D34F251B392BC + D9D09C0E08F67C457FF7492CCD853FD38FCFEB41C142681AAAAA72FD763F351F + 768E8A08C364D797CEC57DAF2A46EDBAEDCE80E16B67F0E1C7E3F64821032104 + 42D7D125E47AD8A2BAE1F4B8D15B7666327A43F657AEDF910E880C7413BAF205 + 198961321419BB5C681806868444E30922D32B295DBC7E42717B5CB761977391 + FBBB5AD16E76CAED37B17DA66167A13310715358BD8D1905CF4C286E5BFDE6DD + CE806B7D17E8ED68656622814716591882802AB893534259453D3373674F286E + FBDED9F2593AE07C7F072DDDFBE9BBF51BCBF4222AF29F261009D13674836EF3 + 0ED5854B787FE106F29E98312AD47CF01BC7226F5C5DC5BAAD2DA980E7E64F65 + 5FE711DA035DA8DE30B9A129AC29A9E5AFE19B7C1B6C079F0F821994E79552B7 + E06D0AB2E7A4446E9FAA0733FBA0716F2A80593DECF9F118514610D3E2E8468C + BC58169A5710F70B7C46164AC84B70B097A5C5AFB2B5E2133E3DDAE698C1BB6F + 95B3A9797F2A2090DDC1DE1F5AC9F6E5626427107E699ABC702E175E251377DC + 872BECE3EF500F453905B4BE71EAA1176DCBF603A90033FF0F769FDD879600F7 + 340F56A620E936E569525074372ED5432C1C269618A4A6A4868D658DEC39FEBD + 63060DCB5F4C07BCFC4211576F5DE5F8C513FC7CE3171991B0B5EDD7027999A5 + 2964E678D95CD6C4B3F9A5E3467EBFA5011695CD1D77D1442FE77FC51D0195CF + 173E327147C08E96238FFA87F62F6032DBA403FE011B7940FEE55D65A3000000 + 0049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FE7BE7177CDB9B18A126639175BE8F08F59BE35D199B6DE + 56833057E20B668AA361A953D3A1A6CEA9C3A0242AFA27184134080A05250DCD + 958E06350269D272EE6ED96DBBDEBB7BCFD9BDE7B5E75CB7E1E59E39FF70FFF8 + C08FE739E739E7FBF93EBFDF799E235996C54436E9FE007C7BEE8F09A15495CF + 924601E26274429707E8BD7C9C707F17866EF160D14B3C5EBA2A43C0304C1156 + AAD74C31D6CDD458370D9E5BB98DDF7FF8DC1910FCB11EF56627916842441CC5 + 705358B68EE2A7ABEF4ADCEE5F78B3CE19D07DA68EC4CD6E0CD3472C26138F2B + C46499981266F19A13E4172F1915AF6BD61C53F35E85C2CBAB776602E4DE5FF9 + EBE72694C890288E473C6AE1754BA89A4AA83F44F6F452CA569EB8A3F3549816 + AFAEDD9509E8EF68A1A7A319537513C80A90E5F322218412496445A13314E495 + ED6D29115533D8DBE25CDC9AF218AFBDB5DB1910E96AC14F00AFC72BDCE9689A + 264225994CD2193159BEF11B74DD766CBB3586DDDF726EDA2B13EE3531AEDE58 + 9F0988062F11FEED2B5C43115C2EE15DBCA80F43627282C1BC45CCA9A81D57DC + 4EDBAA9ABDCE45EE69FD84E4F556917E037BEE16402518F550B06C270F4D2B19 + 57DCBEB7A676FF185FD1852B749CFA80470A13784591355DA357D608F72E64D1 + BA2AB2A74E1F57DC9E5BBFE54026A0E7FC4F5C6A384ADFB5106A6125B3AB6FD0 + D716267859D423D44641F97C166C7F075FCE6329A15D4DDF391679CBDA72DEDE + 7A281DB0A46032178F1CA1EFC2797C8ACE40CEC394AC7883484F3703674F8BC2 + 27E87799E4CD5BC8539B5633E9D15969CE353D3D6D353B1AD3014F46BB38D7D4 + 004A9C298A785085786E1E3E3541408EA1FB250644FCF7CF2045CF2F675E7D23 + FB3F3EE9B8824DD565D4BE7F341D907FA595331F1EC69F9B2D003A01D522A999 + 887D86E47321FB5D44B2DC84FFFE979C19C5547EF935FAC8C6BACDF9C8467B77 + CFB1744051F84FBE3F78402422C914B7878010F78883CE1200D52B21FBDC4407 + E3E21819A2E4C50A66D71DA2F1B3D38E2BD8F0FA3399808AF945F475B4F3CBA7 + 5F70B5BD1D53E455B24CEC73DC4C85458EFF01E6EED94CEECC67C7743ED23200 + 4BE73E31E6B992BA678CF4E6B8E28E80C5A533EE99B823605FC347F7FC8F360A + 98C836E180FF01702244FEF5B056BE0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000034D4944415478DA + DD957D6855651CC73FF7E56CF7DEE962EA340397D96C0B97291B8AD95227EA08 + 6706460E476AA60B06C3B7966FC3AD482457D01441A13F842141232128288656 + B4ECC58992F8C760E2CB9DB9DBBABBD773CFDD793F3DF7EA86977B74FDE1FEE9 + 811FCF73CEF39CEFE7FB3C3F7ECFF1388EC37836CFFF0370E6EC9571A1BC5E55 + E619058887D10953FB87FE9E4F8986AF61990E534A5633B3BC2E4BC0B26C114E + BA376C3136EDF4D8B42D56ADDFCDE5AE93EE80F06FCDE8FDBDC4E2AA880449CB + 4771E5664A17D4FE27F154FFEA862677C08DEE26D4F00D2C3B075956482492C8 + 8A829C8CB274E33166942E1B156FEA305C8F666775929AB7F6640394C805FA7E + 6C23191B16C9F18BA50E92CF836EE8440623E43F534EE5FA638F749E0EDB61ED + A6BDD980C1BE4E6E9DEFC0D67D8482218239121E8490AAA12493F446C2BCF6DE + EF6911DDB038D8E99EDC862A9975EFEC7707C4FEEC244008C92F097726866188 + D0D1348DDE98CDCAFA2F31CD94E3945BEBBEFB7BCEEDD4CE847B438C6BEB9BB3 + 01F1F0AF442F9DC63B1CC3EB15DEC587E67D88ACA8DC9DFC0A15D58D638AA78E + ADAEE1A07B926F751F47BBD92D8EDF2235770FA0138EFB99B5620F85452F8C29 + 9E7AB7B1B1D51D702EDC43E287369E5455249164C334E8570C060BCAA858D0C0 + 53D3A78E299E9ADBB2FDC36C40D7A53B1C387599EBB13BAC29FB8275D38AB97D + 37CA2772057FFD022BE7CCA069CB8B4CCE9B9216DADBF6B56B92B76FAA62DBAE + 8F3201739F2FA2F5F38B745D88A048010AF306D85053C2CDDB71BE3D9FC0D182 + F8127FB364DE04EAEBCA78FA89E919CE0D33F3D81ADE3F9C09D0FD797C70F467 + E2092FDAC449E83E93C2608C612B80AC4E2464EAF8E2830CE903AC7969162DDB + 96D17AF41BD71DBC5B5B49E3BE8F33017D4370A8FD27F27373D14205E8B91344 + 21A9A20EFCE488AB30479591E428036A94E78AF339DDF206E648613DE07CA4D0 + 761C389209187682347FF63D9AA8626FA00033370F4792402CF6EA1A929E4051 + 8650BC1A358B4BD9F7F6620E9FF8CE75075BDF7C391B50BDA8848B57FB69FFAA + 873FAE5C4B5F038EED495F171EC716209B40C124F66F9EC3FCA2E2873A1F6959 + 80E50B673FF45E49BFB3467A7B4C7157C0D2F2671F9BB82BA0E550FB63FFA38D + 02C6B38D3BE05FAF5B45FEC8107D9F0000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD25200000A4D694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF + F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A + 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5 + 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8 + 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC + 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200 + C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05 + 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2 + 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C + CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97 + 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313 + 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F + 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA + 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED + 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383 + FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A + F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86 + 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432 + 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0 + 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C + 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70 + 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261 + 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA + 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F + 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961 + 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402 + 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2 + 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93 + 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90 + 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452 + A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650 + 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83 + 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7 + 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295 + 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9 + 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685 + 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9 + EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C + 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED + EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB + 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31 + 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87 + 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94 + 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85 + A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6 + 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29 + D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B + 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6 + 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD + D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7 + C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E + 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B + FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5 + 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1 + 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0 + 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67 + BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845 + F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC + A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7 + 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA + 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C + 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423 + F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433 + DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317 + 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2 + A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17 + 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4 + EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E + CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9 + 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD + 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF + B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C + 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD + EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293 + E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7 + 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F + EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6 + EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07 + FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247 + CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73 + ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC + CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F + F73EE77CFEFC2FF784F3FB25D29F330000028C4944415478DADD945F4853511C + C7BF77646942ABE9A061F6BF8690D443427B88A2321123166EDAA21E122308EA + B184407DC887E8A932F0611A3542325F0A0729B432A849CA68CA1CA2B86C0C4B + 43A428EFEEEE9FCE39E8DA9FBB7F0F7BE9073F7EE7DE7BCEF7737EBFF33B9753 + 1405F934EEFF00F43A47F34689026C7555392D1425059224232C882C8AB2CC22 + 1B131722121AAFB6C6030E5BDE6514964540126444C2448CB8F0538448C78204 + 99BC672E8A687FA045CFB357C980B1FEE371A033B53EB4365D4B06911D53AFAE + 71603A50C284BF85CEA174CB73709284B647BAD4006A741C2B3EBEFC05756573 + 88AC7C4541D17638433B602C324010049C35F7C33FA1C5C2623D9B5B5AEC407B + 973E7D066BE2E5C5C308FE3EC622151F5A3A8AD3BAB704B21B538B5530EA47E1 + 0D56A2DEFA12C3AE26E8373E25352419D80DEA80C4D21834BD98976DD8AA7130 + F11A9D1B834B2654970C6166D986FDDA018C7F3F8586F303981C59C7C4E941B5 + F594670788CF60161C0AA18067194C840EA2B2CC8B4FD3FB70E1D220263F70AB + 5D403278B2333D2016229105BE5F417606023F85F585467606DBE44D08F37C92 + 38B59480D82EA2ED6736FBD172B1994164D6EB52D4E973A3CD19155F8C5C815E + D3951E10BD48B4B77985C50D073CF86C79AF7A2FF4B596B89DAF992A20F1968A + AB37D377BF02FA9356EC3D72173323B7D89C85D931708100BA5DF3B0DF3E9104 + EE0C5D4F06743A5EABEE72F31F0FF6FCB033B1446BE9B89112EC29B8FC0F70EF + E1E38CBF09CFCD39D5F7CD1DAEE4B9449C1A03701C9751FCE39D5D4A2E6522D0 + 866E17FF22178095843EB532D9DFACA8420980CB0A40C54DA68A3EB56F6EB75F + F56C881D22006FB680B4E5A13B4DB536EB0C52958718AB755A403E2DEF80BF27 + 2521AB920B52530000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000003E54944415478DA + DD955D6C145514C7FF33B36D77D952281050902FCB8A74AB8D402DEDBA76B1A6 + 4896501142B028A105DAB47C941A890A292D1FF2D1E00B06358527134D782A1F + 29840A442925D604B5A8444C7830354AA8752DDBD9D9D99DB9D77B6767A69D66 + 1FED0BB3999C7B6736E777CEFF9C7347A094623C2FE1F100745CFF795C286B5E + 29106C00DB180FF99E27450C6BAE09617B40D7990505D1A8F19E101D3AE196DA + D6F82FBBDFA8D987BEABED4E0077A60C0DE2D78BEDF8FD9B0EC8B28CA827170B + CB5F4761C5DB70B927994E4C8754B7D7945BE68007C1D7EBB6A60124D418EE7C + 7E1CA4F7022231050F878731A8C431202B78B1AA162FBDD90C486E23729ED1D1 + F31969A5A90B0D61436DB3135019F2E36EF745F49FD90B414D201257F1AF40E1 + 9A968381070F31F0288EC6CFBAE07DD26F46CD65647270D9A899914EA1D1944C + 5575FB9D80D565F9B87ABA1583D7BE404214214DCAC60CDF2C3CE39B8EC8DFFF + E05CC74D846B0F604E4915AB8268383C71C99D36832DC108DEAA6F7102563140 + E7478DD086EEC0E79F87291327C0EB11118BCAC81029AE7FFD0366966E832FB8 + 1144108D68ADA272ED3592D2DECA64D38E5627201C5C84B30737635AE61F08BC + 5C00558E4361FA27985C2E11E8EAFA0EF35EDB83FCE00626896076162F2A9765 + B473628037EF3AE804AC0C3C8B530DAFB236BA8F70E5327833DC88C754482C7A + 5989E2CBB3DD285AB71F4BC25B98448211A56E69CFB33023B7C0358D879C8015 + A50BF169730DEEF55C4645E83914E64F413291448224D17BBB1FB77AEE21DCF2 + 318A8AD7B276E63520C64DCCF6E4B3414DB998C1D6A631808A121FFA6EF4E0A7 + 96D3C8F5C6E1298940CA5531709F42E99D0C817890D7DE84F94FF8ED880F9CEC + 4C5BE4DDD5E5A87DE7B013505EBC00DD4D9F60EAED3FA16851C4973F40CED224 + 94CE89F0FE32035474E16E2013853BAB91E3CE75E86D4F314D3DE33EEBDE3DE2 + 042C5F9A871B45DB317942162455042D559053C0D4BE928DD85F2C0B68901F25 + F05B830F2BD6541B83F6E1A9CB6933D8B92984FA3D479D80D0923C5C2BAA47B6 + 3B035EC1059A4D206501AE6117D4A40E59D3580308F8FEA9382ACFB419DD4347 + 1D13562DA8D9510DEF1D7302822F3C8D4B8BB761BAC70B8F4B42A628B17162DD + C2A659D535C4182496D0F0E3A22CAC3FD1C29C11B4B577A5CDA061631976BC3F + 0610289C8F6F3BBF427F6F1FD44814601DC465607D0A2231505626A45953915F + 16C0CCD9730D9DC9E813D43A81CD5AECFAE0B81350F2FC1CB3B7C9C884EAB0F7 + 464BEAA39C5A00E33D6CCB01FCD7B8B7CD0928F6CF368FE05427A48668044638 + CC76689DFB23DF0D0B0A3393DDFBC6005A8F9CFCDFBF6836603CAF7107FC0730 + 314BFE0CBC83B80000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000002874944415478DA + B5944D68134114C7DF50C47E585BA2D0B095924095A51E4CA5CA2208D58BE9AD + 154F06CA565452A1A224E736F4165088F45222480881DE6C901EA4274F122FC9 + 0A3DE450684C2FA188C4A6F9EA6EB2CE5BBBC36E13936CA40F1E339999FC7FFB + E63F3344555538CB20670EE864D1FA7AC2471B81E6384DD7C9B044739766C2EB + 15DE760C0804246349F18101A53438A83CE6790EC6C62E82D339C4268B451962 + B1644B5053C0CACA0DF63B184C42A5D20399CC1736B6BC2C6A2004E8B9BD9DC6 + 29FF6908317E7520E022B4EFA1DD18428E8E6428148E211CDE8DD3B9B993B5DA + BCDF3F6102944A0AA4523F1A20C4F8D50B0BEF2012798510D5E79BD0C4313736 + B21ADC58E5E2E2559378B9FCB7CD660F80024853000642D6D65E3071CCADAD1C + 033C7BFE441DE55EC2FCBCA3411C7367A704767B85556102C8721DAAD59A49DC + 66EB856834A301425E507F2AD7A176E91E9CEF7B0A333323267145A9433E9F6F + 345914439B3E9F6796E32E306104A1389AB9B7F75B83B8875D50EBE761F36B11 + F2E7EEC395D1D726F31D8E69AD32FD3FABAB115681872E7C8490C3C3636DF1FE + 7E8196DACF8EA60E79303205A4AA40F0130797C7DDF03EFC81E8772597EB7D83 + 000C141704C16F344E83D0EEAC3EE676BB9B4286732E887EE321994A9B8E396E + 35027471F4A1E54DA65BA7FE0B623C5546006E992EDEF4A2E981860A3C2D5D0A + 811548DB9B6C14770922A43312843E8B5D43483BF14A4E82047D05A44A779590 + 4EC47543AD7A6202B413EFD6786245BC1B08B12A6E1542961EDAD4E93BD7A047 + FE0EF6BE7247E2ED2078D1F055665B74739257EFF2BFC03974D0B1782B087D91 + E31430673279EAF62DB52E172C89378344221F9978C331FD9F40086D4CE2187F + 00FADE10E28785B5A40000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actDatosDe: TAction + Category = 'Empresa' + Caption = 'Datos de...' + OnExecute = actDatosDeExecute + OnUpdate = actDatosDeUpdate + end + object actPreferencias: TAction + Category = 'Empresa' + Caption = 'Preferencias' + Visible = False + end + object actGestionEmpresas: TAction + Category = 'Empresa' + Caption = 'Gesti'#243'n de empresas' + end + object actSucursales: TAction + Category = 'Empresa' + Caption = 'Sucursales' + Visible = False + end + object actNuevaEmpresa: TAction + Category = 'Empresa' + Caption = 'Nueva empresa...' + OnExecute = actNuevaEmpresaExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Empresas1: TMenuItem + Caption = 'Empresa' + object Gestindeempresas1: TMenuItem + Tag = -1000 + Action = actGestionEmpresas + end + object N2: TMenuItem + Tag = -100 + Caption = '-' + end + object N1: TMenuItem + Tag = 7000 + Caption = '-' + end + object Sucursales1: TMenuItem + Tag = 8000 + Action = actSucursales + end + object N3: TMenuItem + Tag = 8999 + Caption = '-' + end + object Datosde1: TMenuItem + Tag = 9000 + Action = actDatosDe + end + object Preferencias1: TMenuItem + Tag = 9001 + Action = actPreferencias + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011A4944415478DA + 63FCFFFF3F032580916203966D3945B60991DEA68C6003D4BD9919269F4CC6AA + E8F7DFBF0CDFFFFC61F8F6FB37C3C71F3FC0ECB9FE5B19523CE6309CDB310D61 + 0008C00C996B760EC3209B6D7270CD208062C02E9134B8429866E6534C1081AB + 0C0C7F13FF81999A6B4519BE035D02728DDCB204220CB80A118319A0B04200AC + 19843556A762370024B9DCFA328617903583BC62B83E13350C40FE074B421581 + 70EF05569C31907DD8036140F7E4F9180AA6DAEE60B04CAE6660905064F8717C + 2AC3F97DE719E6EE7BCE30A5C50BCE9EB3F73B23232E1B8EB528861E7CADB6EA + CEE58358E5939D24C32CABEFADC667C07F8A5D00A456811452D505208D5635F7 + 5783D480F211C92E98BBEF075C0FD8004A73230074DEE0E1BE54FBD500000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FA4944415478DA + A5934B6813511486BF342610A2C50A86A220150BA2145C58D120828ABA2AD2BA + F0B510C48D1B1154A828A55D5877825474AB45375D58A80B9385292DA8A8B151 + 6B6D8DB50F43C1B4C624364C1E73E7E19DA96408B50BCDC0E5CC65E6FFFE7FCE + DCE3324D936A2E577FE46355041BD076B0C9DE280B23E412E3F6FD9A4DDBF107 + 76965F3464524D33109A8E2A7459350E1FBFEC002CF1FCEB1EF28B82F98534C9 + 5C9203A7EFB2A1712F9A6E70A557AD706EA88970FFD1C012E0E8BECDCC3EEF22 + 33338DAECBA7A64E36FB8B5431C389EBB12557B93461D8CED6FE71F8A5036809 + AE271EBA0879177E9F0FB704284A9ED8B7498EB5476D71671F2B276809D63337 + D481B75892EEC86F5429140A7CD7D6D17CEA4E85B3D5070B181A8A3A00AB07C9 + B70F512643567E8410E4F22A46432B8D7B4E2E130BD9C4672F629580A9D02B86 + E76EB0CDF0CA0425A205D8B5F11C5B8F1C5A26B6D6F09B0F0E2058AB11B97495 + D44F95FAB34D881A831F0F26989A9EA0FDEB275B7CEDD6938A1EECDE117000FE + 701FF1A703D4153D28AB6B71E3C2A72C92F6A8C413292E8CBD2F3B8B3F67213A + 3AEE000AB7BB49CC8E11D03CAC92BFDB251D4A5E93B45B90984973FEDD08DDF7 + C22B27889D69239355FE7A54EBD6FA690D0FDAAEBA61DAD59075F4F31707B0BF + 790BBDFD83FF3C076540D7CD9EFF1FA66AC7F93783B161288AF0DFC000000000 + 49454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001FE4944415478DA + A593DD4B145118C69F5574D5458A40DD44FCCA9B42D88B8494104A1242C4AF0B + 4DF1CA3FA08822C110F7C6BA124151BB8990F422304183564165053FD05D575C + 4334694D8D1A97C65DDB666677CE7C78668C1D16F3A276E0F09EC3CCFB7B9EF3 + CEFB9A5455453C8F697C76332E820EA8AF28D60F9C7F0DA1832D7D9F9E7B0396 + CC9BD10F15EA54921410498648641A2554363E31005AF2D14A1FF85F0447FE63 + 302106775B06905D741B92ACE0E9B018A39C9F308B37231367809AF2027C5DB0 + 23B0E7832CD3B7AA8C60F0043FC301343DF79CA9D225114557D6CEEFA7960C40 + 755906761C8F00DE044B6A2A122980E37878F677D1D0EED293BBDEE16207D565 + 567C737622391CA1EAA077142108027E485750D2DC1FA3ACD541033A9C2E03A0 + D58071BF05B7EBD0FC831082102F42C9AF4351E98373C984167166D1130B18DB + 6710986B43B198421D44B0282AB0DAECA8B25D3F97ACADF9D50D0390919783D6 + A14F601358D4DE8B4015C3F8E8B420B8EEC6C1E8333DB9A36732A606B76C9906 + E0C31782B1E94384AC57713999859A988413E112D2FCDFC1B3CBD87EFD38AA4C + FEF482CBBB6500BAE759F8DC8710B27211369B697B9990F29B83F998A1202F36 + 5F3D44F7E0D4C50E1A7A97E92FF4FDBD57D30AE17E795F579515558F0A8DDEED + CF06E04EC9350C8FCFFDF31C4401F6177DFF3F4CF18EF329BD276228E7D4407E + 0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD25200000A4D694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF + F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A + 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5 + 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8 + 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC + 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200 + C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05 + 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2 + 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C + CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97 + 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313 + 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F + 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA + 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED + 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383 + FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A + F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86 + 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432 + 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0 + 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C + 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70 + 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261 + 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA + 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F + 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961 + 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402 + 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2 + 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93 + 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90 + 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452 + A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650 + 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83 + 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7 + 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295 + 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9 + 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685 + 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9 + EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C + 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED + EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB + 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31 + 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87 + 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94 + 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85 + A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6 + 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29 + D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B + 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6 + 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD + D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7 + C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E + 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B + FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5 + 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1 + 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0 + 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67 + BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845 + F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC + A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7 + 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA + 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C + 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423 + F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433 + DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317 + 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2 + A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17 + 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4 + EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E + CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9 + 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD + 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF + B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C + 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD + EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293 + E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7 + 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F + EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6 + EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07 + FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247 + CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73 + ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC + CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F + F73EE77CFEFC2FF784F3FB25D29F330000012D4944415478DA63FCFFFF3F0325 + 80916203966D3945B60991DEA68C6003B42CC41852B26F6355F4E7E77F86DFDF + FE31FCFEFC97E1FBFBDF60F68E73460C89D19D0CE7764C4318000230434E2E77 + C63048416B135C3308A018D0B7F8235C214CB30CFF5E880B3E3F6278F12F11CC + 16175BC3F0FFF76F06865F7F18E4EC4E103600A41904600688092E076B66001A + 22E77C16BB01BFBEFC6338BFD915C30BC89A19FFFC619075BF881A0620FF8334 + FFFAF297E1D75760A07DF9C3B032A610670C641FF64018D03D793E8682A9B63B + 184C53EA197E89A933309DE86638BFEF3CC3DC7DCF19A6B478C1D973F67E6764 + C465C3B116C5D003AFD556DDBD7C10AB7CB293649865F5BDD5F80CF84FB10B80 + D42A9042AABA00A4D1AAE6FE6A901A503E22D90573F7FD80EB011B40696E0400 + A0BEE1E16734A0290000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000023A4944415478DA + A593DB4B54511487BF39733C3A9A9930A99486541086169598264184522F3D84 + 34200541FF400FD24B17886E6405911111111614158414955866669A1682E565 + 2A310BAF9490CC4C303367CED9E7B4CF0C34F9E043B95FD67ED8EB5BBFF55B7B + B96CDB6621C7D5D436B820421CB07B7B31C1994986EF9E67EAFD6B66748BBCF2 + 6ACA7D07513D5E8430318585B06C4CD38982C58BD2A8F6D5250015856E461E5C + 461DEA623C1060C634980E8428F31DA072DF4999A050FF449B53B95069A3F1F6 + A304C03BD9CC647323564C472CC964457101A1C02CC35F83D41CB9436A762186 + 252B4B15A62930E5BDB5B32F09D0061A098D77B366DD4ABCD919A4692E8C6898 + 573DA394D49C25ABA0848B2D9EF915443A2EE00EFBD9B9AB8C48304A241CC632 + 755E747DA3747F03D9F94508D9BB21EC78741474BCFB90048C3E3CCAD4A7767C + 7B2A599695251FC5181E9BE0D99B097C87EFB1347FAD4C962D1889644B9AD9D9 + DBFF570BD3FD0CDCBCCF6AAF4E6EA5C1AF90CE582B0473F2D871A29E742D33E1 + 813301D38E4FA1BB6F2809C878DA85DA3E82AD06A0761AD70F0DED713ED1F454 + A60E6D60D3C62A4E5F6999E3C1E6F5394940FAB11BA4842268AA0B75AB8EE767 + 1A51BF228D140CE5EA6CB9762A2E3D3E05A705E945EFC0C72440ADBB8AC71064 + A6A8286E05372E624260183018FA4E45CB25CE5D7F3EBF82E8DB1E66FD5F2010 + 469146D96E09502096E2C62A5A4ED5DEDA7875E7273AD1D99F3EFFE724605BE9 + 2A6E35BDFCE73DF803387EA6E1FF9769A1EBFC1BC1A15528DD8924DF00000000 + 49454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C18000001604944415478DA + A5923F48C34014C6DF81B838A88B145DD22D20D8E8505737330A5D9CE4BA650C + 34739BEE0AE7E658B277A8939364B5A0C6A19231500417A14D177539EF1D5EB8 + E64F1D3C7821B9F7BE1FDFFB08E19CC37F0E512FBE1FE9244FD465C9BCE7FBD6 + 5529000FA58C33E60063B1005A04BFF1BEDBA550AF6F42BFFF5280C8A1C1C025 + CA45ABB507C3E19B04FCDE75D04DAFD780F9FC4BC275880418C649E6220F5060 + D735613A5DC81A8FD3AC4F946D6C4C261FD06CD62008926C40B4F8AC164930CE + A4E937DC3F8E6077E354BA4040470FCCB66D5186B4BAF56E814329C44904EC8E + CAFE6C6D013BDBEB08280D51C274C89949210C23081E4C787A8E899E49BB7DBD + 0CA882DC8ECEA558CF244942C0F00B00DC196D3B37D6D23A7AA895FF8112E3CE + 683BFA647F42489518773E68385E7E9D3C845489D5CE6599E810B24A5C166CFE + 3F918FA343935F1CC7A5E23C44D4AB487FBF900142AAC4ABCE0F9C32EE2C4B99 + 4F200000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002D84944415478DA + ED946D48535118C7FF57855EB4171542B01756516845C868B63E4A1F2A7B1996 + 990B845008EA637DD2A828F34BF521D220C98484C28232B24C302329456D380D + A99C75035FB6A5B3E9ACAEBA7BD773CF4D9BEE6E6E23F6217AE0F09C73EE73CE + EF79CEFF9CCB793C1E44D2B8FFC07F0378EF697BC4A833C0DCCC6D616DE0163D + 104589BCC43CEB4B5E7DE62986E6728E9F9D0D3CD69A163448A47593A28849B7 + 5BF1731B01A6BFD7E97AC0F70DA0B0A4DC175899DE310B9CECC8C485DD17FD82 + 25DA58621589D8FB3003A3715F18ACCB60C3DAEA7806ADD759D03768F50F944D + EEABC1CC5C07B4AD5AE0230D3602A6741352845406945B56ED2E0C2CB0E0C3C1 + 2116BFA22A160DBA5E0CDAED812BF48645B745013C1D638EA4F40966CA33417B + 9BC09B00D7E6712C791C07AC0386D60F23A77E1F5E189B91786731ABB029FD33 + ECC343EA40B5A38CAE268844C05C02564529B0BB5A988CE4CBB5701E19C5F2DA + 652CD6B6D30E63830166B77946CFD7DB7938461C2100E5AA2C043CFABBC26E9A + 5C484D00ABD0B16104897509ACC2FE95FDC87B958DB609D30CF08D8EC798CB19 + 18A87661648DDEC574291A76D2C45645C3D58E35EC9B7B6ACA07265B93F613BE + FF189BFF96CA0B34CEFD0C2A6F386EEB467C4F61C0E7B2CADC80AF4B454C14B8 + C1DDE4D8DCCB340B04613C70856A6FABB81DD0E71701491A128B677102FF8C79 + 276F65FE4C45076E1565CC4AE291EB0416C527FB02E7FB7BF4DED882A48C2C68 + F457C0B79C562E09AF3C23F04A02158D569416EFF149E2D0B9165FE0F32673C0 + E31AB0BC45AAAD846DAA66D66F024ACB4EA9262103CBAE5DFD03BC7CBD12C158 + 72AC0B4F4E8E048C29B8D4E83DAC791F73C0F0934B600306E4382E28986CCDC5 + 1A4FA83A5202872B1A8507610383D5D13B010272E102B3694323750D7E426AF2 + F37718E62610165086E9F529F743D08F2540ED3C013BC30106A5DF74356A1632 + 3018FDFE26705EFDBC8FCF2F30921671E02FBE648AC22CC7AE57000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD25200000A4D694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53775893F7163EDF + F7650F5642D8F0B1976C81002223AC08C81059A21092006184101240C585880A + 561415119C4855C482D50A489D88E2A028B867418A885A8B555C38EE1FDCA7B5 + 7D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F8011122691E6A26A003952853C3AD8 + 1F8F4F48C4C9BD80021548E0042010E6CBC26705C50000F00379787E74B03FFC + 01AF6F00020070D52E2412C7E1FF83BA50265700209100E02212E70B01905200 + C82E54C81400C81800B053B3640A009400006C797C422200AA0D00ECF4493E05 + 00D8A993DC1700D8A21CA908008D0100992847240240BB00605581522C02C0C2 + 00A0AC40222E04C0AE018059B632470280BD0500768E58900F4060008099422C + CC0020380200431E13CD03204C03A030D2BFE0A95F7085B8480100C0CB95CD97 + 4BD23314B895D01A77F2F0E0E221E2C26CB142611729106609E4229C979B2313 + 48E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E666E76CEFF4C5A2FE6BF06F + 223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D60370C701B075BF6BA95B00DA + 560068DFF95D33DB09A05A0AD07AF98B7938FC401E9EA150C83C1D1C0A0B0BED + 2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB7AF000719A4099ADC0A383 + FD71616E76AE528EE7CB0442316EF7E723FEC7857FFD8E29D1E234B15C2C158A + F15889B850224DC779B952914421C995E212E97F32F11F96FD0993770D00AC86 + 4FC04EB607B5CB6CC07EEE01028B0E58D27600407EF32D8C1A0B910010673432 + 79F7000093BFF98F402B0100CD97A4E30000BCE8185CA894174CC608000044A0 + 812AB041070CC114ACC00E9CC11DBCC01702610644400C24C03C104206E4801C + 0AA11896411954C03AD804B5B0031AA0119AE110B4C131380DE7E0125C81EB70 + 170660189EC218BC86090441C8081361213A8811628ED822CE0817998E042261 + 48349280A420E988145122C5C872A402A9426A915D4823F22D7214398D5C40FA + 90DBC820328AFC8ABC47319481B25103D4027540B9A81F1A8AC6A073D174340F + 5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D8A8E6380D1310E668CD961 + 5C8C87456089581A26C71663E55835568F35631D583776151BC09E61EF082402 + 8B8013EC085E8410C26C82909047584C5843A825EC23B412BA085709838431C2 + 272293A84FB4257A12F9C478623AB1905846AC26EE211E219E255E270E135F93 + 48240EC992E44E0A21259032490B496B48DB482DA453A43ED210699C4C26EB90 + 6DC9DEE408B280AC209791B7900F904F92FBC9C3E4B7143AC588E24C09A22452 + A494124A35653FE504A59F324299A0AA51CDA99ED408AA883A9F5A496DA07650 + 2F5387A91334759A25CD9B1643CBA42DA3D5D09A696769F7682FE974BA09DD83 + 1E4597D097D26BE807E9E7E983F4770C0D860D83C7486228196B197B19A718B7 + 192F994CA605D39799C85430D7321B9967980F986F55582AF62A7C1591CA1295 + 3A9556957E95E7AA545573553FD579AA0B54AB550FAB5E567DA64655B350E3A9 + 09D416ABD5A91D55BBA936AECE5277528F50CF515FA3BE5FFD82FA630DB28685 + 46A08648A35463B7C6198D2116C63265F15842D6725603EB2C6B984D625BB2F9 + EC4C7605FB1B762F7B4C534373AA66AC6691669DE671CD010EC6B1E0F039D99C + 4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37DA7ADABEDA62ED72ED16ED + EBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51BA85BADB75CFEA3ED363EB + 79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EFD11F373034083690196C31 + 3863F0CC9063E86B9869B8D1F084E1A811CB68BA91C468A3D149A327B826EE87 + 67E33578173E66AC6F1C62AC34DE65DC6B3C61626932DBA4C4A4C5E4BE29CD94 + 6B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D59C6B9E61BED9BCDBFC8D85 + A5459CC54A8B368BC796DA967CCB05964D96F7AC98563E567956F556D7AC49D6 + 5CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9BADC4769B6DDF14E2148F29 + D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625F66DF6CF1DCC1C121DD63B + 743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E957671B67A1739DF33517A6 + 4B90CB1297769717536DA78AA76E9F7ACB95E51AEEBAD2B5D3F5A39BBB9BDCAD + D96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4F0F758E271CCE39DA79BA7 + C2F390E72F5E765E595EFBBD1E4FB39C269ED6306DC8DBC45BE0BDCB7B603A3E + 3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE237ED67E997E07FC9EFB3B + FACBFD8FF8BFE179F216F14E056001C101E501BD811A81B3036B031F049904A5 + 0735058D05BB062F0C3E15420C090D591F72936FC017F21BF96333DC672C9AD1 + 15CA089D155A1BFA30CC264C1ED6118E86CF08DF107E6FA6F94CE9CCB60888E0 + 476C88B81F69199917F97D14292A32AA2EEA51B453747174F72CD6ACE459FB67 + BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC9BB880B8AAB8817887F845 + F1971274132409ED89E4C4D8C43D89E37302E76C9A339CE49A54967463AEE5DC + A2B917E6E9CECB9E773C593559907C3885981297B23FE5832042502F184FE5A7 + 6E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92E69D5695F638DD3B7D43FA + 68864F4675C633094F522B79911992B923F34D5644D6DEACCFD971D92D39949C + 949CA3520D6996B42BD730B728B74F662B2B930DE479E66DCA1B9387CAF7E423 + F973F3DB156C854CD1A3B452AE500E164C2FA82B785B185B78B848BD485AD433 + DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859F1E022BF45BB16238B5317 + 772E315D52BA647869F0D27DCB68CBB296FD50E2585255F26A79DCF28E5283D2 + A5A5432B82573495A994C9CB6EAEF45AB9631561956455EF6A97D55B567F2A17 + 955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796DDADADE4AB7CAEDEB48EBA4 + EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE51B5F6D4ADE74A17A6AF58E + CDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A9D7F5DCB56FDADABB7BED9 + 26DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78576BBD457DF56ED2EE82DD + 8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F645EFEB6A746F6CDCAFBFBF + B2096D52368D1E483A70E59B806FDA9BED9A77B5705A2A0EC241E5C127DFA67C + 7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD23ABF75AC2DA36DA03DA1BD + EFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F579EA09D283DF1F9E48293 + E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515DBD6743CF9E3F1774EE4CB7 + 5FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3DAE3D477E70FDE148AF5B6F + EB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D573D7F8D72E5D9F79BDEFC6 + EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC5D7A8F78AFFCBEDAFDEA07 + FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E09879EFE94FFD387E1D247 + CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7B2A713CFCA7E56FF79EB73 + ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F372EFABA9AF3AC723C71FBC + CE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC40FE50F3D1FA63C7A7D04F + F73EE77CFEFC2FF784F3FB25D29F33000002F94944415478DAED946B48936114 + C7FFAFDA55CD5CD32E46609161D087082129E8B2794B50495B5EBE140C83A2CF + 5DD13E9804111195502441068D04D32C2DCD6181592D2F594CF2B291A6DB9C9A + 3AB3E9DE4BCFFB583ADBC539621FA2030FE7BCCF7B38BF739EFFF3BE8C2008F0 + A531FF81FF06F0C1538DCFA833C0ACE418AF0AB09C008EE389E7A9A7316F1753 + 4F72C8DEE16379738131992F3C06092C814D0AB05949C1499EC6A2E726391AF3 + 53FCF462593434C9A0EFEDC3D9C2DB8E408D4A3E079CBCAF1B79B9B92EC13CE9 + 9CA71371484C54A1B367250519BF1E8454A202C3F2A86F96A1B7DFE01A289A18 + 3B837D1CEE41526427584B3F0282D7A15ABF195181AB29505C29296568D70661 + 602083E64B034BA06E96A3DF64723FA13D6C7D481DB871330C5C268D4558EDE0 + 1EC449EB0874033A0CB1D8145401FFE070B4E9B7233DBD122FEB8F206CF93D90 + 2E50D3120FD3A0D939D0D951AEF55711D10418F82CACF12BA1B07869036A0677 + 412E7D8EAED14C44853CA1B96D2639148A2A68DFF95198B8AA5A1330343CE439 + 904E68311260CEAF097BC060290458E9849FBEEC40B4A49A4EA8698F46764E2D + B48DC20CB0A23901639611F740671746D4483BDA4735B459745814BC916A1881 + 20FA8EB5D91C60A29569E2F07D626CFE5BCA5A05A426E928542C68316A21E938 + E3F6735992B6172B264261669508636ED1BDD2B73258ADE3EE2714619C75F6FB + 12FDFD832711A3CCC754F8162C1EF83C9DA77B4CFD88DE40FDF9E216DC39B77F + 4E138F2CC7B12C34C21138DFDFA3AB681B56C91488DA79091D6F4ED35CB3BE89 + 7A3F5D37F5C56A036E141C70682223BFD111F8EC55ABDBE3EAEB7C8FADC6425A + D49919BE5971B5E894D32644E0CD6B57668197AFDF852716116841E58961B739 + CA8B6AFBC7F2F680D4B41F8C843E5020C3301EC1447B5D10292C5447D280A258 + 6D2DF51AE8A98EF60D1020E32DF01029984DC2341729E54795BBD3FE6CC02BA0 + 088B8D8D7EB800FD6803645D20C00FDE003DD2EFF734CE6CC1404FF4FB9BC079 + F5B33F3E97405F9ACF813F01DF078FC2BAE18F2B0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 94000000097048597300004E2000004E2001167D99DE000002C04944415478DA + E5D54D6813411400E0B788D816B1A5150CA99404AA2CF5E02AFE2C82503DA5B7 + 14BD054A2A6A130F5549CE6DDA9BD0424A2F69041B42A517B1417A909E3C497A + 3129F49043A131BD8422129BE6A7CDCF3A6F935932C96E9AB0928B0F1E43B233 + FBCD4CDE4C384992A093C1FD1F20C7712D0FF0F9C22ED2882487490AD5AFA324 + F748861D0E71516BAC6CB50356B1059E37C2D0D025309B7B99E72B2BDB4D6155 + D0E389D6EE7188E4278F47F85805A564B20BE2F16F4A879919BB0C67320525B7 + B662F8C85D8F6A82B3B33795CF73733B0C5A1BA4AF8D346B6EF7080366B34588 + 447E36A00A485E2A555E2070F425881E1F17209D3E05BF7F2F449E8DAB6D334E + D0E9BCC660B95CA54D240E81809C2A88C0E4E41204026F10955CAE1119C35C5F + 4FC893A9C75EBC7C260D1AA76162C2D48061EEEE66C160C82BAB6C0031105D5E + 7EA560989B9BC906D0EB00E957F10694061EC185EEE730367685C18AC532A452 + 2966825353F739062C14CA70725262B0FEFE2E0806E30C8898C803947A78D8F8 + 9E81D4F9C77075F02D534C26D3A8BC722CA8FDFD3F303F1F80D5D5D71590AC6A + C3E5B2598DC68B0A8430627400452926887652186BC09D14E1DD17235C1EB6C0 + 7BFF078E1E1F52CD0B086220268AA29BAC7091AED04666F714D1A3A353B9D3C1 + 419AEC7F8F72DE286AE913642C168F423E1985303901C16D1E7E4462CC96631D + 204831FC1D996381D58928E96BA5832C168B2A6AE5ED4D310AE216534CF31CD6 + 86DDEE95B4D0BEA4A08969454B575B3354EDA8E8026981F8A25EF8176853B0B6 + 1AB140BC5FEDBA514DB01EA30512CDEB5BA92AA885D102D1F39B368067617A0B + 89015BC5F4A00AB8E4E4DAC2CE42F176C17F1D4D70FAC98034FAE03A9C2BEC80 + A13BD712D60C2577738880E39A206EE9ED5BBCF490FF0DE6DEC3B66F905A3410 + F8AC8AA916CD9D7B77A57221DD16568B92461363C04E46C7C1BF0E73BFE74CCD + 6AD20000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Source/Modulos/Empresas/Plugin/uPluginEmpresas.pas b/Source/Modulos/Empresas/Plugin/uPluginEmpresas.pas new file mode 100644 index 00000000..b4f7d79f --- /dev/null +++ b/Source/Modulos/Empresas/Plugin/uPluginEmpresas.pas @@ -0,0 +1,142 @@ +unit uPluginEmpresas; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList, uBizEmpresas, + uEmpresasController; + +type + IEmpresasPlugin = interface(IInterface) + ['{4E732376-FFD0-4E72-846A-224A6E27FA85}'] + function Empresas : TStringList; + function Controller : IEmpresasController; + end; + + TPluginEmpresas = class(TModuleController, IEmpresasPlugin) + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Empresas1: TMenuItem; + Preferencias1: TMenuItem; + N1: TMenuItem; + Gestindeempresas1: TMenuItem; + Datosde1: TMenuItem; + actDatosDe: TAction; + actPreferencias: TAction; + actGestionEmpresas: TAction; + N2: TMenuItem; + actSucursales: TAction; + Sucursales1: TMenuItem; + N3: TMenuItem; + actNuevaEmpresa: TAction; + procedure actDatosDeUpdate(Sender: TObject); + procedure actDatosDeExecute(Sender: TObject); + procedure actNuevaEmpresaExecute(Sender: TObject); + protected + function Empresas : TStringList; + function Controller : IEmpresasController; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, uCustomEditor, SysUtils, + uDataModuleUsuarios, uEmpresasViewRegister; + +function GetModule : TModuleController; +begin + Result := TPluginEmpresas.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleEmpresas ******************************* +} +procedure TPluginEmpresas.actDatosDeExecute(Sender: TObject); +var + AController : IEmpresasController; +begin + AController := TEmpresasController.Create; + AController.Ver(dmUsuarios.EmpresaActual); +end; + +procedure TPluginEmpresas.actDatosDeUpdate(Sender: TObject); +begin + with (Sender as TAction) do + begin + if Assigned(dmUsuarios.EmpresaActual) then + begin + Enabled := True; + Caption := 'Datos de ' + dmUsuarios.EmpresaActual.NOMBRE + end + else begin + Enabled := False; + Caption := 'Datos de la empresa'; + end; + end; +end; + +procedure TPluginEmpresas.actNuevaEmpresaExecute(Sender: TObject); +var + AEmpresasController : IEmpresasController; + AEmpresa : IBizEmpresa; +begin + AEmpresasController := TEmpresasController.Create; + AEmpresa := AEmpresasController.Nuevo; + try + AEmpresasController.Ver(AEmpresa); + finally + AEmpresa := NIL; + end; +end; + +function TPluginEmpresas.Controller: IEmpresasController; +begin + Result := TEmpresasController.Create; +end; + +function TPluginEmpresas.Empresas: TStringList; +var + AEmpresasController : IEmpresasController; + AEmpresas : IBizEmpresa; +begin + AEmpresasController := TEmpresasController.Create; + AEmpresas := AEmpresasController.BuscarTodos; + try + Result := AEmpresasController.ToStringList(AEmpresas); + finally + AEmpresasController := NIL; + end; +end; + +constructor TPluginEmpresas.Create(AOwner: TComponent); +begin + inherited; + uEmpresasViewRegister.RegisterViews; +end; + +destructor TPluginEmpresas.Destroy; +begin + uEmpresasViewRegister.UnregisterViews; + inherited; +end; + + +initialization + uHostManager.RegisterModuleClass(TPluginEmpresas); + +finalization + uHostManager.UnRegisterModuleClass(TPluginEmpresas); + +end. diff --git a/Source/Modulos/Empresas/Servidor/srvEmpresas_Impl.dfm b/Source/Modulos/Empresas/Servidor/srvEmpresas_Impl.dfm new file mode 100644 index 00000000..fbb8a129 --- /dev/null +++ b/Source/Modulos/Empresas/Servidor/srvEmpresas_Impl.dfm @@ -0,0 +1,1552 @@ +object srvEmpresas: TsrvEmpresas + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + RequiresSession = True + ConnectionName = 'IBX' + ServiceSchema = schEmpresas + ServiceDataStreamer = DABinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 222 + Width = 351 + object schEmpresas: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Diagrams = Diagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS' + SQL = + 'SELECT'#10' ID, NIF_CIF, NOMBRE, RAZON_SOCIAL, CALLE, POBLACION, ' + + #10' PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, ' + + #10' MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, '#10' FEC' + + 'HA_ALTA, FECHA_MODIFICACION, USUARIO, LOGOTIPO,'#10' REGISTRO_MER' + + 'CANTIL, IVA'#10' FROM'#10' EMPRESAS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'RAZON_SOCIAL' + TableField = 'RAZON_SOCIAL' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'LOGOTIPO' + TableField = 'LOGOTIPO' + end + item + DatasetField = 'REGISTRO_MERCANTIL' + TableField = 'REGISTRO_MERCANTIL' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end> + end> + Name = 'Empresas' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'Empresas_ID' + InPrimaryKey = True + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DictionaryEntry = 'Empresas_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_NOMBRE' + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_RAZON_SOCIAL' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_CALLE' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DictionaryEntry = 'Empresas_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + DictionaryEntry = 'Empresas_NOTAS' + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + DictionaryEntry = 'Empresas_FECHA_ALTA' + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + DictionaryEntry = 'Empresas_FECHA_MODIFICACION' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DictionaryEntry = 'Empresas_USUARIO' + end + item + Name = 'LOGOTIPO' + DataType = datBlob + BlobType = dabtBlob + DictionaryEntry = 'Empresas_LOGOTIPO' + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_REGISTRO_MERCANTIL' + end + item + Name = 'IVA' + DataType = datFloat + DictionaryEntry = 'Empresas_IVA' + end> + end + item + Params = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_DATOS_BANCO' + SQL = + 'SELECT '#10' ID, ID_EMPRESA, NOMBRE, ENTIDAD, SUCURSAL, DC, CUENT' + + 'A, '#10' SUFIJO_N19, SUFIJO_N58'#10' FROM'#10' EMPRESAS_DATOS_BANCO'#10'W' + + 'HERE ID_EMPRESA = :ID_EMPRESA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end + item + DatasetField = 'SUFIJO_N19' + TableField = 'SUFIJO_N19' + end + item + DatasetField = 'SUFIJO_N58' + TableField = 'SUFIJO_N58' + end> + end> + Name = 'EmpresasDatosBanco' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'EmpresasDatosBanco_ID' + InPrimaryKey = True + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'EmpresasDatosBanco_ID_EMPRESA' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'EmpresasDatosBanco_NOMBRE' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_CUENTA' + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_N19' + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_N58' + end> + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS' + SQL = + 'SELECT'#10' ID, NIF_CIF, NOMBRE, RAZON_SOCIAL, CALLE, POBLACION, ' + + #10' PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TELEFONO_2, MOVIL_1, ' + + #10' MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_WEB, NOTAS, '#10' FEC' + + 'HA_ALTA, FECHA_MODIFICACION, USUARIO, LOGOTIPO,'#10' REGISTRO_MER' + + 'CANTIL, IVA'#10' FROM'#10' EMPRESAS'#10'WHERE ID = :ID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'NIF_CIF' + TableField = 'NIF_CIF' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'RAZON_SOCIAL' + TableField = 'RAZON_SOCIAL' + end + item + DatasetField = 'CALLE' + TableField = 'CALLE' + end + item + DatasetField = 'POBLACION' + TableField = 'POBLACION' + end + item + DatasetField = 'PROVINCIA' + TableField = 'PROVINCIA' + end + item + DatasetField = 'CODIGO_POSTAL' + TableField = 'CODIGO_POSTAL' + end + item + DatasetField = 'TELEFONO_1' + TableField = 'TELEFONO_1' + end + item + DatasetField = 'TELEFONO_2' + TableField = 'TELEFONO_2' + end + item + DatasetField = 'MOVIL_1' + TableField = 'MOVIL_1' + end + item + DatasetField = 'MOVIL_2' + TableField = 'MOVIL_2' + end + item + DatasetField = 'FAX' + TableField = 'FAX' + end + item + DatasetField = 'EMAIL_1' + TableField = 'EMAIL_1' + end + item + DatasetField = 'EMAIL_2' + TableField = 'EMAIL_2' + end + item + DatasetField = 'PAGINA_WEB' + TableField = 'PAGINA_WEB' + end + item + DatasetField = 'NOTAS' + TableField = 'NOTAS' + end + item + DatasetField = 'FECHA_ALTA' + TableField = 'FECHA_ALTA' + end + item + DatasetField = 'FECHA_MODIFICACION' + TableField = 'FECHA_MODIFICACION' + end + item + DatasetField = 'USUARIO' + TableField = 'USUARIO' + end + item + DatasetField = 'LOGOTIPO' + TableField = 'LOGOTIPO' + end + item + DatasetField = 'REGISTRO_MERCANTIL' + TableField = 'REGISTRO_MERCANTIL' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end> + end> + Name = 'Empresas_Refresh' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'Empresas_ID' + InPrimaryKey = True + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + DictionaryEntry = 'Empresas_NIF_CIF' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_NOMBRE' + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_RAZON_SOCIAL' + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_CALLE' + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_POBLACION' + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_PROVINCIA' + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + DictionaryEntry = 'Empresas_CODIGO_POSTAL' + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_TELEFONO_1' + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_TELEFONO_2' + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_MOVIL_1' + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_MOVIL_2' + end + item + Name = 'FAX' + DataType = datString + Size = 25 + DictionaryEntry = 'Empresas_FAX' + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_EMAIL_1' + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_EMAIL_2' + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_PAGINA_WEB' + end + item + Name = 'NOTAS' + DataType = datMemo + DictionaryEntry = 'Empresas_NOTAS' + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + DictionaryEntry = 'Empresas_FECHA_ALTA' + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + DictionaryEntry = 'Empresas_FECHA_MODIFICACION' + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + DictionaryEntry = 'Empresas_USUARIO' + end + item + Name = 'LOGOTIPO' + DataType = datBlob + BlobType = dabtBlob + DictionaryEntry = 'Empresas_LOGOTIPO' + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + DictionaryEntry = 'Empresas_REGISTRO_MERCANTIL' + end + item + Name = 'IVA' + DataType = datFloat + DictionaryEntry = 'Empresas_IVA' + end> + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_DATOS_BANCO' + SQL = + 'SELECT '#10' ID, ID_EMPRESA, NOMBRE, ENTIDAD, SUCURSAL, DC, CUENT' + + 'A, '#10' SUFIJO_N19, SUFIJO_N58'#10' FROM'#10' EMPRESAS_DATOS_BANCO'#10'W' + + 'HERE ID = :ID' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end + item + DatasetField = 'SUFIJO_N19' + TableField = 'SUFIJO_N19' + end + item + DatasetField = 'SUFIJO_N58' + TableField = 'SUFIJO_N58' + end> + end> + Name = 'EmpresasDatosBanco_Refresh' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'EmpresasDatosBanco_ID' + InPrimaryKey = True + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + DictionaryEntry = 'EmpresasDatosBanco_ID_EMPRESA' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'EmpresasDatosBanco_NOMBRE' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DictionaryEntry = 'EmpresasDatosBanco_CUENTA' + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_N19' + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + DictionaryEntry = 'EmpresasDatosBanco_SUFIJO_N58' + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'FAX' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'NOTAS' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + Value = '' + ParamType = daptInput + end + item + Name = 'LOGOTIPO' + DataType = datBlob + Value = '' + ParamType = daptInput + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS' + SQL = + 'INSERT'#10' INTO EMPRESAS'#10' (ID, NIF_CIF, NOMBRE, RAZON_SOCIAL, C' + + 'ALLE, POBLACION, '#10' PROVINCIA, CODIGO_POSTAL, TELEFONO_1, TEL' + + 'EFONO_2, MOVIL_1, '#10' MOVIL_2, FAX, EMAIL_1, EMAIL_2, PAGINA_W' + + 'EB, NOTAS, '#10' FECHA_ALTA, FECHA_MODIFICACION, USUARIO, LOGOTI' + + 'PO, '#10' REGISTRO_MERCANTIL, IVA)'#10' VALUES'#10' (:ID, :NIF_CIF, ' + + ':NOMBRE, :RAZON_SOCIAL, :CALLE, :POBLACION, '#10' :PROVINCIA, :C' + + 'ODIGO_POSTAL, :TELEFONO_1, :TELEFONO_2, '#10' :MOVIL_1, :MOVIL_2' + + ', :FAX, :EMAIL_1, :EMAIL_2, :PAGINA_WEB, '#10' :NOTAS, :FECHA_AL' + + 'TA, :FECHA_MODIFICACION, :USUARIO, '#10' :LOGOTIPO, :REGISTRO_ME' + + 'RCANTIL, :IVA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Empresas' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS' + SQL = 'DELETE '#10' FROM'#10' EMPRESAS'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Empresas' + end + item + Params = < + item + Name = 'NIF_CIF' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'RAZON_SOCIAL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CALLE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'POBLACION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PROVINCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_POSTAL' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'TELEFONO_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_1' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'MOVIL_2' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'FAX' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_1' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'EMAIL_2' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'PAGINA_WEB' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'NOTAS' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_ALTA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_MODIFICACION' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'USUARIO' + DataType = datString + Size = 20 + Value = '' + ParamType = daptInput + end + item + Name = 'LOGOTIPO' + DataType = datBlob + Value = '' + ParamType = daptInput + end + item + Name = 'REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS' + SQL = + 'UPDATE EMPRESAS'#10' SET '#10' NIF_CIF = :NIF_CIF,'#10' NOMBRE = :NOM' + + 'BRE, '#10' RAZON_SOCIAL = :RAZON_SOCIAL, '#10' CALLE = :CALLE, '#10' ' + + ' POBLACION = :POBLACION, '#10' PROVINCIA = :PROVINCIA, '#10' CODI' + + 'GO_POSTAL = :CODIGO_POSTAL, '#10' TELEFONO_1 = :TELEFONO_1, '#10' ' + + 'TELEFONO_2 = :TELEFONO_2, '#10' MOVIL_1 = :MOVIL_1, '#10' MOVIL_2 ' + + '= :MOVIL_2, '#10' FAX = :FAX, '#10' EMAIL_1 = :EMAIL_1, '#10' EMAIL' + + '_2 = :EMAIL_2, '#10' PAGINA_WEB = :PAGINA_WEB, '#10' NOTAS = :NOTA' + + 'S, '#10' FECHA_ALTA = :FECHA_ALTA, '#10' FECHA_MODIFICACION = :FEC' + + 'HA_MODIFICACION, '#10' USUARIO = :USUARIO, '#10' LOGOTIPO = :LOGOT' + + 'IPO, '#10' REGISTRO_MERCANTIL = :REGISTRO_MERCANTIL, '#10' IVA = :' + + 'IVA'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Empresas' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'DC' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + Value = '' + ParamType = daptInput + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_DATOS_BANCO' + SQL = + 'INSERT'#10' INTO EMPRESAS_DATOS_BANCO'#10' (ID, ID_EMPRESA, NOMBRE, ' + + 'ENTIDAD, SUCURSAL, DC, CUENTA, '#10' SUFIJO_N19, SUFIJO_N58)'#10' V' + + 'ALUES'#10' (:ID, :ID_EMPRESA, :NOMBRE, :ENTIDAD, :SUCURSAL, :DC, ' + + #10' :CUENTA, :SUFIJO_N19, :SUFIJO_N58)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_EmpresasDatosBanco' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_DATOS_BANCO' + SQL = + 'DELETE '#10' FROM'#10' EMPRESAS_DATOS_BANCO'#10' WHERE'#10' (ID = :OLD_I' + + 'D)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_EmpresasDatosBanco' + end + item + Params = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'DC' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUFIJO_N19' + DataType = datString + Size = 3 + Value = '' + ParamType = daptInput + end + item + Name = 'SUFIJO_N58' + DataType = datString + Size = 3 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'EMPRESAS_DATOS_BANCO' + SQL = + 'UPDATE EMPRESAS_DATOS_BANCO'#10' SET '#10' ID_EMPRESA = :ID_EMPRESA,' + + #10' NOMBRE = :NOMBRE, '#10' ENTIDAD = :ENTIDAD, '#10' SUCURSAL = ' + + ':SUCURSAL, '#10' DC = :DC, '#10' CUENTA = :CUENTA, '#10' SUFIJO_N19' + + ' = :SUFIJO_N19, '#10' SUFIJO_N58 = :SUFIJO_N58'#10' WHERE'#10' (ID = ' + + ':OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_EmpresasDatosBanco' + end> + RelationShips = <> + UpdateRules = < + item + Name = 'Insert Empresas' + DoUpdate = False + DoDelete = False + DatasetName = 'Empresas' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert EmpresasDatosBanco' + DoUpdate = False + DoDelete = False + DatasetName = 'EmpresasDatosBanco' + FailureBehavior = fbRaiseException + end + item + Name = 'Update Empresas' + DoInsert = False + DoDelete = False + DatasetName = 'Empresas' + FailureBehavior = fbRaiseException + end + item + Name = 'Update EmpresasDatosBanco' + DoInsert = False + DoDelete = False + DatasetName = 'EmpresasDatosBanco' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete EmpresasDatosBanco' + DoUpdate = False + DoInsert = False + DatasetName = 'EmpresasDatosBanco' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete Empresas' + DoUpdate = False + DoInsert = False + DatasetName = 'Empresas' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 30 + Top = 14 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'Empresas_ID' + DataType = datInteger + DisplayLabel = 'ID' + end + item + Name = 'Empresas_NIF_CIF' + DataType = datString + Size = 15 + DisplayLabel = 'CIF' + end + item + Name = 'Empresas_NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + end + item + Name = 'Empresas_RAZON_SOCIAL' + DataType = datString + Size = 255 + DisplayLabel = 'Raz'#243'n Social' + end + item + Name = 'Empresas_CALLE' + DataType = datString + Size = 255 + DisplayLabel = 'Calle' + end + item + Name = 'Empresas_POBLACION' + DataType = datString + Size = 255 + DisplayLabel = 'Poblaci'#243'n' + end + item + Name = 'Empresas_PROVINCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Provincia' + end + item + Name = 'Empresas_CODIGO_POSTAL' + DataType = datString + Size = 10 + DisplayLabel = 'C'#243'd. postal' + end + item + Name = 'Empresas_TELEFONO_1' + DataType = datString + Size = 25 + DisplayLabel = 'Tel'#233'fono 1' + end + item + Name = 'Empresas_TELEFONO_2' + DataType = datString + Size = 25 + DisplayLabel = 'Tel'#233'fono 2' + end + item + Name = 'Empresas_MOVIL_1' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil 1' + end + item + Name = 'Empresas_MOVIL_2' + DataType = datString + Size = 25 + DisplayLabel = 'M'#243'vil 2' + end + item + Name = 'Empresas_FAX' + DataType = datString + Size = 25 + DisplayLabel = 'Fax' + end + item + Name = 'Empresas_EMAIL_1' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail 1' + end + item + Name = 'Empresas_EMAIL_2' + DataType = datString + Size = 255 + DisplayLabel = 'E-mail 2' + end + item + Name = 'Empresas_PAGINA_WEB' + DataType = datString + Size = 255 + DisplayLabel = 'P'#225'gina web' + end + item + Name = 'Empresas_NOTAS' + DataType = datMemo + DisplayLabel = 'Notas' + end + item + Name = 'Empresas_FECHA_ALTA' + DataType = datDateTime + end + item + Name = 'Empresas_FECHA_MODIFICACION' + DataType = datDateTime + end + item + Name = 'Empresas_USUARIO' + DataType = datString + Size = 20 + end + item + Name = 'Empresas_LOGOTIPO' + DataType = datBlob + BlobType = dabtBlob + DisplayLabel = 'Logotipo' + end + item + Name = 'Empresas_REGISTRO_MERCANTIL' + DataType = datString + Size = 255 + DisplayLabel = 'Registro mercantil' + end + item + Name = 'Empresas_IVA' + DataType = datFloat + DisplayLabel = 'IVA' + end + item + Name = 'EmpresasDatosBanco_ID' + DataType = datInteger + DisplayLabel = 'ID' + end + item + Name = 'EmpresasDatosBanco_ID_EMPRESA' + DataType = datInteger + end + item + Name = 'EmpresasDatosBanco_NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre del banco' + end + item + Name = 'EmpresasDatosBanco_ENTIDAD' + DataType = datString + Size = 15 + DisplayLabel = 'Entidad' + end + item + Name = 'EmpresasDatosBanco_SUCURSAL' + DataType = datString + Size = 15 + DisplayLabel = 'Sucursal' + end + item + Name = 'EmpresasDatosBanco_DC' + DataType = datString + Size = 15 + DisplayLabel = 'DC' + end + item + Name = 'EmpresasDatosBanco_CUENTA' + DataType = datString + Size = 15 + DisplayLabel = 'Cuenta' + end + item + Name = 'EmpresasDatosBanco_SUFIJO_N19' + DataType = datString + Size = 3 + DisplayLabel = 'Sufijo 19' + end + item + Name = 'EmpresasDatosBanco_SUFIJO_N58' + DataType = datString + Size = 3 + DisplayLabel = 'Sufijo 58' + end> + Left = 126 + Top = 14 + end + object Diagrams: TDADiagrams + Left = 126 + Top = 82 + DiagramData = + ''#13#10' '#13#10' '#13#10''#13#10 + end + object bpEmpresas: TDABusinessProcessor + Schema = schEmpresas + InsertCommandName = 'Insert_Empresas' + DeleteCommandName = 'Delete_Empresas' + UpdateCommandName = 'Update_Empresas' + ReferencedDataset = 'Empresas' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 248 + Top = 16 + end + object bpEmpresasDatosBanco: TDABusinessProcessor + Schema = schEmpresas + InsertCommandName = 'Insert_EmpresasDatosBanco' + DeleteCommandName = 'Delete_EmpresasDatosBanco' + UpdateCommandName = 'Update_EmpresasDatosBanco' + RefreshDatasetName = 'EmpresasDatosBanco_Refresh' + ReferencedDataset = 'EmpresasDatosBanco' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 248 + Top = 80 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 32 + Top = 80 + end +end diff --git a/Source/Modulos/Empresas/Servidor/srvEmpresas_Impl.pas b/Source/Modulos/Empresas/Servidor/srvEmpresas_Impl.pas new file mode 100644 index 00000000..d53a51d7 --- /dev/null +++ b/Source/Modulos/Empresas/Servidor/srvEmpresas_Impl.pas @@ -0,0 +1,89 @@ +unit srvEmpresas_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataTable, uDABINAdapter, uDAInterfaces, uDADataStreamer; + +type + { TsrvEmpresas } + TsrvEmpresas = class(TDataAbstractService, IsrvEmpresas) + Diagrams: TDADiagrams; + bpEmpresas: TDABusinessProcessor; + bpEmpresasDatosBanco: TDABusinessProcessor; + schEmpresas: TDASchema; + DataDictionary: TDADataDictionary; + DABinDataStreamer: TDABinDataStreamer; + procedure DARemoteServiceBeforeGetDatasetData(const Dataset: IDADataset; + const IncludeSchema: Boolean; const MaxRecords: Integer); + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + private + protected + { IsrvEmpresas methods } + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, uRORemoteDataModule, + uDatabaseUtils, Dialogs, Variants, uROStreamSerializer, uROBinaryHelpers, + uSesionesUtils, schEmpresasClient_Intf, uUsersManager, + uRestriccionesUsuarioUtils; + +procedure Create_srvEmpresas(out anInstance : IUnknown); +begin + anInstance := TsrvEmpresas.Create(NIL); +end; + +{ srvEmpresas } +procedure TsrvEmpresas.DARemoteServiceBeforeGetDatasetData( + const Dataset: IDADataset; const IncludeSchema: Boolean; + const MaxRecords: Integer); +begin + + if (DataSet.Name <> nme_EmpresasDatosBanco) then + begin + { Aqu se asegura que el usuario slo accede a las empresas a + las que tiene permiso para acceder filtrando DataSet por ID_EMPRESA. } + FiltrarAccesoUsuario(Session, Connection, schEmpresas, DataSet, fld_EmpresasID); + end; +end; + +procedure TsrvEmpresas.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; +end; + +procedure TsrvEmpresas.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +function TsrvEmpresas.GetNextAutoInc(const GeneratorName: String): Integer; +begin + Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) +end; + +initialization + TROClassFactory.Create('srvEmpresas', Create_srvEmpresas, TsrvEmpresas_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Empresas/Test/Empresas_Tests.bdsproj b/Source/Modulos/Empresas/Test/Empresas_Tests.bdsproj new file mode 100644 index 00000000..37154e7a --- /dev/null +++ b/Source/Modulos/Empresas/Test/Empresas_Tests.bdsproj @@ -0,0 +1,496 @@ + + + + + + + + + + + + Empresas_Tests.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + ..\..\..\..\Output\Debug\Cliente + .\ + + ..\..\Lib + ..\..\..\Lib;..\..\Lib + DataAbstract_D10;Base;GUIBase;Empresas_model;Empresas_controller + _CONSOLE_TESTRUNNER;EUREKALOG;EUREKALOG_VER5 + + True + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + Empresas (Test) + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + DUnit / Delphi Win32 + GUI + + + diff --git a/Source/Modulos/Empresas/Test/Empresas_Tests.dpr b/Source/Modulos/Empresas/Test/Empresas_Tests.dpr new file mode 100644 index 00000000..e43b0109 --- /dev/null +++ b/Source/Modulos/Empresas/Test/Empresas_Tests.dpr @@ -0,0 +1,39 @@ +program Empresas_Tests; +{ + + Delphi DUnit Test Project + ------------------------- + This project contains the DUnit test framework and the GUI/Console test runners. + Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options + to use the console test runner. Otherwise the GUI test runner will be used by + default. + +} + +{$IFDEF CONSOLE_TESTRUNNER} +{$APPTYPE CONSOLE} +{$ENDIF} + +uses + ExceptionLog, + Forms, + TestFramework, + GUITestRunner, + TextTestRunner, + uEmpresasController_Test in 'uEmpresasController_Test.pas', + uHostMainForm in 'uHostMainForm.pas' {HostMainForm}; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(THostMainForm, HostMainForm); + Application.Run; + Application.Terminate; + + {if IsConsole then + TextTestRunner.RunRegisteredTests + else + GUITestRunner.RunRegisteredTests;} +end. + diff --git a/Source/Modulos/Empresas/Test/Empresas_Tests.drc b/Source/Modulos/Empresas/Test/Empresas_Tests.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Empresas/Test/Empresas_Tests.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Empresas/Test/Empresas_Tests.res b/Source/Modulos/Empresas/Test/Empresas_Tests.res new file mode 100644 index 00000000..346c5f0c Binary files /dev/null and b/Source/Modulos/Empresas/Test/Empresas_Tests.res differ diff --git a/Source/Modulos/Empresas/Test/uEmpresasController_Test.pas b/Source/Modulos/Empresas/Test/uEmpresasController_Test.pas new file mode 100644 index 00000000..50cf2686 --- /dev/null +++ b/Source/Modulos/Empresas/Test/uEmpresasController_Test.pas @@ -0,0 +1,178 @@ +unit uEmpresasController_Test; +{ + + Delphi DUnit Test Case + ---------------------- + This unit contains a skeleton test case class generated by the Test Case Wizard. + Modify the generated code to correctly setup and call the methods from the unit + being tested. + +} + +interface + +uses + TestFramework, Classes, uEmpresasController, Contnrs, SysUtils, uIDataModuleEmpresas, + Forms, Windows, Controls, uBizEmpresas; +type + // Test methods for class TEmpresasController + + TestTEmpresasController = class(TTestCase) + strict private + FEmpresasController: TEmpresasController; + public + procedure SetUp; override; + procedure TearDown; override; + published + procedure TestEliminar; + procedure TestEliminar1; + procedure TestGuardar; + procedure TestDescartarCambios; + procedure TestExiste; + procedure TestAnadir; + procedure TestBuscar; + procedure TestBuscarTodos; + procedure TestNuevo; + procedure TestVer; + procedure TestVerTodos; + procedure TestToStringList; + end; + +implementation + +procedure TestTEmpresasController.SetUp; +begin + FEmpresasController := TEmpresasController.Create; +end; + +procedure TestTEmpresasController.TearDown; +begin + FEmpresasController.Free; + FEmpresasController := nil; +end; + +procedure TestTEmpresasController.TestEliminar; +var + ID: Integer; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.Eliminar(ID); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestEliminar1; +var + AEmpresa: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.Eliminar(AEmpresa); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestGuardar; +var + AEmpresa: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.Guardar(AEmpresa); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestDescartarCambios; +var + AEmpresa: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.DescartarCambios(AEmpresa); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestExiste; +var + ReturnValue: Boolean; + ID: Integer; +begin + Check(False); + // TODO: Setup method call parameters + ReturnValue := FEmpresasController.Existe(ID); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestAnadir; +var + AEmpresa: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.Anadir(AEmpresa); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestBuscar; +var + ReturnValue: IBizEmpresa; + ID: Integer; +begin + Check(False); + // TODO: Setup method call parameters + ReturnValue := FEmpresasController.Buscar(ID); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestBuscarTodos; +var + ReturnValue: IBizEmpresa; +begin + ReturnValue := FEmpresasController.BuscarTodos; + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestNuevo; +var + ReturnValue: IBizEmpresa; +begin + Check(False); + ReturnValue := FEmpresasController.Nuevo; + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestVer; +var + AEmpresa: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.Ver(AEmpresa); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestVerTodos; +var + AEmpresas: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + FEmpresasController.VerTodos(AEmpresas); + // TODO: Validate method results +end; + +procedure TestTEmpresasController.TestToStringList; +var + ReturnValue: TStringList; + AEmpresa: IBizEmpresa; +begin + Check(False); + // TODO: Setup method call parameters + ReturnValue := FEmpresasController.ToStringList(AEmpresa); + // TODO: Validate method results +end; + +initialization + // Register any test cases with the test runner + RegisterTest(TestTEmpresasController.Suite); +end. + diff --git a/Source/Modulos/Empresas/Test/uHostMainForm.dfm b/Source/Modulos/Empresas/Test/uHostMainForm.dfm new file mode 100644 index 00000000..1de986c4 --- /dev/null +++ b/Source/Modulos/Empresas/Test/uHostMainForm.dfm @@ -0,0 +1,28 @@ +object HostMainForm: THostMainForm + Left = 0 + Top = 0 + Caption = 'HostMainForm' + ClientHeight = 598 + ClientWidth = 690 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnCloseQuery = FormCloseQuery + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 690 + Height = 598 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + end +end diff --git a/Source/Modulos/Empresas/Test/uHostMainForm.pas b/Source/Modulos/Empresas/Test/uHostMainForm.pas new file mode 100644 index 00000000..50f4b46e --- /dev/null +++ b/Source/Modulos/Empresas/Test/uHostMainForm.pas @@ -0,0 +1,116 @@ +unit uHostMainForm; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uGUIBase, ExtCtrls, uCustomEditor, cxControls; + +type + THostMainForm = class(TForm, IHostForm) + Panel1: TPanel; + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure FormShow(Sender: TObject); + protected + FContenido : TCustomEditor; + function GetWorkPanel: TWinControl; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + procedure ShowEmbedded(AEditor : ICustomEditor); + procedure ReleaseEmbedded; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property WorkPanel: TWinControl read GetWorkPanel; + end; + +var + HostMainForm: THostMainForm; + +implementation + +{$R *.dfm} + +uses + TestFramework, GUITestRunner, TextTestRunner; + + +{ TForm1 } + +constructor THostMainForm.Create(AOwner: TComponent); +begin + inherited; + FContenido := NIL; +end; + +destructor THostMainForm.Destroy; +begin + ReleaseEmbedded; + inherited; +end; + +procedure THostMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + CanClose := True; + if Assigned(FContenido) then + CanClose := FContenido.CloseQuery; +end; + +procedure THostMainForm.FormShow(Sender: TObject); +begin + if IsConsole then + TextTestRunner.RunRegisteredTests + else + GUITestRunner.RunRegisteredTestsModeless; + Self.SendToBack; +end; + +function THostMainForm.GetWorkPanel: TWinControl; +begin + Result := Panel1; +end; + +procedure THostMainForm.OnWorkPanelChanged(AEditor: ICustomEditor); +begin + // +end; + +procedure THostMainForm.ReleaseEmbedded; +begin + if Assigned(FContenido) then + FContenido.Release; + Application.ProcessMessages; +end; + +procedure THostMainForm.ShowEmbedded(AEditor: ICustomEditor); +begin + if Assigned(FContenido) then + if not FContenido.CloseQuery then + begin + AEditor.Release; + AEditor := NIL; + Exit; + end; + + ShowHourglassCursor; + LockWindowUpdate(Handle); + try + FContenido := AEditor.GetInstance as TCustomEditor; + with (FContenido) do + begin + Visible := False; + BorderIcons := []; + BorderStyle := bsNone; + Parent := WorkPanel; + FContenido.Show; + Align := alClient; + FContenido.SetFocus; + end; + finally + Application.ProcessMessages; + LockWindowUpdate(0); + HideHourglassCursor; + end; + OnWorkPanelChanged(FContenido); +end; + +end. diff --git a/Source/Modulos/Empresas/Views/Empresas_view.bdsproj b/Source/Modulos/Empresas/Views/Empresas_view.bdsproj new file mode 100644 index 00000000..df17f8a0 --- /dev/null +++ b/Source/Modulos/Empresas/Views/Empresas_view.bdsproj @@ -0,0 +1,543 @@ + + + + + + + + + + + + Empresas_view.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + ExpressBars extended items by Developer Express Inc. + ExpressCommonLibrary by Developer Express Inc. + ExpressBars by Developer Express Inc. + Express Cross Platform Library by Developer Express Inc. + Express XP Theme Manager by Developer Express Inc. + ExpressEditors Library 5 by Developer Express Inc. + ExpressDataController by Developer Express Inc. + ExpressExtendedEditors Library 5 by Developer Express Inc. + ExpressQuantumGrid 5 by Developer Express Inc. + Express Cross Platform PageControl by Developer Express Inc. + Express Cross Platform Export Library by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressQuantumTreeList 4 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressDocking Library by Developer Express Inc. + ExpressLayout Control by Developer Express Inc. + ExpressNavBar by Developer Express Inc. + ExpressPrinting System by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Application and Form Components Runtime Package + JVCL Core Runtime Package + JEDI Code Library RTL package + JEDI Code Library VCL package + JVCL System Runtime Package + JVCL Standard Controls Runtime Package + JVCL Band Objects Runtime Package + JVCL BDE Components Runtime Package + JVCL Controls Runtime Package + JVCL Components Runtime Package + JVCL DotNet Controls Runtime Package + JVCL EDI Components + JVCL Globus Components + JVCL HMI Controls runtime package + JVCL Interpreter Components Runtime Package + JVCL Jans Components + JVCL Managed Threads - runtime package + JVCL Multimedia and Image Components Runtime Package + JVCL Network Components Runtime Package + JVCL Page Style Components Runtime Package + JVCL Plugin Components Runtime Package + JVCL Print Preview Components + JVCL Runtime Design Components Runtime Package + JVCL Time Framework + JVCL Validators and Error Indicator Components + JVCL Wizard Run Time Package + JVCL XP Controls Runtime Package + (untitled) + ExpressGDI+ Library by Developer Express Inc. + + + + diff --git a/Source/Modulos/Empresas/Views/Empresas_view.dpk b/Source/Modulos/Empresas/Views/Empresas_view.dpk new file mode 100644 index 00000000..87476849 --- /dev/null +++ b/Source/Modulos/Empresas/Views/Empresas_view.dpk @@ -0,0 +1,84 @@ +package Empresas_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + vcljpg, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + vclx, + cxExportD10, + tbx_d10, + tb2k_d10, + dsnap, + adortl, + dxLayoutControlD10, + dxComnD10, + dxPSCoreD10, + dxPScxCommonD10, + dxPSLnksD10, + designide, + xmlrtl, + vclactnband, + vclshlctrls, + dxPScxGridLnkD10, + dclcxLibraryD10, + JvCoreD10R, + Jcl, + JclVcl, + JvSystemD10R, + JvStdCtrlsD10R, + JvAppFrmD10R, + JvPageCompsD10R, + PNG_D10, + PngComponentsD10, + GUISDK_D10, + ccpack10, + cfpack_d10, + DataAbstract_D10, + Base, + GUIBase, + Empresas_model, + Empresas_controller, + JvCtrlsD10R, + JvJansD10R; + +contains + uEmpresasViewRegister in 'uEmpresasViewRegister.pas', + uEditorEmpresa in 'uEditorEmpresa.pas' {fEditorEmpresa: TForm}, + uViewEmpresa in 'uViewEmpresa.pas' {frViewEmpresa: TFrame}, + uViewDatosBancarios in 'uViewDatosBancarios.pas' {frViewDatosBancarios: TFrame}, + uEditorDatosBancariosEmpresa in 'uEditorDatosBancariosEmpresa.pas' {fEditorDatosBancariosEmpresa}; + +end. diff --git a/Source/Modulos/Empresas/Views/Empresas_view.dproj b/Source/Modulos/Empresas/Views/Empresas_view.dproj new file mode 100644 index 00000000..24d59f85 --- /dev/null +++ b/Source/Modulos/Empresas/Views/Empresas_view.dproj @@ -0,0 +1,791 @@ + + + {3a12ff5e-75c6-4e1e-bc5c-b6b9010ba595} + Empresas_view.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Empresas_view.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ExpressBars extended items by Developer Express Inc. + ExpressCommonLibrary by Developer Express Inc. + ExpressBars by Developer Express Inc. + Express Cross Platform Library by Developer Express Inc. + Express XP Theme Manager by Developer Express Inc. + ExpressEditors Library 5 by Developer Express Inc. + ExpressDataController by Developer Express Inc. + ExpressExtendedEditors Library 5 by Developer Express Inc. + ExpressQuantumGrid 5 by Developer Express Inc. + Express Cross Platform PageControl by Developer Express Inc. + Express Cross Platform Export Library by Developer Express Inc. + ExpressScheduler 2 by Developer Express Inc. + ExpressQuantumTreeList 4 by Developer Express Inc. + ExpressVerticalGrid by Developer Express Inc. + ExpressBars DBNavigator by Developer Express Inc. + ExpressBars extended DB items by Developer Express Inc. + ExpressDocking Library by Developer Express Inc. + ExpressLayout Control by Developer Express Inc. + ExpressNavBar by Developer Express Inc. + ExpressPrinting System by Developer Express Inc. + ExpressSideBar by Developer Express Inc. + JVCL Application and Form Components Runtime Package + JVCL Core Runtime Package + JEDI Code Library RTL package + JEDI Code Library VCL package + JVCL System Runtime Package + JVCL Standard Controls Runtime Package + JVCL Band Objects Runtime Package + JVCL BDE Components Runtime Package + JVCL Controls Runtime Package + JVCL Components Runtime Package + JVCL DotNet Controls Runtime Package + JVCL EDI Components + JVCL Globus Components + JVCL HMI Controls runtime package + JVCL Interpreter Components Runtime Package + JVCL Jans Components + JVCL Managed Threads - runtime package + JVCL Multimedia and Image Components Runtime Package + JVCL Network Components Runtime Package + JVCL Page Style Components Runtime Package + JVCL Plugin Components Runtime Package + JVCL Print Preview Components + JVCL Runtime Design Components Runtime Package + JVCL Time Framework + JVCL Validators and Error Indicator Components + JVCL Wizard Run Time Package + JVCL XP Controls Runtime Package + (untitled) + ExpressGDI+ Library by Developer Express Inc. + + + Empresas_view.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fEditorDatosBancariosEmpresa
+
+ +
fEditorEmpresa
+
+ + +
frViewDatosBancarios
+
+ +
frViewEmpresa
+
+
+ +
+ + diff --git a/Source/Modulos/Empresas/Views/Empresas_view.drc b/Source/Modulos/Empresas/Views/Empresas_view.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Empresas/Views/Empresas_view.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Empresas/Views/Empresas_view.rc b/Source/Modulos/Empresas/Views/Empresas_view.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Empresas/Views/Empresas_view.res b/Source/Modulos/Empresas/Views/Empresas_view.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Empresas/Views/Empresas_view.res differ diff --git a/Source/Modulos/Empresas/Views/uEditorDatosBancariosEmpresa.dfm b/Source/Modulos/Empresas/Views/uEditorDatosBancariosEmpresa.dfm new file mode 100644 index 00000000..adc3d192 --- /dev/null +++ b/Source/Modulos/Empresas/Views/uEditorDatosBancariosEmpresa.dfm @@ -0,0 +1,181 @@ +object fEditorDatosBancariosEmpresa: TfEditorDatosBancariosEmpresa + Left = 227 + Top = 108 + BorderStyle = bsDialog + Caption = 'Cambio de datos bancarios' + ClientHeight = 292 + ClientWidth = 433 + Color = clBtnFace + ParentFont = True + OldCreateOrder = True + Position = poOwnerFormCenter + DesignSize = ( + 433 + 292) + PixelsPerInch = 96 + TextHeight = 13 + object OKBtn: TButton + Left = 350 + Top = 7 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = '&Guardar' + ModalResult = 1 + TabOrder = 0 + end + object CancelBtn: TButton + Left = 350 + Top = 38 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 329 + Height = 176 + Caption = 'Datos bancarios' + TabOrder = 2 + object Label5: TLabel + Left = 12 + Top = 31 + Width = 77 + Height = 13 + AutoSize = False + Caption = 'Banco:' + end + object Label2: TLabel + Left = 12 + Top = 67 + Width = 77 + Height = 13 + AutoSize = False + Caption = 'C'#243'd. entidad:' + end + object Label3: TLabel + Left = 12 + Top = 94 + Width = 77 + Height = 13 + AutoSize = False + Caption = 'C'#243'd. sucursal:' + end + object Label4: TLabel + Left = 12 + Top = 120 + Width = 77 + Height = 13 + AutoSize = False + Caption = 'DC:' + end + object Label6: TLabel + Left = 11 + Top = 146 + Width = 78 + Height = 13 + AutoSize = False + Caption = 'Cuenta:' + end + object eNombre: TDBEdit + Left = 95 + Top = 28 + Width = 223 + Height = 21 + Color = clInfoBk + DataField = 'NOMBRE' + DataSource = dsDatosBancarios + TabOrder = 0 + end + object eCodEntidad: TDBEdit + Left = 95 + Top = 64 + Width = 74 + Height = 21 + DataField = 'ENTIDAD' + DataSource = dsDatosBancarios + TabOrder = 1 + end + object eCodSucursal: TDBEdit + Left = 95 + Top = 90 + Width = 74 + Height = 21 + DataField = 'SUCURSAL' + DataSource = dsDatosBancarios + TabOrder = 2 + end + object eDC: TDBEdit + Left = 95 + Top = 116 + Width = 74 + Height = 21 + DataField = 'DC' + DataSource = dsDatosBancarios + MaxLength = 2 + TabOrder = 3 + end + object eCuenta: TDBEdit + Left = 95 + Top = 142 + Width = 223 + Height = 21 + DataField = 'CUENTA' + DataSource = dsDatosBancarios + TabOrder = 4 + end + end + object GroupBox2: TGroupBox + Left = 8 + Top = 190 + Width = 329 + Height = 83 + Caption = 'Sufijos para normas CSB' + TabOrder = 3 + object Label7: TLabel + Left = 12 + Top = 28 + Width = 77 + Height = 13 + AutoSize = False + Caption = 'Norma 19:' + end + object Label1: TLabel + Left = 12 + Top = 55 + Width = 77 + Height = 13 + AutoSize = False + Caption = 'Norma 58:' + end + object eNorma19: TDBEdit + Left = 95 + Top = 24 + Width = 74 + Height = 21 + DataField = 'SUFIJO_N19' + DataSource = dsDatosBancarios + MaxLength = 3 + TabOrder = 0 + end + object eNorma58: TDBEdit + Left = 95 + Top = 51 + Width = 74 + Height = 21 + DataField = 'SUFIJO_N58' + DataSource = dsDatosBancarios + MaxLength = 3 + TabOrder = 1 + end + end + object dsDatosBancarios: TDADataSource + Left = 352 + Top = 72 + end +end diff --git a/Source/Modulos/Empresas/Views/uEditorDatosBancariosEmpresa.pas b/Source/Modulos/Empresas/Views/uEditorDatosBancariosEmpresa.pas new file mode 100644 index 00000000..c31fb01f --- /dev/null +++ b/Source/Modulos/Empresas/Views/uEditorDatosBancariosEmpresa.pas @@ -0,0 +1,97 @@ +unit uEditorDatosBancariosEmpresa; + +interface + +uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, + Buttons, ExtCtrls, Mask, DBCtrls, DB, uDADataTable, PngSpeedButton, + cxControls, cxContainer, cxEdit, cxTextEdit, cxHyperLinkEdit, cxDBEdit, + uIEditorDatosBancarioEmpresa, uDatosBancariosEmpresaController, uBizEmpresasDatosBancarios, + cxCurrencyEdit; + +type + TfEditorDatosBancariosEmpresa = class(TForm, IEditorDatosBancariosEmpresa) + OKBtn: TButton; + CancelBtn: TButton; + dsDatosBancarios: TDADataSource; + GroupBox1: TGroupBox; + Label5: TLabel; + eNombre: TDBEdit; + Label2: TLabel; + eCodEntidad: TDBEdit; + Label3: TLabel; + eCodSucursal: TDBEdit; + Label4: TLabel; + eDC: TDBEdit; + Label6: TLabel; + eCuenta: TDBEdit; + GroupBox2: TGroupBox; + Label7: TLabel; + eNorma19: TDBEdit; + Label1: TLabel; + eNorma58: TDBEdit; + protected + FController : IDatosBancariosEmpresaController; + FDatosBancarios: IBizEmpresasDatosBancarios; + + function GetController : IDatosBancariosEmpresaController; + procedure SetController (const Value : IDatosBancariosEmpresaController); + + function GetDatosBancarios: IBizEmpresasDatosBancarios; + procedure SetDatosBancarios(const Value: IBizEmpresasDatosBancarios); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property DatosBancarios: IBizEmpresasDatosBancarios read GetDatosBancarios write SetDatosBancarios; + property Controller : IDatosBancariosEmpresaController read GetController + write SetController; + end; + +implementation + +uses + Variants; + +{$R *.dfm} + +{ TfEditorDireccion } + +constructor TfEditorDatosBancariosEmpresa.Create(AOwner: TComponent); +begin + inherited; + FController := NIL; +end; + +destructor TfEditorDatosBancariosEmpresa.Destroy; +begin + FController := NIL; + inherited; +end; + +function TfEditorDatosBancariosEmpresa.GetController: IDatosBancariosEmpresaController; +begin + Result := FController; +end; + +function TfEditorDatosBancariosEmpresa.GetDatosBancarios: IBizEmpresasDatosBancarios; +begin + Result := FDatosBancarios; +end; + +procedure TfEditorDatosBancariosEmpresa.SetController( + const Value: IDatosBancariosEmpresaController); +begin + FController := Value; +end; + +procedure TfEditorDatosBancariosEmpresa.SetDatosBancarios( + const Value: IBizEmpresasDatosBancarios); +begin + FDatosBancarios := Value; + if Assigned(FDatosBancarios) then + dsDatosBancarios.DataTable := FDatosBancarios.DataTable + else + dsDatosBancarios.DataTable := NIL; +end; + + +end. diff --git a/Source/Modulos/Empresas/Views/uEditorEmpresa.dfm b/Source/Modulos/Empresas/Views/uEditorEmpresa.dfm new file mode 100644 index 00000000..4bd2a6a0 --- /dev/null +++ b/Source/Modulos/Empresas/Views/uEditorEmpresa.dfm @@ -0,0 +1,336 @@ +inherited fEditorEmpresa: TfEditorEmpresa + Left = 575 + Top = 291 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Ficha de empresa' + ClientHeight = 554 + ClientWidth = 674 + Scaled = False + ExplicitWidth = 682 + ExplicitHeight = 588 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 674 + Caption = 'Empresa' + ExplicitWidth = 660 + inherited Image1: TImage + Left = 647 + ExplicitLeft = 607 + end + end + inherited TBXDock: TTBXDock + Width = 674 + ExplicitWidth = 660 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 324 + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + DockPos = 0 + ExplicitWidth = 674 + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem8: TTBXItem + Visible = False + end + inherited TBXSeparatorItem5: TTBXSeparatorItem + Visible = False + end + inherited TBXItem10: TTBXItem + Visible = False + end + inherited TBXItem21: TTBXItem + Visible = False + end + inherited TBXItem22: TTBXItem + Visible = False + end + inherited TBXItem9: TTBXItem + Visible = False + end + end + inherited TBXSubmenuItem1: TTBXSubmenuItem + inherited TBXItem32: TTBXItem + Visible = False + end + inherited TBXItem31: TTBXItem + Visible = False + end + inherited TBXSeparatorItem13: TTBXSeparatorItem + Visible = False + end + end + end + end + inherited pgPaginas: TPageControl + Width = 674 + Height = 459 + ExplicitWidth = 660 + ExplicitHeight = 451 + inherited pagGeneral: TTabSheet + ExplicitLeft = 4 + ExplicitTop = 24 + ExplicitWidth = 652 + ExplicitHeight = 423 + inline frViewEmpresa1: TfrViewEmpresa + Left = 0 + Top = 0 + Width = 666 + Height = 431 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 652 + ExplicitHeight = 423 + inherited dxLayoutControl1: TdxLayoutControl + Width = 666 + Height = 431 + LookAndFeel = dxLayoutOfficeLookAndFeel1 + ExplicitWidth = 652 + ExplicitHeight = 423 + inherited PngSpeedButton1: TPngSpeedButton + Left = 621 + Top = 295 + ExplicitLeft = 621 + ExplicitTop = 295 + end + inherited PngSpeedButton2: TPngSpeedButton + Left = 621 + Top = 267 + ExplicitLeft = 621 + ExplicitTop = 267 + end + inherited eCalle: TcxDBTextEdit + Top = 189 + ExplicitTop = 189 + ExplicitWidth = 84 + Width = 84 + end + inherited eProvincia: TcxDBTextEdit + Top = 243 + ExplicitTop = 243 + ExplicitWidth = 60 + Width = 60 + end + inherited ePoblacion: TcxDBTextEdit + Top = 216 + ExplicitTop = 216 + ExplicitWidth = 100 + Width = 100 + end + inherited eCodigoPostal: TcxDBTextEdit + Left = 289 + Top = 216 + ExplicitLeft = 289 + ExplicitTop = 216 + end + inherited ePaginaWeb: TcxDBTextEdit + Left = 477 + Top = 216 + ExplicitLeft = 477 + ExplicitTop = 216 + ExplicitWidth = 165 + Width = 165 + end + inherited eMailParticular: TcxDBTextEdit + Left = 477 + Top = 189 + ExplicitLeft = 477 + ExplicitTop = 189 + ExplicitWidth = 165 + Width = 165 + end + inherited eMailTrabajo: TcxDBTextEdit + Left = 477 + Top = 162 + ExplicitLeft = 477 + ExplicitTop = 162 + ExplicitWidth = 129 + Width = 129 + end + inherited cxDBMemo1: TcxDBMemo + Top = 294 + ExplicitTop = 294 + ExplicitWidth = 107 + ExplicitHeight = 234 + Height = 234 + Width = 107 + end + inherited eTlfParticular: TcxDBTextEdit + Left = 477 + Top = 57 + ExplicitLeft = 477 + ExplicitTop = 57 + ExplicitWidth = 91 + Width = 91 + end + inherited eTlfTrabajo: TcxDBTextEdit + Left = 477 + Top = 30 + ExplicitLeft = 477 + ExplicitTop = 30 + ExplicitWidth = 127 + Width = 127 + end + inherited eTlfMovil: TcxDBTextEdit + Left = 477 + Top = 84 + ExplicitLeft = 477 + ExplicitTop = 84 + ExplicitWidth = 155 + Width = 155 + end + inherited eFax: TcxDBTextEdit + Left = 477 + Top = 111 + ExplicitLeft = 477 + ExplicitTop = 111 + ExplicitWidth = 121 + Width = 121 + end + inherited eNombre: TcxDBTextEdit + Top = 30 + ExplicitTop = 30 + ExplicitWidth = 108 + Width = 108 + end + inherited eNIFCIF: TcxDBTextEdit + Top = 57 + ExplicitTop = 57 + ExplicitWidth = 108 + Width = 108 + end + inherited memRegistroMercantil: TcxDBMemo + Top = 84 + ExplicitTop = 84 + ExplicitWidth = 76 + Width = 76 + end + inherited cxDBSpinEdit1: TcxDBSpinEdit + Top = 138 + ExplicitTop = 138 + end + inherited cxDBImage1: TcxDBImage + Left = 382 + Top = 267 + ExplicitLeft = 382 + ExplicitTop = 267 + ExplicitWidth = 140 + ExplicitHeight = 100 + Height = 100 + Width = 140 + end + end + end + end + object TabSheet1: TTabSheet + Caption = 'Datos bancarios' + ImageIndex = 1 + ExplicitWidth = 652 + ExplicitHeight = 423 + inline frViewDatosBancarios1: TfrViewDatosBancarios + Left = 0 + Top = 0 + Width = 666 + Height = 431 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 652 + ExplicitHeight = 423 + inherited cxGrid: TcxGrid + Width = 666 + Height = 406 + ExplicitWidth = 652 + ExplicitHeight = 398 + end + inherited ToolBar1: TToolBar + Width = 666 + ExplicitWidth = 666 + inherited ToolButton1: TToolButton + ExplicitWidth = 62 + end + inherited ToolButton4: TToolButton + ExplicitWidth = 74 + end + inherited ToolButton2: TToolButton + ExplicitWidth = 67 + end + inherited ToolButton7: TToolButton + ExplicitWidth = 117 + end + end + end + end + end + inherited StatusBar: TJvStatusBar + Top = 535 + Width = 674 + Panels = < + item + Width = 200 + end> + ExplicitTop = 527 + ExplicitWidth = 660 + end + inherited EditorActionList: TActionList + Top = 128 + end + inherited SmallImages: TPngImageList + Left = 403 + Top = 176 + end + inherited dsDataTable: TDADataSource [6] + Left = 168 + Top = 120 + end + inherited LargeImages: TPngImageList [7] + Left = 435 + Top = 176 + end + inherited JvFormStorage: TJvFormStorage [8] + Left = 408 + Top = 208 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage + Left = 440 + Top = 208 + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 248 + Top = 168 + object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'Tahoma' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clHighlight + GroupOptions.CaptionOptions.UseDefaultFont = False + end + end +end diff --git a/Source/Modulos/Empresas/Views/uEditorEmpresa.pas b/Source/Modulos/Empresas/Views/uEditorEmpresa.pas new file mode 100644 index 00000000..332cafac --- /dev/null +++ b/Source/Modulos/Empresas/Views/uEditorEmpresa.pas @@ -0,0 +1,183 @@ +unit uEditorEmpresa; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, ToolWin, ComCtrls, JvExControls, JvComponent, + uBizEmpresas, JvNavigationPane, ActnList, + uEditorBase, StdActns, TB2Dock, TB2Toolbar, TBX, ImgList, PngImageList, + TB2Item, uEditorItem, DB, uDADataTable, uEditorDBBase, JvFormAutoSize, + uDAScriptingProvider, uDACDSDataTable, StdCtrls, pngimage, ExtCtrls, + TBXDkPanels, JvButton, AppEvnts, uCustomView, uViewBase, + JvAppStorage, JvAppRegistryStorage, JvFormPlacement, JvComponentBase, + uViewEmpresa, uIEditorEmpresa, uEmpresasController, dxLayoutLookAndFeels, + JvExComCtrls, JvStatusBar, uViewDetallesGenerico, uViewDatosBancarios; + +type + TfEditorEmpresa = class(TfEditorDBItem, IEditorEmpresa) + frViewEmpresa1: TfrViewEmpresa; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; + TabSheet1: TTabSheet; + frViewDatosBancarios1: TfrViewDatosBancarios; + procedure FormShow(Sender: TObject); + procedure actRefrescarUpdate(Sender: TObject); + procedure dsDataTableDataChange(Sender: TObject; Field: TField); + private + FController : IEmpresasController; + FEmpresa: IBizEmpresa; + FViewEmpresa : IViewEmpresa; + protected + function GetEmpresa: IBizEmpresa; virtual; + procedure SetEmpresa(const Value: IBizEmpresa); virtual; + + function GetViewEmpresa: IViewEmpresa; + procedure SetViewEmpresa(const Value: IViewEmpresa); + procedure GuardarInterno; override; + procedure EliminarInterno; override; + property ViewEmpresa: IViewEmpresa read GetViewEmpresa write + SetViewEmpresa; + function GetController : IEmpresasController; virtual; + procedure SetController (const Value : IEmpresasController); virtual; + + public + constructor Create(AOwner: TComponent); override; + procedure PonerTitulos(const ATitulo: string = ''); override; + property Controller : IEmpresasController read GetController + write SetController; + property Empresa: IBizEmpresa read GetEmpresa write SetEmpresa; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uCustomEditor, uDataModuleEmpresas, uDataModuleBase; + +{ +******************************* TfEditorEmpresa ******************************* +} +function TfEditorEmpresa.GetEmpresa: IBizEmpresa; +begin + Result := FEmpresa; +end; + +function TfEditorEmpresa.GetController: IEmpresasController; +begin + Result := FController; +end; + +function TfEditorEmpresa.GetViewEmpresa: IViewEmpresa; +begin + Result := FViewEmpresa; +end; + +procedure TfEditorEmpresa.GuardarInterno; +begin + inherited; + FController.Guardar(FEmpresa); + Modified := False; +end; + +procedure TfEditorEmpresa.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + if (ATitulo = '') and Assigned(FEmpresa) then + begin + if Length(FEmpresa.Nombre) = 0 then + FTitulo := 'Nueva empresa' + else + FTitulo := 'Empresa' + ' - ' + FEmpresa.Nombre + end; + + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorEmpresa.SetEmpresa(const Value: IBizEmpresa); +begin + FEmpresa := Value; + dsDataTable.DataTable := FEmpresa.DataTable; + + if Assigned(FViewEmpresa) and Assigned(Empresa) then + begin + FViewEmpresa.Empresa := FEmpresa; + frViewDatosBancarios1.dsDetalles.DataTable := FEmpresa.DatosBancarios.DataTable + end + else begin + FViewEmpresa.Empresa := NIL; + frViewDatosBancarios1.dsDetalles.DataTable := NIL; + end; +end; + +procedure TfEditorEmpresa.SetController(const Value: IEmpresasController); +begin + FController := Value; +end; + +procedure TfEditorEmpresa.SetViewEmpresa(const Value: IViewEmpresa); +begin + FViewEmpresa := Value; + + if Assigned(FViewEmpresa) and Assigned(Empresa) then + FViewEmpresa.Empresa := Empresa; +end; + +procedure TfEditorEmpresa.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewEmpresa) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Empresa) then + raise Exception.Create('No hay ningn Empresa asignado'); + + Empresa.DataTable.Active := True; +// FViewEmpresa.ShowEmbedded(pagGeneral); + FViewEmpresa.SetFocus; +end; + +procedure TfEditorEmpresa.actRefrescarUpdate(Sender: TObject); +begin + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.Fetching) or + (not dsDataTable.DataTable.Opening) or + (not dsDataTable.DataTable.Closing) or + (not FEmpresa.EsNuevo) + else + (Sender as TAction).Enabled := False; +end; + +constructor TfEditorEmpresa.Create(AOwner: TComponent); +begin + inherited; + FViewEmpresa := frViewEmpresa1; +end; + +destructor TfEditorEmpresa.Destroy; +begin + FViewEmpresa := NIL; + FEmpresa := NIL; + inherited; +end; + +procedure TfEditorEmpresa.dsDataTableDataChange(Sender: TObject; Field: TField); +begin + inherited; + if Assigned(FEmpresa) and (not (FEmpresa.DataTable.Fetching) or + not (FEmpresa.DataTable.Opening) or not (FEmpresa.DataTable.Closing)) then + PonerTitulos; +end; + +procedure TfEditorEmpresa.EliminarInterno; +begin + inherited; + FController.Eliminar(FEmpresa); +end; + +end. + diff --git a/Source/Modulos/Empresas/Views/uEmpresasViewRegister.pas b/Source/Modulos/Empresas/Views/uEmpresasViewRegister.pas new file mode 100644 index 00000000..58386775 --- /dev/null +++ b/Source/Modulos/Empresas/Views/uEmpresasViewRegister.pas @@ -0,0 +1,25 @@ +unit uEmpresasViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, uEditorEmpresa, uEditorDatosBancariosEmpresa; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorEmpresa, 'EditorEmpresa'); + EditorRegistry.RegisterClass(TfEditorDatosBancariosEmpresa, 'EditorDatosBancariosEmpresa'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorEmpresa); + EditorRegistry.UnRegisterClass(TfEditorDatosBancariosEmpresa); +end; + +end. diff --git a/Source/Modulos/Empresas/Views/uViewDatosBancarios.dfm b/Source/Modulos/Empresas/Views/uViewDatosBancarios.dfm new file mode 100644 index 00000000..9ffd2041 --- /dev/null +++ b/Source/Modulos/Empresas/Views/uViewDatosBancarios.dfm @@ -0,0 +1,52 @@ +inherited frViewDatosBancarios: TfrViewDatosBancarios + Width = 583 + Height = 464 + ExplicitWidth = 583 + ExplicitHeight = 464 + inherited cxGrid: TcxGrid + Width = 583 + Height = 439 + ExplicitWidth = 583 + ExplicitHeight = 439 + inherited cxGridView: TcxGridDBTableView + OnDblClick = cxGridViewDblClick + OptionsData.Appending = False + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Editing = False + OptionsData.Inserting = False + object cxGridViewNOMBRE: TcxGridDBColumn + DataBinding.FieldName = 'NOMBRE' + Width = 191 + end + object cxGridViewENTIDAD: TcxGridDBColumn + DataBinding.FieldName = 'ENTIDAD' + Width = 48 + end + object cxGridViewSUCURSAL: TcxGridDBColumn + DataBinding.FieldName = 'SUCURSAL' + Width = 48 + end + object cxGridViewDC: TcxGridDBColumn + DataBinding.FieldName = 'DC' + Width = 29 + end + object cxGridViewCUENTA: TcxGridDBColumn + DataBinding.FieldName = 'CUENTA' + Width = 141 + end + object cxGridViewSUFIJO_N19: TcxGridDBColumn + DataBinding.FieldName = 'SUFIJO_N19' + Width = 55 + end + object cxGridViewSUFIJO_N58: TcxGridDBColumn + DataBinding.FieldName = 'SUFIJO_N58' + Width = 57 + end + end + end + inherited ToolBar1: TToolBar + Width = 583 + ExplicitWidth = 583 + end +end diff --git a/Source/Modulos/Empresas/Views/uViewDatosBancarios.pas b/Source/Modulos/Empresas/Views/uViewDatosBancarios.pas new file mode 100644 index 00000000..bcc0aca5 --- /dev/null +++ b/Source/Modulos/Empresas/Views/uViewDatosBancarios.pas @@ -0,0 +1,67 @@ +unit uViewDatosBancarios; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, cxTextEdit, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridBandedTableView, + cxGridDBBandedTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + uDADataTable, Grids, DBGrids, ActnList, ImgList, PngImageList, ComCtrls, + ToolWin, cxGridDBTableView, uViewDetallesGenerico, cxCurrencyEdit; + +type + TfrViewDatosBancarios = class(TfrViewDetallesGenerico) + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewENTIDAD: TcxGridDBColumn; + cxGridViewSUCURSAL: TcxGridDBColumn; + cxGridViewDC: TcxGridDBColumn; + cxGridViewCUENTA: TcxGridDBColumn; + cxGridViewSUFIJO_N19: TcxGridDBColumn; + cxGridViewSUFIJO_N58: TcxGridDBColumn; + procedure cxGridViewDblClick(Sender: TObject); + protected + procedure AnadirInterno; override; + procedure ModificarInterno; override; + public + { Public declarations } + end; + +implementation + +{$R *.dfm} + +uses + uDatosBancariosEmpresaController, uBizEmpresasDatosBancarios, + uDataModuleEmpresas; + +procedure TfrViewDatosBancarios.AnadirInterno; +begin + inherited; + try + with TDatosBancariosEmpresaController.Create do + Ver((dsDetalles.DataTable) as IBizEmpresasDatosBancarios); + finally + if (dsDetalles.DataTable.State in dsEditModes) then + dsDetalles.DataTable.Post; + end; +end; + +procedure TfrViewDatosBancarios.cxGridViewDblClick(Sender: TObject); +begin + inherited; + actModificar.Execute; +end; + +procedure TfrViewDatosBancarios.ModificarInterno; +begin + inherited; + with TDatosBancariosEmpresaController.Create do + Ver((dsDetalles.DataTable) as IBizEmpresasDatosBancarios); +end; + +end. + + + diff --git a/Source/Modulos/Empresas/Views/uViewEmpresa.dfm b/Source/Modulos/Empresas/Views/uViewEmpresa.dfm new file mode 100644 index 00000000..a2b17571 --- /dev/null +++ b/Source/Modulos/Empresas/Views/uViewEmpresa.dfm @@ -0,0 +1,595 @@ +inherited frViewEmpresa: TfrViewEmpresa + Width = 590 + Height = 385 + ExplicitWidth = 590 + ExplicitHeight = 385 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 590 + Height = 385 + Align = alClient + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object PngSpeedButton1: TPngSpeedButton + Left = 545 + Top = 305 + Width = 23 + Height = 22 + Action = actEliminar + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + end + object PngSpeedButton2: TPngSpeedButton + Left = 545 + Top = 277 + Width = 23 + Height = 22 + Action = actAnadir + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + end + object eCalle: TcxDBTextEdit + Left = 117 + Top = 193 + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 4 + Width = 84 + end + object eProvincia: TcxDBTextEdit + Left = 117 + Top = 247 + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 7 + Width = 60 + end + object ePoblacion: TcxDBTextEdit + Left = 117 + Top = 220 + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 5 + Width = 100 + end + object eCodigoPostal: TcxDBTextEdit + Left = 246 + Top = 220 + DataBinding.DataField = 'CODIGO_POSTAL' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 6 + Width = 65 + end + object ePaginaWeb: TcxDBTextEdit + Left = 436 + Top = 220 + DataBinding.DataField = 'PAGINA_WEB' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 15 + Width = 165 + end + object eMailParticular: TcxDBTextEdit + Left = 436 + Top = 193 + DataBinding.DataField = 'EMAIL_2' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 14 + Width = 165 + end + object eMailTrabajo: TcxDBTextEdit + Left = 436 + Top = 166 + DataBinding.DataField = 'EMAIL_1' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 13 + Width = 129 + end + object cxDBMemo1: TcxDBMemo + Left = 22 + Top = 304 + DataBinding.DataField = 'NOTAS' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 8 + Height = 234 + Width = 107 + end + object eTlfParticular: TcxDBTextEdit + Left = 436 + Top = 55 + DataBinding.DataField = 'TELEFONO_2' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 10 + Width = 91 + end + object eTlfTrabajo: TcxDBTextEdit + Left = 436 + Top = 28 + DataBinding.DataField = 'TELEFONO_1' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 9 + Width = 127 + end + object eTlfMovil: TcxDBTextEdit + Left = 436 + Top = 82 + DataBinding.DataField = 'MOVIL_1' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 11 + Width = 155 + end + object eFax: TcxDBTextEdit + Left = 436 + Top = 109 + DataBinding.DataField = 'FAX' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 12 + Width = 121 + end + object eNombre: TcxDBTextEdit + Left = 117 + Top = 28 + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Width = 108 + end + object eNIFCIF: TcxDBTextEdit + Left = 117 + Top = 55 + DataBinding.DataField = 'NIF_CIF' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 1 + Width = 108 + end + object memRegistroMercantil: TcxDBMemo + Left = 117 + Top = 82 + DataBinding.DataField = 'REGISTRO_MERCANTIL' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 + Height = 48 + Width = 76 + end + object cxDBSpinEdit1: TcxDBSpinEdit + Left = 117 + Top = 136 + DataBinding.DataField = 'IVA' + DataBinding.DataSource = DADataSource + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + 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 = 3 + Width = 60 + end + object cxDBImage1: TcxDBImage + Left = 341 + Top = 277 + DataBinding.DataField = 'LOGOTIPO' + DataBinding.DataSource = DADataSource + Properties.Stretch = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 16 + Height = 100 + Width = 140 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Group4: TdxLayoutGroup + AutoAligns = [aaVertical] + AlignHorz = ahClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'Datos generales' + object dxLayoutControl1Item13: TdxLayoutItem + Caption = 'Nombre:' + Control = eNombre + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item14: TdxLayoutItem + Caption = 'CIF:' + Control = eNIFCIF + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item15: TdxLayoutItem + Caption = 'Registro mercantil:' + CaptionOptions.AlignVert = tavTop + Control = memRegistroMercantil + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item16: TdxLayoutItem + AutoAligns = [aaVertical] + Caption = 'IVA por defecto:' + Control = cxDBSpinEdit1 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group3: TdxLayoutGroup + AutoAligns = [aaHorizontal] + Caption = 'Direcci'#243'n' + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Calle:' + Control = eCalle + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group8: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Poblaci'#243'n:' + Control = ePoblacion + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item4: TdxLayoutItem + Caption = 'C'#243'd. postal:' + Control = eCodigoPostal + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item2: TdxLayoutItem + Caption = 'Provincia:' + Control = eProvincia + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group7: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'Observaciones' + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'cxDBMemo1' + ShowCaption = False + Control = cxDBMemo1 + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group6: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group2: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + Caption = 'Tel'#233'fonos' + object dxLayoutControl1Item10: TdxLayoutItem + Caption = 'Tlf. trabajo:' + Control = eTlfTrabajo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item9: TdxLayoutItem + Caption = 'Tlf. particular:' + Control = eTlfParticular + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item11: TdxLayoutItem + Caption = 'M'#243'vil:' + Control = eTlfMovil + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item12: TdxLayoutItem + Caption = 'Fax:' + Control = eFax + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + Caption = 'Correo electr'#243'nico e internet' + object dxLayoutControl1Item7: TdxLayoutItem + Caption = 'Correo de trabajo:' + Control = eMailTrabajo + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item6: TdxLayoutItem + Caption = 'Correo particular:' + Control = eMailParticular + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item5: TdxLayoutItem + Caption = 'P'#225'gina web:' + Control = ePaginaWeb + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group10: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'Logotipo' + LayoutDirection = ldHorizontal + object dxLayoutControl1Item17: TdxLayoutItem + AutoAligns = [] + AlignHorz = ahClient + AlignVert = avClient + Caption = 'cxDBImage1' + ShowCaption = False + Control = cxDBImage1 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group12: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item20: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'PngSpeedButton2' + ShowCaption = False + Control = PngSpeedButton2 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item19: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'PngSpeedButton1' + ShowCaption = False + Control = PngSpeedButton1 + ControlOptions.ShowBorder = False + end + end + end + end + end + object dxLayoutControl1Group9: TdxLayoutGroup + end + object dxLayoutControl1Group11: TdxLayoutGroup + end + end + object DADataSource: TDADataSource + Left = 16 + Top = 56 + end + object ActionList1: TActionList + Images = SmallImages + Left = 448 + Top = 256 + object actAnadir: TAction + ImageIndex = 0 + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + ImageIndex = 1 + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000D04944415478DA + 6364C0062630FCC72A5EC0C0882EC488CB80191909706EDDBA750CAF767D6260 + 5830240DF8F9FB3743EBE6CD780CC011602003409A7F0071EF8E1D10030C30D5 + 31A23B1706609AB1E23F7FC0F4FA2967B01B408CE6A3B76E815D856100319ABF + FFFAC570EEC103540340218D0C92EDECE01AD79E398335ACE106305CC0942CAC + 77871BB0F5E2454820620138A331D3CB09EEECBD57AF929E0E629DADC106FCF9 + F70F1E602419106A67C6F01DE40260805D7AFC9874037C2C0D194EDDBD8B1260 + 241900A6D103178B01000648ED7B1FCA93F30000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 419 + Top = 256 + Bitmap = {} + end + object OpenDialog1: TOpenDialog + Left = 384 + Top = 256 + end +end diff --git a/Source/Modulos/Empresas/Views/uViewEmpresa.pas b/Source/Modulos/Empresas/Views/uViewEmpresa.pas new file mode 100644 index 00000000..154d4eba --- /dev/null +++ b/Source/Modulos/Empresas/Views/uViewEmpresa.pas @@ -0,0 +1,179 @@ +unit uViewEmpresa; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable, + DBCtrls, Grids, DBGrids, uBizEmpresas, Mask, ComCtrls, uCustomView, + JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit, + cxDBEdit, dxLayoutControl, dxLayoutLookAndFeels, cxMemo, cxMaskEdit, + cxSpinEdit, cxImage, JvExControls, JvBitmapButton, ActnList, ImgList, + PngImageList, TB2Item, TBX, TB2Dock, TB2Toolbar, PngSpeedButton; + +type + IViewEmpresa = interface(IViewBase) + ['{876DCEBD-9E92-491A-84CE-498B1A84B525}'] + function GetEmpresa: IBizEmpresa; + procedure SetEmpresa(const Value: IBizEmpresa); + property Empresa: IBizEmpresa read GetEmpresa write SetEmpresa; + end; + + TfrViewEmpresa = class(TfrViewBase, IViewEmpresa) + DADataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Group4: TdxLayoutGroup; + dxLayoutControl1Group5: TdxLayoutGroup; + dxLayoutControl1Group6: TdxLayoutGroup; + dxLayoutControl1Group7: TdxLayoutGroup; + dxLayoutControl1Item1: TdxLayoutItem; + eCalle: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + eProvincia: TcxDBTextEdit; + dxLayoutControl1Item3: TdxLayoutItem; + ePoblacion: TcxDBTextEdit; + dxLayoutControl1Item4: TdxLayoutItem; + eCodigoPostal: TcxDBTextEdit; + dxLayoutControl1Item5: TdxLayoutItem; + ePaginaWeb: TcxDBTextEdit; + dxLayoutControl1Item6: TdxLayoutItem; + eMailParticular: TcxDBTextEdit; + dxLayoutControl1Item7: TdxLayoutItem; + eMailTrabajo: TcxDBTextEdit; + cxDBMemo1: TcxDBMemo; + dxLayoutControl1Item8: TdxLayoutItem; + dxLayoutControl1Item9: TdxLayoutItem; + eTlfParticular: TcxDBTextEdit; + dxLayoutControl1Item10: TdxLayoutItem; + eTlfTrabajo: TcxDBTextEdit; + dxLayoutControl1Item11: TdxLayoutItem; + eTlfMovil: TcxDBTextEdit; + dxLayoutControl1Item12: TdxLayoutItem; + eFax: TcxDBTextEdit; + dxLayoutControl1Item13: TdxLayoutItem; + eNombre: TcxDBTextEdit; + dxLayoutControl1Item14: TdxLayoutItem; + eNIFCIF: TcxDBTextEdit; + dxLayoutControl1Item15: TdxLayoutItem; + memRegistroMercantil: TcxDBMemo; + dxLayoutControl1Group10: TdxLayoutGroup; + dxLayoutControl1Group9: TdxLayoutGroup; + dxLayoutControl1Group11: TdxLayoutGroup; + dxLayoutControl1Group8: TdxLayoutGroup; + cxDBSpinEdit1: TcxDBSpinEdit; + dxLayoutControl1Item16: TdxLayoutItem; + ActionList1: TActionList; + actAnadir: TAction; + actEliminar: TAction; + SmallImages: TPngImageList; + OpenDialog1: TOpenDialog; + cxDBImage1: TcxDBImage; + dxLayoutControl1Item17: TdxLayoutItem; + PngSpeedButton1: TPngSpeedButton; + dxLayoutControl1Item19: TdxLayoutItem; + PngSpeedButton2: TPngSpeedButton; + dxLayoutControl1Item20: TdxLayoutItem; + dxLayoutControl1Group12: TdxLayoutGroup; + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + private + FEmpresa: IBizEmpresa; + protected + function GetEmpresa: IBizEmpresa; + procedure SetEmpresa(const Value: IBizEmpresa); + public + constructor Create(AOwner : TComponent); override; + end; + +implementation +{$R *.dfm} + +uses uROClasses, uROTypes; + +{ TfrViewEmpresas } + +{ +******************************* TfrViewEmpresa ******************************** +} +procedure TfrViewEmpresa.actAnadirExecute(Sender: TObject); +{var + StdStream: TMemoryStream; + StreamRO: IROStream; +} +begin + inherited; + cxDBImage1.LoadFromFile; + +{if not OpenDialog1.Execute then + Exit; + try + StdStream := TMemoryStream.Create; + StdStream.LoadFromFile(OpenDialog1.FileName); + StreamRO := NewROStream(StdStream,False); + DADataSource.DataTable.Edit; +// DADataSource.DataTable.FieldByName('LOGOTIPO').Clear; + DADataSource.DataTable.FieldByName('LOGOTIPO').LoadFromStream(StreamRO); + + DADataSource.DataTable.Post; + finally + StdStream.Free; + end; +} +end; + +procedure TfrViewEmpresa.actAnadirUpdate(Sender: TObject); +begin + inherited; +// (Sender as TAction).Enabled := cxDBImage1.Picture.Graphic.Empty; +end; + +procedure TfrViewEmpresa.actEliminarExecute(Sender: TObject); +begin + inherited; + cxDBImage1.Clear; + +{ DADataSource.DataTable.Edit; + DADataSource.DataTable.FieldByName('LOGOTIPO').AsVariant := Null; + DADataSource.DataTable.Post; +} +end; + +procedure TfrViewEmpresa.actEliminarUpdate(Sender: TObject); +begin + inherited; +// (Sender as TAction).Enabled := not cxDBImage1.Picture.Graphic.Empty; +end; + +constructor TfrViewEmpresa.Create(AOwner : TComponent); +begin + inherited; +end; + +function TfrViewEmpresa.GetEmpresa: IBizEmpresa; +begin + Result := FEmpresa; +end; + +procedure TfrViewEmpresa.SetEmpresa(const Value: IBizEmpresa); +begin + FEmpresa := Value; + if Assigned(FEmpresa) then + DADataSource.DataTable := FEmpresa.DataTable + else + DADataSource.DataTable := NIL; +end; + +initialization + RegisterClass(TfrViewEmpresa); + +finalization + UnRegisterClass(TfrViewEmpresa); + +end. + diff --git a/Source/Modulos/Familias/Controller/Familias_controller.bdsproj b/Source/Modulos/Familias/Controller/Familias_controller.bdsproj new file mode 100644 index 00000000..027024ce --- /dev/null +++ b/Source/Modulos/Familias/Controller/Familias_controller.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Familias_controller.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Familias/Controller/Familias_controller.dpk b/Source/Modulos/Familias/Controller/Familias_controller.dpk new file mode 100644 index 00000000..40ceaed6 --- /dev/null +++ b/Source/Modulos/Familias/Controller/Familias_controller.dpk @@ -0,0 +1,53 @@ +package Familias_controller; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + cxLibraryD10, + dxThemeD10, + dsnap, + vcldb, + adortl, + Familias_model, + Familias_data, + ControllerBase, + dxBarExtItemsD10, + dxComnD10, + dxBarD10, + dxLayoutControlD10, + dxPSCoreD10, + dxPScxCommonD10, + dxPScxGridLnkD10, + dxPsPrVwAdvD10, + GUIBase; + +contains + uFamiliasController in 'uFamiliasController.pas', + uIEditorFamilias in 'View\uIEditorFamilias.pas'; + +end. diff --git a/Source/Modulos/Familias/Controller/Familias_controller.rc b/Source/Modulos/Familias/Controller/Familias_controller.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Familias/Controller/Familias_controller.res b/Source/Modulos/Familias/Controller/Familias_controller.res new file mode 100644 index 00000000..36f26e23 Binary files /dev/null and b/Source/Modulos/Familias/Controller/Familias_controller.res differ diff --git a/Source/Modulos/Familias/Controller/View/uIEditorFamilias.pas b/Source/Modulos/Familias/Controller/View/uIEditorFamilias.pas new file mode 100644 index 00000000..f3d9cb2d --- /dev/null +++ b/Source/Modulos/Familias/Controller/View/uIEditorFamilias.pas @@ -0,0 +1,23 @@ +unit uIEditorFamilias; + +interface + +uses + uEditorDBBase, uBizFamilias, uFamiliasController; + +type + IEditorFamilias = interface(IEditorDBBase) + ['{28CD8E74-C3D5-4862-A8F9-CF0EE3E79FED}'] + function GetFamilias: IBizFamilia; + procedure SetFamilias(const Value: IBizFamilia); + property Familias: IBizFamilia read GetFamilias write SetFamilias; + + function GetController : IFamiliasController; + procedure SetController (const Value : IFamiliasController); + property Controller : IFamiliasController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Familias/Controller/uFamiliasController.pas b/Source/Modulos/Familias/Controller/uFamiliasController.pas new file mode 100644 index 00000000..37536bb2 --- /dev/null +++ b/Source/Modulos/Familias/Controller/uFamiliasController.pas @@ -0,0 +1,237 @@ +unit uFamiliasController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, + uIDataModuleFamilias, uBizFamilias; + +type + IFamiliasController = interface(IObservador) + ['{3987874F-57A8-4C71-8B7E-CBD2D1580CBC}'] + function BuscarTodos: IBizFamilia; + procedure VerTodos(AFamilias: IBizFamilia); + procedure Anadir(AFamilia : IBizFamilia); + function Eliminar(AFamilia : IBizFamilia): Boolean; + function Guardar(AFamilia : IBizFamilia): Boolean; + procedure DescartarCambios(AFamilia : IBizFamilia); + function Localizar(AFamilias: IBizFamilia; ADescripcion:String): Boolean; + function DarListaFamilias: TStringList; + end; + + TFamiliasController = class(TObservador, IFamiliasController) + protected + FDataModule : IDataModuleFamilias; + + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + + function ValidarAlmacen(AFamilia: IBizFamilia): Boolean; + + //Estos son los tres mtodos a sobre escribir si se desea heredar toda la logica de + //este controller + procedure AsignarDataModule; virtual; + + procedure ValidarObjetos; virtual; + + public + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(AFamilia : IBizFamilia): Boolean; + function Guardar(AFamilia : IBizFamilia): Boolean; + procedure DescartarCambios(AFamilia : IBizFamilia); virtual; + procedure Anadir(AFamilia : IBizFamilia); + function BuscarTodos: IBizFamilia; + procedure VerTodos(AFamilias: IBizFamilia); + function Localizar(AFamilias: IBizFamilia; ADescripcion:String): Boolean; + function DarListaFamilias: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, schFamiliasClient_Intf, + uIEditorFamilias, uDataModuleFamilias, + uDAInterfaces, uDataTableUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows; + +{ TFamiliasController } + +procedure TFamiliasController.Anadir(AFamilia: IBizFamilia); +begin + AFamilia.Insert; +end; + +procedure TFamiliasController.AsignarDataModule; +begin + FDataModule := TDataModuleFamilias.Create(Nil); +end; + +function TFamiliasController.BuscarTodos: IBizFamilia; +begin + Result := FDataModule.GetItems; +end; + +constructor TFamiliasController.Create; +begin + AsignarDataModule; +end; + +function TFamiliasController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TFamiliasController.DarListaFamilias: TStringList; +var + AFamilias: IBizFamilia; +begin + AFamilias := BuscarTodos; + AFamilias.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + AFamilias.DataTable.First; + while not AFamilias.DataTable.EOF do + begin + Add(AFamilias.DESCRIPCION); + AFamilias.DataTable.Next; + end; + end; + finally + AFamilias := NIL; + end; +end; + +procedure TFamiliasController.DescartarCambios(AFamilia: IBizFamilia); +begin + if not Assigned(AFamilia) then + raise Exception.Create ('Almacen no asignado'); + + ShowHourglassCursor; + try + if (AFamilia.State in dsEditModes) then + AFamilia.Cancel; + + AFamilia.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TFamiliasController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +function TFamiliasController.ValidarAlmacen(AFamilia: IBizFamilia): Boolean; +begin +// +end; + +procedure TFamiliasController.ValidarObjetos; +begin +// +end; + +procedure TFamiliasController.VerTodos(AFamilias: IBizFamilia); +var + AEditor : IEditorFamilias; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorFamilias', IEditorFamilias, AEditor); + with AEditor do + begin + Controller := Self; //OJO ORDEN MUY IMPORTANTE + Familias := AFamilias; + end; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +function TFamiliasController.Eliminar(AFamilia: IBizFamilia): Boolean; +begin + Result := False; + + if not Assigned(AFamilia) then + raise Exception.Create ('Almacen no asignada'); + + ShowHourglassCursor; + try + if (AFamilia.State in dsEditModes) then + AFamilia.Cancel; + + AFamilia.Delete; + AFamilia.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TFamiliasController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TFamiliasController.Guardar(AFamilia: IBizFamilia): Boolean; +begin + Result := False; + + if not Assigned(AFamilia) then + raise Exception.Create ('Almacen no asignada'); + + ValidarObjetos; + + if ValidarAlmacen(AFamilia) then + begin + ShowHourglassCursor; + try + if (AFamilia.DataTable.State in dsEditModes) then + AFamilia.DataTable.Post; + + AFamilia.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TFamiliasController.Localizar(AFamilias: IBizFamilia; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AFamilias.DataTable do + begin + DisableControls; + First; + if not Locate(fld_FamiliasDESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Familias/Data/Familias_data.bdsproj b/Source/Modulos/Familias/Data/Familias_data.bdsproj new file mode 100644 index 00000000..daa0e7ca --- /dev/null +++ b/Source/Modulos/Familias/Data/Familias_data.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Familias_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Familias/Data/Familias_data.dpk b/Source/Modulos/Familias/Data/Familias_data.dpk new file mode 100644 index 00000000..232c1c42 --- /dev/null +++ b/Source/Modulos/Familias/Data/Familias_data.dpk @@ -0,0 +1,42 @@ +package Familias_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + cxLibraryD10, + dxThemeD10, + vcl, + dsnap, + vcldb, + adortl, + Familias_model, + Base; + +contains + uDataModuleFamilias in 'uDataModuleFamilias.pas' {DataModuleFamilias}; + +end. diff --git a/Source/Modulos/Familias/Data/Familias_data.rc b/Source/Modulos/Familias/Data/Familias_data.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Familias/Data/Familias_data.res b/Source/Modulos/Familias/Data/Familias_data.res new file mode 100644 index 00000000..36f26e23 Binary files /dev/null and b/Source/Modulos/Familias/Data/Familias_data.res differ diff --git a/Source/Modulos/Familias/Data/uDataModuleFamilias.dfm b/Source/Modulos/Familias/Data/uDataModuleFamilias.dfm new file mode 100644 index 00000000..9411f06c --- /dev/null +++ b/Source/Modulos/Familias/Data/uDataModuleFamilias.dfm @@ -0,0 +1,186 @@ +object DataModuleFamilias: TDataModuleFamilias + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + RemoteService = RORemoteService + Adapter = DABinAdapter + SchemaCall.MethodName = 'GetSchemaAsXML' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + end> + Height = 414 + Width = 518 + object RORemoteService: TRORemoteService + ServiceName = 'srvFamilias' + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + Left = 48 + Top = 24 + end + object DABinAdapter: TDABINAdapter + Left = 48 + Top = 80 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteRequest.MethodName = 'Login' + RemoteRequest.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBoolean + end + item + Name = 'User' + ParamType = fIn + DataType = rtString + Value = 'Administrador' + end + item + Name = 'Password' + ParamType = fIn + DataType = rtString + Value = '1' + end + item + Name = 'LoginInfo' + ParamType = fOut + DataType = rtUserDefined + UserClassName = 'TRdxLoginInfo' + end> + RemoteService = LoginRemoteService + Left = 48 + Top = 160 + end + object LoginRemoteService: TRORemoteService + ServiceName = 'srvLogin' + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + Left = 48 + Top = 216 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + ServerLocators = <> + DispatchOptions = [] + ProbeServers = False + ProbeFrequency = 60000 + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + Left = 48 + Top = 272 + end + object ROBinMessage1: TROBinMessage + Left = 48 + Top = 324 + end + object tbl_Familias: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + SchemaCall.MethodName = 'GetDatasetSchema' + SchemaCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'aDatasetName' + ParamType = fIn + DataType = rtString + Value = 'Familias' + end> + DataRequestCall.MethodName = 'GetDatasetDataEx' + DataRequestCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'DatasetName' + ParamType = fIn + DataType = rtString + Value = 'Familias' + end + item + Name = 'Params' + ParamType = fIn + DataType = rtUserDefined + UserClassName = 'TDADatasetParamArray' + end + item + Name = 'UserFilter' + ParamType = fIn + DataType = rtString + Value = '' + end + item + Name = 'IncludeSchema' + ParamType = fIn + DataType = rtBoolean + Value = False + end + item + Name = 'MaxRecords' + ParamType = fIn + DataType = rtInteger + Value = -1 + end> + DataUpdateCall.MethodName = 'UpdateData' + DataUpdateCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtBinary + end + item + Name = 'Delta' + ParamType = fIn + DataType = rtBinary + end> + ScriptCall.MethodName = 'GetDatasetScripts' + ScriptCall.Params = < + item + Name = 'Result' + ParamType = fResult + DataType = rtString + Value = '' + end + item + Name = 'DatasetNames' + ParamType = fIn + DataType = rtString + Value = 'Familias' + end> + ReadOnly = False + RemoteService = RORemoteService + Adapter = DABinAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Familias' + IndexDefs = <> + Left = 248 + Top = 104 + end + object ds_Familias: TDADataSource + DataTable = tbl_Familias + Left = 248 + Top = 40 + end +end diff --git a/Source/Modulos/Familias/Data/uDataModuleFamilias.pas b/Source/Modulos/Familias/Data/uDataModuleFamilias.pas new file mode 100644 index 00000000..81837378 --- /dev/null +++ b/Source/Modulos/Familias/Data/uDataModuleFamilias.pas @@ -0,0 +1,77 @@ +unit uDataModuleFamilias; + +interface + +uses + SysUtils, Classes, DB, uDAClientDataModule, uDADataTable, uDABINAdapter, + uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uDADesigntimeCall, + uIDataModuleFamilias, uBizFamilias; + +type + TDataModuleFamilias = class(TDAClientDataModule, IDataModuleFamilias) + RORemoteService: TRORemoteService; + DABinAdapter: TDABINAdapter; + DADesigntimeCall1: TDADesigntimeCall; + LoginRemoteService: TRORemoteService; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + ROBinMessage1: TROBinMessage; + tbl_Familias: TDACDSDataTable; + ds_Familias: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + + protected + function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; + procedure AsignarClaseNegocio(var AFamilia: TDACDSDataTable); virtual; + public + function GetItems : IBizFamilia; + end; + +implementation +{$R *.DFM} + +uses + FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, uDAInterfaces, + schFamiliasClient_Intf; + +{ TdmFamilias } + +procedure TDataModuleFamilias.AsignarClaseNegocio(var AFamilia: TDACDSDataTable); +begin + AFamilia.BusinessRulesID := BIZ_CLIENT_FAMILIA; +end; + +procedure TDataModuleFamilias.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleFamilias._CloneDataTable(const ADataTable : TDACDSDataTable): TDACDSDataTable; +begin + Result := NIL; + + if not Assigned(ADataTable) then + raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); + + Result := TDACDSDataTable.Create(NIL); + CloneDataTable(ADataTable, Result); +end; + +function TDataModuleFamilias.GetItems: IBizFamilia; +var + AFamilia : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AFamilia := _CloneDataTable(tbl_Familias); + AsignarClaseNegocio(AFamilia); + Result := (AFamilia as IBizFamilia); + finally + HideHourglassCursor; + end; +end; + + +end. diff --git a/Source/Modulos/Familias/Familias_Group.bdsgroup b/Source/Modulos/Familias/Familias_Group.bdsgroup new file mode 100644 index 00000000..df259d55 --- /dev/null +++ b/Source/Modulos/Familias/Familias_Group.bdsgroup @@ -0,0 +1,24 @@ + + + + + + + + + + + ..\..\Base\Base.bdsproj + ..\..\Base\GUIBase\GUIBase.bdsproj + ..\..\Base\Usuarios\Usuarios.bdsproj + Model\Familias_model.bdsproj + Data\Familias_data.bdsproj + Controller\Familias_controller.bdsproj + Views\Familias_view.bdsproj + Plugin\Familias_plugin.bdsproj + Base.bpl GUIBase.bpl Usuarios.bpl Familias_model.bpl Familias_data.bpl Familias_controller.bpl Familias_view.bpl Familias_plugin.bpl + + + + diff --git a/Source/Modulos/Familias/Model/Data/uIDataModuleFamilias.pas b/Source/Modulos/Familias/Model/Data/uIDataModuleFamilias.pas new file mode 100644 index 00000000..5ca83148 --- /dev/null +++ b/Source/Modulos/Familias/Model/Data/uIDataModuleFamilias.pas @@ -0,0 +1,16 @@ +unit uIDataModuleFamilias; + +interface + +uses + uBizFamilias; + +type + IDataModuleFamilias = interface + ['{0FE2B5E6-DE76-4834-B27F-3C754C96B76A}'] + function GetItems: IBizFamilia; + end; + +implementation + +end. diff --git a/Source/Modulos/Familias/Model/Familias_model.bdsproj b/Source/Modulos/Familias/Model/Familias_model.bdsproj new file mode 100644 index 00000000..6ffd6bb3 --- /dev/null +++ b/Source/Modulos/Familias/Model/Familias_model.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Familias_model.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Familias/Model/Familias_model.dpk b/Source/Modulos/Familias/Model/Familias_model.dpk new file mode 100644 index 00000000..294487f1 --- /dev/null +++ b/Source/Modulos/Familias/Model/Familias_model.dpk @@ -0,0 +1,41 @@ +package Familias_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dsnap, + dbrtl, + vcldb, + vcl, + adortl, + DataAbstract_D10; + +contains + uBizFamilias in 'uBizFamilias.pas', + uIDataModuleFamilias in 'Data\uIDataModuleFamilias.pas', + schFamiliasClient_Intf in 'schFamiliasClient_Intf.pas'; + +end. diff --git a/Source/Modulos/Familias/Model/Familias_model.rc b/Source/Modulos/Familias/Model/Familias_model.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Familias/Model/Familias_model.res b/Source/Modulos/Familias/Model/Familias_model.res new file mode 100644 index 00000000..36f26e23 Binary files /dev/null and b/Source/Modulos/Familias/Model/Familias_model.res differ diff --git a/Source/Modulos/Familias/Model/schFamiliasClient_Intf.pas b/Source/Modulos/Familias/Model/schFamiliasClient_Intf.pas new file mode 100644 index 00000000..2a2c3a3d --- /dev/null +++ b/Source/Modulos/Familias/Model/schFamiliasClient_Intf.pas @@ -0,0 +1,82 @@ +unit schFamiliasClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_Familias = '{67A67A27-B0E7-4D8B-B283-A6A3B1BCF950}'; + + { Data table names } + nme_Familias = 'Familias'; + + { Familias fields } + fld_FamiliasDESCRIPCION = 'DESCRIPCION'; + + { Familias field indexes } + idx_FamiliasDESCRIPCION = 0; + +type + { IFamilias } + IFamilias = interface(IDAStronglyTypedDataTable) + ['{A882691E-EE02-4577-943E-E0EAE6291978}'] + { Property getters and setters } + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + end; + + { TFamiliasDataTableRules } + TFamiliasDataTableRules = class(TDADataTableRules, IFamilias) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TFamiliasDataTableRules } +constructor TFamiliasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFamiliasDataTableRules.Destroy; +begin + inherited; +end; + +function TFamiliasDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_FamiliasDESCRIPCION].AsString; +end; + +procedure TFamiliasDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_FamiliasDESCRIPCION].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_Familias, TFamiliasDataTableRules); + +end. diff --git a/Source/Modulos/Familias/Model/schFamiliasServer_Intf.pas b/Source/Modulos/Familias/Model/schFamiliasServer_Intf.pas new file mode 100644 index 00000000..2eae796f --- /dev/null +++ b/Source/Modulos/Familias/Model/schFamiliasServer_Intf.pas @@ -0,0 +1,79 @@ +unit schFamiliasServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schFamiliasClient_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_FamiliasDelta = '{7935CA4C-99B8-4F96-A8CD-3CE4BCCFC041}'; + +type + { IFamiliasDelta } + IFamiliasDelta = interface(IFamilias) + ['{7935CA4C-99B8-4F96-A8CD-3CE4BCCFC041}'] + { Property getters and setters } + function GetOldDESCRIPCIONValue : String; + + { Properties } + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + end; + + { TFamiliasBusinessProcessorRules } + TFamiliasBusinessProcessorRules = class(TDABusinessProcessorRules, IFamilias, IFamiliasDelta) + private + protected + { Property getters and setters } + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + + { Properties } + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TFamiliasBusinessProcessorRules } +constructor TFamiliasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFamiliasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFamiliasBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FamiliasDESCRIPCION]; +end; + +function TFamiliasBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FamiliasDESCRIPCION]; +end; + +procedure TFamiliasBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FamiliasDESCRIPCION] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_FamiliasDelta, TFamiliasBusinessProcessorRules); + +end. diff --git a/Source/Modulos/Familias/Model/uBizFamilias.pas b/Source/Modulos/Familias/Model/uBizFamilias.pas new file mode 100644 index 00000000..9bf8e21c --- /dev/null +++ b/Source/Modulos/Familias/Model/uBizFamilias.pas @@ -0,0 +1,27 @@ +unit uBizFamilias; + +interface + +uses + uDAInterfaces, uDADataTable, schFamiliasClient_Intf; + +const + BIZ_CLIENT_FAMILIA = 'Client.Familia'; + +type + IBizFamilia = interface(IFamilias) + ['{4DEDACCD-5CC1-474A-BE9A-46D3BCCF9025}'] + end; + + TBizFamilia = class(TFamiliasDataTableRules, IBizFamilia) + end; + +implementation + +initialization + RegisterDataTableRules(BIZ_CLIENT_FAMILIA, TBizFamilia); + +finalization + +end. + diff --git a/Source/Modulos/Familias/Plugin/Familias_plugin.bdsproj b/Source/Modulos/Familias/Plugin/Familias_plugin.bdsproj new file mode 100644 index 00000000..012abf9d --- /dev/null +++ b/Source/Modulos/Familias/Plugin/Familias_plugin.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Familias_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Familias/Plugin/Familias_plugin.dpk b/Source/Modulos/Familias/Plugin/Familias_plugin.dpk new file mode 100644 index 00000000..14300abe --- /dev/null +++ b/Source/Modulos/Familias/Plugin/Familias_plugin.dpk @@ -0,0 +1,42 @@ +package Familias_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + Familias_model, + Familias_controller, + Familias_view, + PluginSDK_D10R; + +contains + uPluginFamilias in 'uPluginFamilias.pas'; + +end. diff --git a/Source/Modulos/Familias/Plugin/Familias_plugin.rc b/Source/Modulos/Familias/Plugin/Familias_plugin.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Familias/Plugin/Familias_plugin.res b/Source/Modulos/Familias/Plugin/Familias_plugin.res new file mode 100644 index 00000000..36f26e23 Binary files /dev/null and b/Source/Modulos/Familias/Plugin/Familias_plugin.res differ diff --git a/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm b/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm new file mode 100644 index 00000000..2c5b0ba3 --- /dev/null +++ b/Source/Modulos/Familias/Plugin/uPluginFamilias.dfm @@ -0,0 +1,81 @@ +object PluginFamilias: TPluginFamilias + OldCreateOrder = True + DefaultAction = actFamilias + Description = 'Familias' + ModuleMenu = MainMenu + ModuleName = 'Familias' + SmallImages = SmallImages + LargeImages = SmallImages + Author = 'Rodax Software' + Version = '1.0.0' + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = <> + Left = 232 + Top = 16 + end + object ModuleActionList: TActionList + Images = SmallImages + Left = 40 + Top = 72 + object actFamilias: TAction + Category = 'Familias' + Caption = 'Familias' + ImageIndex = 0 + OnExecute = actFamiliasExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Caption = 'Empresa' + object N1: TMenuItem + Tag = 18990 + Caption = '-' + end + object Familias1: TMenuItem + Tag = 19000 + Action = actFamilias + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6 + B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77 + EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5 + E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D + 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D + C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6 + 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141 + 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15 + F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334 + 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524 + 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256 + 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4 + 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F + E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = <> + Left = 232 + Top = 80 + end +end diff --git a/Source/Modulos/Familias/Plugin/uPluginFamilias.pas b/Source/Modulos/Familias/Plugin/uPluginFamilias.pas new file mode 100644 index 00000000..67e8fd46 --- /dev/null +++ b/Source/Modulos/Familias/Plugin/uPluginFamilias.pas @@ -0,0 +1,74 @@ +unit uPluginFamilias; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCFamilias = interface(IInterface) + ['{CD2D4FD9-B669-4447-A080-4D797B192A6F}'] + end; + + TPluginFamilias = class(TModuleController, IMCFamilias) + actFamilias: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + Familias1: TMenuItem; + N1: TMenuItem; + procedure actFamiliasExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, SysUtils, + uFamiliasController, uBizFamilias, uFamiliasViewRegister; + +function GetModule : TModuleController; +begin + Result := TPluginFamilias.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TPluginFamilias.actFamiliasExecute(Sender: TObject); +var + AFamiliasController : IFamiliasController; + AFamilias : IBizFamilia; +begin + AFamiliasController := TFamiliasController.Create; + AFamilias := (AFamiliasController.BuscarTodos as IBizFamilia); + AFamiliasController.VerTodos(AFamilias); +end; + +constructor TPluginFamilias.Create(AOwner: TComponent); +begin + inherited; + uFamiliasViewRegister.RegisterViews; +end; + +destructor TPluginFamilias.Destroy; +begin + uFamiliasViewRegister.UnregisterViews; + inherited; +end; + +initialization + RegisterModuleClass(TPluginFamilias); + +finalization + UnRegisterModuleClass(TPluginFamilias); + +end. diff --git a/Source/Modulos/Familias/Servidor/srvFamilias_Impl.dfm b/Source/Modulos/Familias/Servidor/srvFamilias_Impl.dfm new file mode 100644 index 00000000..8d90997f --- /dev/null +++ b/Source/Modulos/Familias/Servidor/srvFamilias_Impl.dfm @@ -0,0 +1,162 @@ +object srvFamilias: TsrvFamilias + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + SessionManager = dmServer.SessionManager + ConnectionName = 'IBX' + ServiceSchema = schFamilias + ServiceDataStreamer = DABinDataStreamer + AllowExecuteSQL = True + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 249 + Width = 343 + object Diagrams: TDADiagrams + Left = 150 + Top = 74 + DiagramData = ''#13#10''#13#10 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'Montajes_ID' + DataType = datInteger + Required = True + DisplayLabel = 'ID' + end + item + Name = 'Montajes_ID_EMPRESA' + DataType = datInteger + DisplayLabel = 'ID_EMPRESA' + end + item + Name = 'Montajes_FECHA_ALTA' + DataType = datDateTime + DisplayLabel = 'FECHA_ALTA' + end + item + Name = 'Almacenes_CALLE' + DataType = datString + Size = 255 + end + item + Name = 'Almacenes_PROVINCIA' + DataType = datString + Size = 255 + end + item + Name = 'Almacenes_POBLACION' + DataType = datString + Size = 255 + end + item + Name = 'Almacenes_CODIGO_POSTAL' + DataType = datString + Size = 10 + end + item + Name = 'Almacenes_TELEFONO' + DataType = datString + Size = 25 + end + item + Name = 'Almacenes_MOVIL' + DataType = datString + Size = 25 + end + item + Name = 'Almacenes_FAX' + DataType = datString + Size = 25 + end + item + Name = 'Almacenes_PERSONACONTACTO' + DataType = datString + Size = 255 + end + item + Name = 'Almacenes_OBSERVACIONES' + DataType = datMemo + end + item + Name = 'Montajes_FECHA_MODIFICACION' + DataType = datDateTime + DisplayLabel = 'FECHA_MODIFICACION' + end + item + Name = 'Montajes_USUARIO' + DataType = datString + Size = 20 + DisplayLabel = 'USUARIO' + end + item + Name = 'Montajes_NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre' + end> + Left = 150 + Top = 22 + end + object schFamilias: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Diagrams = Diagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FAMILIAS' + SQL = 'SELECT DESCRIPCION'#10#10'FROM FAMILIAS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end> + end> + Name = 'Familias' + Fields = < + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + InPrimaryKey = True + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = < + item + Name = 'Insert Familias' + DoUpdate = False + DoDelete = False + DatasetName = 'Familias' + FailureBehavior = fbRaiseException + end + item + Name = 'Update Familias' + DoInsert = False + DoDelete = False + DatasetName = 'Familias' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete Familias' + DoUpdate = False + DoInsert = False + DatasetName = 'Familias' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 48 + Top = 24 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 48 + Top = 80 + end +end diff --git a/Source/Modulos/Familias/Servidor/srvFamilias_Impl.pas b/Source/Modulos/Familias/Servidor/srvFamilias_Impl.pas new file mode 100644 index 00000000..fb2c60ab --- /dev/null +++ b/Source/Modulos/Familias/Servidor/srvFamilias_Impl.pas @@ -0,0 +1,62 @@ +unit srvFamilias_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf, uDADataTable, uDABINAdapter, uDAClasses, + uDAScriptingProvider, uDABusinessProcessor, uDAInterfaces, uDADataStreamer; + +type + { TsrvFamilias } + TsrvFamilias = class(TDataAbstractService, IsrvFamilias) + Diagrams: TDADiagrams; + schFamilias: TDASchema; + DataDictionary: TDADataDictionary; + DABinDataStreamer: TDABinDataStreamer; + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + { IsrvFamilias methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, + uDatabaseUtils, schFamiliasClient_Intf, uRestriccionesUsuarioUtils; + +procedure Create_srvFamilias(out anInstance : IUnknown); +begin + anInstance := TsrvFamilias.Create(NIL); +end; + +{ srvFamilias } +procedure TsrvFamilias.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; +end; + +procedure TsrvFamilias.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +initialization + TROClassFactory.Create('srvFamilias', Create_srvFamilias, TsrvFamilias_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Familias/Views/Familias_view.bdsproj b/Source/Modulos/Familias/Views/Familias_view.bdsproj new file mode 100644 index 00000000..763df368 --- /dev/null +++ b/Source/Modulos/Familias/Views/Familias_view.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Familias_view.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Familias/Views/Familias_view.dpk b/Source/Modulos/Familias/Views/Familias_view.dpk new file mode 100644 index 00000000..28a23ff4 --- /dev/null +++ b/Source/Modulos/Familias/Views/Familias_view.dpk @@ -0,0 +1,42 @@ +package Familias_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + dsnap, + adortl, + GUIBase, + DataAbstract_D10, + Familias_controller; + +contains + uEditorFamilias in 'uEditorFamilias.pas' {fEditorFamilias: TfEditorFamilias}, + uFamiliasViewRegister in 'uFamiliasViewRegister.pas'; + +end. diff --git a/Source/Modulos/Familias/Views/Familias_view.rc b/Source/Modulos/Familias/Views/Familias_view.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Familias/Views/Familias_view.res b/Source/Modulos/Familias/Views/Familias_view.res new file mode 100644 index 00000000..36f26e23 Binary files /dev/null and b/Source/Modulos/Familias/Views/Familias_view.res differ diff --git a/Source/Modulos/Familias/Views/uEditorFamilias.dfm b/Source/Modulos/Familias/Views/uEditorFamilias.dfm new file mode 100644 index 00000000..c086a627 --- /dev/null +++ b/Source/Modulos/Familias/Views/uEditorFamilias.dfm @@ -0,0 +1,144 @@ +object fEditorFamilias: TfEditorFamilias + Left = 453 + Top = 234 + ActiveControl = ListaFamilias + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Administraci'#243'n de familias de art'#237'culos' + ClientHeight = 494 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnClose = CustomEditorClose + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 235 + Top = 462 + Width = 75 + Height = 23 + Action = actAceptar + Default = True + TabOrder = 1 + end + object bCancelar: TButton + Left = 321 + Top = 462 + Width = 75 + Height = 23 + Action = actCancelar + Cancel = True + TabOrder = 2 + end + object PageControl1: TPageControl + Left = 8 + Top = 8 + Width = 390 + Height = 442 + ActivePage = TabSheet1 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Familias de art'#237'culos' + object Label1: TLabel + Left = 10 + Top = 12 + Width = 213 + Height = 13 + Caption = 'Lista de familias disponibles para los art'#237'culos' + end + object Label2: TLabel + Left = 10 + Top = 326 + Width = 116 + Height = 13 + Caption = 'A'#241'adir una nueva familia' + end + object Bevel1: TBevel + Left = 132 + Top = 330 + Width = 244 + Height = 5 + Shape = bsBottomLine + end + object eCategoria: TLabel + Left = 18 + Top = 353 + Width = 98 + Height = 13 + Caption = 'Nombre de la familia:' + end + object ListaFamilias: TDBLookupListBox + Left = 8 + Top = 31 + Width = 262 + Height = 277 + KeyField = 'RecID' + ListField = 'DESCRIPCION' + ListSource = DADataSource + TabOrder = 0 + end + object bEliminar: TButton + Left = 281 + Top = 31 + Width = 95 + Height = 23 + Action = actEliminar + TabOrder = 1 + end + object editFamilia: TEdit + Left = 122 + Top = 349 + Width = 254 + Height = 21 + TabOrder = 2 + end + object bAnadir: TButton + Left = 281 + Top = 382 + Width = 95 + Height = 23 + Action = actAnadir + TabOrder = 3 + end + end + end + object ActionList1: TActionList + Left = 144 + Top = 16 + object actAnadir: TAction + Caption = '&A'#241'adir' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = 'A&ceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + end + object DADataSource: TDADataSource + Left = 168 + Top = 16 + end +end diff --git a/Source/Modulos/Familias/Views/uEditorFamilias.pas b/Source/Modulos/Familias/Views/uEditorFamilias.pas new file mode 100644 index 00000000..d1675de5 --- /dev/null +++ b/Source/Modulos/Familias/Views/uEditorFamilias.pas @@ -0,0 +1,180 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorFamilias; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, StdCtrls, DBCtrls, uDADataTable, ActnList, + uIEditorFamilias, uCustomEditor, uGUIBase, ExtCtrls, + ComCtrls, uBizFamilias, uFamiliasController; + +type + TfEditorFamilias = class(TCustomEditor, IEditorFamilias) + ActionList1: TActionList; + DADataSource: TDADataSource; + ListaFamilias: TDBLookupListBox; + actAnadir: TAction; + actEliminar: TAction; + bEliminar: TButton; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + Label1: TLabel; + Label2: TLabel; + Bevel1: TBevel; + eCategoria: TLabel; + editFamilia: TEdit; + bAnadir: TButton; + procedure FormShow(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + protected + FFamilias: IBizFamilia; + FController: IFamiliasController; + function GetFamilias: IBizFamilia; + procedure SetFamilias(const Value: IBizFamilia); + function GetController : IFamiliasController; + procedure SetController (const Value : IFamiliasController); + public + property Familias: IBizFamilia read GetFamilias write SetFamilias; + property Controller : IFamiliasController read GetController write SetController; + end; + + +implementation +{$R *.dfm} + +{ TfEditorFamilias } + +uses + uDialogUtils; + +function TfEditorFamilias.GetController: IFamiliasController; +begin + Result := FController; +end; + +function TfEditorFamilias.GetFamilias: IBizFamilia; +begin + Result := FFamilias; +end; + +procedure TfEditorFamilias.SetController(const Value: IFamiliasController); +begin + FController := Value; +end; + +procedure TfEditorFamilias.SetFamilias(const Value: IBizFamilia); +begin + FFamilias := Value; + DADataSource.DataTable := (FFamilias as IBizFamilia).DataTable; + DADataSource.DataTable.Open; +end; + +procedure TfEditorFamilias.actAnadirExecute(Sender: TObject); +begin + if not FController.Localizar(Familias, editFamilia.Text) then + begin + Familias.Append; + Familias.DESCRIPCION := editFamilia.Text; + Familias.Post; + editFamilia.Clear; + ListaFamilias.SetFocus; + end + else + ShowErrorMessage('Ya existe la familia ' + editFamilia.Text, + 'Ya existe la familia ''' + editFamilia.Text + ''' en la lista.'); +end; + +procedure TfEditorFamilias.actEliminarExecute(Sender: TObject); +begin + Familias.Delete; + ListaFamilias.SetFocus; +end; + +procedure TfEditorFamilias.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (FFamilias.DataTable.RecordCount > 0) and + (Length(ListaFamilias.SelectedItem) > 0); + +end; + +procedure TfEditorFamilias.CustomEditorClose(Sender: TObject; var Action: TCloseAction); +begin + FFamilias := Nil; + FController := Nil; +end; + +procedure TfEditorFamilias.actAceptarExecute(Sender: TObject); +begin + try + Familias.DataTable.ApplyUpdates; + except + on E : Exception do begin + Familias.DataTable.CancelUpdates; + ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); + exit; + end; + end; + actCerrar.Execute; +end; + +procedure TfEditorFamilias.actCancelarExecute(Sender: TObject); +begin + Familias.DataTable.CancelUpdates; + actCerrar.Execute; +end; + +procedure TfEditorFamilias.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorFamilias.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := (Length(editFamilia.Text) > 0) +end; + +procedure TfEditorFamilias.FormShow(Sender: TObject); +begin + if not FFamilias.DataTable.Active then + FFamilias.DataTable.Active := true; + + EditFamilia.SetFocus; +end; + +end. diff --git a/Source/Modulos/Familias/Views/uFamiliasViewRegister.pas b/Source/Modulos/Familias/Views/uFamiliasViewRegister.pas new file mode 100644 index 00000000..755b013a --- /dev/null +++ b/Source/Modulos/Familias/Views/uFamiliasViewRegister.pas @@ -0,0 +1,23 @@ +unit uFamiliasViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, uEditorFamilias; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorFamilias, 'EditorFamilias'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorFamilias); +end; + +end. diff --git a/Source/Modulos/Formas de pago/Controller/FormasPago_controller.bdsproj b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.bdsproj new file mode 100644 index 00000000..f81f2c1e --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FormasPago_controller.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Formas de pago/Controller/FormasPago_controller.dpk b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.dpk new file mode 100644 index 00000000..803a3614 --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.dpk @@ -0,0 +1,54 @@ +package FormasPago_controller; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + cxLibraryD10, + dxThemeD10, + dsnap, + vcldb, + adortl, + ControllerBase, + dxBarExtItemsD10, + dxComnD10, + dxBarD10, + dxLayoutControlD10, + dxPSCoreD10, + dxPScxCommonD10, + dxPScxGridLnkD10, + dxPsPrVwAdvD10, + FormasPago_model, + FormasPago_data; + +contains + uFormasPagoController in 'uFormasPagoController.pas', + uIEditorFormaPago in 'View\uIEditorFormaPago.pas', + uFormasPagoPlazosController in 'uFormasPagoPlazosController.pas', + uIEditorFormasPago in 'View\uIEditorFormasPago.pas'; + +end. diff --git a/Source/Modulos/Formas de pago/Controller/FormasPago_controller.dproj b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.dproj new file mode 100644 index 00000000..141e5155 --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.dproj @@ -0,0 +1,599 @@ + + + {7f80f8aa-6912-4714-986d-aed73035472b} + FormasPago_controller.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\FormasPago_controller.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FormasPago_controller.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Formas de pago/Controller/FormasPago_controller.gex b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.gex new file mode 100644 index 00000000..9d9fd7d8 --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.gex @@ -0,0 +1,7 @@ +[General] +Name=FormasPago_controller +Project=1 +[Classes] +Count=2 +Class0="TFormasPagoController","TObservador, IFormasPagoController","uFormasPagoController","0","T:\Codigo (Luis Leon)\Modulos\Formas de pago\Controller\uFormasPagoController.pas" +Class1="TFormasPagoPlazosController","TInterfacedObject, IFormasPagoPlazosController","uFormasPagoPlazosController","0","T:\Codigo (Luis Leon)\Modulos\Formas de pago\Controller\uFormasPagoPlazosController.pas" diff --git a/Source/Modulos/Formas de pago/Controller/FormasPago_controller.rc b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Formas de pago/Controller/FormasPago_controller.res b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Formas de pago/Controller/FormasPago_controller.res differ diff --git a/Source/Modulos/Formas de pago/Controller/View/uIEditorFormaPago.pas b/Source/Modulos/Formas de pago/Controller/View/uIEditorFormaPago.pas new file mode 100644 index 00000000..6b4ba068 --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/View/uIEditorFormaPago.pas @@ -0,0 +1,22 @@ +unit uIEditorFormaPago; + +interface + +uses + uBizFormasPago; + +type + IEditorFormaPago = interface + ['{3CDABEA1-F952-4F35-8A31-279FFB7C31E4}'] + function GetFormaPago: IBizFormaPago; + procedure SetFormaPago(const Value: IBizFormaPago); + property FormaPago: IBizFormaPago read GetFormaPago write SetFormaPago; + + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. diff --git a/Source/Modulos/Formas de pago/Controller/View/uIEditorFormasPago.pas b/Source/Modulos/Formas de pago/Controller/View/uIEditorFormasPago.pas new file mode 100644 index 00000000..750d066f --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/View/uIEditorFormasPago.pas @@ -0,0 +1,21 @@ +unit uIEditorFormasPago; + +interface + +uses + uBizFormasPago; + +type + IEditorFormasPago = interface + ['{47A77BA9-3845-469B-A790-81F3C6E0F134}'] + function GetFormasPago: IBizFormaPago; + procedure SetFormasPago(const Value: IBizFormaPago); + property FormasPago: IBizFormaPago read GetFormasPago write SetFormasPago; + function ShowModal : Integer; + procedure Release; + end; + + +implementation + +end. diff --git a/Source/Modulos/Formas de pago/Controller/uFormasPagoController.pas b/Source/Modulos/Formas de pago/Controller/uFormasPagoController.pas new file mode 100644 index 00000000..804915c6 --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/uFormasPagoController.pas @@ -0,0 +1,311 @@ +unit uFormasPagoController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uControllerBase, + uIDataModuleFormasPago, uBizFormasPago, uFormasPagoPlazosController; + +type + IFormasPagoController = interface(IObservador) + ['{94E5F2B6-64C8-4331-B9CB-3ED730478529}'] + function BuscarTodos: IBizFormaPago; + function Buscar(ID: Integer): IBizFormaPago; + procedure VerTodos(AFormasPago: IBizFormaPago); + procedure Ver(AFormaPago: IBizFormaPago); + procedure Anadir(AFormaPago : IBizFormaPago); + function Eliminar(AFormaPago : IBizFormaPago): Boolean; + function Guardar(AFormaPago : IBizFormaPago): Boolean; + procedure DescartarCambios(AFormaPago : IBizFormaPago); + function Localizar(AFormasPago: IBizFormaPago; ADescripcion:String): Boolean; + function DarListaFormasPago: TStringList; + end; + + TFormasPagoController = class(TObservador, IFormasPagoController) + protected + FDataModule : IDataModuleFormasPago; + FPlazosController : IFormasPagoPlazosController; + + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + + function ValidarFormaPago(AFormaPago: IBizFormaPago): Boolean; + procedure AsignarDataModule; + procedure AsignarID(AFormaPago: IBizFormaPago; const IDNuevo: Integer); + + public + constructor Create; virtual; + destructor Destroy; override; + + function Eliminar(AFormaPago : IBizFormaPago): Boolean; + function Guardar(AFormaPago : IBizFormaPago): Boolean; virtual; + procedure DescartarCambios(AFormaPago : IBizFormaPago); virtual; + procedure Anadir(AFormaPago : IBizFormaPago); + function BuscarTodos: IBizFormaPago; + function Buscar(ID: Integer): IBizFormaPago; + procedure VerTodos(AFormasPago: IBizFormaPago); + procedure Ver(AFormaPago: IBizFormaPago); + function Localizar(AFormasPago: IBizFormaPago; ADescripcion:String): Boolean; + function DarListaFormasPago: TStringList; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, schFormasPagoClient_Intf, + uIEditorFormasPago, uIEditorFormaPago, uDataModuleFormasPago, + uDAInterfaces, uDataTableUtils, uDialogUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows; + +{ TFormasPagoController } + +procedure TFormasPagoController.Anadir(AFormaPago: IBizFormaPago); +begin + AFormaPago.Insert; +end; + +procedure TFormasPagoController.AsignarDataModule; +begin + FDataModule := TDataModuleFormasPago.Create(Nil); +end; + +procedure TFormasPagoController.AsignarID(AFormaPago: IBizFormaPago; + const IDNuevo: Integer); +begin + if not Assigned(AFormaPago) then + raise Exception.Create ('Forma de pago no asignada'); + + { Los plazos hay que comprobarlos siempre + tanto en insercin como en modificacin. } + if Assigned(AFormaPago.Plazos) then + FPlazosController.AsignarID(AFormaPago.Plazos, IDNuevo, AFormaPago.EsNuevo); + + if AFormaPago.EsNuevo then + begin + AFormaPago.Edit; + AFormaPago.ID := IDNuevo; + AFormaPago.Post; + end; +end; + +function TFormasPagoController.Buscar(ID: Integer): IBizFormaPago; +begin + ShowHourglassCursor; + try + Result := BuscarTodos; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText(fld_FormasPagoID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +function TFormasPagoController.BuscarTodos: IBizFormaPago; +begin + Result := FDataModule.GetItems; +end; + +constructor TFormasPagoController.Create; +begin + AsignarDataModule; + FPlazosController := TFormasPagoPlazosController.Create; +end; + +function TFormasPagoController.CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +function TFormasPagoController.DarListaFormasPago: TStringList; +var + AFormasPago: IBizFormaPago; +begin + AFormasPago := BuscarTodos; + AFormasPago.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + AFormasPago.DataTable.First; + while not AFormasPago.DataTable.EOF do + begin + Add(AFormasPago.DESCRIPCION); + AFormasPago.DataTable.Next; + end; + end; + finally + AFormasPago := NIL; + end; +end; + +procedure TFormasPagoController.DescartarCambios(AFormaPago: IBizFormaPago); +begin + if not Assigned(AFormaPago) then + raise Exception.Create ('Forma de pago no asignada'); + + ShowHourglassCursor; + try + if (AFormaPago.State in dsEditModes) then + AFormaPago.Cancel; + + AFormaPago.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TFormasPagoController.Destroy; +begin + FDataModule := NIL; + FPlazosController := NIL; + inherited; +end; + +function TFormasPagoController.ValidarFormaPago(AFormaPago: IBizFormaPago): Boolean; +begin + Result := False; + + if not Assigned(AFormaPago) then + raise Exception.Create ('Forma de pago no asignada'); + + if (AFormaPago.DataTable.State in dsEditModes) then + AFormaPago.DataTable.Post; + + if Length(AFormaPago.REFERENCIA) = 0 then + raise Exception.Create('Debe indicar una referencia para esta forma de pago.'); + + if Length(AFormaPago.DESCRIPCION) = 0 then + raise Exception.Create('Debe indicar una descripcin para esta forma de pago.'); + + if not Assigned(AFormaPago.Plazos) + or (AFormaPago.Plazos.RecordCount = 0) then + if (ShowConfirmMessage('La forma de pago no tiene plazos establecidos, por lo tanto no se generarn recibos para facturas con esta forma de pago, desea continuar?', '') = IDNO) then + Exit; + + Result := True; +end; + +procedure TFormasPagoController.Ver(AFormaPago: IBizFormaPago); +var + AEditor : IEditorFormaPago; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorFormaPago', IEditorFormaPago, AEditor); + with AEditor do + FormaPago := AFormaPago; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TFormasPagoController.VerTodos(AFormasPago: IBizFormaPago); +var + AEditor : IEditorFormasPago; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorFormasPago', IEditorFormasPago, AEditor); + with AEditor do + FormasPago := AFormasPago; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +function TFormasPagoController.Eliminar(AFormaPago: IBizFormaPago): Boolean; +begin + Result := False; + + if not Assigned(AFormaPago) then + raise Exception.Create ('Forma de pago no asignada'); + + ShowHourglassCursor; + try + if (AFormaPago.State in dsEditModes) then + AFormaPago.Cancel; + + AFormaPago.Delete; + AFormaPago.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +procedure TFormasPagoController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +begin + inherited; +// +end; + +function TFormasPagoController.Guardar(AFormaPago: IBizFormaPago): Boolean; +var + NuevoID : Integer; +begin + Result := False; + + if ValidarFormaPago(AFormaPago) then + begin + ShowHourglassCursor; + try + if AFormaPago.EsNuevo then + NuevoID := FDataModule.GetNextID(AFormaPago.DataTable.LogicalName) + else + NuevoID := AFormaPago.ID; + + AsignarID(AFormaPago, NuevoID); + AFormaPago.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TFormasPagoController.Localizar(AFormasPago: IBizFormaPago; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with AFormasPago.DataTable do + begin + DisableControls; + First; + if not Locate(fld_FormasPagoDESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Formas de pago/Controller/uFormasPagoPlazosController.pas b/Source/Modulos/Formas de pago/Controller/uFormasPagoPlazosController.pas new file mode 100644 index 00000000..ddcb9c64 --- /dev/null +++ b/Source/Modulos/Formas de pago/Controller/uFormasPagoPlazosController.pas @@ -0,0 +1,113 @@ +unit uFormasPagoPlazosController; + +interface + +uses + Windows, Forms, Classes, Controls, Contnrs, SysUtils, uDADataTable, + uBizFormasPago, uBizFormasPagoPlazos, uIDataModuleFormasPago; + +type + IFormasPagoPlazosController = interface + ['{3FCE2A31-9783-45F9-96D6-1157165AB8DB}'] + procedure AsignarID(ADetalles: IBizFormaPagoPlazos; IDCabecera: Integer; AEsNuevo:Boolean); + end; + + TFormasPagoPlazosController = class(TInterfacedObject, IFormasPagoPlazosController) + private + FDataModule : IDataModuleFormasPago; + public + procedure AsignarID(ADetalles: IBizFormaPagoPlazos; IDCabecera: Integer; AEsNuevo:Boolean); + constructor Create; virtual; + destructor Destroy; override; + end; + +implementation + +{ TFormasPagoPlazosController } + +uses + uDataModuleFormasPago, uEditorRegistryUtils, + cxControls, schFormasPagoClient_Intf; + +procedure TFormasPagoPlazosController.AsignarID( + ADetalles: IBizFormaPagoPlazos; IDCabecera: Integer; + AEsNuevo: Boolean); +begin + with ADetalles do + begin + DataTable.DisableControls; + try + if not DataTable.Active then + DataTable.Active := True; + +// AuxPosicion := POSICION; + + { OJO !!!! + Para asignar el ID en los detalles hay + que tener en cuenta una cosa: + Si se cambia el ID, ese detalle ya no + pertenece a esa cabecera porque ya no se + cumple la condicin de la relacion: + Master.ID = Detail.ID_PRESUPUESTO. + + Por esa razn no sirve hacer un recorrido + desde el principio hasta el final porque + las detalles van desapareciendo segn asignamos + el valor al campo ID y nos mueve aleatoriamente + la posicin del registro actual. + + Es mejor hacer un bucle sencillo hasta que + "se gasten" todos los detalles. Cuando el + RecordCount llegue a 0 quiere decir que hemos + tratado todos los detalles. + + El bucle cambia en el caso de ser llamada esta funcion desde modificar + un presupuesto ya que en ese caso si que hay que hacer un recorrido + total de las tuplas de detalle. + } + + if AEsNuevo then + begin + while RecordCount > 0 do + begin + DataTable.First; + Edit; + ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_FORMA_PAGO := IDCabecera; + Post + end + end + else + begin + DataTable.First; + while not DataTable.EOF do + begin + if ADetalles.EsNuevo then + begin + Edit; + ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_FORMA_PAGO := IDCabecera; + Post + end; + DataTable.Next + end; + end; + finally + DataTable.EnableControls; + end; + end; +end; + +constructor TFormasPagoPlazosController.Create; +begin + inherited; + FDataModule := TDataModuleFormasPago.Create(Nil); +end; + +destructor TFormasPagoPlazosController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + +end. diff --git a/Source/Modulos/Formas de pago/Data/FormasPago_data.bdsproj b/Source/Modulos/Formas de pago/Data/FormasPago_data.bdsproj new file mode 100644 index 00000000..62fa68dc --- /dev/null +++ b/Source/Modulos/Formas de pago/Data/FormasPago_data.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FormasPago_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Formas de pago/Data/FormasPago_data.dpk b/Source/Modulos/Formas de pago/Data/FormasPago_data.dpk new file mode 100644 index 00000000..81db00df --- /dev/null +++ b/Source/Modulos/Formas de pago/Data/FormasPago_data.dpk @@ -0,0 +1,42 @@ +package FormasPago_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + cxLibraryD10, + dxThemeD10, + vcl, + dsnap, + vcldb, + adortl, + Base, + FormasPago_model; + +contains + uDataModuleFormasPago in 'uDataModuleFormasPago.pas' {DataModuleFormasPago}; + +end. diff --git a/Source/Modulos/Formas de pago/Data/FormasPago_data.dproj b/Source/Modulos/Formas de pago/Data/FormasPago_data.dproj new file mode 100644 index 00000000..9cb136b2 --- /dev/null +++ b/Source/Modulos/Formas de pago/Data/FormasPago_data.dproj @@ -0,0 +1,589 @@ + + + {c8118762-09b6-432f-ba26-058fa36c39d9} + FormasPago_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\FormasPago_data.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FormasPago_data.dpk + + + + + + + MainSource + + + + + + + + + + + + +
DataModuleFormasPago
+
+
+ +
+ + diff --git a/Source/Modulos/Formas de pago/Data/FormasPago_data.rc b/Source/Modulos/Formas de pago/Data/FormasPago_data.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Formas de pago/Data/FormasPago_data.res b/Source/Modulos/Formas de pago/Data/FormasPago_data.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Formas de pago/Data/FormasPago_data.res differ diff --git a/Source/Modulos/Formas de pago/Data/uDataModuleFormasPago.dfm b/Source/Modulos/Formas de pago/Data/uDataModuleFormasPago.dfm new file mode 100644 index 00000000..cc9e480e --- /dev/null +++ b/Source/Modulos/Formas de pago/Data/uDataModuleFormasPago.dfm @@ -0,0 +1,193 @@ +object DataModuleFormasPago: TDataModuleFormasPago + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 414 + Width = 518 + object RORemoteService: TRORemoteService + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + ServiceName = 'srvFormasPago' + Left = 48 + Top = 24 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteService = LoginRemoteService + Params = <> + Left = 48 + Top = 160 + end + object LoginRemoteService: TRORemoteService + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + ServiceName = 'srvLogin' + Left = 48 + Top = 216 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + ServerLocators = <> + DispatchOptions = [] + Left = 48 + Top = 272 + end + object ROBinMessage1: TROBinMessage + Left = 48 + Top = 324 + end + object tbl_FormasPago: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'FormasPago_ID' + InPrimaryKey = True + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + DictionaryEntry = 'FormasPago_REFERENCIA' + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + DisplayLabel = 'Descripci'#243'n' + DictionaryEntry = 'FormasPago_DESCRIPCION' + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + DisplayLabel = 'Titular' + DictionaryEntry = 'FormasPago_TITULAR' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'd. Entidad' + DictionaryEntry = 'FormasPago_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'd. Sucusal' + DictionaryEntry = 'FormasPago_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DictionaryEntry = 'FormasPago_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'd. Cuenta' + DictionaryEntry = 'FormasPago_CUENTA' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_FormasPago + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'FormasPago' + IndexDefs = <> + Left = 168 + Top = 88 + end + object ds_FormasPago: TDADataSource + DataSet = tbl_FormasPago.Dataset + DataTable = tbl_FormasPago + Left = 168 + Top = 24 + end + object tbl_FormasPagoPlazos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + DisplayLabel = 'FormasPagoPlazos_ID' + DictionaryEntry = 'FormasPagoPlazos_ID' + InPrimaryKey = True + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + DisplayLabel = 'FormasPagoPlazos_ID_FORMA_PAGO' + DictionaryEntry = 'FormasPagoPlazos_ID_FORMA_PAGO' + end + item + Name = 'NUM_DIAS' + DataType = datInteger + DisplayLabel = 'Num. d'#237'as' + DictionaryEntry = 'FormasPagoPlazos_NUM_DIAS' + end + item + Name = 'PORCENTAJE' + DataType = datFloat + DisplayLabel = '% aplazado' + DisplayFormat = ',0.00 %;-,0.00 %' + Alignment = taRightJustify + DictionaryEntry = 'FormasPagoPlazos_PORCENTAJE' + end> + Params = < + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + MasterParamsMappings.Strings = ( + 'ID_FORMA_PAGO=ID') + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_FormasPagoPlazos + MasterSource = ds_FormasPago + MasterFields = 'ID' + DetailFields = 'ID_FORMA_PAGO' + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'FormasPagoPlazos' + IndexDefs = <> + Left = 280 + Top = 88 + end + object ds_FormasPagoPlazos: TDADataSource + DataSet = tbl_FormasPagoPlazos.Dataset + DataTable = tbl_FormasPagoPlazos + Left = 280 + Top = 24 + end + object DataStreamer: TDABinDataStreamer + Left = 48 + Top = 84 + end + object rda_FormasPago: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 403 + Top = 23 + end + object rda_FormasPagoPlazos: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DataStreamer + Left = 403 + Top = 87 + end +end diff --git a/Source/Modulos/Formas de pago/Data/uDataModuleFormasPago.pas b/Source/Modulos/Formas de pago/Data/uDataModuleFormasPago.pas new file mode 100644 index 00000000..1106c59e --- /dev/null +++ b/Source/Modulos/Formas de pago/Data/uDataModuleFormasPago.pas @@ -0,0 +1,119 @@ +unit uDataModuleFormasPago; + +interface + +uses + SysUtils, Classes, DB, uDAClientDataModule, uDADataTable, uDABINAdapter, + uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uDADesigntimeCall, + uIDataModuleFormasPago, uBizFormasPago, uBizFormasPagoPlazos, + uDARemoteDataAdapter, uDADataStreamer, uDAInterfaces, uRODynamicRequest; + +type + TDataModuleFormasPago = class(TDAClientDataModule, IDataModuleFormasPago) + RORemoteService: TRORemoteService; + DADesigntimeCall1: TDADesigntimeCall; + LoginRemoteService: TRORemoteService; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + ROBinMessage1: TROBinMessage; + tbl_FormasPago: TDACDSDataTable; + ds_FormasPago: TDADataSource; + tbl_FormasPagoPlazos: TDACDSDataTable; + ds_FormasPagoPlazos: TDADataSource; + DataStreamer: TDABinDataStreamer; + rda_FormasPago: TDARemoteDataAdapter; + rda_FormasPagoPlazos: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + protected + function DarNombreGenerador(DataSetName: String): String; virtual; + function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; + function _GetPlazos: IBizFormaPagoPlazos; + public + function GetItems: IBizFormaPago; + function GetNextID(const DataSetName : String) : Integer; + end; + +implementation + +{$R *.DFM} + +uses + FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, uDAInterfaces, + schFormasPagoClient_Intf; + +{ TdmAlmacens } + +procedure TDataModuleFormasPago.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleFormasPago.DarNombreGenerador(DataSetName: String): String; +begin + Result := ''; + if DataSetName = nme_FormasPago then + Result := 'GEN_FORMAS_PAGO_ID' + else + if DataSetName = nme_FormasPagoPlazos then + Result := 'GEN_FORMAS_PAGO_PLAZOS_ID'; +end; + +function TDataModuleFormasPago.GetNextID(const DataSetName: String): Integer; +var + aGeneratorName : String; +begin + aGeneratorName := DarNombreGenerador(DataSetName); + Result := (RORemoteService as IsrvFormasPago).GetNextAutoInc(aGeneratorName) +end; + +function TDataModuleFormasPago._CloneDataTable(const ADataTable : TDACDSDataTable): TDACDSDataTable; +begin + Result := NIL; + + if not Assigned(ADataTable) then + raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); + + Result := TDACDSDataTable.Create(NIL); + CloneDataTable(ADataTable, Result); +end; + +function TDataModuleFormasPago._GetPlazos: IBizFormaPagoPlazos; +var + APlazos : TDACDSDataTable; +begin + ShowHourglassCursor; + try + APlazos := _CloneDataTable(tbl_FormasPagoPlazos); + with APlazos do + begin + BusinessRulesID := BIZ_CLIENT_FORMAPAGOPLAZOS; + DetailOptions := DetailOptions - + [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (APlazos as IBizFormaPagoPlazos); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleFormasPago.GetItems: IBizFormaPago; +var + AFormaPago : TDACDSDataTable; +begin + ShowHourglassCursor; + try + AFormaPago := _CloneDataTable(tbl_FormasPago); + AFormaPago.BusinessRulesID := BIZ_CLIENT_FORMAPAGO; + with TBizFormaPago(AFormaPago.BusinessEventsObj) do + Plazos := _GetPlazos; + + Result := (AFormaPago as IBizFormaPago); + finally + HideHourglassCursor; + end; +end; + + +end. diff --git a/Source/Modulos/Formas de pago/FormasPago_Group.bdsgroup b/Source/Modulos/Formas de pago/FormasPago_Group.bdsgroup new file mode 100644 index 00000000..a3459728 --- /dev/null +++ b/Source/Modulos/Formas de pago/FormasPago_Group.bdsgroup @@ -0,0 +1,24 @@ + + + + + + + + + + + ..\..\Base\Base.bdsproj + ..\..\Base\GUIBase\GUIBase.bdsproj + ..\..\Base\Usuarios\Usuarios.bdsproj + Model\FormasPago_model.bdsproj + Data\FormasPago_data.bdsproj + Controller\FormasPago_controller.bdsproj + Views\FormasPago_view.bdsproj + Plugin\FormasPago_plugin.bdsproj + Base.bpl GUIBase.bpl Usuarios.bpl FormasPago_model.bpl FormasPago_data.bpl FormasPago_controller.bpl FormasPago_view.bpl FormasPago_plugin.bpl + + + + diff --git a/Source/Modulos/Formas de pago/Model/Data/uIDataModuleFormasPago.pas b/Source/Modulos/Formas de pago/Model/Data/uIDataModuleFormasPago.pas new file mode 100644 index 00000000..3e2ce2ce --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/Data/uIDataModuleFormasPago.pas @@ -0,0 +1,17 @@ +unit uIDataModuleFormasPago; + +interface + +uses + uBizFormasPago; + +type + IDataModuleFormasPago = interface + ['{CC6A63E1-2AF2-40E5-B6DC-46CC1549AA56}'] + function GetItems: IBizFormaPago; + function GetNextID(const DataSetName : String) : Integer; + end; + +implementation + +end. diff --git a/Source/Modulos/Formas de pago/Model/FormasPago_model.bdsproj b/Source/Modulos/Formas de pago/Model/FormasPago_model.bdsproj new file mode 100644 index 00000000..57c31415 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/FormasPago_model.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FormasPago_model.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Formas de pago/Model/FormasPago_model.dpk b/Source/Modulos/Formas de pago/Model/FormasPago_model.dpk new file mode 100644 index 00000000..31b37667 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/FormasPago_model.dpk @@ -0,0 +1,44 @@ +package FormasPago_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dsnap, + dbrtl, + vcldb, + vcl, + adortl, + Base, + DataAbstract_D10; + +contains + uIDataModuleFormasPago in 'Data\uIDataModuleFormasPago.pas', + schFormasPagoClient_Intf in 'schFormasPagoClient_Intf.pas', + schFormasPagoServer_Intf in 'schFormasPagoServer_Intf.pas', + uBizFormasPago in 'uBizFormasPago.pas', + uBizFormasPagoPlazos in 'uBizFormasPagoPlazos.pas'; + +end. diff --git a/Source/Modulos/Formas de pago/Model/FormasPago_model.dproj b/Source/Modulos/Formas de pago/Model/FormasPago_model.dproj new file mode 100644 index 00000000..7840db24 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/FormasPago_model.dproj @@ -0,0 +1,589 @@ + + + {73acd39c-b2f0-49b7-9acf-10945bbac8c1} + FormasPago_model.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\FormasPago_model.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FormasPago_model.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Formas de pago/Model/FormasPago_model.rc b/Source/Modulos/Formas de pago/Model/FormasPago_model.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Formas de pago/Model/FormasPago_model.res b/Source/Modulos/Formas de pago/Model/FormasPago_model.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Formas de pago/Model/FormasPago_model.res differ diff --git a/Source/Modulos/Formas de pago/Model/schFormasPagoClient_Intf.pas b/Source/Modulos/Formas de pago/Model/schFormasPagoClient_Intf.pas new file mode 100644 index 00000000..fe0682b4 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/schFormasPagoClient_Intf.pas @@ -0,0 +1,322 @@ +unit schFormasPagoClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_FormasPago = '{75A0F4CB-C9F1-4725-BB8F-6B95A8B79BFF}'; + RID_FormasPagoPlazos = '{F15326B8-E938-4226-9647-954628B5A863}'; + + { Data table names } + nme_FormasPago = 'FormasPago'; + nme_FormasPagoPlazos = 'FormasPagoPlazos'; + + { FormasPago fields } + fld_FormasPagoID = 'ID'; + fld_FormasPagoREFERENCIA = 'REFERENCIA'; + fld_FormasPagoDESCRIPCION = 'DESCRIPCION'; + fld_FormasPagoTITULAR = 'TITULAR'; + fld_FormasPagoENTIDAD = 'ENTIDAD'; + fld_FormasPagoSUCURSAL = 'SUCURSAL'; + fld_FormasPagoDC = 'DC'; + fld_FormasPagoCUENTA = 'CUENTA'; + + { FormasPago field indexes } + idx_FormasPagoID = 0; + idx_FormasPagoREFERENCIA = 1; + idx_FormasPagoDESCRIPCION = 2; + idx_FormasPagoTITULAR = 3; + idx_FormasPagoENTIDAD = 4; + idx_FormasPagoSUCURSAL = 5; + idx_FormasPagoDC = 6; + idx_FormasPagoCUENTA = 7; + + { FormasPagoPlazos fields } + fld_FormasPagoPlazosID = 'ID'; + fld_FormasPagoPlazosID_FORMA_PAGO = 'ID_FORMA_PAGO'; + fld_FormasPagoPlazosNUM_DIAS = 'NUM_DIAS'; + fld_FormasPagoPlazosPORCENTAJE = 'PORCENTAJE'; + + { FormasPagoPlazos field indexes } + idx_FormasPagoPlazosID = 0; + idx_FormasPagoPlazosID_FORMA_PAGO = 1; + idx_FormasPagoPlazosNUM_DIAS = 2; + idx_FormasPagoPlazosPORCENTAJE = 3; + +type + { IFormasPago } + IFormasPago = interface(IDAStronglyTypedDataTable) + ['{D4A90295-67F2-441C-B84F-F17F80B1B8B3}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetTITULARValue: String; + procedure SetTITULARValue(const aValue: String); + function GetENTIDADValue: String; + procedure SetENTIDADValue(const aValue: String); + function GetSUCURSALValue: String; + procedure SetSUCURSALValue(const aValue: String); + function GetDCValue: String; + procedure SetDCValue(const aValue: String); + function GetCUENTAValue: String; + procedure SetCUENTAValue(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property TITULAR: String read GetTITULARValue write SetTITULARValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + end; + + { TFormasPagoDataTableRules } + TFormasPagoDataTableRules = class(TDADataTableRules, IFormasPago) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetTITULARValue: String; virtual; + procedure SetTITULARValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property TITULAR: String read GetTITULARValue write SetTITULARValue; + property ENTIDAD: String read GetENTIDADValue write SetENTIDADValue; + property SUCURSAL: String read GetSUCURSALValue write SetSUCURSALValue; + property DC: String read GetDCValue write SetDCValue; + property CUENTA: String read GetCUENTAValue write SetCUENTAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IFormasPagoPlazos } + IFormasPagoPlazos = interface(IDAStronglyTypedDataTable) + ['{4E56EE2D-C4D1-41A3-BFA7-9CF1185C257A}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetID_FORMA_PAGOValue: Integer; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); + function GetNUM_DIASValue: Integer; + procedure SetNUM_DIASValue(const aValue: Integer); + function GetPORCENTAJEValue: Float; + procedure SetPORCENTAJEValue(const aValue: Float); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property NUM_DIAS: Integer read GetNUM_DIASValue write SetNUM_DIASValue; + property PORCENTAJE: Float read GetPORCENTAJEValue write SetPORCENTAJEValue; + end; + + { TFormasPagoPlazosDataTableRules } + TFormasPagoPlazosDataTableRules = class(TDADataTableRules, IFormasPagoPlazos) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_FORMA_PAGOValue: Integer; virtual; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; + function GetNUM_DIASValue: Integer; virtual; + procedure SetNUM_DIASValue(const aValue: Integer); virtual; + function GetPORCENTAJEValue: Float; virtual; + procedure SetPORCENTAJEValue(const aValue: Float); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property ID_FORMA_PAGO: Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property NUM_DIAS: Integer read GetNUM_DIASValue write SetNUM_DIASValue; + property PORCENTAJE: Float read GetPORCENTAJEValue write SetPORCENTAJEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TFormasPagoDataTableRules } +constructor TFormasPagoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFormasPagoDataTableRules.Destroy; +begin + inherited; +end; + +function TFormasPagoDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_FormasPagoID].AsInteger; +end; + +procedure TFormasPagoDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_FormasPagoID].AsInteger := aValue; +end; + +function TFormasPagoDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_FormasPagoREFERENCIA].AsString; +end; + +procedure TFormasPagoDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoREFERENCIA].AsString := aValue; +end; + +function TFormasPagoDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_FormasPagoDESCRIPCION].AsString; +end; + +procedure TFormasPagoDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoDESCRIPCION].AsString := aValue; +end; + +function TFormasPagoDataTableRules.GetTITULARValue: String; +begin + result := DataTable.Fields[idx_FormasPagoTITULAR].AsString; +end; + +procedure TFormasPagoDataTableRules.SetTITULARValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoTITULAR].AsString := aValue; +end; + +function TFormasPagoDataTableRules.GetENTIDADValue: String; +begin + result := DataTable.Fields[idx_FormasPagoENTIDAD].AsString; +end; + +procedure TFormasPagoDataTableRules.SetENTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoENTIDAD].AsString := aValue; +end; + +function TFormasPagoDataTableRules.GetSUCURSALValue: String; +begin + result := DataTable.Fields[idx_FormasPagoSUCURSAL].AsString; +end; + +procedure TFormasPagoDataTableRules.SetSUCURSALValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoSUCURSAL].AsString := aValue; +end; + +function TFormasPagoDataTableRules.GetDCValue: String; +begin + result := DataTable.Fields[idx_FormasPagoDC].AsString; +end; + +procedure TFormasPagoDataTableRules.SetDCValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoDC].AsString := aValue; +end; + +function TFormasPagoDataTableRules.GetCUENTAValue: String; +begin + result := DataTable.Fields[idx_FormasPagoCUENTA].AsString; +end; + +procedure TFormasPagoDataTableRules.SetCUENTAValue(const aValue: String); +begin + DataTable.Fields[idx_FormasPagoCUENTA].AsString := aValue; +end; + + +{ TFormasPagoPlazosDataTableRules } +constructor TFormasPagoPlazosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TFormasPagoPlazosDataTableRules.Destroy; +begin + inherited; +end; + +function TFormasPagoPlazosDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_FormasPagoPlazosID].AsInteger; +end; + +procedure TFormasPagoPlazosDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_FormasPagoPlazosID].AsInteger := aValue; +end; + +function TFormasPagoPlazosDataTableRules.GetID_FORMA_PAGOValue: Integer; +begin + result := DataTable.Fields[idx_FormasPagoPlazosID_FORMA_PAGO].AsInteger; +end; + +procedure TFormasPagoPlazosDataTableRules.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + DataTable.Fields[idx_FormasPagoPlazosID_FORMA_PAGO].AsInteger := aValue; +end; + +function TFormasPagoPlazosDataTableRules.GetNUM_DIASValue: Integer; +begin + result := DataTable.Fields[idx_FormasPagoPlazosNUM_DIAS].AsInteger; +end; + +procedure TFormasPagoPlazosDataTableRules.SetNUM_DIASValue(const aValue: Integer); +begin + DataTable.Fields[idx_FormasPagoPlazosNUM_DIAS].AsInteger := aValue; +end; + +function TFormasPagoPlazosDataTableRules.GetPORCENTAJEValue: Float; +begin + result := DataTable.Fields[idx_FormasPagoPlazosPORCENTAJE].AsFloat; +end; + +procedure TFormasPagoPlazosDataTableRules.SetPORCENTAJEValue(const aValue: Float); +begin + DataTable.Fields[idx_FormasPagoPlazosPORCENTAJE].AsFloat := aValue; +end; + + +initialization + RegisterDataTableRules(RID_FormasPago, TFormasPagoDataTableRules); + RegisterDataTableRules(RID_FormasPagoPlazos, TFormasPagoPlazosDataTableRules); + +end. diff --git a/Source/Modulos/Formas de pago/Model/schFormasPagoServer_Intf.pas b/Source/Modulos/Formas de pago/Model/schFormasPagoServer_Intf.pas new file mode 100644 index 00000000..2b33d2d1 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/schFormasPagoServer_Intf.pas @@ -0,0 +1,357 @@ +unit schFormasPagoServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schFormasPagoClient_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_FormasPagoDelta = '{D0ECD138-153C-48AE-A90B-3C1CA44928CA}'; + RID_FormasPagoPlazosDelta = '{729F444F-315A-41F5-9BB1-75B36B1F4CA1}'; + +type + { IFormasPagoDelta } + IFormasPagoDelta = interface(IFormasPago) + ['{D0ECD138-153C-48AE-A90B-3C1CA44928CA}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldTITULARValue : String; + function GetOldENTIDADValue : String; + function GetOldSUCURSALValue : String; + function GetOldDCValue : String; + function GetOldCUENTAValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldTITULAR : String read GetOldTITULARValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property OldDC : String read GetOldDCValue; + property OldCUENTA : String read GetOldCUENTAValue; + end; + + { TFormasPagoBusinessProcessorRules } + TFormasPagoBusinessProcessorRules = class(TDABusinessProcessorRules, IFormasPago, IFormasPagoDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetTITULARValue: String; virtual; + function GetOldTITULARValue: String; virtual; + procedure SetTITULARValue(const aValue: String); virtual; + function GetENTIDADValue: String; virtual; + function GetOldENTIDADValue: String; virtual; + procedure SetENTIDADValue(const aValue: String); virtual; + function GetSUCURSALValue: String; virtual; + function GetOldSUCURSALValue: String; virtual; + procedure SetSUCURSALValue(const aValue: String); virtual; + function GetDCValue: String; virtual; + function GetOldDCValue: String; virtual; + procedure SetDCValue(const aValue: String); virtual; + function GetCUENTAValue: String; virtual; + function GetOldCUENTAValue: String; virtual; + procedure SetCUENTAValue(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property TITULAR : String read GetTITULARValue write SetTITULARValue; + property OldTITULAR : String read GetOldTITULARValue; + property ENTIDAD : String read GetENTIDADValue write SetENTIDADValue; + property OldENTIDAD : String read GetOldENTIDADValue; + property SUCURSAL : String read GetSUCURSALValue write SetSUCURSALValue; + property OldSUCURSAL : String read GetOldSUCURSALValue; + property DC : String read GetDCValue write SetDCValue; + property OldDC : String read GetOldDCValue; + property CUENTA : String read GetCUENTAValue write SetCUENTAValue; + property OldCUENTA : String read GetOldCUENTAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IFormasPagoPlazosDelta } + IFormasPagoPlazosDelta = interface(IFormasPagoPlazos) + ['{729F444F-315A-41F5-9BB1-75B36B1F4CA1}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_FORMA_PAGOValue : Integer; + function GetOldNUM_DIASValue : Integer; + function GetOldPORCENTAJEValue : Float; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property OldNUM_DIAS : Integer read GetOldNUM_DIASValue; + property OldPORCENTAJE : Float read GetOldPORCENTAJEValue; + end; + + { TFormasPagoPlazosBusinessProcessorRules } + TFormasPagoPlazosBusinessProcessorRules = class(TDABusinessProcessorRules, IFormasPagoPlazos, IFormasPagoPlazosDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetID_FORMA_PAGOValue: Integer; virtual; + function GetOldID_FORMA_PAGOValue: Integer; virtual; + procedure SetID_FORMA_PAGOValue(const aValue: Integer); virtual; + function GetNUM_DIASValue: Integer; virtual; + function GetOldNUM_DIASValue: Integer; virtual; + procedure SetNUM_DIASValue(const aValue: Integer); virtual; + function GetPORCENTAJEValue: Float; virtual; + function GetOldPORCENTAJEValue: Float; virtual; + procedure SetPORCENTAJEValue(const aValue: Float); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property ID_FORMA_PAGO : Integer read GetID_FORMA_PAGOValue write SetID_FORMA_PAGOValue; + property OldID_FORMA_PAGO : Integer read GetOldID_FORMA_PAGOValue; + property NUM_DIAS : Integer read GetNUM_DIASValue write SetNUM_DIASValue; + property OldNUM_DIAS : Integer read GetOldNUM_DIASValue; + property PORCENTAJE : Float read GetPORCENTAJEValue write SetPORCENTAJEValue; + property OldPORCENTAJE : Float read GetOldPORCENTAJEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TFormasPagoBusinessProcessorRules } +constructor TFormasPagoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFormasPagoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFormasPagoBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoID]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoID]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoID] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoREFERENCIA]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoREFERENCIA]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoREFERENCIA] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoDESCRIPCION]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoDESCRIPCION]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoDESCRIPCION] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetTITULARValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoTITULAR]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldTITULARValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoTITULAR]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetTITULARValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoTITULAR] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoENTIDAD]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldENTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoENTIDAD]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetENTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoENTIDAD] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoSUCURSAL]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldSUCURSALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoSUCURSAL]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetSUCURSALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoSUCURSAL] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetDCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoDC]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldDCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoDC]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetDCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoDC] := aValue; +end; + +function TFormasPagoBusinessProcessorRules.GetCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoCUENTA]; +end; + +function TFormasPagoBusinessProcessorRules.GetOldCUENTAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoCUENTA]; +end; + +procedure TFormasPagoBusinessProcessorRules.SetCUENTAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoCUENTA] := aValue; +end; + + +{ TFormasPagoPlazosBusinessProcessorRules } +constructor TFormasPagoPlazosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TFormasPagoPlazosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosID]; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoPlazosID]; +end; + +procedure TFormasPagoPlazosBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosID] := aValue; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetID_FORMA_PAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosID_FORMA_PAGO]; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetOldID_FORMA_PAGOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoPlazosID_FORMA_PAGO]; +end; + +procedure TFormasPagoPlazosBusinessProcessorRules.SetID_FORMA_PAGOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosID_FORMA_PAGO] := aValue; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetNUM_DIASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosNUM_DIAS]; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetOldNUM_DIASValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoPlazosNUM_DIAS]; +end; + +procedure TFormasPagoPlazosBusinessProcessorRules.SetNUM_DIASValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosNUM_DIAS] := aValue; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetPORCENTAJEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosPORCENTAJE]; +end; + +function TFormasPagoPlazosBusinessProcessorRules.GetOldPORCENTAJEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_FormasPagoPlazosPORCENTAJE]; +end; + +procedure TFormasPagoPlazosBusinessProcessorRules.SetPORCENTAJEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_FormasPagoPlazosPORCENTAJE] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_FormasPagoDelta, TFormasPagoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_FormasPagoPlazosDelta, TFormasPagoPlazosBusinessProcessorRules); + +end. diff --git a/Source/Modulos/Formas de pago/Model/uBizFormasPago.pas b/Source/Modulos/Formas de pago/Model/uBizFormasPago.pas new file mode 100644 index 00000000..b85e2357 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/uBizFormasPago.pas @@ -0,0 +1,95 @@ +unit uBizFormasPago; + +interface + +uses + uDAInterfaces, uDADataTable, schFormasPagoClient_Intf, + uBizFormasPagoPlazos; + +const + BIZ_CLIENT_FORMAPAGO = 'Client.FormaPago'; + +type + IBizFormaPago = interface(IFormasPago) + ['{F79E3238-1E0D-4FB6-9AF7-E5703619B067}'] + function EsNuevo : Boolean; + + function GetPlazos: IBizFormaPagoPlazos; + procedure SetPlazos(const Value: IBizFormaPagoPlazos); + property Plazos : IBizFormaPagoPlazos read GetPlazos + write SetPlazos; + end; + + TBizFormaPago = class(TFormasPagoDataTableRules, IBizFormaPago) + protected + FPlazos : IBizFormaPagoPlazos; + FPlazosLink : TDADataSource; + procedure OnNewRecord(Sender: TDADataTable); override; + function GetPlazos: IBizFormaPagoPlazos; + procedure SetPlazos(const Value: IBizFormaPagoPlazos); + public + procedure IniciarValoresFormaPagoNueva; + function EsNuevo : Boolean; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + property Plazos : IBizFormaPagoPlazos read GetPlazos + write SetPlazos; + end; + +implementation + +{ TBizFormaPago } + +uses + SysUtils, uDataTableUtils; + +constructor TBizFormaPago.Create(aDataTable: TDADataTable); +begin + inherited; + FPlazos := NIL; + FPlazosLink := TDADataSource.Create(NIL); + FPlazosLink.DataTable := aDataTable; +end; + +destructor TBizFormaPago.Destroy; +begin + FPlazos := NIL; + FreeAndNIL(FPlazosLink); + inherited; +end; + +function TBizFormaPago.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +function TBizFormaPago.GetPlazos: IBizFormaPagoPlazos; +begin + Result := FPlazos; +end; + +procedure TBizFormaPago.IniciarValoresFormaPagoNueva; +begin + // +end; + +procedure TBizFormaPago.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresFormaPagoNueva; +end; + +procedure TBizFormaPago.SetPlazos(const Value: IBizFormaPagoPlazos); +begin + FPlazos := Value; + EnlazarMaestroDetalle(FPlazosLink, FPlazos); +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_FORMAPAGO, TBizFormaPago); + +finalization + +end. + diff --git a/Source/Modulos/Formas de pago/Model/uBizFormasPagoPlazos.pas b/Source/Modulos/Formas de pago/Model/uBizFormasPagoPlazos.pas new file mode 100644 index 00000000..01cedd34 --- /dev/null +++ b/Source/Modulos/Formas de pago/Model/uBizFormasPagoPlazos.pas @@ -0,0 +1,67 @@ +unit uBizFormasPagoPlazos; + +interface + +uses + uDAInterfaces, uDADataTable, schFormasPagoClient_Intf; + +const + BIZ_CLIENT_FORMAPAGOPLAZOS = 'Client.FormaPagoPlazos'; + +type + IBizFormaPagoPlazos = interface(IFormasPagoPlazos) + ['{F90A56C5-F63E-4501-8855-B3967CF15A8A}'] + function EsNuevo : Boolean; + end; + + TBizFormasPagoPlazos = class(TFormasPagoPlazosDataTableRules, IBizFormaPagoPlazos) + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + public + procedure IniciarValoresPlazoNuevo; + function EsNuevo : Boolean; + end; + + +implementation + +{ TBizFormasPagoPlazos } + +uses + Dialogs, DB; + +procedure TBizFormasPagoPlazos.BeforeInsert(Sender: TDADataTable); +var + AMasterTable : TDADataTable; +begin + inherited; + AMasterTable := DataTable.GetMasterDataTable; + if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then + AMasterTable.Post; +end; + +function TBizFormasPagoPlazos.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +procedure TBizFormasPagoPlazos.IniciarValoresPlazoNuevo; +begin + // +end; + +procedure TBizFormasPagoPlazos.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresPlazoNuevo +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_FORMAPAGOPLAZOS, TBizFormasPagoPlazos); + +finalization + +end. + diff --git a/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.bdsproj b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.bdsproj new file mode 100644 index 00000000..3bf0833f --- /dev/null +++ b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FormasPago_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.dpk b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.dpk new file mode 100644 index 00000000..baecb589 --- /dev/null +++ b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.dpk @@ -0,0 +1,42 @@ +package FormasPago_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + FormasPago_model, + FormasPago_controller, + FormasPago_view, + PluginSDK_D10R; + +contains + uPluginFormasPago in 'uPluginFormasPago.pas'; + +end. diff --git a/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.dproj b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.dproj new file mode 100644 index 00000000..241e0651 --- /dev/null +++ b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.dproj @@ -0,0 +1,587 @@ + + + {82e36812-58c4-491b-b463-6b951e95da51} + FormasPago_plugin.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\FormasPago_plugin.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FormasPago_plugin.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.rc b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.res b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Formas de pago/Plugin/FormasPago_plugin.res differ diff --git a/Source/Modulos/Formas de pago/Plugin/uPluginFormasPago.dfm b/Source/Modulos/Formas de pago/Plugin/uPluginFormasPago.dfm new file mode 100644 index 00000000..5b7f3a8e --- /dev/null +++ b/Source/Modulos/Formas de pago/Plugin/uPluginFormasPago.dfm @@ -0,0 +1,81 @@ +object PluginFormasPago: TPluginFormasPago + OldCreateOrder = True + DefaultAction = actFormasPago + Description = 'FormasPago' + ModuleMenu = MainMenu + ModuleName = 'FormasPago' + SmallImages = SmallImages + LargeImages = SmallImages + Author = 'Rodax Software' + Version = '1.0.0' + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = <> + Left = 232 + Top = 16 + end + object ModuleActionList: TActionList + Images = SmallImages + Left = 40 + Top = 72 + object actFormasPago: TAction + Category = 'FormasPago' + Caption = 'Formas de pago' + ImageIndex = 0 + OnExecute = actFormasPagoExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Caption = 'Empresa' + object N1: TMenuItem + Tag = 18990 + Caption = '-' + end + object FormasPago1: TMenuItem + Tag = 19001 + Action = actFormasPago + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6 + B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77 + EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5 + E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D + 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D + C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6 + 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141 + 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15 + F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334 + 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524 + 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256 + 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4 + 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F + E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = <> + Left = 232 + Top = 80 + end +end diff --git a/Source/Modulos/Formas de pago/Plugin/uPluginFormasPago.pas b/Source/Modulos/Formas de pago/Plugin/uPluginFormasPago.pas new file mode 100644 index 00000000..ce0d8e1c --- /dev/null +++ b/Source/Modulos/Formas de pago/Plugin/uPluginFormasPago.pas @@ -0,0 +1,74 @@ +unit uPluginFormasPago; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCFormasPago = interface(IInterface) + ['{255E8D6B-282A-48CC-9807-E49C7D31FD2D}'] + end; + + TPluginFormasPago = class(TModuleController, IMCFormasPago) + actFormasPago: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + FormasPago1: TMenuItem; + N1: TMenuItem; + procedure actFormasPagoExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, SysUtils, + uFormasPagoController, uBizFormasPago, uFormasPagoViewRegister; + +function GetModule : TModuleController; +begin + Result := TPluginFormasPago.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TPluginFormasPago.actFormasPagoExecute(Sender: TObject); +var + AFormasPagoController : IFormasPagoController; + AFormasPago : IBizFormaPago; +begin + AFormasPagoController := TFormasPagoController.Create; + AFormasPago := (AFormasPagoController.BuscarTodos as IBizFormaPago); + AFormasPagoController.VerTodos(AFormasPago); +end; + +constructor TPluginFormasPago.Create(AOwner: TComponent); +begin + inherited; + uFormasPagoViewRegister.RegisterViews; +end; + +destructor TPluginFormasPago.Destroy; +begin + uFormasPagoViewRegister.UnregisterViews; + inherited; +end; + +initialization + RegisterModuleClass(TPluginFormasPago); + +finalization + UnRegisterModuleClass(TPluginFormasPago); + +end. diff --git a/Source/Modulos/Formas de pago/Servidor/srvFormasPago_Impl.dfm b/Source/Modulos/Formas de pago/Servidor/srvFormasPago_Impl.dfm new file mode 100644 index 00000000..7a090ed0 --- /dev/null +++ b/Source/Modulos/Formas de pago/Servidor/srvFormasPago_Impl.dfm @@ -0,0 +1,580 @@ +object srvFormasPago: TsrvFormasPago + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + RequiresSession = True + SessionManager = dmServer.SessionManager + ServiceSchema = schFormasPago + ServiceDataStreamer = DABinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 202 + Width = 392 + object Diagrams: TDADiagrams + Left = 150 + Top = 90 + DiagramData = ''#13#10''#13#10 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'FormasPago_ID' + DataType = datInteger + DisplayLabel = 'ID' + end + item + Name = 'FormasPago_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + end + item + Name = 'FormasPago_DESCRIPCION' + DataType = datString + Size = 255 + DisplayLabel = 'Descripci'#243'n' + end + item + Name = 'FormasPago_TITULAR' + DataType = datString + Size = 255 + DisplayLabel = 'Titular' + end + item + Name = 'FormasPago_ENTIDAD' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'd. Entidad' + end + item + Name = 'FormasPago_SUCURSAL' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'd. Sucusal' + end + item + Name = 'FormasPago_DC' + DataType = datString + Size = 15 + DisplayLabel = 'DC' + end + item + Name = 'FormasPago_CUENTA' + DataType = datString + Size = 15 + DisplayLabel = 'C'#243'd. Cuenta' + end + item + Name = 'FormasPagoPlazos_ID' + DataType = datInteger + end + item + Name = 'FormasPagoPlazos_ID_FORMA_PAGO' + DataType = datInteger + end + item + Name = 'FormasPagoPlazos_NUM_DIAS' + DataType = datInteger + DisplayLabel = 'Num. d'#237'as' + end + item + Name = 'FormasPagoPlazos_PORCENTAJE' + DataType = datFloat + DisplayLabel = '% aplazado' + Alignment = taRightJustify + end> + Left = 150 + Top = 24 + end + object schFormasPago: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Diagrams = Diagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO' + SQL = + 'SELECT '#10' ID, REFERENCIA, DESCRIPCION, TITULAR, ENTIDAD, SUCUR' + + 'SAL, '#10' DC, CUENTA'#10' FROM'#10' FORMAS_PAGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'TITULAR' + TableField = 'TITULAR' + end + item + DatasetField = 'ENTIDAD' + TableField = 'ENTIDAD' + end + item + DatasetField = 'SUCURSAL' + TableField = 'SUCURSAL' + end + item + DatasetField = 'DC' + TableField = 'DC' + end + item + DatasetField = 'CUENTA' + TableField = 'CUENTA' + end> + end> + Name = 'FormasPago' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'FormasPago_ID' + InPrimaryKey = True + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'FormasPago_REFERENCIA' + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + DictionaryEntry = 'FormasPago_DESCRIPCION' + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + DictionaryEntry = 'FormasPago_TITULAR' + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + DictionaryEntry = 'FormasPago_ENTIDAD' + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + DictionaryEntry = 'FormasPago_SUCURSAL' + end + item + Name = 'DC' + DataType = datString + Size = 15 + DictionaryEntry = 'FormasPago_DC' + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + DictionaryEntry = 'FormasPago_CUENTA' + end> + end + item + Params = < + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO_PLAZOS' + SQL = + 'SELECT '#10' ID, ID_FORMA_PAGO, NUM_DIAS, PORCENTAJE'#10' FROM'#10' F' + + 'ORMAS_PAGO_PLAZOS'#10' WHERE'#10' FORMAS_PAGO_PLAZOS.ID_FORMA_PAGO =' + + ' :ID_FORMA_PAGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_FORMA_PAGO' + TableField = 'ID_FORMA_PAGO' + end + item + DatasetField = 'NUM_DIAS' + TableField = 'NUM_DIAS' + end + item + DatasetField = 'PORCENTAJE' + TableField = 'PORCENTAJE' + end> + end> + Name = 'FormasPagoPlazos' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'FormasPagoPlazos_ID' + InPrimaryKey = True + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + DictionaryEntry = 'FormasPagoPlazos_ID_FORMA_PAGO' + end + item + Name = 'NUM_DIAS' + DataType = datInteger + DictionaryEntry = 'FormasPagoPlazos_NUM_DIAS' + end + item + Name = 'PORCENTAJE' + DataType = datFloat + DictionaryEntry = 'FormasPagoPlazos_PORCENTAJE' + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'DC' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO' + SQL = + 'INSERT'#10' INTO FORMAS_PAGO'#10' (ID, REFERENCIA, DESCRIPCION, TITU' + + 'LAR, ENTIDAD, SUCURSAL, '#10' DC, CUENTA)'#10' VALUES'#10' (:ID, :RE' + + 'FERENCIA, :DESCRIPCION, :TITULAR, :ENTIDAD, '#10' :SUCURSAL, :DC' + + ', :CUENTA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_FormasPago' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO' + SQL = 'DELETE '#10' FROM'#10' FORMAS_PAGO'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_FormasPago' + end + item + Params = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'TITULAR' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ENTIDAD' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'SUCURSAL' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'DC' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'CUENTA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO' + SQL = + 'UPDATE FORMAS_PAGO'#10' SET '#10' REFERENCIA = :REFERENCIA,'#10' DESC' + + 'RIPCION = :DESCRIPCION, '#10' TITULAR = :TITULAR, '#10' ENTIDAD = ' + + ':ENTIDAD, '#10' SUCURSAL = :SUCURSAL, '#10' DC = :DC, '#10' CUENTA ' + + '= :CUENTA'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_FormasPago' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NUM_DIAS' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'PORCENTAJE' + DataType = datFloat + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO_PLAZOS' + SQL = + 'INSERT'#10' INTO FORMAS_PAGO_PLAZOS'#10' (ID, ID_FORMA_PAGO, NUM_DIA' + + 'S, PORCENTAJE)'#10' VALUES'#10' (:ID, :ID_FORMA_PAGO, :NUM_DIAS, :PO' + + 'RCENTAJE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_FormasPagoPlazos' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO_PLAZOS' + SQL = 'DELETE '#10' FROM'#10' FORMAS_PAGO_PLAZOS'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_FormasPagoPlazos' + end + item + Params = < + item + Name = 'ID_FORMA_PAGO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NUM_DIAS' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'PORCENTAJE' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'FORMAS_PAGO_PLAZOS' + SQL = + 'UPDATE FORMAS_PAGO_PLAZOS'#10' SET '#10' ID_FORMA_PAGO = :ID_FORMA_P' + + 'AGO,'#10' NUM_DIAS = :NUM_DIAS, '#10' PORCENTAJE = :PORCENTAJE'#10' W' + + 'HERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_FormasPagoPlazos' + end> + RelationShips = <> + UpdateRules = < + item + Name = 'Insert FormasPago' + DoUpdate = False + DoDelete = False + DatasetName = 'FormasPago' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert FormasPagoPlazos' + DoUpdate = False + DoDelete = False + DatasetName = 'FormasPagoPlazos' + FailureBehavior = fbRaiseException + end + item + Name = 'Update FormasPago' + DoInsert = False + DoDelete = False + DatasetName = 'FormasPago' + FailureBehavior = fbRaiseException + end + item + Name = 'Update FormasPagoPlazos' + DoInsert = False + DoDelete = False + DatasetName = 'FormasPagoPlazos' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete FormasPagoPlazos' + DoUpdate = False + DoInsert = False + DatasetName = 'FormasPagoPlazos' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete FormasPago' + DoUpdate = False + DoInsert = False + DatasetName = 'FormasPago' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 48 + Top = 24 + end + object bpFormasPagoPlazos: TDABusinessProcessor + Schema = schFormasPago + InsertCommandName = 'Insert_FormasPagoPlazos' + DeleteCommandName = 'Delete_FormasPagoPlazos' + UpdateCommandName = 'Update_FormasPagoPlazos' + ReferencedDataset = 'FormasPagoPlazos' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 248 + Top = 90 + end + object bpFormasPago: TDABusinessProcessor + Schema = schFormasPago + InsertCommandName = 'Insert_FormasPago' + DeleteCommandName = 'Delete_FormasPago' + UpdateCommandName = 'Update_FormasPago' + ReferencedDataset = 'FormasPago' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 248 + Top = 24 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 48 + Top = 88 + end +end diff --git a/Source/Modulos/Formas de pago/Servidor/srvFormasPago_Impl.pas b/Source/Modulos/Formas de pago/Servidor/srvFormasPago_Impl.pas new file mode 100644 index 00000000..2262fae6 --- /dev/null +++ b/Source/Modulos/Formas de pago/Servidor/srvFormasPago_Impl.pas @@ -0,0 +1,72 @@ +unit srvFormasPago_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf, uDADataTable, uDABINAdapter, uDAClasses, + uDAScriptingProvider, uDABusinessProcessor, uDADataStreamer; + +type + { TsrvFormasPago } + TsrvFormasPago = class(TDataAbstractService, IsrvFormasPago) + Diagrams: TDADiagrams; + bpFormasPagoPlazos: TDABusinessProcessor; + bpFormasPago: TDABusinessProcessor; + schFormasPago: TDASchema; + DataDictionary: TDADataDictionary; + DABinDataStreamer: TDABinDataStreamer; + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + private + protected + { IsrvFormasPago methods } + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, + uDatabaseUtils; + +procedure Create_srvFormasPago(out anInstance : IUnknown); +begin + anInstance := TsrvFormasPago.Create(NIL); +end; + +{ srvFormasPago } +procedure TsrvFormasPago.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; +end; + +procedure TsrvFormasPago.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +function TsrvFormasPago.GetNextAutoInc(const GeneratorName: String): Integer; +begin + Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) +end; + +initialization + TROClassFactory.Create('srvFormasPago', Create_srvFormasPago, TsrvFormasPago_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Formas de pago/Views/FormasPago_view.bdsproj b/Source/Modulos/Formas de pago/Views/FormasPago_view.bdsproj new file mode 100644 index 00000000..32104510 --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/FormasPago_view.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + FormasPago_view.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Formas de pago/Views/FormasPago_view.dpk b/Source/Modulos/Formas de pago/Views/FormasPago_view.dpk new file mode 100644 index 00000000..c0e9ab93 --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/FormasPago_view.dpk @@ -0,0 +1,43 @@ +package FormasPago_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + dsnap, + adortl, + DataAbstract_D10, + FormasPago_controller, + JvCmpD10R; + +contains + uEditorFormasPago in 'uEditorFormasPago.pas' {fEditorFormasPago: TfEditorFormasPago}, + uFormasPagoViewRegister in 'uFormasPagoViewRegister.pas', + uEditorFormaPago in 'uEditorFormaPago.pas' {fEditorFormaPago}; + +end. diff --git a/Source/Modulos/Formas de pago/Views/FormasPago_view.dproj b/Source/Modulos/Formas de pago/Views/FormasPago_view.dproj new file mode 100644 index 00000000..d7fcae41 --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/FormasPago_view.dproj @@ -0,0 +1,592 @@ + + + {e3d36a6f-7004-4c89-9f3d-f2d77e386d1b} + FormasPago_view.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\FormasPago_view.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + FormasPago_view.dpk + + + + + + + MainSource + + + + + + + + + + + +
fEditorFormaPago
+
+ +
fEditorFormasPago
+
+ +
+ +
+ + diff --git a/Source/Modulos/Formas de pago/Views/FormasPago_view.rc b/Source/Modulos/Formas de pago/Views/FormasPago_view.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Formas de pago/Views/FormasPago_view.res b/Source/Modulos/Formas de pago/Views/FormasPago_view.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Formas de pago/Views/FormasPago_view.res differ diff --git a/Source/Modulos/Formas de pago/Views/uEditorFormaPago.dfm b/Source/Modulos/Formas de pago/Views/uEditorFormaPago.dfm new file mode 100644 index 00000000..040698b9 --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/uEditorFormaPago.dfm @@ -0,0 +1,222 @@ +object fEditorFormaPago: TfEditorFormaPago + Left = 453 + Top = 234 + ActiveControl = eReferencia + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Forma de pago' + ClientHeight = 309 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 16 + Top = 17 + Width = 151 + Height = 13 + Caption = 'Datos de la forma de pago' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 173 + Top = 17 + Width = 212 + Height = 10 + Shape = bsBottomLine + end + object Label2: TLabel + Left = 62 + Top = 43 + Width = 55 + Height = 13 + Alignment = taRightJustify + Caption = 'Referencia:' + end + object Label3: TLabel + Left = 58 + Top = 71 + Width = 59 + Height = 13 + Alignment = taRightJustify + Caption = 'Descripci'#243'n:' + end + object Label11: TLabel + Left = 16 + Top = 112 + Width = 91 + Height = 13 + Caption = 'Plazos del pago' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel3: TBevel + Left = 113 + Top = 112 + Width = 272 + Height = 10 + Shape = bsBottomLine + end + object Bevel4: TBevel + Left = 8 + Top = 245 + Width = 388 + Height = 10 + Shape = bsBottomLine + end + object JvEnterAsTab1: TJvEnterAsTab + Left = 137 + Top = 261 + Width = 28 + Height = 28 + end + object bAceptar: TButton + Left = 234 + Top = 269 + Width = 75 + Height = 23 + Action = actAceptar + TabOrder = 5 + end + object bCancelar: TButton + Left = 319 + Top = 269 + Width = 75 + Height = 23 + Action = actCancelar + Cancel = True + TabOrder = 6 + end + object eReferencia: TDBEdit + Left = 123 + Top = 40 + Width = 118 + Height = 21 + Color = clInfoBk + DataField = 'REFERENCIA' + DataSource = dsFormaPago + TabOrder = 0 + end + object eDescripcion: TDBEdit + Left = 123 + Top = 68 + Width = 262 + Height = 21 + Color = clInfoBk + DataField = 'DESCRIPCION' + DataSource = dsFormaPago + TabOrder = 1 + end + object bAnadir: TButton + Left = 290 + Top = 134 + Width = 95 + Height = 23 + Action = actAnadir + TabOrder = 3 + end + object bEliminar: TButton + Left = 290 + Top = 163 + Width = 95 + Height = 23 + Action = actEliminar + TabOrder = 4 + end + object ListaFormasPago: TcxGrid + Left = 32 + Top = 134 + Width = 252 + Height = 105 + TabOrder = 2 + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + object ListaFormasPagoDBTableView1: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + DataController.DataSource = dsPlazos + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.ColumnMoving = False + OptionsCustomize.ColumnSorting = False + OptionsData.Deleting = False + OptionsData.DeletingConfirmation = False + OptionsData.Inserting = False + OptionsView.CellEndEllipsis = True + OptionsView.GroupByBox = False + object ListaFormasPagoDBTableView1NUM_DIAS: TcxGridDBColumn + DataBinding.FieldName = 'NUM_DIAS' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.AssignedValues.MinValue = True + Width = 112 + end + object ListaFormasPagoDBTableView1PORCENTAJE: TcxGridDBColumn + DataBinding.FieldName = 'PORCENTAJE' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.AssignedValues.MinValue = True + Properties.MaxValue = 100.000000000000000000 + HeaderAlignmentHorz = taRightJustify + Width = 132 + end + end + object ListaFormasPagoLevel1: TcxGridLevel + GridView = ListaFormasPagoDBTableView1 + end + end + object ActionList1: TActionList + Left = 88 + Top = 255 + object actAnadir: TAction + Caption = '&A'#241'adir' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = '&Guardar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + object actModificar: TAction + Caption = '&Modificar' + end + end + object dsFormaPago: TDADataSource + Left = 48 + Top = 255 + end + object dsPlazos: TDADataSource + Left = 8 + Top = 255 + end +end diff --git a/Source/Modulos/Formas de pago/Views/uEditorFormaPago.pas b/Source/Modulos/Formas de pago/Views/uEditorFormaPago.pas new file mode 100644 index 00000000..8b16e476 --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/uEditorFormaPago.pas @@ -0,0 +1,188 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorFormaPago; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Grids, DBGrids, StdCtrls, Mask, DBCtrls, DB, + uBizFormasPago, uBizFormasPagoPlazos, + uFormasPagoController, uFormasPagoPlazosController, + uDADataTable, uIEditorFormaPago, ActnList, ExtCtrls, JvExControls, + JvComponent, JvEnterTab, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, cxDBData, cxSpinEdit, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, + cxGridCustomView, cxGrid; + +type + TfEditorFormaPago = class(TForm, IEditorFormaPago) + ActionList1: TActionList; + dsFormaPago: TDADataSource; + actAnadir: TAction; + actEliminar: TAction; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + actModificar: TAction; + eReferencia: TDBEdit; + eDescripcion: TDBEdit; + dsPlazos: TDADataSource; + Label1: TLabel; + Bevel1: TBevel; + Label2: TLabel; + Label3: TLabel; + Label11: TLabel; + Bevel3: TBevel; + Bevel4: TBevel; + bAnadir: TButton; + bEliminar: TButton; + JvEnterAsTab1: TJvEnterAsTab; + ListaFormasPagoDBTableView1: TcxGridDBTableView; + ListaFormasPagoLevel1: TcxGridLevel; + ListaFormasPago: TcxGrid; + ListaFormasPagoDBTableView1NUM_DIAS: TcxGridDBColumn; + ListaFormasPagoDBTableView1PORCENTAJE: TcxGridDBColumn; + procedure FormShow(Sender: TObject); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + protected + FFormaPago: IBizFormaPago; + FPlazos : IBizFormaPagoPlazos; + FController : IFormasPagoController; + FPlazosController: IFormasPagoPlazosController; + function GetFormaPago: IBizFormaPago; + procedure SetFormaPago(const Value: IBizFormaPago); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property FormaPago: IBizFormaPago read GetFormaPago write SetFormaPago; + end; + + +implementation +{$R *.dfm} + +{ TfEditorFormasPago } + +uses + uDialogUtils, uDataModuleFormasPago; + +function TfEditorFormaPago.GetFormaPago: IBizFormaPago; +begin + Result := FFormaPago; +end; + +procedure TfEditorFormaPago.SetFormaPago(const Value: IBizFormaPago); +begin + FFormaPago := Value; + if Assigned(FFormaPago) then + begin + FPlazos := FFormaPago.Plazos; + dsFormaPago.DataTable := FFormaPago.DataTable; + dsPlazos.DataTable := FPlazos.DataTable; + dsFormaPago.DataTable.Open; + dsPlazos.DataTable.Open; + end + else begin + dsFormaPago.DataTable := NIL; + dsPlazos.DataTable := NIL; + end; +end; + +procedure TfEditorFormaPago.actAnadirExecute(Sender: TObject); +begin + FPlazos.Append; +end; + +procedure TfEditorFormaPago.actEliminarExecute(Sender: TObject); +begin + FPlazos.Delete; +end; + +procedure TfEditorFormaPago.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FPlazos) and + FPlazos.DataTable.Active and + (FPlazos.DataTable.RecordCount > 0); +end; + +constructor TfEditorFormaPago.Create(AOwner: TComponent); +begin + inherited; + FController := TFormasPagoController.Create; + FPlazosController := TFormasPagoPlazosController.Create; +end; + +destructor TfEditorFormaPago.Destroy; +begin + FFormaPago := NIL; + FPlazosController := NIL; + FController := NIL; + inherited; +end; + +procedure TfEditorFormaPago.actAceptarExecute(Sender: TObject); +begin + if FController.Guardar(FFormaPago) then + actCerrar.Execute; +end; + +procedure TfEditorFormaPago.actCancelarExecute(Sender: TObject); +begin + FController.DescartarCambios(FFormaPago); + actCerrar.Execute; +end; + +procedure TfEditorFormaPago.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorFormaPago.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FPlazos) and + FPlazos.DataTable.Active; +end; + +procedure TfEditorFormaPago.FormShow(Sender: TObject); +begin + if not FFormaPago.DataTable.Active then + FFormaPago.DataTable.Active := True; + + if FFormaPago.EsNuevo then + Self.Caption := 'Nueva forma de pago' + else + Self.Caption := 'Modificar forma de pago'; +end; + +end. diff --git a/Source/Modulos/Formas de pago/Views/uEditorFormasPago.dfm b/Source/Modulos/Formas de pago/Views/uEditorFormasPago.dfm new file mode 100644 index 00000000..10686a6d --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/uEditorFormasPago.dfm @@ -0,0 +1,149 @@ +object fEditorFormasPago: TfEditorFormasPago + Left = 453 + Top = 234 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Lista de formas de pago' + ClientHeight = 406 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 236 + Top = 373 + Width = 75 + Height = 23 + Action = actAceptar + Default = True + TabOrder = 1 + end + object bCancelar: TButton + Left = 321 + Top = 373 + Width = 75 + Height = 23 + Action = actCancelar + Cancel = True + TabOrder = 2 + end + object PageControl1: TPageControl + Left = 6 + Top = 8 + Width = 390 + Height = 356 + ActivePage = TabSheet1 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Formas de pago' + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 0 + ExplicitHeight = 0 + object Label1: TLabel + Left = 6 + Top = 12 + Width = 168 + Height = 13 + Caption = 'Lista de formas de pago disponibles' + end + object bEliminar: TButton + Left = 284 + Top = 90 + Width = 95 + Height = 23 + Action = actEliminar + TabOrder = 0 + end + object bAnadir: TButton + Left = 284 + Top = 31 + Width = 95 + Height = 23 + Action = actAnadir + TabOrder = 1 + end + object Button1: TButton + Left = 284 + Top = 61 + Width = 95 + Height = 23 + Action = actModificar + TabOrder = 2 + end + object ListaFormasPago: TDBGrid + Left = 6 + Top = 31 + Width = 272 + Height = 289 + DataSource = dsFormasPago + Options = [dgTitles, dgColumnResize, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgCancelOnExit] + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + OnDblClick = ListaFormasPagoDblClick + Columns = < + item + Expanded = False + FieldName = 'REFERENCIA' + Title.Caption = 'Referencia' + Width = 110 + Visible = True + end + item + Expanded = False + FieldName = 'DESCRIPCION' + Title.Caption = 'Descripci'#243'n' + Width = 151 + Visible = True + end> + end + end + end + object ActionList1: TActionList + Left = 144 + Top = 16 + object actAnadir: TAction + Caption = '&A'#241'adir...' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = 'A&ceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + object actModificar: TAction + Caption = '&Modificar...' + OnExecute = actModificarExecute + OnUpdate = actModificarUpdate + end + end + object dsFormasPago: TDADataSource + Left = 168 + Top = 16 + end +end diff --git a/Source/Modulos/Formas de pago/Views/uEditorFormasPago.pas b/Source/Modulos/Formas de pago/Views/uEditorFormasPago.pas new file mode 100644 index 00000000..c5076b03 --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/uEditorFormasPago.pas @@ -0,0 +1,184 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorFormasPago; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uIEditorFormasPago, uBizFormasPago, uFormasPagoController, DB, uDADataTable, + ActnList, Grids, DBGrids, StdCtrls, ComCtrls; + +type + TfEditorFormasPago = class(TForm, IEditorFormasPago) + ActionList1: TActionList; + dsFormasPago: TDADataSource; + actAnadir: TAction; + actEliminar: TAction; + bEliminar: TButton; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + Label1: TLabel; + bAnadir: TButton; + actModificar: TAction; + Button1: TButton; + ListaFormasPago: TDBGrid; + procedure FormShow(Sender: TObject); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure ListaFormasPagoDblClick(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + protected + FFormasPago: IBizFormaPago; + FController: IFormasPagoController; + function GetFormasPago: IBizFormaPago; + procedure SetFormasPago(const Value: IBizFormaPago); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property FormasPago: IBizFormaPago read GetFormasPago write SetFormasPago; + end; + + +implementation +{$R *.dfm} + +{ TfEditorFormasPago } + +uses + uDialogUtils; + +function TfEditorFormasPago.GetFormasPago: IBizFormaPago; +begin + Result := FFormasPago; +end; + +procedure TfEditorFormasPago.ListaFormasPagoDblClick(Sender: TObject); +begin +// ListaFormasPago.SelectedIndex +end; + +procedure TfEditorFormasPago.SetFormasPago(const Value: IBizFormaPago); +begin + FFormasPago := Value; + dsFormasPago.DataTable := (FFormasPago as IBizFormaPago).DataTable; + dsFormasPago.DataTable.Open; +end; + +procedure TfEditorFormasPago.actAnadirExecute(Sender: TObject); +begin + FController.Anadir(FormasPago); + FController.Ver(FormasPago); +end; + +procedure TfEditorFormasPago.actEliminarExecute(Sender: TObject); +begin + if (ShowConfirmMessage('Borrar forma de pago', 'Est seguro que desea borrar esta forma de pago?') = IDYES) then + FController.Eliminar(FFormasPago) +end; + +procedure TfEditorFormasPago.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FFormasPago) and + FFormasPago.DataTable.Active and + (FFormasPago.DataTable.RecordCount > 0); +end; + +procedure TfEditorFormasPago.actModificarExecute(Sender: TObject); +begin + FController.Ver(FormasPago); +end; + +procedure TfEditorFormasPago.actModificarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FFormasPago) and + FFormasPago.DataTable.Active and + (FFormasPago.DataTable.RecordCount > 0); +end; + +constructor TfEditorFormasPago.Create(AOwner: TComponent); +begin + inherited; + FController := TFormasPagoController.Create; +end; + +destructor TfEditorFormasPago.Destroy; +begin + FFormasPago := NIL; + FController := NIL; + inherited; +end; + +procedure TfEditorFormasPago.actAceptarExecute(Sender: TObject); +begin + try + FormasPago.DataTable.ApplyUpdates; + except + on E : Exception do begin + FormasPago.DataTable.CancelUpdates; + ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); + Exit; + end; + end; + actCerrar.Execute; +end; + +procedure TfEditorFormasPago.actCancelarExecute(Sender: TObject); +begin + FormasPago.DataTable.CancelUpdates; + actCerrar.Execute; +end; + +procedure TfEditorFormasPago.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorFormasPago.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FFormasPago) and + FFormasPago.DataTable.Active; +end; + +procedure TfEditorFormasPago.FormShow(Sender: TObject); +begin + if not FFormasPago.DataTable.Active then + FFormasPago.DataTable.Active := true; + + ListaFormasPago.SetFocus; +end; + +end. diff --git a/Source/Modulos/Formas de pago/Views/uFormasPagoViewRegister.pas b/Source/Modulos/Formas de pago/Views/uFormasPagoViewRegister.pas new file mode 100644 index 00000000..6575f23b --- /dev/null +++ b/Source/Modulos/Formas de pago/Views/uFormasPagoViewRegister.pas @@ -0,0 +1,25 @@ +unit uFormasPagoViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, uEditorFormaPago, uEditorFormasPago; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorFormasPago, 'EditorFormasPago'); + EditorRegistry.RegisterClass(TfEditorFormaPago, 'EditorFormaPago'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorFormasPago); + EditorRegistry.UnRegisterClass(TfEditorFormaPago); +end; + +end. diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.bdsproj b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.bdsproj new file mode 100644 index 00000000..6e03c151 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + TiposIVA_controller.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dpk b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dpk new file mode 100644 index 00000000..ea4de4d0 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dpk @@ -0,0 +1,55 @@ +package TiposIVA_controller; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + cxLibraryD10, + dxThemeD10, + dsnap, + vcldb, + adortl, + dxBarExtItemsD10, + dxComnD10, + dxBarD10, + dxLayoutControlD10, + dxPSCoreD10, + dxPScxCommonD10, + dxPScxGridLnkD10, + dxPsPrVwAdvD10, + DataAbstract_D10, + Base, + ControllerBase, + TiposIVA_model, + TiposIVA_data; + +contains + uTiposIVAController in 'uTiposIVAController.pas', + uIEditorTiposIVA in 'View\uIEditorTiposIVA.pas', + uIEditorTipoIVA in 'View\uIEditorTipoIVA.pas'; + +end. diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj new file mode 100644 index 00000000..0b9a607f --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.dproj @@ -0,0 +1,600 @@ + + + {326821d3-56af-487f-bcd2-c500b144884e} + TiposIVA_controller.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposIVA_controller.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TiposIVA_controller.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.rc b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Tipos de IVA/Controller/TiposIVA_controller.res differ diff --git a/Source/Modulos/Tipos de IVA/Controller/View/uIEditorTipoIVA.pas b/Source/Modulos/Tipos de IVA/Controller/View/uIEditorTipoIVA.pas new file mode 100644 index 00000000..0d5e0341 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Controller/View/uIEditorTipoIVA.pas @@ -0,0 +1,45 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uIEditorTipoIVA; + +interface + +uses + uBizTiposIVA, uTiposIVAController; + +type + IEditorTipoIVA = interface + ['{1430F706-67AF-43C5-B94B-C83184C10987}'] + function GetTipoIVA: IBizTipoIVA; + procedure SetTipoIVA(const Value: IBizTipoIVA); + property TipoIVA: IBizTipoIVA read GetTipoIVA write SetTipoIVA; + + procedure Release; + function ShowModal : Integer; + end; + + +implementation + +end. diff --git a/Source/Modulos/Tipos de IVA/Controller/View/uIEditorTiposIVA.pas b/Source/Modulos/Tipos de IVA/Controller/View/uIEditorTiposIVA.pas new file mode 100644 index 00000000..2db523c8 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Controller/View/uIEditorTiposIVA.pas @@ -0,0 +1,45 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uIEditorTiposIVA; + +interface + +uses + uBizTiposIVA; + +type + IEditorTiposIVA = interface + ['{4B436226-F033-40D0-BADE-2F2AA576F3FD}'] + function GetTiposIVA: IBizTipoIVA; + procedure SetTiposIVA(const Value: IBizTipoIVA); + property TiposIVA: IBizTipoIVA read GetTiposIVA write SetTiposIVA; + + procedure Release; + function ShowModal : Integer; + end; + + +implementation + +end. diff --git a/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas b/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas new file mode 100644 index 00000000..c64c514b --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Controller/uTiposIVAController.pas @@ -0,0 +1,343 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uTiposIVAController; + +interface + +uses + Classes, SysUtils, uDADataTable, uControllerBase, + uBizTiposIVA, uIDataModuleTiposIVA; + +type + ITiposIVAController = interface(IObservador) + ['{DD8BBB7C-3688-4FCA-80EF-47FB61175D62}'] + procedure Anadir(ATipoIVA : IBizTipoIVA); + function Eliminar(ATipoIVA : IBizTipoIVA): Boolean; + function Guardar(ATipoIVA : IBizTipoIVA): Boolean; + procedure DescartarCambios(ATipoIVA : IBizTipoIVA); + function Duplicar(ATipoIVA: IBizTipoIVA): IBizTipoIVA; + + function Buscar(const ID: Integer): IBizTipoIVA; + function BuscarTodos: IBizTipoIVA; + procedure VerTodos(ATiposIVA: IBizTipoIVA); + procedure Ver(ATipoIVA: IBizTipoIVA); + function Localizar(ATiposIVA: IBizTipoIVA; ADescripcion:String): Boolean; + function DarListaTiposIVA: TStringList; + function ExtraerSeleccionados(ATipoIVA: IBizTipoIVA) : IBizTipoIVA; + end; + + TTiposIVAController = class(TObservador, ITiposIVAController) + protected + FDataModule : IDataModuleTiposIVA; + + function _Vacio : IBizTipoIVA; + function ValidarTipoIVA(ATipoIVA: IBizTipoIVA): Boolean; + procedure AsignarDataModule; + procedure AsignarID(ATipoIVA: IBizTipoIVA; const IDNuevo: Integer); + + public + constructor Create; virtual; + destructor Destroy; override; + + procedure Anadir(ATipoIVA : IBizTipoIVA); + function Eliminar(ATipoIVA : IBizTipoIVA): Boolean; + function Guardar(ATipoIVA : IBizTipoIVA): Boolean; + procedure DescartarCambios(ATipoIVA : IBizTipoIVA); + function Duplicar(ATipoIVA: IBizTipoIVA): IBizTipoIVA; + + function Buscar(const ID: Integer): IBizTipoIVA; + function BuscarTodos: IBizTipoIVA; + procedure VerTodos(ATiposIVA: IBizTipoIVA); + procedure Ver(ATipoIVA: IBizTipoIVA); + function Localizar(ATiposIVA: IBizTipoIVA; ADescripcion:String): Boolean; + function DarListaTiposIVA: TStringList; + function ExtraerSeleccionados(ATipoIVA: IBizTipoIVA) : IBizTipoIVA; + end; + +implementation + +uses + cxControls, DB, uEditorRegistryUtils, + uDAInterfaces, uDataTableUtils, + uDateUtils, uROTypes, DateUtils, Controls, Windows, + + schTiposIVAClient_Intf, uIEditorTiposIVA, + uIEditorTipoIVA, uDataModuleTiposIVA; + +{ TTiposIVAController } + +procedure TTiposIVAController.Anadir(ATipoIVA: IBizTipoIVA); +begin + ATipoIVA.Insert; +end; + +procedure TTiposIVAController.AsignarDataModule; +begin + FDataModule := TDataModuleTiposIVA.Create(Nil); +end; + +procedure TTiposIVAController.AsignarID(ATipoIVA: IBizTipoIVA; + const IDNuevo: Integer); +begin + if not Assigned(ATipoIVA) then + raise Exception.Create ('TipoIVA no asignado'); + + if ATipoIVA.EsNuevo then + begin + ATipoIVA.Edit; + ATipoIVA.ID := IDNuevo; + ATipoIVA.Post; + end; +end; + +function TTiposIVAController.BuscarTodos: IBizTipoIVA; +begin + Result := FDataModule.GetItems; +end; + +constructor TTiposIVAController.Create; +begin + AsignarDataModule; +end; + +function TTiposIVAController.Buscar(const ID: Integer): IBizTipoIVA; +begin + Result := (FDataModule as IDataModuleTiposIVA).GetItem(ID); +end; + +function TTiposIVAController._Vacio: IBizTipoIVA; +begin + Result := Buscar(ID_NULO); +end; + +function TTiposIVAController.DarListaTiposIVA: TStringList; +var + ATiposIVA: IBizTipoIVA; +begin + ATiposIVA := BuscarTodos; + ATiposIVA.DataTable.Active := True; + Result := TStringList.Create; + try + with Result do + begin + ATiposIVA.DataTable.First; + while not ATiposIVA.DataTable.EOF do + begin + Add(ATiposIVA.DESCRIPCION); + ATiposIVA.DataTable.Next; + end; + end; + finally + ATiposIVA := NIL; + end; +end; + +procedure TTiposIVAController.DescartarCambios(ATipoIVA: IBizTipoIVA); +begin + if not Assigned(ATipoIVA) then + raise Exception.Create ('TipoIVA no asignado'); + + ShowHourglassCursor; + try + if (ATipoIVA.State in dsEditModes) then + ATipoIVA.Cancel; + + ATipoIVA.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TTiposIVAController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + + +function TTiposIVAController.Duplicar(ATipoIVA: IBizTipoIVA): IBizTipoIVA; +begin + Result := Self._Vacio; + ShowHourglassCursor; + try + DuplicarRegistros(ATipoIVA.DataTable, Result.DataTable, mdrActual); + + // CUIDADO! Hay que dejar algunos campos como si fuera todo nuevo + Result.Edit; + with Result do + begin + // Ejemplos + // ID_EMPRESA := dmUsuarios.IDEmpresaActual; + // USUARIO := dmUsuarios.LoginInfo.Usuario; + // REFERENCIA := ''; //Para que se asigne una nueva + // FECHA_FACTURA := DateOf(Now); + // SITUACION := SITUACION_PENDIENTE; + end; + + Result.Post; + finally + HideHourglassCursor; + end; +end; + + +function TTiposIVAController.ValidarTipoIVA(ATipoIVA: IBizTipoIVA): Boolean; +begin + Result := False; + + if not Assigned(ATipoIVA) then + raise Exception.Create ('TipoIVA no asignado'); + + if (ATipoIVA.DataTable.State in dsEditModes) then + ATipoIVA.DataTable.Post; + + if Length(ATipoIVA.REFERENCIA) = 0 then + raise Exception.Create('Debe indicar una referencia para este tipo de IVA.'); + + if Length(ATipoIVA.DESCRIPCION) = 0 then + raise Exception.Create('Debe indicar una descripcin para este tipo de IVA.'); + + Result := True; +end; + +procedure TTiposIVAController.Ver(ATipoIVA: IBizTipoIVA); +var + AEditor : IEditorTipoIVA; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorTipoIVA', IEditorTipoIVA, AEditor); + with AEditor do + TipoIVA := ATipoIVA; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +procedure TTiposIVAController.VerTodos(ATiposIVA: IBizTipoIVA); +var + AEditor : IEditorTiposIVA; +begin + AEditor := NIL; + ShowHourglassCursor; + try + CreateEditor('EditorTiposIVA', IEditorTiposIVA, AEditor); + with AEditor do + TiposIVA := ATiposIVA; + finally + HideHourglassCursor; + end; + + if Assigned(AEditor) then + try + AEditor.ShowModal; + AEditor.Release; + finally + AEditor := NIL; + end; +end; + +function TTiposIVAController.Eliminar(ATipoIVA: IBizTipoIVA): Boolean; +begin + Result := False; + + if not Assigned(ATipoIVA) then + raise Exception.Create ('TipoIVA no asignado'); + + ShowHourglassCursor; + try + if (ATipoIVA.State in dsEditModes) then + ATipoIVA.Cancel; + + ATipoIVA.Delete; + ATipoIVA.DataTable.ApplyUpdates; + HideHourglassCursor; + Result := True; + finally + HideHourglassCursor; + end; +end; + +function TTiposIVAController.Guardar(ATipoIVA: IBizTipoIVA): Boolean; +var + NuevoID : Integer; +begin + Result := False; + + if ValidarTipoIVA(ATipoIVA) then + begin + ShowHourglassCursor; + try + if ATipoIVA.EsNuevo then + NuevoID := FDataModule.GetNextID(ATipoIVA.DataTable.LogicalName) + else + NuevoID := ATipoIVA.ID; + + AsignarID(ATipoIVA, NuevoID); + ATipoIVA.DataTable.ApplyUpdates; + + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TTiposIVAController.Localizar(ATiposIVA: IBizTipoIVA; ADescripcion: String): Boolean; +begin + Result := True; + ShowHourglassCursor; + try + with ATiposIVA.DataTable do + begin + DisableControls; + First; + if not Locate(fld_TiposIVADESCRIPCION, ADescripcion, []) then + Result := False; + EnableControls; + end; + finally + HideHourglassCursor; + end; +end; + +function TTiposIVAController.ExtraerSeleccionados(ATipoIVA: IBizTipoIVA): IBizTipoIVA; +var + ASeleccionados : IBizTipoIVA; +begin + ASeleccionados := (Self.Buscar(ID_NULO) as IBizTipoIVA); + CopyDataTable(ATipoIVA.DataTable, ASeleccionados.DataTable, True); + Result := ASeleccionados; +end; + +end. diff --git a/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.bdsproj b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.bdsproj new file mode 100644 index 00000000..c8ff421c --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + TiposIVA_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.dpk b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.dpk new file mode 100644 index 00000000..1552bd67 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.dpk @@ -0,0 +1,50 @@ +package TiposIVA_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + + +requires + rtl, + vcl, + dbrtl, + dsnap, + vcldb, + adortl, + vcljpg, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + DataAbstract_D10, + Base, + TiposIVA_model; + +contains + uDataModuleTiposIVA in 'uDataModuleTiposIVA.pas' {DataModuleTiposIVA: TDAClientDataModule}; + +end. diff --git a/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.dproj b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.dproj new file mode 100644 index 00000000..7a36521d --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.dproj @@ -0,0 +1,598 @@ + + + {55d06c67-fc74-4d88-8787-801dee872bb3} + TiposIVA_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposIVA_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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TiposIVA_data.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + +
DataModuleTiposIVA
+
+
+ +
+ + diff --git a/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.drc b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.rc b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.res b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Tipos de IVA/Data/TiposIVA_data.res differ diff --git a/Source/Modulos/Tipos de IVA/Data/uDataModuleTiposIVA.dfm b/Source/Modulos/Tipos de IVA/Data/uDataModuleTiposIVA.dfm new file mode 100644 index 00000000..117cff97 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Data/uDataModuleTiposIVA.dfm @@ -0,0 +1,108 @@ +object DataModuleTiposIVA: TDataModuleTiposIVA + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 414 + Width = 518 + object RORemoteService: TRORemoteService + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + ServiceName = 'srvTiposIVA' + Left = 48 + Top = 24 + end + object DADesigntimeCall1: TDADesigntimeCall + RemoteService = LoginRemoteService + Params = <> + Left = 48 + Top = 160 + end + object LoginRemoteService: TRORemoteService + Message = ROBinMessage1 + Channel = ROWinInetHTTPChannel1 + ServiceName = 'srvLogin' + Left = 48 + Top = 216 + end + object ROWinInetHTTPChannel1: TROWinInetHTTPChannel + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + ServerLocators = <> + DispatchOptions = [] + Left = 48 + Top = 272 + end + object ROBinMessage1: TROBinMessage + Left = 48 + Top = 324 + end + object tbl_TiposIVA: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + DisplayLabel = 'TIPOS_IVA_ID' + DictionaryEntry = 'TIPOS_IVA_ID' + InPrimaryKey = True + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + DictionaryEntry = 'TIPOS_IVA_REFERENCIA' + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + DisplayLabel = 'Descripci'#243'n' + DictionaryEntry = 'TIPOS_IVA_DESCRIPCION' + end + item + Name = 'IVA' + DataType = datFloat + DisplayLabel = '% IVA' + DisplayFormat = ',0.00 %;-,0.00 %' + Alignment = taRightJustify + DictionaryEntry = 'TIPOS_IVA_IVA' + end + item + Name = 'RE' + DataType = datFloat + DisplayLabel = '% RE' + DisplayFormat = ',0.00 %;-,0.00 %' + Alignment = taRightJustify + DictionaryEntry = 'TIPOS_IVA_RE' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_TiposIVA + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'TiposIVA' + IndexDefs = <> + Left = 216 + Top = 24 + end + object ds_TiposIVA: TDADataSource + DataSet = tbl_TiposIVA.Dataset + DataTable = tbl_TiposIVA + Left = 216 + Top = 88 + end + object rda_TiposIVA: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + Left = 307 + Top = 23 + end + object DataStreamer: TDABinDataStreamer + Left = 48 + Top = 76 + end +end diff --git a/Source/Modulos/Tipos de IVA/Data/uDataModuleTiposIVA.pas b/Source/Modulos/Tipos de IVA/Data/uDataModuleTiposIVA.pas new file mode 100644 index 00000000..7429f772 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Data/uDataModuleTiposIVA.pas @@ -0,0 +1,179 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uDataModuleTiposIVA; + +interface + +uses + SysUtils, Classes, DB, uDAClientDataModule, uDADataTable, uDABINAdapter, + uDAScriptingProvider, uDACDSDataTable, uROWinInetHttpChannel, uROTypes, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uDADesigntimeCall, + + uIDataModuleTiposIVA, uBizTiposIVA, uDADataStreamer, uDARemoteDataAdapter, + uDAInterfaces, uRODynamicRequest; + +type + TDataModuleTiposIVA = class(TDAClientDataModule, IDataModuleTiposIVA) + RORemoteService: TRORemoteService; + DADesigntimeCall1: TDADesigntimeCall; + LoginRemoteService: TRORemoteService; + ROWinInetHTTPChannel1: TROWinInetHTTPChannel; + ROBinMessage1: TROBinMessage; + tbl_TiposIVA: TDACDSDataTable; + ds_TiposIVA: TDADataSource; + rda_TiposIVA: TDARemoteDataAdapter; + DataStreamer: TDABinDataStreamer; + procedure DAClientDataModuleCreate(Sender: TObject); + protected + function DarNombreGenerador(DataSetName: String): String; virtual; + function _CloneDataTable (const ADataTable : TDACDSDataTable): TDACDSDataTable; overload; + + // Descomentar si tiene detalles + // function _GetDetalles: IBizDetalles; + public + function GetNextID(const DataSetName : String) : Integer; + function GetItems: IBizTipoIVA; + function GetItem(const ID : Integer) : IBizTipoIVA; + function NewItem : IBizTipoIVA; + + // Descomentar si tiene informe + // function GetReport(const ATipoIVAID: Integer): Binary; + + end; + +implementation + +{$R *.DFM} + +uses + FactuGES_Intf, uDataModuleConexion, uDataTableUtils, cxControls, uDAInterfaces, + schTiposIVAClient_Intf; + +{ TDataModuleTiposIVA } + + +// Descomentar si tiene informe +// function TDataModuleTiposIVA.GetReport(const ATipoIVAID: Integer): Binary; +// begin +// Result := (RORemoteService as IsrvTiposIVA).GenerateReport(ATipoIVAID) +// end; + +procedure TDataModuleTiposIVA.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleTiposIVA.DarNombreGenerador(DataSetName: String): String; +begin + Result := ''; + if DataSetName = nme_TiposIVA then + Result := 'GEN_TIPOS_IVA_ID' +end; + +function TDataModuleTiposIVA.GetNextID(const DataSetName: String): Integer; +var + aGeneratorName : String; +begin + aGeneratorName := DarNombreGenerador(DataSetName); + Result := (RORemoteService as IsrvTiposIVA).GetNextAutoInc(aGeneratorName) +end; + +function TDataModuleTiposIVA._CloneDataTable(const ADataTable : TDACDSDataTable): TDACDSDataTable; +begin + Result := NIL; + + if not Assigned(ADataTable) then + raise Exception.Create ('No se ha asignado la tabla de origen (CloneDataTable)'); + + Result := TDACDSDataTable.Create(NIL); + CloneDataTable(ADataTable, Result); +end; + + +// Descomentar si tiene detalles +// function TDataModuleTiposIVA._GetDetalles: IBizTipoIVADetalles; +// var +// ADetalles : TDACDSDataTable; +// begin +// ShowHourglassCursor; +// try +// ADetalles := _CloneDataTable(tbl_TiposIVADetalles); +// with ADetalles do +// begin +// BusinessRulesID := BIZ_CLIENT_TipoIVADETALLES; +// DetailOptions := DetailOptions - +// [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; +// end; +// Result := (ADetalles as IBizTipoIVADetalles); +// finally +// HideHourglassCursor; +// end; +// end; + + +function TDataModuleTiposIVA.GetItems: IBizTipoIVA; +var + ATipoIVA : TDACDSDataTable; +begin + ShowHourglassCursor; + try + ATipoIVA := _CloneDataTable(tbl_TiposIVA); + ATipoIVA.BusinessRulesID := BIZ_CLIENT_TipoIVA; + + // Descomentar si tiene detalles + // with TBizTipoIVA(ATipoIVA.BusinessEventsObj) do + // Detalles := _GetDetalles; + + Result := (ATipoIVA as IBizTipoIVA); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleTiposIVA.NewItem: IBizTipoIVA; +begin + Result := GetItem(ID_NULO) +end; + +function TDataModuleTiposIVA.GetItem(const ID: Integer): IBizTipoIVA; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + with Result.DataTable.Where do + begin + if NotEmpty then + AddOperator(opAND); + OpenBraket; + AddText('TIPOS_IVA.' + fld_TiposIVAID + ' = ' + IntToStr(ID)); + CloseBraket; + end; + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Tipos de IVA/Model/Data/uIDataModuleTiposIVA.pas b/Source/Modulos/Tipos de IVA/Model/Data/uIDataModuleTiposIVA.pas new file mode 100644 index 00000000..e14ffc76 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/Data/uIDataModuleTiposIVA.pas @@ -0,0 +1,43 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uIDataModuleTiposIVA; + +interface + +uses + uBizTiposIVA; + +type + IDataModuleTiposIVA = interface + ['{FF13E488-D185-4674-8A27-539BEC012B75}'] + function GetItems: IBizTipoIVA; + function GetNextID(const DataSetName : String) : Integer; + function GetItem(const ID : Integer) : IBizTipoIVA; + function NewItem : IBizTipoIVA; + + end; + +implementation + +end. diff --git a/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.bdsproj b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.bdsproj new file mode 100644 index 00000000..d23f19e2 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + TiposIVA_model.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.dpk b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.dpk new file mode 100644 index 00000000..b9b65ee0 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.dpk @@ -0,0 +1,43 @@ +package TiposIVA_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dsnap, + dbrtl, + vcldb, + vcl, + adortl, + Base, + DataAbstract_D10; + +contains + uIDataModuleTiposIVA in 'Data\uIDataModuleTiposIVA.pas', + schTiposIVAClient_Intf in 'schTiposIVAClient_Intf.pas', + schTiposIVAServer_Intf in 'schTiposIVAServer_Intf.pas', + uBizTiposIVA in 'uBizTiposIVA.pas'; + +end. diff --git a/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.dproj b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.dproj new file mode 100644 index 00000000..09441447 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.dproj @@ -0,0 +1,590 @@ + + + {82fe21d8-609d-444d-879e-4d9e1c291607} + TiposIVA_model.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposIVA_model.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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TiposIVA_model.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.drc b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.drc new file mode 100644 index 00000000..7642ac97 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.drc @@ -0,0 +1,14 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +STRINGTABLE +BEGIN +END + diff --git a/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.rc b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.res b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Tipos de IVA/Model/TiposIVA_model.res differ diff --git a/Source/Modulos/Tipos de IVA/Model/schTiposIVAClient_Intf.pas b/Source/Modulos/Tipos de IVA/Model/schTiposIVAClient_Intf.pas new file mode 100644 index 00000000..56bcd981 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/schTiposIVAClient_Intf.pas @@ -0,0 +1,154 @@ +unit schTiposIVAClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable; + +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_TiposIVA = '{D96E3FA9-3BEC-4A87-B5A6-F8A8AEF73D87}'; + + { Data table names } + nme_TiposIVA = 'TiposIVA'; + + { TiposIVA fields } + fld_TiposIVAID = 'ID'; + fld_TiposIVAREFERENCIA = 'REFERENCIA'; + fld_TiposIVADESCRIPCION = 'DESCRIPCION'; + fld_TiposIVAIVA = 'IVA'; + fld_TiposIVARE = 'RE'; + + { TiposIVA field indexes } + idx_TiposIVAID = 0; + idx_TiposIVAREFERENCIA = 1; + idx_TiposIVADESCRIPCION = 2; + idx_TiposIVAIVA = 3; + idx_TiposIVARE = 4; + +type + { ITiposIVA } + ITiposIVA = interface(IDAStronglyTypedDataTable) + ['{DEFBEA87-112C-4BFB-86E8-40085D5D6328}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetIVAValue: Float; + procedure SetIVAValue(const aValue: Float); + function GetREValue: Float; + procedure SetREValue(const aValue: Float); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property RE: Float read GetREValue write SetREValue; + end; + + { TTiposIVADataTableRules } + TTiposIVADataTableRules = class(TDADataTableRules, ITiposIVA) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetREValue: Float; virtual; + procedure SetREValue(const aValue: Float); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property IVA: Float read GetIVAValue write SetIVAValue; + property RE: Float read GetREValue write SetREValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TTiposIVADataTableRules } +constructor TTiposIVADataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TTiposIVADataTableRules.Destroy; +begin + inherited; +end; + +function TTiposIVADataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_TiposIVAID].AsInteger; +end; + +procedure TTiposIVADataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_TiposIVAID].AsInteger := aValue; +end; + +function TTiposIVADataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_TiposIVAREFERENCIA].AsString; +end; + +procedure TTiposIVADataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_TiposIVAREFERENCIA].AsString := aValue; +end; + +function TTiposIVADataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_TiposIVADESCRIPCION].AsString; +end; + +procedure TTiposIVADataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_TiposIVADESCRIPCION].AsString := aValue; +end; + +function TTiposIVADataTableRules.GetIVAValue: Float; +begin + result := DataTable.Fields[idx_TiposIVAIVA].AsFloat; +end; + +procedure TTiposIVADataTableRules.SetIVAValue(const aValue: Float); +begin + DataTable.Fields[idx_TiposIVAIVA].AsFloat := aValue; +end; + +function TTiposIVADataTableRules.GetREValue: Float; +begin + result := DataTable.Fields[idx_TiposIVARE].AsFloat; +end; + +procedure TTiposIVADataTableRules.SetREValue(const aValue: Float); +begin + DataTable.Fields[idx_TiposIVARE].AsFloat := aValue; +end; + + +initialization + RegisterDataTableRules(RID_TiposIVA, TTiposIVADataTableRules); + +end. diff --git a/Source/Modulos/Tipos de IVA/Model/schTiposIVAServer_Intf.pas b/Source/Modulos/Tipos de IVA/Model/schTiposIVAServer_Intf.pas new file mode 100644 index 00000000..9c626a44 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/schTiposIVAServer_Intf.pas @@ -0,0 +1,167 @@ +unit schTiposIVAServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schTiposIVAClient_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_TiposIVADelta = '{2A97AB6B-F1E7-4CEF-BB65-E0155C2C9A47}'; + +type + { ITiposIVADelta } + ITiposIVADelta = interface(ITiposIVA) + ['{2A97AB6B-F1E7-4CEF-BB65-E0155C2C9A47}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldIVAValue : Float; + function GetOldREValue : Float; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldIVA : Float read GetOldIVAValue; + property OldRE : Float read GetOldREValue; + end; + + { TTiposIVABusinessProcessorRules } + TTiposIVABusinessProcessorRules = class(TDABusinessProcessorRules, ITiposIVA, ITiposIVADelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetREFERENCIAValue: String; virtual; + function GetOldREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetIVAValue: Float; virtual; + function GetOldIVAValue: Float; virtual; + procedure SetIVAValue(const aValue: Float); virtual; + function GetREValue: Float; virtual; + function GetOldREValue: Float; virtual; + procedure SetREValue(const aValue: Float); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property IVA : Float read GetIVAValue write SetIVAValue; + property OldIVA : Float read GetOldIVAValue; + property RE : Float read GetREValue write SetREValue; + property OldRE : Float read GetOldREValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TTiposIVABusinessProcessorRules } +constructor TTiposIVABusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TTiposIVABusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TTiposIVABusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVAID]; +end; + +function TTiposIVABusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposIVAID]; +end; + +procedure TTiposIVABusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVAID] := aValue; +end; + +function TTiposIVABusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVAREFERENCIA]; +end; + +function TTiposIVABusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposIVAREFERENCIA]; +end; + +procedure TTiposIVABusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVAREFERENCIA] := aValue; +end; + +function TTiposIVABusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVADESCRIPCION]; +end; + +function TTiposIVABusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposIVADESCRIPCION]; +end; + +procedure TTiposIVABusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVADESCRIPCION] := aValue; +end; + +function TTiposIVABusinessProcessorRules.GetIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVAIVA]; +end; + +function TTiposIVABusinessProcessorRules.GetOldIVAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposIVAIVA]; +end; + +procedure TTiposIVABusinessProcessorRules.SetIVAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVAIVA] := aValue; +end; + +function TTiposIVABusinessProcessorRules.GetREValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVARE]; +end; + +function TTiposIVABusinessProcessorRules.GetOldREValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_TiposIVARE]; +end; + +procedure TTiposIVABusinessProcessorRules.SetREValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_TiposIVARE] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_TiposIVADelta, TTiposIVABusinessProcessorRules); + +end. diff --git a/Source/Modulos/Tipos de IVA/Model/uBizTiposIVA.pas b/Source/Modulos/Tipos de IVA/Model/uBizTiposIVA.pas new file mode 100644 index 00000000..02e2a700 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Model/uBizTiposIVA.pas @@ -0,0 +1,134 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uBizTiposIVA; + +interface + +uses + uDAInterfaces, uDADataTable, uDBSelectionListUtils, schTiposIVAClient_Intf; + +const + BIZ_CLIENT_TIPOIVA = 'Client.TipoIVA'; + +type + IBizTipoIVA = interface(ITiposIVA) + ['{72B85541-E871-4804-8DB9-ED76278307D5}'] + function EsNuevo : Boolean; + + // Descomentar esto si hay clases detalles + // procedure SetDetalles(AValue : IBizDetalles); + // function GetDetalles : IBizDetalles; + // property Detalles : IBizDetalles read GetDetalles write SetDetalles; + end; + + TBizTipoIVA = class(TTiposIVADataTableRules, IBizTipoIVA, ISeleccionable) + protected + FSeleccionableInterface : ISeleccionable; + + // Descomentar esto si hay clases detalles + // FDetalles : IBizDetalles; + // FDetallesLink : TDADataSource; + // procedure SetDetalles(AValue : IBizDetalles); + // function GetDetalles : IBizDetalles; + + procedure OnNewRecord(Sender: TDADataTable); override; + public + procedure IniciarValoresTipoIVANuevo; + function EsNuevo : Boolean; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + property SeleccionableInterface : ISeleccionable + read FSeleccionableInterface + write FSeleccionableInterface + implements ISeleccionable; + + // Descomentar esto si hay clases detalles + // property Detalles : IBizDetalles read GetDetalles write SetDetalles; + end; + +implementation + +{ TBizTipoIVA } + +uses + SysUtils, uDataTableUtils; + +// Descomentar esto si hay clases detalles +// function TBizTipoIVA.GetDetalles: IBizDetalles; +// begin +// Result := FDetalles; +// end; + +// Descomentar esto si hay clases detalles +// procedure TBizTipoIVA.SetDetalles(AValue: IBizDetalles); +// begin +// FDetalles := AValue; +// EnlazarMaestroDetalle(FDetallesLink, FDetalles); +// end; + +constructor TBizTipoIVA.Create(aDataTable: TDADataTable); +begin + inherited; + // Descomentar esto si hay clases detalles + // FDetallesLink := TDADataSource.Create(NIL); + // FDetallesLink.DataTable := aDataTable; + + FSeleccionableInterface := TSeleccionable.Create(aDataTable); +end; + +destructor TBizTipoIVA.Destroy; +begin + // Descomentar esto si hay clases detalles + // FDetalles := NIL; + // FreeAndNIL(FDetallesLink); + + FSeleccionableInterface := NIL; + inherited; +end; + +function TBizTipoIVA.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +procedure TBizTipoIVA.IniciarValoresTipoIVANuevo; +begin + // +end; + +procedure TBizTipoIVA.OnNewRecord(Sender: TDADataTable); +begin + inherited; + ID := GetRecNo; // -1, -2, -3... + IniciarValoresTipoIVANuevo; +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_TIPOIVA, TBizTipoIVA); + +finalization + +end. + diff --git a/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.bdsproj b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.bdsproj new file mode 100644 index 00000000..acee71df --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + TiposIVA_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.dpk b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.dpk new file mode 100644 index 00000000..bb0a1ec9 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.dpk @@ -0,0 +1,42 @@ +package TiposIVA_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + PluginSDK_D10R, + TiposIVA_model, + TiposIVA_controller, + TiposIVA_view; + +contains + uPluginTiposIVA in 'uPluginTiposIVA.pas'; + +end. diff --git a/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.dproj b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.dproj new file mode 100644 index 00000000..50efd3ec --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.dproj @@ -0,0 +1,587 @@ + + + {139324a2-0c57-446d-aebd-edd9578e22fd} + TiposIVA_plugin.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposIVA_plugin.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TiposIVA_plugin.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.rc b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.res b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Tipos de IVA/Plugin/TiposIVA_plugin.res differ diff --git a/Source/Modulos/Tipos de IVA/Plugin/uPluginTiposIVA.dfm b/Source/Modulos/Tipos de IVA/Plugin/uPluginTiposIVA.dfm new file mode 100644 index 00000000..4ee0dc72 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Plugin/uPluginTiposIVA.dfm @@ -0,0 +1,81 @@ +object PluginTiposIVA: TPluginTiposIVA + OldCreateOrder = True + DefaultAction = actTiposIVA + Description = 'Tipos de IVA' + ModuleMenu = MainMenu + ModuleName = 'Tipos de IVA' + 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 = <> + Left = 232 + Top = 16 + end + object ModuleActionList: TActionList + Images = SmallImages + Left = 40 + Top = 72 + object actTiposIVA: TAction + Category = 'TiposIVA' + Caption = 'Tipos de IVA' + ImageIndex = 0 + OnExecute = actTiposIVAExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Ventas1: TMenuItem + Caption = 'Empresa' + object N1: TMenuItem + Tag = 18990 + Caption = '-' + end + object TiposIVA1: TMenuItem + Tag = 19002 + Action = actTiposIVA + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6 + B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77 + EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5 + E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D + 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D + C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6 + 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141 + 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15 + F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334 + 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524 + 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256 + 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4 + 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F + E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = <> + Left = 232 + Top = 80 + end +end diff --git a/Source/Modulos/Tipos de IVA/Plugin/uPluginTiposIVA.pas b/Source/Modulos/Tipos de IVA/Plugin/uPluginTiposIVA.pas new file mode 100644 index 00000000..ac2cba23 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Plugin/uPluginTiposIVA.pas @@ -0,0 +1,74 @@ +unit uPluginTiposIVA; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCTiposIVA = interface(IInterface) + ['{8702CD01-F7E8-4388-9EA1-47620B35DEE6}'] + end; + + TPluginTiposIVA = class(TModuleController, IMCTiposIVA) + actTiposIVA: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Ventas1: TMenuItem; + TiposIVA1: TMenuItem; + N1: TMenuItem; + procedure actTiposIVAExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, SysUtils, + uTiposIVAController, uBizTiposIVA, uTiposIVAViewRegister; + +function GetModule : TModuleController; +begin + Result := TPluginTiposIVA.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TPluginTiposIVA.actTiposIVAExecute(Sender: TObject); +var + ATiposIVAController : ITiposIVAController; + ATiposIVA : IBizTipoIVA; +begin + ATiposIVAController := TTiposIVAController.Create; + ATiposIVA := (ATiposIVAController.BuscarTodos as IBizTipoIVA); + ATiposIVAController.VerTodos(ATiposIVA); +end; + +constructor TPluginTiposIVA.Create(AOwner: TComponent); +begin + inherited; + uTiposIVAViewRegister.RegisterViews; +end; + +destructor TPluginTiposIVA.Destroy; +begin + uTiposIVAViewRegister.UnregisterViews; + inherited; +end; + +initialization + RegisterModuleClass(TPluginTiposIVA); + +finalization + UnRegisterModuleClass(TPluginTiposIVA); + +end. diff --git a/Source/Modulos/Tipos de IVA/Servidor/srvTiposIVA_Impl.dfm b/Source/Modulos/Tipos de IVA/Servidor/srvTiposIVA_Impl.dfm new file mode 100644 index 00000000..78cb5712 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Servidor/srvTiposIVA_Impl.dfm @@ -0,0 +1,274 @@ +object srvTiposIVA: TsrvTiposIVA + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + RequiresSession = True + SessionManager = dmServer.SessionManager + ServiceSchema = schTiposIVA + ServiceDataStreamer = DABinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 300 + Width = 334 + object Diagrams: TDADiagrams + Left = 150 + Top = 80 + DiagramData = ''#13#10''#13#10 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'TIPOS_IVA_ID' + DataType = datInteger + end + item + Name = 'TIPOS_IVA_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + end + item + Name = 'TIPOS_IVA_DESCRIPCION' + DataType = datString + Size = 255 + DisplayLabel = 'Descripci'#243'n' + end + item + Name = 'TIPOS_IVA_IVA' + DataType = datFloat + DisplayLabel = '% IVA' + Alignment = taRightJustify + end + item + Name = 'TIPOS_IVA_RE' + DataType = datFloat + DisplayLabel = '% RE' + Alignment = taRightJustify + end> + Left = 150 + Top = 24 + end + object schTiposIVA: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DataDictionary + Diagrams = Diagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'TIPOS_IVA' + SQL = + 'SELECT '#10' ID, REFERENCIA, DESCRIPCION, IVA, RE'#10' FROM'#10' TIPO' + + 'S_IVA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'IVA' + TableField = 'IVA' + end + item + DatasetField = 'RE' + TableField = 'RE' + end> + end> + Name = 'TiposIVA' + Fields = < + item + Name = 'ID' + DataType = datInteger + DictionaryEntry = 'TIPOS_IVA_ID' + InPrimaryKey = True + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'TIPOS_IVA_REFERENCIA' + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + DictionaryEntry = 'TIPOS_IVA_DESCRIPCION' + end + item + Name = 'IVA' + DataType = datFloat + DictionaryEntry = 'TIPOS_IVA_IVA' + end + item + Name = 'RE' + DataType = datFloat + DictionaryEntry = 'TIPOS_IVA_RE' + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RE' + DataType = datFloat + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'TIPOS_IVA' + SQL = + 'INSERT'#10' INTO TIPOS_IVA'#10' (ID, REFERENCIA, DESCRIPCION, IVA, R' + + 'E)'#10' VALUES'#10' (:ID, :REFERENCIA, :DESCRIPCION, :IVA, :RE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_TiposIVA' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'TIPOS_IVA' + SQL = 'DELETE '#10' FROM'#10' TIPOS_IVA'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_TiposIVA' + end + item + Params = < + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'IVA' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RE' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'TIPOS_IVA' + SQL = + 'UPDATE TIPOS_IVA'#10' SET '#10' REFERENCIA = :REFERENCIA,'#10' DESCRI' + + 'PCION = :DESCRIPCION, '#10' IVA = :IVA, '#10' RE = :RE'#10' WHERE'#10' ' + + ' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_TiposIVA' + end> + RelationShips = <> + UpdateRules = < + item + Name = 'Insert Familias' + DoUpdate = False + DoDelete = False + DatasetName = 'Familias' + FailureBehavior = fbRaiseException + end + item + Name = 'Update Familias' + DoInsert = False + DoDelete = False + DatasetName = 'Familias' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete Familias' + DoUpdate = False + DoInsert = False + DatasetName = 'Familias' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 48 + Top = 24 + end + object bpTiposIVA: TDABusinessProcessor + Schema = schTiposIVA + InsertCommandName = 'Insert_TiposIVA' + DeleteCommandName = 'Delete_TiposIVA' + UpdateCommandName = 'Update_TiposIVA' + ReferencedDataset = 'TiposIVA' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 251 + Top = 24 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 48 + Top = 88 + end +end diff --git a/Source/Modulos/Tipos de IVA/Servidor/srvTiposIVA_Impl.pas b/Source/Modulos/Tipos de IVA/Servidor/srvTiposIVA_Impl.pas new file mode 100644 index 00000000..e890dc44 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Servidor/srvTiposIVA_Impl.pas @@ -0,0 +1,70 @@ +unit srvTiposIVA_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf, uDADataTable, uDABINAdapter, uDAClasses, + uDAScriptingProvider, uDABusinessProcessor, uDADataStreamer; + +type + { TsrvTiposIVA } + TsrvTiposIVA = class(TDataAbstractService, IsrvTiposIVA) + Diagrams: TDADiagrams; + schTiposIVA: TDASchema; + DataDictionary: TDADataDictionary; + bpTiposIVA: TDABusinessProcessor; + DABinDataStreamer: TDABinDataStreamer; + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + private + protected + { IsrvTiposIVA methods } + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, uDatabaseUtils; + +procedure Create_srvTiposIVA(out anInstance : IUnknown); +begin + anInstance := TsrvTiposIVA.Create(NIL); +end; + +{ srvTiposIVA } +procedure TsrvTiposIVA.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; +end; + +procedure TsrvTiposIVA.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +function TsrvTiposIVA.GetNextAutoInc(const GeneratorName: String): Integer; +begin + Result := uDatabaseUtils.GetNextAutoInc(GeneratorName) +end; + +initialization + TROClassFactory.Create('srvTiposIVA', Create_srvTiposIVA, TsrvTiposIVA_Invoker); + +finalization + +end. diff --git a/Source/Modulos/Tipos de IVA/TiposIVA_Group.bdsgroup b/Source/Modulos/Tipos de IVA/TiposIVA_Group.bdsgroup new file mode 100644 index 00000000..cd54d2ea --- /dev/null +++ b/Source/Modulos/Tipos de IVA/TiposIVA_Group.bdsgroup @@ -0,0 +1,24 @@ + + + + + + + + + + + ..\..\Base\Base.bdsproj + ..\..\Base\GUIBase\GUIBase.bdsproj + ..\..\Base\Usuarios\Usuarios.bdsproj + Model\TiposIVA_model.bdsproj + Data\TiposIVA_data.bdsproj + Controller\TiposIVA_controller.bdsproj + Views\TiposIVA_view.bdsproj + Plugin\TiposIVA_plugin.bdsproj + Base.bpl GUIBase.bpl Usuarios.bpl TiposIVA_model.bpl TiposIVA_data.bpl TiposIVA_controller.bpl TiposIVA_view.bpl TiposIVA_plugin.bpl + + + + diff --git a/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.bdsproj b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.bdsproj new file mode 100644 index 00000000..d98ab00a --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + TiposIVA_view.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 0 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.dpk b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.dpk new file mode 100644 index 00000000..58780b3a --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.dpk @@ -0,0 +1,46 @@ +package TiposIVA_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + vcl, + dbrtl, + vcldb, + dsnap, + adortl, + DataAbstract_D10, + Base, + TiposIVA_model, + TiposIVA_data, + TiposIVA_controller, + JvCmpD10R; + +contains + uTiposIVAViewRegister in 'uTiposIVAViewRegister.pas', + uEditorTiposIVA in 'uEditorTiposIVA.pas' {fEditorTiposIVA: TfEditorTiposIVA}, + uEditorTipoIVA in 'uEditorTipoIVA.pas' {fEditorTipoIVA: TfEditorTipoIVA}; + +end. diff --git a/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.dproj b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.dproj new file mode 100644 index 00000000..e694cb98 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.dproj @@ -0,0 +1,595 @@ + + + {911c25fd-90ea-4e70-aa53-99f37be38b57} + TiposIVA_view.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\TiposIVA_view.bpl + + + 7.0 + False + False + 0 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\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 + DEBUG + + + Delphi.Personality + Package + + + False + True + False + + + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + TiposIVA_view.dpk + + + + + + + MainSource + + + + + + + + + + + + + + +
fEditorTipoIVA
+
+ +
fEditorTiposIVA
+
+ +
+ +
+ + diff --git a/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.rc b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.rc new file mode 100644 index 00000000..e69de29b diff --git a/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.res b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.res new file mode 100644 index 00000000..86c94e6a Binary files /dev/null and b/Source/Modulos/Tipos de IVA/Views/TiposIVA_view.res differ diff --git a/Source/Modulos/Tipos de IVA/Views/uEditorTipoIVA.dfm b/Source/Modulos/Tipos de IVA/Views/uEditorTipoIVA.dfm new file mode 100644 index 00000000..4b5225a4 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/uEditorTipoIVA.dfm @@ -0,0 +1,184 @@ +object fEditorTipoIVA: TfEditorTipoIVA + Left = 453 + Top = 234 + ActiveControl = eReferencia + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Tipo de IVA' + ClientHeight = 248 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 16 + Top = 17 + Width = 122 + Height = 13 + Caption = 'Datos del tipo de IVA' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object Bevel1: TBevel + Left = 173 + Top = 17 + Width = 212 + Height = 10 + Shape = bsBottomLine + end + object Label2: TLabel + Left = 62 + Top = 43 + Width = 55 + Height = 13 + Alignment = taRightJustify + Caption = 'Referencia:' + end + object Label3: TLabel + Left = 58 + Top = 71 + Width = 59 + Height = 13 + Alignment = taRightJustify + Caption = 'Descripci'#243'n:' + end + object Label8: TLabel + Left = 86 + Top = 105 + Width = 31 + Height = 13 + Alignment = taRightJustify + Caption = '% IVA:' + end + object Bevel4: TBevel + Left = 8 + Top = 189 + Width = 388 + Height = 10 + Shape = bsBottomLine + end + object Label4: TLabel + Left = 88 + Top = 134 + Width = 29 + Height = 13 + Alignment = taRightJustify + Caption = '% RE:' + end + object JvEnterAsTab1: TJvEnterAsTab + Left = 123 + Top = 205 + Width = 28 + Height = 28 + end + object bAceptar: TButton + Left = 238 + Top = 213 + Width = 75 + Height = 23 + Action = actAceptar + Default = True + TabOrder = 4 + end + object bCancelar: TButton + Left = 319 + Top = 213 + Width = 75 + Height = 23 + Action = actCancelar + Cancel = True + TabOrder = 5 + end + object eReferencia: TDBEdit + Left = 123 + Top = 40 + Width = 262 + Height = 21 + Color = clInfoBk + DataField = 'REFERENCIA' + DataSource = dsTipoIVA + TabOrder = 0 + end + object eDescripcion: TDBEdit + Left = 123 + Top = 68 + Width = 262 + Height = 21 + Color = clInfoBk + DataField = 'DESCRIPCION' + DataSource = dsTipoIVA + TabOrder = 1 + end + object eIVA: TcxDBSpinEdit + Left = 123 + Top = 104 + DataBinding.DataField = 'IVA' + DataBinding.DataSource = dsTipoIVA + Properties.AssignedValues.MinValue = True + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Properties.ValueType = vtFloat + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 70 + end + object eRE: TcxDBSpinEdit + Left = 123 + Top = 131 + DataBinding.DataField = 'RE' + DataBinding.DataSource = dsTipoIVA + Properties.AssignedValues.MinValue = True + Properties.ImmediatePost = True + Properties.MaxValue = 100.000000000000000000 + Properties.ValueType = vtFloat + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 3 + Width = 70 + end + object ActionList1: TActionList + Left = 88 + Top = 199 + object actAceptar: TAction + Caption = '&Guardar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'Cerrar' + OnExecute = actCerrarExecute + end + end + object dsTipoIVA: TDADataSource + Left = 48 + Top = 199 + end +end diff --git a/Source/Modulos/Tipos de IVA/Views/uEditorTipoIVA.pas b/Source/Modulos/Tipos de IVA/Views/uEditorTipoIVA.pas new file mode 100644 index 00000000..df574072 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/uEditorTipoIVA.pas @@ -0,0 +1,142 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorTipoIVA; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Grids, DBGrids, StdCtrls, Mask, DBCtrls, DB, + uBizTiposIVA, uTiposIVAController, + uDADataTable, uIEditorTipoIVA, ActnList, ExtCtrls, JvExControls, JvComponent, + JvEnterTab, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit, + cxSpinEdit, cxDBEdit; + +type + TfEditorTipoIVA = class(TForm, IEditorTipoIVA) + ActionList1: TActionList; + dsTipoIVA: TDADataSource; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + eReferencia: TDBEdit; + eDescripcion: TDBEdit; + Label1: TLabel; + Bevel1: TBevel; + Label2: TLabel; + Label3: TLabel; + Label8: TLabel; + Bevel4: TBevel; + Label4: TLabel; + actCerrar: TAction; + JvEnterAsTab1: TJvEnterAsTab; + eIVA: TcxDBSpinEdit; + eRE: TcxDBSpinEdit; + procedure FormShow(Sender: TObject); + + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + protected + FTipoIVA: IBizTipoIVA; + FController : ITiposIVAController; + function GetTipoIVA: IBizTipoIVA; + procedure SetTipoIVA(const Value: IBizTipoIVA); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property TipoIVA: IBizTipoIVA read GetTipoIVA write SetTipoIVA; + end; + + +implementation +{$R *.dfm} + +{ TfEditorTiposIVA } + +uses + uDialogUtils; + +function TfEditorTipoIVA.GetTipoIVA: IBizTipoIVA; +begin + Result := FTipoIVA; +end; + +procedure TfEditorTipoIVA.SetTipoIVA(const Value: IBizTipoIVA); +begin + FTipoIVA := Value; + if Assigned(FTipoIVA) then + begin + dsTipoIVA.DataTable := FTipoIVA.DataTable; + dsTipoIVA.DataTable.Open; + end + else begin + dsTipoIVA.DataTable := NIL; + end; +end; + + +constructor TfEditorTipoIVA.Create(AOwner: TComponent); +begin + inherited; + FController := TTiposIVAController.Create; +end; + +destructor TfEditorTipoIVA.Destroy; +begin + FTipoIVA := NIL; + FController := NIL; + inherited; +end; + +procedure TfEditorTipoIVA.actAceptarExecute(Sender: TObject); +begin + FController.Guardar(FTipoIVA); + actCerrar.Execute; +end; + +procedure TfEditorTipoIVA.actCancelarExecute(Sender: TObject); +begin + FController.DescartarCambios(FTipoIVA); + actCerrar.Execute; +end; + +procedure TfEditorTipoIVA.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorTipoIVA.FormShow(Sender: TObject); +begin + if not FTipoIVA.DataTable.Active then + FTipoIVA.DataTable.Active := True; + + if FTipoIVA.EsNuevo then + Self.Caption := 'Nuevo tipo de IVA' + else + Self.Caption := 'Modificar tipo de IVA'; +end; + +end. diff --git a/Source/Modulos/Tipos de IVA/Views/uEditorTiposIVA.dfm b/Source/Modulos/Tipos de IVA/Views/uEditorTiposIVA.dfm new file mode 100644 index 00000000..73b3801a --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/uEditorTiposIVA.dfm @@ -0,0 +1,164 @@ +object fEditorTiposIVA: TfEditorTiposIVA + Left = 453 + Top = 234 + BorderIcons = [biSystemMenu] + BorderStyle = bsSingle + Caption = 'Lista de tipos de IVA' + ClientHeight = 406 + ClientWidth = 404 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object bAceptar: TButton + Left = 236 + Top = 373 + Width = 75 + Height = 23 + Action = actAceptar + Default = True + TabOrder = 1 + end + object bCancelar: TButton + Left = 321 + Top = 373 + Width = 75 + Height = 23 + Action = actCancelar + Cancel = True + TabOrder = 2 + end + object PageControl1: TPageControl + Left = 6 + Top = 8 + Width = 390 + Height = 356 + ActivePage = TabSheet1 + TabOrder = 0 + object TabSheet1: TTabSheet + Caption = 'Tipos de IVA' + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 0 + ExplicitHeight = 0 + object Label1: TLabel + Left = 6 + Top = 12 + Width = 152 + Height = 13 + Caption = 'Lista de tipos de IVA disponibles' + end + object bEliminar: TButton + Left = 284 + Top = 90 + Width = 95 + Height = 23 + Action = actEliminar + TabOrder = 0 + end + object bAnadir: TButton + Left = 284 + Top = 31 + Width = 95 + Height = 23 + Action = actAnadir + TabOrder = 1 + end + object Button1: TButton + Left = 284 + Top = 61 + Width = 95 + Height = 23 + Action = actModificar + TabOrder = 2 + end + object ListaTiposIVA: TDBGrid + Left = 6 + Top = 31 + Width = 272 + Height = 289 + DataSource = dsTiposIVA + Options = [dgTitles, dgColumnResize, dgTabs, dgRowSelect, dgAlwaysShowSelection, dgCancelOnExit] + TabOrder = 3 + TitleFont.Charset = DEFAULT_CHARSET + TitleFont.Color = clWindowText + TitleFont.Height = -11 + TitleFont.Name = 'MS Sans Serif' + TitleFont.Style = [] + OnDblClick = ListaTiposIVADblClick + Columns = < + item + Expanded = False + FieldName = 'REFERENCIA' + Title.Caption = 'Referencia' + Width = 60 + Visible = True + end + item + Expanded = False + FieldName = 'DESCRIPCION' + Title.Caption = 'Descripci'#243'n' + Width = 97 + Visible = True + end + item + Expanded = False + FieldName = 'IVA' + Title.Alignment = taRightJustify + Title.Caption = '% IVA' + Width = 41 + Visible = True + end + item + Expanded = False + FieldName = 'RE' + Title.Alignment = taRightJustify + Title.Caption = '% RE' + Visible = True + end> + end + end + end + object ActionList1: TActionList + Left = 144 + Top = 16 + object actAnadir: TAction + Caption = '&A'#241'adir...' + OnExecute = actAnadirExecute + OnUpdate = actAnadirUpdate + end + object actEliminar: TAction + Caption = '&Eliminar' + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + object actAceptar: TAction + Caption = 'A&ceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + object actCerrar: TAction + Caption = 'actCerrar' + OnExecute = actCerrarExecute + end + object actModificar: TAction + Caption = '&Modificar...' + OnExecute = actModificarExecute + OnUpdate = actModificarUpdate + end + end + object dsTiposIVA: TDADataSource + Left = 168 + Top = 16 + end +end diff --git a/Source/Modulos/Tipos de IVA/Views/uEditorTiposIVA.pas b/Source/Modulos/Tipos de IVA/Views/uEditorTiposIVA.pas new file mode 100644 index 00000000..c1dbbbd7 --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/uEditorTiposIVA.pas @@ -0,0 +1,184 @@ +{ +=============================================================================== + Copyright () 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: 22-05-2006 + Versin actual: 1.0.0 + Fecha versin actual: 22-05-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uEditorTiposIVA; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uIEditorTiposIVA, uBizTiposIVA, uTiposIVAController, DB, uDADataTable, + ActnList, Grids, DBGrids, StdCtrls, ComCtrls; + +type + TfEditorTiposIVA = class(TForm, IEditorTiposIVA) + ActionList1: TActionList; + dsTiposIVA: TDADataSource; + actAnadir: TAction; + actEliminar: TAction; + bEliminar: TButton; + actAceptar: TAction; + actCancelar: TAction; + bAceptar: TButton; + bCancelar: TButton; + actCerrar: TAction; + PageControl1: TPageControl; + TabSheet1: TTabSheet; + Label1: TLabel; + bAnadir: TButton; + actModificar: TAction; + Button1: TButton; + ListaTiposIVA: TDBGrid; + procedure FormShow(Sender: TObject); + + procedure actAnadirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure actCerrarExecute(Sender: TObject); + procedure actAnadirUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure ListaTiposIVADblClick(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + protected + FTiposIVA: IBizTipoIVA; + FController: ITiposIVAController; + function GetTiposIVA: IBizTipoIVA; + procedure SetTiposIVA(const Value: IBizTipoIVA); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property TiposIVA: IBizTipoIVA read GetTiposIVA write SetTiposIVA; + end; + + +implementation +{$R *.dfm} + +{ TfEditorTiposIVA } + +uses + uDialogUtils; + +function TfEditorTiposIVA.GetTiposIVA: IBizTipoIVA; +begin + Result := FTiposIVA; +end; + +procedure TfEditorTiposIVA.ListaTiposIVADblClick(Sender: TObject); +begin +// ListaTiposIVA.SelectedIndex +end; + +procedure TfEditorTiposIVA.SetTiposIVA(const Value: IBizTipoIVA); +begin + FTiposIVA := Value; + dsTiposIVA.DataTable := (FTiposIVA as IBizTipoIVA).DataTable; + dsTiposIVA.DataTable.Open; +end; + +procedure TfEditorTiposIVA.actAnadirExecute(Sender: TObject); +begin + FController.Anadir(TiposIVA); + FController.Ver(TiposIVA); +end; + +procedure TfEditorTiposIVA.actEliminarExecute(Sender: TObject); +begin + if (ShowConfirmMessage('Desea borrar esta forma de pago?', '') = IDYES) then + FController.Eliminar(FTiposIVA) +end; + +procedure TfEditorTiposIVA.actEliminarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FTiposIVA) and + FTiposIVA.DataTable.Active and + (FTiposIVA.DataTable.RecordCount > 0); +end; + +procedure TfEditorTiposIVA.actModificarExecute(Sender: TObject); +begin + FController.Ver(TiposIVA); +end; + +procedure TfEditorTiposIVA.actModificarUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FTiposIVA) and + FTiposIVA.DataTable.Active and + (FTiposIVA.DataTable.RecordCount > 0); +end; + +constructor TfEditorTiposIVA.Create(AOwner: TComponent); +begin + inherited; + FController := TTiposIVAController.Create; +end; + +destructor TfEditorTiposIVA.Destroy; +begin + FTiposIVA := NIL; + FController := NIL; + inherited; +end; + +procedure TfEditorTiposIVA.actAceptarExecute(Sender: TObject); +begin + try + TiposIVA.DataTable.ApplyUpdates; + except + on E : Exception do begin + TiposIVA.DataTable.CancelUpdates; + ShowErrorMessage('Error al guardar cambios', 'Se ha producido un error grave', E); + exit; + end; + end; + actCerrar.Execute; +end; + +procedure TfEditorTiposIVA.actCancelarExecute(Sender: TObject); +begin + TiposIVA.DataTable.CancelUpdates; + actCerrar.Execute; +end; + +procedure TfEditorTiposIVA.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorTiposIVA.actAnadirUpdate(Sender: TObject); +begin + (Sender as TAction).Enabled := Assigned(FTiposIVA) and + FTiposIVA.DataTable.Active; +end; + +procedure TfEditorTiposIVA.FormShow(Sender: TObject); +begin + if not FTiposIVA.DataTable.Active then + FTiposIVA.DataTable.Active := true; + + ListaTiposIVA.SetFocus; +end; + +end. diff --git a/Source/Modulos/Tipos de IVA/Views/uTiposIVAViewRegister.pas b/Source/Modulos/Tipos de IVA/Views/uTiposIVAViewRegister.pas new file mode 100644 index 00000000..8286c0cb --- /dev/null +++ b/Source/Modulos/Tipos de IVA/Views/uTiposIVAViewRegister.pas @@ -0,0 +1,48 @@ +{ +=============================================================================== + Copyright () 2007. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero slo podr ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los trminos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versin: + Versin actual: 1.0.0 + Fecha versin actual: +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uTiposIVAViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, uEditorTipoIVA, uEditorTiposIVA; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorTiposIVA, 'EditorTiposIVA'); + EditorRegistry.RegisterClass(TfEditorTipoIVA, 'EditorTipoIVA'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorTiposIVA); + EditorRegistry.UnRegisterClass(TfEditorTipoIVA); +end; + +end. diff --git a/Source/Servicios/FactuGES.RODL b/Source/Servicios/FactuGES.RODL new file mode 100644 index 00000000..4182462e --- /dev/null +++ b/Source/Servicios/FactuGES.RODL @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Servicios/FactuGES_Intf.pas b/Source/Servicios/FactuGES_Intf.pas new file mode 100644 index 00000000..04aa2b4a --- /dev/null +++ b/Source/Servicios/FactuGES_Intf.pas @@ -0,0 +1,803 @@ +unit FactuGES_Intf; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, TypInfo, + {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, + {Used RODLs:} DataAbstract4_Intf; + +const + { Library ID } + LibraryUID = '{99553DD5-13B5-40EB-B7E6-D2B9A7C1B4D6}'; + TargetNamespace = ''; + + { Service Interface ID's } + IsrvContactos_IID : TGUID = '{28CCDC07-A3A4-4917-89B4-64423DC70C9D}'; + IsrvLogin_IID : TGUID = '{399F9DB4-1B34-4140-AB6E-3BC10C0A7034}'; + IsrvEmpresas_IID : TGUID = '{590F06D1-26B4-435B-B636-50CB8FFE6353}'; + IsrvConfiguracion_IID : TGUID = '{0882B8A4-C8AA-424E-8FC1-C6226B670522}'; + IsrvFamilias_IID : TGUID = '{D351175C-CBFD-4328-BF2A-FDC0B05A6308}'; + IsrvFormasPago_IID : TGUID = '{38AA9F85-B454-4A87-B6E8-E9C8BB2A17D9}'; + IsrvTiposIVA_IID : TGUID = '{09B44AB5-6212-448A-8DF2-A503E3F2C9B1}'; + + { Event ID's } + +type + { Forward declarations } + IsrvContactos = interface; + IsrvLogin = interface; + IsrvEmpresas = interface; + IsrvConfiguracion = interface; + IsrvFamilias = interface; + IsrvFormasPago = interface; + IsrvTiposIVA = interface; + + TRdxEmpresasArray = class; + + TRdxLoginInfo = class; + + + + { Enumerateds } + + { TRdxLoginInfo } + TRdxLoginInfo = class(TROComplexType) + private + fUserID: Integer; + fSessionID: String; + fUsuario: String; + fPerfiles: StringArray; + fEmpresas: TRdxEmpresasArray; + function GetPerfiles: StringArray; + function GetEmpresas: TRdxEmpresasArray; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property UserID:Integer read fUserID write fUserID; + property SessionID:String read fSessionID write fSessionID; + property Usuario:String read fUsuario write fUsuario; + property Perfiles:StringArray read GetPerfiles write fPerfiles; + property Empresas:TRdxEmpresasArray read GetEmpresas write fEmpresas; + end; + + { TRdxLoginInfoCollection } + TRdxLoginInfoCollection = class(TROCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TRdxLoginInfo; + procedure SetItems(aIndex: integer; const Value: TRdxLoginInfo); + public + constructor Create; overload; + function Add: TRdxLoginInfo; reintroduce; + property Items[Index: integer]:TRdxLoginInfo read GetItems write SetItems; default; + end; + + { TRdxEmpresasArray } + TRdxEmpresasArray_Integer = array of Integer; + TRdxEmpresasArray = class(TROArray) + private + fCount: Integer; + fItems : TRdxEmpresasArray_Integer; + protected + procedure Grow; virtual; + function GetItems(aIndex: integer): Integer; + procedure SetItems(aIndex: integer; const Value: Integer); + function GetCount: integer; override; + public + class function GetItemType: PTypeInfo; override; + class function GetItemSize: integer; override; + function GetItemRef(aIndex: integer): pointer; override; + procedure Clear; override; + procedure Delete(aIndex: integer); override; + procedure Resize(ElementCount: integer); override; + + procedure Assign(iSource:TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + function Add(const Value:Integer): integer; + + property Count : integer read GetCount; + property Items[Index: integer]:Integer read GetItems write SetItems; default; + property InnerArray: TRdxEmpresasArray_Integer read fItems; + end; + + { IsrvContactos } + IsrvContactos = interface(IDataAbstractService) + ['{28CCDC07-A3A4-4917-89B4-64423DC70C9D}'] + function GetNextAutoInc(const GeneratorName: String): Integer; + function GenerateFichaEmpleadoReport(const EmpleadoID: String): Binary; + function GenerateEtiquetasReport(const ContactosID: String): Binary; + end; + + { CosrvContactos } + CosrvContactos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos; + end; + + { TsrvContactos_Proxy } + TsrvContactos_Proxy = class(TDataAbstractService_Proxy, IsrvContactos) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoInc(const GeneratorName: String): Integer; + function GenerateFichaEmpleadoReport(const EmpleadoID: String): Binary; + function GenerateEtiquetasReport(const ContactosID: String): Binary; + end; + + { IsrvLogin } + IsrvLogin = interface(IDataAbstractService) + ['{399F9DB4-1B34-4140-AB6E-3BC10C0A7034}'] + function Login(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + end; + + { CosrvLogin } + CosrvLogin = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; + end; + + { TsrvLogin_Proxy } + TsrvLogin_Proxy = class(TDataAbstractService_Proxy, IsrvLogin) + protected + function __GetInterfaceName:string; override; + + function Login(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + end; + + { IsrvEmpresas } + IsrvEmpresas = interface(IDataAbstractService) + ['{590F06D1-26B4-435B-B636-50CB8FFE6353}'] + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + + { CosrvEmpresas } + CosrvEmpresas = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEmpresas; + end; + + { TsrvEmpresas_Proxy } + TsrvEmpresas_Proxy = class(TDataAbstractService_Proxy, IsrvEmpresas) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + + { IsrvConfiguracion } + IsrvConfiguracion = interface(IDataAbstractService) + ['{0882B8A4-C8AA-424E-8FC1-C6226B670522}'] + function darValor(const CODIGO: String): String; + end; + + { CosrvConfiguracion } + CosrvConfiguracion = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion; + end; + + { TsrvConfiguracion_Proxy } + TsrvConfiguracion_Proxy = class(TDataAbstractService_Proxy, IsrvConfiguracion) + protected + function __GetInterfaceName:string; override; + + function darValor(const CODIGO: String): String; + end; + + { IsrvFamilias } + IsrvFamilias = interface(IDataAbstractService) + ['{D351175C-CBFD-4328-BF2A-FDC0B05A6308}'] + end; + + { CosrvFamilias } + CosrvFamilias = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFamilias; + end; + + { TsrvFamilias_Proxy } + TsrvFamilias_Proxy = class(TDataAbstractService_Proxy, IsrvFamilias) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvFormasPago } + IsrvFormasPago = interface(IDataAbstractService) + ['{38AA9F85-B454-4A87-B6E8-E9C8BB2A17D9}'] + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + + { CosrvFormasPago } + CosrvFormasPago = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFormasPago; + end; + + { TsrvFormasPago_Proxy } + TsrvFormasPago_Proxy = class(TDataAbstractService_Proxy, IsrvFormasPago) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + + { IsrvTiposIVA } + IsrvTiposIVA = interface(IDataAbstractService) + ['{09B44AB5-6212-448A-8DF2-A503E3F2C9B1}'] + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + + { CosrvTiposIVA } + CosrvTiposIVA = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTiposIVA; + end; + + { TsrvTiposIVA_Proxy } + TsrvTiposIVA_Proxy = class(TDataAbstractService_Proxy, IsrvTiposIVA) + protected + function __GetInterfaceName:string; override; + + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ TRdxEmpresasArray } + +procedure TRdxEmpresasArray.Assign(iSource: TPersistent); +var lSource:TRdxEmpresasArray; + i:integer; +begin + if (iSource is TRdxEmpresasArray) then begin + lSource := TRdxEmpresasArray(iSource); + Clear(); + Resize(lSource.Count); + + for i := 0 to Count-1 do begin + Items[i] := lSource.Items[i]; + end; + end + else begin + inherited Assign(iSource); + end; +end; + +class function TRdxEmpresasArray.GetItemType: PTypeInfo; +begin + result := TypeInfo(Integer); +end; + +class function TRdxEmpresasArray.GetItemSize: integer; +begin + result := SizeOf(Integer); +end; + +function TRdxEmpresasArray.GetItems(aIndex: integer): Integer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := fItems[aIndex]; +end; + +function TRdxEmpresasArray.GetItemRef(aIndex: integer): pointer; +begin + if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + result := @fItems[aIndex]; +end; + +procedure TRdxEmpresasArray.Clear; +begin + SetLength(fItems, 0); + FCount := 0; +end; + +procedure TRdxEmpresasArray.Delete(aIndex: integer); +var i: integer; +begin + if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); + + if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); + if fItems[aIndex] <> Value then begin + fItems[aIndex] := Value; + end; +end; + +procedure TRdxEmpresasArray.Resize(ElementCount: integer); +begin + if fCount = ElementCount then Exit; + SetLength(fItems, ElementCount); + FCount := ElementCount; +end; + +function TRdxEmpresasArray.GetCount: integer; +begin + result := FCount; +end; + +procedure TRdxEmpresasArray.Grow; +var + Delta, Capacity: Integer; +begin + Capacity := Length(fItems); + if Capacity > 64 then + Delta := Capacity div 4 + else + if Capacity > 8 then + Delta := 16 + else + Delta := 4; + SetLength(fItems, Capacity + Delta); +end; + +function TRdxEmpresasArray.Add(const Value: Integer): integer; +begin + Result := Count; + if Length(fItems) = Result then + Grow; + fItems[result] := Value; + Inc(fCount); +end; + +procedure TRdxEmpresasArray.ReadComplex(ASerializer: TObject); +var + lval: Integer; + i: integer; +begin + for i := 0 to Count-1 do begin + with TROSerializer(ASerializer) do + ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i); + Items[i] := lval; + end; +end; + +procedure TRdxEmpresasArray.WriteComplex(ASerializer: TObject); +var + i: integer; +begin + for i := 0 to Count-1 do + with TROSerializer(ASerializer) do + WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i); +end; + +{ TRdxLoginInfo } + +procedure TRdxLoginInfo.Assign(iSource: TPersistent); +var lSource: FactuGES_Intf.TRdxLoginInfo; +begin + inherited Assign(iSource); + if (iSource is FactuGES_Intf.TRdxLoginInfo) then begin + lSource := FactuGES_Intf.TRdxLoginInfo(iSource); + UserID := lSource.UserID; + SessionID := lSource.SessionID; + Usuario := lSource.Usuario; + Perfiles.Assign(lSource.Perfiles); + Empresas.Assign(lSource.Empresas); + end; +end; + +function TRdxLoginInfo.GetPerfiles: StringArray; +begin + if (fPerfiles = nil) then fPerfiles := StringArray.Create(); + result := fPerfiles; +end; + +function TRdxLoginInfo.GetEmpresas: TRdxEmpresasArray; +begin + if (fEmpresas = nil) then fEmpresas := TRdxEmpresasArray.Create(); + result := fEmpresas; +end; + +procedure TRdxLoginInfo.ReadComplex(ASerializer: TObject); +var + l_Empresas: TRdxEmpresasArray; + l_Perfiles: StringArray; + l_SessionID: String; + l_UserID: Integer; + l_Usuario: String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_UserID := UserID; + TROSerializer(ASerializer).ReadInteger('UserID', otSLong, l_UserID); + UserID := l_UserID; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_Usuario := Usuario; + TROSerializer(ASerializer).ReadUTF8String('Usuario', l_Usuario); + Usuario := l_Usuario; + l_Perfiles := Perfiles; + TROSerializer(ASerializer).ReadArray('Perfiles', StringArray, l_Perfiles); + if Perfiles <> l_Perfiles then Perfiles.Free; + Perfiles := l_Perfiles; + l_Empresas := Empresas; + TROSerializer(ASerializer).ReadArray('Empresas', TRdxEmpresasArray, l_Empresas); + if Empresas <> l_Empresas then Empresas.Free; + Empresas := l_Empresas; + end + else begin + l_Empresas := Empresas; + TROSerializer(ASerializer).ReadArray('Empresas', TRdxEmpresasArray, l_Empresas); + if Empresas <> l_Empresas then Empresas.Free; + Empresas := l_Empresas; + l_Perfiles := Perfiles; + TROSerializer(ASerializer).ReadArray('Perfiles', StringArray, l_Perfiles); + if Perfiles <> l_Perfiles then Perfiles.Free; + Perfiles := l_Perfiles; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadInteger('UserID', otSLong, l_UserID); + UserID := l_UserID; + l_Usuario := Usuario; + TROSerializer(ASerializer).ReadUTF8String('Usuario', l_Usuario); + Usuario := l_Usuario; + end; +end; + +procedure TRdxLoginInfo.WriteComplex(ASerializer: TObject); +var + l_Empresas: TRdxEmpresasArray; + l_Perfiles: StringArray; + l_SessionID: String; + l_UserID: Integer; + l_Usuario: String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + l_UserID := UserID; + TROSerializer(ASerializer).WriteInteger('UserID', otSLong, l_UserID); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_Usuario := Usuario; + TROSerializer(ASerializer).WriteUTF8String('Usuario', l_Usuario); + l_Perfiles := Perfiles; + TROSerializer(ASerializer).WriteArray('Perfiles', l_Perfiles); + l_Empresas := Empresas; + TROSerializer(ASerializer).WriteArray('Empresas', l_Empresas); + end + else begin + l_Empresas := Empresas; + TROSerializer(ASerializer).WriteArray('Empresas', l_Empresas); + l_Perfiles := Perfiles; + TROSerializer(ASerializer).WriteArray('Perfiles', l_Perfiles); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteInteger('UserID', otSLong, l_UserID); + l_Usuario := Usuario; + TROSerializer(ASerializer).WriteUTF8String('Usuario', l_Usuario); + end; +end; + +{ TRdxLoginInfoCollection } +constructor TRdxLoginInfoCollection.Create; +begin + inherited Create(TRdxLoginInfo); +end; + +constructor TRdxLoginInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TRdxLoginInfoCollection.Add: TRdxLoginInfo; +begin + result := TRdxLoginInfo(inherited Add); +end; + +function TRdxLoginInfoCollection.GetItems(aIndex: integer): TRdxLoginInfo; +begin + result := TRdxLoginInfo(inherited Items[aIndex]); +end; + +procedure TRdxLoginInfoCollection.SetItems(aIndex: integer; const Value: TRdxLoginInfo); +begin + TRdxLoginInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ CosrvContactos } + +class function CosrvContactos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos; +begin + result := TsrvContactos_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvContactos_Proxy } + +function TsrvContactos_Proxy.__GetInterfaceName:string; +begin + result := 'srvContactos'; +end; + +function TsrvContactos_Proxy.GetNextAutoInc(const GeneratorName: String): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc'); + __Message.Write('GeneratorName', TypeInfo(String), GeneratorName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvContactos_Proxy.GenerateFichaEmpleadoReport(const EmpleadoID: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateFichaEmpleadoReport'); + __Message.Write('EmpleadoID', TypeInfo(String), EmpleadoID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvContactos_Proxy.GenerateEtiquetasReport(const ContactosID: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateEtiquetasReport'); + __Message.Write('ContactosID', TypeInfo(String), ContactosID, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvLogin } + +class function CosrvLogin.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; +begin + result := TsrvLogin_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvLogin_Proxy } + +function TsrvLogin_Proxy.__GetInterfaceName:string; +begin + result := 'srvLogin'; +end; + +function TsrvLogin_Proxy.Login(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean; +begin + try + LoginInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Login'); + __Message.Write('User', TypeInfo(String), User, []); + __Message.Write('Password', TypeInfo(String), Password, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('LoginInfo', TypeInfo(FactuGES_Intf.TRdxLoginInfo), LoginInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TsrvLogin_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +function TsrvLogin_Proxy.Ping: Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Ping'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvEmpresas } + +class function CosrvEmpresas.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEmpresas; +begin + result := TsrvEmpresas_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvEmpresas_Proxy } + +function TsrvEmpresas_Proxy.__GetInterfaceName:string; +begin + result := 'srvEmpresas'; +end; + +function TsrvEmpresas_Proxy.GetNextAutoInc(const GeneratorName: String): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc'); + __Message.Write('GeneratorName', TypeInfo(String), GeneratorName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvConfiguracion } + +class function CosrvConfiguracion.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion; +begin + result := TsrvConfiguracion_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvConfiguracion_Proxy } + +function TsrvConfiguracion_Proxy.__GetInterfaceName:string; +begin + result := 'srvConfiguracion'; +end; + +function TsrvConfiguracion_Proxy.darValor(const CODIGO: String): String; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'darValor'); + __Message.Write('CODIGO', TypeInfo(String), CODIGO, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(String), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvFamilias } + +class function CosrvFamilias.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFamilias; +begin + result := TsrvFamilias_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvFamilias_Proxy.__GetInterfaceName:string; +begin + result := 'srvFamilias'; +end; + +{ CosrvFormasPago } + +class function CosrvFormasPago.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFormasPago; +begin + result := TsrvFormasPago_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvFormasPago_Proxy } + +function TsrvFormasPago_Proxy.__GetInterfaceName:string; +begin + result := 'srvFormasPago'; +end; + +function TsrvFormasPago_Proxy.GetNextAutoInc(const GeneratorName: String): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc'); + __Message.Write('GeneratorName', TypeInfo(String), GeneratorName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvTiposIVA } + +class function CosrvTiposIVA.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTiposIVA; +begin + result := TsrvTiposIVA_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvTiposIVA_Proxy } + +function TsrvTiposIVA_Proxy.__GetInterfaceName:string; +begin + result := 'srvTiposIVA'; +end; + +function TsrvTiposIVA_Proxy.GetNextAutoInc(const GeneratorName: String): Integer; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GetNextAutoInc'); + __Message.Write('GeneratorName', TypeInfo(String), GeneratorName, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Integer), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +initialization + RegisterROClass(TRdxLoginInfo); + RegisterROClass(TRdxEmpresasArray); + RegisterProxyClass(IsrvContactos_IID, TsrvContactos_Proxy); + RegisterProxyClass(IsrvLogin_IID, TsrvLogin_Proxy); + RegisterProxyClass(IsrvEmpresas_IID, TsrvEmpresas_Proxy); + RegisterProxyClass(IsrvConfiguracion_IID, TsrvConfiguracion_Proxy); + RegisterProxyClass(IsrvFamilias_IID, TsrvFamilias_Proxy); + RegisterProxyClass(IsrvFormasPago_IID, TsrvFormasPago_Proxy); + RegisterProxyClass(IsrvTiposIVA_IID, TsrvTiposIVA_Proxy); + + +finalization + UnregisterROClass(TRdxLoginInfo); + UnregisterROClass(TRdxEmpresasArray); + UnregisterProxyClass(IsrvContactos_IID); + UnregisterProxyClass(IsrvLogin_IID); + UnregisterProxyClass(IsrvEmpresas_IID); + UnregisterProxyClass(IsrvConfiguracion_IID); + UnregisterProxyClass(IsrvFamilias_IID); + UnregisterProxyClass(IsrvFormasPago_IID); + UnregisterProxyClass(IsrvTiposIVA_IID); + +end. diff --git a/Source/Servicios/FactuGES_Invk.pas b/Source/Servicios/FactuGES_Invk.pas new file mode 100644 index 00000000..5de2c579 --- /dev/null +++ b/Source/Servicios/FactuGES_Invk.pas @@ -0,0 +1,326 @@ +unit FactuGES_Invk; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ Do not modify this unit manually, or your changes will be lost when this } +{ unit is regenerated the next time you compile the project. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, + {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, + {Used RODL Intf's:} DataAbstract4_Intf, + {Used RODL Invk's:} DataAbstract4_Invk, + {Generated:} FactuGES_Intf; + +type + {$M+} + TsrvContactos_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateFichaEmpleadoReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateEtiquetasReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvLogin_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_Ping(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvEmpresas_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvConfiguracion_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_darValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvFamilias_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvFormasPago_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvTiposIVA_Invoker = class(TDataAbstractService_Invoker) + private + protected + published + procedure Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TsrvContactos_Invoker } + +procedure TsrvContactos_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoInc(const GeneratorName: String): Integer; } +var + GeneratorName: String; + lResult: Integer; +begin + try + __Message.Read('GeneratorName', TypeInfo(String), GeneratorName, []); + + lResult := (__Instance as IsrvContactos).GetNextAutoInc(GeneratorName); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvContactos', 'GetNextAutoIncResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TsrvContactos_Invoker.Invoke_GenerateFichaEmpleadoReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateFichaEmpleadoReport(const EmpleadoID: String): Binary; } +var + EmpleadoID: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('EmpleadoID', TypeInfo(String), EmpleadoID, []); + + lResult := (__Instance as IsrvContactos).GenerateFichaEmpleadoReport(EmpleadoID); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvContactos', 'GenerateFichaEmpleadoReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvContactos_Invoker.Invoke_GenerateEtiquetasReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateEtiquetasReport(const ContactosID: String): Binary; } +var + ContactosID: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('ContactosID', TypeInfo(String), ContactosID, []); + + lResult := (__Instance as IsrvContactos).GenerateEtiquetasReport(ContactosID); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvContactos', 'GenerateEtiquetasReportResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TsrvLogin_Invoker } + +procedure TsrvLogin_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean; } +var + User: String; + Password: String; + LoginInfo: FactuGES_Intf.TRdxLoginInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + LoginInfo := nil; + try + __Message.Read('User', TypeInfo(String), User, []); + __Message.Read('Password', TypeInfo(String), Password, []); + + lResult := (__Instance as IsrvLogin).Login(User, Password, LoginInfo); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvLogin', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('LoginInfo', TypeInfo(FactuGES_Intf.TRdxLoginInfo), LoginInfo, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(LoginInfo); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvLogin_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure Logout; } +begin + try + (__Instance as IsrvLogin).Logout; + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvLogin', 'LogoutResponse'); + __Message.Finalize; + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +procedure TsrvLogin_Invoker.Invoke_Ping(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Ping: Boolean; } +var + lResult: Boolean; +begin + try + lResult := (__Instance as IsrvLogin).Ping; + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvLogin', 'PingResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TsrvEmpresas_Invoker } + +procedure TsrvEmpresas_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoInc(const GeneratorName: String): Integer; } +var + GeneratorName: String; + lResult: Integer; +begin + try + __Message.Read('GeneratorName', TypeInfo(String), GeneratorName, []); + + lResult := (__Instance as IsrvEmpresas).GetNextAutoInc(GeneratorName); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvEmpresas', 'GetNextAutoIncResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TsrvConfiguracion_Invoker } + +procedure TsrvConfiguracion_Invoker.Invoke_darValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function darValor(const CODIGO: String): String; } +var + CODIGO: String; + lResult: String; +begin + try + __Message.Read('CODIGO', TypeInfo(String), CODIGO, []); + + lResult := (__Instance as IsrvConfiguracion).darValor(CODIGO); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvConfiguracion', 'darValorResponse'); + __Message.Write('Result', TypeInfo(String), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TsrvFormasPago_Invoker } + +procedure TsrvFormasPago_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoInc(const GeneratorName: String): Integer; } +var + GeneratorName: String; + lResult: Integer; +begin + try + __Message.Read('GeneratorName', TypeInfo(String), GeneratorName, []); + + lResult := (__Instance as IsrvFormasPago).GetNextAutoInc(GeneratorName); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvFormasPago', 'GetNextAutoIncResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TsrvTiposIVA_Invoker } + +procedure TsrvTiposIVA_Invoker.Invoke_GetNextAutoInc(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetNextAutoInc(const GeneratorName: String): Integer; } +var + GeneratorName: String; + lResult: Integer; +begin + try + __Message.Read('GeneratorName', TypeInfo(String), GeneratorName, []); + + lResult := (__Instance as IsrvTiposIVA).GetNextAutoInc(GeneratorName); + + __Message.InitializeResponseMessage(__Transport, 'FactuGES', 'srvTiposIVA', 'GetNextAutoIncResponse'); + __Message.Write('Result', TypeInfo(Integer), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +end. diff --git a/Source/Servicios/RODLFILE.res b/Source/Servicios/RODLFILE.res new file mode 100644 index 00000000..7d450b11 Binary files /dev/null and b/Source/Servicios/RODLFILE.res differ diff --git a/Source/Servicios/srvConfiguracion_Impl.dfm b/Source/Servicios/srvConfiguracion_Impl.dfm new file mode 100644 index 00000000..65c6da91 --- /dev/null +++ b/Source/Servicios/srvConfiguracion_Impl.dfm @@ -0,0 +1,57 @@ +object srvConfiguracion: TsrvConfiguracion + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + SessionManager = dmServer.SessionManager + ConnectionName = 'IBX' + ServiceSchema = schConfiguracion + ServiceDataStreamer = DABinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 160 + Width = 300 + object schConfiguracion: TDASchema + ConnectionManager = dmServer.ConnectionManager + Datasets = < + item + Params = < + item + Name = 'CODIGO' + DataType = datString + Size = 50 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'CONFIGURACION' + SQL = 'SELECT VALOR'#10'FROM CONFIGURACION'#10'WHERE CODIGO = :CODIGO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'VALOR' + TableField = 'VALOR' + end> + end> + Name = 'darValor' + Fields = < + item + Name = 'VALOR' + DataType = datString + Size = 100 + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 40 + Top = 16 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 40 + Top = 80 + end +end diff --git a/Source/Servicios/srvConfiguracion_Impl.pas b/Source/Servicios/srvConfiguracion_Impl.pas new file mode 100644 index 00000000..27b93916 --- /dev/null +++ b/Source/Servicios/srvConfiguracion_Impl.pas @@ -0,0 +1,81 @@ +unit srvConfiguracion_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, +// {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, +// {Generated:} FactuGES_Intf, uDAClasses; + {Generated:} FactuGES_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDABINAdapter, uDADataStreamer; + + +type + { TsrvConfiguracion } + TsrvConfiguracion = class(TDataAbstractService, IsrvConfiguracion) + schConfiguracion: TDASchema; + DABinDataStreamer: TDABinDataStreamer; + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + protected + { IsrvConfiguracion methods } + function DarValor(const CODIGO: String): String; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDAInterfaces, uDataModuleServer, Variants, + uROClasses; + +procedure Create_srvConfiguracion(out anInstance : IUnknown); +begin + anInstance := TsrvConfiguracion.Create(NIL); +end; + +{ srvConfiguracion } +procedure TsrvConfiguracion.DARemoteServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; +end; + +function TsrvConfiguracion.DarValor(const CODIGO: String): String; +var + ADataSet : IDADataset; +begin + try + ADataSet := schConfiguracion.NewDataset(Connection, 'darValor', ['CODIGO'], [CODIGO]); + ADataSet.Open; + if ADataSet.Dataset.RecordCount > 0 then + Result := ADataSet.Dataset.Fields[0].AsVariant + else + RaiseError('Falta variable de configuracion: ' + CODIGO); + finally + ADataSet.Close; + end; +end; + +procedure TsrvConfiguracion.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +initialization + TROClassFactory.Create('srvConfiguracion', Create_srvConfiguracion, TsrvConfiguracion_Invoker); + +finalization + +end. diff --git a/Source/Servicios/srvLogin_Impl.dfm b/Source/Servicios/srvLogin_Impl.dfm new file mode 100644 index 00000000..6911815b --- /dev/null +++ b/Source/Servicios/srvLogin_Impl.dfm @@ -0,0 +1,145 @@ +object srvLogin: TsrvLogin + OldCreateOrder = True + OnCreate = DataAbstractServiceCreate + ConnectionName = 'IBX' + ServiceSchema = schLogin + ServiceDataStreamer = DABinDataStreamer + ExportedDataTables = <> + BeforeAcquireConnection = DataAbstractServiceBeforeAcquireConnection + Height = 300 + Width = 300 + object schLogin: TDASchema + ConnectionManager = dmServer.ConnectionManager + Datasets = < + item + Params = < + item + Name = 'ID_USUARIO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT '#10' ID_EMPRESA'#10' FROM'#10' EMPRESAS_USUARIOS'#10' WHERE ID_U' + + 'SUARIO = :ID_USUARIO' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID_EMPRESA' + TableField = 'ID_EMPRESA' + end> + end> + Name = 'EmpresasUsuario' + Fields = < + item + Name = 'ID_EMPRESA' + DataType = datInteger + end> + end + item + Params = < + item + Name = 'ID_USUARIO' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT '#10' PERFILES.PERFIL'#10' FROM'#10' PERFILES, PERFILES_USUARI' + + 'OS'#10' WHERE PERFILES_USUARIOS.ID_USUARIO = :ID_USUARIO'#10' AND PERF' + + 'ILES.ID = PERFILES_USUARIOS.ID_PERFIL' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'PERFIL' + TableField = 'PERFIL' + end> + end> + Name = 'PerfilesUsuario' + Fields = < + item + Name = 'PERFIL' + DataType = datString + Size = 15 + end> + end + item + Params = < + item + Name = 'USUARIO' + DataType = datString + Value = '' + ParamType = daptInput + end + item + Name = 'PASS' + DataType = datString + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + SQL = + 'SELECT'#10' ID'#10' FROM'#10' USUARIOS'#10' WHERE USUARIO = :USUARIO AND' + + #10' PASS = :PASS AND'#10' ACTIVO = 1' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end> + end> + Name = 'UsuarioPermitido' + Fields = < + item + Name = 'ID' + DataType = datInteger + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'PASSWORD' + DataType = datString + Value = '' + ParamType = daptInput + end + item + Name = 'USERID' + DataType = datString + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'IBX' + TargetTable = 'USUARIOS' + SQL = + 'UPDATE'#10' USUARIOS'#10' SET'#10' PASS = :PASSWORD'#10' WHERE'#10' ID = ' + + ':USERID' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'SetUserPassword' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 40 + Top = 24 + end + object DABinDataStreamer: TDABinDataStreamer + Left = 40 + Top = 88 + end +end diff --git a/Source/Servicios/srvLogin_Impl.pas b/Source/Servicios/srvLogin_Impl.pas new file mode 100644 index 00000000..529b192b --- /dev/null +++ b/Source/Servicios/srvLogin_Impl.pas @@ -0,0 +1,145 @@ +unit srvLogin_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} FactuGES_Intf, uDAClasses, uDAInterfaces, uDAEngine, + uDADataTable, uDABINAdapter, uROClient, uDADataStreamer; + +const + PERFIL_ADMINISTRADORES = 'Administradores'; + +type + { TsrvLogin } + TsrvLogin = class(TDataAbstractService, IsrvLogin) + schLogin: TDASchema; + DABinDataStreamer: TDABinDataStreamer; + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); + procedure DataAbstractServiceCreate(Sender: TObject); + private + protected + function Login(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk, uDataModuleServer, + Dialogs, IB, Variants, uSesionesUtils; + +procedure Create_srvLogin(out anInstance : IUnknown); +begin + anInstance := TsrvLogin.Create(NIL); +end; + +{ srvLogin } +{ TsrvLogin } + +procedure TsrvLogin.DataAbstractServiceBeforeAcquireConnection(aSender: TObject; + var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +procedure TsrvLogin.DataAbstractServiceCreate(Sender: TObject); +begin + SessionManager := dmServer.SessionManager; +end; + +function TsrvLogin.Login(const User, Password: String; out LoginInfo: TRdxLoginInfo): Boolean; +var + dsUser, + dsPerfiles, + dsEmpresas : IDADataset; + InternalLoginInfo : TRdxLoginInfo; +begin + LoginInfo := NIL; + Result := False; + + dsUser := schLogin.NewDataset(Connection, 'UsuarioPermitido', ['Usuario', 'Pass'], [User, Password]); + + if (dsUser.RecordCount = 1) then + begin + try + LoginInfo := TRdxLoginInfo.Create(); + with LoginInfo do + begin + UserID := dsUser.FieldValues[0]; + Usuario := User; + SessionID := GUIDToString(Session.SessionID); + Perfiles := StringArray.Create(); + Empresas := TRdxEmpresasArray.Create; + end; + + // Asigna los perfiles del usuario + LoginInfo.Perfiles.Clear; + dsPerfiles := schLogin.NewDataset(Connection, 'PerfilesUsuario', ['ID_USUARIO'], [LoginInfo.UserID]); + while not dsPerfiles.EOF do + begin + LoginInfo.Perfiles.Add(VarToStr(dsPerfiles.FieldValues[0])); + dsPerfiles.Next; + end; + + // Asigna las empresas del usuario + LoginInfo.Empresas.Clear; + dsEmpresas := schLogin.NewDataset(Connection, 'EmpresasUsuario', ['ID_USUARIO'], [LoginInfo.UserID]); + while not dsEmpresas.EOF do + begin + LoginInfo.Empresas.Add(dsEmpresas.FieldValues[0]); + dsEmpresas.Next; + end; + + // Guardamos una copia de LoginInfo en el servidor para usarlo + // en otros servicios + InternalLoginInfo := TRdxLoginInfo.Create; + InternalLoginInfo.Assign(LoginInfo); + SesionesHelper.SaveSessionObject(Session, SESION_LOGININFO, InternalLoginInfo); + + Result := True; + except + on e : exception do + begin + FreeAndNIL(LoginInfo); + ShowMessage(e.Message); + raise + end; + end; + end + else begin +// Invalid login. The temporary session is not to be kept. + DestroySession; + end; +end; + +procedure TsrvLogin.Logout; +begin + DestroySession; +end; + +function TsrvLogin.Ping: Boolean; +begin + Result := True; +end; + +initialization + TROClassFactory.Create('srvLogin', Create_srvLogin, TsrvLogin_Invoker); + +finalization + +end. diff --git a/Source/Servidor/Configuracion/uConexionBD.dfm b/Source/Servidor/Configuracion/uConexionBD.dfm new file mode 100644 index 00000000..112f31bd --- /dev/null +++ b/Source/Servidor/Configuracion/uConexionBD.dfm @@ -0,0 +1,142 @@ +inherited frConexionBD: TfrConexionBD + Width = 394 + Height = 262 + Visible = True + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 209 + Caption = 'Servidor de base de datos de FactuGES (Firebird)' + TabOrder = 0 + DesignSize = ( + 375 + 209) + object Label1: TLabel + Left = 18 + Top = 30 + Width = 100 + Height = 13 + Caption = 'Nombre del servidor:' + end + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Caption = 'Puerto de escucha:' + end + object Label3: TLabel + Left = 18 + Top = 92 + Width = 72 + Height = 13 + Caption = 'Base de datos:' + end + object Label4: TLabel + Left = 18 + Top = 150 + Width = 36 + Height = 13 + Caption = 'Usuario' + end + object Label5: TLabel + Left = 18 + Top = 180 + Width = 60 + Height = 13 + Caption = 'Contrase'#241'a:' + end + object Bevel1: TBevel + Left = 16 + Top = 120 + Width = 343 + Height = 10 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object edtServer: TEdit + Left = 128 + Top = 24 + Width = 231 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'localhost' + end + object edtPort: TEdit + Left = 128 + Top = 56 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = '3050' + OnExit = edtPortExit + end + object edtUser: TEdit + Left = 128 + Top = 144 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 3 + Text = 'sysdba' + end + object edtPassword: TEdit + Left = 128 + Top = 176 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + PasswordChar = '*' + TabOrder = 4 + end + object edtPath: TcxButtonEdit + Left = 128 + Top = 88 + Properties.Buttons = < + item + Default = True + Kind = bkEllipsis + end> + Properties.OnButtonClick = cxButtonEdit1PropertiesButtonClick + Style.LookAndFeel.Kind = lfUltraFlat + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfUltraFlat + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfUltraFlat + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfUltraFlat + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 231 + end + end + object bProbar: TButton + Left = 240 + Top = 224 + Width = 143 + Height = 25 + Caption = 'Probar la conexi'#243'n' + TabOrder = 1 + OnClick = bProbarClick + end + object OpenDialog: TOpenDialog + Filter = 'Base de datos Firebird (*.fdb)|*.FDB' + Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Title = 'Abrir base de datos Firebird' + Left = 264 + Top = 56 + end + object IBDatabase: TIBDatabase + DatabaseName = 'server:dasadsads' + Params.Strings = ( + 'user_name=sysdba' + 'password=masterkey' + 'lc_ctype=ISO8859_1') + LoginPrompt = False + Left = 176 + Top = 224 + end +end diff --git a/Source/Servidor/Configuracion/uConexionBD.pas b/Source/Servidor/Configuracion/uConexionBD.pas new file mode 100644 index 00000000..e5c79ca3 --- /dev/null +++ b/Source/Servidor/Configuracion/uConexionBD.pas @@ -0,0 +1,106 @@ +unit uConexionBD; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, cxShellBrowserDialog, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxButtonEdit, IBServices, + DB, IBDatabase, uFrameConfiguracion; + +type + TfrConexionBD = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + edtServer: TEdit; + edtPort: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + bProbar: TButton; + Label4: TLabel; + edtUser: TEdit; + Label5: TLabel; + edtPassword: TEdit; + Bevel1: TBevel; + OpenDialog: TOpenDialog; + edtPath: TcxButtonEdit; + IBDatabase: TIBDatabase; + procedure cxButtonEdit1PropertiesButtonClick(Sender: TObject; + AButtonIndex: Integer); + procedure bProbarClick(Sender: TObject); + procedure edtPortExit(Sender: TObject); + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +procedure TfrConexionBD.cxButtonEdit1PropertiesButtonClick(Sender: TObject; + AButtonIndex: Integer); +begin + if OpenDialog.Execute then + edtPath.Text := OpenDialog.FileName; +end; + +procedure TfrConexionBD.bProbarClick(Sender: TObject); +var + Aux : string; +begin + with IBDatabase do + begin + Connected := False; + DatabaseName := edtServer.Text + '/' + edtPort.Text + ':' + edtPath.Text; + LoginPrompt := False; + + Params.Clear; + Params.Add('lc_ctype=ISO8859_1'); + Params.Add('user_name=' + edtUser.Text); + Params.Add('password=' + edtPassword.Text); + + try + Connected := True; + Application.MessageBox('Conexin vlida con la base de datos.', 'FactuGES', MB_OK); + Connected := False; + except + on E : Exception do + begin + Aux := 'No se ha podido establecer la conexin con la base de datos.' + + #13 + #10 + #13 + #10 + PChar(E.Message); + Application.MessageBox(PAnsiChar(Aux), 'Error', MB_OK); + end; + end; + end; +end; + +procedure TfrConexionBD.Init; +begin + edtServer.Text := dmServer.FDBServer; + edtPort.Text := dmServer.FDBPort; + edtPath.Text := dmServer.FDBPath; + edtUser.Text := dmServer.FDBUser; + edtPassword.Text := Decrypt(dmServer.FDBPass); +end; + +procedure TfrConexionBD.Finalize; +begin + dmServer.FDBServer := edtServer.Text; + dmServer.FDBPort := edtPort.Text; + dmServer.FDBPath := edtPath.Text; + dmServer.FDBUser := edtUser.Text; + dmServer.FDBPass := Encrypt(edtPassword.Text); +end; + +procedure TfrConexionBD.edtPortExit(Sender: TObject); +begin + inherited; + if Length(edtPort.Text) = 0 then + edtPort.Text := DBSERVER_PORT; +end; + +end. diff --git a/Source/Servidor/Configuracion/uConexionOSC.dfm b/Source/Servidor/Configuracion/uConexionOSC.dfm new file mode 100644 index 00000000..2bf4f318 --- /dev/null +++ b/Source/Servidor/Configuracion/uConexionOSC.dfm @@ -0,0 +1,55 @@ +inherited frConexionOSC: TfrConexionOSC + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 333 + Height = 169 + Caption = 'Configuraci'#243'n de la tienda' + TabOrder = 0 + object Label1: TLabel + Left = 31 + Top = 36 + Width = 67 + Height = 13 + Alignment = taRightJustify + Caption = 'Origen ODBC:' + end + object edtBDSERVER: TcxTextEdit + Left = 104 + Top = 32 + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + 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 = 0 + Text = 'edtBDSERVER' + Width = 209 + end + end + object bComprobar: TButton + Left = 180 + Top = 191 + Width = 161 + Height = 25 + Action = actComprobar + TabOrder = 1 + end + object ActionList1: TActionList + Left = 24 + Top = 24 + object actAceptar: TAction + Caption = '&Aceptar' + end + object actCancelar: TAction + Caption = '&Cancelar' + end + object actComprobar: TAction + Caption = 'Comprobar la conexi'#243'n' + OnExecute = actComprobarExecute + end + end +end diff --git a/Source/Servidor/Configuracion/uConexionOSC.pas b/Source/Servidor/Configuracion/uConexionOSC.pas new file mode 100644 index 00000000..c1d38fe4 --- /dev/null +++ b/Source/Servidor/Configuracion/uConexionOSC.pas @@ -0,0 +1,61 @@ +unit uConexionOSC; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uFrameConfiguracion, ActnList, StdCtrls, cxControls, cxContainer, + cxEdit, cxTextEdit, cxDBEdit, DB; + +type + TfrConexionOSC = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + Label1: TLabel; + bComprobar: TButton; + ActionList1: TActionList; + actAceptar: TAction; + actCancelar: TAction; + actComprobar: TAction; + edtBDSERVER: TcxTextEdit; + procedure actComprobarExecute(Sender: TObject); + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +var + frConexionOSC: TfrConexionOSC; + +implementation + +uses +// uTiendaWebUtils, + uDataModuleServer; + +{$R *.dfm} + +procedure TfrConexionOSC.actComprobarExecute(Sender: TObject); +var + AErrorMsg : String; +begin +{ + if HayConexionConTienda(edtBDSERVER.Text, AErrorMsg) then + ShowMessage('Conexin vlida con la tienda') + else + ShowMessage('No se ha podido establecer la conexin con la tienda web.' + + #10#13 + #10#13 + AErrorMsg); +} +end; + +procedure TfrConexionOSC.Finalize; +begin + dmServer.FOSCServer := edtBDSERVER.Text; +end; + +procedure TfrConexionOSC.Init; +begin + edtBDSERVER.Text := dmServer.FOSCServer; +end; + +end. diff --git a/Source/Servidor/Configuracion/uConfGeneral.dfm b/Source/Servidor/Configuracion/uConfGeneral.dfm new file mode 100644 index 00000000..7e7f40f8 --- /dev/null +++ b/Source/Servidor/Configuracion/uConfGeneral.dfm @@ -0,0 +1,39 @@ +inherited frConfGeneral: TfrConfGeneral + Visible = True + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 105 + Caption = 'General' + TabOrder = 0 + DesignSize = ( + 375 + 105) + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Caption = 'Puerto de escucha:' + end + object edtPort: TEdit + Left = 128 + Top = 56 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = '8099' + OnExit = edtPortExit + end + object cbInicioWin: TCheckBox + Left = 17 + Top = 27 + Width = 232 + Height = 17 + Caption = 'Iniciar con Windows' + TabOrder = 1 + end + end +end diff --git a/Source/Servidor/Configuracion/uConfGeneral.pas b/Source/Servidor/Configuracion/uConfGeneral.pas new file mode 100644 index 00000000..a81c5ee3 --- /dev/null +++ b/Source/Servidor/Configuracion/uConfGeneral.pas @@ -0,0 +1,55 @@ +unit uConfGeneral; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uFrameConfiguracion, StdCtrls, ExtCtrls; + +type + TfrConfGeneral = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + Label2: TLabel; + edtPort: TEdit; + cbInicioWin: TCheckBox; + procedure edtPortExit(Sender: TObject); + private + { Private declarations } + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +var + frConfGeneral: TfrConfGeneral; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +{ TfrConfGeneral } + +procedure TfrConfGeneral.Finalize; +begin + inherited; + dmServer.FInicioWindows := cbInicioWin.Checked; + dmServer.FServerPort := edtPort.Text; +end; + +procedure TfrConfGeneral.Init; +begin + cbInicioWin.Checked := dmServer.FInicioWindows; + edtPort.Text := dmServer.FServerPort; +end; + +procedure TfrConfGeneral.edtPortExit(Sender: TObject); +begin + inherited; + if Length(edtPort.Text) = 0 then + edtPort.Text := '8099'; +end; + +end. diff --git a/Source/Servidor/Configuracion/uConfiguracion.dfm b/Source/Servidor/Configuracion/uConfiguracion.dfm new file mode 100644 index 00000000..3a36bc11 --- /dev/null +++ b/Source/Servidor/Configuracion/uConfiguracion.dfm @@ -0,0 +1,193 @@ +object fConfiguracion: TfConfiguracion + Left = 303 + Top = 203 + BorderStyle = bsDialog + Caption = 'Configuraci'#243'n' + ClientHeight = 345 + ClientWidth = 414 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Button1: TButton + Left = 251 + Top = 311 + Width = 75 + Height = 25 + Action = actAceptar + ModalResult = 1 + TabOrder = 0 + end + object Button2: TButton + Left = 332 + Top = 311 + Width = 75 + Height = 25 + Action = actCancelar + Cancel = True + ModalResult = 2 + TabOrder = 1 + end + object PageControl1: TPageControl + Left = 8 + Top = 8 + Width = 399 + Height = 289 + ActivePage = TabSheet1 + Images = PngImageList1 + TabOrder = 2 + OnChange = PageControl1Change + object pagGeneral: TTabSheet + Caption = 'General' + ImageIndex = -1 + inline frConfGeneral1: TfrConfGeneral + Left = 0 + Top = 0 + Width = 391 + Height = 260 + Align = alClient + TabOrder = 0 + ExplicitWidth = 391 + ExplicitHeight = 260 + inherited GroupBox1: TGroupBox + Height = 97 + ExplicitHeight = 97 + end + end + end + object pagBD: TTabSheet + Caption = 'Base de datos' + ImageIndex = 1 + inline frConexionBD1: TfrConexionBD + Left = 0 + Top = 0 + Width = 391 + Height = 260 + Align = alClient + TabOrder = 0 + ExplicitWidth = 391 + ExplicitHeight = 260 + end + end + object TabSheet1: TTabSheet + Caption = 'Tienda web' + ImageIndex = 2 + inline frConexionOSC1: TfrConexionOSC + Left = 0 + Top = 0 + Width = 391 + Height = 260 + Align = alClient + TabOrder = 0 + ExplicitWidth = 349 + ExplicitHeight = 233 + inherited GroupBox1: TGroupBox + Width = 373 + ExplicitWidth = 373 + end + inherited bComprobar: TButton + Left = 220 + ExplicitLeft = 220 + end + inherited ActionList1: TActionList + inherited actAceptar: TAction + OnExecute = nil + end + inherited actCancelar: TAction + OnExecute = nil + end + inherited actComprobar: TAction + OnUpdate = nil + end + end + end + end + end + object ActionList1: TActionList + Left = 8 + Top = 304 + object actAceptar: TAction + Caption = '&Aceptar' + OnExecute = actAceptarExecute + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + end + object JvAppRegistryStorage1: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 40 + Top = 304 + end + object PngImageList1: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002554944415478DA + A5934D6813411CC5DFA64D9B365A0AA558ACB50D584AA4122D6A695044AC2D88 + 88908B01B137A5B64A7B912214BD79F083B6971C154544F1504F7A5204154405 + 45432818F2614C76B39B36D9EC477793DD71369124C58045E7326F8779BFFDBF + 07C31042C0300C162E37F56FDBEEF1F5F41FF1B6B675B99B5BDABB0D3DEF80A9 + 684A2E9E5473C9101BFFFA9EE5924F67037AC8F2598BB1C4939BDEF903E373F3 + BDEE31BBADC10EEB8C14F230D65914550E86CA52CDA1A824F133F2C90806BFDC + F25FE7E72A808F2F6E14F78F5D69B00E083161EA396AE24A8092B95653D0B760 + 888CCEC46D15C0F3C071E2DAEBC78E81636871384A97ACCBD5BF97218A984022 + F1039F433CA61745A63AC1B30BC47DF00C049E87228974822C485184A1ADA2A8 + E5B02EAF4191F3D0749D1A34C463314CDEC96C040C8E9C43E3963E304D1D5897 + D250F329A862AABCD76A91452C1AD90878F7F82C193A3AB949400AE170189716 + B355C0CBBBA74877FF61383BDC68EFF2C034340AE1A88185924B20BF1A852844 + 4ADF9A9C01971630B5B0F6670462EF84244925833585A664A0AB599805196651 + A63A533FC27F77F0FA818F0C8FCF52806B731D7CA71D2CD574F0E6919F74F60C + A1796B2FDA3A7783B13134AB40412CE46CB9837C260A55E6A1D3582C2760BA5E + 070DCE9D50140DD9F44A69544D11CA1DD0FC4641A2D074FD081F96CF9B7BBC13 + CC3F7710B8BAEFF6E8E98B33AEC113B6BF01F85404A195D8FD6BF7A4890AC07A + CE53271B473CC363BEBE8191438E56E72E43133B1886D0FC311A23B796156269 + 9E4BBD4AB2A9874BCB784B7EBFE75F55B52CFF98E5CC810000000049454E44AE + 426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002554944415478DA + A5934D6813411CC5DFA64D9B365A0AA558ACB50D584AA4122D6A695044AC2D88 + 88908B01B137A5B64A7B912214BD79F083B6971C154544F1504F7A5204154405 + 45432818F2614C76B39B36D9EC477793DD71369124C58045E7326F8779BFFDBF + 07C31042C0300C162E37F56FDBEEF1F5F41FF1B6B675B99B5BDABB0D3DEF80A9 + 684A2E9E5473C9101BFFFA9EE5924F67037AC8F2598BB1C4939BDEF903E373F3 + BDEE31BBADC10EEB8C14F230D65914550E86CA52CDA1A824F133F2C90806BFDC + F25FE7E72A808F2F6E14F78F5D69B00E083161EA396AE24A8092B95653D0B760 + 888CCEC46D15C0F3C071E2DAEBC78E81636871384A97ACCBD5BF97218A984022 + F1039F433CA61745A63AC1B30BC47DF00C049E87228974822C485184A1ADA2A8 + E5B02EAF4191F3D0749D1A34C463314CDEC96C040C8E9C43E3963E304D1D5897 + D250F329A862AABCD76A91452C1AD90878F7F82C193A3AB949400AE170189716 + B355C0CBBBA74877FF61383BDC68EFF2C034340AE1A88185924B20BF1A852844 + 4ADF9A9C01971630B5B0F6670462EF84244925833585A664A0AB599805196651 + A63A533FC27F77F0FA818F0C8FCF52806B731D7CA71D2CD574F0E6919F74F60C + A1796B2FDA3A7783B13134AB40412CE46CB9837C260A55E6A1D3582C2760BA5E + 070DCE9D50140DD9F44A69544D11CA1DD0FC4641A2D074FD081F96CF9B7BBC13 + CC3F7710B8BAEFF6E8E98B33AEC113B6BF01F85404A195D8FD6BF7A4890AC07A + CE53271B473CC363BEBE8191438E56E72E43133B1886D0FC311A23B796156269 + 9E4BBD4AB2A9874BCB784B7EBFE75F55B52CFF98E5CC810000000049454E44AE + 426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 80 + Top = 304 + Bitmap = {} + end +end diff --git a/Source/Servidor/Configuracion/uConfiguracion.pas b/Source/Servidor/Configuracion/uConfiguracion.pas new file mode 100644 index 00000000..79b929d7 --- /dev/null +++ b/Source/Servidor/Configuracion/uConfiguracion.pas @@ -0,0 +1,107 @@ +unit uConfiguracion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ComCtrls, ActnList, JvComponent, + JvAppStorage, JvAppRegistryStorage, Contnrs, ExtCtrls, ImgList, + PngImageList, JvExControls, JvGradientHeaderPanel, uFrameConfiguracion, + JvComponentBase, JvPageList, JvExComCtrls, JvPageListTreeView, + uConexionBD, uConfGeneral, uConexionOSC; + +type + TfConfiguracion = class(TForm) + Button1: TButton; + Button2: TButton; + ActionList1: TActionList; + actAceptar: TAction; + actCancelar: TAction; + JvAppRegistryStorage1: TJvAppRegistryStorage; + PngImageList1: TPngImageList; + frConfGeneral1: TfrConfGeneral; + PageControl1: TPageControl; + pagGeneral: TTabSheet; + pagBD: TTabSheet; + frConexionBD1: TfrConexionBD; + TabSheet1: TTabSheet; + frConexionOSC1: TfrConexionOSC; + procedure actAceptarExecute(Sender: TObject); + procedure actCancelarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure PageControl1Change(Sender: TObject); + private + FPaginaActual : IConfiguracionFrame; + public + constructor Create(AOwner: TComponent); override; + end; + +var + fConfiguracion: TfConfiguracion; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +{type + TFrameClass = class of TFrameConfiguracion; + +function CreateFrame(Parent: TWinControl; FrameClass: TFrameClass): IConfiguracionFrame; +var + aFrame : TFrameConfiguracion; +begin + aFrame := FrameClass.Create(NIL); + aFrame.Name:='Frame'+IntToStr(Random(10000)); + aFrame.Parent := Parent; + aFrame.Init; + aFrame.Show; + Result := aFrame; +end;} + +procedure TfConfiguracion.actAceptarExecute(Sender: TObject); +begin + if Assigned(FPaginaActual) then + FPaginaActual.Finalize; + + dmServer.SalvarConfiguracion; + Close; +end; + +procedure TfConfiguracion.actCancelarExecute(Sender: TObject); +begin + Close; +end; + +constructor TfConfiguracion.Create(AOwner: TComponent); +begin + inherited; + FPaginaActual := NIL; +end; + +procedure TfConfiguracion.FormShow(Sender: TObject); +begin + PageControl1.ActivePageIndex := 0; + //Se ha de llamar al evento ya que la asignacin anterior no lo lanza + PageControl1Change(PageControl1); +end; + +procedure TfConfiguracion.PageControl1Change(Sender: TObject); +begin + if Assigned(FPaginaActual) then + FPaginaActual.Finalize; + + case PageControl1.ActivePageIndex of + 0 : FPaginaActual := frConfGeneral1; + 1 : FPaginaActual := frConexionBD1; + 2 : FPaginaActual := frConexionOSC1; + end; + + if Assigned(FPaginaActual) then + FPaginaActual.Init; + + Self.Update; +end; + +end. diff --git a/Source/Servidor/Configuracion/uFrameConfiguracion.dfm b/Source/Servidor/Configuracion/uFrameConfiguracion.dfm new file mode 100644 index 00000000..71b4e24d --- /dev/null +++ b/Source/Servidor/Configuracion/uFrameConfiguracion.dfm @@ -0,0 +1,8 @@ +object FrameConfiguracion: TFrameConfiguracion + Left = 0 + Top = 0 + Width = 451 + Height = 304 + Align = alClient + TabOrder = 0 +end diff --git a/Source/Servidor/Configuracion/uFrameConfiguracion.pas b/Source/Servidor/Configuracion/uFrameConfiguracion.pas new file mode 100644 index 00000000..c03ed29b --- /dev/null +++ b/Source/Servidor/Configuracion/uFrameConfiguracion.pas @@ -0,0 +1,30 @@ +unit uFrameConfiguracion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ExtCtrls; + +type + IConfiguracionFrame = interface + ['{07F3EDBF-DFED-4B76-ADC7-0D3B83FB6F9B}'] + procedure Init; + procedure Finalize; + end; + + TFrameConfiguracion = class(TFrame, IConfiguracionFrame) + protected + procedure Finalize; virtual; abstract; + public + procedure Init; virtual; abstract; + end; + +implementation + +{$R *.dfm} + +{ TFrameConfiguracion } + + +end. diff --git a/Source/Servidor/FactuGES_Server.RES b/Source/Servidor/FactuGES_Server.RES new file mode 100644 index 00000000..841b3098 Binary files /dev/null and b/Source/Servidor/FactuGES_Server.RES differ diff --git a/Source/Servidor/FactuGES_Server.bdsproj b/Source/Servidor/FactuGES_Server.bdsproj new file mode 100644 index 00000000..12ea701b --- /dev/null +++ b/Source/Servidor/FactuGES_Server.bdsproj @@ -0,0 +1,685 @@ + + + + + + + + + + + + FactuGES_Server.dpr + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + + + + 3 + 0 + 1 + False + False + False + 16384 + 1048576 + 4194304 + + False + + + ..\..\Output\Debug\Servidor + + + + ..\DataAbstract_D10\Lib;..\Base\Lib;..\Base\ControllerBase;..\Base\GUIBase;..\Base\ClassRegistry;..\Base\Usuarios;..\Modulos\Articulos\Lib;..\Modulos\Empresas\Lib;..\Modulos\Contactos\Lib;..\Modulos\Facturas de cliente\Lib;..\Modulos\Pedidos a proveedor\Lib;..\Modulos\Grupos de cliente\Lib;..\Modulos\Articulos\view + rtl;vclx;vcl;dbrtl;vcldb;dbxcds;dbexpress;vclib;ibxpress;indy;dclOfficeXP;VclSmp;dsnap;bdertl;teeui;teedb;tee;vcldbx;vclactnband;dxBarExtItemsD10;dxComnD10;dxBarD10;cxLibraryD10;cxEditorsD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarDBNavD10;dxBarExtDBItemsD10;tbx_d10;tb2k_d10;ccpack10;ccpack10dsg;cxExportD10;cxIntl5D10;adortl;DataAbstract_Core_D10;DataAbstract_DBXDriver_D10;DataAbstract_Scripting_D10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;fqb100;dxLayoutControlcxEditAdaptersD10;dxPScxCommonD10;dxPSLnksD10;vclshlctrls;dxPScxExtCommonD10;dxPScxGridLnkD10;dxPScxPCProdD10;dxPScxScheduler2LnkD10;dxPScxTLLnkD10;dxPSDBTeeChartD10;dxPSTeeChartD10;dxPSdxLCLnkD10;dxPsPrVwAdvD10;GUISDK_D10;JvAppFrmD10R;JvCoreD10R;Jcl;JclVcl;JvSystemD10R;JvStdCtrlsD10R;JvBandsD10R;JvDBD10R;JvDlgsD10R;JvBDED10R;JvCmpD10R;JvCryptD10R;JvCtrlsD10R;JvCustomD10R;JvDockingD10R;JvDotNetCtrlsD10R;JvEDID10R;JvGlobusD10R;JvHMID10R;JvInterpreterD10R;JvJansD10R;JvManagedThreadsD10R;JvMMD10R;JvNetD10R;JvPageCompsD10R;JvPluginD10R;JvPrintPreviewD10R;JvRuntimeDesignD10R;JvTimeFrameworkD10R;JvUIBD10R;JvValidatorsD10R;JvWizardD10R;JvXPCtrlsD10R;PluginSDK_D10R;PNG_D10;PngComponentsD10;inet;RemObjects_WebBroker_D10;RemObjects_RODX_D10;RemObjects_BPDX_D10;RemObjects_Indy_D10;PascalScript_RO_D10;IndyProtocols;IndyCore;IndySystem;DataAbstract_IDE_D10;fsTee10;fs10;frx10;frxADO10;frxBDE10;frxDB10;frxDBX10;frxe10;frxIBX10;frxTee10;fsADO10;fsBDE10;fsDB10;fsIBX10 + EUREKALOG;EUREKALOG_VER6 + + False + + + + + + False + + + + + + False + + True + False + + + + $00000000 + + + + True + False + 2 + 2 + 2 + 0 + False + False + False + False + False + 3081 + 1252 + + + + + 2.2.2.0 + + + + + + 2.2.2.0 + + martes, 28 de agosto de 2007 17:06 + RemObjects Pascal Script - RemObjects SDK 3.0 Integration + + + False + + diff --git a/Source/Servidor/FactuGES_Server.dpr b/Source/Servidor/FactuGES_Server.dpr new file mode 100644 index 00000000..3d616113 --- /dev/null +++ b/Source/Servidor/FactuGES_Server.dpr @@ -0,0 +1,58 @@ +program FactuGES_Server; + +{#ROGEN:..\Servicios\FactuGES.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + uServerMainForm in 'uServerMainForm.pas' {fServerForm}, + uAcercaDe in 'uAcercaDe.pas' {fAcercaDe}, + uConexionBD in 'Configuracion\uConexionBD.pas' {frConexionBD: TFrame}, + uConfGeneral in 'Configuracion\uConfGeneral.pas' {frConfGeneral: TFrame}, + uConfiguracion in 'Configuracion\uConfiguracion.pas' {fConfiguracion: TForm}, + uFrameConfiguracion in 'Configuracion\uFrameConfiguracion.pas' {FrameConfiguracion: TFrame}, + uDataModuleServer in 'uDataModuleServer.pas' {dmServer: TDataModule}, + FactuGES_Intf in '..\Servicios\FactuGES_Intf.pas', + FactuGES_Invk in '..\Servicios\FactuGES_Invk.pas', + srvContactos_Impl in '..\Modulos\Contactos\Servidor\srvContactos_Impl.pas' {srvContactos: TDARemoteService}, + uDatabaseUtils in 'Utiles\uDatabaseUtils.pas', + srvLogin_Impl in '..\Servicios\srvLogin_Impl.pas', + srvEmpresas_Impl in '..\Modulos\Empresas\Servidor\srvEmpresas_Impl.pas', + uSesionesUtils in 'Utiles\uSesionesUtils.pas', + uUsersManager in 'uUsersManager.pas', + uServerAppUtils in 'Utiles\uServerAppUtils.pas', + uBizEmpleadosServer in '..\Modulos\Contactos\Model\uBizEmpleadosServer.pas', + uBusinessUtils in 'Utiles\uBusinessUtils.pas', + uBizContactosServer in '..\Modulos\Contactos\Model\uBizContactosServer.pas', + uBizClientesServer in '..\Modulos\Contactos\Model\uBizClientesServer.pas', + uBizProveedoresServer in '..\Modulos\Contactos\Model\uBizProveedoresServer.pas', + uRestriccionesUsuarioUtils in 'Utiles\uRestriccionesUsuarioUtils.pas', + uReferenciasUtils in 'Utiles\uReferenciasUtils.pas', + srvConfiguracion_Impl in '..\Servicios\srvConfiguracion_Impl.pas' {srvConfiguracion: TDARemoteService}, + srvFamilias_Impl in '..\Modulos\Familias\Servidor\srvFamilias_Impl.pas' {srvFamilias: TDARemoteService}, + schFamiliasClient_Intf in '..\Modulos\Familias\Model\schFamiliasClient_Intf.pas', + schFamiliasServer_Intf in '..\Modulos\Familias\Model\schFamiliasServer_Intf.pas', + schEmpresasClient_Intf in '..\Modulos\Empresas\Model\schEmpresasClient_Intf.pas', + schEmpresasServer_Intf in '..\Modulos\Empresas\Model\schEmpresasServer_Intf.pas', + srvFormasPago_Impl in '..\Modulos\Formas de pago\Servidor\srvFormasPago_Impl.pas' {srvFormasPago: TDARemoteService}, + srvTiposIVA_Impl in '..\Modulos\Tipos de IVA\Servidor\srvTiposIVA_Impl.pas' {srvTiposIVA: TDARemoteService}, + schTiposIVAClient_Intf in '..\Modulos\Tipos de IVA\Model\schTiposIVAClient_Intf.pas', + schTiposIVAServer_Intf in '..\Modulos\Tipos de IVA\Model\schTiposIVAServer_Intf.pas', + schFormasPagoServer_Intf in '..\Modulos\Formas de pago\Model\schFormasPagoServer_Intf.pas', + schFormasPagoClient_Intf in '..\Modulos\Formas de pago\Model\schFormasPagoClient_Intf.pas', + uConexionOSC in 'Configuracion\uConexionOSC.pas' {frConexionOSC: TFrame}, + uSchemaUtilsServer in 'Utiles\uSchemaUtilsServer.pas', + schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas', + schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas'; + +{$R *.res} +{$R ..\Servicios\RODLFile.res} + +begin + Application.Initialize; + Application.Title := 'FactuGES (Servidor)'; + Application.CreateForm(TfServerForm, fServerForm); + Application.CreateForm(TdmServer, dmServer); + Application.Run; + Application.Terminate; +end. diff --git a/Source/Servidor/FactuGES_Server.dproj b/Source/Servidor/FactuGES_Server.dproj new file mode 100644 index 00000000..cf6d525c --- /dev/null +++ b/Source/Servidor/FactuGES_Server.dproj @@ -0,0 +1,620 @@ + + + {ebdcd25d-40d7-4146-91ec-a0ea4aa1dcd1} + FactuGES_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\FactuGES_Server.exe + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Relase\Servidor + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + RELEASE + .\ + .\ + .\ + + + 7.0 + 3 + ..\..\Output\Debug\Servidor + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + DEBUG + .\ + .\ + .\ + + + Delphi.Personality + + +FalseTrueFalseTrueFalse3000FalseFalseFalseFalseFalse308212523.0.0.0martes, 28 de agosto de 2007 17:06 + + + + + + + + + + + + + + + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office XP Sample Automation Server Wrapper Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + FactuGES_Server.dpr + + + + + MainSource + + + + + + + + +
srvContactos
+
+ + + + + + +
srvFamilias
+
+ + + +
srvFormasPago
+
+ + + +
srvTiposIVA
+
+ + + +
srvConfiguracion
+
+ + +
frConexionBD
+
+ +
frConexionOSC
+
+ +
frConfGeneral
+
+ +
fConfiguracion
+
+ +
FrameConfiguracion
+
+ +
fAcercaDe
+
+ +
dmServer
+
+ +
fServerForm
+
+ + + + + + + + +
+
+ diff --git a/Source/Servidor/FactuGES_Server.drc b/Source/Servidor/FactuGES_Server.drc new file mode 100644 index 00000000..53803e4a --- /dev/null +++ b/Source/Servidor/FactuGES_Server.drc @@ -0,0 +1,2202 @@ +/* VER180 + Generated by the Borland Delphi Pascal Compiler + because -GD or --drc was supplied to the compiler. + + This file contains compiler-generated resources that + were bound to the executable. + If this file is empty, then no compiler-generated + resources were bound to the produced executable. +*/ + +#define cxEditConsts_scxRegExprNotCompiled 64432 +#define cxEditConsts_scxRegExprIncorrectParameterQuantifier 64433 +#define cxEditConsts_scxRegExprCantUseParameterQuantifier 64434 +#define cxEditConsts_scxMaskEditRegExprError 64435 +#define cxEditConsts_scxMaskEditInvalidEditValue 64436 +#define cxEditConsts_cxSSpinEditInvalidNumericValue 64437 +#define cxEditConsts_scxRegExprEmptySourceStream 64448 +#define cxEditConsts_scxRegExprCantUsePlusQuantifier 64449 +#define cxEditConsts_scxRegExprCantUseStarQuantifier 64450 +#define cxEditConsts_scxRegExprCantCreateEmptyAlt 64451 +#define cxEditConsts_scxRegExprCantCreateEmptyBlock 64452 +#define cxEditConsts_scxRegExprIllegalSymbol 64453 +#define cxEditConsts_scxRegExprIllegalQuantifier 64454 +#define cxEditConsts_scxRegExprIllegalIntegerValue 64455 +#define cxEditConsts_scxRegExprTooBigReferenceNumber 64456 +#define cxEditConsts_scxRegExprCantCreateEmptyEnum 64457 +#define cxEditConsts_scxRegExprSubrangeOrder 64458 +#define cxEditConsts_scxRegExprHexNumberExpected0 64459 +#define cxEditConsts_scxRegExprHexNumberExpected 64460 +#define cxEditConsts_scxRegExprMissing 64461 +#define cxEditConsts_scxRegExprUnnecessary 64462 +#define cxEditConsts_scxRegExprIncorrectSpace 64463 +#define cxEditConsts_scxSEditRepositoryCurrencyItem 64464 +#define cxEditConsts_scxSEditRepositoryDateItem 64465 +#define cxEditConsts_scxSEditRepositoryHyperLinkItem 64466 +#define cxEditConsts_scxSEditRepositoryImageComboBoxItem 64467 +#define cxEditConsts_scxSEditRepositoryImageItem 64468 +#define cxEditConsts_scxSEditRepositoryMaskItem 64469 +#define cxEditConsts_scxSEditRepositoryMemoItem 64470 +#define cxEditConsts_scxSEditRepositoryMRUItem 64471 +#define cxEditConsts_scxSEditRepositoryPopupItem 64472 +#define cxEditConsts_scxSEditRepositorySpinItem 64473 +#define cxEditConsts_scxSEditRepositoryRadioGroupItem 64474 +#define cxEditConsts_scxSEditRepositoryTextItem 64475 +#define cxEditConsts_scxSEditRepositoryTimeItem 64476 +#define cxEditConsts_scxRegExprLine 64477 +#define cxEditConsts_scxRegExprChar 64478 +#define cxEditConsts_scxRegExprNotAssignedSourceStream 64479 +#define cxEditConsts_cxSDateSecond 64480 +#define cxEditConsts_cxSDateThird 64481 +#define cxEditConsts_cxSDateFourth 64482 +#define cxEditConsts_cxSDateFifth 64483 +#define cxEditConsts_cxSDateSixth 64484 +#define cxEditConsts_cxSDateSeventh 64485 +#define cxEditConsts_cxSDateBOM 64486 +#define cxEditConsts_cxSDateEOM 64487 +#define cxEditConsts_cxSDateNow 64488 +#define cxEditConsts_scxSCalcError 64489 +#define cxEditConsts_scxSHyperLinkPrefix 64490 +#define cxEditConsts_scxSEditRepositoryBlobItem 64491 +#define cxEditConsts_scxSEditRepositoryButtonItem 64492 +#define cxEditConsts_scxSEditRepositoryCalcItem 64493 +#define cxEditConsts_scxSEditRepositoryCheckBoxItem 64494 +#define cxEditConsts_scxSEditRepositoryComboBoxItem 64495 +#define cxEditConsts_cxSDatePopupClear 64496 +#define cxEditConsts_cxSDatePopupNow 64497 +#define cxEditConsts_cxSDatePopupOK 64498 +#define cxEditConsts_cxSDatePopupToday 64499 +#define cxEditConsts_cxSDateError 64500 +#define cxEditConsts_cxSDateToday 64501 +#define cxEditConsts_cxSDateYesterday 64502 +#define cxEditConsts_cxSDateTomorrow 64503 +#define cxEditConsts_cxSDateSunday 64504 +#define cxEditConsts_cxSDateMonday 64505 +#define cxEditConsts_cxSDateTuesday 64506 +#define cxEditConsts_cxSDateWednesday 64507 +#define cxEditConsts_cxSDateThursday 64508 +#define cxEditConsts_cxSDateFriday 64509 +#define cxEditConsts_cxSDateSaturday 64510 +#define cxEditConsts_cxSDateFirst 64511 +#define cxEditConsts_cxSEditCheckBoxGrayed 64512 +#define cxEditConsts_cxSEditCheckBoxUnchecked 64513 +#define cxEditConsts_cxSRadioGroupDefaultCaption 64514 +#define cxEditConsts_cxSBlobButtonOK 64515 +#define cxEditConsts_cxSBlobButtonCancel 64516 +#define cxEditConsts_cxSBlobButtonClose 64517 +#define cxEditConsts_cxSBlobMemo 64518 +#define cxEditConsts_cxSBlobMemoEmpty 64519 +#define cxEditConsts_cxSBlobPicture 64520 +#define cxEditConsts_cxSBlobPictureEmpty 64521 +#define cxEditConsts_cxSMenuItemCaptionCut 64522 +#define cxEditConsts_cxSMenuItemCaptionCopy 64523 +#define cxEditConsts_cxSMenuItemCaptionPaste 64524 +#define cxEditConsts_cxSMenuItemCaptionDelete 64525 +#define cxEditConsts_cxSMenuItemCaptionLoad 64526 +#define cxEditConsts_cxSMenuItemCaptionSave 64527 +#define pnglang_EPNGNoImageDataText 64528 +#define pnglang_EPNGCannotChangeSizeText 64529 +#define pnglang_EPNGCannotAddChunkText 64530 +#define pnglang_EPNGCannotAddInvalidImageText 64531 +#define pnglang_EPNGOutMemoryText 64532 +#define pnglang_EPNGHeaderNotPresentText 64533 +#define cxDataConsts_cxSDataReadError 64534 +#define cxDataConsts_cxSDataWriteError 64535 +#define cxEditConsts_cxSEditDateConvertError 64536 +#define cxEditConsts_cxSEditInvalidRepositoryItem 64537 +#define cxEditConsts_cxSEditNumericValueConvertError 64538 +#define cxEditConsts_cxSEditPopupCircularReferencingError 64539 +#define cxEditConsts_cxSEditTimeConvertError 64540 +#define cxEditConsts_cxSEditValidateErrorText 64541 +#define cxEditConsts_cxSEditValueOutOfBounds 64542 +#define cxEditConsts_cxSEditCheckBoxChecked 64543 +#define ADOConst_sNameAttr 64544 +#define ADOConst_sValueAttr 64545 +#define pnglang_EPngInvalidCRCText 64546 +#define pnglang_EPNGInvalidIHDRText 64547 +#define pnglang_EPNGMissingMultipleIDATText 64548 +#define pnglang_EPNGZLIBErrorText 64549 +#define pnglang_EPNGInvalidPaletteText 64550 +#define pnglang_EPNGInvalidFileHeaderText 64551 +#define pnglang_EPNGIHDRNotFirstText 64552 +#define pnglang_EPNGSizeExceedsText 64553 +#define pnglang_EPNGUnknownPalEntryText 64554 +#define pnglang_EPNGUnknownCriticalChunkText 64555 +#define pnglang_EPNGUnknownCompressionText 64556 +#define pnglang_EPNGUnknownInterlaceText 64557 +#define pnglang_EPNGCannotAssignChunkText 64558 +#define pnglang_EPNGUnexpectedEndText 64559 +#define IBSQLMonitor_StrRollback 64560 +#define IBSQLMonitor_StrRollbackRetainin 64561 +#define IBSQLMonitor_StrStartTransaction 64562 +#define IBSQLMonitor_StrApplication 64563 +#define ADOConst_SMissingConnection 64564 +#define ADOConst_SNoDetailFilter 64565 +#define ADOConst_SBookmarksRequired 64566 +#define ADOConst_SMissingCommandText 64567 +#define ADOConst_SNoResultSet 64568 +#define ADOConst_SADOCreateError 64569 +#define ADOConst_SEventsNotSupported 64570 +#define ADOConst_SUsupportedFieldType 64571 +#define ADOConst_SConnectionRequired 64572 +#define ADOConst_SCantRequery 64573 +#define ADOConst_SNoFilterOptions 64574 +#define ADOConst_SRecordsetNotOpen 64575 +#define IBSQLMonitor_StrDisconnect 64576 +#define IBSQLMonitor_StrMisc 64577 +#define IBSQLMonitor_StrError 64578 +#define IBSQLMonitor_StrAttach 64579 +#define IBSQLMonitor_StrDetach 64580 +#define IBSQLMonitor_StrQuery 64581 +#define IBSQLMonitor_StrStart 64582 +#define IBSQLMonitor_StrExecute 64583 +#define IBSQLMonitor_StrNULL 64584 +#define IBSQLMonitor_StrBLOB 64585 +#define IBSQLMonitor_StrFetch 64586 +#define IBSQLMonitor_StrPrepare 64587 +#define IBSQLMonitor_StrPlan 64588 +#define IBSQLMonitor_StrPlanCantRetrive 64589 +#define IBSQLMonitor_StrCommitHardComm 64590 +#define IBSQLMonitor_StrCommitRetaining 64591 +#define IBXConst_SOptionNeedsServer 64592 +#define IBXConst_SInvalidOption 64593 +#define IBXConst_SInvalidOnErrorResult 64594 +#define IBXConst_SInvalidOnStatusResult 64595 +#define IBXConst_SDPBConstantUnknownEx 64596 +#define IBXConst_STPBConstantUnknownEx 64597 +#define IBXConst_SUnknownPlan 64598 +#define IBXConst_SFieldSizeMismatch 64599 +#define IBXConst_SEventAlreadyRegistered 64600 +#define IBXConst_SStringTooLarge 64601 +#define IBXConst_SNoTimers 64602 +#define IBXConst_SIB65feature 64603 +#define IBXConst_SLoginPromptFailure 64604 +#define IBXConst_SIB70feature 64605 +#define IBXConst_SIB71feature 64606 +#define IBSQLMonitor_StrConnect 64607 +#define IBXConst_SStartParamsError 64608 +#define IBXConst_SOutputParsingError 64609 +#define IBXConst_SUseSpecificProcedures 64610 +#define IBXConst_SSQLMonitorAlreadyPresent 64611 +#define IBXConst_SCantPrintValue 64612 +#define IBXConst_SEOFReached 64613 +#define IBXConst_SEOFInComment 64614 +#define IBXConst_SEOFInString 64615 +#define IBXConst_SParamNameExpected 64616 +#define IBXConst_SSuccess 64617 +#define IBXConst_SDelphiException 64618 +#define IBXConst_SNoOptionsSet 64619 +#define IBXConst_SNoDestinationDirectory 64620 +#define IBXConst_SNosourceDirectory 64621 +#define IBXConst_SNoUninstallFile 64622 +#define IBXConst_SOptionNeedsClient 64623 +#define IBXConst_STableNameMismatch 64624 +#define IBXConst_SIndexFieldMissing 64625 +#define IBXConst_SInvalidCancellation 64626 +#define IBXConst_SInvalidEvent 64627 +#define IBXConst_SMaximumEvents 64628 +#define IBXConst_SNoEventsRegistered 64629 +#define IBXConst_SInvalidQueueing 64630 +#define IBXConst_SInvalidRegistration 64631 +#define IBXConst_SInvalidBatchMove 64632 +#define IBXConst_SSQLDialectInvalid 64633 +#define IBXConst_SSPBConstantNotSupported 64634 +#define IBXConst_SSPBConstantUnknown 64635 +#define IBXConst_SServiceActive 64636 +#define IBXConst_SServiceInActive 64637 +#define IBXConst_SServerNameMissing 64638 +#define IBXConst_SQueryParamsError 64639 +#define IBXConst_SCantEndSharedTransaction 64640 +#define IBXConst_SFieldUnsupportedType 64641 +#define IBXConst_SCircularDataLink 64642 +#define IBXConst_SEmptySQLStatement 64643 +#define IBXConst_SIsASelectStatement 64644 +#define IBXConst_SRequiredParamNotSet 64645 +#define IBXConst_SNoStoredProcName 64646 +#define IBXConst_SIsAExecuteProcedure 64647 +#define IBXConst_SUpdateFailed 64648 +#define IBXConst_SNotCachedUpdates 64649 +#define IBXConst_SNotLiveRequest 64650 +#define IBXConst_SNoProvider 64651 +#define IBXConst_SNoRecordsAffected 64652 +#define IBXConst_SNoTableName 64653 +#define IBXConst_SCannotCreatePrimaryIndex 64654 +#define IBXConst_SCannotDropSystemIndex 64655 +#define IBXConst_SFieldNotFound 64656 +#define IBXConst_SNotEditing 64657 +#define IBXConst_SCannotInsert 64658 +#define IBXConst_SCannotPost 64659 +#define IBXConst_SCannotUpdate 64660 +#define IBXConst_SCannotDelete 64661 +#define IBXConst_SCannotRefresh 64662 +#define IBXConst_SBufferNotSet 64663 +#define IBXConst_SCircularReference 64664 +#define IBXConst_SSQLParseError 64665 +#define IBXConst_SUserAbort 64666 +#define IBXConst_SDataSetUniDirectional 64667 +#define IBXConst_SCannotCreateSharedResource 64668 +#define IBXConst_SWindowsAPIError 64669 +#define IBXConst_SColumnListsDontMatch 64670 +#define IBXConst_SColumnTypesDontMatch 64671 +#define IBXConst_SInvalidStatementHandle 64672 +#define IBXConst_SSQLOpen 64673 +#define IBXConst_SSQLClosed 64674 +#define IBXConst_SDatasetOpen 64675 +#define IBXConst_SDatasetClosed 64676 +#define IBXConst_SUnknownSQLDataType 64677 +#define IBXConst_SInvalidColumnIndex 64678 +#define IBXConst_SInvalidParamColumnIndex 64679 +#define IBXConst_SInvalidDataConversion 64680 +#define IBXConst_SColumnIsNotNullable 64681 +#define IBXConst_SBlobCannotBeRead 64682 +#define IBXConst_SBlobCannotBeWritten 64683 +#define IBXConst_SEmptyQuery 64684 +#define IBXConst_SCannotOpenNonSQLSelect 64685 +#define IBXConst_SNoFieldAccess 64686 +#define IBXConst_SFieldReadOnly 64687 +#define IBXConst_STPBConstantUnknown 64688 +#define IBXConst_SDatabaseClosed 64689 +#define IBXConst_SDatabaseOpen 64690 +#define IBXConst_SDatabaseNameMissing 64691 +#define IBXConst_SNotInTransaction 64692 +#define IBXConst_SInTransaction 64693 +#define IBXConst_STimeoutNegative 64694 +#define IBXConst_SNoDatabasesInTransaction 64695 +#define IBXConst_SUpdateWrongDB 64696 +#define IBXConst_SUpdateWrongTR 64697 +#define IBXConst_SDatabaseNotAssigned 64698 +#define IBXConst_STransactionNotAssigned 64699 +#define IBXConst_SXSQLDAIndexOutOfRange 64700 +#define IBXConst_SXSQLDANameDoesNotExist 64701 +#define IBXConst_SEOF 64702 +#define IBXConst_SBOF 64703 +#define VDBConsts_SRefreshRecord 64704 +#define VDBConsts_SRemoteLogin 64705 +#define IBXConst_SUnknownError 64706 +#define IBXConst_SInterBaseMissing 64707 +#define IBXConst_SInterBaseInstallMissing 64708 +#define IBXConst_SIB60feature 64709 +#define IBXConst_SNotSupported 64710 +#define IBXConst_SNotPermitted 64711 +#define IBXConst_SFileAccessError 64712 +#define IBXConst_SConnectionTimeout 64713 +#define IBXConst_SCannotSetDatabase 64714 +#define IBXConst_SCannotSetTransaction 64715 +#define IBXConst_SOperationCancelled 64716 +#define IBXConst_SDPBConstantNotSupported 64717 +#define IBXConst_SDPBConstantUnknown 64718 +#define IBXConst_STPBConstantNotSupported 64719 +#define uDARes_err_DARDMConnectionIsNotAssigned 64720 +#define uDARes_err_DARDMCannotFindProxessorForDelta 64721 +#define uDARes_err_NeedShareMem 64722 +#define uDARes_err_ExecuteSQLCommandNotAllowed 64723 +#define uDARes_err_DatasetNotAccessible 64724 +#define uDARes_err_CommandNotAccessible 64725 +#define uDARes_err_SQLNotPermitted 64726 +#define VDBConsts_SFirstRecord 64727 +#define VDBConsts_SPriorRecord 64728 +#define VDBConsts_SNextRecord 64729 +#define VDBConsts_SLastRecord 64730 +#define VDBConsts_SInsertRecord 64731 +#define VDBConsts_SDeleteRecord 64732 +#define VDBConsts_SEditRecord 64733 +#define VDBConsts_SPostEdit 64734 +#define VDBConsts_SCancelEdit 64735 +#define uDARes_err_CannotFindItem 64736 +#define uDARes_err_DriverAlreadyLoaded 64737 +#define uDARes_err_InvalidDLL 64738 +#define uDARes_err_UnknownDriver 64739 +#define uDARes_err_FieldIsNotBound 64740 +#define uDARes_err_CannotFindField 64741 +#define uDARes_err_LoadPackageFailed 64742 +#define uDARes_err_InvalidDriverReference 64743 +#define uDARes_err_CannotFindStatement 64744 +#define uDARes_err_CannotFindDefaultItem 64745 +#define uDARes_err_PoolIsNotEmpty 64746 +#define uDARes_err_MaxPoolSizeReached 64747 +#define uDARes_err_LAMEDataset 64748 +#define uDARes_err_HETConnectionNotSupportedInV3 64749 +#define uDARes_err_DARDMInvalidSchema 64750 +#define uDARes_err_DARDMUnassignedAdapter 64751 +#define JvResources_RsCl3DDkShadow 64752 +#define JvResources_RsCl3DLight 64753 +#define JvResources_RsClInfoText 64754 +#define JvResources_RsClInfoBk 64755 +#define JvResources_RsGradientActiveCaption 64756 +#define JvResources_RsGradientInactiveCaption 64757 +#define JvResources_RsHotLight 64758 +#define JvResources_RsMenuBar 64759 +#define JvResources_RsMenuHighlight 64760 +#define uDARes_err_ChangeLogAlreadyStarted 64761 +#define uDARes_err_NotAttachedToDataTable 64762 +#define uDARes_err_DriverProcAlreadyRegistered 64763 +#define uDARes_err_DriverManagerAlreadyCreated 64764 +#define uDARes_err_DriverManagerNotAssigned 64765 +#define uDARes_err_FieldTypeNotSupported 64766 +#define uDARes_err_InvalidDataset 64767 +#define JvResources_RsClWindow 64768 +#define JvResources_RsClWindowFrame 64769 +#define JvResources_RsClMenuText 64770 +#define JvResources_RsClWindowText 64771 +#define JvResources_RsClCaptionText 64772 +#define JvResources_RsClActiveBorder 64773 +#define JvResources_RsClInactiveBorder 64774 +#define JvResources_RsClAppWorkSpace 64775 +#define JvResources_RsClHighlight 64776 +#define JvResources_RsClHighlightText 64777 +#define JvResources_RsClBtnFace 64778 +#define JvResources_RsClBtnShadow 64779 +#define JvResources_RsClGrayText 64780 +#define JvResources_RsClBtnText 64781 +#define JvResources_RsClInactiveCaptionText 64782 +#define JvResources_RsClBtnHighlight 64783 +#define JvResources_RsClBrightGreen 64784 +#define JvResources_RsClTurquoise 64785 +#define JvResources_RsClPlum 64786 +#define JvResources_RsClGray25 64787 +#define JvResources_RsClRose 64788 +#define JvResources_RsClTan 64789 +#define JvResources_RsClLightYellow 64790 +#define JvResources_RsClLightGreen 64791 +#define JvResources_RsClLightTurquoise 64792 +#define JvResources_RsClPaleBlue 64793 +#define JvResources_RsClLavender 64794 +#define JvResources_RsClScrollBar 64795 +#define JvResources_RsClBackground 64796 +#define JvResources_RsClActiveCaption 64797 +#define JvResources_RsClInactiveCaption 64798 +#define JvResources_RsClMenu 64799 +#define JvResources_RsClDarkTeal 64800 +#define JvResources_RsClDarkBlue 64801 +#define JvResources_RsClIndigo 64802 +#define JvResources_RsClGray80 64803 +#define JvResources_RsClDarkRed 64804 +#define JvResources_RsClOrange 64805 +#define JvResources_RsClDarkYellow 64806 +#define JvResources_RsClBlueGray 64807 +#define JvResources_RsClGray50 64808 +#define JvResources_RsClLightOrange 64809 +#define JvResources_RsClSeaGreen 64810 +#define JvResources_RsClLightBlue 64811 +#define JvResources_RsClViolet 64812 +#define JvResources_RsClGray40 64813 +#define JvResources_RsClPink 64814 +#define JvResources_RsClGold 64815 +#define JvResources_RsClGray 64816 +#define JvResources_RsClSilver 64817 +#define JvResources_RsClRed 64818 +#define JvResources_RsClLime 64819 +#define JvResources_RsClYellow 64820 +#define JvResources_RsClBlue 64821 +#define JvResources_RsClFuchsia 64822 +#define JvResources_RsClAqua 64823 +#define JvResources_RsClWhite 64824 +#define JvResources_RsClMoneyGreen 64825 +#define JvResources_RsClSkyBlue 64826 +#define JvResources_RsClCream 64827 +#define JvResources_RsClMedGray 64828 +#define JvResources_RsClBrown 64829 +#define JvResources_RsClOliveGreen 64830 +#define JvResources_RsClDarkGreen 64831 +#define JvResources_RsENoGIFData 64832 +#define JvResources_RsEUnrecognizedGIFExt 64833 +#define JvResources_RsEWrongGIFColors 64834 +#define JvResources_RsEBadGIFCodeSize 64835 +#define JvResources_RsEGIFDecodeError 64836 +#define JvResources_RsEGIFEncodeError 64837 +#define JvResources_RsEGIFVersion 64838 +#define JvResources_RsEPixelFormatNotImplemented 64839 +#define JvResources_RsEBitCountNotImplemented 64840 +#define JvResources_RsClBlack 64841 +#define JvResources_RsClMaroon 64842 +#define JvResources_RsClGreen 64843 +#define JvResources_RsClOlive 64844 +#define JvResources_RsClNavy 64845 +#define JvResources_RsClPurple 64846 +#define JvResources_RsClTeal 64847 +#define JclResources_RsIntelCacheDescrB3 64848 +#define JclResources_RsIntelCacheDescrB4 64849 +#define JclResources_RsIntelCacheDescrF0 64850 +#define JclResources_RsIntelCacheDescrF1 64851 +#define JvResources_RsAniExtension 64852 +#define JvResources_RsAniFilterName 64853 +#define JvResources_RsRootValueReplaceFmt 64854 +#define JvResources_RsEUnableToCreateKey 64855 +#define JvResources_RsEEnumeratingRegistry 64856 +#define JvResources_RsEInvalidType 64857 +#define JvResources_RsEUnknownBaseType 64858 +#define JvResources_RsEInvalidPath 64859 +#define JvResources_RsENotAUniqueRootPath 64860 +#define JvResources_RsECircularReferenceOfStorages 64861 +#define JvResources_RsGIFImage 64862 +#define JvResources_RsEChangeGIFSize 64863 +#define JclResources_RsIntelCacheDescr71 64864 +#define JclResources_RsIntelCacheDescr72 64865 +#define JclResources_RsIntelCacheDescr78 64866 +#define JclResources_RsIntelCacheDescr79 64867 +#define JclResources_RsIntelCacheDescr7A 64868 +#define JclResources_RsIntelCacheDescr7B 64869 +#define JclResources_RsIntelCacheDescr7C 64870 +#define JclResources_RsIntelCacheDescr7D 64871 +#define JclResources_RsIntelCacheDescr7F 64872 +#define JclResources_RsIntelCacheDescr82 64873 +#define JclResources_RsIntelCacheDescr83 64874 +#define JclResources_RsIntelCacheDescr84 64875 +#define JclResources_RsIntelCacheDescr85 64876 +#define JclResources_RsIntelCacheDescr86 64877 +#define JclResources_RsIntelCacheDescr87 64878 +#define JclResources_RsIntelCacheDescrB0 64879 +#define JclResources_RsIntelCacheDescr46 64880 +#define JclResources_RsIntelCacheDescr47 64881 +#define JclResources_RsIntelCacheDescr49 64882 +#define JclResources_RsIntelCacheDescr50 64883 +#define JclResources_RsIntelCacheDescr51 64884 +#define JclResources_RsIntelCacheDescr52 64885 +#define JclResources_RsIntelCacheDescr56 64886 +#define JclResources_RsIntelCacheDescr57 64887 +#define JclResources_RsIntelCacheDescr5B 64888 +#define JclResources_RsIntelCacheDescr5C 64889 +#define JclResources_RsIntelCacheDescr5D 64890 +#define JclResources_RsIntelCacheDescr60 64891 +#define JclResources_RsIntelCacheDescr66 64892 +#define JclResources_RsIntelCacheDescr67 64893 +#define JclResources_RsIntelCacheDescr68 64894 +#define JclResources_RsIntelCacheDescr70 64895 +#define JclResources_RsIntelCacheDescr08 64896 +#define JclResources_RsIntelCacheDescr0A 64897 +#define JclResources_RsIntelCacheDescr0B 64898 +#define JclResources_RsIntelCacheDescr0C 64899 +#define JclResources_RsIntelCacheDescr22 64900 +#define JclResources_RsIntelCacheDescr23 64901 +#define JclResources_RsIntelCacheDescr25 64902 +#define JclResources_RsIntelCacheDescr29 64903 +#define JclResources_RsIntelCacheDescr2C 64904 +#define JclResources_RsIntelCacheDescr30 64905 +#define JclResources_RsIntelCacheDescr40 64906 +#define JclResources_RsIntelCacheDescr41 64907 +#define JclResources_RsIntelCacheDescr42 64908 +#define JclResources_RsIntelCacheDescr43 64909 +#define JclResources_RsIntelCacheDescr44 64910 +#define JclResources_RsIntelCacheDescr45 64911 +#define JclResources_RsRTTIParamCount 64912 +#define JclResources_RsRTTIReturnType 64913 +#define JclResources_RsRTTIMaxLen 64914 +#define JclResources_RsRTTIElSize 64915 +#define JclResources_RsRTTIElType 64916 +#define JclResources_RsRTTIElNeedCleanup 64917 +#define JclResources_RsRTTIVarType 64918 +#define JclResources_RsDeclarationFormat 64919 +#define JclResources_RsSynchCreateEvent 64920 +#define JclResources_RsIntelCacheDescr00 64921 +#define JclResources_RsIntelCacheDescr01 64922 +#define JclResources_RsIntelCacheDescr02 64923 +#define JclResources_RsIntelCacheDescr03 64924 +#define JclResources_RsIntelCacheDescr04 64925 +#define JclResources_RsIntelCacheDescr05 64926 +#define JclResources_RsIntelCacheDescr06 64927 +#define JclResources_RsRTTIName 64928 +#define JclResources_RsRTTIType 64929 +#define JclResources_RsRTTIFlags 64930 +#define JclResources_RsRTTIGUID 64931 +#define JclResources_RsRTTITypeKind 64932 +#define JclResources_RsRTTIOrdinalType 64933 +#define JclResources_RsRTTIMinValue 64934 +#define JclResources_RsRTTIMaxValue 64935 +#define JclResources_RsRTTINameList 64936 +#define JclResources_RsRTTIClassName 64937 +#define JclResources_RsRTTIParent 64938 +#define JclResources_RsRTTIPropCount 64939 +#define JclResources_RsRTTIUnitName 64940 +#define JclResources_RsRTTIBasedOn 64941 +#define JclResources_RsRTTIFloatType 64942 +#define JclResources_RsRTTIMethodKind 64943 +#define JclResources_RsRTTIConst 64944 +#define JclResources_RsRTTIArrayOf 64945 +#define JclResources_RsRTTIOut 64946 +#define JclResources_RsRTTIOrdinal 64947 +#define JclResources_RsRTTITrue 64948 +#define JclResources_RsRTTIFalse 64949 +#define JclResources_RsRTTITypeError 64950 +#define JclResources_RsRTTITypeInfoAt 64951 +#define JclResources_RsRTTIPropRead 64952 +#define JclResources_RsRTTIPropWrite 64953 +#define JclResources_RsRTTIPropStored 64954 +#define JclResources_RsRTTIField 64955 +#define JclResources_RsRTTIStaticMethod 64956 +#define JclResources_RsRTTIVirtualMethod 64957 +#define JclResources_RsRTTIIndex 64958 +#define JclResources_RsRTTIDefault 64959 +#define JclResources_RsHKCULong 64960 +#define JclResources_RsHKLMLong 64961 +#define JclResources_RsHKUSLong 64962 +#define JclResources_RsHKPDLong 64963 +#define JclResources_RsHKCCLong 64964 +#define JclResources_RsHKDDLong 64965 +#define JclResources_RsHKCRShort 64966 +#define JclResources_RsHKCUShort 64967 +#define JclResources_RsHKLMShort 64968 +#define JclResources_RsHKUSShort 64969 +#define JclResources_RsHKPDShort 64970 +#define JclResources_RsHKCCShort 64971 +#define JclResources_RsHKDDShort 64972 +#define JclResources_RsRTTIValueOutOfRange 64973 +#define JclResources_RsRTTIUnknownIdentifier 64974 +#define JclResources_RsRTTIVar 64975 +#define ComStrs_sPageIndexError 64976 +#define JConsts_sChangeJPGSize 64977 +#define JConsts_sJPEGError 64978 +#define JConsts_sJPEGImageFile 64979 +#define JclResources_RsWin32Prefix 64980 +#define JclResources_RsFileUtilsNoVersionInfo 64981 +#define JclResources_RsCreateFileMapping 64982 +#define JclResources_RsCreateFileMappingView 64983 +#define JclResources_RsViewNeedsMapping 64984 +#define JclResources_RsFailedToObtainSize 64985 +#define JclResources_RsUnableToOpenKeyRead 64986 +#define JclResources_RsUnableToOpenKeyWrite 64987 +#define JclResources_RsUnableToAccessValue 64988 +#define JclResources_RsWrongDataType 64989 +#define JclResources_RsInconsistentPath 64990 +#define JclResources_RsHKCRLong 64991 +#define IdResourceStringsCore_RSBufferMissingTerminator 64992 +#define IdResourceStringsCore_RSBufferInvalidStartPos 64993 +#define IdResourceStringsCore_RSReplyInvalidCode 64994 +#define IdResourceStringsCore_RSThreadSchedulerThreadRequired 64995 +#define IdResourceStringsCore_RSNoOnExecute 64996 +#define IdResourceStringsCore_RSTCPServerSchedulerAlreadyActive 64997 +#define ComStrs_sTabFailClear 64998 +#define ComStrs_sTabFailDelete 64999 +#define ComStrs_sTabFailRetrieve 65000 +#define ComStrs_sTabFailGetObject 65001 +#define ComStrs_sTabFailSet 65002 +#define ComStrs_sTabFailSetObject 65003 +#define ComStrs_sTabMustBeMultiLine 65004 +#define ComStrs_sInvalidIndex 65005 +#define ComStrs_sInsertError 65006 +#define ComStrs_sUDAssociated 65007 +#define IdResourceStringsCore_RSInterceptCircularLink 65008 +#define IdResourceStringsCore_RSNotEnoughDataInBuffer 65009 +#define IdResourceStringsCore_RSTooMuchDataInBuffer 65010 +#define IdResourceStringsCore_RSFileNotFound 65011 +#define IdResourceStringsCore_RSNotConnected 65012 +#define IdResourceStringsCore_RSObjectTypeNotSupported 65013 +#define IdResourceStringsCore_RSIdNoDataToRead 65014 +#define IdResourceStringsCore_RSReadTimeout 65015 +#define IdResourceStringsCore_RSReadLnMaxLineLengthExceeded 65016 +#define IdResourceStringsCore_RSConnectTimeout 65017 +#define IdResourceStringsCore_RSThreadTerminateAndWaitFor 65018 +#define IdResourceStringsCore_RSAlreadyConnected 65019 +#define IdResourceStringsCore_RSMaximumNumberOfCaptureLineExceeded 65020 +#define IdResourceStringsCore_RSchedMaxThreadEx 65021 +#define IdResourceStringsCore_RSTransparentProxyCannotBind 65022 +#define IdResourceStringsCore_RSTransparentProxyCanNotSupportUDP 65023 +#define IdResourceStringsCore_RSSocksUDPNotSupported 65024 +#define IdResourceStringsCore_RSSocksRequestFailed 65025 +#define IdResourceStringsCore_RSSocksRequestServerFailed 65026 +#define IdResourceStringsCore_RSSocksRequestIdentFailed 65027 +#define IdResourceStringsCore_RSSocksUnknownError 65028 +#define IdResourceStringsCore_RSSocksServerRespondError 65029 +#define IdResourceStringsCore_RSSocksAuthMethodError 65030 +#define IdResourceStringsCore_RSSocksAuthError 65031 +#define IdResourceStringsCore_RSSocksServerGeneralError 65032 +#define IdResourceStringsCore_RSSocksServerPermissionError 65033 +#define IdResourceStringsCore_RSSocksServerNetUnreachableError 65034 +#define IdResourceStringsCore_RSSocksServerHostUnreachableError 65035 +#define IdResourceStringsCore_RSSocksServerConnectionRefusedError 65036 +#define IdResourceStringsCore_RSSocksServerTTLExpiredError 65037 +#define IdResourceStringsCore_RSSocksServerCommandError 65038 +#define IdResourceStringsCore_RSSocksServerAddressError 65039 +#define IdResourceStringsProtocols_RSHTTPPreconditionFailed 65040 +#define IdResourceStringsProtocols_RSHTTPRequestEntityToLong 65041 +#define IdResourceStringsProtocols_RSHTTPRequestURITooLong 65042 +#define IdResourceStringsProtocols_RSHTTPUnsupportedMediaType 65043 +#define IdResourceStringsProtocols_RSHTTPInternalServerError 65044 +#define IdResourceStringsProtocols_RSHTTPNotImplemented 65045 +#define IdResourceStringsProtocols_RSHTTPBadGateway 65046 +#define IdResourceStringsProtocols_RSHTTPServiceUnavailable 65047 +#define IdResourceStringsProtocols_RSHTTPGatewayTimeout 65048 +#define IdResourceStringsProtocols_RSHTTPHTTPVersionNotSupported 65049 +#define IdResourceStringsProtocols_RSHTTPUnknownResponseCode 65050 +#define IdResourceStringsProtocols_RSHTTPHeaderAlreadyWritten 65051 +#define IdResourceStringsProtocols_RSHTTPErrorParsingCommand 65052 +#define IdResourceStringsProtocols_RSHTTPUnsupportedAuthorisationScheme 65053 +#define IdResourceStringsProtocols_RSHTTPCannotSwitchSessionStateWhenActive 65054 +#define IdResourceStringsProtocols_RSHTTPAuthAlreadyRegistered 65055 +#define IdResourceStringsProtocols_RSHTTPMovedPermanently 65056 +#define IdResourceStringsProtocols_RSHTTPMovedTemporarily 65057 +#define IdResourceStringsProtocols_RSHTTPSeeOther 65058 +#define IdResourceStringsProtocols_RSHTTPNotModified 65059 +#define IdResourceStringsProtocols_RSHTTPUseProxy 65060 +#define IdResourceStringsProtocols_RSHTTPBadRequest 65061 +#define IdResourceStringsProtocols_RSHTTPUnauthorized 65062 +#define IdResourceStringsProtocols_RSHTTPForbidden 65063 +#define IdResourceStringsProtocols_RSHTTPNotFound 65064 +#define IdResourceStringsProtocols_RSHTTPMethodNotAllowed 65065 +#define IdResourceStringsProtocols_RSHTTPNotAcceptable 65066 +#define IdResourceStringsProtocols_RSHTTPProxyAuthenticationRequired 65067 +#define IdResourceStringsProtocols_RSHTTPRequestTimeout 65068 +#define IdResourceStringsProtocols_RSHTTPConflict 65069 +#define IdResourceStringsProtocols_RSHTTPGone 65070 +#define IdResourceStringsProtocols_RSHTTPLengthRequired 65071 +#define IdResourceStrings_RSInvalidIPv6Address 65072 +#define IdResourceStrings_RSIPVersionUnsupported 65073 +#define IdResourceStrings_RSNotAllBytesSent 65074 +#define IdResourceStrings_RSPackageSizeTooBig 65075 +#define IdResourceStrings_RSSetSizeExceeded 65076 +#define IdResourceStringsProtocols_RSMIMEExtensionEmpty 65077 +#define IdResourceStringsProtocols_RSMIMEMIMETypeEmpty 65078 +#define IdResourceStringsProtocols_RSMIMEMIMEExtAlreadyExists 65079 +#define IdResourceStringsProtocols_RSHTTPContinue 65080 +#define IdResourceStringsProtocols_RSHTTPOK 65081 +#define IdResourceStringsProtocols_RSHTTPCreated 65082 +#define IdResourceStringsProtocols_RSHTTPAccepted 65083 +#define IdResourceStringsProtocols_RSHTTPNonAuthoritativeInformation 65084 +#define IdResourceStringsProtocols_RSHTTPNoContent 65085 +#define IdResourceStringsProtocols_RSHTTPResetContent 65086 +#define IdResourceStringsProtocols_RSHTTPPartialContent 65087 +#define IdResourceStrings_RSStackELOOP 65088 +#define IdResourceStrings_RSStackENAMETOOLONG 65089 +#define IdResourceStrings_RSStackEHOSTDOWN 65090 +#define IdResourceStrings_RSStackEHOSTUNREACH 65091 +#define IdResourceStrings_RSStackENOTEMPTY 65092 +#define IdResourceStrings_RSStackHOST_NOT_FOUND 65093 +#define IdResourceStrings_RSStackClassUndefined 65094 +#define IdResourceStrings_RSStackAlreadyCreated 65095 +#define IdResourceStrings_RSAntiFreezeOnlyOne 65096 +#define IdResourceStrings_RSCannotSetIPVersionWhenConnected 65097 +#define IdResourceStrings_RSCannotBindRange 65098 +#define IdResourceStrings_RSConnectionClosedGracefully 65099 +#define IdResourceStrings_RSCouldNotBindSocket 65100 +#define IdResourceStrings_RSInvalidPortRange 65101 +#define IdResourceStrings_RSInvalidServiceName 65102 +#define IdResourceStrings_RSIPv6Unavailable 65103 +#define IdResourceStrings_RSStackEPFNOSUPPORT 65104 +#define IdResourceStrings_RSStackEAFNOSUPPORT 65105 +#define IdResourceStrings_RSStackEADDRINUSE 65106 +#define IdResourceStrings_RSStackEADDRNOTAVAIL 65107 +#define IdResourceStrings_RSStackENETDOWN 65108 +#define IdResourceStrings_RSStackENETUNREACH 65109 +#define IdResourceStrings_RSStackENETRESET 65110 +#define IdResourceStrings_RSStackECONNABORTED 65111 +#define IdResourceStrings_RSStackECONNRESET 65112 +#define IdResourceStrings_RSStackENOBUFS 65113 +#define IdResourceStrings_RSStackEISCONN 65114 +#define IdResourceStrings_RSStackENOTCONN 65115 +#define IdResourceStrings_RSStackESHUTDOWN 65116 +#define IdResourceStrings_RSStackETOOMANYREFS 65117 +#define IdResourceStrings_RSStackETIMEDOUT 65118 +#define IdResourceStrings_RSStackECONNREFUSED 65119 +#define IdResourceStrings_RSStackEBADF 65120 +#define IdResourceStrings_RSStackEACCES 65121 +#define IdResourceStrings_RSStackEFAULT 65122 +#define IdResourceStrings_RSStackEINVAL 65123 +#define IdResourceStrings_RSStackEMFILE 65124 +#define IdResourceStrings_RSStackEWOULDBLOCK 65125 +#define IdResourceStrings_RSStackEINPROGRESS 65126 +#define IdResourceStrings_RSStackEALREADY 65127 +#define IdResourceStrings_RSStackENOTSOCK 65128 +#define IdResourceStrings_RSStackEDESTADDRREQ 65129 +#define IdResourceStrings_RSStackEMSGSIZE 65130 +#define IdResourceStrings_RSStackEPROTOTYPE 65131 +#define IdResourceStrings_RSStackENOPROTOOPT 65132 +#define IdResourceStrings_RSStackEPROTONOSUPPORT 65133 +#define IdResourceStrings_RSStackESOCKTNOSUPPORT 65134 +#define IdResourceStrings_RSStackEOPNOTSUPP 65135 +#define DBConsts_SInvalidBcdValue 65136 +#define DBConsts_SInvalidFormatType 65137 +#define DBConsts_SCouldNotParseTimeStamp 65138 +#define DBConsts_SInvalidSqlTimeStamp 65139 +#define IdResourceStrings_RSFailedTimeZoneInfo 65140 +#define IdResourceStrings_RSWinsockCallError 65141 +#define IdResourceStrings_RSWinsockLoadError 65142 +#define IdResourceStrings_RSWinsockInitializationError 65143 +#define IdResourceStrings_RSStatusResolving 65144 +#define IdResourceStrings_RSStatusConnecting 65145 +#define IdResourceStrings_RSStatusConnected 65146 +#define IdResourceStrings_RSStatusDisconnecting 65147 +#define IdResourceStrings_RSStatusDisconnected 65148 +#define IdResourceStrings_RSStatusText 65149 +#define IdResourceStrings_RSStackError 65150 +#define IdResourceStrings_RSStackEINTR 65151 +#define DBConsts_SNotEditing 65152 +#define DBConsts_SDataSetClosed 65153 +#define DBConsts_SDataSetEmpty 65154 +#define DBConsts_SDataSetReadOnly 65155 +#define DBConsts_SNestedDataSetClass 65156 +#define DBConsts_STextFalse 65157 +#define DBConsts_STextTrue 65158 +#define DBConsts_SParameterNotFound 65159 +#define DBConsts_SInvalidVersion 65160 +#define DBConsts_SBadFieldType 65161 +#define DBConsts_SProviderSQLNotSupported 65162 +#define DBConsts_SProviderExecuteNotSupported 65163 +#define DBConsts_SDataSetUnidirectional 65164 +#define DBConsts_SUnassignedVar 65165 +#define DBConsts_SRecordNotFound 65166 +#define DBConsts_SBcdOverflow 65167 +#define DBConsts_SInvalidBoolValue 65168 +#define DBConsts_SInvalidFloatValue 65169 +#define DBConsts_SFieldTypeMismatch 65170 +#define DBConsts_SFieldSizeMismatch 65171 +#define DBConsts_SInvalidVarByteArray 65172 +#define DBConsts_SFieldOutOfRange 65173 +#define DBConsts_SFieldRequired 65174 +#define DBConsts_SDataSetMissing 65175 +#define DBConsts_SInvalidCalcType 65176 +#define DBConsts_SFieldReadOnly 65177 +#define DBConsts_SNoIndexForFields 65178 +#define DBConsts_SIndexNotFound 65179 +#define DBConsts_SCircularDataLink 65180 +#define DBConsts_SLookupInfoError 65181 +#define DBConsts_SDataSourceChange 65182 +#define DBConsts_SDataSetOpen 65183 +#define uRORes_err_MessageNotAssigned 65184 +#define ComConst_SOleError 65185 +#define ComConst_SNoMethod 65186 +#define ComConst_SVarNotObject 65187 +#define ComConst_STooManyParams 65188 +#define DBConsts_SInvalidFieldSize 65189 +#define DBConsts_SInvalidFieldKind 65190 +#define DBConsts_SUnknownFieldType 65191 +#define DBConsts_SFieldNameMissing 65192 +#define DBConsts_SDuplicateFieldName 65193 +#define DBConsts_SFieldNotFound 65194 +#define DBConsts_SFieldAccessError 65195 +#define DBConsts_SFieldValueError 65196 +#define DBConsts_SFieldRangeError 65197 +#define DBConsts_SBcdFieldRangeError 65198 +#define DBConsts_SInvalidIntegerValue 65199 +#define uRORes_err_InvalidHeader 65200 +#define uRORes_err_InvalidHeaderEncrypted 65201 +#define uRORes_err_UnknownClassInStream 65202 +#define uRORes_err_UnexpectedClassInStream 65203 +#define uRORes_err_SessionNotFound 65204 +#define uRORes_err_ChannelDoesntSupportIROMetadataReader 65205 +#define uRORes_err_TooManySessions 65206 +#define uRORes_err_DOMElementIsNIL 65207 +#define uRORes_err_CannotLoadXMLDocument 65208 +#define uRORes_err_ErrorCreatingMsXmlDoc 65209 +#define uRORes_err_NoXMLParsersAvailable 65210 +#define uRORes_err_IDispatchMarshalingNotSupported 65211 +#define uRORes_err_UnsupportedVariantType 65212 +#define uRORes_err_VariantIsNotArray 65213 +#define uRORes_err_InvalidVarArrayDimCount 65214 +#define uRORes_err_CannotFindParameter 65215 +#define uRORes_err_UnspecifiedInterface 65216 +#define uRORes_err_UnspecifiedMessage 65217 +#define uRORes_err_UnknownMethod 65218 +#define uRORes_err_ClassFactoryDidNotReturnInstance 65219 +#define uRORes_err_TypeNotSupported 65220 +#define uRORes_err_ClassFactoryNotFound 65221 +#define uRORes_err_IROMessageNotSupported 65222 +#define uRORes_err_ClassAlreadyRegistered 65223 +#define uRORes_err_UnknownClass 65224 +#define uRORes_err_UnknownProxyInterface 65225 +#define uRORes_err_DispatcherAlreadyAssigned 65226 +#define uRORes_err_CannotFindMessageDispatcher 65227 +#define uRORes_err_ServerOnlySupportsOneDispatcher 65228 +#define uRORes_err_UnhandledException 65229 +#define uRORes_err_ChannelBusy 65230 +#define uRORes_err_ArrayIndexOutOfBounds 65231 +#define uRORes_str_InvalidClassTypeInStream 65232 +#define uRORes_err_UnexpectedEndOfStream 65233 +#define uRORes_err_RodlDuplicateName 65234 +#define uRORes_err_RodlNoDataTypeSpecified 65235 +#define uRORes_err_RodlNoEnumValues 65236 +#define uRORes_err_RodlNoStructElementsDefined 65237 +#define uRORes_err_RodlNoOperationsDefined 65238 +#define uRORes_err_RodlUsedFileDoesNotExist 65239 +#define uRORes_err_RodlInvalidDataType 65240 +#define uRORes_err_RodlStructCannotBeNested 65241 +#define uRORes_err_RodlInvalidAncestorType 65242 +#define uRORes_str_ExceptionOnServer 65243 +#define uRORes_str_ExceptionReraisedFromServer 65244 +#define uRORes_err_AssignError 65245 +#define uRORes_err_InvalidRequestStream 65246 +#define uRORes_err_NILMessage 65247 +#define uRODECConst_sInvalidFormatString 65248 +#define uRODECConst_sFMT_COPY 65249 +#define uRODECConst_sFMT_HEX 65250 +#define uRODECConst_sFMT_HEXL 65251 +#define uRODECConst_sFMT_MIME64 65252 +#define uRODECConst_sFMT_UU 65253 +#define uRODECConst_sFMT_XX 65254 +#define uRODECConst_sInvalidKeySize 65255 +#define uRODECConst_sNotInitialized 65256 +#define uRORes_err_InvalidIndex 65257 +#define uRORes_err_InvalidType 65258 +#define uRORes_err_InvalidLibrary 65259 +#define uRORes_err_InvalidStream 65260 +#define uRORes_err_InvalidTargetEntity 65261 +#define uRORes_err_InvalidParamFlag 65262 +#define uRORes_err_InvalidStringLength 65263 +#define Consts_SDockZoneHasNoCtl 65264 +#define Consts_SDockZoneVersionConflict 65265 +#define Consts_SMultiSelectRequired 65266 +#define Consts_SSeparator 65267 +#define Consts_SErrorSettingCount 65268 +#define Consts_SListBoxMustBeVirtual 65269 +#define Consts_SANSIEncoding 65270 +#define Consts_SASCIIEncoding 65271 +#define Consts_SUnicodeEncoding 65272 +#define Consts_SBigEndianEncoding 65273 +#define Consts_SUTF8Encoding 65274 +#define Consts_SUTF7Encoding 65275 +#define Consts_SPageControlNotSet 65276 +#define uRODECConst_sProtectionCircular 65277 +#define uRODECConst_sStringFormatExists 65278 +#define uRODECConst_sInvalidStringFormat 65279 +#define Consts_SOutOfRange 65280 +#define Consts_sAllFilter 65281 +#define Consts_SInsertLineError 65282 +#define Consts_SInvalidClipFmt 65283 +#define Consts_SIconToClipboard 65284 +#define Consts_SCannotOpenClipboard 65285 +#define Consts_SInvalidMemoSize 65286 +#define Consts_SInvalidPrinterOp 65287 +#define Consts_SNoDefaultPrinter 65288 +#define Consts_SDuplicateMenus 65289 +#define Consts_SPictureLabel 65290 +#define Consts_SPictureDesc 65291 +#define Consts_SPreviewLabel 65292 +#define Consts_SDockedCtlNeedsName 65293 +#define Consts_SDockTreeRemoveError 65294 +#define Consts_SDockZoneNotFound 65295 +#define Consts_SmkcEnter 65296 +#define Consts_SmkcSpace 65297 +#define Consts_SmkcPgUp 65298 +#define Consts_SmkcPgDn 65299 +#define Consts_SmkcEnd 65300 +#define Consts_SmkcHome 65301 +#define Consts_SmkcLeft 65302 +#define Consts_SmkcUp 65303 +#define Consts_SmkcRight 65304 +#define Consts_SmkcDown 65305 +#define Consts_SmkcIns 65306 +#define Consts_SmkcDel 65307 +#define Consts_SmkcShift 65308 +#define Consts_SmkcCtrl 65309 +#define Consts_SmkcAlt 65310 +#define Consts_srNone 65311 +#define Consts_SMsgDlgInformation 65312 +#define Consts_SMsgDlgConfirm 65313 +#define Consts_SMsgDlgYes 65314 +#define Consts_SMsgDlgNo 65315 +#define Consts_SMsgDlgOK 65316 +#define Consts_SMsgDlgCancel 65317 +#define Consts_SMsgDlgHelp 65318 +#define Consts_SMsgDlgAbort 65319 +#define Consts_SMsgDlgRetry 65320 +#define Consts_SMsgDlgIgnore 65321 +#define Consts_SMsgDlgAll 65322 +#define Consts_SMsgDlgNoToAll 65323 +#define Consts_SMsgDlgYesToAll 65324 +#define Consts_SmkcBkSp 65325 +#define Consts_SmkcTab 65326 +#define Consts_SmkcEsc 65327 +#define Consts_SCancelButton 65328 +#define Consts_SYesButton 65329 +#define Consts_SNoButton 65330 +#define Consts_SHelpButton 65331 +#define Consts_SCloseButton 65332 +#define Consts_SIgnoreButton 65333 +#define Consts_SRetryButton 65334 +#define Consts_SAbortButton 65335 +#define Consts_SAllButton 65336 +#define Consts_SCannotDragForm 65337 +#define Consts_SVMetafiles 65338 +#define Consts_SVEnhMetafiles 65339 +#define Consts_SVIcons 65340 +#define Consts_SVBitmaps 65341 +#define Consts_SMsgDlgWarning 65342 +#define Consts_SMsgDlgError 65343 +#define Consts_SVisibleChanged 65344 +#define Consts_SCannotShowModal 65345 +#define Consts_SScrollBarRange 65346 +#define Consts_SPropertyOutOfRange 65347 +#define Consts_SMenuIndexError 65348 +#define Consts_SMenuReinserted 65349 +#define Consts_SMenuNotFound 65350 +#define Consts_SNoTimers 65351 +#define Consts_SNotPrinting 65352 +#define Consts_SPrinting 65353 +#define Consts_SInvalidPrinter 65354 +#define Consts_SDeviceOnPort 65355 +#define Consts_SGroupIndexTooLow 65356 +#define Consts_SNoMDIForm 65357 +#define Consts_SControlParentSetToSelf 65358 +#define Consts_SOKButton 65359 +#define Consts_SUnknownExtension 65360 +#define Consts_SUnknownClipboardFormat 65361 +#define Consts_SOutOfResources 65362 +#define Consts_SNoCanvasHandle 65363 +#define Consts_SInvalidImageSize 65364 +#define Consts_SInvalidImageList 65365 +#define Consts_SReplaceImage 65366 +#define Consts_SImageIndexError 65367 +#define Consts_SImageReadFail 65368 +#define Consts_SImageWriteFail 65369 +#define Consts_SWindowDCError 65370 +#define Consts_SWindowClass 65371 +#define Consts_SCannotFocus 65372 +#define Consts_SParentRequired 65373 +#define Consts_SParentGivenNotAParent 65374 +#define Consts_SMDIChildNotVisible 65375 +#define RTLConsts_SThreadCreateError 65376 +#define RTLConsts_SThreadError 65377 +#define HelpIntfs_hNoTableOfContents 65378 +#define HelpIntfs_hNothingFound 65379 +#define HelpIntfs_hNoContext 65380 +#define HelpIntfs_hNoContextFound 65381 +#define HelpIntfs_hNoTopics 65382 +#define Consts_SInvalidTabPosition 65383 +#define Consts_SInvalidTabStyle 65384 +#define Consts_SInvalidBitmap 65385 +#define Consts_SInvalidIcon 65386 +#define Consts_SInvalidMetafile 65387 +#define Consts_SInvalidPixelFormat 65388 +#define Consts_SInvalidImage 65389 +#define Consts_SScanLine 65390 +#define Consts_SChangeIconSize 65391 +#define RTLConsts_SListCapacityError 65392 +#define RTLConsts_SListCountError 65393 +#define RTLConsts_SListIndexError 65394 +#define RTLConsts_SMemoryStreamError 65395 +#define RTLConsts_SPropertyException 65396 +#define RTLConsts_SReadError 65397 +#define RTLConsts_SReadOnlyProperty 65398 +#define RTLConsts_SRegCreateFailed 65399 +#define RTLConsts_SRegGetDataFailed 65400 +#define RTLConsts_SRegSetDataFailed 65401 +#define RTLConsts_SResNotFound 65402 +#define RTLConsts_SSeekNotImplemented 65403 +#define RTLConsts_SSortedListError 65404 +#define RTLConsts_SUnknownGroup 65405 +#define RTLConsts_SUnknownProperty 65406 +#define RTLConsts_SWriteError 65407 +#define RTLConsts_SClassNotFound 65408 +#define RTLConsts_SDuplicateClass 65409 +#define RTLConsts_SDuplicateItem 65410 +#define RTLConsts_SDuplicateName 65411 +#define RTLConsts_SDuplicateString 65412 +#define RTLConsts_SFCreateErrorEx 65413 +#define RTLConsts_SFOpenErrorEx 65414 +#define RTLConsts_SIniFileWriteError 65415 +#define RTLConsts_SInvalidImage 65416 +#define RTLConsts_SInvalidName 65417 +#define RTLConsts_SInvalidProperty 65418 +#define RTLConsts_SInvalidPropertyElement 65419 +#define RTLConsts_SInvalidPropertyPath 65420 +#define RTLConsts_SInvalidPropertyType 65421 +#define RTLConsts_SInvalidPropertyValue 65422 +#define RTLConsts_SInvalidRegType 65423 +#define SysConst_SShortDayNameWed 65424 +#define SysConst_SShortDayNameThu 65425 +#define SysConst_SShortDayNameFri 65426 +#define SysConst_SShortDayNameSat 65427 +#define SysConst_SLongDayNameSun 65428 +#define SysConst_SLongDayNameMon 65429 +#define SysConst_SLongDayNameTue 65430 +#define SysConst_SLongDayNameWed 65431 +#define SysConst_SLongDayNameThu 65432 +#define SysConst_SLongDayNameFri 65433 +#define SysConst_SLongDayNameSat 65434 +#define RTLConsts_SAncestorNotFound 65435 +#define RTLConsts_SAssignError 65436 +#define RTLConsts_SBitsIndexError 65437 +#define RTLConsts_SCantWriteResourceStreamError 65438 +#define RTLConsts_SCheckSynchronizeError 65439 +#define SysConst_SShortMonthNameDec 65440 +#define SysConst_SLongMonthNameJan 65441 +#define SysConst_SLongMonthNameFeb 65442 +#define SysConst_SLongMonthNameMar 65443 +#define SysConst_SLongMonthNameApr 65444 +#define SysConst_SLongMonthNameMay 65445 +#define SysConst_SLongMonthNameJun 65446 +#define SysConst_SLongMonthNameJul 65447 +#define SysConst_SLongMonthNameAug 65448 +#define SysConst_SLongMonthNameSep 65449 +#define SysConst_SLongMonthNameOct 65450 +#define SysConst_SLongMonthNameNov 65451 +#define SysConst_SLongMonthNameDec 65452 +#define SysConst_SShortDayNameSun 65453 +#define SysConst_SShortDayNameMon 65454 +#define SysConst_SShortDayNameTue 65455 +#define SysConst_SAbstractError 65456 +#define SysConst_SModuleAccessViolation 65457 +#define SysConst_SOSError 65458 +#define SysConst_SUnkOSError 65459 +#define SysConst_SNL 65460 +#define SysConst_SShortMonthNameJan 65461 +#define SysConst_SShortMonthNameFeb 65462 +#define SysConst_SShortMonthNameMar 65463 +#define SysConst_SShortMonthNameApr 65464 +#define SysConst_SShortMonthNameMay 65465 +#define SysConst_SShortMonthNameJun 65466 +#define SysConst_SShortMonthNameJul 65467 +#define SysConst_SShortMonthNameAug 65468 +#define SysConst_SShortMonthNameSep 65469 +#define SysConst_SShortMonthNameOct 65470 +#define SysConst_SShortMonthNameNov 65471 +#define SysConst_SVarTypeOutOfRangeWithPrefix 65472 +#define SysConst_SVarTypeAlreadyUsedWithPrefix 65473 +#define SysConst_SVarTypeNotUsableWithPrefix 65474 +#define SysConst_SVarTypeTooManyCustom 65475 +#define SysConst_SVarTypeCouldNotConvert 65476 +#define SysConst_SVarTypeConvertOverflow 65477 +#define SysConst_SVarOverflow 65478 +#define SysConst_SVarInvalid 65479 +#define SysConst_SVarBadType 65480 +#define SysConst_SVarNotImplemented 65481 +#define SysConst_SVarUnexpected 65482 +#define SysConst_SExternalException 65483 +#define SysConst_SAssertionFailed 65484 +#define SysConst_SIntfCastError 65485 +#define SysConst_SSafecallException 65486 +#define SysConst_SAssertError 65487 +#define SysConst_SOperationAborted 65488 +#define SysConst_SException 65489 +#define SysConst_SExceptTitle 65490 +#define SysConst_SInvalidFormat 65491 +#define SysConst_SArgumentMissing 65492 +#define SysConst_SDispatchError 65493 +#define SysConst_SReadAccess 65494 +#define SysConst_SWriteAccess 65495 +#define SysConst_SFormatTooLong 65496 +#define SysConst_SVarArrayCreate 65497 +#define SysConst_SVarArrayBounds 65498 +#define SysConst_SVarArrayLocked 65499 +#define SysConst_SInvalidVarCast 65500 +#define SysConst_SInvalidVarOp 65501 +#define SysConst_SInvalidVarNullOp 65502 +#define SysConst_SInvalidVarOpWithHResultWithPrefix 65503 +#define SysConst_SDiskFull 65504 +#define SysConst_SInvalidInput 65505 +#define SysConst_SDivByZero 65506 +#define SysConst_SRangeError 65507 +#define SysConst_SIntOverflow 65508 +#define SysConst_SInvalidOp 65509 +#define SysConst_SZeroDivide 65510 +#define SysConst_SOverflow 65511 +#define SysConst_SUnderflow 65512 +#define SysConst_SInvalidPointer 65513 +#define SysConst_SInvalidCast 65514 +#define SysConst_SAccessViolationArg3 65515 +#define SysConst_SAccessViolationNoArg 65516 +#define SysConst_SStackOverflow 65517 +#define SysConst_SControlC 65518 +#define SysConst_SPrivilege 65519 +#define SysConst_SInvalidInteger 65520 +#define SysConst_SInvalidFloat 65521 +#define SysConst_SInvalidDate 65522 +#define SysConst_SInvalidTime 65523 +#define SysConst_SInvalidDateTime 65524 +#define SysConst_SInvalidTimeStamp 65525 +#define SysConst_SInvalidGUID 65526 +#define SysConst_STimeEncodeError 65527 +#define SysConst_SDateEncodeError 65528 +#define SysConst_SOutOfMemory 65529 +#define SysConst_SInOutError 65530 +#define SysConst_SFileNotFound 65531 +#define SysConst_SInvalidFilename 65532 +#define SysConst_STooManyOpenFiles 65533 +#define SysConst_SAccessDenied 65534 +#define SysConst_SEndOfFile 65535 +STRINGTABLE +BEGIN + cxEditConsts_scxRegExprNotCompiled, "Regular expression is not compiled" + cxEditConsts_scxRegExprIncorrectParameterQuantifier, "Incorrect parameter quantifier" + cxEditConsts_scxRegExprCantUseParameterQuantifier, "The parameter quantifier cannot be applied here" + cxEditConsts_scxMaskEditRegExprError, "Regular expression errors:" + cxEditConsts_scxMaskEditInvalidEditValue, "The edit value is invalid" + cxEditConsts_cxSSpinEditInvalidNumericValue, "Invalid numeric value" + cxEditConsts_scxRegExprEmptySourceStream, "The source stream is empty" + cxEditConsts_scxRegExprCantUsePlusQuantifier, "The '+' quantifier cannot be applied here" + cxEditConsts_scxRegExprCantUseStarQuantifier, "The '*' quantifier cannot be applied here" + cxEditConsts_scxRegExprCantCreateEmptyAlt, "The alternative should not be empty" + cxEditConsts_scxRegExprCantCreateEmptyBlock, "The block should not be empty" + cxEditConsts_scxRegExprIllegalSymbol, "Illegal '%s'" + cxEditConsts_scxRegExprIllegalQuantifier, "Illegal quantifier '%s'" + cxEditConsts_scxRegExprIllegalIntegerValue, "Illegal integer value" + cxEditConsts_scxRegExprTooBigReferenceNumber, "Too big reference number" + cxEditConsts_scxRegExprCantCreateEmptyEnum, "Can't create empty enumeration" + cxEditConsts_scxRegExprSubrangeOrder, "The starting character of the subrange must be less than the finishing one" + cxEditConsts_scxRegExprHexNumberExpected0, "Hexadecimal number expected" + cxEditConsts_scxRegExprHexNumberExpected, "Hexadecimal number expected but '%s' found" + cxEditConsts_scxRegExprMissing, "Missing '%s'" + cxEditConsts_scxRegExprUnnecessary, "Unnecessary '%s'" + cxEditConsts_scxRegExprIncorrectSpace, "The space character is not allowed after '\\'" + cxEditConsts_scxSEditRepositoryCurrencyItem, "CurrencyEdit|Represents an editor enabling editing currency data" + cxEditConsts_scxSEditRepositoryDateItem, "DateEdit|Represents an edit control with a dropdown calendar" + cxEditConsts_scxSEditRepositoryHyperLinkItem, "HyperLink|Represents a text editor with hyperlink functionality" + cxEditConsts_scxSEditRepositoryImageComboBoxItem, "ImageComboBox|Represents an editor displaying the list of images and text strings within the dropdown window" + cxEditConsts_scxSEditRepositoryImageItem, "Image|Represents an image editor" + cxEditConsts_scxSEditRepositoryMaskItem, "MaskEdit|Represents a generic masked edit control." + cxEditConsts_scxSEditRepositoryMemoItem, "Memo|Represents an edit control that allows editing memo data" + cxEditConsts_scxSEditRepositoryMRUItem, "MRUEdit|Represents a text editor displaying the list of most recently used items (MRU) within a dropdown window" + cxEditConsts_scxSEditRepositoryPopupItem, "PopupEdit|Represents an edit control with a dropdown list" + cxEditConsts_scxSEditRepositorySpinItem, "SpinEdit|Represents a spin editor" + cxEditConsts_scxSEditRepositoryRadioGroupItem, "RadioGroup|Represents a group of radio buttons" + cxEditConsts_scxSEditRepositoryTextItem, "TextEdit|Represents a single line text editor" + cxEditConsts_scxSEditRepositoryTimeItem, "TimeEdit|Represents an editor displaying time values" + cxEditConsts_scxRegExprLine, "Line" + cxEditConsts_scxRegExprChar, "Char" + cxEditConsts_scxRegExprNotAssignedSourceStream, "The source stream is not assigned" + cxEditConsts_cxSDateSecond, "second" + cxEditConsts_cxSDateThird, "third" + cxEditConsts_cxSDateFourth, "fourth" + cxEditConsts_cxSDateFifth, "fifth" + cxEditConsts_cxSDateSixth, "sixth" + cxEditConsts_cxSDateSeventh, "seventh" + cxEditConsts_cxSDateBOM, "bom" + cxEditConsts_cxSDateEOM, "eom" + cxEditConsts_cxSDateNow, "now" + cxEditConsts_scxSCalcError, "Error" + cxEditConsts_scxSHyperLinkPrefix, "http://" + cxEditConsts_scxSEditRepositoryBlobItem, "BlobEdit|Represents the BLOB editor" + cxEditConsts_scxSEditRepositoryButtonItem, "ButtonEdit|Represents an edit control with embedded buttons" + cxEditConsts_scxSEditRepositoryCalcItem, "CalcEdit|Represents an edit control with a dropdown calculator window" + cxEditConsts_scxSEditRepositoryCheckBoxItem, "CheckBox|Represents a check box control that allows selecting an option" + cxEditConsts_scxSEditRepositoryComboBoxItem, "ComboBox|Represents the combo box editor" + cxEditConsts_cxSDatePopupClear, "Clear" + cxEditConsts_cxSDatePopupNow, "Now" + cxEditConsts_cxSDatePopupOK, "OK" + cxEditConsts_cxSDatePopupToday, "Today" + cxEditConsts_cxSDateError, "Invalid Date" + cxEditConsts_cxSDateToday, "today" + cxEditConsts_cxSDateYesterday, "yesterday" + cxEditConsts_cxSDateTomorrow, "tomorrow" + cxEditConsts_cxSDateSunday, "Sunday" + cxEditConsts_cxSDateMonday, "Monday" + cxEditConsts_cxSDateTuesday, "Tuesday" + cxEditConsts_cxSDateWednesday, "Wednesday" + cxEditConsts_cxSDateThursday, "Thursday" + cxEditConsts_cxSDateFriday, "Friday" + cxEditConsts_cxSDateSaturday, "Saturday" + cxEditConsts_cxSDateFirst, "first" + cxEditConsts_cxSEditCheckBoxGrayed, "" + cxEditConsts_cxSEditCheckBoxUnchecked, "False" + cxEditConsts_cxSRadioGroupDefaultCaption, "" + cxEditConsts_cxSBlobButtonOK, "&OK" + cxEditConsts_cxSBlobButtonCancel, "&Cancel" + cxEditConsts_cxSBlobButtonClose, "&Close" + cxEditConsts_cxSBlobMemo, "(MEMO)" + cxEditConsts_cxSBlobMemoEmpty, "(memo)" + cxEditConsts_cxSBlobPicture, "(PICTURE)" + cxEditConsts_cxSBlobPictureEmpty, "(picture)" + cxEditConsts_cxSMenuItemCaptionCut, "Cu&t" + cxEditConsts_cxSMenuItemCaptionCopy, "&Copy" + cxEditConsts_cxSMenuItemCaptionPaste, "&Paste" + cxEditConsts_cxSMenuItemCaptionDelete, "&Delete" + cxEditConsts_cxSMenuItemCaptionLoad, "&Load..." + cxEditConsts_cxSMenuItemCaptionSave, "Save &As..." + pnglang_EPNGNoImageDataText, "This \"Portable Network Graphics\" image contains no data." + pnglang_EPNGCannotChangeSizeText, "The \"Portable Network Graphics\" image can not be resize by changing width and height properties. Try assigning the image from a bitmap." + pnglang_EPNGCannotAddChunkText, "The program tried to add a existent critical chunk to the current image which is not allowed." + pnglang_EPNGCannotAddInvalidImageText, "It's not allowed to add a new chunk because the current image is invalid." + pnglang_EPNGOutMemoryText, "Some operation could not be performed because the system is out of resources. Close some windows and try again." + pnglang_EPNGHeaderNotPresentText, "This operation is not valid because the current image contains no valid header." + cxDataConsts_cxSDataReadError, "Stream read error" + cxDataConsts_cxSDataWriteError, "Stream write error" + cxEditConsts_cxSEditDateConvertError, "Could not convert to date" + cxEditConsts_cxSEditInvalidRepositoryItem, "The repository item is not acceptable" + cxEditConsts_cxSEditNumericValueConvertError, "Could not convert to numeric value" + cxEditConsts_cxSEditPopupCircularReferencingError, "Circular referencing is not allowed" + cxEditConsts_cxSEditTimeConvertError, "Could not convert to time" + cxEditConsts_cxSEditValidateErrorText, "Invalid input value. Use escape key to abandon changes" + cxEditConsts_cxSEditValueOutOfBounds, "Value out of bounds" + cxEditConsts_cxSEditCheckBoxChecked, "True" + ADOConst_sNameAttr, "Name" + ADOConst_sValueAttr, "Value" + pnglang_EPngInvalidCRCText, "This \"Portable Network Graphics\" image is not valid because it contains invalid pieces of data (crc error)" + pnglang_EPNGInvalidIHDRText, "The \"Portable Network Graphics\" image could not be loaded because one of its main piece of data (ihdr) might be corrupted" + pnglang_EPNGMissingMultipleIDATText, "This \"Portable Network Graphics\" image is invalid because it has missing image parts." + pnglang_EPNGZLIBErrorText, "Could not decompress the image because it contains invalid compressed data.\r\n Description: " + pnglang_EPNGInvalidPaletteText, "The \"Portable Network Graphics\" image contains an invalid palette." + pnglang_EPNGInvalidFileHeaderText, "The file being readed is not a valid \"Portable Network Graphics\" image because it contains an invalid header. This file may be corruped, try obtaining it again." + pnglang_EPNGIHDRNotFirstText, "This \"Portable Network Graphics\" image is not supported or it might be invalid.\r\n(IHDR chunk is not the first)" + pnglang_EPNGSizeExceedsText, "This \"Portable Network Graphics\" image is not supported because either it's width or height exceeds the maximum size, which is 65535 pixels length." + pnglang_EPNGUnknownPalEntryText, "There is no such palette entry." + pnglang_EPNGUnknownCriticalChunkText, "This \"Portable Network Graphics\" image contains an unknown critical part which could not be decoded." + pnglang_EPNGUnknownCompressionText, "This \"Portable Network Graphics\" image is encoded with an unknown compression scheme which could not be decoded." + pnglang_EPNGUnknownInterlaceText, "This \"Portable Network Graphics\" image uses an unknown interlace scheme which could not be decoded." + pnglang_EPNGCannotAssignChunkText, "The chunks must be compatible to be assigned." + pnglang_EPNGUnexpectedEndText, "This \"Portable Network Graphics\" image is invalid because the decoder found an unexpected end of the file." + IBSQLMonitor_StrRollback, ": [Rollback]" + IBSQLMonitor_StrRollbackRetainin, ": [Rollback retaining (Soft rollback)]" + IBSQLMonitor_StrStartTransaction, ": [Start transaction]" + IBSQLMonitor_StrApplication, "[Application: " + ADOConst_SMissingConnection, "Missing Connection or ConnectionString" + ADOConst_SNoDetailFilter, "Filter property cannot be used for detail tables" + ADOConst_SBookmarksRequired, "Dataset does not support bookmarks, which are required for multi-record data controls" + ADOConst_SMissingCommandText, "Missing %s property" + ADOConst_SNoResultSet, "CommandText does not return a result set" + ADOConst_SADOCreateError, "Error creating object. Please verify that the Microsoft Data Access Components 2.1 (or later) have been properly installed" + ADOConst_SEventsNotSupported, "Events are not supported with server side TableDirect cursors" + ADOConst_SUsupportedFieldType, "Unsupported field type (%s) in field %s" + ADOConst_SConnectionRequired, "A connection component is required for async ExecuteOptions" + ADOConst_SCantRequery, "Cannot perform a requery after connection has changed" + ADOConst_SNoFilterOptions, "FilterOptions are not supported" + ADOConst_SRecordsetNotOpen, "Recordset is not open" + IBSQLMonitor_StrDisconnect, ": [Disconnect]" + IBSQLMonitor_StrMisc, "[Misc] " + IBSQLMonitor_StrError, "[Error] " + IBSQLMonitor_StrAttach, ": [Attach]" + IBSQLMonitor_StrDetach, ": [Detach]" + IBSQLMonitor_StrQuery, ": [Query]" + IBSQLMonitor_StrStart, ": [Start]" + IBSQLMonitor_StrExecute, ": [Execute] " + IBSQLMonitor_StrNULL, "" + IBSQLMonitor_StrBLOB, "" + IBSQLMonitor_StrFetch, ": [Fetch] " + IBSQLMonitor_StrPrepare, ": [Prepare] " + IBSQLMonitor_StrPlan, " Plan: " + IBSQLMonitor_StrPlanCantRetrive, " Plan: Can't retrieve plan - too large" + IBSQLMonitor_StrCommitHardComm, ": [Commit (Hard commit)]" + IBSQLMonitor_StrCommitRetaining, ": [Commit retaining (Soft commit)]" + IBXConst_SOptionNeedsServer, "%s component requires Server to function properly" + IBXConst_SInvalidOption, "Invalid option specified" + IBXConst_SInvalidOnErrorResult, "Unexpected onError return value" + IBXConst_SInvalidOnStatusResult, "Unexpected onStatus return value" + IBXConst_SDPBConstantUnknownEx, "DPB Constant (%s) is unknown" + IBXConst_STPBConstantUnknownEx, "TPB Constant (%s) is unknown" + IBXConst_SUnknownPlan, "Unknown Error - Can't retrieve plan" + IBXConst_SFieldSizeMismatch, "Size Mismatch - Field %s size is too small for data" + IBXConst_SEventAlreadyRegistered, "Events already registered" + IBXConst_SStringTooLarge, "Trying to store a string of length %d into a field that can only contain %d" + IBXConst_SNoTimers, "Not enough timers available" + IBXConst_SIB65feature, "%s is an InterBase 6.5 function. Please upgrade to InterBase 6.5 to use this functonality" + IBXConst_SLoginPromptFailure, "Can not find default login prompt dialog. Please add DBLogDlg to the uses section of your main file." + IBXConst_SIB70feature, "%s is an InterBase 7.0 function. Please upgrade to InterBase 7.0 to use this functonality" + IBXConst_SIB71feature, "%s is an InterBase 7.1 function. Please upgrade to InterBase 7.1 to use this functonality" + IBSQLMonitor_StrConnect, ": [Connect]" + IBXConst_SStartParamsError, "start Parameters missing or incorrect" + IBXConst_SOutputParsingError, "Unexpected Output buffer value" + IBXConst_SUseSpecificProcedures, "Generic ServiceStart not applicable: Use Specific Procedures to set configuration params" + IBXConst_SSQLMonitorAlreadyPresent, "SQL Monitor Instance is already present" + IBXConst_SCantPrintValue, "Cannot print value" + IBXConst_SEOFReached, "SEOFReached" + IBXConst_SEOFInComment, "EOF in comment detected" + IBXConst_SEOFInString, "EOF in string detected" + IBXConst_SParamNameExpected, "Parameter name expected" + IBXConst_SSuccess, "Successful execution" + IBXConst_SDelphiException, "DelphiException %s" + IBXConst_SNoOptionsSet, "No Install Options selected" + IBXConst_SNoDestinationDirectory, "DestinationDirectory is not set" + IBXConst_SNosourceDirectory, "SourceDirectory is not set" + IBXConst_SNoUninstallFile, "Uninstall File Name is not set" + IBXConst_SOptionNeedsClient, "%s component requires Client to function properly" + IBXConst_STableNameMismatch, "Table Name Mismatch" + IBXConst_SIndexFieldMissing, "Index Field Missing" + IBXConst_SInvalidCancellation, "Cannot Cancel events while processing" + IBXConst_SInvalidEvent, "Invalid Event" + IBXConst_SMaximumEvents, "Exceded Maximum Event limits" + IBXConst_SNoEventsRegistered, "No Events Registered" + IBXConst_SInvalidQueueing, "Invalid Queueing" + IBXConst_SInvalidRegistration, "Invalid Registration" + IBXConst_SInvalidBatchMove, "Invalid Batch Move" + IBXConst_SSQLDialectInvalid, "SQL Dialect Invalid" + IBXConst_SSPBConstantNotSupported, "SPB Constant Not supported" + IBXConst_SSPBConstantUnknown, "SPB Constant Unknown" + IBXConst_SServiceActive, "Cannot perform operation -- service is not attached" + IBXConst_SServiceInActive, "Cannot perform operation -- service is attached" + IBXConst_SServerNameMissing, "Server Name Missing" + IBXConst_SQueryParamsError, "Query Parameters missing or incorrect" + IBXConst_SCantEndSharedTransaction, "Can't end a shared transaction unless it is forced and equal to the transaction's TimeoutAction" + IBXConst_SFieldUnsupportedType, "Unsupported Field Type" + IBXConst_SCircularDataLink, "Circular DataLink Reference" + IBXConst_SEmptySQLStatement, "Empty SQL Statement" + IBXConst_SIsASelectStatement, "use Open for a Select Statement" + IBXConst_SRequiredParamNotSet, "Required Param value not set" + IBXConst_SNoStoredProcName, "No Stored Procedure Name assigned" + IBXConst_SIsAExecuteProcedure, "use ExecProc for Procedure; use TQuery for Select procedures" + IBXConst_SUpdateFailed, "Update Failed" + IBXConst_SNotCachedUpdates, "CachedUpdates not enabled" + IBXConst_SNotLiveRequest, "Request is not live - cannot modify" + IBXConst_SNoProvider, "No Provider" + IBXConst_SNoRecordsAffected, "No Records Affected" + IBXConst_SNoTableName, "No Table Name assigned" + IBXConst_SCannotCreatePrimaryIndex, "Cannot Create Primary Index; are created automatically" + IBXConst_SCannotDropSystemIndex, "Cannot Drop System Index" + IBXConst_SFieldNotFound, "Field \"%s\" not found" + IBXConst_SNotEditing, "Not in edit mode" + IBXConst_SCannotInsert, "Cannot insert into dataset. (No insert query)" + IBXConst_SCannotPost, "Cannot post. (No update/insert query)" + IBXConst_SCannotUpdate, "Cannot update. (No update query)" + IBXConst_SCannotDelete, "Cannot delete from dataset. (No delete query)" + IBXConst_SCannotRefresh, "Cannot refresh row. (No refresh query)" + IBXConst_SBufferNotSet, "Buffer not set" + IBXConst_SCircularReference, "Circular references not permitted" + IBXConst_SSQLParseError, "SQL Parse Error:\r\n\r\n%s" + IBXConst_SUserAbort, "User abort" + IBXConst_SDataSetUniDirectional, "Data set is uni-directional" + IBXConst_SCannotCreateSharedResource, "Cannot create shared resource. (Windows error %d)" + IBXConst_SWindowsAPIError, "Windows API error. (Windows error %d [$%.8x])" + IBXConst_SColumnListsDontMatch, "Column lists do not match" + IBXConst_SColumnTypesDontMatch, "Column types don't match. (From index: %d; To index: %d)" + IBXConst_SInvalidStatementHandle, "Invalid statement handle" + IBXConst_SSQLOpen, "IBSQL Open" + IBXConst_SSQLClosed, "IBSQL Closed" + IBXConst_SDatasetOpen, "Dataset open" + IBXConst_SDatasetClosed, "Dataset closed" + IBXConst_SUnknownSQLDataType, "Unknown SQL Data type (%d)" + IBXConst_SInvalidColumnIndex, "Invalid column index (index exceeds permitted range)" + IBXConst_SInvalidParamColumnIndex, "Invalid parameter index (index exceeds permitted range)" + IBXConst_SInvalidDataConversion, "Invalid data conversion" + IBXConst_SColumnIsNotNullable, "Column cannot be set to null (%s)" + IBXConst_SBlobCannotBeRead, "Blob stream cannot be read" + IBXConst_SBlobCannotBeWritten, "Blob stream cannot be written" + IBXConst_SEmptyQuery, "Empty query" + IBXConst_SCannotOpenNonSQLSelect, "Cannot \"open\" a non-select statement. Use ExecQuery" + IBXConst_SNoFieldAccess, "No access to field \"%s\"" + IBXConst_SFieldReadOnly, "Field \"%s\" is read-only" + IBXConst_STPBConstantUnknown, "TPB Constant (%d) is unknown" + IBXConst_SDatabaseClosed, "Cannot perform operation -- DB is not open" + IBXConst_SDatabaseOpen, "Cannot perform operation -- DB is currently open" + IBXConst_SDatabaseNameMissing, "Database name is missing" + IBXConst_SNotInTransaction, "Transaction is not active" + IBXConst_SInTransaction, "Transaction is active" + IBXConst_STimeoutNegative, "Timeout values cannot be negative" + IBXConst_SNoDatabasesInTransaction, "No databases are listed in transaction component" + IBXConst_SUpdateWrongDB, "Updating wrong database" + IBXConst_SUpdateWrongTR, "Updating wrong transaction. Unique transaction expected in set" + IBXConst_SDatabaseNotAssigned, "Database not assigned" + IBXConst_STransactionNotAssigned, "Transaction not assigned" + IBXConst_SXSQLDAIndexOutOfRange, "XSQLDA index out of range" + IBXConst_SXSQLDANameDoesNotExist, "XSQLDA name does not exist (%s)" + IBXConst_SEOF, "End of file" + IBXConst_SBOF, "Beginning of file" + VDBConsts_SRefreshRecord, "Refresh data" + VDBConsts_SRemoteLogin, "Remote Login" + IBXConst_SUnknownError, "Unknown error" + IBXConst_SInterBaseMissing, "InterBase library gds32.dll not found in the path. Please install InterBase to use this functionality" + IBXConst_SInterBaseInstallMissing, "InterBase Install DLL ibinstall.dll not found in the path. Please install InterBase 6 to use this functionality" + IBXConst_SIB60feature, "%s is an InterBase 6 function. Please upgrade to InterBase 6 to use this functonality" + IBXConst_SNotSupported, "Unsupported feature" + IBXConst_SNotPermitted, "Not permitted" + IBXConst_SFileAccessError, "Temporary file access error" + IBXConst_SConnectionTimeout, "Database connection timed out" + IBXConst_SCannotSetDatabase, "Cannot set database" + IBXConst_SCannotSetTransaction, "Cannot set transaction" + IBXConst_SOperationCancelled, "Operation cancelled at user's request" + IBXConst_SDPBConstantNotSupported, "DPB Constant (isc_dpb_%s) is unsupported" + IBXConst_SDPBConstantUnknown, "DPB Constant (%d) is unknown" + IBXConst_STPBConstantNotSupported, "TPB Constant (isc_tpb_%s) is unsupported" + uDARes_err_DARDMConnectionIsNotAssigned, "Connection is not assigned" + uDARes_err_DARDMCannotFindProxessorForDelta, "Cannot find a business processor for delta \"%s\"" + uDARes_err_NeedShareMem, "To use dynamically loaded drivers, you must build your application with ShareMem." + uDARes_err_ExecuteSQLCommandNotAllowed, "ExecuteSQLCommand is not enabled for this server." + uDARes_err_DatasetNotAccessible, "Access to dataset %s has not been permitted." + uDARes_err_CommandNotAccessible, "executon of command %s has not been permitted." + uDARes_err_SQLNotPermitted, "Execution of the specified SQL statement has not been permitted." + VDBConsts_SFirstRecord, "First record" + VDBConsts_SPriorRecord, "Prior record" + VDBConsts_SNextRecord, "Next record" + VDBConsts_SLastRecord, "Last record" + VDBConsts_SInsertRecord, "Insert record" + VDBConsts_SDeleteRecord, "Delete record" + VDBConsts_SEditRecord, "Edit record" + VDBConsts_SPostEdit, "Post edit" + VDBConsts_SCancelEdit, "Cancel edit" + uDARes_err_CannotFindItem, "Cannot find %s \"%s\" in collection of type %s" + uDARes_err_DriverAlreadyLoaded, "Driver %s is already loaded" + uDARes_err_InvalidDLL, "%s is not a valid Data Abstract driver" + uDARes_err_UnknownDriver, "Unknown driver %s" + uDARes_err_FieldIsNotBound, "Field is not bound" + uDARes_err_CannotFindField, "Cannot find field %s" + uDARes_err_LoadPackageFailed, "LoadPackage failed for file %s" + uDARes_err_InvalidDriverReference, "The driver in %s could not be loaded" + uDARes_err_CannotFindStatement, "Cannot find statement %s for connection %s" + uDARes_err_CannotFindDefaultItem, "Cannot find default %s" + uDARes_err_PoolIsNotEmpty, "Cannot perform this operation when connections are pooled" + uDARes_err_MaxPoolSizeReached, "Maximum pool size reached. Cannot create a new connection" + uDARes_err_LAMEDataset, "%s does not implement IProviderSupport or implements it incorrectly" + uDARes_err_HETConnectionNotSupportedInV3, "HET Connections are not supported by te legacy v3 DARemoteService" + uDARes_err_DARDMInvalidSchema, "Schema must be assigned and must point to a ConnectionManager" + uDARes_err_DARDMUnassignedAdapter, "DataAdapter is not assigned" + JvResources_RsCl3DDkShadow, "Dark shadow 3D elements" + JvResources_RsCl3DLight, "Highlight 3D elements" + JvResources_RsClInfoText, "Tooltip text" + JvResources_RsClInfoBk, "Tooltip background" + JvResources_RsGradientActiveCaption, "Gradient Active Caption" + JvResources_RsGradientInactiveCaption, "Gradient Inactive Caption" + JvResources_RsHotLight, "Hot Light" + JvResources_RsMenuBar, "Menu Bar" + JvResources_RsMenuHighlight, "Menu Highlight" + uDARes_err_ChangeLogAlreadyStarted, "StartChange has already been called; cannot log more than one change at a time." + uDARes_err_NotAttachedToDataTable, "Delta is not attached to a DataTable" + uDARes_err_DriverProcAlreadyRegistered, "DriverProc 0x%0.8x is already registered" + uDARes_err_DriverManagerAlreadyCreated, "An instance of a TDADriverManager was already initialized. Only one driver manager per module is allowed" + uDARes_err_DriverManagerNotAssigned, "Driver Manager is not assigned" + uDARes_err_FieldTypeNotSupported, "FieldType %s (%d) is not supported" + uDARes_err_InvalidDataset, "Invalid or NIL dataset" + JvResources_RsClWindow, "Window background" + JvResources_RsClWindowFrame, "Window frame" + JvResources_RsClMenuText, "Menu text" + JvResources_RsClWindowText, "Window text" + JvResources_RsClCaptionText, "Active window title bar text" + JvResources_RsClActiveBorder, "Active window border" + JvResources_RsClInactiveBorder, "Inactive window border" + JvResources_RsClAppWorkSpace, "Application workspace" + JvResources_RsClHighlight, "Selection background" + JvResources_RsClHighlightText, "Selection text" + JvResources_RsClBtnFace, "Button face" + JvResources_RsClBtnShadow, "Button shadow" + JvResources_RsClGrayText, "Dimmed text" + JvResources_RsClBtnText, "Button text" + JvResources_RsClInactiveCaptionText, "Inactive window title bar text" + JvResources_RsClBtnHighlight, "Button highlight" + JvResources_RsClBrightGreen, "Bright Green" + JvResources_RsClTurquoise, "Turquoise" + JvResources_RsClPlum, "Plum" + JvResources_RsClGray25, "Gray 25%" + JvResources_RsClRose, "Rose" + JvResources_RsClTan, "Tan" + JvResources_RsClLightYellow, "Light Yellow" + JvResources_RsClLightGreen, "Light Green" + JvResources_RsClLightTurquoise, "Light Turquoise" + JvResources_RsClPaleBlue, "Pale Blue" + JvResources_RsClLavender, "Lavender" + JvResources_RsClScrollBar, "Scrollbar" + JvResources_RsClBackground, "Desktop background" + JvResources_RsClActiveCaption, "Active window title bar" + JvResources_RsClInactiveCaption, "Inactive window title bar" + JvResources_RsClMenu, "Menu background" + JvResources_RsClDarkTeal, "Dark Teal" + JvResources_RsClDarkBlue, "Dark Blue" + JvResources_RsClIndigo, "Indigo" + JvResources_RsClGray80, "Gray 80%" + JvResources_RsClDarkRed, "Dark Red" + JvResources_RsClOrange, "Orange" + JvResources_RsClDarkYellow, "Dark Yellow" + JvResources_RsClBlueGray, "Blue Gray" + JvResources_RsClGray50, "Gray 50%" + JvResources_RsClLightOrange, "Light Orange" + JvResources_RsClSeaGreen, "Sea Green" + JvResources_RsClLightBlue, "Light Blue" + JvResources_RsClViolet, "Violet" + JvResources_RsClGray40, "Gray 40%" + JvResources_RsClPink, "Pink" + JvResources_RsClGold, "Gold" + JvResources_RsClGray, "Gray" + JvResources_RsClSilver, "Silver" + JvResources_RsClRed, "Red" + JvResources_RsClLime, "Lime" + JvResources_RsClYellow, "Yellow" + JvResources_RsClBlue, "Blue" + JvResources_RsClFuchsia, "Fuchsia" + JvResources_RsClAqua, "Aqua" + JvResources_RsClWhite, "White" + JvResources_RsClMoneyGreen, "Money green" + JvResources_RsClSkyBlue, "Sky blue" + JvResources_RsClCream, "Cream" + JvResources_RsClMedGray, "Medium gray" + JvResources_RsClBrown, "Brown" + JvResources_RsClOliveGreen, "Olive Green" + JvResources_RsClDarkGreen, "Dark Green" + JvResources_RsENoGIFData, "No GIF Data to write" + JvResources_RsEUnrecognizedGIFExt, "Unrecognized extension block: %.2x" + JvResources_RsEWrongGIFColors, "Wrong number of colors; must be a power of 2" + JvResources_RsEBadGIFCodeSize, "GIF code size not in range 2 to 9" + JvResources_RsEGIFDecodeError, "GIF encoded data is corrupt" + JvResources_RsEGIFEncodeError, "GIF image encoding error" + JvResources_RsEGIFVersion, "Unknown GIF version" + JvResources_RsEPixelFormatNotImplemented, "BitmapToMemoryStream: pixel format not implemented" + JvResources_RsEBitCountNotImplemented, "BitmapToMemoryStream: bit count not implemented" + JvResources_RsClBlack, "Black" + JvResources_RsClMaroon, "Maroon" + JvResources_RsClGreen, "Green" + JvResources_RsClOlive, "Olive green" + JvResources_RsClNavy, "Navy blue" + JvResources_RsClPurple, "Purple" + JvResources_RsClTeal, "Teal" + JclResources_RsIntelCacheDescrB3, "Data TLB: 4 KByte pages, 4-way set associative, 128 entries" + JclResources_RsIntelCacheDescrB4, "Data TLB1: 4 KByte pages, 4-way set associative, 256 entries" + JclResources_RsIntelCacheDescrF0, "64-Byte Prefetching" + JclResources_RsIntelCacheDescrF1, "128-Byte Prefetching" + JvResources_RsAniExtension, "ani" + JvResources_RsAniFilterName, "ANI Image" + JvResources_RsRootValueReplaceFmt, "The Default Root Value \"%0:s\" has been replaced with \"%1:s\".\r\nPlease change the value in the FileVersionInfo Project Properties." + JvResources_RsEUnableToCreateKey, "Unable to create key '%s'" + JvResources_RsEEnumeratingRegistry, "Error enumerating registry" + JvResources_RsEInvalidType, "Invalid type" + JvResources_RsEUnknownBaseType, "Unknown base type for given set" + JvResources_RsEInvalidPath, "Invalid path" + JvResources_RsENotAUniqueRootPath, "'%s' is not a unique root path" + JvResources_RsECircularReferenceOfStorages, "Circular reference of storages" + JvResources_RsGIFImage, "CompuServe GIF Image" + JvResources_RsEChangeGIFSize, "Cannot change the Size of a GIF image" + JclResources_RsIntelCacheDescr71, "Trace cache: 16 K-Ops, 8-way set associative" + JclResources_RsIntelCacheDescr72, "Trace cache: 32 K-Ops, 8-way set associative" + JclResources_RsIntelCacheDescr78, "2nd-level cache: 1 MBytes, 4-way set associative, 64 bytes line size" + JclResources_RsIntelCacheDescr79, "2nd-level cache: 128 KBytes, 8-way set associative, 64 bytes line size, 2 lines per sector" + JclResources_RsIntelCacheDescr7A, "2nd-level cache: 256 KBytes, 8-way set associative, 64 bytes line size, 2 lines per sector" + JclResources_RsIntelCacheDescr7B, "2nd-level cache: 512 KBytes, 8-way set associative, 64 bytes line size, 2 lines per sector" + JclResources_RsIntelCacheDescr7C, "2nd-level cache: 1 MBytes, 8-way set associative, 64 bytes line size, 2 lines per sector" + JclResources_RsIntelCacheDescr7D, "2nd-level cache: 2 MBytes, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr7F, "2nd-level cache: 512 KBytes, 2-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr82, "2nd-level cache: 256 KBytes, 8-way associative, 32 byte line size" + JclResources_RsIntelCacheDescr83, "2nd-level cache: 512 KBytes, 8-way associative, 32 byte line size" + JclResources_RsIntelCacheDescr84, "2nd-level cache: 1 MBytes, 8-way associative, 32 byte line size" + JclResources_RsIntelCacheDescr85, "2nd-level cache: 2 MBytes, 8-way associative, 32 byte line size" + JclResources_RsIntelCacheDescr86, "2nd-level cache: 512 KByte, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr87, "2nd-level cache: 1 MByte, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescrB0, "Instruction TLB: 4 KByte pages, 4-way set associative, 128 entries" + JclResources_RsIntelCacheDescr46, "3rd-level cache: 4 MBytes, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr47, "3rd-level cache: 8 MBytes, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr49, "2nd-level cache: 4 MBytes, 16-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr50, "Instruction TLB: 4 KByte and 2 MByte or 4 MByte pages, 64 Entries" + JclResources_RsIntelCacheDescr51, "Instruction TLB: 4 KByte and 2 MByte or 4 MByte pages, 128 Entries" + JclResources_RsIntelCacheDescr52, "Instruction TLB: 4 KByte and 2 MByte or 4 MByte pages, 256 Entries" + JclResources_RsIntelCacheDescr56, "Data TLB0: 4 MByte pages, 4-way set associative, 16 entries" + JclResources_RsIntelCacheDescr57, "Data TLB0: 4 KByte pages, 4-way associative, 16 entries" + JclResources_RsIntelCacheDescr5B, "Data TLB: 4 KByte and 4 MByte pages, 64 Entries" + JclResources_RsIntelCacheDescr5C, "Data TLB: 4 KByte and 4 MByte pages, 128 Entries" + JclResources_RsIntelCacheDescr5D, "Data TLB: 4 KByte and 4 MByte pages, 256 Entries" + JclResources_RsIntelCacheDescr60, "1st-level data cache: 16 KByte, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr66, "1st-level data cache: 8 KBytes, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr67, "1st-level data cache: 16 KBytes, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr68, "1st-level data cache: 32 KBytes, 4-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr70, "Trace cache: 12 K-Ops, 8-way set associative" + JclResources_RsIntelCacheDescr08, "1st level instruction cache: 16 KBytes, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr0A, "1st level data cache: 8 KBytes, 2-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr0B, "Instruction TLB: 4 MByte pages, 4-way set associative, 4 entries" + JclResources_RsIntelCacheDescr0C, "1st level data cache: 16 KBytes, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr22, "3rd level cache: 512 KBytes, 4-way set associative, 64 byte line size, 2 lines per sector" + JclResources_RsIntelCacheDescr23, "3rd level cache: 1 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector" + JclResources_RsIntelCacheDescr25, "3rd level cache: 2 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector" + JclResources_RsIntelCacheDescr29, "3rd level cache: 4 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector" + JclResources_RsIntelCacheDescr2C, "1st level data cache: 32 KBytes, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr30, "1st level instruction cache: 32 KBytes, 8-way set associative, 64 byte line size" + JclResources_RsIntelCacheDescr40, "No 2nd-level cache or, if processor contains a valid 2nd-level cache, no 3rd-level cache" + JclResources_RsIntelCacheDescr41, "2nd-level cache: 128 KBytes, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr42, "2nd-level cache: 256 KBytes, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr43, "2nd-level cache: 512 KBytes, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr44, "2nd-level cache: 1 MBytes, 4-way set associative, 32 byte line size" + JclResources_RsIntelCacheDescr45, "2nd-level cache: 2 MBytes, 4-way set associative, 32 byte line size" + JclResources_RsRTTIParamCount, "Parameter count: " + JclResources_RsRTTIReturnType, "Return type: " + JclResources_RsRTTIMaxLen, "Max length: " + JclResources_RsRTTIElSize, "Element size: " + JclResources_RsRTTIElType, "Element type: " + JclResources_RsRTTIElNeedCleanup, "Elements need clean up: " + JclResources_RsRTTIVarType, "Variant type: " + JclResources_RsDeclarationFormat, "// Declaration for '%s' not supported." + JclResources_RsSynchCreateEvent, "Failed to create event" + JclResources_RsIntelCacheDescr00, "Null descriptor" + JclResources_RsIntelCacheDescr01, "Instruction TLB: 4 KByte pages, 4-way set associative, 32 entries" + JclResources_RsIntelCacheDescr02, "Instruction TLB: 4 MByte pages, 4-way set associative, 2 entries" + JclResources_RsIntelCacheDescr03, "Data TLB: 4 KByte pages, 4-way set associative, 64 entries" + JclResources_RsIntelCacheDescr04, "Data TLB: 4 MByte pages, 4-way set associative, 8 entries" + JclResources_RsIntelCacheDescr05, "Data TLB1: 4 MByte pages, 4-way set associative, 32 entries" + JclResources_RsIntelCacheDescr06, "1st level instruction cache: 8 KBytes, 4-way set associative, 32 byte line size" + JclResources_RsRTTIName, "Name: " + JclResources_RsRTTIType, "Type: " + JclResources_RsRTTIFlags, "Flags: " + JclResources_RsRTTIGUID, "GUID: " + JclResources_RsRTTITypeKind, "Type kind: " + JclResources_RsRTTIOrdinalType, "Ordinal type: " + JclResources_RsRTTIMinValue, "Min value: " + JclResources_RsRTTIMaxValue, "Max value: " + JclResources_RsRTTINameList, "Names: " + JclResources_RsRTTIClassName, "Class name: " + JclResources_RsRTTIParent, "Parent: " + JclResources_RsRTTIPropCount, "Property count: " + JclResources_RsRTTIUnitName, "Unit name: " + JclResources_RsRTTIBasedOn, "Based on: " + JclResources_RsRTTIFloatType, "Float type: " + JclResources_RsRTTIMethodKind, "Method kind: " + JclResources_RsRTTIConst, "const " + JclResources_RsRTTIArrayOf, "array of " + JclResources_RsRTTIOut, "out " + JclResources_RsRTTIOrdinal, "ordinal=" + JclResources_RsRTTITrue, "True" + JclResources_RsRTTIFalse, "False" + JclResources_RsRTTITypeError, "???" + JclResources_RsRTTITypeInfoAt, "Type info: %p" + JclResources_RsRTTIPropRead, "read" + JclResources_RsRTTIPropWrite, "write" + JclResources_RsRTTIPropStored, "stored" + JclResources_RsRTTIField, "field" + JclResources_RsRTTIStaticMethod, "static method" + JclResources_RsRTTIVirtualMethod, "virtual method" + JclResources_RsRTTIIndex, "index" + JclResources_RsRTTIDefault, "default" + JclResources_RsHKCULong, "HKEY_CURRENT_USER" + JclResources_RsHKLMLong, "HKEY_LOCAL_MACHINE" + JclResources_RsHKUSLong, "HKEY_USERS" + JclResources_RsHKPDLong, "HKEY_PERFORMANCE_DATA" + JclResources_RsHKCCLong, "HKEY_CURRENT_CONFIG" + JclResources_RsHKDDLong, "HKEY_DYN_DATA" + JclResources_RsHKCRShort, "HKCR" + JclResources_RsHKCUShort, "HKCU" + JclResources_RsHKLMShort, "HKLM" + JclResources_RsHKUSShort, "HKUS" + JclResources_RsHKPDShort, "HKPD" + JclResources_RsHKCCShort, "HKCC" + JclResources_RsHKDDShort, "HKDD" + JclResources_RsRTTIValueOutOfRange, "Value out of range (%s)." + JclResources_RsRTTIUnknownIdentifier, "Unknown identifier '%s'." + JclResources_RsRTTIVar, "var " + ComStrs_sPageIndexError, "%d is an invalid PageIndex value. PageIndex must be between 0 and %d" + JConsts_sChangeJPGSize, "Cannot change the size of a JPEG image" + JConsts_sJPEGError, "JPEG error #%d" + JConsts_sJPEGImageFile, "JPEG Image File" + JclResources_RsWin32Prefix, "Win32: %s (%u)" + JclResources_RsFileUtilsNoVersionInfo, "File contains no version information" + JclResources_RsCreateFileMapping, "Failed to create FileMapping" + JclResources_RsCreateFileMappingView, "Failed to create FileMappingView" + JclResources_RsViewNeedsMapping, "FileMap argument of TJclFileMappingView constructor cannot be nil" + JclResources_RsFailedToObtainSize, "Failed to obtain size of file" + JclResources_RsUnableToOpenKeyRead, "Unable to open key \"%s\\%s\" for read" + JclResources_RsUnableToOpenKeyWrite, "Unable to open key \"%s\\%s\" for write" + JclResources_RsUnableToAccessValue, "Unable to open key \"%s\\%s\" and access value \"%s\"" + JclResources_RsWrongDataType, "\"%s\\%s\\%s\" is of wrong kind or size" + JclResources_RsInconsistentPath, "\"%s\" does not match RootKey" + JclResources_RsHKCRLong, "HKEY_CLASSES_ROOT" + IdResourceStringsCore_RSBufferMissingTerminator, "Buffer terminator must be specified." + IdResourceStringsCore_RSBufferInvalidStartPos, "Buffer start position is invalid." + IdResourceStringsCore_RSReplyInvalidCode, "Reply Code is not valid: %s" + IdResourceStringsCore_RSThreadSchedulerThreadRequired, "Thread must be specified for the scheduler." + IdResourceStringsCore_RSNoOnExecute, "You must have an OnExecute event." + IdResourceStringsCore_RSTCPServerSchedulerAlreadyActive, "Cannot change the scheduler while the server is Active." + ComStrs_sTabFailClear, "Failed to clear tab control" + ComStrs_sTabFailDelete, "Failed to delete tab at index %d" + ComStrs_sTabFailRetrieve, "Failed to retrieve tab at index %d" + ComStrs_sTabFailGetObject, "Failed to get object at index %d" + ComStrs_sTabFailSet, "Failed to set tab \"%s\" at index %d" + ComStrs_sTabFailSetObject, "Failed to set object at index %d" + ComStrs_sTabMustBeMultiLine, "MultiLine must be True when TabPosition is tpLeft or tpRight" + ComStrs_sInvalidIndex, "Invalid index" + ComStrs_sInsertError, "Unable to insert an item" + ComStrs_sUDAssociated, "%s is already associated with %s" + IdResourceStringsCore_RSInterceptCircularLink, "%d: Circular links are not allowed" + IdResourceStringsCore_RSNotEnoughDataInBuffer, "Not enough data in buffer." + IdResourceStringsCore_RSTooMuchDataInBuffer, "Too much data in buffer." + IdResourceStringsCore_RSFileNotFound, "File \"%s\" not found" + IdResourceStringsCore_RSNotConnected, "Not Connected" + IdResourceStringsCore_RSObjectTypeNotSupported, "Object type not supported." + IdResourceStringsCore_RSIdNoDataToRead, "No data to read." + IdResourceStringsCore_RSReadTimeout, "Read Timeout" + IdResourceStringsCore_RSReadLnMaxLineLengthExceeded, "Max line length exceeded." + IdResourceStringsCore_RSConnectTimeout, "Connect timed out." + IdResourceStringsCore_RSThreadTerminateAndWaitFor, "Cannot call TerminateAndWaitFor on FreeAndTerminate threads" + IdResourceStringsCore_RSAlreadyConnected, "Already connected." + IdResourceStringsCore_RSMaximumNumberOfCaptureLineExceeded, "Maximum number of line allowed exceeded" + IdResourceStringsCore_RSchedMaxThreadEx, "The maximum number of threads for this scheduler is exceeded." + IdResourceStringsCore_RSTransparentProxyCannotBind, "Transparent proxy cannot bind." + IdResourceStringsCore_RSTransparentProxyCanNotSupportUDP, "UDP Not supported by this proxy." + IdResourceStringsCore_RSSocksUDPNotSupported, "UDP is not support in this SOCKS version." + IdResourceStringsCore_RSSocksRequestFailed, "Request rejected or failed." + IdResourceStringsCore_RSSocksRequestServerFailed, "Request rejected because SOCKS server cannot connect." + IdResourceStringsCore_RSSocksRequestIdentFailed, "Request rejected because the client program and identd report different user-ids." + IdResourceStringsCore_RSSocksUnknownError, "Unknown socks error." + IdResourceStringsCore_RSSocksServerRespondError, "Socks server did not respond." + IdResourceStringsCore_RSSocksAuthMethodError, "Invalid socks authentication method." + IdResourceStringsCore_RSSocksAuthError, "Authentication error to socks server." + IdResourceStringsCore_RSSocksServerGeneralError, "General SOCKS server failure." + IdResourceStringsCore_RSSocksServerPermissionError, "Connection not allowed by ruleset." + IdResourceStringsCore_RSSocksServerNetUnreachableError, "Network unreachable." + IdResourceStringsCore_RSSocksServerHostUnreachableError, "Host unreachable." + IdResourceStringsCore_RSSocksServerConnectionRefusedError, "Connection refused." + IdResourceStringsCore_RSSocksServerTTLExpiredError, "TTL expired." + IdResourceStringsCore_RSSocksServerCommandError, "Command not supported." + IdResourceStringsCore_RSSocksServerAddressError, "Address type not supported." + IdResourceStringsProtocols_RSHTTPPreconditionFailed, "Precondition Failed" + IdResourceStringsProtocols_RSHTTPRequestEntityToLong, "Request Entity To Long" + IdResourceStringsProtocols_RSHTTPRequestURITooLong, "Request-URI Too Long. 256 Chars max" + IdResourceStringsProtocols_RSHTTPUnsupportedMediaType, "Unsupported Media Type" + IdResourceStringsProtocols_RSHTTPInternalServerError, "Internal Server Error" + IdResourceStringsProtocols_RSHTTPNotImplemented, "Not Implemented" + IdResourceStringsProtocols_RSHTTPBadGateway, "Bad Gateway" + IdResourceStringsProtocols_RSHTTPServiceUnavailable, "Service Unavailable" + IdResourceStringsProtocols_RSHTTPGatewayTimeout, "Gateway timeout" + IdResourceStringsProtocols_RSHTTPHTTPVersionNotSupported, "HTTP version not supported" + IdResourceStringsProtocols_RSHTTPUnknownResponseCode, "Unknown Response Code" + IdResourceStringsProtocols_RSHTTPHeaderAlreadyWritten, "Header has already been written." + IdResourceStringsProtocols_RSHTTPErrorParsingCommand, "Error in parsing command." + IdResourceStringsProtocols_RSHTTPUnsupportedAuthorisationScheme, "Unsupported authorization scheme." + IdResourceStringsProtocols_RSHTTPCannotSwitchSessionStateWhenActive, "Cannot change session state when the server is active." + IdResourceStringsProtocols_RSHTTPAuthAlreadyRegistered, "This authentication method is already registered with class name %s." + IdResourceStringsProtocols_RSHTTPMovedPermanently, "Moved Permanently" + IdResourceStringsProtocols_RSHTTPMovedTemporarily, "Moved Temporarily" + IdResourceStringsProtocols_RSHTTPSeeOther, "See Other" + IdResourceStringsProtocols_RSHTTPNotModified, "Not Modified" + IdResourceStringsProtocols_RSHTTPUseProxy, "Use Proxy" + IdResourceStringsProtocols_RSHTTPBadRequest, "Bad Request" + IdResourceStringsProtocols_RSHTTPUnauthorized, "Unauthorized" + IdResourceStringsProtocols_RSHTTPForbidden, "Forbidden" + IdResourceStringsProtocols_RSHTTPNotFound, "Not Found" + IdResourceStringsProtocols_RSHTTPMethodNotAllowed, "Method not allowed" + IdResourceStringsProtocols_RSHTTPNotAcceptable, "Not Acceptable" + IdResourceStringsProtocols_RSHTTPProxyAuthenticationRequired, "Proxy Authentication Required" + IdResourceStringsProtocols_RSHTTPRequestTimeout, "Request Timeout" + IdResourceStringsProtocols_RSHTTPConflict, "Conflict" + IdResourceStringsProtocols_RSHTTPGone, "Gone" + IdResourceStringsProtocols_RSHTTPLengthRequired, "Length Required" + IdResourceStrings_RSInvalidIPv6Address, "%s is not a valid IPv6 address" + IdResourceStrings_RSIPVersionUnsupported, "The requested IPVersion / Address family is not supported." + IdResourceStrings_RSNotAllBytesSent, "Not all bytes sent." + IdResourceStrings_RSPackageSizeTooBig, "Package Size Too Big." + IdResourceStrings_RSSetSizeExceeded, "Set Size Exceeded." + IdResourceStringsProtocols_RSMIMEExtensionEmpty, "Extension is empty" + IdResourceStringsProtocols_RSMIMEMIMETypeEmpty, "Mimetype is empty" + IdResourceStringsProtocols_RSMIMEMIMEExtAlreadyExists, "Extension already exits" + IdResourceStringsProtocols_RSHTTPContinue, "Continue" + IdResourceStringsProtocols_RSHTTPOK, "OK" + IdResourceStringsProtocols_RSHTTPCreated, "Created" + IdResourceStringsProtocols_RSHTTPAccepted, "Accepted" + IdResourceStringsProtocols_RSHTTPNonAuthoritativeInformation, "Non-authoritative Information" + IdResourceStringsProtocols_RSHTTPNoContent, "No Content" + IdResourceStringsProtocols_RSHTTPResetContent, "Reset Content" + IdResourceStringsProtocols_RSHTTPPartialContent, "Partial Content" + IdResourceStrings_RSStackELOOP, "Too many levels of symbolic links." + IdResourceStrings_RSStackENAMETOOLONG, "File name too long." + IdResourceStrings_RSStackEHOSTDOWN, "Host is down." + IdResourceStrings_RSStackEHOSTUNREACH, "No route to host." + IdResourceStrings_RSStackENOTEMPTY, "Directory not empty" + IdResourceStrings_RSStackHOST_NOT_FOUND, "Host not found." + IdResourceStrings_RSStackClassUndefined, "Stack Class is undefined." + IdResourceStrings_RSStackAlreadyCreated, "Stack already created." + IdResourceStrings_RSAntiFreezeOnlyOne, "Only one TIdAntiFreeze can exist per application." + IdResourceStrings_RSCannotSetIPVersionWhenConnected, "Cannot change IPVersion when connected" + IdResourceStrings_RSCannotBindRange, "Can not bind in port range (%d - %d)" + IdResourceStrings_RSConnectionClosedGracefully, "Connection Closed Gracefully." + IdResourceStrings_RSCouldNotBindSocket, "Could not bind socket. Address and port are already in use." + IdResourceStrings_RSInvalidPortRange, "Invalid Port Range (%d - %d)" + IdResourceStrings_RSInvalidServiceName, "%s is not a valid service." + IdResourceStrings_RSIPv6Unavailable, "IPv6 unavailable" + IdResourceStrings_RSStackEPFNOSUPPORT, "Protocol family not supported." + IdResourceStrings_RSStackEAFNOSUPPORT, "Address family not supported by protocol family." + IdResourceStrings_RSStackEADDRINUSE, "Address already in use." + IdResourceStrings_RSStackEADDRNOTAVAIL, "Cannot assign requested address." + IdResourceStrings_RSStackENETDOWN, "Network is down." + IdResourceStrings_RSStackENETUNREACH, "Network is unreachable." + IdResourceStrings_RSStackENETRESET, "Net dropped connection or reset." + IdResourceStrings_RSStackECONNABORTED, "Software caused connection abort." + IdResourceStrings_RSStackECONNRESET, "Connection reset by peer." + IdResourceStrings_RSStackENOBUFS, "No buffer space available." + IdResourceStrings_RSStackEISCONN, "Socket is already connected." + IdResourceStrings_RSStackENOTCONN, "Socket is not connected." + IdResourceStrings_RSStackESHUTDOWN, "Cannot send or receive after socket is closed." + IdResourceStrings_RSStackETOOMANYREFS, "Too many references, cannot splice." + IdResourceStrings_RSStackETIMEDOUT, "Connection timed out." + IdResourceStrings_RSStackECONNREFUSED, "Connection refused." + IdResourceStrings_RSStackEBADF, "Bad file number." + IdResourceStrings_RSStackEACCES, "Access denied." + IdResourceStrings_RSStackEFAULT, "Buffer fault." + IdResourceStrings_RSStackEINVAL, "Invalid argument." + IdResourceStrings_RSStackEMFILE, "Too many open files." + IdResourceStrings_RSStackEWOULDBLOCK, "Operation would block." + IdResourceStrings_RSStackEINPROGRESS, "Operation now in progress." + IdResourceStrings_RSStackEALREADY, "Operation already in progress." + IdResourceStrings_RSStackENOTSOCK, "Socket operation on non-socket." + IdResourceStrings_RSStackEDESTADDRREQ, "Destination address required." + IdResourceStrings_RSStackEMSGSIZE, "Message too long." + IdResourceStrings_RSStackEPROTOTYPE, "Protocol wrong type for socket." + IdResourceStrings_RSStackENOPROTOOPT, "Bad protocol option." + IdResourceStrings_RSStackEPROTONOSUPPORT, "Protocol not supported." + IdResourceStrings_RSStackESOCKTNOSUPPORT, "Socket type not supported." + IdResourceStrings_RSStackEOPNOTSUPP, "Operation not supported on socket." + DBConsts_SInvalidBcdValue, "%s is not a valid BCD value" + DBConsts_SInvalidFormatType, "Invalid format type for BCD" + DBConsts_SCouldNotParseTimeStamp, "Could not parse SQL TimeStamp string" + DBConsts_SInvalidSqlTimeStamp, "Invalid SQL date/time values" + IdResourceStrings_RSFailedTimeZoneInfo, "Failed attempting to retrieve time zone information." + IdResourceStrings_RSWinsockCallError, "Error on call Winsock2 library function %s" + IdResourceStrings_RSWinsockLoadError, "Error on loading Winsock2 library (%s)" + IdResourceStrings_RSWinsockInitializationError, "Winsock Initialization Error." + IdResourceStrings_RSStatusResolving, "Resolving hostname %s." + IdResourceStrings_RSStatusConnecting, "Connecting to %s." + IdResourceStrings_RSStatusConnected, "Connected." + IdResourceStrings_RSStatusDisconnecting, "Disconnecting." + IdResourceStrings_RSStatusDisconnected, "Disconnected." + IdResourceStrings_RSStatusText, "%s" + IdResourceStrings_RSStackError, "Socket Error # %d\r\n%s" + IdResourceStrings_RSStackEINTR, "Interrupted system call." + DBConsts_SNotEditing, "Dataset not in edit or insert mode" + DBConsts_SDataSetClosed, "Cannot perform this operation on a closed dataset" + DBConsts_SDataSetEmpty, "Cannot perform this operation on an empty dataset" + DBConsts_SDataSetReadOnly, "Cannot modify a read-only dataset" + DBConsts_SNestedDataSetClass, "Nested dataset must inherit from %s" + DBConsts_STextFalse, "False" + DBConsts_STextTrue, "True" + DBConsts_SParameterNotFound, "Parameter '%s' not found" + DBConsts_SInvalidVersion, "Unable to load bind parameters" + DBConsts_SBadFieldType, "Field '%s' is of an unsupported type" + DBConsts_SProviderSQLNotSupported, "SQL not supported: %s" + DBConsts_SProviderExecuteNotSupported, "Execute not supported: %s" + DBConsts_SDataSetUnidirectional, "Operation not allowed on a unidirectional dataset" + DBConsts_SUnassignedVar, "Unassigned variant value" + DBConsts_SRecordNotFound, "Record not found" + DBConsts_SBcdOverflow, "BCD overflow" + DBConsts_SInvalidBoolValue, "'%s' is not a valid boolean value for field '%s'" + DBConsts_SInvalidFloatValue, "'%s' is not a valid floating point value for field '%s'" + DBConsts_SFieldTypeMismatch, "Type mismatch for field '%s', expecting: %s actual: %s" + DBConsts_SFieldSizeMismatch, "Size mismatch for field '%s', expecting: %d actual: %d" + DBConsts_SInvalidVarByteArray, "Invalid variant type or size for field '%s'" + DBConsts_SFieldOutOfRange, "Value of field '%s' is out of range" + DBConsts_SFieldRequired, "Field '%s' must have a value" + DBConsts_SDataSetMissing, "Field '%s' has no dataset" + DBConsts_SInvalidCalcType, "Field '%s' cannot be a calculated or lookup field" + DBConsts_SFieldReadOnly, "Field '%s' cannot be modified" + DBConsts_SNoIndexForFields, "No index for fields '%s'" + DBConsts_SIndexNotFound, "Index '%s' not found" + DBConsts_SCircularDataLink, "Circular datalinks are not allowed" + DBConsts_SLookupInfoError, "Lookup information for field '%s' is incomplete" + DBConsts_SDataSourceChange, "DataSource cannot be changed" + DBConsts_SDataSetOpen, "Cannot perform this operation on an open dataset" + uRORes_err_MessageNotAssigned, "Message is NIL" + ComConst_SOleError, "OLE error %.8x" + ComConst_SNoMethod, "Method '%s' not supported by automation object" + ComConst_SVarNotObject, "Variant does not reference an automation object" + ComConst_STooManyParams, "Dispatch methods do not support more than 64 parameters" + DBConsts_SInvalidFieldSize, "Invalid field size" + DBConsts_SInvalidFieldKind, "Invalid FieldKind" + DBConsts_SUnknownFieldType, "Field '%s' is of an unknown type" + DBConsts_SFieldNameMissing, "Field name missing" + DBConsts_SDuplicateFieldName, "Duplicate field name '%s'" + DBConsts_SFieldNotFound, "Field '%s' not found" + DBConsts_SFieldAccessError, "Cannot access field '%s' as type %s" + DBConsts_SFieldValueError, "Invalid value for field '%s'" + DBConsts_SFieldRangeError, "%g is not a valid value for field '%s'. The allowed range is %g to %g" + DBConsts_SBcdFieldRangeError, "%s is not a valid value for field '%s'. The allowed range is %s to %s" + DBConsts_SInvalidIntegerValue, "'%s' is not a valid integer value for field '%s'" + uRORes_err_InvalidHeader, "Invalid binary header. Either incompatible or not a binary message." + uRORes_err_InvalidHeaderEncrypted, "Invalid binary header. It seems that encryption is active on the other side of the communication, but not locally?" + uRORes_err_UnknownClassInStream, "Unknown class \"%s\" found in stream." + uRORes_err_UnexpectedClassInStream, "Unexpected class found in stream; class \"%s\" does not descend from \"%s\"." + uRORes_err_SessionNotFound, "Session %s could not be found" + uRORes_err_ChannelDoesntSupportIROMetadataReader, "Channel does not support IROMetadataReader" + uRORes_err_TooManySessions, "Too many sessions. Try again in %d minute(s)" + uRORes_err_DOMElementIsNIL, "DOMElement is NIL" + uRORes_err_CannotLoadXMLDocument, "Cannot load XML document.\rReason: %s\rLine: %d\rPosition: %d" + uRORes_err_ErrorCreatingMsXmlDoc, "Error creating MSXML Document class\r\r%s: %s" + uRORes_err_NoXMLParsersAvailable, "MSXML is not installed" + uRORes_err_IDispatchMarshalingNotSupported, "Marshaling of IDispatch (%d) type variants is not supported." + uRORes_err_UnsupportedVariantType, "Unsupported variant type \"%d\"" + uRORes_err_VariantIsNotArray, "Variant must be Array, but is %d" + uRORes_err_InvalidVarArrayDimCount, "Variant Array DimCount must be 1 but is %d" + uRORes_err_CannotFindParameter, "Cannot find parameter %s" + uRORes_err_UnspecifiedInterface, "The message does not have an interface name" + uRORes_err_UnspecifiedMessage, "The message does not have a name" + uRORes_err_UnknownMethod, "Unknown method %s for interface %s" + uRORes_err_ClassFactoryDidNotReturnInstance, "Class factory did not return an instance of \"%s\"" + uRORes_err_TypeNotSupported, "Type \"%s\" not supported" + uRORes_err_ClassFactoryNotFound, "Class factory for interface %s not found" + uRORes_err_IROMessageNotSupported, "Class \"%s\" does not support IROMessage" + uRORes_err_ClassAlreadyRegistered, "Class \"%s\" is already registered" + uRORes_err_UnknownClass, "Unknown class \"%s\"" + uRORes_err_UnknownProxyInterface, "Unknown proxy interface \"%s\"" + uRORes_err_DispatcherAlreadyAssigned, "Dispatcher for %s already assigned" + uRORes_err_CannotFindMessageDispatcher, "Cannot find message dispatcher. Maybe there is no message component configured for the requested path?" + uRORes_err_ServerOnlySupportsOneDispatcher, "%s servers only support one dispatcher" + uRORes_err_UnhandledException, "Unhandled exception" + uRORes_err_ChannelBusy, "Channel is busy. Try again later." + uRORes_err_ArrayIndexOutOfBounds, "Array index out of bounds (%d)." + uRORes_str_InvalidClassTypeInStream, "Stream read error: Invalid class type encountered: \"%s\"" + uRORes_err_UnexpectedEndOfStream, "Unexpected end of stream." + uRORes_err_RodlDuplicateName, "Duplicate name." + uRORes_err_RodlNoDataTypeSpecified, "No data type specified." + uRORes_err_RodlNoEnumValues, "Enum does not contain any values." + uRORes_err_RodlNoStructElementsDefined, "Struct does not contain any elements." + uRORes_err_RodlNoOperationsDefined, "Service interface does not contain any elements." + uRORes_err_RodlUsedFileDoesNotExist, "The referenced RODL file \"%s\" could not be found." + uRORes_err_RodlInvalidDataType, "Invalid or undefined data type \"%s\"." + uRORes_err_RodlStructCannotBeNested, "Structs cannot recursively contain themselves." + uRORes_err_RodlInvalidAncestorType, "Invalid or undefined ancestor type \"%s\"." + uRORes_str_ExceptionOnServer, "An exception of type %s was raised on the server: %s" + uRORes_str_ExceptionReraisedFromServer, "An exception was raised on the server: %s" + uRORes_err_AssignError, "Cannot assign a \"%s\" to a \"%s\"." + uRORes_err_InvalidRequestStream, "Invalid request stream (%d bytes)" + uRORes_err_NILMessage, "Message is NIL" + uRODECConst_sInvalidFormatString, "Input cannot be converted to %s Format." + uRODECConst_sFMT_COPY, "copy Input to Output" + uRODECConst_sFMT_HEX, "Hexadecimal" + uRODECConst_sFMT_HEXL, "Hexadecimal lowercase" + uRODECConst_sFMT_MIME64, "MIME Base 64" + uRODECConst_sFMT_UU, "UU Coding" + uRODECConst_sFMT_XX, "XX Coding" + uRODECConst_sInvalidKeySize, "Length from Encryptionkey is invalid.\r\nKeysize for %s must be within %d-%d bytes" + uRODECConst_sNotInitialized, "%s is not initialized, call Init() or InitKey() first." + uRORes_err_InvalidIndex, "Invalid index %d" + uRORes_err_InvalidType, "Invalid type \"%s. Expected \"%s\"\"" + uRORes_err_InvalidLibrary, "Invalid library" + uRORes_err_InvalidStream, "Invalid stream" + uRORes_err_InvalidTargetEntity, "Invalid TargetEntity \"%s\"" + uRORes_err_InvalidParamFlag, "Invalid Parameter Flag \"%s\"" + uRORes_err_InvalidStringLength, "Stream read error: Invalid string length \"%d\"" + Consts_SDockZoneHasNoCtl, " - Dock zone has no control" + Consts_SDockZoneVersionConflict, "Error loading dock zone from the stream. Expecting version %d, but found %d." + Consts_SMultiSelectRequired, "Multiselect mode must be on for this feature" + Consts_SSeparator, "Separator" + Consts_SErrorSettingCount, "Error setting %s.Count" + Consts_SListBoxMustBeVirtual, "Listbox (%s) style must be virtual in order to set Count" + Consts_SANSIEncoding, "ANSI" + Consts_SASCIIEncoding, "ASCII" + Consts_SUnicodeEncoding, "Unicode" + Consts_SBigEndianEncoding, "Big Endian Unicode" + Consts_SUTF8Encoding, "UTF-8" + Consts_SUTF7Encoding, "UTF-7" + Consts_SPageControlNotSet, "PageControl must first be assigned" + uRODECConst_sProtectionCircular, "Circular Protection detected, Protection Object is invalid." + uRODECConst_sStringFormatExists, "String Format \"%d\" does not exist." + uRODECConst_sInvalidStringFormat, "Input is not a valid %s Format." + Consts_SOutOfRange, "Value must be between %d and %d" + Consts_sAllFilter, "All" + Consts_SInsertLineError, "Unable to insert a line" + Consts_SInvalidClipFmt, "Invalid clipboard format" + Consts_SIconToClipboard, "Clipboard does not support Icons" + Consts_SCannotOpenClipboard, "Cannot open clipboard" + Consts_SInvalidMemoSize, "Text exceeds memo capacity" + Consts_SInvalidPrinterOp, "Operation not supported on selected printer" + Consts_SNoDefaultPrinter, "There is no default printer currently selected" + Consts_SDuplicateMenus, "Menu '%s' is already being used by another form" + Consts_SPictureLabel, "Picture:" + Consts_SPictureDesc, " (%dx%d)" + Consts_SPreviewLabel, "Preview" + Consts_SDockedCtlNeedsName, "Docked control must have a name" + Consts_SDockTreeRemoveError, "Error removing control from dock tree" + Consts_SDockZoneNotFound, " - Dock zone not found" + Consts_SmkcEnter, "Enter" + Consts_SmkcSpace, "Space" + Consts_SmkcPgUp, "PgUp" + Consts_SmkcPgDn, "PgDn" + Consts_SmkcEnd, "End" + Consts_SmkcHome, "Home" + Consts_SmkcLeft, "Left" + Consts_SmkcUp, "Up" + Consts_SmkcRight, "Right" + Consts_SmkcDown, "Down" + Consts_SmkcIns, "Ins" + Consts_SmkcDel, "Del" + Consts_SmkcShift, "Shift+" + Consts_SmkcCtrl, "Ctrl+" + Consts_SmkcAlt, "Alt+" + Consts_srNone, "(None)" + Consts_SMsgDlgInformation, "Information" + Consts_SMsgDlgConfirm, "Confirm" + Consts_SMsgDlgYes, "&Yes" + Consts_SMsgDlgNo, "&No" + Consts_SMsgDlgOK, "OK" + Consts_SMsgDlgCancel, "Cancel" + Consts_SMsgDlgHelp, "&Help" + Consts_SMsgDlgAbort, "&Abort" + Consts_SMsgDlgRetry, "&Retry" + Consts_SMsgDlgIgnore, "&Ignore" + Consts_SMsgDlgAll, "&All" + Consts_SMsgDlgNoToAll, "N&o to All" + Consts_SMsgDlgYesToAll, "Yes to &All" + Consts_SmkcBkSp, "BkSp" + Consts_SmkcTab, "Tab" + Consts_SmkcEsc, "Esc" + Consts_SCancelButton, "Cancel" + Consts_SYesButton, "&Yes" + Consts_SNoButton, "&No" + Consts_SHelpButton, "&Help" + Consts_SCloseButton, "&Close" + Consts_SIgnoreButton, "&Ignore" + Consts_SRetryButton, "&Retry" + Consts_SAbortButton, "Abort" + Consts_SAllButton, "&All" + Consts_SCannotDragForm, "Cannot drag a form" + Consts_SVMetafiles, "Metafiles" + Consts_SVEnhMetafiles, "Enhanced Metafiles" + Consts_SVIcons, "Icons" + Consts_SVBitmaps, "Bitmaps" + Consts_SMsgDlgWarning, "Warning" + Consts_SMsgDlgError, "Error" + Consts_SVisibleChanged, "Cannot change Visible in OnShow or OnHide" + Consts_SCannotShowModal, "Cannot make a visible window modal" + Consts_SScrollBarRange, "Scrollbar property out of range" + Consts_SPropertyOutOfRange, "%s property out of range" + Consts_SMenuIndexError, "Menu index out of range" + Consts_SMenuReinserted, "Menu inserted twice" + Consts_SMenuNotFound, "Sub-menu is not in menu" + Consts_SNoTimers, "Not enough timers available" + Consts_SNotPrinting, "Printer is not currently printing" + Consts_SPrinting, "Printing in progress" + Consts_SInvalidPrinter, "Printer selected is not valid" + Consts_SDeviceOnPort, "%s on %s" + Consts_SGroupIndexTooLow, "GroupIndex cannot be less than a previous menu item's GroupIndex" + Consts_SNoMDIForm, "Cannot create form. No MDI forms are currently active" + Consts_SControlParentSetToSelf, "A control cannot have itself as its parent" + Consts_SOKButton, "OK" + Consts_SUnknownExtension, "Unknown picture file extension (.%s)" + Consts_SUnknownClipboardFormat, "Unsupported clipboard format" + Consts_SOutOfResources, "Out of system resources" + Consts_SNoCanvasHandle, "Canvas does not allow drawing" + Consts_SInvalidImageSize, "Invalid image size" + Consts_SInvalidImageList, "Invalid ImageList" + Consts_SReplaceImage, "Unable to Replace Image" + Consts_SImageIndexError, "Invalid ImageList Index" + Consts_SImageReadFail, "Failed to read ImageList data from stream" + Consts_SImageWriteFail, "Failed to write ImageList data to stream" + Consts_SWindowDCError, "Error creating window device context" + Consts_SWindowClass, "Error creating window class" + Consts_SCannotFocus, "Cannot focus a disabled or invisible window" + Consts_SParentRequired, "Control '%s' has no parent window" + Consts_SParentGivenNotAParent, "Parent given is not a parent of '%s'" + Consts_SMDIChildNotVisible, "Cannot hide an MDI Child Form" + RTLConsts_SThreadCreateError, "Thread creation error: %s" + RTLConsts_SThreadError, "Thread Error: %s (%d)" + HelpIntfs_hNoTableOfContents, "Unable to find a Table of Contents" + HelpIntfs_hNothingFound, "No help found for %s" + HelpIntfs_hNoContext, "No context-sensitive help installed" + HelpIntfs_hNoContextFound, "No help found for context" + HelpIntfs_hNoTopics, "No topic-based help system installed" + Consts_SInvalidTabPosition, "Tab position incompatible with current tab style" + Consts_SInvalidTabStyle, "Tab style incompatible with current tab position" + Consts_SInvalidBitmap, "Bitmap image is not valid" + Consts_SInvalidIcon, "Icon image is not valid" + Consts_SInvalidMetafile, "Metafile is not valid" + Consts_SInvalidPixelFormat, "Invalid pixel format" + Consts_SInvalidImage, "Invalid image" + Consts_SScanLine, "Scan line index out of range" + Consts_SChangeIconSize, "Cannot change the size of an icon" + RTLConsts_SListCapacityError, "List capacity out of bounds (%d)" + RTLConsts_SListCountError, "List count out of bounds (%d)" + RTLConsts_SListIndexError, "List index out of bounds (%d)" + RTLConsts_SMemoryStreamError, "Out of memory while expanding memory stream" + RTLConsts_SPropertyException, "Error reading %s%s%s: %s" + RTLConsts_SReadError, "Stream read error" + RTLConsts_SReadOnlyProperty, "Property is read-only" + RTLConsts_SRegCreateFailed, "Failed to create key %s" + RTLConsts_SRegGetDataFailed, "Failed to get data for '%s'" + RTLConsts_SRegSetDataFailed, "Failed to set data for '%s'" + RTLConsts_SResNotFound, "Resource %s not found" + RTLConsts_SSeekNotImplemented, "%s.Seek not implemented" + RTLConsts_SSortedListError, "Operation not allowed on sorted list" + RTLConsts_SUnknownGroup, "%s not in a class registration group" + RTLConsts_SUnknownProperty, "Property %s does not exist" + RTLConsts_SWriteError, "Stream write error" + RTLConsts_SClassNotFound, "Class %s not found" + RTLConsts_SDuplicateClass, "A class named %s already exists" + RTLConsts_SDuplicateItem, "List does not allow duplicates ($0%x)" + RTLConsts_SDuplicateName, "A component named %s already exists" + RTLConsts_SDuplicateString, "String list does not allow duplicates" + RTLConsts_SFCreateErrorEx, "Cannot create file \"%s\". %s" + RTLConsts_SFOpenErrorEx, "Cannot open file \"%s\". %s" + RTLConsts_SIniFileWriteError, "Unable to write to %s" + RTLConsts_SInvalidImage, "Invalid stream format" + RTLConsts_SInvalidName, "''%s'' is not a valid component name" + RTLConsts_SInvalidProperty, "Invalid property value" + RTLConsts_SInvalidPropertyElement, "Invalid property element: %s" + RTLConsts_SInvalidPropertyPath, "Invalid property path" + RTLConsts_SInvalidPropertyType, "Invalid property type: %s" + RTLConsts_SInvalidPropertyValue, "Invalid property value" + RTLConsts_SInvalidRegType, "Invalid data type for '%s'" + SysConst_SShortDayNameWed, "Wed" + SysConst_SShortDayNameThu, "Thu" + SysConst_SShortDayNameFri, "Fri" + SysConst_SShortDayNameSat, "Sat" + SysConst_SLongDayNameSun, "Sunday" + SysConst_SLongDayNameMon, "Monday" + SysConst_SLongDayNameTue, "Tuesday" + SysConst_SLongDayNameWed, "Wednesday" + SysConst_SLongDayNameThu, "Thursday" + SysConst_SLongDayNameFri, "Friday" + SysConst_SLongDayNameSat, "Saturday" + RTLConsts_SAncestorNotFound, "Ancestor for '%s' not found" + RTLConsts_SAssignError, "Cannot assign a %s to a %s" + RTLConsts_SBitsIndexError, "Bits index out of range" + RTLConsts_SCantWriteResourceStreamError, "Can't write to a read-only resource stream" + RTLConsts_SCheckSynchronizeError, "CheckSynchronize called from thread $%x, which is NOT the main thread" + SysConst_SShortMonthNameDec, "Dec" + SysConst_SLongMonthNameJan, "January" + SysConst_SLongMonthNameFeb, "February" + SysConst_SLongMonthNameMar, "March" + SysConst_SLongMonthNameApr, "April" + SysConst_SLongMonthNameMay, "May" + SysConst_SLongMonthNameJun, "June" + SysConst_SLongMonthNameJul, "July" + SysConst_SLongMonthNameAug, "August" + SysConst_SLongMonthNameSep, "September" + SysConst_SLongMonthNameOct, "October" + SysConst_SLongMonthNameNov, "November" + SysConst_SLongMonthNameDec, "December" + SysConst_SShortDayNameSun, "Sun" + SysConst_SShortDayNameMon, "Mon" + SysConst_SShortDayNameTue, "Tue" + SysConst_SAbstractError, "Abstract Error" + SysConst_SModuleAccessViolation, "Access violation at address %p in module '%s'. %s of address %p" + SysConst_SOSError, "System Error. Code: %d.\r\n%s" + SysConst_SUnkOSError, "A call to an OS function failed" + SysConst_SNL, "Application is not licensed to use this feature" + SysConst_SShortMonthNameJan, "Jan" + SysConst_SShortMonthNameFeb, "Feb" + SysConst_SShortMonthNameMar, "Mar" + SysConst_SShortMonthNameApr, "Apr" + SysConst_SShortMonthNameMay, "May" + SysConst_SShortMonthNameJun, "Jun" + SysConst_SShortMonthNameJul, "Jul" + SysConst_SShortMonthNameAug, "Aug" + SysConst_SShortMonthNameSep, "Sep" + SysConst_SShortMonthNameOct, "Oct" + SysConst_SShortMonthNameNov, "Nov" + SysConst_SVarTypeOutOfRangeWithPrefix, "Custom variant type (%s%.4x) is out of range" + SysConst_SVarTypeAlreadyUsedWithPrefix, "Custom variant type (%s%.4x) already used by %s" + SysConst_SVarTypeNotUsableWithPrefix, "Custom variant type (%s%.4x) is not usable" + SysConst_SVarTypeTooManyCustom, "Too many custom variant types have been registered" + SysConst_SVarTypeCouldNotConvert, "Could not convert variant of type (%s) into type (%s)" + SysConst_SVarTypeConvertOverflow, "Overflow while converting variant of type (%s) into type (%s)" + SysConst_SVarOverflow, "Variant overflow" + SysConst_SVarInvalid, "Invalid argument" + SysConst_SVarBadType, "Invalid variant type" + SysConst_SVarNotImplemented, "Operation not supported" + SysConst_SVarUnexpected, "Unexpected variant error" + SysConst_SExternalException, "External exception %x" + SysConst_SAssertionFailed, "Assertion failed" + SysConst_SIntfCastError, "Interface not supported" + SysConst_SSafecallException, "Exception in safecall method" + SysConst_SAssertError, "%s (%s, line %d)" + SysConst_SOperationAborted, "Operation aborted" + SysConst_SException, "Exception %s in module %s at %p.\r\n%s%s\r\n" + SysConst_SExceptTitle, "Application Error" + SysConst_SInvalidFormat, "Format '%s' invalid or incompatible with argument" + SysConst_SArgumentMissing, "No argument for format '%s'" + SysConst_SDispatchError, "Variant method calls not supported" + SysConst_SReadAccess, "Read" + SysConst_SWriteAccess, "Write" + SysConst_SFormatTooLong, "Format string too long" + SysConst_SVarArrayCreate, "Error creating variant or safe array" + SysConst_SVarArrayBounds, "Variant or safe array index out of bounds" + SysConst_SVarArrayLocked, "Variant or safe array is locked" + SysConst_SInvalidVarCast, "Invalid variant type conversion" + SysConst_SInvalidVarOp, "Invalid variant operation" + SysConst_SInvalidVarNullOp, "Invalid NULL variant operation" + SysConst_SInvalidVarOpWithHResultWithPrefix, "Invalid variant operation (%s%.8x)\n%s" + SysConst_SDiskFull, "Disk full" + SysConst_SInvalidInput, "Invalid numeric input" + SysConst_SDivByZero, "Division by zero" + SysConst_SRangeError, "Range check error" + SysConst_SIntOverflow, "Integer overflow" + SysConst_SInvalidOp, "Invalid floating point operation" + SysConst_SZeroDivide, "Floating point division by zero" + SysConst_SOverflow, "Floating point overflow" + SysConst_SUnderflow, "Floating point underflow" + SysConst_SInvalidPointer, "Invalid pointer operation" + SysConst_SInvalidCast, "Invalid class typecast" + SysConst_SAccessViolationArg3, "Access violation at address %p. %s of address %p" + SysConst_SAccessViolationNoArg, "Access violation" + SysConst_SStackOverflow, "Stack overflow" + SysConst_SControlC, "Control-C hit" + SysConst_SPrivilege, "Privileged instruction" + SysConst_SInvalidInteger, "'%s' is not a valid integer value" + SysConst_SInvalidFloat, "'%s' is not a valid floating point value" + SysConst_SInvalidDate, "'%s' is not a valid date" + SysConst_SInvalidTime, "'%s' is not a valid time" + SysConst_SInvalidDateTime, "'%s' is not a valid date and time" + SysConst_SInvalidTimeStamp, "'%d.%d' is not a valid timestamp" + SysConst_SInvalidGUID, "'%s' is not a valid GUID value" + SysConst_STimeEncodeError, "Invalid argument to time encode" + SysConst_SDateEncodeError, "Invalid argument to date encode" + SysConst_SOutOfMemory, "Out of memory" + SysConst_SInOutError, "I/O error %d" + SysConst_SFileNotFound, "File not found" + SysConst_SInvalidFilename, "Invalid filename" + SysConst_STooManyOpenFiles, "Too many open files" + SysConst_SAccessDenied, "File access denied" + SysConst_SEndOfFile, "Read beyond end of file" +END + diff --git a/Source/Servidor/FactuGES_Server.identcache b/Source/Servidor/FactuGES_Server.identcache new file mode 100644 index 00000000..ba3858a7 Binary files /dev/null and b/Source/Servidor/FactuGES_Server.identcache differ diff --git a/Source/Servidor/FactuGES_Server.rc b/Source/Servidor/FactuGES_Server.rc new file mode 100644 index 00000000..50e84723 --- /dev/null +++ b/Source/Servidor/FactuGES_Server.rc @@ -0,0 +1,24 @@ +MAINICON ICON "C:\Codigo (Tecsitel)\Resources\Iconos\Servidor.ico" +1 VERSIONINFO +FILEVERSION 3,0,0,0 +PRODUCTVERSION 3,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "3.0.0.0\0" + VALUE "ProductVersion", "3.0.0.0\0" + VALUE "CompileDate", "mircoles, 12 de septiembre de 2007 16:09\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/Source/Servidor/FactuGES_Server.rsb b/Source/Servidor/FactuGES_Server.rsb new file mode 100644 index 00000000..36f26e23 Binary files /dev/null and b/Source/Servidor/FactuGES_Server.rsb differ diff --git a/Source/Servidor/Utiles/uBusinessUtils.pas b/Source/Servidor/Utiles/uBusinessUtils.pas new file mode 100644 index 00000000..76ac5daa --- /dev/null +++ b/Source/Servidor/Utiles/uBusinessUtils.pas @@ -0,0 +1,27 @@ +unit uBusinessUtils; + +interface + +uses + uDAInterfaces, uDADataTable, uDABusinessProcessor; + +function GetBusinessProcessorConnection (ABusinessProcessor: TDABusinessProcessor): IDAConnection; + +implementation + +uses + DARemoteService_Impl; + +{ Se utiliza en las reglas de negocio del servidor y + devuelve la conexin utilizada por el BusinessProcessor para + procesar los deltas. } +function GetBusinessProcessorConnection (ABusinessProcessor: TDABusinessProcessor): IDAConnection; +begin + if (ABusinessProcessor.Owner is TDARemoteService) then + Result := (ABusinessProcessor.Owner as TDARemoteService).Connection + else + Result := NIL; +end; + + +end. diff --git a/Source/Servidor/Utiles/uDatabaseUtils.pas b/Source/Servidor/Utiles/uDatabaseUtils.pas new file mode 100644 index 00000000..bf1af02c --- /dev/null +++ b/Source/Servidor/Utiles/uDatabaseUtils.pas @@ -0,0 +1,39 @@ +unit uDatabaseUtils; + +interface + +function GetNextAutoInc(const GeneratorName: String): Integer; + +function HayClausulaWhere (aSQL: String): Boolean; + +implementation + +uses + SysUtils, + uDADataTable, uDAClasses, uDAInterfaces, + uDataModuleServer; + +function GetNextAutoInc(const GeneratorName: String): Integer; +var + vConn : IDAConnection; + ds: IDADataset; +begin + vConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + vConn.BeginTransaction; + try + ds := vConn.NewDataset(Format('SELECT GEN_ID(%s,1) FROM RDB$Database', [GeneratorName])); + ds.Open; + Result := ds.Fields[0].AsInteger; + finally + vConn.CommitTransaction; + ds := NIL; + end; +end; + +function HayClausulaWhere (aSQL: String): Boolean; +begin + Result := (Pos('WHERE', UpperCase(aSQL)) > 0); +end; + + +end. diff --git a/Source/Servidor/Utiles/uReferenciasUtils.pas b/Source/Servidor/Utiles/uReferenciasUtils.pas new file mode 100644 index 00000000..9aeadd20 --- /dev/null +++ b/Source/Servidor/Utiles/uReferenciasUtils.pas @@ -0,0 +1,66 @@ +unit uReferenciasUtils; + +interface + +uses + uDAInterfaces, uDADataTable, uDABusinessProcessor; + + function darReferenciaSiguiente(const Referencia: String): String; + +implementation + +uses + SysUtils; + +{ Se utiliza en las reglas de negocio del servidor y + devuelve la conexin utilizada por el BusinessProcessor para + procesar los deltas. } +function darReferenciaSiguiente(const Referencia: String): String; +var + ParteEntera, ParteCaracter: String; + Semaforo: Boolean; + i, LongitudParteEntera: Integer; +begin + //Por defecto la parte caracter ser todo + ParteCaracter := Copy(Referencia, 1, length(Referencia)); + Semaforo:= false; + for i := 0 to length(Referencia) do + begin + if (Referencia[i] in ['0','1','2','3','4','5','6','7','8','9']) then + begin + if not Semaforo then + begin + //Cogemos el resto de la cadena suponiendo que no hay ms caracter + ParteEntera := Copy(Referencia, i, length(Referencia)+1); + Semaforo := true; + end; + end + else + begin + //Volvemos a asignar la parte caracter ya que hemos encontrado otro + //e inicializamos el semforo para volver a coger la parte entera si encontramos + //algn nmero + ParteCaracter := Copy(Referencia, 1, i); + Semaforo := False; + end; + end; + + LongitudParteEntera := Length(ParteEntera); + //Si no tenemos ningn nmero en parte entera asignamos 1 por defecto + try + i := StrToInt(ParteEntera); + except + i := 1; + end; + + //Incrementamos y rellenamos con ceros, en el caso de ser necesario + Inc(i); + ParteEntera := IntToStr(i); + for i:=Length(ParteEntera) to LongitudParteEntera-1 do + ParteEntera := '0' + ParteEntera; + + Result := ParteCaracter + ParteEntera; +end; + + +end. diff --git a/Source/Servidor/Utiles/uRestriccionesUsuarioUtils.pas b/Source/Servidor/Utiles/uRestriccionesUsuarioUtils.pas new file mode 100644 index 00000000..effb8514 --- /dev/null +++ b/Source/Servidor/Utiles/uRestriccionesUsuarioUtils.pas @@ -0,0 +1,84 @@ +unit uRestriccionesUsuarioUtils; + +interface + +uses + uDAInterfaces, uROSessions; + +{ 'FiltrarAccesoUsuario' sirve para filtrar un dataset a las empresas + que el usuario puede acceder } +procedure FiltrarAccesoUsuario (ASession: TROSession; + AConnection: IDAConnection; ASchema: IDASchema; ADataset: IDADataset; + const FieldNameID_EMPRESA : String = 'ID_EMPRESA'); + +implementation + +uses Classes, SysUtils, uDatabaseUtils, uUsersManager, uDataModuleServer, + Dialogs; + +procedure FiltrarAccesoUsuario (ASession: TROSession; + AConnection: IDAConnection; ASchema: IDASchema; ADataset: IDADataset; + const FieldNameID_EMPRESA : String); +var + AUserInfo : TUserInfo; + WhereAnterior : String; +begin + + { + ATENCIN!!! MOVIDA MENTAL!!!!!!! + + En el caso de la tabla contactos hay definida en el + esquema una clusula where (p.e: where categoria = :categoria). + Si el cliente manda alguna clausula where, DA lo hace + mal y PISA la clausula where del esquema con el where + que le manda el cliente. Pero despus falla todo por + que trata de rellenar el parmetro :CATEGORIA que ya + no existe en el where por que lo ha pisado con el + where del cliente. + + SOLUCIN: si el cliente manda alguna clusula where, + anteponer AND para unirla al where definido en el esquema. + } + + { Antes de filtrar ADataset, hay que saber si el cliente manda + alguna clusula where en ADataset. Si hay where hay que + anteponer AND para unirla al where definido en el esquema. } + + // Mirar si hay WHERE en el ADataSet que viene desde el cliente + if ADataSet.Where.NotEmpty then + begin + // Hay where en el dataset del cliente + + // Hay WHERE en ese ADataSet definido en el esquema? + if HayClausulaWhere(ASchema.GetDatasetText(AConnection, ADataSet.Name)) then + begin + // Hay que juntar los dos WHERE en uno + WhereAnterior := ADataSet.Where.Clause; + ADataSet.Where.Clear; + ADataSet.Where.AddOperator(opAND); + ADataSet.Where.AddText(WhereAnterior); + end; + end; + + { Aqu se asegura que el usuario slo accede a las filas + de las empresas a las que tiene permiso para acceder } + + AUserInfo := TUserInfo.Create(ASession); + try + if not AUserInfo.EsAdministrador then + begin + if ADataSet.Where.NotEmpty then + ADataSet.Where.AddOperator(opAND); + ADataSet.Where.AddCondition(FieldNameID_EMPRESA, + cIn, '(' + AUserInfo.Empresas + ')'); + end; + finally + FreeAndNil(AUserInfo); + end; +end; + + + + + +end. diff --git a/Source/Servidor/Utiles/uSchemaUtilsServer.pas b/Source/Servidor/Utiles/uSchemaUtilsServer.pas new file mode 100644 index 00000000..592471b9 --- /dev/null +++ b/Source/Servidor/Utiles/uSchemaUtilsServer.pas @@ -0,0 +1,168 @@ +unit uSchemaUtilsServer; + +interface + +uses + Classes, SysUtils, + uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + DARemoteService_Impl, + DataAbstract4_Intf, + uDAClasses, uDAInterfaces, uDADataTable; + +type + TReplicarDataSet = class + protected + function GenerateNewSQL : String; + public + Service : TDARemoteService; + Columnas : String; + ColumnasQueSuman : String; + ColumnasQueAVG : String; + SourceDataSetName : String; + function GetNewDataSet : IDADataset; + end; + + +implementation + +{ TReplicaDataSet } + +uses + RegExpr, + Dialogs, JclStrings; + +function TReplicarDataSet.GenerateNewSQL: String; +var + AColumnList : TStringList; + ASQL: TStringList; + ds : IDADataset; + i : integer; + Separador : String; + bHayAgrupacion : Boolean; + APos : Integer; + + function GetTrueFieldName(AField : string; ConAlias : Boolean = True) : String; + var + ARegExpr : TRegExpr; + begin + Result := AField; // Por si el campo no tuviera alias + ARegExpr := TRegExpr.Create; + try + ARegExpr.ModifierI := True; // case insensitive + ARegExpr.InputString := ds.SQL; + ARegExpr.Expression := '[^ ,]+[ ]+AS[ ]+' + AField; // buscar (xxxx.xxxx AS AField) o (xxxx AS AField) + ARegExpr.Expression := ARegExpr.Expression + '|'; // o + ARegExpr.Expression := ARegExpr.Expression + '[^ ,]+\.' + AField; // buscar xxxx.AField + if ARegExpr.Exec then + Result := ARegExpr.Match[0]; + + if not ConAlias then + begin + ARegExpr.InputString := Result; + ARegExpr.Expression := '^[^ ,]+'; // Para quedarme con el campo sin alias + if ARegExpr.Exec then + Result := ARegExpr.Match[0] + end; + finally + FreeAndNil(ARegExpr); + end; + end; + +begin + AColumnList := TStringList.Create; + ASQL := TStringList.Create; + ds := Service.ServiceSchema.NewDataset(Service.Connection, SourceDataSetName); + bHayAgrupacion := False; + try + AColumnList.CommaText := Columnas; + + with ASQL do + begin + Insert(0, 'SELECT DISTINCT'); + Insert(1, ''); // Lista de campos + Insert(2, Copy(ds.SQL, Pos('FROM', ds.SQL), Length(ds.SQL))); + Insert(3, ''); // Group by + Separador := ''; + + for i := 0 to AColumnList.Count - 1 do + begin + if Assigned(ds.FindField(AColumnList[i])) then + begin + if i > 0 then + Separador := ','; + + if Pos('#'+AColumnList[i]+'#', ColumnasQueSuman) > 0 then + begin + Strings[1] := Strings[1] + Separador + 'SUM(' + GetTrueFieldName(AColumnList[i], False) + ') AS ' + AColumnList[i]; + bHayAgrupacion := True; + end + else if Pos('#'+AColumnList[i]+'#', ColumnasQueAVG) > 0 then + begin + Strings[1] := Strings[1] + Separador + 'AVG(' + GetTrueFieldName(AColumnList[i], False) + ') AS ' + AColumnList[i]; + bHayAgrupacion := True; + end + else begin + Strings[1] := Strings[1] + Separador + GetTrueFieldName(AColumnList[i]); + if Length(Strings[3]) = 0 then + Strings[3] := 'GROUP BY ' + else begin + if (Strings[3] <> 'GROUP BY ') then + Strings[3] := Strings[3] + Separador; + end; + Strings[3] := Strings[3] + GetTrueFieldName(AColumnList[i], False); + end; + end; + end; // for + + if not bHayAgrupacion then + Delete(3); + end; + Result := ASQL.Text; + + finally + AColumnList.Free; + ASQL.Free; + end; +end; + + + +function TReplicarDataSet.GetNewDataSet: IDADataset; +var + SQL: String; + ASchemaDataSet: TDADataSet; + AField: TDAField; + AColumnList : TStringList; + i, j : Integer; +begin + SQL := GenerateNewSQL; + Result := Service.Connection.NewDataset(SQL, SourceDataSetName); + + ASchemaDataSet := Service.ServiceSchema.Datasets.DatasetByName(SourceDataSetName); + if Assigned(ASchemaDataSet) then + begin + Result.Params.AssignParamCollection(ASchemaDataSet.Params); + Result.Fields.AssignFieldCollection(ASchemaDataSet.Fields); + AColumnList := TStringList.Create; + try + AColumnList.CommaText := Columnas; + j := 0; + i := Result.Fields.Count; + while i > 0 do + begin + if AColumnList.IndexOf(Result.Fields[j].Name) = -1 then + Result.Fields.Delete(j) + else + j := j + 1; // Un campo que dejo + i := i - 1; // Un campo menos por revisar + end; + finally + AColumnList.Free; + end; + end; + + Result.Close; + Result.Where.Clear; +end; + +end. diff --git a/Source/Servidor/Utiles/uServerAppUtils.pas b/Source/Servidor/Utiles/uServerAppUtils.pas new file mode 100644 index 00000000..f180c8a8 --- /dev/null +++ b/Source/Servidor/Utiles/uServerAppUtils.pas @@ -0,0 +1,29 @@ +unit uServerAppUtils; + +interface + +type + TRdxBalloonIcon = (biNone, biError, biInfo, biWarning); + +procedure ShowBalloonHint(const AMensaje: String; ABalloonIcon: TRdxBalloonIcon); + +implementation + +uses + Dialogs, Forms, uServerMainForm, JvTrayIcon; + +procedure ShowBalloonHint(const AMensaje: String; ABalloonIcon: TRdxBalloonIcon); +begin + with fServerForm.JvTrayIcon do + begin + if AcceptBalloons then + begin + BalloonHint('', ''); + BalloonHint('FactuGES (Servidor)', AMensaje, btInfo); + end; + Hint := 'FactuGES (Servidor)' + #10#13 + AMensaje; + end; +end; + +end. + diff --git a/Source/Servidor/Utiles/uSesionesUtils.pas b/Source/Servidor/Utiles/uSesionesUtils.pas new file mode 100644 index 00000000..28fc8941 --- /dev/null +++ b/Source/Servidor/Utiles/uSesionesUtils.pas @@ -0,0 +1,135 @@ +unit uSesionesUtils; + +interface + +uses + {VCL:} SysUtils, Contnrs, SyncObjs, Variants, + {RemObjects} uROSessions; + +type + + TSesionesHelper = class + private + lObjects: TObjectList; + csObjects: TCriticalSection; + function AddObject( aObj: TObject ) : integer; + procedure DeleteObject( aObj: TObject ); + function GetObject (aIndex : Integer) : TObject; + public + constructor Create; + destructor Destroy; override; + function GetSessionObject(aSession: TROSession; aObjName: string): TObject; + procedure SaveSessionObject(aSession: TROSession; aObjName: string; aObj: TObject); + procedure DeleteSessionObject(aSession: TROSession; aObjName: string); + end; + +var + SesionesHelper: TSesionesHelper; + +implementation + +{ TSesionesHelper } + +function TSesionesHelper.AddObject(aObj: TObject) : integer; +begin + csObjects.Enter; + try + Result := lObjects.Add(aObj); + finally + csObjects.Leave; + end; +end; + +constructor TSesionesHelper.Create; +begin + csObjects := TCriticalSection.Create; + lObjects := TObjectList.Create; +end; + +procedure TSesionesHelper.DeleteObject(aObj: TObject); +var + idx: Integer; +begin + csObjects.Enter; + try + idx := lObjects.IndexOf( aObj ); + if idx > -1 then + begin + lObjects.Remove(aObj); + end; + finally + csObjects.Leave; + end; +end; + +procedure TSesionesHelper.DeleteSessionObject(aSession: TROSession; + aObjName: string); +var + oldObj: TObject; +begin + oldObj := GetSessionObject(aSession, aObjName); + if Assigned(oldObj) then + begin + DeleteObject( oldObj ); + aSession.Values[aObjName] := NULL; + end; +end; + +destructor TSesionesHelper.Destroy; +begin + // Free class members + FreeAndNil( lObjects ); + FreeAndNil( csObjects ); + inherited; +end; + +function TSesionesHelper.GetObject(aIndex: Integer): TObject; +begin + Result := NIL; + csObjects.Enter; + try + if (AIndex > -1) and (AIndex < lObjects.Count) then + Result := lObjects.Items[AIndex]; + finally + csObjects.Leave; + end; +end; + +function TSesionesHelper.GetSessionObject(aSession: TROSession; + aObjName: string): TObject; +var + aValue : Variant; +begin + Result := NIL; + aValue := aSession.Values[aObjName]; + + if VarIsType(aValue, varInteger) then + Result := GetObject(aValue); +end; + +// Saves a delhpi TObject to a session variable +procedure TSesionesHelper.SaveSessionObject(aSession: TROSession; + aObjName: string; aObj: TObject); +var + aIndex : Integer; +begin + // Free the existing object if it has already been assigned + DeleteSessionObject(aSession, aObjName); + + if Assigned( aObj ) then + begin + // Add the object name to the sessionobjectslist + AIndex := AddObject(aObj); + aSession.Values[aObjName] := AIndex; + end + else + aSession.Values[aObjName] := NULL; +end; + +initialization + SesionesHelper := TSesionesHelper.Create; + +finalization + FreeAndNil( SesionesHelper ); + +end. diff --git a/Source/Servidor/Utiles/uTiendaWebUtils.pas b/Source/Servidor/Utiles/uTiendaWebUtils.pas new file mode 100644 index 00000000..e23384d1 --- /dev/null +++ b/Source/Servidor/Utiles/uTiendaWebUtils.pas @@ -0,0 +1,46 @@ +unit uTiendaWebUtils; + +interface + +function HayConexionConTienda(const AODBCName : String; var AErrorMsg: String): Boolean; + +implementation + +uses + SysUtils, SqlExpr, Dialogs, ADODB; + +function HayConexionConTienda(const AODBCName : String; var AErrorMsg: String): Boolean; +var + ADOConnection1: TADOConnection; +begin + AErrorMsg := ''; + ADOConnection1 := TADOConnection.Create(nil); + try + with ADOConnection1 do + begin + Name := 'ADOConnection1'; + Provider := 'MSDASQL.1'; + LoginPrompt := False; + ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;' + + 'Data Source=' + AODBCName; + + try + Connected := True; + Result := True; + Connected := False; + except + on E : Exception do + begin + Result := False; + AErrorMsg := e.Message; + end; + end; + end; + finally + FreeAndNIL(ADOConnection1); + end; +end; + + + +end. diff --git a/Source/Servidor/srvEmpresas_Impl.dfm b/Source/Servidor/srvEmpresas_Impl.dfm new file mode 100644 index 00000000..ccd0c53b --- /dev/null +++ b/Source/Servidor/srvEmpresas_Impl.dfm @@ -0,0 +1,7 @@ +inherited srvEmpresas: TsrvEmpresas + OldCreateOrder = True + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/Source/Servidor/srvEmpresas_Impl.pas b/Source/Servidor/srvEmpresas_Impl.pas new file mode 100644 index 00000000..45fde260 --- /dev/null +++ b/Source/Servidor/srvEmpresas_Impl.pas @@ -0,0 +1,49 @@ +unit srvEmpresas_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf; + +type + { TsrvEmpresas } + TsrvEmpresas = class(TDARemoteService, IsrvEmpresas) + private + protected + { IsrvEmpresas methods } + function GetNextAutoInc(const GeneratorName: String): Integer; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk; + +procedure Create_srvEmpresas(out anInstance : IUnknown); +begin + anInstance := TsrvEmpresas.Create(NIL); +end; + +{ srvEmpresas } +function TsrvEmpresas.GetNextAutoInc(const GeneratorName: String): Integer; +begin +end; + +initialization + TROClassFactory.Create('srvEmpresas', Create_srvEmpresas, TsrvEmpresas_Invoker); + +finalization + +end. diff --git a/Source/Servidor/srvReferencias_Impl.dfm b/Source/Servidor/srvReferencias_Impl.dfm new file mode 100644 index 00000000..e2121433 --- /dev/null +++ b/Source/Servidor/srvReferencias_Impl.dfm @@ -0,0 +1,7 @@ +inherited srvReferencias: TsrvReferencias + OldCreateOrder = True + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/Source/Servidor/srvReferencias_Impl.pas b/Source/Servidor/srvReferencias_Impl.pas new file mode 100644 index 00000000..c0e6bd6b --- /dev/null +++ b/Source/Servidor/srvReferencias_Impl.pas @@ -0,0 +1,44 @@ +unit srvReferencias_Impl; + +{----------------------------------------------------------------------------} +{ This unit was automatically generated by the RemObjects SDK after reading } +{ the RODL file associated with this project . } +{ } +{ This is where you are supposed to code the implementation of your objects. } +{----------------------------------------------------------------------------} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract_Intf, + {Generated:} FactuGES_Intf; + +type + { TsrvReferencias } + TsrvReferencias = class(TDARemoteService, IsrvReferencias) + private + protected + { IsrvReferencias methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} FactuGES_Invk; + +procedure Create_srvReferencias(out anInstance : IUnknown); +begin + anInstance := TsrvReferencias.Create(NIL); +end; + +{ srvReferencias } +initialization + TROClassFactory.Create('srvReferencias', Create_srvReferencias, TsrvReferencias_Invoker); + +finalization + +end. diff --git a/Source/Servidor/uAcercaDe.dfm b/Source/Servidor/uAcercaDe.dfm new file mode 100644 index 00000000..f4ef3961 --- /dev/null +++ b/Source/Servidor/uAcercaDe.dfm @@ -0,0 +1,959 @@ +object fAcercaDe: TfAcercaDe + Left = 531 + Top = 365 + ActiveControl = bAceptar + BorderStyle = bsDialog + Caption = 'Acerca de...' + ClientHeight = 401 + ClientWidth = 427 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvGradient1: TJvGradient + Left = 0 + Top = 88 + Width = 427 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Bevel1: TBevel + Left = 128 + Top = 359 + Width = 290 + Height = 9 + Shape = bsTopLine + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 427 + Height = 88 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Image1: TImage + Left = -19 + Top = 0 + Width = 450 + Height = 88 + Picture.Data = { + 0B544A76474946496D616765826E0000474946383961C201FA00F70000FFFFFF + 626262BD810AD3D3D3BA7C0AB36C08C9C7C4FEBC49A45103C98B28EAEAE9CDA5 + 15AB734B554F4CA9A4A3C8A645A24B020098009BD884A8DB96C99D128C4105F1 + E6D3AE66062A2F299C44036443098D8D8DCFAD8B0D120E96D77CC1890CB57108 + AF6E31A95A0588D367EFD78BB77508B3DFA6B58F6AE7D4ADCC4E3CECDBC8C695 + 10016001FCF6B8D1A931C8BBACC6831EBDA991CF6254BBE2B0D5AE68787878B7 + B7B7B4332BC38C0ED0EEC8B58855999797C5920EC4E4BCCFC3B75A39035EBD55 + AC9690F7C550E7CC79F5F4F4B88639F9F4E8C7954BDADEDAA2DA8DB16A0671C4 + 6590420477CF51E9A83BF4EBE172CD4B944204CDCBC99742028ED570B9791DFE + E79B1D221D66CB3C2EAC27DEC470CE8673C79B12BF840C0058007CD058AC4E45 + CB9B97B9760AA6591AB8780A5E575525A91CAB5F06B06807D5D1CBA75804E7B7 + AE9744029E4703874008DBB84AC63C2EAC631BA16631FCF9F56C6C6C9A561CDE + C39865C15AF9F6F10082008B817B884006B1E79CFAFAFAAD620672541E464B42 + 665C5B86BB7C1EA518AF68085868569E5E256FCD4481D15FDCBB87484906716A + 684AB0406C63618AC57B9142027FC96B968986AD751CAFB5B572663A89A88032 + 7E32E1978F9C4C0C828483C1B3A0FDFDFAAEAAA9FDFDFD964D13FDFBF9B26E1B + AD630EB8A6359EA6A6B36E08954A0B432A00FFFFFD8C4408BE9F7AAA5B0ACB9F + 1A0E940576D248A4500A8D96978D4911C997139ED269934404D6D5D5BCBFBF95 + 9290AB6306DCBC60363935914609954405934402FFFDFCA95503E2E2E2747171 + B2640463775ED7D9DAC69019D6D7D7DDDAD6A3B650676B1912A011CFD2D3A1C7 + 99A08525D2D1D1697575656665DEDEDEFBFDFDB6700CF7F7F78E480DBA7206B0 + 6409CECECE3945029B5010ADDD9ED89A32A7AEAF6BD743EEEDED994708F2F1F0 + CA9625B7730AB46E10C38F0E1F9404328232964907A85709A85810AEAEAE676A + 676E6765A1A0A0D1CFCE69615F1A8B1492511AFDFFFFC1C1C1686868CFA324D9 + D9D95ED9429DBF5A959D9EA251145A6414C78908C48212B56E05089B082C0000 + 0000C201FA000008FF0017081C48B0A0C18308132A1CA80585914D00224A9C48 + B1A2C58B18336ADCC8B1A3C78F20438A1C49B2A4C9932853AACCB8B0A5CB9707 + 5DBC216161CECA9B3873EADCC9B3A7CF9F40512E5C05B32851976FB4E43012B4 + A9D3A750A34A9D4A15C0827A03B10AD47A35ABD7AD07B98AFDDA15AC40172E70 + 39ACCAB6ADDBB770E3E62C4AB72E4217432CC8DDCBB7AFDFBF50ED0A169CB405 + E0C388132B5E6C71B063BAB8549C624CB9B2E5CB4F1F6B6E29B3C51C8898438B + 1E4DDAE3020AA70B525885FA256AD4445B27942D5B60ED370EE74C2ECDBBB76F + CB028F1614DE523651E20B90DB1E483B79F27A78553CFC4DBDBA75B9CE61A78E + 9DFAF5F6EEA75983FFF74E3E7C79EEC7D3D2047DBDBDFBF73F352BDF5CF0CD10 + CFF0F3EBDF6F32F572EFCBFD371E73D98187DE800182B7805A4CF1B743001046 + 08612625CD2321841B00D5CE8501B4A3D286177A88D300DC5006A2842266A4CE + 859C3C75A0763012F8A28CDF3537E372E8D533530BBBE547C433010029649001 + 28409285433E93E14F1B2699E249ED2419C0283729B08392261229E493161141 + 8796364025DE6AAF8D3966776696A9A6796C92D9669ADDBD61474D3DBE270587 + 1286399285172EE9D38911725912A0100A5A123711FAA918A11D6A6483842D42 + 55DEA403526A699B959ED99C0B0D19D1897E576A292A857B8A8AE54FA3986AE8 + 48518ABA6A48F37CFF29A4A289A5EA6446D3D0B1A554AC51E0EBAFC006FB6BAF + 640A6BECB1C812CB9A4C347DE2E397784668A4487C4A48EB4E8CBE1A52B62855 + 9B689621663449A05391C91A9C6EA67BAEB9EC8EE9EB69BEAEFBE69AEFDAD742 + 83EF5D63AAA97AC26AEAB5FC5984A49600F346043041161C94B0C4226BACB2C3 + 46EC70C312AFB6006E2DB0D7DE83D17E4B2D870A072C91B7188AFC1417AB70F1 + AEB92AA386F2CB2B530033CB0BA0CC2EBCAFAD6CA6CD328717DD1C9FBA87F090 + 99E82AEA341F2719B2C903CF6AB25314C412B5AF5C542DB5D4BE5E3DB5CC2A4B + 6D75D554770D6CD52D6B3D3617B1B4FC6B3D6A3DA1717577B2C8B184936444C4 + 24D076380F002407FFE0E70617D610111136E4BDC1DE13D95043A2884FC46D44 + 8B4B2878443664C2B8458F4FF4CB2480F769033414756C6D449D4B1811A218AA + 9338DE1CD66083EA1BCD537888364C4B51E6144153B9E4EA487151E4114E0E80 + 3A9663D8B847C2AAAC76F232373F76F3CA1B1BBDC3D30F2B670B9FD4495DAB43 + 5E6383940AEB2BA5928F2A2DD106490A2EC5F8534604CDE2E0DFAEAA4435A40F + 002DB28A7A2DF744522911110F62DFAE2422408291CE5400B0DC9044348F020A + 890ED7C0C8358C26C07620CD71F3A3C82FD0B72F20D5801615811F910487BFF1 + 2DAD2253F31ADAC8A6C2B4B99085604BDBD7ACF62B19AE506C578B21D76C28B5 + 0768410573E8457BFFF216212210014F441098E8F0F4B7C0F52D4FD020E2854A + 2491CC010F42351880E8B89439225C5174AF90C8124B0680D245E851170221A3 + 44E7BB8AA0718C35B01D00700780B88DB15F900B1C2DB6F811B2F9D18F324B19 + D7FE58B594111290833C64CB14F947664DC73AE2D312A914A8A5E34544011DCC + E4A9CA98240A66726899B49DADB494A2FA69C993EC9323FF8094A22669B29211 + 7160C20ED849FBADEF959DBCA044CA87CB20912A22A31C60442229CB67E05184 + 4002A500E5A8112EAC6085CF4CDB3367E84C68DED09A7E94A635B529CDA945B3 + 9ADCE442385C90082B184188D5E10487F4A4CE0BEDA022731BA3C7CA28CF7A46 + 087673E45029ED19FFA1BA55519F83E3501801A08057B42E22F25C9219A315A6 + 85CAD30013D9233F0380CF2E4A718CA0CBE344F1D84C467AF4A3200D292357C1 + 3614D4C43ACA0C52467FB12F5D02E047A6CAC42FEE674AF391AE98BD1CD23B23 + E24A61D634A701D8294FA5E43F5A48498EF5B38152671A4B5C2A14970A98C6BE + 36905100844AA713E1E0AD087A5522D12189F9DCEA1CC7A7A7A611C94FC8CCA9 + 5037B2C217BAB5AD707DAB5CE34AD7B9DA156DABF0210A6C421D894A880E13B9 + E8F1EC2821DBB11464E7C3D30E92D84E0E65C248848DD02FADA8D8241A004FC2 + CB67B8F8B64E8FF4ED5A0E0D001D7C7737890C40A98FFAAAE61C2B1168E02952 + 12D10387DAF8382FFF71C89F11892C84A6F54508BD2289BA0D40663B2AD2E21A + F7B8645B850B486018EA70424A6BED2A90D6FA5CFD51047036E5A4A8329B89F1 + D96E95C295483083544A296516BCE7959288A0C1BE0D28D5921431EB26132B25 + F8DA4D71E6DDA5A9E8E052003C6A07EF9DC8789F2122620609B014A1A490F494 + D6679CD754C3CD485D277CD70A53F8C276659B5EA873517CD69143AA8D483C21 + 04DB888CAB4F89651106033791BE098FB22A1ED941FFB959005C144FEA602667 + 517C5D2472441DB38B96F01A1BA1B56EE471448690910190E44601A0B7548C88 + 8B3D42C86956D3CA55C332D9B48C362B7F33CB7F7CA698B77C6532AF422D9FF1 + 0D4B719AA4366A77FF481C95EFDFEAEB38F5B638BF3CCDE093A584C7066EB7CE + A2F21F6771EAE1411BB0C749FAA5456C005EF6092F805A2AF1913338608EFAF7 + 5F794C529F214C6569AE60CC62FE345CBFF9E950933A16A046B533450D6A565F + D9D562A6C003F28207DF34B99E4275A8253F9B62091D0F7753CE738D7B7BBC60 + 0B1B452B966794773CBA1ED7982227B6A7F01C6AE98C3C8E51967EA3C788DDE2 + 1973A4D5624635AC576D6A7197DA99E626F7ABC10DEB4FABFADCB1D011099EA0 + 3DD13438A7087E3391E28CE99B8AEAD744BDF39F81A9E79F02A9D8781EAAAB28 + 728DEEF6D27672AE0876C16491EA8E0FC0EC1DB855F9F591018BA8A741CA76BF + 1B5C6C4E77A4D428FF4FB9CA578E721EB0FCE53067B9CB3F4D0C0DF39534879D + 688468CB2149477B9EBA4E36B964CCE2630FFDC91C2A79D18D5EA88BBCAE78D1 + 822DAF9D9DA78AB856A020BCA4B7E9F852E1DA60123600AB6691CD640E2DB9C9 + 54E436D125E79198BB7DE5C478BBDC591EF752E3E6E6A3B1385087E4BFEF8D8A + 2290769ABF8704F0858F2CE1202730FDE87C788D8F35D01B5140E5A02BE3ECD2 + 179614599158739B705E3ED08DFD4E7C81F75B1105873CD39897B2C9BFFD6997 + BB7E05AF8F3DEC672FFB96CFBEF52FAF7DA9652FFB593F019DA381BACE451B91 + 9C4B88A900303ED0932EF4A6AF3D7834263BD22FA474B647FFE8BA53EAE2AAFA + 5229FAC9D8BD8E10FF7C471C008E0A1F8BADC5131EBDD8D9B10FFD88B79D4870 + C1AA76D52F7D2373973BB951BEFF15981BE6FDC7726C634EF556196BB677A6D2 + 46F92324353053C56070B334784452787C277043223C1EB778FF66812304680B + 040052157081252AF86460403253BF9075132724F0B58207560C52667A1E3411 + 10F80C91F20B0E3724C0005619A8709AA67A76867A2CD86DF67372BAC77BB497 + 8448B8844AD8844C287B5CF00091817797F1733BE774784245569850E10721BF + 0650CF877E4CE764D3E76BDD767F8F437E4E06401C3200E9D73154147414716B + 70247F3A575160485037263AB6537FCC067D27977BBB3788B8877BAF6788B797 + 8833A78884C88885FF881BF88219321800FDD55AE38360B9C26611A86F07E781 + 44F2247E7681FF24561088708E075EFE93716C6664A8A4253BE582CF005F7BA4 + 893338119A97538A267A1361829A743C2447845A126118417B3C107BC5588CC4 + 788C83A88CB0E77AC7B888CAE88CD1F88CCF488CBBB70D43A002CE8219CA3721 + 19716359175C89F2454D447DCD47867F2886EEE77C65287E67687D6398224F14 + 2D7A207694D3314F658EF0B444EDC02815B14678528FE7C825E2D87EF4C37C61 + 185E815888CB480C3CE0904EB88C11697BB6F78429078DA230136E83197E9724 + 920678FB52821DF44E0637671B584522286509D7837B76922A798A41985B2935 + 3E86420493E860B4FF947A134104B03881979624DC2765ADB879044794C9A755 + FB9209594783A6527245C811D5488D523995545995562995CD488D59598DC440 + 4ED2218978E26616B1222036110AC03A850251EDE8375D18005FF86CC6066366 + 98900FF66C523609E7D7216197118A433B07A48F16210580B201930056983445 + 17213BE4583B98938714715A575403EAB09414E187E0A711AEE790C8788CC440 + 0E3CE099A0397BA1A98CA0598C9DD9849EF97AA5599AC5989AC4480EB4470CE1 + 20274F40854F739BB88919E4009ABBF999BDB99BBCC99ABE199CC3E99BCF489C + C0599CC9D99BD4B89CBB299B18F336B9399DD4791838D099E4709DBBA99DD9D9 + 999F899DE4809DDCFF399EE2E99DE1E999E4B99DE5099AE6D99EEA199EB30644 + D5399FF4D917D9999D388003F7999FFAC99FF8B99DF8E99FFC39A0F9B99F014A + A008DA9F060AA00ADA9FE140036B519F123AA155C1A0F709A016AA9F190A9C0D + BAA006DAA120CAA1228AA1F7490C0F90089E518014BAA22C9A13FB59A002FAA1 + 013AA30D0AA330FAA2FD69A3390AA23A2AA3B33927B6D9A2423AA426D1A1C029 + A31AEAA11B1AA20A6AA14B8AA4482A9B0C42A4545AA52341A01F80A3587AA0FA + 99A509FAA5FCE9A5034A0E1F00A6664AA0E4100E3FB48D56DAA66E7A11315AA6 + 59BA9D38E0A5F759A60A2AA7376AA77C5AA72FAAA7805AA7822AA71F5AA078FA + A028406F6FBAA88CFF3AA88E1AA85D8A9F810AA81F30A9755AA98F9AA9964AA8 + 620AA9F54003D2A1A28C3AAA2B4AA9804AA6838AA9789AA95D5AA6647AA7AAEA + A790AAA98FAAAA772AA8268AA2416A321DC996BFC10930F8164942997917AC38 + 51A9C89AACCABAACCCDAACCEFAACD01AADCAFA0028506BD4A96D27441952B038 + 6EF81669541ADB1A00DD7AACCB8AAA593AA9B6CAA997AAACB25AA9641AADEB1A + ABEC8AACE6FAAEE19017D2C9AB4392AD8AA1001347AC5531ACA3E1AF4402B029 + 11AF94DA05CF4AABCC8AB00EABB0F39AACA9DAB0806AA226B5ABFC81ADBC7145 + 063B15DF6A6F12D2B12741B1EB5AAB9B8AB0128BACF1DA0FCDEAB0729AB2F27A + A938F00034306FF9FF9AB1FBBAB14362AC6D21B0F6B6B33AF1010A3BB4425BB4 + 447BB4469BB448BBB44ADBB44CFBB44E5BB41FF0A0E6949B1A5B1A5734AE6DF1 + B1A191B5412BAD601BB6623BB6CEFA0076801FFA310D16B703BFD0ABB4720DFC + E33A3A66112244425785479E278F39EB5F840700D7C04174D02F48992472740D + 7AE75E16410B9EE77595781152A040810B003E1B11D3D0975B625FBB78348135 + 244B09B717C898BBD4B77F0B24912B8184DB5AF8E58AD58611C80AB14D5BA9AE + 1BBBAD9BB4B00BB1B23BB4B6DB05440BBBB42BB542ABBBAF5BB4C4400376F004 + FAF10B17257C7E42B00CB511C053037D930960A56DF2D86CDA263B02F5977832 + 2D3C192D7440995BFF182174807C18C128E7B794F318008FF58D74F38662C8BC + EAA75FE2A76DBEA5BD1C322DE11B3C736B11B76BB4C0CBBB002CB5BACB0FBBFB + BFBE8BBB083CBB018CB4B04BC0C1DB0530400CB881076C7A1DD35083D6F552F7 + 06671A214233495EF7284CA1E8ABBD1A785A024283AB25D3729344C254B72440 + C29838C594758B6B5EF638875815C2A7C77E05A42725DC4128BC4CF7234BDA32 + 115D200047FCBBBA8BC4BABBC4499CC04D1CC54DCCC451ECBF527CC4575CB454 + 7CC5518CC45E8CC50A1B0E89F095EE91BF3C069017B2BF1AB544464296ECE82D + 4B42BFD15222A1B55B00803AA2530349343774003A034044981B117BF8AD87C9 + 8F18617CF9267C46FF82C68575696344C71D6324757C21377C114EDCC4FD80C9 + 97ACBB99CCC94BDCC95DD0C95B0CCAA01CC5A26CCA5C7CCA9AECC9ACDC05E1F0 + 00CDE21E0A16473F7956206878D0A060AB2B84011041B3B86FB5AC782F092471 + 5C4C68C5B912118244B2587C0B4B5AC55F11C109C0A0546AECB7A212260A9083 + 4102427AF7413AFC0CD07C110A063A3045CCB75C810090CB14D7AB0274CC059B + CCA212412FA54C628911530CC6F7BCC954FCC54ECCCF52BCCF5C1CD0FE1CD002 + 0DC688AAA8D741446E6646197259F3743F12A2682124215186C76C49BDCF17C7 + 884904B2354F1C2B11841562EEF74E23E65E3610C88913D112E157100242C2A7 + B56654CF13F17361FF42587B43588AA24592E5C81152221CDD6CED28B294B350 + 282D11A14CD0575CCA48BDD449CDD4AB4CD0A49CC5349BA8C0F71BE51C24B6E3 + B6C1AC49F946B75AE2662F1C5E79DB78E6DCCCA4AB5F82D7924062AC9EB7564D + 434205B403D57C8BC2DC5442024240B5CBCAFC0C24FD795B2D4080D5ABF9E679 + EEBCD6152179ECAC93F6FCC500EDC54C0CD04B2C008C8DCF92EDD8FEBCCF924D + D958DCD8479CD993BDC9530BAA91E81B856CC7F6573266CC2119F1D111C1D282 + E3C66478B557FB87682521E30A284FA2D36298DA74A0C6B8CD941182D7F55468 + 2009218095375404DB4BC4D3BE4ADB0719215A0BBF1D53D41131D9D6EDD99B9D + DD95DDD98C5DD9DEFF6DDDDCEDDDD9DDCFE1BDDDE0CDCF66EB36A21A1A57FD0C + 599DB3359C49ABFDD5202D8A848D92B66CD6CDDD34851D004B49D76E1D8CA88B + C182561174FD24029BD71911D64D9351F1CD3EFAFD7D87A6D6FE9DCC06C709B5 + 834CD40D009EFDDD962DDEE6EDE1DC5DDE22EEE1DF3DE221FEE1290EE295FD01 + C4BB911C3697F4F42D0E4D46217145152D217AC0DCE20AD1D60BD470FCDC2DFD + 7C5D0D284B465036104F5D4D11DA263C2C5DE12F4D1279033CBF84D38E02E440 + CDDA7FA86880CC1126DEE102D00F276EDE620EE666FEDD65FEE52B3EE66A6EE2 + DCDD0F0900A1781034BE11780DB8D519B2D7E5D7DAC8B4CB48D73D00500C9EA4 + 3A0F9EC15A0D849BFFF8536132537ACECCEC8C384AB501E19C405E75C8244850 + DAFC0CDC4C3419D553937E11740DCC947BCD7CBECE7B6B689BA4E8C917CC9980 + 341B94241BDEE6B2EEDD0420EBB53EEBB89EEBB9DE05CC00AAD6EA1B05D96C8C + 6CDC950CDC4BE486352E3A1A3D4F416EBF11723A75787545D6DA406D11798927 + 2054DA1DE3E7EEE363D7E7BD4934DBCD3EE317323CF514EB0270EBBA4EEBEBDE + EEEA1EE6EAFEEEEDEEDD6A2A9FBF91E95335381B4C24F28C11FB9ED643A9CDC5 + 9CDFA8EE277A2724466293AFC454292C25421DD60244C3AF24D11891E946C6C3 + 9924CF875EF01271F058FDCBE6A5D81751D9F14E00B57EF2E94EF2247FEB257F + F2269FEE2F8FF2F1FF9EF2332FD92F0FF3286FF32C4FF32AEFF2040003473027 + D4A1008205D4EFD331323DD189E258B6A35B1B50DACB6EE3E34EF41C9275DD8B + 594BA9001D1D2D493F872003284B69D17D52EC8BC6B5ADD55B57788FCC0ED454 + FFAD620F21275D751BE1F3341FF33C6FF2742FF378BFF77C8FF3768FF7759FF7 + 7E2FF87DEFF3373FBC5680B1A1A10016D70EBFA000A74E395D25B71C814CB430 + BAA265690D47BAD8BCB71BCFDF9AD35572BD8B875B6D36305E9960038D2B300A + E43A61B5CD9A333B97FB11571DC3FE35F9A04B39A70EFA12F10BA23F2DF39083 + ED0083982424146F117C9FFCCABFFCCCDFFCCEFFFCD01FFD557004896001A34D + A55A4EAA2213FDDCFFDFFDDEFFFDDC5F053040BC27D5A696AFFD4F03FD64C0F7 + EBBFFCEDCFFCEF9FFCEBFFFEF1AFFCF57FFF0450FFF22F0045001034EC3CE904 + C0E0418409152E64D8D0E1438811254AAC11C062005A13356EE4D8D1E3479021 + 458E3C48C0A4490127539E64D9D2E54B9830C9C4A4496065CD97330974099708 + 85119241850E6D58F159806719892E65DAD4E9D3A004664E955A95CCD5AB52B1 + 52E59A95AB55AF5609882123A62AD9AF53C35E35DB352D589D307AAA9803D5EE + DD85152F2AC5DBD7EF5FC01AB18A1D4CB66D59C46F0FA72D4BD8EB63B591C742 + 76CC982A5A93FD8ED8A11BD8B350A348F97E265DDA34D1C4880D635D4DB684EA + D46C61CB6E0DBB76FF6DDA885FDF8E4D66B76FDB65BB1C49D4F9F471E4C9952F + 1F8A36B5F3ADD0B7B29E2EDBFA73EAD79D4BD75E1D7BF5ED9AED58D8C4DCFC79 + F4E99597787D95FD7BF7EFE5B3C74ADFF7FCD7F9F1EF6F7F5FBEFBF8F8F3AF3E + F6C4E00FBE1286E3EC13F51A74F0410885CA0FB8092BA4F0420B33C470430D3B + E4F0430F351463B8442CE82542145354714583E8834F1C17631467400463D48F + 3D18F59BB1C61BC980F147FC689C0F481D857CED471FAB38028527EA62F14928 + A33CAD471E6DA430C8FD8CF4CF4523059C8F432CAFFCF2BD226860524A34D354 + F32901702C4192F7E0841184F7E8C4CFCE374B98334E3ED993B3043CF9C3934E + 18FFC4134E3FF504FF545144DFDBB350F88A4885C982D6B4F4524C352A420031 + C428541C5041950FD43F711435515443FD54D544493555D5501165F555585D85 + 753E4962D573C6236850C18813331576D861532902064FE904419C6541709659 + 689565569A669F5516D065A795165469B365D6DA50B3C5B6596ABFADF65C68B9 + 2DD7D96601D5561C027AFD95587AEB4DF3050E8E28428C6A088DD6DD66990538 + 5A81735C94DB1F139E53D476C50DB54E82039698E085276E98603288B3C0497B + 3BF618C2345EA0E18422A875961476513E396596D975F9E595619619049567A6 + 59E69A73C6B9E5976B56723C3C2AFD7868A2951B20E47CF715C366A6C1B57866 + 739D76795165618EFFB669ACCF75591C18046AB268B0C326AD185A42D6E48804 + AA31396BB69BAEB96DB8E38E79EB2A52198F63B1F3D6DBA901EC29DB87658C25 + 8BDDB50B279C7095A549FC64C39D2D7C71C70FA759F1C81D871C84C631971CF3 + CB4DEE7A20A1F7DE9B91084A37FD74D453577D75D65B77FD75D8556744A80106 + 289B161F3421998C7108218590020A204578528A0FBEF8E191173E78DF83171E + 78E2914F5E79E9AB1F3E7AEB8DBFDEF8E88F777E7BEABF4719E5AE7F6250F4BD + 81887D7DF6DB77DFFD2C846A6680F9ED3126F7238EA842F1E497EFFFFFEE0150 + 80E30381FFB4E73F04562F810754DECD12F8C00116501C45280EB0D0A7B73BBC + 4F831BE420FB8020FFBFF9D98E1603988726527184A53D6F7AC96BDEEF58A840 + 1716CF77D9435E0BB5D7C219522F87367CA1F570F84215CAB07855A0200AF070 + C1B0790300A4FB47049AF80F28E6C174522C1D152360452C4E518B55DCE215BB + 98452E86D18B1B6C620466171465D08F7EB4B0873D0C60875484A30A055C2129 + C6E1BC7118EF8ED82B401E5788BD3F1640097BB4A31EC557BC3C7A4F907E3460 + 1D1539C8E041F278075452718286C48F71A21D41E00420BC80814F86121033D0 + 86094A794A53A6F294DA58E50458A90D574E4096B34CC2046A298124E4129712 + E0651278E9015E4A0098C3F400153CE0886252419923A002249AD9CC11400211 + 90F80235A9F9852FFF2082112CC8030BCC213F77344319E1B4C730EC2185179C + B00A8254C20E0B003C78FEEE9DD5F35D0E87A704E7E15379F03C5E3DDF794817 + 46F29F3314643EF95850E60DF49F42C467018858C16061B25E3BB0852D760088 + 0E5C41A31AED002072D003908654A42325294867D08393A674062B65E90C4CE0 + 5213C434A6AD7CE52C6D79D35CEA3298B210A6048CE981642A73991E40861758 + C0024BC86F00699C5F33EAD70C1FC4E008E3F047439D7755AC6615AB4A208555 + 97A755B07E15ABFDD3AA57AF0AC0B07E0F9FE3F8990A2E29517AED80A2EDC8C5 + 46AF80018D7AB4A47B2D694A51DA52970656A6305DE52B61094B9BE6D296BED4 + E92F810A54630A55FFA8CCF400238C8A54A1D8A319EEB88653373B80629C339D + FAAB863FFC818602A096104A40AD12DAB9DA76BED3B5ECC42721D000CFD9BAB6 + 9D6840436DBB2A5B42C016B7F8D42D3BE1D9DBD4F25690F22C2E6F5BCB5ADBE6 + 16BAAE25445BF106D74C396007EDE0442E3AF0DD2B64B4030DC841793FCA5793 + 86D4AF2CFDEB4A5FFA5E99CED494863DAC2C6B79DF9CEED297C17C6C31FD2BD9 + C826C1B2474D6A507EA159713A957EA1A585140CC08107C0A00A77BCAD6A57FB + 4EDB16F4B6C42DE86E3BFCE10A171478B54DED87397C620D0BD2B617065E6B55 + BCE1175F189F217E6D1136E3D6D061D7526500448F77608349D820130D684021 + CA500824AF03BD7DFF6D6F7B59FA5E98CAB7B0884DEC6273BADF5F0AB3BFFF15 + AA2CEE910530C3E3B2DF0C8A37A0610FFA85D3B3B62B461A1E6CAC09B3B3C2D4 + E5AD6B9DAB5BDDF2D6B675C6336B373C5DE8F2F9CE7DCEB39EED1CDDDDF636CF + 88F6B3A2E9AC683D57D2883ACE1406C42B8583CCE31935A88878AF0052658434 + D4E95DAF93DD2BD8F8AA92BEB1C4A99519BB4BFE3E1699C674C464A930020F98 + C18B2CB86C814942046FFC021A6956F0FCD89806296862644518076BDBF9ECE0 + 5E20B52B5E6DB457DCDBD55EE0D917082EB45FABED6C1302DCD01677B9C71D6E + 6E8F9BDB7346F7B6BBCDED6A97BBBA1ADB448E292DA55CE0B503F338880D9EE1 + 8C1A9461A31858B2FF48D70BD8530F36BEF4AD6F62F18B4B2C6719B241B5B507 + B250BA7FE4A1D743990638844DBFCE3A359CA045F60B74C7ECD4923BBA7586B7 + 122E808675C35CE6E086F96BB33D739CC7FBE62F7FB9CE71CE7399DF36B8B6ED + F96E690E6E71CFBC0A3AB0E4BDD764E9F05EE32006A007A703F0DD8C96340748 + D8FA47BDDE83AF83F4BC066FF24AF92058C2AA920FACC6AF2E5F1D4CC93213D7 + 17776237093C944E745CD8B4D8AC679B410BC037230DF8D35FB3BF2D6E97137D + E8E56EADB9BBBDF8C56B3BDDE6B6F9D02F006F6BC77BF22E9F3CE679EEF86863 + 1EF4D6757A9A025008226FA01DED18450D0041E432384318B227690E92208825 + E45EF7BBE7FD12EEFFE07BDEFF5EF8C017FE1D8C6F7C20DC21F940C002F29BAF + FCE7339F1158000280994905BA677CCC44E9441F88F0713537B576B7CBDD0974 + 3061DE5E5EFDE2BE3CFBD33DF3F6AF5FFEF1A7FFFBD35D7FF7E71FE8F3BF7FFA + 61AEFFF833376E5BBAE2B8AED25B11ED6A0707F02EAC132F8F322F5043A91E40 + 022090220BF4A20BCC400CDC400DEC400E441D28822256488664C8382F923B68 + 42042AD0B5BADBB8A0382283C83B058086115AB3106A23634027752A00F50B40 + F5B386CE73BC201C421F1442011C422384B9FBBB002004C2FFEB3C202CC2CE7B + 28E3384016912B5BA02BBBC2AB2BD0ABBDCA810C7A9F101C43322C4333FC8712 + 2441121C84641884FF41C88264309D7FB8B5651A0166CA3E8DBBBBA068018EF1 + 3E614333BF530605033C29F0811392841E4C44455C44466CC444743F47544421 + 64C4238CC4F52384712882F1F8047BB3C2076907B96A078C0AAF8DEA004B282F + B0233B245802308A1D5688805724A3314CC33624412772A265BAB51150413C3C + 2ACC0A0A12E0C383E804225080031B80F06BAA625846748A810758A76050023F + 90C45BA0BF5B80C46ACCC6FA5BC45B88426EABC61ED4C66BE43FF5F3036B0047 + 6EEC41485C4471FB190B381F4F44914CC8841AC8041E038442C8857CC3800698 + 076E588665A8BD307422337043833C48841C043330832C6048876CC8865C4888 + 7CC3877C4830CB02FF46C0488C64848CF42256A0433BB443ECC3B83CF426A1D0 + 82F13082F20000EF0BB611EAAC344A2311A2057748B65408817108866050C45B + B88569ACC69F0CC769F40370ECC96964C4A3BC00A34C44A20CCACB43C71E244A + 474C4AA84CC70BA0423C88A8787410A8EB004C33084DB33A4F233590BA030B34 + 035BD22FB57C35B6D4AF2BBBAF9B8A25868B2FB4E30341302AA30AC95D440415 + 6441EDD34392700121084605988313E9BE60F31B35532363B39F34389B22A882 + 500806A054CA0B084ACCB4CCCCACCC70BC4CCDFCCCCA0C4DCF044ACA543FCEBC + CCD274CAD404CDD15C3FD2DBCA07C9B7F0E23783F0378013388D22B8910243D3 + 318324782C2D2326FFE10CCE9E02A66062CB9C8A4B59AA2F564A2513E881BBF4 + 45BDDCC53B244917248905588037D00226398518EC036F50007BE02C0513C4BF + 63235A30004D8881C8BC4CA2F4C9A6EC499F94CFA6F4CCA1544A9F2CC7FC34CA + F9E4CFCA1C4AFAA44FFD94CFA77C4FCFBC3C3F78CFF79C4F00D5C65070C77A83 + CD06A9ABD93C885A0800600086ABCB4D5534CBD2F1CD2D0B511105AAE20CA6B5 + 7CCBB8442CFA3201BBC44B16D04B44D8C51524495FF4B591580017D04E2DB082 + AF894170104F64F42CF39C1FB2B91F0E2019502084041DCA50E8C65B68D2736C + 52CBFCCF2865D26C94D29F8C52276D4D2785D227DDD22DBD4F6DBC4F73FC522D + 3DD3A1B48607DD0CFF0B804109450FD9BC825AE88369E8031B08003A000681C3 + 000CC80581ECCDDF2CD161125442354E2CBBB2569BA5FA52A5989A81E83C2A5D + B4C3181DC9163C2A32C3CEECD4CE372001BA38915EE8831F35065AB806CE1AD2 + F12B1B7C49051D08016B388304954F5885D5F88C4F590D50FE5CD05AA5D558AD + D55BED4F06F5D55DDDD5057DD02DE00C037CD3E4D8810DB02840B82B67B53440 + 402903582909A4560FCD03101D51112DD1E33CCEE4844B9B5AD1526AD4476501 + BE8CD16CFA8211F0CB92B45191C8D41C7D834DFD151894411A2436A6AA1DB219 + BC4438219C24CA33B885801DD860ED49823D58814D58845D58F964D880855586 + 3558859D58873D83FF810D8535355664350F2CD4C281CBABB1532F94E2CD0FFD + 4D12054E943DD99E3251B744D45A924B574225547ACE72A5CE738D513CBCCE1B + CD54781D0212B00023F04E00988619A4C166B80665304F7D259B4294AA100085 + 50B0588A8DD581B558A9B5DAABC5DAA9C5DA87DDDA8935D8AB5558AD3DD8ACAD + 5AB23D032A3CD68D2D8D04EC2EAC23C5F132AF1C38B81EF0D008C8566DDD326E + EDA59685CB975554C3724E168D4EA38AD19B555776AD51A1C05178CD4E17D8D4 + 1670D369084FA3153F1BA4491FE0006391048C3D83A8B5D8A815D8D0355B8105 + DD8B35DBB255D8D12D5DCF3DDD9EFC5CB3855DD5B5DAD9355DD125D85000051D + B89B4E5C5BCF2883FF06E8315B5007759884212BB23258874208006190409322 + D9BB0DD4419DDEBDEDD6B704572A0BDC996D549ABDAC173D5C9CB54E4B5D5C9E + 2D5F5C20012BC80127F984EFBB57911352117287A84A05061887330886335005 + 113883FDC5DAFDFD5FFE0D60001E60012EE0FEB558FD2DE0AA3D6002FE5FFD7D + E0063660AB558500A6E033D0DDA6F3DDD3E8CAAF0480B0EC345254296B3D4B93 + CD5B428535B74CD4707D25C11D2C47F5DEC3C5A67515DF5FC4D4F2AD874C7D83 + C1DC984AE90363F41B1B3C557B2839F694043FE05AD44562255E6226B6D803A6 + DD264662028EE22616585028020EF81578D460CF90CD7DEBB77F0BB881ABD691 + 1D48BC254E945D59FF13652C147D59E664E171E55E97824E183E576C52D79C05 + CC9D2DDFF27D83F3FD959504CF03E3BB045BB3D04A8390311650B85F06B6DA46 + 7662478E64489EE400CE5F1148E047AE644D666008B6E04CE6E44B7E64428001 + 0E480323D8622EFE8BAE943A83A03AB1042FBAB55BBCD5D6EAE5DBEB55CEE53C + ACED7561C23557444857194E5C3D7E573EE6633FE6D43908E4F00444C6742AC0 + 1BA1C1D3041D58642466DDD27D626B8EE26C4E5D2566DDB1E5667026DD6EBE60 + 2C369F540E0CD44B3D0718054E703DE41586751086E61561E805D142556396ED + A56FFDDBE58CA5F98A63287BA9932AD75FFEE53B46843C36C9A028E6627EDC21 + 601227D9841F1D06FF5A10C490EBBBFAB99F1860801008053FF85F1150833310 + 69918664921E69947660023E699646699106E0933669979EE99316019BA6699C + DE5F960E8510A081347802543E67BB48C0056C4007945B84AB5B121E5134CEE7 + 57B3B270954B164E35B47B615FBCE32F6802AD460476D5596266E8F2750117D0 + 82609C03EF3C05A2A5C16B2055BFAB1D7B68B31252D545566903C6644C16E09B + 0E65FEB56BBAD66BBFC6E4BC16E0BB06E9061E6CFECDEB0456852BE6809FD04A + A1868A8EA5D0DC04D98363A91C509F924D59EA65593676599BCAE5E6DCE5C0B2 + 6C82C6EA26C8A68476D790C8D455606DD76EED4CC50514680123E80383004FCD + 82C9B6B61DD07287FF745AD538D05F9B1E6EE22E6EE33E6EE44E6EE55E6EE66E + EEE1060519B8041F00EAC7BE0B50DCAE51CC288E222FF57AB29392E588CB675B + 863836C6E59A92A97175A9B31BED26EB01477051D3CE6AAEA6D1615E6DD7E6D9 + D6866D787D8321B0828D31884F3033BF0952BFFB3B7B8086C18B0145A6E0E1DE + 6BC23EEC076F70BF46ECBECE6B0B8FF00B77700D9FF0BEE66BFE8D839E1E88A0 + AE6EA2D8007AB4C71E6B807DC40040D006800C487A1EC841708425C087258084 + 1ABFF11A17044810047CE0711E87841E7704218704473872243FF26540720970 + 84256FF2277F710958860900021836ED2640681ABED43DA68005F07230FF7231 + 6F6D2FC7D14DED51FF50DD3BFA294F054B8306CB1DFA0505E1766E3AAF733BBF + F3E60E814B588327782B125F0A0ECEB44DAB8142F0B484FB6E2AD2382F587446 + 6F74477F74488F74498F745F6401AD3EED2568022898EF4AADE1912073B0066B + 79E554A000805E98833FA449777007C67CE69A34A1F38B5A090F69E43E6C3518 + EE5BB7E95CB7F097E6755C276E5BFF755D17765AD7750827F65E1FEE509001AF + 19F13F1F092FA64D00B04D31CE4DC07A4ECCCEB84ADF766EEF766FFF7670FFF6 + ACCE6A4D3FEDAEAE6F9010732F0775761F7331C7D1B1FE89529F5C0530860140 + 5AA712C49944D5182099E0F6855FDFF55D1FF65B2F785A1FF8622F6E833778E2 + 5EF8837F788747F8FF8857F890CEDD235883367D76A2A0D02FAE4D0CD550EDC6 + 80967A29A5361DEF0D77944F79953F2AA3C226AD86024DFF0261F67491D0EF50 + 07EB7A10CC1EA0ED8220C6192C86DA2970DB79EBC10B9C2288033C57035540F8 + E21E69859FF384D775A8C7F3395F7A9BB67AE406855428113C105A8D87762E9C + 87EEEB843BCDD340C84D911F79307C456D5F79B77F7B713FED4B3FED84E6F277 + 0DF3327F7777C77B311FEBFE2EF54EF8D1335BF3425E2AA01FBC1738812AF085 + A5578382777CC70F69C89F7C04887CCAB77CC8AF7CC7D7FCC95703CD97FCCE07 + FDCEE77CD2CF7CCCDFFCC90F695588031DC86237FDFA9050D648B08566C52BDB + EF2897AA05398E2FFF5693252A5F8624007EE10FFE292F7E4768F2634AFE5AAB + 356762FE688AA6698AA66AFA822518F74CBF7E2858022880F997DF7E99A761D5 + 068976E7D9BC2FFF0568F77AE06FDA8ED0C93DC6CF6A2A63A3851C4CFC220801 + A40F697480FCFC3F78C70708746A060A14A1C6E040830605121CA886E1438708 + 23267408F1A2448B1A156A6CA826CE91442A8C002869F224CA942A57B26CE9F2 + 25CC983267D26C996F87AD76B9AEF0BC828127A01C3386CE3051B4A889A449B5 + 9960AA4DDB04A813A64E4D62358904AC582570F520C1AB070F54C452295B7604 + 95116AD7221A8108D117B85F9ACC6D62B70994BCADCC4488F02F8F17162C2CD5 + 6CB98AC2020A8713FF3346ECB83164C40BDE0CB162014F27007DC0FDB2D7CC9D + B2CFCD9A0D18408B561A1F2F529D0861CD971AD808D4CC1E589B36EEDBBA1DCE + EE9DFBB76DDEB865FFDE1DDC77F0E4C507AA027584860A22BD0A53AF6EFD3AF6 + EC2ADBD9B2B50350879E3C3B34E043D4287AA54E9B3E951A35C904F857B766E5 + DA352CFEB166CDA255DBF6FF5B727D31575D764181575E5FF0E5571E820DA65D + 498F4918198512AE3299163D586044669D10D1D9009F29A34C88250E600F2D06 + 70704408A0A8828E2F181184003A34D626E343365EA4E38DB6C948A3453A7644 + 518E02FD5823926A84028A0E1C8C042194514A39E54C0EB4B30327B974105E78 + 40E5D0430E421935FF547A4E3DC55E545451259F56F5D9079658F9ED97565A6B + F917605C03D275D75D7A2DF857602C9803E561142866E8A186168AA8A2882E6A + A80B6F9080C2137D00E061679F5DD34C68A3B933C030D0D0228526A9E810822A + B421809CAABDADEACAAA08B8928D43D9BCEA5BACB0D6B61BAEC5AD8A9B72B9C6 + DA2AB0BAF6E60B02BEA45304744F644625B4D14A8B1D20B9E4828103D7B873CD + 0E0D045046198000820D204AA9C7DE53694AC5E67C6EBE895F9C6539C21F9D90 + AC05099E70C945D78106E605C52101EFD517A0821106E1A1892D36A1630B3BDC + 3005F5508682111C76324DA6A395481AC7A5A5A6C90992A4DA1B92BD9A5C728D + B9954C1BCA3CAECCFFA3CA2E9F6C23CB34934CF218473809CE74D3FAFC33D02A + FD7445070698540B3DC0D450867847996B66BAEEAD79557DF47D955FBC73F667 + E75B6EE9AB6781FEFE7B0814033318E8C1DA31DAA8A10A27FAF6A27173518F0B + 5AA0B061497D28004D68DA6E3A5A680314534C6A1C9C50848BC91EDB1BACB022 + DBF8E2B4214B1BE4BFCA7AF9AD8F5F2EF96CD9C0CA39E49C73BEEAE4B1927EF9 + E77130AB023841BBFEBAB43B113D8F493604000C30017489C1D34DA1EB9E36F0 + 5545759BEFC2AB9FD675FEE7F55B790E58D781D18F2DF09F0D1A0C25C31556B8 + 706387D14D590B46CC7129110AA0085AA7A39D86E20006BC10038B71C07873CD + 35239BB2CD35DE4FFF7FFE8AEBDFFFCBFE87BF01F28F80FB43C71856F7849EC1 + AE810EB4CE4FB6740D9318800E35C884EEBAE434F59C296A6AAA4A7CDA64B5E3 + C9693F5BE35ABE9E379756F0E95F002B5BF502352884396A6D6C835B0D6FE8A8 + 3768810423D90400A6B1B7628C06704534CD69DCE18318B4260EC8321DE65C15 + 45D3B5CA58A69B55AC6C25456355118AB7B29C17C318C52A2E2B1594FAC403D3 + A8C6982CA210DFBA602632F18C5C54AB01C2C884302AD13B0F4A8D5DC5B3CF57 + AE863C13D2C94EF86A0BBEE24297012DA14F796902D9C87607EA110C30D7A321 + 0E6F18B7436D5293AB88D4105430BE207A031AF60851A74C741A5A283106A960 + 401CA0F83929E2CFFF576334D92C63969B5BEDF296CB61DCB07065393524D08C + 4F5823329389122B05214B5BDAD27882C2871CF0C15CBF4BD307E76315775D8D + 8466F1407FEAC4160039EF792D945E24037608B315EC4108E3820DE329CF7932 + 8A0BF67441289F80874DF4E143D028CD118F689A6618A0540C00C5FCA0A84504 + 2C548C626C681821EAD0895274A1129555088E60070BA051991E4D2377BC031E + F1100D10D55C0A07F928BC106EF38FDDC4DA9C0AE9969906E86BFB821E82F292 + CE8061819DD673A7DA1243012EAC029EF4CCE1DA3A49D4B9B9400826C801114E + A199BD9DD21D45248D694CE30E29D820063AA8C2186AB42AB1A20E57562C6BCD + BC584B61512E56F8FFFB6201C358B9CBADD515CBD2C1463BFAD1BDBAAE1D5772 + 66977A224D31ED112A5203614BB7F92641C2B490E2A4690A55183617461260EB + 8CA16066A81D2EC462A89CB5E7518DBAB6CE7676A8A4FD2C5127B3D127A0711A + DE00D1A648D431D3D8230DEF3B9CFC56050104EC76A1BB5D95AD76FB5B866691 + B7C6ED6DAC844B5CE01AD7B7C92D2E73958B5CDD42D7B8C04DA01D7EF12CBE72 + 775A35A00330E8B08E42ACE3190DB016061A50894A64A212EBF1E09AE2C35211 + 76E5A56119247FD802D9E6999340D183E4F4787A889E6216A8D9812782871ADA + A31A2AC10EE6C264864082CB7CA213E050002D34C6318D15C394A959CD0912E7 + 45639D15AE250E66FFABAE2857619998A224667114E3A00391E8B5BB36965204 + 3B30C19254F0826578E615AE7958F9B60B90F62D213865EA1FC83A6F917CC24B + 2B746A59750EF8B295441B94EC895A0A74D69EB1D0F297BD0CE6318BB9CCA825 + 6AA47C68844FF4E1B5A7016888AE0A50292C51077118C34431F15CEAAE4ACF7C + B6AE43FD8C0041133A5682369DA0875BE83E8B310E0C4884058078E349434876 + 1DA05D496C873BDDF10403ED312C0887079FAA01123F8C8DE909F76BD33D4D16 + 419515301606EC5307A5EDC05ABE35AE73AD6B5D7B56D7E1F8A4A4468246BDFD + A2189BB2EA869B510C5A1823354C84A52F9E38458A4EF4C4D4BE36B6AF2DE38D + 3290D2DEA6CEB566FF57BB6738A30681E834EFCC844D35F9712B5B819337937C + 16FD925340E6EC93ABA7ACCE581FA2C09A3DF00A3E1BF02F0F9C0B050FB83D0F + 2EF033137CE15F8E05DDECF604239C6233C556865507904A24A2A6A03180658D + A47BDC918BBCE4243FB9C9538EF2959B5CCFCA4580EA44D287ED7EBBE631B134 + A601A069671462779F5E379189C74D78DD972C84548BBD00C45F4512E89C5226 + 5BACA38E859E0EE2CA97DCACAE1BAE755C239CEBBB3E73C23FD9C3F075620EE5 + 13559C676B1A0FBFEF54E90074B6E30EC5E122DA1574BFF670EF4E5119AFE117 + 98B139E05F12EE4B8FBBDC4CEB747B3E1874C596FAA5F83DCB6397D73C7BD705 + A74FA77295A73EF5FF7E5BDDC0D8F9ECC3412FFAD0937EF4A62F7DE85770211E + 0A7B1342FC6733AE31220D9B868874365C08A8BB5B97035AE5BE5FB9EE4F1EFC + DF13DF747C5781A502AF7C95E0BC76B7CBDDEED4C5EE1092DA7812D08FD1E965 + A7254F1E6C7BC23765F79DF9016FBEEA0CA27596BFAEFEF5B37FD7756BC186E6 + 606110794AC31A1B8031A4F0821330230E6FE72D046082AE40C0001AD7A1199A + AE08609F25E071256001EA96DD019A020E1A03EE9E032E2004C64A08CC98282D + 9F079AC4E0E59C0D909BB9A1DBCF4D9F3671C5BB1D19F2A0C5BC711FF3505EAB + 851F95451DF971DED9645696A1DEE9F5200FFE600F02DB10500C105DD83064D8 + 35FC0DEDD1C200F8FF00C89C8A2A40801462821456E1145621155EA116062016 + 76A1157EA17081A11566611872A11402A01996E118BA82A37180318CD2072A9F + A5194D49D4C2EDF01C976080F4C5574B0D9DE391C5BC40DE92C5202240427FD1 + 45231DC812FCCB2409184F6D9EE61D82F9B553AD7D5EFB5D2226AA5FC4510C1E + CCC13470863DB803685CD5680CCEA82C512A84401CC00A17A2A1DD49610412A0 + 70C5622C36E02C5621CB9D61C9BDA22CF2162DEE621546A05D318093FC5D1C02 + 9E2D444226D842B5A017063C232068C33248C032F4D17C551FBC35D659C8C201 + 0841377EA3378623388EA33896E31B08C11BDC83D4695E241658255E870FC623 + 10CEA30FC6C20AACFF403DE0821DA88005C8DF879C929C715831D416A9984A08 + BCDD17A2A115A22143E2A243EAA2184A57444264424A64C951A414EA4308A4C2 + 1A90C431DA1C77EC403B8C947874804925DED4F4E10805D2F1240F371E004CC6 + A44CCE244DD6644CBE810DB263244EE24FBDA375DC5AC005A5C10D65C2E99A50 + 1665D71DE550765DAE8559DD5881B3581CDA75CC8665956D7955088C81DD51E1 + 56A65C2DBA5C570E1A150E1AC9FD2257B62217D6225A1AE058822558CEA2CBA1 + 431C5C820AE0C147D65C1074C748769A4F78094AAECB7CF5214B12DDE371A337 + C2E4617E2362C66462362663C2643AE6A44EE2603BFD1B76D8E33D66A6666EA6 + 6662E6667A266786FF66667A2668C6C2C440551FB419DFA49DC6698C32108EFE + 315111A443159EC342EE966D06E03900E06E82616E42C06F4EA41806676D16A7 + 6F46A471F5E6198202477AE45D4E9A0388A40368099095141F5C271FA0207D2D + 169C3842F6ED07373A414C8A27798EA74D9EE701A46337AC2723685E1660417B + 26435F44000B78817DB2009404A568DEE352F2A77E66667F0A25806E66801ADC + 66AEC21BE0829A6DC227BC963D1011ED91C69BD1826AA4421168255A8EA57469 + 28870A5787F2D68766A8878E288892A88896288A8A281B1E810F74E273DE5803 + 884B2EEC402DD4E806344019144203140220148225A4E4761A4FD10D123E8483 + 2814C1039080925AFF01935A410B2829095801944AA91054A99556E90190A713 + 886738EC03327CA92CBC4198BE819892A928B8C03188829A8A4222E4E77EBE69 + 66F2009CDE233164669DCEA99CD62931A419A58003115C18341443FA08D440DA + 836A04819DF1E2707E611B7CA16D366A44FEA6A41AA7A3522A710AA71506271B + 72A4054CC38B76170670891498C43C3C430DD400A7750006C8C73572E7F521D9 + 371D433FC0000C24400B34690BE46AAE3629AF5AC1955EE9966E831308AB1314 + 8129FCC00F68C0793A6637E6276886E6B37266B4AEC0B46AA6C1556B67D68313 + D84DF8F45329B1E66C0D4E1A18800F18CE18F8C243A6211992211A52A186EAA2 + BB7261BCB62B5A6EFF61BCB2EB897AE1886A240DF880B37C2A5F8560E195A04F + E861BBA9607DD9D7E3C96A02C0C036F06AF8EC6AAF322909FCAA956E29C66E69 + 02288206742CB32A26C80E819BC6E90AC8A99C6AA6C992EC3DA6ECC9922CCB86 + E6CBAE6CC9966C2C84833EF2231E7CE22FFCD3B6704A116D4A69D49657190286 + 36AAD142C0D1266D151EAD143E2AA32EEDD3422AD42AAD1432ED4452EDD26AE4 + 11ACC113C021C02653A812CD8E018001D0C3A9665078B0AA552CC34AC209F6ED + C7BC1C03ADD6EAAD32A9AE4AECC45A6C95662CC62640B2FEC01FA0274D0A819B + B6ACE1AAECCCAE2C661EAECC366EE2DAE3E2226ECBAE4038488C8276EAC5EC4D + 12FECDC69446B3A1FFE2A9D89DD42AADD5622DE9222DD4562DEA8EEEEAA26E18 + 9AEED4BA6EEB42C0186C24D7D6D8D7AAD1331402B864C20EFCAE33884B8C3282 + 3014EFE2594D7D7913BD5081ACD2EA36402909544CC5F400F442E91090292E90 + 6982BEC13624C0367CEFF75641B27A2C397A637992272EB4430CAC2F76CCECCB + BEAFFBC62FFCCEAFFCD6EFFCD6ACC4A8D934BC9EC6219B9CD102E1D89626B89D + 2B9CAE01B7EE012730022FB00237B0EB6EEA1A5C46EE225374B6036071897562 + 679125AFE39545F6AD05F3CE6D0268010927C276A1002E90B00A6B012E1CC103 + 1C8128B8B00BD36A15CC2D0C48C2DFFE81DE0A41B00EAB0F2780291CEB0FB46F + E2CE6911F3C0E472FF66122BB111CBACC94ACC10EA13A62061FA94082D208131 + 1843419D800EC8C118A8AE038731038F710267A118B78119BB821C6C010748F0 + 04A7515EE60420F0E5D0981490BA94C27E279D8470C31E81160CC11FEB150A90 + 302017322E3C0022273222372CAD366C024842C776EC10E86D96F2EDB08EEF1F + 6007126F3239F040279BAC276FF22697AC27BBAF289332CB22F1CC76F2279FB2 + 9CB272288B3239ACC036E002A5E0816A86C835A49D4035C387998A1CA4431B0C + 331917F3191B33321F331A8F4193A880A7BEB1035D89486A09D1F484495E6712 + F081DA0ADD0879802CC44BF6C96D2303B21D68C14990C01F0F412103B2282872 + 2233B223F3832408FFB106ECB0256BECF86A8026DBAFFDAA32FDFE733FCF3240 + B36C2CD48D1DE48037F0D36B158328722E56AD9214CC03131D241893313137F0 + 453370461BED456F74327BF430A3711CB0314741730365C2A9EA4121E8288F5A + 0B1D2D432508422540024D1BE21240C2127C414E37124F43C122FE3414DC4150 + 1FC21D1C03331CB528E0022ED0002EA4010A38350D3C402AD0C03148350D1C29 + 331CA9286475115481247CB524108224C4812120832150023A0A012EA4350F0B + AB5B0FABDF766C265F07278BB25D23312CDFB55EDB755EEB752BEF3560D7AC0B + 8844D7FE29882803E79248699CC635A8C82BC5012684B4644F76489F0365B781 + 655F76656BF66667FF00676B766663F6676336EDCA402AA8006B99B4EB84AD8E + 5190D9A22A06E7C17CCA765FD07604D8366ECFF67CCEE73FB0020CD4B0F81EAB + 10232B7117B77123AB22246B1077C01F90803A0F413BCBF00B3F4011FCF6DCD6 + 302447F23E0F343F73B777AF002B77B7FC3A811058810A28803794CF2F3061B2 + 95E2E00CC05532831C886E1B6400D2763447DB7748DF3747F7377FFFF7307B76 + 804B368077B480E377811F381AEB43115CC219759B6A478BC0661A099E5B5FEE + 368667B8866F785F9443ADD26A2487B8888F38892B421037F71F6B813B27F211 + 88F07563B226CB3239CCF85FCFB85F7B328DE7388D73728DDB385FB3B28EF3B8 + 8F934341E3C210A4FF413F76C2DEB03729360313C2F755C212D27E83685B7606 + 5C797D7FC39567C03758B996D7B7687FC39753B967B3019873F995B3019673B9 + 659BB9977BF69667809B67399C7F399A5FF997ABB92B30C016A4C13145B8CF34 + 5FA6DD61CF751A871F3AA277B80D6BC0DF32BAA3373AA43FBAA307B129FC0120 + 93703B2372A653B70D37320E6B375D9B725EAFB23F933A2C9F7A2C93B240AB7A + A9BF72289FBAA9AF32391083B60AC12D138137980F2B61DCC69422164BB40EC0 + 520183399987349C9F39B19FF9988F794817FBB13B7BB327FBB10FB867173BB4 + 573B9863C246B20EA04FCBB5FC840D1081B8AB430080D7E1FD44A2A7BB867B38 + 0C30030C68C01FC0FFBBBCC73BBDCFBBBDD73BA3FF0032A0333BBB70743F8028 + 10430DD370754332BD63878EE30039283C0EE078272B3C90CF38C32F3CC5EF38 + C43B3C8D4F7CC4E3F8C4437CC6B732C513C327E9A305540A1E28C03034831464 + DCC61DA13BBC8026206A1C40409CDFB9CD6B399ED77CCEEB3CCEDBBCCEEFBCCF + 6F79CF0FBDD0177DCDEB8369A340EB743BB484D477F4C4D0F884834C3DD557BD + D55FFDD50BAED6A327898BB8227CBD2220C32974C2D863070E1083C4A3FDC2AB + FDD9A73D2BB33DDCBBFDDACB7DDBCFBD27C7FDDCE77DDBF340DD9343E5BE811D + 40E5270E915559D5C69D8631B803B0FB5F80DB39B26FF9E3C7797DAFF9E34FFE + B143FEE59FF99A53FF7EE6C3F9E6433E338701EBD01CD343481CEF655FFEC44F + 603DEBB77EEB9FE3632EA6EC83ECC786A31374BDD77FBD304009C5777CEF7FFC + C5FBBEF057FCEFFBBEC5173FF27BBCC62F3C0F986622DC8D11B8D67AAFBC1202 + 4E874143332C5110308021D0FCCF7F3FF887BFF88F3FF98FBF3E30803195BE94 + 383D498A0706B83EFCC7BF606C3DFDD3643EDF7F24837DD843C9F203040E7202 + 090E24775020C283060B1654D890A141850F255684A870C5035C242CE021E20D + 5A3391CD068C143900A5BB342F623088832943CC0CDF64D26C3333C34D9B3875 + CA8CD913284FA13B89E61C6AD46751A0FA8A705041044054A953A956B57A156B + 56AD5BB976F50A60FFC70E5BED725D317B05C3D93C2CD8B675FB166E5CB96EDF + 1CB07B176F5EBD7985DC15F24643E0C03F34FC305C581136C5C8BE6E8D3871E1 + C5C80C71245C78B932C1CA0337677E3CD921C2849DC9117B4063088A2778FA78 + FB35E0DA3577EE4E921C408BD6CA540C42D4693325E637363E83FB1C1EF37886 + E4C071CA3C4ED37974E4C5A52BAF9E3C794E303A52A998D3187C78F1E3C94B05 + E70DFD2F7B48EC415BBF1E498EF8F3E5D7A77FDF7E7EFCF39849EA4F82042B02 + B4A2052B043C304000855890C1059D7810C207090B6C9B082D7CC0095CCAA3AA + B4CB20EBF0338488A1C843D022922C34114BB48C45727858A51E5C50E8A80F70 + 1428A6996B9A51A6FFA4926819A098DC7CD0249522C680093AE26EEA89B8E698 + FBC9A824976C8ECA2477BA89BA2A637A92B86FF491E11215C0E964C332CD3C13 + CD34AF32028604DA24D0C0168C90B34003E134B0C1060FB0D0896D04FBE18005 + 031DB4AFBE484093B286325B74331319D52CB24725958C22CD1AF5CC521E16C0 + C50E157EF1C6C6617E6C86B666D2E0F1B66206F0E185201830C4959B809B3583 + 2769BDB5D65CB794C9565E7DDD95D6E17ADD95585D739DD54B195249E38953D4 + 7C16DA68A5ADCA0218AC85C14E025BD8B6CE6CF1CCD3413E9D98500327F6F24B + 0834217208870F16FA80B475C981D7DD75DB3DF15E79F56DB7337ED725261C17 + 6898B1934E40A265FF479214462948845F48458710C6C0B2562B81CDD2628C2F + D61263646BFA983A5A6742F6CBEEF09816E5945516EF896B13001040398D3042 + 40986D7EA32E9C737622816D7CF639813FDF6070CFA2CD3D808676628841930D + 37A397337AF9851AD37E2B83D7D2A817D53AB30FB0E62CEBABFD9D37DF7EBDFE + 201C1A3822021C707E81A6A4520750E6245AECD1ED0406E48069BABE8FB5CE6F + ECA2C355F0C0732D1CF0C49F1436574C18E80EAA95259F9CF2A8AABD568BCC71 + 31422A1570C91CF4CC8F78E00851461FBD0818AAB8B68A2A8466F0C10A65E799 + 5CA7B5961A77AFB716FB6BDECD9E1A6CE071EF7A6AE287A7FA6A78891138B527 + A6990624914A3D29FFD562A49887C88831C1B2D75D8C656ECAEF7F4D1C719F16 + F7D57BF047CE357D5EBD6C4A85932B9F9FFE675B76B3082D86C8BC85CE33DF1F + 805A78C0000938C070B8AC4DAE1B4CA00425AE6D4CE80F1B3A1BBD7437C17E4C + 706A15C4E0048F57C1766DD0831CFCA008CF96410EEA0E07A6498D05BC410405 + 4043553A5A1849EC360029B0246247BAD81476011CC60D078887B38E0F8548C4 + 1FF6B05653B8151B1817855DFC30035150A272901885BF31254C447056FDB8D8 + 45F154AB1F30E807E83627150BE86F08004C63010BE8A63685518C84318C1360 + 07A10A3D2801B52B4F098FD72E1888307914FC1A06FD553C1286D0901AECE308 + 3918B558B8400B9DFF52C0477E8123BA2DCC1DB418060CD330A413E8C01010C0 + 1570BC07C5201211958A1B1F29A7182CEBB48F56B064DF10ADC314A780C38BB9 + D4E5568C908023F8920689A08116D2A0826226E201C7A0C16994F9005114E199 + D12C427FAA20890414E1084588C71F90F18737E0C241B3BB631E0313C13D9E10 + 9D2364243A41C8CE43BED39DE974E70801F6864E3D81086FC3CD25E73612BADD + E686AED2C7379458D0631514A10805E214AC38AB829EF2A0065DA811AD73CA84 + 4E740A4164C337EAA003A7C86F9721152911E6F18292EAA10691E0C41F4CF183 + 961A06A63195294C0BF3871D38A01D0E78C01B06280AD23D2075ABB3D6EA2421 + 180D487082F3522AFF09EFE52EA7C6739D5E9B57521BE954433695AA4D6DEA52 + C97636626CE30D89B082028CC0B64AC6466E2329863D8C618087E9400EAE0096 + 129F58D1213231891355CE14D9F01B5ED555AF1AAD285FED2A58C14EE11B71D8 + 02079EF009913E56977878C11A5EF0023DE8C1162B35EA6639DB590DFC21080E + 704010D848C0232070A810446A3C591BCF2E28B29D517D2D6BD5C9C713D6F603 + B32DCD6950A082279CA79274BB641A6CD3B06BF82006A9D81B4D101A0526B2E1 + 894CA42B7495085D364C77BAC2A2AE7399F8C4EC5AB7BBD7E5E173A30B5EF346 + 97A1DF1883472D60842D4216BE9503C70B3441DF48D420B37F906361F8BB5FFF + F6B7A6B618AD037CFFDA5302A6EE5AD64A80240E73D473CA7383268C2A3C6D5B + E108F791A9824CA486BDC68F7AA06646A052C02F7E34BD85D9ED6E9A38811CE4 + 900DBF56573978D5AEB032BA57543EF7A1300E6C8C354AD8E7C638A34094B178 + D98009436CE105F18BEF9227D707153C590539B5C509FE504E0DB8E1B357CE32 + 96ABCC652D6B801241D04324F4E04C33FB5414C410AA828BE0BA2A9B933C679B + 6D6EE55C67AFCD19CF76A6F39DF59C673EFF79CF81F6B3A0FB5C671C84236D76 + 78C21CF00012BAD1869F3CAAA11488A487BDE595C8E7AD2E7AB97B5EE94A31A3 + E5153579491DDEF04AD1BB0C956E90D910856F1C990316702C93693DAD16D8A5 + 2FE7D2F5AE0FF040FFCF76361E64D6C30E5CA30005ACB6B5C956F6B299DDEC78 + 1243461620AB375E588C47D78624AAEAA48A9961084CF455A2431E2F5E753C64 + 1A8F5BC8E9E6F1BA7F8CE320F790DC35BEAEAB15FB82C6D61ADFCF32C2A070ED + 177FF71BE0FC2694AF7F6DD41F182212640E02389EA0006F48F0B511A7B3C429 + 3E718B571CE317D778C639BE718F773CE287D6080A90C01A6F0C0336B331094A + 7223855AA818AEFA102F4319DA439B4BD1B93D7422CEC7ABF39E5B17E7BB40F5 + 7669BE73553F71E848AF39CF710E5D4CD4E1046BC065BEA96EA67DF31AEB7B11 + C2364CF127AF0F46307F10F60E6C646C64F379CE800679A0D929F109561CD06F + D7B3DC3B4EF73D57FF66E4EDA5360C492237940009376E8DC10942908E73D4EA + BAD7456246599DE3EAAE9AD5CF4D3CE3273FF3C483DAF238766E4641FD782626 + 36156B300299AA5E7AF15C3DEB58CF75A0085EF0C15062030A3F8FD91F4CF12E + B85DD0B7CFADEE6F1FF1DEE7D9F7B8EFBDC6D14EE8E20F1FF9BC9F38EF7BDF8F + 0AD9210D1678826BEC511219F61348F6A08514289D376F2BDE893C14BFD03F7D + F3772F1DDEDE15FACDCDBFF31ED69C87520CAF12C35F74F233D1D54716BDE9F9 + CF15141CE108B6E10810A440EA244110840418284FC4859C7EE00F3841058C41 + 0590200227300291001A8C4D019EA013FAE013FA6043D62EF82E8EF94610F996 + 0FF8740FED5470E3FF58D0044BB0CE92CFEDBE2A11426CC4A00161F86986008A + 48F4261BE08DF22E8AF1AA8B8776C1E6E88F088950BC308FF29850098D50FC2C + 2F08274FBDBA63D6FA0F0BAB0205DA0406B6E14EE88466B2A50049005CC2C542 + 8A4011CAE9D82AE7F7DA5000DA100EDFF00D6F4F0EBB600EE1100FE3300FF7F0 + 0EE9D00EFFB00EEBD00FEF30106FEFAB0EA0537E61F6864119E4869F06E06E0C + 207BE480C6822E0A2E51E8948817C26F1397CE138D2EA378A1D52EF1133331FE + 688E173C710A3A5114A5A815978E0DE48003D2E03BB2D016A3620B154C0CB9C5 + 5BEC840486065C62A74FF0488EE08C726470F7BAA01FE8701999AF0F7FAF1995 + B1F990711A6F2F1AFFAFB11AFBB01909B1F704201A77EF19FDB00BF8A10BEAA9 + 0615D146ECC11E46A2476EA386DC614874200EDAA00DE66D099530FE52B1F2C6 + AF09258FE6A6300A8770F3F6D1F31A6FF23021046840053AA1176E310B73B10B + ED845BB6452225920CCB904F0E809C3E8B7E00D123B9F1F740F20FC5710F43D2 + 0DF150103FF2240B31250B711055321C9C60609060FAAAAD1179E492B2AD188C + 01B92CAD0E3061158D2EFC840E135731FED8CFFDE82F153B3129D72FE8E20FD5 + EAEF12A36029418D296F0E21D740016AD121F9CF0E5C860486202C676666C2D2 + 2CC5728D78EA0D9C402D7BC62DB72101AAA0183B321A4BD22EED3219F3302FAB + 710FBF110FEBF22EFFFFB2F7F8E1AB0646058C201D7304DB8A4B55DC2A0840E9 + 373491FEC02F15C92FFEAE6B1315CF282D13FEF4F114770EFC42F33247933341 + 4DE80C4107ECC002BAB2FFB6D04D8E2074480F00F6277434E7CCCECC8D5CA6A8 + CAA9235D52255BB21B3DF2255972247FB338459238933338819339ED50000420 + 1C1E6085A44D3D1A51364C4224ECA6936200AEEAE01B9812FD2CD129E96AE736 + D129339113851213DD8F3DCFB33D8572FD74C1104EC0073890354B0F22138036 + B56013A482043EA73671213A0D6C8012EC5A18ACA6E8A7399593418D931B7DB3 + 411754381D542587D323D1661B124135C1611A5EC81D62A3367C2448A400B952 + C1D2666E2AD96F0AFF6661285B942845F1326761FD8E9246D7F30877A11559F4 + E66C340A74F4124BE17150001C1AF23EF38D04AE651BD2487FA6222CD1328D48 + 400B5C60A7A694A7DC2401DCA41F128010684A41E5F039BFD44BC1544CC1D439 + C3B44CC9F44BCF744CC5544D9FB34DCD344DE3744DE5944DDDF4D068A053A4EF + 6D54053BB313374C85255E251B086A2ADFD3479D92452F71167861FD78615159 + 14527B545213B54779611321D551DF53512775523DE171C4A448F34D05688054 + 83699862A0B2E80B624441078E40075855079881191840566795196E41120C21 + 14B0A9087440188081121860EA28C71BBFB41FE4F058EDF0589F33598B95598D + 1559A3F55995555AFF9DD55A97F55AA195599DB359B1D54DADF55BBD954EDD94 + 183204058C013D5E6824DCA124EA461DDB8ADBC6A01452D44541F33277AE475B + 2DF166A1D5DC73FD12D532FFB55F4793479D722A3D014C942C54A96E1ADAC161 + DB61A6225662FB4B0738A11DE6C11BE6E11AE66100E6674E05A00AD634649F73 + 643FD6644F566451566557B66455D634EC0009D2F54F1386242E0961E051C518 + A00EB2612A59F452A952527FF6521D355385366827B5688BF6687D3668959669 + 9F16613F6A61F3CD1B062C08F80BECB2166BB776427E800146EB05ECC1066CA0 + 1668C16357166DD3566DD7966DD9761B86C9072C001C5C086E3E34446F03251C + 1332E96F3D7DD46FFF77EE6F1B7553717451852E7025F51C6414709D484619B5 + 525B4D4765F4C8EC8D2BA776C9C041B41C2006FEE0CDB2AC733FD77343B7621D + E005A0C106E6611EECE16CDB566D0980755FB76D5D17655DB71C13AD23DC066E + FA94E570031E1FD3DB8832528397538517536781098237538917691F757893B7 + 5291B714D6EB0564CD72AB77C9C09400C45565B3177BC5947BD754763F367CBB + 1776C557005C377BC7177C9F931FC2C19E2CE01746AC927A4461B2B318A0613B + 57AC0ED8E01CE8D55FDF13511DB7510B1780772E71FBF73CF9557177815FDD8F + 5F77A114E220157C6058ADD78277E97C09007D35388337D88335188441B88343 + 988445B8843D7884FF4DB8843B38853958853FF8844398854F5800AA214B8309 + 05A081DA5E8354E8D74F69E11AA48013564C1FCEE11198E0128D96458F380A98 + 4089A3808999808981B6892F558A9118688D378A8FF85191F88A9B788A1DD513 + C0A03B7A41362F188DEB077D67F87CDB788DDF988D4D78865D7885E11885EFD8 + 8DF3D88EF5388E5BD88E5D388F61C05C55C0D82C00096023446DA33DD220062A + C1070BD57001D78BFB56929BD8928FD789B09828BDD8472FD99289D693271993 + 852E1B1840137E611AD25895E927865BD9955F199663599667999669B90B7AE6 + 01ECA007D2B51840B466DD750024913B43A01418CA782D19156681458F579927 + 399997B947670115FF42999A45B99AAFD99A77A10E18E0057E6195BF79726A59 + 9CC7999CCBD99C637819D3660808D9D8D4316E6AE3478264DB56CC1330E11239 + B999A3199A99F998F9D99AFF199B031AA075A1A35000A4C019A1A3E59C69990C + 62B9A117DA951F7A9CC5C0A13598188E20117C207EDDA69763A35D454219D491 + 163CE955E6350A2AE0111CF58A8DB79F535A8B397913BF58A6B7D88B691A8C6B + 1AA76FFAA6E5007212DAA79FE595FD3886853AA821FA9C1F9AA86759A25D3701 + 6A109FAA8D1D7750244814620CA11438F978B33A8A7901A75FBA8959DA89B5DA + 8BB95AA7C3BA8AB31AACC19A8B57BAA362ED0A7F1AAECB830024BAA1EB7AAE41 + D8AE35D8AEF7FAAEFFF97AA9FB1AAFC9C0AF017BB0F5FAAE0DBBAE059BB0175B + B0FF9AAF43B8B119BB1F128D90E7C06D06E0434DCC368CE18620460EEAE09E8F + 9809469BB4459BB44FDBB48D77B455FBB48FF711D67AB453FB8A633B994B9BB4 + 8D97A3A28E73E29AB7C723AF015B0C14DBB0191AAF0FBBB821FB847F9B9CE9DA + B81DFBB88BDBB9873B84C3E834C4A446E637AA19A618AC47125DC510FAF7B5BD + 1815641AAC6F7AADD39A09C67BB5C37AADCFFB8AD51BADC51AAC754182BDE38C + 7B1BBFB7820C823BB805BBBFC5A0BF1B5BC0079CC0079CBF0D7CBF0B9CC0035C + C11BBCC119FCC113DCBF131CC227BCC235F80806061AA6EF17860147B0D31D5B + AE07EB605E2BA0B5FFC37ABD49DBC45B9BB54F3CBD1F61C56721C66D3BB66FDB + C64FDB5335217EEE3BBF7BBC2A0E1CC8259CC2873CC88B9CC81BDBC893FCC80F + 5CC0955CC92D7CC9A3DCC929DCA273F917F0E03C7237917F043774430E0C6117 + 8E5817563AAB477BBCC71CAC477BCC4FFBCC5D5C17C27BBDD79C09C6BCCDD59C + B4C7FC88E5E004148DC77DDCCF0120C14B20D0853CB805BDD007FDD0139D0C0C + 7DD11B9BD11F1DD11B5DD1215DB0217DD2237DC22D5DD2375DD33B5DC0FBE101 + CED5E1A88F66EBB719ECA118DC41135C450E3CE11C66DBC54FBBC5639DD64D3B + C5693DD61FC113E4600B7CEBCF7F5D2A14BCC21D9CD88BBDC98DDDC1871DD997 + 9DD8037CD80920C3FFA16F35A6A1C37524276948556E883B99A10E8CB889CD7C + CEC3DDCEC71CCFC53DDCE9FCDCEF3CDDC11DDDED7CDCD37BCEE3C1A37EE1AD81 + BDC7C940121A3BDF057BDFF15D0CC401DF2B5DD0F9DDD1FBBBDFFB7DE01B7DD1 + 4B80E119BEBF139EE1099EDFFF3DE0055EE2FD7DE2C521E22F1EE1233EDF1B5E + DFC900E00F9EE23FBE04FA9D007C29A32789FADE991D6F4354E6210622A1A451 + 7AB4571CD7735EE7771ED709FA04ECCDDEFF1CD913BED21B9CE88D5DD0935EE1 + 1D7DE905FCE88BDEE9975EE98BFDE89FBEE91B1DE2A3BE1FA25DDA6C44CBB16D + 00A0011AE0D5B3AFDAB4DB1DDEC77BBC8F18BEEB3CDCDBFEED5B5BCEC19DDDE5 + DE1096C508EA3DE8FFE33AE241DEEFFB1EF0933EF0175EF00B9FF009BFE10DFF + EF157FF017FFF01D1FF21B5FF2195FF109A008F0D4B75C0307FBC9D4F1560A0C + 803BADFAE699C0C4717EF4D3BBF449FFC4E15EF54F9FEEE15DC55B5FF557DC13 + 4280038C61B7F7BEB729BFEF1F1FEB7D5FE9173FF11F3FF08B3FF8895FF1B17E + F80B7FF9113FF9FDDEF9135FFA0BFF86138190FBC085EC4119A4C024886BBB85 + C401F47789C11DBEDDBD02D09EF4C93DEED19DFDD31EDED15DEDD75F3E53F309 + 741FBF1B5EE325A104341E0400A284B81204074A228830A142840313824078D0 + A0C2810F134AB4C850E1C185154B6C2CF1F02248811E497EEC789264C891121B + 12807184060A0B78FFBC29B0D7AC993B77CD940D18400B6833039A523130448D + 4905A54C9A2E5DEAB4A9D4A752AB5ABD3A152B54ACBA0C9D48030E80D8B164CB + 9A3D8B36ADDAB56CDB023076E9928A4F6EEBDA254BC446A646EFDA79BB0B38F0 + D98264081B1658187189C289172F169718B2E3858A2736BE6C98B163CD091B77 + 2EF8B9B264D198278A6B581AA3B89824543C01E70D1ACE9CB49BFDB4472BCD8B + 183AE4C4D32515555426C29B0A2F0EF538F1E5CA9B2F37CE3C78F4E3A518A452 + 81E794E0EDDCBB937D2143068A69DECB1B60572650203DEE1418005B3EBED991 + 0F4188B37F3AE4FDD305F3D3E7AF1F7EFBE577DF7FF51978DA800A0608A04005 + 1E689F7D074148DFFF7FFE5188E182163E781F0862149140222A1831476C035C + C3D300B401959B14BBF5068B7115CCB8142A34D6389D53C2DD88A38D333AE723 + 8DC709C95C1D0C84F10B5DF22DC9645936A493C21A733409D82F99ACA78E26EA + 48E100307AD042657C0D919420990E8E39509AFD6554669BFC81861F9BFCB9A9 + 669A6F9279A79D7566041A686AF649129C73068AA79E208913CE10C6BCE6CD2F + D0A8B8E28AB9F9A0C9097294324B541520F7E323C7794A5C72342AF5E98C4C80 + 8A0AA84A99AAAAA9A90A478D273AF8804798B696E7430A5192776B5BB404D2C8 + 3C626DA2402481B02345AFDC81C06C7DCD3E1B21B4D2420B92B4F7494311B3D5 + 46EB6CB30F4ABBEDFFB6CF863B6DB9E6364BEEB9E7EE07823420F4130E0D3E58 + E0CD34B129E3CE35B5FD34401A03CC13831EBE3155C123A1DE68B08D09171CEA + C208377CF0A605D3E830C507CBC1C12FCACAF744C7D33CF1CB13BD88D5C7132A + 9CEC8D92647D02B20A9AE813E5942CFFB2860A6B842CD634213F21163821AB9C + B302EE48610F1165C5363434468B6513270D04320F34E04C638C1E653462C32F + 0A4CA3C02FE07402401F5D1BDD09380A6C0D406C06A86343330A801DF6D94410 + 618FD26381038D14D7FCC26B5A1822882EB78746C8A1E08443C8EE83802B8EF8 + E185335EE1DFF525DE78E4DA6618E1E0035601030D76D04B84028F36A3EF8A40 + E1368F263A84F0DBFF533BBA9E2390A1AE9AA3A9CFB94A3BEE36D6A1831D4F7C + 32F2C6DCD9B0C51A3E6C91C2253CE3E14E2432A420C3162A4C295627781C1FBD + 0C70C0B106790A8411420A7040AF3C002A8421C31A9F7412C6169718113C0044 + CC034C200DB0A3CE589D4063CB3B6594B1081B84050036A8013B1A5006762CC2 + 0106D083FFAE060C5BFC22128BE0445814A0073D18407E3600C60EA0D1877634 + E27F4F8BC42FC0660F5BE8611EEA6007309255364E2C223DC01020DCCE2289FA + E410243B84560E3BD42D20F2905BCC7297344871B91FB64B874C1C22B37AD843 + 660911044A4C6213A978C52A669189E3C2E2B6A6E82E208AA173899889D9A0A1 + 0C9DEC6B00C528C6FF00A4502906D44117A21A95EC6477232011294843CAE372 + 36E51514884C78DC89440AC0C0801B8C4F050008C3F8A20786F1716069C5129F + 0C18203EEE9147056080DE161830BE4B80E3139158641A30B986F811F07F3588 + 4423F4003703CCB00C99A85F196C013675D4AF010D784720DA61033DD8EF698D + 88840232D18048180300B5F05F10CA56835B9EAD0681C8C40E5C59063D280000 + D7604720805186A7ED0000BFB01A3B361089FF39C01E7E7357119BE5CE25BE73 + 9EF2AC673CEF09CF7CD2139FFBD4A73DFDC9CF7FF673A0022D6840F15985221C + 4144AF7154506C1329DBD8430A36080233EA500A57F9E8554EA991468BE329D8 + A5CA549B220E2A6CFFC4C7519574A4BA90430C7E47C8ED6CA193C97BC116BC91 + 864ECAC03552A029237B1106F1C94505418864F700F0849ABDE6097A801ECF54 + 80C92D6CE1065BE0D95888608B32BCC318DEB88601FA203FAB2DC200BFF8C50E + 7AF95570D8C36965B0813114000E5A203310EA80C62F4258066034A30F4140A0 + 36BDD1880668A20FF373C72F88000EA705021A0070C70C1B508317B0AD0F3BB8 + 1A27BA668B062C629C6801011299F559CF360B89A41DAD68435BDACF9262B5A9 + 152D684DFBDAD79276B5AEAD2D6A616B5BDCDE36B6B9E5ED6E7B0BDCCF8AA10A + 0B4581D7CC368C13D52627031846312855898BCEC2751243298FAE8BDDECF228 + 48DABD9127AE03B4FF98DA251291AC2A397B31D5288D85138A5C0339B5B753B1 + 18A0BDD41B8B31C200CA14680C00F300031860E65EB24CA31DBC74C036C3C65F + FB711600F6A0433697668006FC619939DB40031A9186B10C40AB2F98C622021B + C05F20305964A1853A16C1CB6536831EFF334027B806D8BC92D518956D0030FC + 46CF67B933B4E5FAAD6C4FBBE3784E8BC7A785166977AC632243EB88B5ED316E + D5E5592143595AC495890AC071465A2CD736B468E3357CC09B39EEB1A4A4AA2E + 75CB8C6689A57948365A3375AB23C81B8AB72EE90DB058A6BAD3E0F5140E97E8 + 434E53B005B012707B6BA8D51CCEF7491944320556054710B667DEB218230807 + ACC13C96E680A7E5FF2F6791B8F0816B814077C04D01166E048901300D70B603 + 1A6508023577300F1B6BAC0FB470801E80018C0396014CCD404F2406C860FB6D + C0161F1EE63BFC365B528C83B4E328006D59EBD9D52E9B14CE4EADB459DBEC6B + 8BB6DA456E2D12AB3D6D65437BB5D59636B7BD1DED73475BDCAC25F7BABB7DDA + 67C3DBDDE82EAD1812E0B934BC4674C3C8094FD2E80E5AD8C31E69F0413B9811 + 8F5274D4CC15D8C38F24D65DEC3A5C48108FF849E5900AF8CC79BC3788EF58B4 + 970215C0AD19E59DC31A8C5A2B00BC409197984627F60C872D54F40621CF5918 + 6E4055469EC506286E803AC272D640D8407F160EC4816DC04B7708DA1BC87CC7 + A90190596038AD19FFEA78C7661B1084BF48E18081A8412DD4C14B7636C37F9C + 581A006811CE0DEC801D0AC47524D2428A23529BB505C8760198ACEC723BBBEE + 7BB73BDEE55E7766F77DF0D4B6BBE109CFF7C2EF9DEE878F32B90F3FF7C7231E + F28927F76A014FF9CCAF561C0A15D11CEC050D5AF08427B42986C09501661D18 + 22A51BB56EC48574D2EEC63E8FB397982E3C71240BA872E36BC1B3CEEF4C73F5 + 89E5E47CEE840F687E09EACDA3BD65D3031CC0A0F347335A2C69588422B92767 + 0074026CD0E874195E000075A4C70163F1868517F117668E78D49D7EC706C762 + 8340E4B50C48B0C70C81E1732274E2AC659807D862BD6B00D00CCF50060E006C + D0603FB6B035E030FF37730377966779052081ED466D13588115B877164881CE + 460874378112988121888123088224A881E4F681E53677255882ED26811D4808 + 2928822DA88133288326C881C49508FA360D44F00BF6A022A5930629627A52C0 + 1B94E009DCD570AEE7704DD8704FD8844C08855088520EE7060F870A134723F1 + A00385165EBC87167A4073BF070041C07270638637E05EFD1573E4E10D61000B + 37700967B708311716C6905E1A33415495481E9733B4202C61636135D007BF70 + 407A0061E11409BC82740DA0744C834C0D500B4C434EF8F7340AD0079900080D + 00082EE60D7AA0597FA10004D600621700AD066C0AF00E9A750D633151147616 + B3A5772BB881B418FF8191177920B078BB488BB3A882BD088CBC288CF2768B8B + 578CC1088C2E486DEB968CB6487773270D30806F286004A8263A03902FFB2270 + CD006627701449F170145785B1B70759B8846656854B187B3E528E0CA7851580 + 7B9AF00BF505866911091D67676F11497CD63E38377DB4B08F6110095BA00760 + A08625538760803E5B708F70C0336608072A600191240382A67D9CB01E9CC009 + AB680B2ED70EE154030ED00E5C070D7063039B28057043049CB089C0D00EB660 + 0B5F63610DA0077F418A81A03178905965B0037A10093B900B8EC84D01D000ED + 006C4490699AD50E9C90559130746831771D788CBF688C51E98CC3B8781D5895 + 55798B5A898C5E99FF95B8C88B60F98C58898CC7A88CBE588B8B370E63241353 + C335BF207AFA9246B6D146435314DF4847E618856E90857FE98456F8977E598E + 57188585C9974B489854880A816455F59816625873FAE30306897338B7537401 + 0E37779932A0090679537DC05E3807074160038A640CD04091620191A934162F + C04B9B08087A600F60338A81109441893F64D1885220689DF00B35C08941A907 + 61C1560E603406B08AC529162F10089BF803ED300F81A001C23200A76894FAA3 + 0041B08AB9D9003BF07465117862697869996D79A77865A979E9A977E7C97892 + C79ED39678F3B96C9E259F901781993779D8D677E6096E5C599E05A004D5806F + BE33077D60365A46FF7A39410B5D46702F22477B1985D5B58E87695D175A8E13 + 87A1E70898EA880A9E50041C303D90991606100637631688163D724116BFA009 + 522517E0B00697B00617D43EEEF304DE10174F600C33AA737041A337A4001515 + 091BE0006072552FD00EE8140406D03700000D0EE000FBA5619C100991D00EBE + F9161A992469530B0EF08800000E36B0A4533A0D3670A40030A40E90064F2AA6 + 3E704D1B10049C70586921A020A804ACA5042DB85A7B2A8179EA827AE7A7BFA8 + A7788AA785FAA7869AA87A77A77F4A817D7AA81E78A730B881025AA8923AA879 + 0A838ADAA81E4877996AA85540036BF004D380A072493A5BA6652E12300C9084 + 56488581B9848739FFABB52AAB196A8E86D9A16E000B60900A6B508D242AACC3 + BA24D9D71D20C8A72BC8A82C88AC16E8A718C8A7CD8AAC922AADCC5A6DD58A82 + 28D8ACDA1A832AB86E9D1A79D64A83D32AAD9E0A81D0FA82E2806F3EA00053C2 + 35CAA00CA52329FD923ADE180FE6785219EAA1B8AAAFFC7A5280F997F90AB0FC + AA8EF1C0009A303DBB47AC0BCBB073C6A97B0AA878AA0410FBB01338B1790AAA + 8BDAA8E05A81196BA914ABB1194B0A18BBB1AB1583173BB2162BB18B9AB2CEE6 + B1A00AA9216BA8111BB2D1282FF328A6BFE0460B6A1B409106B44029DE5807D4 + 40ABFE6AB4B33AB0497BB416DA980CE0034F60AC0D2BB5531B266870A7568BAC + 79EAB21B4B0884F0FFAC05400868E0B5776A795F8BA7615B815DABB515880626 + 38A862BBA7589B82564BB1717BA8564BB70590B719A8B537F8AC7BDAAD291883 + 1768AD61ABB71BFBB7613B0E9DF339783007A1630FC510293F2170C6004727A0 + 7A444B8EFFBA29469BB49B22B0ED08B0A1EBA19B827B3160011649B5AB0B867D + 10B55472B1B12BBBB38B06628B064A60BB621BB65E8BBBB53BBBB2ABB6131BB6 + B81BB6B7DBBBB98BBCBBCBBBB5CBBBB16BBBCEABBBCDFBBB175BBC702BBCB5FB + BC4A30BCDACBBCD55BBD13CBBCD6DBBBCBBBBD132B0DC4258FB5A233A697463F + D1B341410B06600395C000F1D0707B90A1F8CB9759B8078BD9AFFCEBBFFB8BBF + FFDB84FD0B0B86F0FFABAA3BAC9DE00DC096B366F76216D907D340C10286042E + 1736A67A55BF907E6133371AAC7D66D337A1A3C039C32B84451E82160DDEE00D + 16E983C0D609A173437DF0173D6891C3509241035762110DAEBBC1C0160D206C + 8D07761675ABB7B87BB5137BB5C1BBBBB7EBB527BBBB466CB7C28BBB4A7001D7 + 6BB8DCDBC45BFCC44A6CBB770AB151BCC44F0CC6659CB7B63BBC78BBC580EBC5 + C3EBB5680CB77AEBC64B4CB7624CC53A4813A7103AD0500C3C8B8DCD500C1335 + 0F1675AF9E8BAB84A9B4A880C8870CC0898CBFB0C03B76E0C0C35A0C938004D5 + A300F3300906907E0A500C548A04C5700DCAC02BDE6000D7E00DB62905FBA500 + CAB0C9A99C369A3CFF0FB0EC0DB560036FA3A6B5E0A466010EF0CA3493500B70 + 0536BF500BF380C10A700D3630CB6053CB9340CA62F10BA340CCB530407D300A + 937037B5300907263A7FC1C0F3A00C443C0C51037FB5A00C69D1B584700168B0 + CEEBFCC4EC0CCF57DCB5EEACB6E90CCFE9DCB5EC5CCFF1CCCFF28CCFF5FCCFB9 + 2BCFECACBDFF4CCF61DBCE058DD0F79CCEEEACD0057D01DF9BCEC7CBBDD1FBCF + F8CCBDFE1CD1D88BCFFC4C08E3A0832AA07F628304CD2005AA8A8D2ED20E3A60 + BF56D8BF2FED06302DD3318DBF31ED06370DC0332DD3F9CBABB0C0001C60019F + A01DC43A09AF300FD11036DCA0D4D72C16C5C00DAD2816B5C00DA3900FB05CD4 + D080C1D7900F9308FF0093209D9C706950FA0ACE9009C3201648E00CF9B05FD0 + 9009DCD0C163A100A3C00D62310C99B00EB57042FCD5D6BC3209F9700DAF700D + 468304AFD0D6DBD409D750083640D6FB159CF930409DB001F9B034C560038C35 + 0D7D3D0FBF390A99F07E7DF00A468DCE60ABCEA31DD15E1BD1A74DDAA95DDAA9 + 3DCFAAEDDAA82DCF60ABBD05B0DA64DCDAB0ADCEB26DDAAFFDDAB37DDBAE8DCF + B08DC416EDDB56ACB61ACDDA5DABDBAE8D0620BD505660042F161B5BC65C3E9B + 7AF1400D9DABBF36DDC8DC4DD38ADCBF8309DE7E49DEE3DDDD8D990A3E90320B + 3B0DDC3009B3360AB550C9730D00C3300950CD5F93300AA33040EA900F64A10C + A370CE0070CDC43CFF094613CD847DC90030D86E5D3DD0900FC3907D0A3009F4 + 8D049BEDD8FFF70ADC20684A0D0EF18DE09F6DCC00100DCAF00AF9F00AD22C16 + 459D09F8CDD4747D0D8C4504DC7059D5030E84FD7E6A3A0AAF80CEF3DCCFB6DB + CE3F1EE4F67CD0426EE407DDD1B59DE43FDED147CEE40D7DE44B1EE4ED7CD1F9 + 5CDAFA3CE5FA7CD159DECE17000A47700982D40734EC5C3B21AF5C467006E000 + 3A4009BA50D3FD7BD3370DE7714EE7733EE7745EE7787EE7BC8A716930070A0B + 86BF6003EFAD7D957CCD664D4EC03C40BFD0D7932068953C0FB86CDF035EC993 + 300920444E52BD010BFE0BF910E939A30CDC500C0AEC0DC04CD7F3B0DFE9770D + EF0D3703C00D527DFF57E4E4DEB71C36C3E0E9C0AC319D20D52FDED581484E64 + 45E248F0EA7F110D4EEDE94653884ADDE3AB8DDBCD2ECFCDCEDBD02EED060DDC + 0D9DDA568CDBBF3DEDD27E01A7DDEDD1AECEDF9EEDA3DDDAC15DEDDA9EDAE310 + 13AE310725127A750929CC65D206C01BF66BD33A7DEFF98EEFFBAEEFF96E080C + 6007D9C1BA034FF082D1BBDE5EBBDD9EF0A41DD1B8DBEDEB8CE5AAFDF0134FF1 + 155FF1CC4BF10C3FF113ABF0EC3CF1EA8CBD164FF11E2FF2E21EEEDE5EF229AF + F22B3FF1A0308D16B07D3ED36F6A643A6990060660514851D3798EE7362DE771 + BEE73D6FE7407FD3B0200761003F05AFF44BBF16CD46F216AFF1D80EF5B0CDF2 + 559FF1285FF24F6FFFF556AFF11ABFF55FAFF21FAD509FF30984253A0ABA46B8 + 41EF96E2093312E78A2CF4DECDF33D4FF4E66DD3B0100FA980CB4CCFF77D0F00 + 45300E526FF1B750F5277FF2603FF8157FF888CFF8226FF88D0FF9835F055B60 + 075E43C15DF350DA387052C00996120F740FFAA12FFAA30F0B3A70657E8FFA4A + 7F04801F0C841FF9AF0FFBB12FFBB3BFF55D0B1376801D61D3283B1BEF40F128 + DD2807D430FAC34FFCA00F0B27F0B45F98FACBBFB09502F8B44DF1AECFF2D23F + F1D26FFD564FFD2A7FFD29BFFD1790FDDDFEFDDEAFFDD8FFF0DD1FFEE75FF121 + 6D04636E13926B1B0007147DCCF996020BC56FFFC56FF461900629C7FC000140 + E04082050D1E4498FF50E142860D1D3E2C682051AA2355C659BB708BD0858C1D + 39DEF2C8B123489017368EE4B8919046932D45963CE9B264CA8F23637AC49892 + A4C7933B77FA11E9B2E6D095288516050AB3A64F944C45F60C49A8C891352A8C + 74EA434441315ACDBC0E68464BEC0003314EC841B5678F1BB66DDDBE851B576E + 5B58B00CE958F304E25EBE7DFDFE051C58705F7B3E34510C318EA39F5BB74231 + 060AF98264CA8D4335762C99E4E5979635DF8A8CB971D2C6933D83CE78FAA365 + CCA633B346FD993448C68E475F46BD79B4EBC7B961BF9E8D3B786BC6A1AA1C49 + 8402DC2600447ED9A3A54C99BBAF03A01BE0A4231EACB57035CC05FF1D7C5B39 + A97E0D469F5EFD7A67F6ED0742B327C507875445AA2C9D9CF171C7A49C99FE6C + 2A3FA69212B0C0FE00A4AD29CEF043D040FD1A6CF040FE022490C0FF0A047031 + 0A2F38A38A049203A797E614B067007794F1AA99018A81A61829CC9283BBF166 + A4F1AD784E48C33D1D77E4B1C7F50202003B} + end + end + object bAceptar: TButton + Left = 344 + Top = 367 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 1 + end + object memModulos: TMemo + Left = 128 + Top = 112 + Width = 289 + Height = 233 + BevelInner = bvNone + BevelOuter = bvNone + BorderStyle = bsNone + ParentColor = True + TabOrder = 2 + end +end diff --git a/Source/Servidor/uAcercaDe.pas b/Source/Servidor/uAcercaDe.pas new file mode 100644 index 00000000..a8b4a07f --- /dev/null +++ b/Source/Servidor/uAcercaDe.pas @@ -0,0 +1,47 @@ +unit uAcercaDe; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, JvGIF, ExtCtrls, JvExControls, JvComponent, JvGradient, StdCtrls; + +type + TfAcercaDe = class(TForm) + JvGradient1: TJvGradient; + Panel1: TPanel; + Image1: TImage; + Bevel1: TBevel; + bAceptar: TButton; + memModulos: TMemo; + procedure FormShow(Sender: TObject); + end; + +implementation + +{$R *.dfm} + +uses JclFileUtils; + +procedure TfAcercaDe.FormShow(Sender: TObject); +var + Obj : TJclFileVersionInfo; +begin + memModulos.Lines.Clear; + + Obj := TJclFileVersionInfo.Create(Application.ExeName); + try + with Obj do + begin + memModulos.Lines.Add(ProductName + ' - Versin ' + FileVersion); + memModulos.Lines.Add(CompanyName); + memModulos.Lines.Add(''); + memModulos.Lines.Add('Se autoriza el uso de este programa a:'); + memModulos.Lines.Add('LUIS LEN REPRESENTACIONES S.L.'); + end; + finally + FreeAndNil(Obj); + end; +end; + +end. diff --git a/Source/Servidor/uDataModuleServer.dfm b/Source/Servidor/uDataModuleServer.dfm new file mode 100644 index 00000000..fe5a834e --- /dev/null +++ b/Source/Servidor/uDataModuleServer.dfm @@ -0,0 +1,82 @@ +object dmServer: TdmServer + OldCreateOrder = False + OnCreate = DataModuleCreate + OnDestroy = DataModuleDestroy + Height = 307 + Width = 382 + object HTTPServer: TROIndyHTTPServer + Encryption.UseCompression = True + Dispatchers = < + item + Name = 'BINMessage' + Message = BINMessage + Enabled = True + PathInfo = 'Bin' + end> + OnBeforeServerActivate = HTTPServerBeforeServerActivate + IndyServer.Bindings = <> + IndyServer.DefaultPort = 8099 + Port = 8099 + Left = 40 + Top = 16 + end + object BINMessage: TROBinMessage + Left = 136 + Top = 16 + end + object DriverManager: TDADriverManager + DriverDirectory = '%SYSTEM%\' + AutoLoad = True + TraceActive = True + TraceFlags = [toPrepare, toExecute, toError, toStmt, toConnect, toTransact, toMisc] + OnTraceEvent = DriverManagerTraceEvent + Left = 136 + Top = 80 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'MySQL' + ConnectionString = + 'ADO?AuxDriver=MSDASQL.1;Server=OSCommerce Desarrollo;UserID=root' + + ';Password=;' + end + item + Name = 'IBX' + ConnectionString = + 'IBX?Server=localhost;Database=C:\Codigo (Tecsitel)\Database\FACT' + + 'UGES.FDB;UserID=sysdba;Password=masterkey;Dialect=3;Charset=ISO8' + + '859_1;' + Default = True + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 40 + Top = 80 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + RegRoot = hkLocalMachine + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 136 + Top = 208 + end + object SessionManager: TROInMemorySessionManager + OnSessionDeleted = SessionManagerSessionDeleted + SessionDuration = -1 + Left = 216 + Top = 16 + end + object JvLogFile1: TJvLogFile + FileName = 'ServerLog.txt' + Active = False + Left = 136 + Top = 144 + end + object DAIBXDriver: TDAIBXDriver + Left = 232 + Top = 80 + end +end diff --git a/Source/Servidor/uDataModuleServer.pas b/Source/Servidor/uDataModuleServer.pas new file mode 100644 index 00000000..e50a1682 --- /dev/null +++ b/Source/Servidor/uDataModuleServer.pas @@ -0,0 +1,283 @@ +unit uDataModuleServer; + +interface + +uses + SysUtils, Classes, uDAEngine, uDAClasses, uDADriverManager, + uROClient, uROBinMessage, uROServer, uROIndyTCPServer, uROIndyHTTPServer, + uROSessions, uDADataTable, uDABINAdapter, IBSQLMonitor, JvComponent, + JvAppStorage, JvAppRegistryStorage, uDAInterfaces, + JvComponentBase, uROEventRepository, + SyncObjs, JvLogFile, uDAIBXDriver, uDAADODriver; + +const + SERVER_PORT = '8099'; // Puerto por defecto + DBSERVER_PORT = '3050'; // Puerto de la BD por defecto + + SESION_LOGININFO = 'LoginInfo'; + +type + TdmServer = class(TDataModule) + HTTPServer: TROIndyHTTPServer; + BINMessage: TROBinMessage; + DriverManager: TDADriverManager; + JvAppRegistryStorage: TJvAppRegistryStorage; + SessionManager: TROInMemorySessionManager; + JvLogFile1: TJvLogFile; + DAIBXDriver: TDAIBXDriver; + ConnectionManager: TDAConnectionManager; + procedure DataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); + procedure HTTPServerBeforeServerActivate(Sender: TObject); + procedure DriverManagerTraceEvent(Sender: TObject; const Text: string; + Tag: Integer); + procedure SessionManagerSessionDeleted(const aSessionID: TGUID; + IsExpired: Boolean); + private + FEscribirLog : TCriticalSection; + FConnectionName : string; + function GetConnectionString: string; + procedure IniciarLog; + procedure DetenerLog; + public + FDBServer : string; + FDBPort : string; + FDBPath : string; + FDBUser : string; + FDBPass : string; + + FOSCServer : string; + + FInicioWindows : Boolean; + FServerPort : string; + procedure LeerConfiguracion; + procedure SalvarConfiguracion; + procedure RefrescarConexion; + procedure EscribirLog(const AMensaje : String); + function DarNuevaConexion : IDaConnection; + property ConnectionName : string read FConnectionName write FConnectionName; + end; + + +function DarRutaInformes : String; +function Encrypt (const Source : string) : String; +function Decrypt (const Source : string) : String; +function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer; + +var + dmServer: TdmServer; + +implementation + +{$R *.dfm} + +uses + DateUtils, JclFileUtils, ActiveX, Forms, Registry, Windows, Dialogs, + uSesionesUtils, uServerAppUtils; + +function DarRutaInformes : String; +begin + Result := ExtractFilePath(Application.ExeName) + 'Informes' + PathDelim; +end; + +function GetNextAutoinc(AConnection : IDAConnection; const GeneratorName: string): integer; +var + ds: IDADataset; +begin + ds := AConnection.NewDataset(Format('SELECT Gen_id(%s,1) FROM RDB$Database', [GeneratorName])); + ds.Open; + result := ds.Fields[0].Value; + ds.Close; +end; + +procedure WriteAutoRun(Name, Value : String); +var + reg: TRegistry; +begin + reg := TRegistry.Create; + try + reg.RootKey := HKEY_LOCAL_MACHINE; + reg.LazyWrite := False; + reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); + reg.WriteString(Name, Value); + reg.CloseKey; + finally + reg.free; + end; +end; + +procedure DeleteAutoRun(Name : String); +var + reg: TRegistry; +begin + reg := TRegistry.Create; + try + reg.RootKey := HKEY_LOCAL_MACHINE; + reg.LazyWrite := False; + reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run', False); + if reg.ValueExists(Name) then + reg.DeleteValue(Name); + reg.CloseKey; + finally + reg.free; + end; +end; + + +function Encrypt (const Source : string) : String; +var + i:integer; +begin + Randseed := 28; + Result := ''; + for i:=1 to length(Source) do + Result := Result + chr(ord(Source[i]) + Random(10) + 1); +end; + +function Decrypt (const Source : string) : String; +var + i : integer; +begin + Randseed:= 28; + Result := ''; + for i := 1 to length(Source) do + Result := Result + chr(ord(Source[i]) - Random(10) - 1); +end; + +function TdmServer.DarNuevaConexion: IDAConnection; +begin + with ConnectionManager do + Result := NewConnection(GetDefaultConnectionName, True); +end; + +procedure TdmServer.IniciarLog; +begin + FEscribirLog := TCriticalSection.Create; + + JvLogFile1.Active := False; + JvLogFile1.FileName := ExtractFilePath(Application.ExeName) + 'ServerLog.txt'; + JvLogFile1.AutoSave := True; + JvLogFile1.Active := True; + JvLogFile1.Clear; +end; + +procedure TdmServer.DataModuleCreate(Sender: TObject); +begin + LeerConfiguracion; + RefrescarConexion; + IniciarLog; +end; + +function TdmServer.GetConnectionString: string; +begin + Result := 'IBX?Server=' + FDBServer + '/' + FDBPort + + ';Database=' + FDBPath + + ';UserID=' + FDBUser + + ';Password=' + Decrypt(FDBPass) + + ';Dialect=3;Charset=ISO8859_1;'; +end; + +procedure TdmServer.LeerConfiguracion; +begin + with JvAppRegistryStorage do + begin + FDBServer := ReadString('ServerDB', 'localhost'); + FDBPort := ReadString('PortDB', DBSERVER_PORT); + FDBPath := ReadString('PathDB'); + FDBUser := ReadString('UserDB', ''); + FDBPass := ReadString('PassDB', ''); + + FOSCServer := ReadString('ServerOSC'); + + FServerPort := ReadString('ServerPort', SERVER_PORT); + FInicioWindows := ReadBoolean('InicioWindows', False); + end; +end; + +procedure TdmServer.SalvarConfiguracion; +begin + with JvAppRegistryStorage do + begin + BeginUpdate; + try + WriteString('ServerDB', FDBServer); + WriteString('PortDB', FDBPort); + WriteString('PathDB', FDBPath); + WriteString('UserDB', FDBUser); + WriteString('PassDB', FDBPass); + WriteString('ServerPort', FServerPort); + + WriteString('ServerOSC', FOSCServer); + + WriteBoolean('InicioWindows', FInicioWindows); + if FInicioWindows then + WriteAutoRun('AdminPV_Server', Application.ExeName) + else + DeleteAutoRun('AdminPV_Server'); + finally + EndUpdate + end; + end; +end; + +procedure TdmServer.SessionManagerSessionDeleted(const aSessionID: TGUID; + IsExpired: Boolean); +var + aSession : TROSession; +begin + aSession := SessionManager.FindSession(aSessionID); + if Assigned(aSession) then + SesionesHelper.DeleteSessionObject(aSession, SESION_LOGININFO); +end; + +procedure TdmServer.DataModuleDestroy(Sender: TObject); +begin + SessionManager.ClearSessions(False); + HTTPServer.Active := False; + DetenerLog; +end; + +procedure TdmServer.DetenerLog; +begin + FEscribirLog.Free; +end; + +procedure TdmServer.DriverManagerTraceEvent(Sender: TObject; const Text: string; + Tag: Integer); +begin + EscribirLog(Text + #10#13 + #10#13); +end; + +procedure TdmServer.EscribirLog(const AMensaje: String); +begin + FEscribirLog.Acquire; + try + JvLogFile1.Add(AMensaje); + finally + FEscribirLog.Release; + end; +end; + +procedure TdmServer.RefrescarConexion; +begin + HTTPServer.Active := False; + ConnectionManager.Connections.GetDefaultConnection.ConnectionString := ''; + + ConnectionName := ConnectionManager.GetDefaultConnectionName; + ConnectionManager.Connections.GetDefaultConnection.ConnectionString := GetConnectionString; + + with ConnectionManager.Connections.ConnectionByName('MySQL') do + ConnectionString := 'ADO?AuxDriver=MSDASQL.1;Server=' + FOSCServer + ';'; + + ShowBalloonHint('Conectado a ' + ConnectionName, biInfo); + + CoInitialize(nil); + HTTPServer.Active := TRUE; +end; + +procedure TdmServer.HTTPServerBeforeServerActivate(Sender: TObject); +begin + HTTPServer.Port := StrToInt(FServerPort); +end; + +end. diff --git a/Source/Servidor/uServerMainForm.dfm b/Source/Servidor/uServerMainForm.dfm new file mode 100644 index 00000000..250e6315 --- /dev/null +++ b/Source/Servidor/uServerMainForm.dfm @@ -0,0 +1,1077 @@ +object fServerForm: TfServerForm + Left = 806 + Top = 611 + BorderStyle = bsDialog + Caption = 'Administrador de puntos de venta - Server' + ClientHeight = 255 + ClientWidth = 371 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + OnClose = FormClose + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object JvGradient1: TJvGradient + Left = 0 + Top = 57 + Width = 371 + Height = 4 + Align = alTop + StartColor = 2971346 + EndColor = 4828405 + end + object Memo1: TMemo + Left = 24 + Top = 72 + Width = 329 + Height = 129 + Lines.Strings = ( + 'Memo1') + ScrollBars = ssVertical + TabOrder = 0 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 371 + Height = 57 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Image1: TImage + Left = 0 + Top = 0 + Width = 371 + Height = 57 + Align = alClient + Center = True + Picture.Data = { + 0B544A76474946496D616765F6750000474946383961C201FA00E60000FFFFFF + F5F5F5A92824ECECECEB743DF48545EF7B40DEDEDECD452DEAEAEAD0492EDC5A + 34FAFAFAF2F2F2BC2A26B02724E5E5E5E26236B95B55E1E1E1F8F8F8D95532FC + FCFCF5D6CAD4D4D4F5C8B5D1B5B0F0F0F0E66A39C23428D65131EEEEEEBCBABA + FEFEFEF7B192F49366CB938CD34D30C7726AC63A2AE96E3BC7564CD26958EEB5 + A5F9E9E3D7C5C2C93F2BE46638F8E1D8D2867AC9C5C4E05E35C03027B82725C7 + 453AE79A89B9322ECBA59EF7A47BFCF4F1FCF0EBB93A36D8D5D4B44741BF2D26 + EEE2E0A22925AB3934A7302CFEF8F5FEF9F8C33B33DB5D3DB52724B12E2AD251 + 3AD9CFCDE47D60FEFCFCBC7D75BD2C26EBE9E9D6D6D7FFFEFDF7F1F0FEFBFAFD + FDFDF3F0EFE8DDDCFBF8F7DFDFDFDED7D6D45A43F4F4F4E0E0E0DADADAC94E41 + F9F9F9DF6648EBEBEBF1EBEAE4E4E4D8D8D8EDEDEDD94E2FD95738C53729EFEF + EFFFFFFEF3F3F3E2E2E2EBECEDE8E8E8F7F7F7EFF0F0CDCCCCF1EEEDE7E7E7F1 + F2F3F1E8E5E76035E86B39D1D1D2F2F3F4EEEDEECF3F2AD2D0D0F1F1F12C0000 + 0000C201FA000007FF800582838485868788898A8322173C5300919293949596 + 9798999A9B9C9D9E9FA0A1A2A393560C717F6763670D710C56A4B1B2B3B4B5B1 + 8323B887B982BC05BEC0BABDBBC2BFBF3A193046B6CCCDCECFD0D1A50C011F70 + 1075636B6D71161621E0D2E2B4E02156E7E8E9EAE5E3968BEFF0F1883A8D3BED + F7F8F9FAA2A601677513DC9481A38D5B180BB0F629BC64C502030A7102489C48 + 31401C0A0713EA3336AC23C78FC10C8504590CD808643C16AA5CC9125AC30003 + CA68D1E265421908633E18D4D8529F290A5DFEAC3933A0A8D1A31FFE707BB54F + 9ED3A78B4624EB49B5AAD54DFD621ED8BAD58B9B6C6B5A85796525C4D567211C + 024D05A70E843270FFE3CA850067C0862EDDCAE283CAB76F2F1130CE0A1EDCF3 + A556AE5D05D649F0A141000A0C2C10B665254C805409EA947133C18BE7CF9E27 + 88BEC9F84F808366DBF95DFD54C785296C26CB9E2DAEDF3F2D880FCCD4127031 + ABC7DF688B4A4BA1CD87CC9BBDEC5ECE9CA6CD3A701ABB4A2D8EB5F577272F14 + 7122BCBB77592FCF40505ED38D4037CA0FD88490C02EDEC87ABF33B410A6CB86 + 319A95E35E0E9A79D7E78C75414170D22462006B072A9260010B1E825211B1C9 + 27E18498D8564768742590001C654C3053796580F51E4F1486704A030370881E + 6E5B3967DE8B9C75C6E287E6E1F44737D55DA7E32E52C1C00377140629E44B1F + 5CE8C5408DB5B1C6FF186FA597581DEE0D489D7CE05810C006097488988B37D5 + E1A59710BCB5998C5B0EB4018ED10CB2608387ACA9669B6F1AC2A6200D9E944C + 1542E639615A71AC0107676E24D0401861C4A1247E7079A8DB04741574DA2B53 + D26662351C7AC11588D02530C651638CA1615B6FADC8951603AD110042D0ECA8 + AA21F4C050849EB07AC7E7067FDA344617AF3864E8922A5ACA9B798B49170689 + B3595964194E6AE14686037CB0C6061BFCF107B46B7C4094A76D71C6E2015E45 + 776AA4B53028EE81E48E6B6EB9E89EAB6EBAECAA5B0032F6C42AAF6CE650F047 + 029C95716B59E09862E87DD7ACB8DBB28CB502293B839913C01A00EDC75B8839 + 6DD0461B5D54D445FF1B0D48BBC150F84140E6568C7E100003E0CE42679CE29E + AC72CA2C13E2A69C28BFFC4B062C4032EFCD67D57B6F876524D0C637E5985868 + 5067B4D5A1AF006E13471C631178D5A4D6B871E9570557BCF4D5584B74710319 + 7F304002A1A6A76C1D67E04AAC2CEBA6DDEEDA6AB7CDEE0880155132CE742B64 + 4E180D8CD161A07F8411B4390D3D74D97110B8B15F4D21367B1744929D654535 + 855BAADB57EE5D440146845E0ED1D25A6F3DED0763043CE3047588EC342D32A7 + 1EF3EA2BABDE7A21705FB083CD75D7BED0DD79EF0DC70614F0FB779510357046 + 669CE977A497496D70EA3973EB034E181B5CD8E29170B0C27464D833A03DA161 + 5C1E5144124DDCC0FF50C46F1B72006793E2F6FA6CB7CF3E8376C280A7EDF43B + 5F59DE80C2F147EFBF07AD56000D009D8A6612104611447990499FF318D005BD + 4DAD7AA6699A37B497BDED758F735A9B98508AE6B119B9010E6D600033DC47C2 + F795B05DBF004CBCEAC7C271E82C4B36D1DFB0FAF7B78614AA0DF7A983E166C2 + 2D0336E6348D5B8905FA0410AE7CE50C6D78943796C8C4EC656E7301B818C6A6 + 95A20ECDA80C1FA040F3426100727591415FECA217C70846328AB18C683CA31A + C3C8C60421830555D8620BE7188B17022A017DF31D0DFD770AE3802D39B8395E + 7BFE2020F8C8112DF6FAD37E488744A631511D4C748805A1D805298EAF8A8A52 + 8FA098823A137AF2FF84EF938AEC8044C752D6C28ED4CBE31EFB674343798D43 + 1EA2498D08B28611EDE3710340CFA26C3432F8A80392137448E6302845A1202A + 3D5E80C0194676484E88F199D08CA634A749CD6A5AF3406F7442334DC9CD4CD8 + 312078E4DF2A69D89038D80793DBF20A4E6A09996DD682017FA8038B8E84C791 + 2D9179BF4B47301930CCCE4D917002FBCA1AE2A0C04FACD18C6D7C661ADB5846 + 851E74A1647C1760E2D8CD8A0EE77E7A0BC8EEC4394E1AEAAA0D7F48D15BC8F4 + 1CBB180452D2A8D707CA60C4D201311DE18844D0F4E910615E302295C4D80686 + D7416EE9AB0B418CC535874AD4A256B309B1939B4597FA0913B5610085FBE099 + 80D651720AF3321CFFD4A52C43543057147416698189D474D3B31BF9D27792A8 + E1399648C10B4EA498A0D321D2E0D00092CD62A80DB5665EA3B9D7315ED34E3C + 981F5307EB4D6A14893375182842AADA51FA5C89A7C85A0EC174E2557E35E37E + 7FD28D17C8862B6FA023A6699DE95A9DE8D6286A7028D798408B20B0062DBAF3 + 12468DED350920DB2EC68E07AF252C37ADE4A70EB974B1E5680842F458557F01 + 10A05A7D4E4E4C33A0F8D462880CF350B74CA5BDE15A76126A156E5B6F6A5A9D + 2EA9702C2AC319BA91DB4AD4F6BCE8856613DE958C65E8F6BD941822AD6A643A + 3DD6D4908CED9724E320BC3F1A6F3D1004627931C140A87AC85666F52C5AB12B + 5AE14AB27B10C9A0FF7707A0C3F00E6079B230006D69DBC50D6B588C1CFEB087 + 3DDC611183F8C4252EF1884DCC61418820032B842F7CE5ABA2D2E5858FDD1BCB + 59F36B0E6AFCE1389A91116E7CE89883004D1661F843A5C666BDEA02371CF944 + 075BB7E73D9C8A6F5A458BEC017AD686616538BD6046EFCC5820E332D31858A6 + 7A725A0A15458B60E460F935EEF83A66B84591E60C84F4EA80654AC458226929 + 35C52739D7BA4F7E7A4FC219DB29D814C5B7016578C59066B1A4493CE94A47FA + D21A7E5760CA3CE385C132B1372E87430230C506546C2CC4EDE85A2D631CFCD4 + 994674B10B70F61C02C8E9E7834A73B2A0594968D26ECECA535474E494B5D1A0 + 8A42C5964671A59FFF19624C3B7BD9AED90EA7757B0A3F2156B17AFC09A9B996 + 448BE878B83C1EF5A13453BC992CAB2E7771A47339814B99F83401E9A6A08279 + 4DE8094E929853FCDC31790307C53E5AC3047836A4039E6C81175CD23D8AF1B4 + 2DCADB4F635BB4DB035F4EAD0619AA325698FFFA5A937AB82CB018ECAB94C065 + 9D9309EFF74466DED9AD3705F9595AD3664CDFB0E44D624F250B83DBFCE037C7 + B401EC54B3853315BAB59AB99A67EA0D88943A89154FB5AA1DCB96CDCCC82B8B + 61E7E932D1EE40B227DDDF4679BFA43CE57B5B248A9E839600AD48BA818A3016 + 014FBBDAD7CEF6B6BBFDED708F7BDA33AD0357F97CA90DF7ADC8E0CC4AFA00BB + 62DEAEAED2572938FFCC846DC8109398120BFAB8318CFCEA492494BC7FC9757B + 4F32C219E4DAB4381673D2EDBDE638C739C1731EFAB96F185E7767781CE67BBE + A1E7F3C114907012D5CDE3C059A6BF3A8CA55706D255D4540826EEA6A7D2DEAC + EB5F36F1C1C394F895A935BC20CBDCEC35DFB0DCA74FFDEA4FBF0934A35DEA4B + 69255AF9B66C9149F9EBD90CD23F985ADDBB2E2E35C6879C5806843461111055 + 430EFC4022C93197D3F1C969CA56E473B7BB2FB7316BF03572C56FFE86760067 + 7D6F97806AC780D5E7806EF72E8EA07DDBD74267B62C03D06516471F97835F7C + 14619504786EA63DE9B74A0D113C4BE2162FD2195F511711E40D911207671059 + A4024178917FD813FF49FB847C55F65657B6795E03362B22558E867628A08048 + 9884D6570037A01D15C87D57A222109081A8D12FAC766A7C07380F86535CD300 + 919785E3245C37948280541EECF11B45280914B006E3616E5072176E26793535 + 6592644110F63D60873189B606D522528C465707117D4A388884E8765291124F + 38471738851A185CF5C135155371E0564382536A9168649FC558FE72282AA27B + 93A53C19010EF6822FCAC128091016166139FA775F2BC7723DA87C9A472DD6E2 + 6AE9F1539C440A697784BA4800BB1870BBF88BB9188CC07884BEC88BC6588CC3 + 688CC4788CC6D8042BA00C7B9688F2D17D52380083627182D33912E14816D72F + 86063E60B78D4D33FF78ACC44FA4B60129927B047413E85648FD502407767FDB + 781192D78ADB75875783681AB331D6E25FBAA14CE4258885389085C85E3D278D + F473668C628DA8165C6A614E2FC70D151765B60791D2327B1E585CA660196C01 + 5E1F723CD6C83496315FDC423984348F98638FDC838F5F977989C68F44912D81 + 9458FC5373C97893CA989338B9933AD9933C8902B1333B08693B79B7906DD05C + 35E4585DC06D78713D5AA75F43833114231190B17FE4F83B82A368B9E719BCC1 + 1E1F102DA9504434C11EF13711AAB8924FF48AFE148B02E83588124B811242D1 + 28093FE99376599778799739B9732BC002EE35947BA209D4C0309CC18849874F + A3555A527489DD68FF0EC28479175349DEE67A7B143811114088821EE5E12570 + 902D92432A64A3148077359A539ABF068E79186C02C831FED595E305729C8002 + BA289BBC489BB2799BB6A98CB6899BBB398CBD599BB3199C3AF99B06904D8029 + 2169815296C05BB937850D7098BFE48DA7B094D2E218B4D777A7B06DE68717A1 + 587B9B0864A2F291FA712964A91466499A55C639E09853CBC787D51284CE3736 + BC339774099CF6799BC3299CF8B99FB9E99BFAD99F77999BA2F42AC759155562 + 68E1175FE6F41E30580AABF727CB320609E66043D74ADD6535172178BFF3908B + D994C437898D359214A64BB9911B63A30D5E2899DF9335A8C99E7A382D6D398B + A9B51F7C1306B580FF021C709B392A9B3B8AA3BCF9A33D1AA43FCA9B42CAA33A + 3AA448BAA34D7003198088055A1816B01677E16593C00028E228542A09780343 + 3D038A27F748BED36B6E254553994049F998C056A61919861CC9247556A28861 + 130970061233956679A76F65499AB779EE491442283603D137378AA4848A9B79 + 50A8889AA8B279A885CAA8F80937CA40814F7A0FFA959D21D599224322143083 + 54231D7016066DC024726A2A46765F73F894BA426AD5F985D6954F82439DE699 + 74C515A541E16ADB322A3C444067182D14238216C39E5D282D7CFA01C44A805A + D2225FB17708330A2870A839EAAC43CA017990A3D4EAA3D00AADD55AADD8EAA3 + DA6AADDEFAACDCFAFFAD28600037A04293EA137EB794AF5438FA823E94100709 + 508A5C956B0801AA06D6A58FA25D3785119EF537180776A3498FE1478985B2A0 + 53D990ABA42B44F396255A1E99A42C671816BD9AA72EFAA2FB18A3C31373A3D2 + 2DBFE17BA370A820DBAC3EBAA8221BB2210BAE272BB2E0BAB22A5BB22E6BB2DE + 0AB3204B004D8012E78A0F26B22BE9681E9EE10663E0AE9300AFBBB199DA2020 + 8592371ED3A5EA2649101199DCC82F34A53D11A68718D998A3F510E6346B093B + 9299F9315303266F0A75736A7EBD1A821373B6C17AB1EE692D22F5A61B7B6E9E + 0A9B9630AD79E0ACD3FAAD754BB7752BAD76BBB7758BA3772BADD41AB884EBB7 + 829BB7820BB886ABFFB777DB048DF09737DB0C8E89B5E3566E5C3101FB420901 + 900033627F6F282D5926A7CA137E81137B7A78834DB37F33C54F16E98581F794 + 5562195A3B7E00F40F6E8BABEBC11803F8279F79676B40B667AB87690B2DD4F2 + 9EAAB021E005A72D628ADB604FD7C5097B0BB8D92ABD2DCBB7E17AB8899BBD81 + CBAD843BB879FBB7897BAD742BB848957D91EB0C9B483E2AC8955CA91E991BB4 + 9CFB213CA44E9D89BCE8A1B42453A9B147A695B434B24A7458BB9E80F7BF0EC9 + 4F60080E0FD106CD47A25B22B694456AD63635B19614E6E785E2B3A7305ABC6E + 69349DA1BCA30220783622DBC401824BC2E36BC2D88BA3283CBED34AC22EFCC2 + 307CC2251CC32ECCFFC2D9FBC2742B064CE808F479BED370254C7234E41110E5 + E6B3402B0971300607661E42561E4CAC1CA5C24CAB4B7E2F676A8F6195C6C7BA + AABA9DD7195C30D53FF63A6CB73A39038167F6346AFF20393D341039F12CD539 + BCC5FB9E5F932D99A459EDBB255B856E40D409835BC3348CC37E4CBD33DCBD28 + 2CC8E3CBAD30DCC785ACBD0400A990EBC3A160999791223BE4C45F3252CAF2B3 + 24120703D0195D022A961BA7D91041F855BA10D985185A8F43F73F541B875669 + 82E6D027E361A29BD91E08848D5D10134E529299B20ACE42BC7C48ACD6722D1B + B2BE1F2C10712164251A43212CAB9800C32FE0C2D1FCC2D15CCD1C30CD892CCD + D98CCD896CCDD47CFFCDE0FCCDDC9CC852A17090EC0939DB6A01632900D6C63C + 851E46BCC99D6C8A67C087452357261AA14AD39D930B82C13B954E996D68EA83 + 033CB05EECC5D4201EB72A4B5E699D19690589842C88B17BD840100370066740 + AC185D149E52CC983CD1A4010799A18E25FA30B1868A817809355CCD748BCD2F + 90072F1DD332DCC2D23ACD2DFCD2248CD328ACCD83CCD22B7DCD341DD424EC8C + F273CEA0D00F58D2418BD433CD62C5C22357F1FCAE9D4C39D659BBB0B4CB0F83 + 6E5F18A613B4BF2F679E4E794F90648EF956B5509B898193CBEE7629F7A7675E + 0C347937C666481722AD219FD2166E312658AD5C191D84EBACBC0F132CDC3075 + 9100CED67CD82F70FFD886BDD88ADDD88CFDD88E1DD9906DD88DDC5E46AD09C9 + 197BC2C321CE0117D01131D60914BDE5159A2CD535027E3604C4A06245CBCB7B + 49C19D70B6911171C1002DB020DA63FB7BB6A95CCA95DA402C352A519CD232E5 + 984053195D600D1D52C78B621E7011266112173CABC69A756E110384045838CA + BC25BD911306D1AF9110D3860DD3300DD432CDD2E52DDEE61DDEE75DDE8C3DDE + EB4DDEE81DDF2F8D02632658975D0910DD05BC02480433006E4CB678416A5143 + DA471C099C5C9819787639DB001BE387DA4DDDB916A615E9724C99A193385A18 + 37DB67EB48FDD2DB50F574CAB43C910238CCA32B01C4C1632C9EA2D1195C29D7 + BD51175F099602E8FFA779DDC1B42C1067C85CF90B0089DDE33E5ECD3F1EE442 + 3EE4428E07441EE4467EE43E9EE489CD0162B0A4B273DF94D063A80055020375 + 63A078FE04784F8D2C511DB4B9444FCF6916C411997356800D9C78B06D5D6278 + 99C26AC51FAA6050AB942F277F1D0E38090D01A353077F7076534EE2BD664EE8 + F847CAEDC1266AD204F195C2BAE830BAC1E4369EF9FC6752C2E390EDE3938DD8 + 3D6ED84DDED896FEE38CBDE9950EE48D0DA9042AE5FDA0248B6667BBDA6D5B2E + 116109CFA50DE6F78B47DDF010F6E12C4AA1536DAB5A710A313FB478072ABBFF + 9CCA984874DDA3351C6E0E5B67250ABDBC7CEEE77FEEC5AD74EBF65B3C907EE8 + 5CC22C8ACEE88B2EFF8B03802DE466E313FD4148E465446EE411A0E43E9EEE4C + 9ED8E97EE4EFFE02ECAEEE45DEE3F1EEE36200376466EA96B106C4E37E7441A7 + 162CBCDCD66D61E9E5B18EC4B924BAE1E3EF6132CA6E765CFEB8B1A4E1DFDC09 + 5CDA157BDAB99D93C9E6146AC018DFDBCDBE28A056506F9DAE97143A5E021731 + 021A35F17E5DA22119FD2CC45BF3367FF3FDA882294E3D53C5E3F4FEF3ED6EEF + 4ACEE4F7FEF3F2FEE345FF026240004CBA03F67DBEE5F4D42BA24ED920315696 + 686FDCAB2105D5096FE0613E10FE1D573BB490CF1919470B6447B32D59EDDFF8 + 7756A69C6FAE2BB0BAF6D68829F27A3E3DCA0454F864094949C51B10841E2D26 + 71F1F0D04110190DFF96177BF3C44BB6130152710548131DE2221401949FEE96 + 4FF97860F9F24EF947AFF99EDFF99BFFF9A20FFAA35FFA9C7FF9957FFA2F6000 + 8D805B903C290EBF43E756CFD639DB19FCC6A61614234AE09A1AE61D770DC7DA + 158C6864E6784928FEC15C85672735E7D948A6B53D8E0D165C760FE2542878EB + 165AFA6B5A42E196D8B221F55BD79BD22C347FF3EE59FED0C2F859E3F8A1C3DA + AB7561937FF4E84EFAF21FFFF42FFFA31FFF9A8FFFF06FFFF30F082F11828483 + 2F4D23193046008D8E8F909192939495969798999A92210C011F756E135A5E6E + 75631B017161AC716D1B6B6B1B1B7FB50D0D6D6D7F03A1A563015690140313A5 + 6E65A25E5ACBCA07FF1310630D141656160C14715D7F6B6370651307E107A46E + 1009037F6D710C5621EED50C6171015D6D0DB56D5D01610C16FEFE5602B673F7 + CE5A973310B4842305ED4F1C0AFC0086A05430DE3C7B7F60ADF9F0E18C478F1C + 39C69235ABE4AC912669FDC1A5EA21056CF3B47DF0062EDC843A670230001021 + 029E9E83800A15FA7328D0A246870AFA895450D2A34F813AF549B5E9A11B1958 + 4CDCC4B5ABD7AF6031596170B0CE282F65CCAD51D70F9EAB35673E90ACB532D7 + 065E6E7C017314C2429704CABC286356AE4E9D325E0EA08D368DA0356C0DD60C + 800321AFC28513CAC019B3765F3F6AFEE2050860EF563E5510F97D1618B0E2C1 + 840B17FF6999BAADFFBB4915E58DAE77EB1EDDDFC06BA59C05DCB4BE380F5929 + D7DD6000849ACE20E4B4C0B350A19E53AD4B0D8A9DEA54A14BB907FDAE747CD2 + ECE6C3BF1053002B8F2961E3CB9F4FFF91A733A148693EE390C2E7D0714416D7 + 5CB6D88557290304F0880571AC019B385A9493C007198D5186425E40238D05EF + 30E0E1451B9C91C061A340E886291336A08A87A079A81B3DB9C4881A8BFF0814 + 42357E21741943633884DC8F10D9B61524EFC0130636BB95D61B5DBE05579C69 + A78D06646AAC20D9007E6E8873D3073AF1141550337C09E6984285696604613E + 75669A62AE19159B623471C3053BD467E79D78521407288369B64617FE59139A + 870108281781E9BCFF32462F6EFC124C2771FCE18D388AEDE7D0350D24E00686 + 1AC601DA3FFD30709164245E160E5AE69CB14117AB78F8998B17F9D600ABFE85 + 5A634006E9185B43AAF42A6590D4DCC6C98DA1C913533D31C6D8DBB2CBC6D8C5 + 712D21F7D2B42F2147DA95A168090197D419C566996D0EC5A69B6782DB53B962 + 9E8B6652E86237C20A2C54015F9EF4D61BD68D61487A969F3A718823A801C275 + 2881B770D3CB04094803D94C88693141399BADBACE8D1464BAA962100CD04018 + B70AE48F3C6D70E38D28A64608C16614D24AA30547C2888B3E41BA2A288E64E9 + 3A4E863DFEE82B6DA1B64611B1F1C0E4EBB344174DF46848CF3325B5D52A4DCF + 3D586A59C707EB78FFB9EE0C58839935D6E45E3D66D7E8A6C935D85E8F5B369A + 5B93198118EFC66BEFDB7067D249176324845602A944F40FA86114FAC1000392 + 444BC175E735011C6B34B0C1A21034FC0C1CFCB11A915B7F68AAD0963AFDB777 + B1A4DD35E237A67A91591D906FD0460081F23DCFAFAAC96C6B185D38B723CEB3 + 396DBB4B930F194941D65469ADEDBD02FFE3F0D2BE5425922E678497B6DC0200 + 76516B420F261E664AAF2EB9D2574FF60CD4A3097DF7D1878DE60B2824B28313 + 71A7AFFE820138378A66798726A8FCF234F077E07311DE4B86708C5813397540 + 876770B5390A54EE626E401CEA6CB51A8F89AA0B91E9C6371263A2930D2071AA + D05BEFA8E5AA0E5AFFC3456D90DDAE7236BCE0052F3912A9C48D681634A6C164 + 692E8409D3ACC59B8CC4627936995AD5C6C6C31EFA906B0BF821108548C4221A + D1888398539DD6C744B831E00F6611CCD432C7C25789C67E8013492C6641B8CA + 08E618DF50CC31EA9080CEF48320FF0A8827D600872C69017E0118D407A9E140 + DD6CA31B8D2BD1A9209680C8B50A541D0C64202910C207F1A876D69252D258C7 + 229FE166851F3C5E0C2739496B61A42437CC964DB61547E7F5106D66DA1A1141 + 89441F829294A62C222A45393602ACE0024568A22CE915860F34CC0D09F843EA + 04C5408BFCE16F0308C916556230CB086630285A4BAB3407AAD050A00BA000C7 + 1BC7D00506F2F29AFF4103D119E0D00B4A39CC1490FB833E34B8B750C5C35547 + 6A40DD66D710E2995078C00AD6CF08188F2335AD78337489F19A568F8CA48454 + 59CA21977632C4B105116B072DE80C126AD0853A3488101D22431DDA5084F230 + A2166DE844311AA715C0609620A5CF8D02009852D4610DFDB2E67F44F387338C + 218B0353C90712E0456FDE4463EBA06333551A8F10D621315A38E93A5824485B + 0DCA8E1FA81BE84227A10BAAA856D8FC203A03642176F6285AEFCCEA8F54132C + 611109922EB2E73D8987CF6A8DE6922839090EA3D33C2438D4AD191DA25B8308 + 578ACE60AE0FCDEB46EFCA35BCFE30A11855685C358A3502CC8911214DEC57AC + 90AF3AF0A8019E92FF1F4FE5D1D297C6458B321D515E2074B70D44D6633B2D6A + 002A77A103E012B22B15243683F6B4A4520674E2280504CC91B287341257E6AC + 5F5547E8239D094FABF16C8DEE1A81469A1D8FAC65155A3F35925658AC157304 + 8DA874F54A5D882E60BAD2BD6E7517AA5DEB6277BBDFF5EE7691202718F060B8 + 8A4D2F45EE038152283050AE23AA8B46EB52C05D7624B598694D17528E3354F3 + 5F922DAA6AB2C146706468006D9886548B2AE096E94244A1D02361C82897D34D + 8E9E165167696FC62B9D29F2C33B5B9DB41AE9D5AFE2369B649DE16EEE3192E6 + 3A57936CED6478C14BE319DB58AFDDAD6E8EC51BDE1DCF806D1E8DA57A874C09 + 2B18B08D111A431BFF22A2525EB2D4A563F888306731D36EF257A8D48187933B + B81CDFBD263119E2568019ECBA6265E3979FB34C6CD3B2190CFE51751AB66A6F + 7FA7D53AE34E48E8252E3DC5BAB4D5F106165A1CA65A61BCA5AA5DF7D0884EB4 + A217CDE8463BFAD1908EB4A27F7C0378A18FC8987E84153EF19C0C9D61A84D66 + 60DF2A6BD9CBCA651622AA4CC9CA70D238DEA897E8ECF2713780E4039421014B + 5E2D993DE8220AD0E38E3485EDCD463721D3AD02CEBBE5F0557D6B673B278746 + ED78E4892569D66BD9B0C52E0628F3645C631CDFF8DBDE7EA88FB34BEE70F778 + 011168820E32B0C44C67DA2F0340CC4DD6E0A9A2AE76D4501E807D43826A9A5E + ECCA2865405FB61CFF56E5B83040BC30B0503936E640CA9A155C065195857D33 + 700AB056194EF621DDF9DB8E9FF0D9B699A7719BE6B293607B382F0EA833A6B8 + 93485720D12F6774CC1B3D7345A7610133AFF9A2757E7344BF5CE78A8E799C44 + 004B77BF3B53C540982E172C5F733E790C2FD537480E95EA7F8FC31428F597D3 + EB69F0694D69B4BB3DED3AAAD8E02E37FD1ABF4E6A1DBCC8D4542112321AA71D + 5641BCBA102F5291D2E2EA40F20C80DC200982D76E31CA07ADF267344FD2397F + 34D0612E699C377EF190AE79BA5F2964A3ABF78951BCF5C6984E5427E31BEAFA + B66FE0B6F99C92615D27402B38B55F38BC2ED01AA8D2F92FCD38AFFAE538BC65 + F5904CB0A1438E93FF7D4045C889336F39DE6C8F2B2DEFFF89F6B0E0E16BB49E + 7CF029971AD55A7EDD9F3BBEFA8EB7BEF6B37FE8ED637FFBE0E7BEF7C54FFEF1 + 875FFBE9263A622DAF58066CC0B1CF4030C3ED2D6AFA823EF420B9214DF578F5 + 56FBEBA8AB4756C1134265601370B0010AA66B82F470CAB180BF06619B052137 + 710690552871D76174667CEF94816405715D352C2C431A81E76283A76D9BD43C + 89677DDF477E2B787EDD577EDCD782310883E64783E2D751305005ECA75861B0 + 0617620A1FD0051CB36BB9657F51877F973519A56722AD26705A564F5E477CC7 + F70966310E65A06450554EB4C78010175FD8F060BB4741B6964BFA207CCA3667 + 1AD871BF835CCF06FF1003F108F8F26BCC458225F85C3AB4131590873FA7877C + D8877E88737908887D28887E58887A48888768888A18888B388815D05117A083 + 3B08523DF8832C477BF1F574472875494819FC1721FE472C527524C87577BDB2 + 0109704B5323399A43665C6876BD267123F21CE1804B7F62811B764873677774 + 172D6C986231F381C4C520BA308782067D84B76DD491888CD88C7BF88C82188D + CC088DD3288DCE8888D7588DDA988D798883F332894D544B9B9240018789F1F5 + 799B28751CA1849F787A4E0848A4C86C4E8334A3F14B48162165A40EAD43845C + B71C4CD385B1385AFA951887B31610748124248FC5F78B0CD9861F6801CFB40D + 98858CC361822B37FF7D00D0881AB9911CD99179E8011E19927A485E59B17EE0 + A83EB58418706445F4E721BE466AA117931E8147D0D17F59278AC5F24226448F + 4803418B535A37254EC1032CB0D68F5D472D0D1856CDC746595290F96086BAA8 + 9069D890BF683CB7252AAFB011C7489198F45C9CB48C22199662399664C9876C + 931527C944E2D85929B56B1FF492F916939C884756078A01879339093C3CF92C + 30D25266E1306A810BB7A03245597B47394955828B0E8338A70395B423850B49 + 950C591B1F532873C89515698703050048F091150092A0F999A2199A208906A3 + 799AA4899AAA199AA6599AABF99AA9199BA7D99AAFF988319015DF98966F9392 + 77331BFC28557079FF7F72191767A08496B10C40E86A00E64C3B438F4613236C + 7421110207BF07412F831A49B980B2462D4B032BB1F38378A30F7F8090885477 + E6698AC7279993C90FF2A00DCF87995D49685F0900068004B4299B20E9999E89 + 9FB0599BFDC99F00FA9FAF9906727201EFA19B70B396B7E61043E8962E698431 + 197503E35AAAE6302C87976F59773D5934C9E27AA9A80C98E367CF920FC7C155 + B7E78FDCA94FEC491A55854B42399EB9F898259486BEA89E6CC89DBAF09EF019 + 7D02553524600262900615609AADE901466AA46870A44ABAA44A3A9A46FA994F + 1A9B1E90A44C8A9F557AA5589AA54BCA0505DA6E084A4BB6D49B9EC18F0F0A93 + C3290BBDB101FA85FF0C9AC12D18DA3B896434C8922CBA9070A42054B02282F8 + 90416587A231D40A01808AE3984BF5489E5845A3E969A3C0F8233E29783B1A9F + 85379F1A90034D4000421AA0982AA0991A9AFBA9A99E1AA0041A64B9F9A576A2 + A078B30FE6285FC17984F9B701D7590F9E030770800E63B739A0E26BF4403474 + DA1BB9D052DEB00C6590132CA21BA5112579D7800CF8A7EDC994D3A4226017A3 + ED34A3C557A38A3A3C24D7A8748899165968D4C104931A036280A45A9AA554BA + A4E5AAA4E77AA4E93AAEE2CAAE53AAA5EBEA015C10031EB503A34AAAF3C19BFC + B28F44089709107503323851B262FE244ED3B09C471513749A0BCCA20B49D55E + 63B864AF428A4962FF1CD8A91ADBE942ADD006D1F44608360F302A67BB789E1F + 56AD93A95C8AE3A88FCAA32B476FC1E003DE2A02E0FA91E65AA52550A5F17AA5 + E57AB3EDCAA450AAA43C8BA53B6BB3471AB4430B922AD0362689AFF9FA01E3A8 + 400D4A666F09A1015B17039B9E2D414E9BE392AEB0ABCC720BDBB04D9B72139E + C50EFF62117A9A0E25DA3A198B94A27225A557060856A8D09A9019E86C268B5C + 5128822AFBA8DB9A31D504005F60064CD0021A10030430A4497AB38BEB01416B + A4417BB392FBAE8CEBB8963BB990BBA48F4BB498ABAE96DBB8930BBA97ABB9A3 + EB016930AF1EB5B44C1B1695088A41C8AFAEB8AA558B0BB9C0974A4325F164AB + 7C03234AB22CBF41FF65BFEA69D5341160652C73AA0F7C6A9862F5121FD21C7F + 19ACACF2AC222B955A95B7374A72399AAD5C69912615840C20055FF0053ED002 + 2B30B343FAB9968BAEA43BB9A18BBE9B3BB49BABBEECBBBE94FBAEE25AB9959B + B9F97BA42A50692C7069AB1B1FAD6B0AFE3584B0EB70C1194C5B640BB46BBBB4 + 11332BA5BBEDC9B0BE0B1C54F6A177B3311341409144B1F48871C96A956FEB3E + 68E15FF5988A720699C263BDD78B3C2CA6BD14699100941318E00366E0035B60 + B8E09A068E5B023EFCC33EDCC3920BC4445CC4462CC4420CC4486CC44ACCC43F + 9CC4471CC53EBC04FDCB6E9218C060E17E09117F09E62244D83291211225C1C0 + 0D4C8FC817C1BA8BFF76A5E12474711275937453D40EBA9B9349837146793C5D + 88709D167B208BC2BC35B2E8C9C22DBC3A2FBC95F0699152330018B0C852100E + 3ADC045CB0C4685002933CC98E6BC94F4CC9928BC9419CC9979CC99CBCC9433C + CA92FCC3987CB9981CCA9FBCC469A002AF745E589CC550241857B821E704900B + 380F8A6372C4B1120D8CBCB7CB64D764AB6807784EF24FCEB1298BB131C9C71A + 38B2BCFCFA8ACD4BC2B177C2758B869129C8D65A6D852C387EBB564CC8C81810 + BE3E20031A40024D900668A0004EDCCEEEFCCEF01CCFF23CCF5CA00222C06EB1 + FC15168074A5904BA0C675AE182B3634C650C2975202723B25C11761C1FF9472 + CB306FA8736100B6FF757D6A760CD21CED55C2D18B8AD77CA878ABCDDB2C34DD + BCB2C94829B1B1C8286D06E130072D80CE5C50C94E0CC5F13CC9F37CB9ED4CD3 + F3ACC9335D025CFA4AF69ACF5CE11716F23007F8CFD929607F07B664EC2C7887 + D046B5B56A9C11FE6412282119BF3A0E38711C10BC325A58D1491929162218D5 + 1CA87E7C862ABC8120DD67A331D2248DC8268D017E00D78BFC0507F0057E70CE + 31C00525A0007CFDC3ECFCD7440CD8ED0CD8EC0CC484EDD77B9DD8869DD8828D + D88D7DD890ADD88E5DCF4447057C07D4926001ED831819426FCAEB8A1ECC1B0D + 6BD08C2447CCC439AF50918267D588310E9C742CC89B8550CD60B2F621A425D6 + 5C320F1C3DBD89C4FF8BD40AD25EB7D6DB00C3C8E8D69482D23E80D21800BEE3 + 4BA953FAD88C8DD83E5CD8921DD9D47DD8D31DDDD06DDDDAEDD8DD1DD9D9CDD3 + 4DE0D3008CD99560057B921F9C84ACB008DA7F47C1657CD0C1684DC4EC0AFF84 + 6D233119AD1D549E950DBA50170E99D0B4DD85FE1007B46638ADA6DB65BD71D2 + AA86698D4F843CDC86ACADE06CD25F00D771BDC87A00BE07E0073280CE2A8006 + 7DB0CEDADDD77CCDDD7F6DE2279EE22B0ED92B5EE22DBED72D7EE28C3DE3364E + D82BDED3179005E67D09217064177285090671B5EDA028B61B4653C7C2DC647B + 139126876D5A3400FB87D59E85AB739A347AC353DA49230DF29709940A0ADED1 + D47B3B0F0EE1BA2CFFE1DEBCA3884C0A97E10617AEDC8B6C065FB0057ED00239 + 30022AA0CEDFBDE728CEE77EDEE780FEE7825E0290F8D33D8E1B61D0062DEACF + 41C28064EA3BBD7D34F330DF51B5524E8EDF211112935185FC0DC289640FFA28 + E05BC8550CC227D3D9DF647DCD679DA865BEB7D93BE1DBBB56DF541367E0E6C9 + 1DD7192E0572BE054C900324A0022AB004327EE3C45EECC67EECC89EECCADEE2 + 3D8DCF87CE099EC0275BC28A8E4EA6E8546D664C944D27559C93B21B91E9E02E + E595E1DA08182CCC2782B3B24B99E8703253EA09F14670503B01B0060B2E771E + E6DB65DE670BDDB76A2EEBE5E045F30E0107200518A007CA2D05CC3D071A7003 + 31A002C3BEEC101FFFF1123FF136DED330E004F7FAEC63D1007020D657A5BC47 + CD609E774FB461A295BEBB290BEE1CF1112EC54D6E54071B1006CAD717A22125 + 0C27EA528BDEB6849CFE4C60F51EAD63FEDBC08DBD684ED22C8B16FD93007010 + 028D35F0058FD271CDDCDE7AB8C15E020860EC57CFD759DFE25B7FE35B7FF560 + 6FE35F2FF6271EF65D5FF6CA9EF55C6002AF4405CFBE3B9B5652E4E819AF78C0 + 5F0CE95679F24F0D321299E92C3F93FE46EE32BF15A9D7EE5B4B70AAA5F3D2A9 + 19B5D305D1C9DB5399EF7BCBD62BCBBD81D90000606492E2056650F0C99DDC08 + DFF9857BB8E9FCF061EFF5647FECA7AF0067AFF5588FEC673FF6C4AEE33CFEF6 + 901006B50E9808E6FF1F756FED81D4C149A9F780746670419C2C0F3803D00DD9 + 1254F4D65545E2CC69AC8032A3F83CEF10A4C13029DCE0D5DBEADC5CF46DBD56 + 07D6C58D30166D001852E007B88ED2BAEE03E37BB826F0D27DC0FA0830FF66CF + FAF65FFFF47FFFFA0FF6F30F080A08820883868288878A898C8A85898F8B8B0A + 5C262B1745009A9B9C9D9E9FA0A1A2A3A4A00C1B105E5E6E097F710C61B1B2B3 + 610CB6B7B8B9B916B6B1B7BCB6C00CC216C014010D6B67CBCC03CECE0970106E + 5A5A106701B621DB00DBDE5656C5E2E2BFBAC156716765D565090D71710D6770 + 655E07F75E10637F01F0710100FF0504D8CF9FC18308131AA4C05060833F6B22 + AED940B1A2C58B16FFD70CA8E3E6DE817C03DA5060B06393853803BC489182A1 + A54B295FBE1C6022E3460C1568FA3482246967CF9F3E83027534488150A15C54 + 5CCA52AAA9D3A75045596893C08D970975D6C4A140AB2B2D7360C3F21A3BAC2C + 5906C792395BF6AC6D348EEC06741969C18AB710E0F28EDB6B76D7B093EA0E68 + 2933E65D803F63EAD4F3986FDFC17E90FF299C4C1921430AF002B4812811A367 + 8C1A3932D6F78E018B4C9A2C0480A3E58B143F2E639BF9C2A4C58D265C0AE9DE + CDBBB7EFDFC009F116FE5B3871DFC7811F525042298C2A53A24A9F0E8A9B5374 + 1FE092DEDACBEBD7B0E0FB921DFF975718641ADB0E18C39E7DB469EC0AC3AB75 + 0E6F5E707BC99DFDFF552CC0808E8DFDD1853CD2943141355A4CA00F3FFE44E6 + 6065104E7659669B4934D167186E105A47F86CC740062C1861D21E70B8F10506 + 7AB4E403062BCE465B0B39DC94131ABA25179C728644A29C8DC52157238EC6F1 + C645132BC02022754852875708D785D14002EB9401C71A018C048B77DF85A7CB + 7EE491074B3C1FA8D75E7BEF753458615D00D44517718461817DF7E5A79F7865 + 053006350A8EB1C11F1FD053861B6E4C20A81B0B3E26596411267AD084FF54D8 + 59869F8536C168856523820830EC50456A01AC5186192862009B8A6694CA0413 + 1AC49042097DE0E8AA0BAEEAD6AA72B0CE8AA3ADBFC11AEB6E955CB203934906 + DB5408B030E05408FFAA7D908A820394762596596A295639C100735E03618EB1 + DE98EDC1510704935AD36C005D6CB6411B71BC799F5E721253AD2D5D54A5851B + 758CB10C94135C05A81B7F2E589040900DA4E8C05B35D4286711411AE9461C7E + E4E108226400C31D59301942181B94E1DAA82A62208519F7309103092A7061D4 + AE28A7ACF2CA29DB30E452C2C61C0A5E14B4B14103FD70F5A628C83600872A6E + 4C19402DD076252D785DD20926B76324E0F4D3101828581D1F14A4590373BD09 + 679CEDD2C90B55074AE9343DF608A62FA01024B0C1BF87B64DB0A28C6A86F085 + 0A5FB4A1161D56CA400123E820C2052C44D74D1872D4F1851F29C6E631C83ECC + A1410E2670D16AABFFB52200EBE596675E88AD946BEE79E59863CE79E6A2CBEA + 7921BA22606BE8A49B9E3A022F3F27B8CCB40FDE406275C091C0191BA43B4A08 + AB55039248456379F4B4493310471B1F8CF9F4F3DE5A35F51F6EF6A2B35DDBAC + 8B5FD76315630BD8F3C2117DD91E993D413B541A8AE8DB89C6FD908575833680 + 34933A2CDFDE23F0FD370CA8013095E12B5A51C71667862DC0E8264B50C0E458 + C6C0063AD055B12B49ED6466052741C923F3CA4A1CAC209536B0E61E41A31243 + 8A67B4E36DC96B65595EF312D034E88D0D3E1F4940173868B1BBDC457BE1E0DE + 3818E0C149110A86E5C3E02AE07006AC59AD6D6C631F65260490F73D2A7E15D1 + 4802A691379CEDADFF0058EC9BC48A60310BD8010E0790428A38E6310C98EA71 + 2468C21254D73AD6B9B18D707CA31CE348C739DA918E2E23D2058E3441245981 + 01878112DECA879533B4A14A0C005637D0D28601408052FCB012096561C26905 + 03172A6CA10B75A79803C53000D5B1210E73989F6184E37B0998D4F9A8810F41 + B9D20BD5381F116F4690242A31424C44C6DCA09891F981AB8AAFC022DFF8A603 + 89F16007D1B10205DE700033F8C007645C49A97CD002DBC4C0649DBBA336EBC8 + CD6D7AB39BAD831D91B0C0943E524735F3A8C72031C8AF7AF5CE029BB042A74A + 543FC1D0CB901430CF246751C91392074C9B8CC65B0285B7098C01949FB061F6 + 70D8AEBA14C34970FF085735F041A86F41206A9E1CE2183E60C45BBE2D6E8E4A + 182F29A291120D1224A511A64A21664C3668220E6F3810A812F792D96CA13631 + E2C21AFBE0829E5ACEA7A1E3294F81DA53A1F6F4A83FBDDC5091EA029E5ACEA9 + 4C251D50A17AD4A62AF5A84B2DAA55939A941C5CA09CE67C0AB20270865404F1 + AC07A0D7075EF1C73864679D8C6145EFBAB34F5FF4B31C5E42C61904AABBBE8A + 4F1A5661C719E2B009851A766BECCACF29E3B0818806D10B521AC0199C3186E8 + C5B20CB91BC01A8CB83E8F4AC8607283DF4835C4304806337F59CC623133A589 + 10C4810E3F73A61F02C8A2DA9A01A724CB4D37A11A47A8F2D68DBFAD6370E538 + 5CA0C6D1A7080083FF738CC0C1B096825801C84E3DD15A3E7A0D604F1BD8C874 + 315848E2D5959277F58BB5E2F08779F0F5AFE2FBD6811204813584A1B036EC86 + 61192A8EFBA0A50B652D9B165421258EB6A10DEF4B4CA05C5986B49DE10F87B4 + A5672DD39026EE526122FDC31F367006D1E0434A6BE8421854CAE102AC96629C + 0223A860434633DE1646245B421FB25AD516BBF8C5308EB18C674CE31ABB7809 + 96B880049D3B0A740291BAE54B5081A36620B872571F6B6BD377C11BDE4BF6E2 + 300338EF5FEBF0ADC5ACC21DC66A6D7CB57C43ED8D432FE769EC3AECC92F387C + 402498F94717CA5BA0F50E51B33853F082FDC1C40169E889917A9484295C2276 + D6A18801E83087FDFFB645C12D5363A0EAD88A3EF685C63D4E052A362A516D4C + E9AA26D5D295CEF4A431BD04157895074EE07142C3815FB302F9D4A716DEF9EA + 90800C2B79C94DC68531BAB081CAA237BD54862156B49265C3764294A3144718 + 5488AFFD8A6DA3E8EA0E6634B386CA1679BFF4DADD9E123C67062FDBCEA2C590 + 48F734E10D1D79770D103487B598A94D01E01475686689F5009346A3EA062648 + 41534FA0E97ADBFBDE9556800A6ED002502B52D4DD20EF143D495D23A3BA7C57 + C9D70408E598672D993E77B51605BAD06C6F798BCAB9AB72FD58D1807C7279CB + 1F472CD726FE878D1419B2AD7E08CE0AF698357F20011C59EFAA13006736557B + 21A075E2B6236591FF3DBFFC97F7107266C53DE862EAD8DC0C58C323A1F94CDA + 7ECC99D4D4800914C8E217D31BDF34BE3AD6EFADDC1B64800AE606F8B9375087 + 7C193CE80B27DFC1E3FA27B37BE1CF557A383FC36B1E6263FCEE55969E35B051 + 971AFA3AE422C7CFC45FAE4E63C321C999015840B6020F9BED1586ABC06C023E + C00F39DF12A40F8EDF849BA718F209F9A27520FAB8597A9AD478F00B66800D4D + 4725852D1810725CB0411FE84D7B17D4FEF6B6CF3DEE77AFFBDEF3FEF7BE0F3E + F0876F7B1BA4E0064C6041A8456D8130FCE167059F79D3A6A1F654471BB0780B + 219BE46ED77E8E9740DFC2FBB7027B8009C0817AD83BAC75E4AB7E70288F7926 + F50886E7128634ABFF294D019950B96A0D17B447F666F8576D97B16C21453710 + A60C30576442C42F98257AA31731A7C1245310006FA0127E803802E4313E807A + 3E20031A90462A7602B3277CB97704C1D753B88782BDA78226988224486F2DD8 + 7B3138832FE80231E802CA950319C003FF664E71B006FD87566F07689AD12763 + 866A0952079AF5739372656B3312DC4777681100D93545E2D7497873266D9048 + EA771780274ACDD7057D223DF8403536677FB5544B2DC7668B710FE7A30F1FB0 + 0101C87897C74405688019224551034B70157969E3801D466E3C80741FA005A1 + D2121CF33130511B24106F36700290687B91780247407B952889B407899A6889 + 99B87B974889BB37FF8993F889A3A8899F488A9D0889A8D8752D1022CE750A10 + 70764107016BA5351640017F2048A99627E7D2066BA08B83A13605237711C70B + C4E62D1080777F620FE1D33B34D485D0B850F73586EB242EE8927869988D8B47 + 806B403666B30A10000763B006086679036387DD8667DA363F0A1844D0168E67 + 008882E637170003E564016B30011C382A192805E5474D230369F35683C4377C + 23F87B0749900A5990BA677C37B0022C1076B5435ED08756195435F0144FF1B0 + 5758F858F4A22709D60615563601D20FC41871CA5372C8A88C64A820559348EC + 178DDEF06BBC800CD4E81179E20ACBA68D3C994414470FFC1228FA923B1B558E + E6884B0D612ED916FF29CD430F0417646FA83B1FC06106204C55894557B952AB + 851A0CF0078FC41225E61227F6812A00069B789668898968B9966B89896AC996 + 7019977279966A797C10F92B1334063FF6581AC400CDD55ABC40728E345DE173 + 5DFF95263FC921F302010310490FE770DD271635F98B57B88783E40663D0066E + 22937F575880C47F04157484517987D2933DE90FCCF3344E7959E1A859D43680 + 04D36077485278A821679018ED8841C69636DA3295F228685AA463AD950560B4 + 3117181B8C8601EF1639AAA30673298ACFB9896FF996D1599D72F9962EF39011 + 3941DB15645A90151430935EA8097F845F25A20A43746087542E69928B0D9384 + F8C47DD122166120FF92D2107E1755060A382FAD4001E9C799F1E50D9F493FAA + 202857E60AD8689AA6999414011153044B41176D94774875D8787373213BA721 + 9C477E417615927706096395BFB9522CC5035C040030054662A43826764631A2 + 020AE002CE699D345AA3367AA327600360402499D28349726AF4A21519C9659D + F04736190DBAC33B58532E09861847281884D171F5279F73071EE4B511181735 + 4219A187F70A000A7200704AF3B4188B4965AD667301A3A03C7910F8E78B7A59 + 4F42268E1C9526F0C02895818E7796A15114264EE98E97C56A0310875833A244 + C75230C0031C244F09D04C3EC0121DB31207D06832B0028D287B338AA36B397B + 98BAA9D609063150FF24C8243340F69DBCD65C87255F39742D0DDA000DF05F87 + 79187AE97951DA265C517FB57A9260517F149718C9A8A54F697EBCA6355F6A1D + DB708B54480F27058782EA206AAAA692B115E482184027186F286D145A3006A3 + 10B0B93CE9A8A71A1A659DD7A11E5A2F1F50AE9154005599AEE8BAAEEADAAEEC + 8A45F4C803E449225ED068A2829C1BB8222D902A5C70A99BE89C007B0297AA06 + 044BB0027BB0015BB0086BB09A68B0098BB0070B89012BB110FBB00C6BB1D209 + 06267003C2193316990F6B65313179AAF1A43C02B126AEBA268851076AD70EAE + 30A5B62A9FE0710C253745FAB98C5938445422ACD933ACC80248D8E28DECD00A + 6BA286CD7AB4D8BAFF6CD29A2F8C214BBB538EED83A74B79671F709BD8D7A1ED + 54941236175794952A9595602BA2C2E437875A05DBF0834B171B19582A33912A + 2A900236A0B0131BB115DBB0764BB1189BB775ABB7030BB114FBB77B9BA34DE0 + 5554303B488256F7940DF0058D9C8017E3452E00D6066B16AB83C49FEF00B303 + 78AB8FA90B4598808002A16E9836AEC085DF701F8C5BACC3B6B2D47059678A8D + 8A77B40A8A106B66729E078E7000670591B909C1284AB9731151AEB759264606 + 59F502A250EB26EFEAAECA9BBCEBEA61FB13AA16F0071A4362F74A2ACEB4AF24 + A02A7D50B0DCEBB005DB01DD0BB0DE4BB0E02BBEE41BBE028BBE72FBBDE39BBE + E6AB06E5EBBEE14BFFB047B0A31C8BA8C182566520176160AA3E1B2753C89E93 + 6B6A505A185C91B99721B3B940B3BE64764766486ED277A3148D62BA01038737 + 9095366B70ADA509BB1EFC2F7AE5947CB85FD53AA1B99B668B52A707B3946B50 + B5D050266AC75E9317113863250C10B65829B6CDBBC35E4B6E7869055DF0482C + 729C8BC622FEB805731023296096E17B04F3FBC44E3CBEDD5BBEDC1BC54F7CC5 + 567CC55A3CBF7DA0B11C4B05F97B56B4980D12ECB3DCE0B8689178B743C06722 + A5083C42B86A3DCB935D1CA15FAB903B1FD0053059BADA038D7F347850C28CB2 + 745D74BA6CAFFBC1CD4A6760828CCBE87F728A606C92446FCCADA2F5BB93E51E + E2B38742D40E07C6FFAA88040CCCBBBCA29CBC5A042289A4A807202A34D512EC + 9656480C028D98024E0C041D40C5E45BCBF09BCBB50CBE54CCCBB97CCBBE1CBE + B6ACCBDF8BCB4FECCBBBCCBEDC9BCCBE7C04FB76013C78B867B5BFE84217FF69 + C6A77425353306651064517AC06F9CC0FB640EC730207C82ACF6A4C138B3990B + 35C1BEE6B8714071819CCE6626205693A6888CC899C12767B0A1EB64BB1B752E + DB18CE7293A7544B59EE01C37E662FE5C8159734CA101DCAE83A0225BA034EE0 + 5AE9A638FDC822CFB4AF4F206FBF4CCCC82CD2213DD2E71BCC247DD2254DCCE7 + ABD2BDCCBE28EDCB36D004F76BB85081B8AD46A1117CCD66ECB8C9C2C6DF6CAB + E1ACB9E31C0B9861FFCE0D60C1ACD418A55117A3D4C7BED656D812C8D5605D1B + FC18F99CD504A166AD6A93F404A1EF288E9B45A7758AC0DC9AA71171C94D4326 + 364B3E58B1519B353465110C06A0BC752DD1115D95862A41555081ACAC07ABEC + 315FB00518200339F00465790434A0CBB8BCCB8E0DBF8D1DD9BC2CD9903DD996 + 2DD28E4DD9992DD98D5DD99D9DCC36F0CCF23A1DFA3B255DBD15B5500CE0D0D3 + DF503365554FEDE0C6434DD493B49376F6070FA18B6F27A45DF6D4797158AAA1 + BACC784F0282D55A9DD50D3210F20073759C850BD79A1B6C73657DC0D14AB52E + 9CD0DAB21E30A7770A52CF354C27798DD7E2EDBCD0BC29AA1105AEA107B0D18F + 30E14C8EA3C471DBFF07CCCCD8235DDF986DDF1D7004F85DD9248DCC9FCDDF97 + 6DD226B86F194006CB77D367C50A9B25B95B6D253C3DAC7F741E810142EE00CE + B34DDBD0726DE6B2270FC1CDB0647E1BE09F4BE2DBEBA250E140010D30988384 + 15E3D220877CDC1FEC36F1CC194C988542378E58F3ACA83D6CD856B56ADD1E6E + A1189775BB020D71E381AE775DD7E99AE44CBEE44E8EE44E4E6E54106A0C7027 + 2772AF64542A2F12231210B71D40039B1DE6623EE6645EE6667EE667EECC3100 + 2212D914A5BD59AD9AB226694ABF6DE24F7D43766215C363E1B35D3C0D462E0F + 71671CBEB4E1433DED4CE2A6AB17CA93E2A6C65E8D09C2301EE95B0DE9D16A72 + 04078ED2C6AA0C5EFFA7D19AD6080DE4CDE06C82028FE7D226D45216E19DEACC + DB0414FD37A8410172602219F81204845B2A6003684EE63850E6BB9EEBBECEEB + 65AEE6051E15380DE7FFA5E9F8E7D0A664E7777EC63C749B0C9D33491BCE197E + B20F918E1F3011B85D72E052E85C88E8A6FB0DCD07AB4097418D29DDF82CE9C7 + 8D445CDD27D37AE3CBA0EDD4562161F2E9CFD0CF555B59D3008FE598DA5ED3E4 + 501EF04A2EF0003FF04A5E957FC3023BD01F2AFA1A58DE122C7162B05C9627F0 + E5165FCB608EF1999DF116CFF18E0DE6201FE621FFF1227FE623DFF117BFD929 + F0A941D0E6A3F0E671EEAA87897F727DCDE0BEDAA784C2927CE1704C0BE5BC79 + E51AF40983602557FF7609727EFD7BF3758E17B040850F9A854103682EAEEE54 + 2F309121CF0662C715A53BF632D67676DDEA2159411FBC54268E7268EA97441E + AABEF6CC6BA8857B6E8BBA31C8E9312B712A8F63022A20A31E8FF21CCFF1BB7E + F21A1FF27BAFF124DFEBBB0CF8252FF87CBFF1F9AD02961004074E0AC5DEAA4C + 2AF3C8FEC94EADF4758EAACDC7F308EC1569A10CEC2159FD3CF49BA1E258B101 + 49AFF4D9638CF0778443C451945EF555DF360C21CF55C687677351728A5D2EDC + 16CC80EF69DD4201CD264EF6EF079FFCCABFFCCCDFFC598429AE48014A772263 + 34F731E1032070D82AF0032700043420F838A0F8E2BFF8E30FF2DF4FFEE85FFE + 1D7FFE82CFFEEB9FFFF136F0F8912F0A302FB9327FEC715EC8A9FD9FE00E0821 + 2100008256160C896114718D148F90916193946171017F1F0363630367671F6B + 6B1B7F6D0D0375135A13751B615687B0B2B3B3822116967F6770655E07075A6E + 70670D018D9701C9CACBCCCDCECFD0D1D0718C6D6B1F6709106E5E5ADE5E1365 + 657509A01FD867039E9FE6A1A2679C631F7F5D7161890C8889FAF91606FF000D + 140038F05F418104131A0CA8D0800E111960ECB060A54D1D337E30F8C0C07123 + 0633BF7CC8D04022C69213345276A0B1B225CB972E63C29CD90187CC9B3473E2 + DCA973A60D132B2E382144B468D15F487FB949B0A6419B2E6DA24A9D1AB54B32 + 0AF96869DDBAD582FF57068B1C451A0BA9D2A5066BD27532276A83D35310544D + 80E30A1645AEB442580913608336375A7E791176E68FB1C3C8A4295ECC58DA25 + 645D22EBE235C1173070E3E0AC65D7EE9CBB77EAE6D5BB87A874BED35EFD315C + CDBAB56BD64D46E8C870616296356ECC98F1E191A36F1F5230F86991E3099823 + 2973265FCEBC79F3952A5F3A9FEE1C3AF5EBD157DA48B1224815A3E00124455A + 064ED3A754D337706AD5DEBEBB78E3CB42B4681259B2663169E2E4E95CDBB767 + A4B24A2B14D8259F5DB874B14602654C8054307514664C23873566E185183E46 + A135DAF412183013B801011C09F4E7D967A2A488CD1AF46085DA8BA57DF5DA8C + 34CE58806CB4F160FF01000CBC919B1EC275E49B6E5F30415C0C2AD8909C4BD8 + 353953744E52C76494CCE1201D0D3FAD80C550E111359E524CB1971E55EB5595 + 0C35A45961C8815DF1031623D4DC470125717491C9266BF9B7815BA604C80D2B + 6B14184B7C7AE112C0821058261804096C500F85896128E9A4D34C7849171BA0 + D2CB8321D6A1195B29869A16284D8D06238CA931C0100100B1FA8FAB06C00AEB + 6BB3AE7623442C141102030D9461867019F9C6916EBBCDA1410E49AA41031054 + 360945B3CC3D0BEDB429657981115C86F7E501E59D07D598E04A7555566CCAF7 + D5228CC8F9C82475DEC91F5B7B0258C79F75AC1107457779D515031428A88D83 + BF68E14519097CD0FFC6999426ACB0638C341060191F8258DE18A48A3ACA359F + 3465CC3DFBE0C34FAA0CC451E3C8240744C0AD11F1E044165DC0718014C109C9 + 11CC071429430E26A4801CB3D452CB3373CCFE1CE5CF42370906505850614597 + DB2EE56DB863AEC75E23A4E95B2E57FA542227BBFAC1936728F19AF2012F5E78 + 01C107F75A6DF52C86FE31001CDC041C4E1D036CD0C631152EACF7A489510356 + 1C70A9F2E0381483DDD606A278A6B18BA6359E1A7D01B4D16AAC94B36A79E598 + CB3AF9E5AF6E4EF98D3AD4568513712470C046C10AEB83195FF8606471292C1B + 7472B3A7040510CC3E3B7BEECBD2A0BBEFBDEB8E3BCFBFDFCE7B4AC303CFFBF2 + 40141FFCF329E170FF74504630FD65B762420DB555C66005DFD5B43CAE089C63 + 718D96D7268EC267031F3058F6D971F483202C6B3280C918F3463C010463688C + 77A47B0B20DFECD385F671E343102AC707F6C440C4B1C37F1D6B1C6ACE1500B4 + 94EC821894CD0560C0030654A10110F842CCF4B091126AC40745D2400CB86003 + E4C86E3944EB5DCF902743A0D1AE77459B4E0E9D23B4A3E5E00259D0D6979C96 + 3DED69EF5155FB1EF810343EFC58A2826979979ED637B60699ED0C0148CDFC64 + 9188BE304870C07043841A80A6B03C468068CC903D16E1C5B85826188C3A83FA + F694B88C919171A78A11E4D03280CCF9F17280FCA32039E747038C600410E1C1 + 77BA603A29F8410FFF4012964676D30215E66C670E68DEF036B949E36912779E + 0CE5F03C993C4E9A5276A034E52739494A55D2000C29B8C116AA67946D610F3D + 460C5799DA33278FB1498B6CE3877D247196287E6D147F680054166445086051 + 7E6A430405BCB8A9030C861C0673CF9BF086B0347A331A7E63A35FB6D18D3092 + 438E0CBC063642510C1775EC9DE2E3CBF9C6B01ACDD57346B5AA556B5C558002 + E06A078C904319BE1049497EE40B66785D0C5260031CA83268B8C3A1447737D1 + 894614A218BD282A71A8518A7A74A33C3B420A7EB883A579698861C2652E8FD8 + 1EBF2911418F8B29BE62DA44485CA20D1B409F7F90A94C6B50E68A59D497DAF8 + 85A97F09866006DBFF183ED0F5BFBC7DF3A988B98725DA30B66D54C61B222AC7 + 1CD3E209BBF9CD6379A4201FD531C8B206F2AC66FDE3C91E72813B8421045D08 + 214752373322B92E0724B8A4EF36894ABE96F2A2A7FCEB4307EBD7C00216A37D + E564075210831550E128D7334F11570AB55D06A0973185A94C376B1745D4E789 + 3855CB00764A8A9E32B332CE0C80FC0EE1154B388C6C8B1AC31FE2671ACF3EA2 + A90084AA008F61536B8C010E1028831B54914074220E1D6BB81BC724E8B83DAE + 6113EAD01C5A3B47DDB2766EBA94ABAE21457001165481011B80C0CB4C485E0C + 48C175C7CA590F3A004A87368FA3B973A8F27CE75EE139EFA37FB5EFF34069D1 + DF7D140AF2854207FF6C7083DA9C743C4454296575E994A74CA86AE1DBAC4C59 + EBA6BF45CE98A375476997F9D3D402F32B80D314C0069600323200A69E45179C + 20A5DB34C6891101B0D3077E5B876D3408AB7174C7271678373C32577CD33C1F + 74FB4880221BF9C8483E72AC92BCE4241BB9C94A7E329211998120EC201F1B98 + 407032425798B5CE58C551C1098090492840A1CCEFBD9D9A9B0705256852CD6D + 7EB3261D606636C379CD66CEF39BF3ACE735D319CF727ED69D5FD9581E10C296 + 9255F0828D1899F684616D128E344DA579619D6A3899CBFC2250572B4D87CDAB + 9CC16854FCD4C45A7C8065982BEE668BF556C6695A630009006E8D857BD5FD0D + 23149A388357DD79FF9A77F6C3B9EA08F600D04AECB4165BCA952B7221717401 + 455A600D6538C0AF84151C9899410A66A8240954B0B340A779AF77DEF39FBD2D + E834DBD9CE75C6339FD34DEE76971BC03668EC0EB2D0B4947E6BD1B9949AA3DF + 23E97E3FEE890DF8C3A82AB6610EB9B10C0350ADD5C072285E70AA0E1F50AD2D + 0A55E153DB94C5B95DB585C4729619D7A1C61008B9380EB8BF12B5C3ABCB0D6B + AA2EE12E75A463D84886B29367DE6499CF5CD9373FF28D3290011650A10B5748 + 801BBE3057837EE117DA36C10F68904934A359CF746EBAB8A7BEEEAA5B5DDD57 + BFDDB8FBCCE6A7A71B07F16E010CB610D9A7E17BA596BD442FC945617FD3945F + 37E5EA6879BACC31FF1C7C0C5DE0345FC6E606A49078B616B045DB7B6DDBDB62 + 5CE3927A71BBB2010790873CB8C3F586AD3921C7526893B9BF6E6D1CDA20F097 + BB3CBA99C379B28F2D7ACBE1BCF43547B6E90542659FDB4F0E5A28EF46BCFCE5 + 231D61787F3E3399751FF5DDC3D9EB6676BA9C9DCEFBA9F7DECFBA07F4EF7D3F + 6791DE60054C40A9D9CF7EF6EEEDA3ED6E97293E363F2A6426332A99CADF52DA + 90262B1035400083D019EE96F9499B9A12863F63C6113F8D3935828F0970FCE3 + 836BC555308AF2F4707979F46B2183169A206CC296730AB8800CD88046D6046C + 750701100620740018A007741524C0B1054C80333FD05064E600517766243882 + 4D5782C9878226B8FF7B27B88226A8822C58822C1883BD678222150337D00264 + 471E89766FD48776BBE408CB957D9216329C974C01F707A5D000E10718E3F768 + F9D22FE8173004935C13686A9BF54EF0177FF3477FCDC071153463C0250E65F0 + 78B3365CDD20460AE428B40556F0F41546C8559DB00E09E8804E66737698874D + 003A11910521900563700018182CBDE1653E401C79153B22C88222D888357866 + 22C87B9058838BD8888C688951E7888D98678E28892DA88999F867DB610239C0 + 04470726D3F783F8C63D68C2694448537012634CE8167C247E09407EE4C2701F + 900A4715262D9544DA274C2A760CF2E7855FB846966027D9007264B87FFCC70D + 035307FD138029F7FF63F832551B708008588704800246E68D49068E37278E47 + 268EE4F88DE8188E315700B321115910077CE0051708245D2605ADC304E9A533 + 21088AFCD88FFEF88F001989A1289001098A67D6013F600224D0023EF00BB7E4 + 83AA487D4AF58AFD9608751270A6F05CB6888BF9B27770F30B25B740DF379112 + 46785B488C88618CCA2084C998298DC77FE2E08C90E7066E508605D34E60658D + 202664DB888079F893409973E0B8731740063BE00471151C91D41BE6F50B5B60 + 2C316002C7E18FFBE888558989A0B88F57999558D9749538895CC9956706760A + A98307906010199140C81EDD338414A97D4F940CBE952807300125E63DB0C070 + 6BF09175392297A6FF4CEE51914BC554B8A59262510D2E590764D88CCEB89871 + 849398A7479A670D9ED793C1D68D98E98D9A898E9B59649BF9999C999998E999 + A2D999A5799A10D87359005E13803A0625243E602C24F0043F700435E000B799 + 9BB8D988B72982BAD98FBA199CBBD99BC3B99BBEC99BFC289CCA699CBC09053D + A0020B69060FA9961119190FD67E6F0987E8D2176300317509070DE0229DD570 + 7D674D045331A370308C538483797114E254ABA67817F636B3E698321993D864 + 186BE76BFA205405988D96B98DA4099A043A9A060A9AA439A0079A8E0B9AA0A2 + E94F5A7205DF7506B9E1078F645030C38137B35047E088C4099C0519A222EA8F + 1F8A9CA0789B4760FF0231D00258606FD4A98A65723097558DD909329BC777E1 + 3006E1998B21B3017C3930709061D7C02207A34D1E138C29E69E67D4628F6153 + 32166B30598632B97F9E220F07C331031853AE2577019A8005FAA5A709A6621A + A6644AA006101BA1C302F6F3077520421788A1BAF13A2420014A529CCB79A776 + 9AA778BAA77ADAA77CDA0329F0043A480693F5A28B16A3ACD88AD8992A8CBAA8 + 7F8329BF550E6D80978710327F207482210C42EA1FA5D0525FA5458D7A6AC358 + 98DFC49288B98C8A699F530A0155BA38599A79FC524139D5A5021A9A605A8E65 + 4AA6B8EAA0B71AA688740158700757D005141A33BDB111AC738FF9C874BF99A7 + C7F9ACCC499CD26AFFA27E4AADC209ADD38AAD0E80038C151474D05386FAA2AC + 088C5F1199036891D6C0225D40A91679A9D1060CE5317789C3530D560FEBE97E + 491A7F29E94D65848D63907F221793AB1A7270A0191F500C581A9942D52FD9F8 + 09B4EA939F8902121BB1043AB1167BB1129B9919AB991BABB1183BB1DDF8B104 + 201BD07707F9F0015A705E453724C0C11BE9650364769B49E000495003367BB3 + 385B03339BB3344BB337BBB33A9BB3426BB3335BB3439BB3407BB447CBAD4011 + 048A16AED49776FBC96F84F73139991A7CA10C14305414D000630018E6347788 + A34EA1420A453A09FC063259A3622BD685097398AEB606F813A5523AB0E43000 + 56481A6E3841FAC0FFB0DB5899013AA6829BAB835BB861EA8D28C30271B0031B + 50072F438F32F3115AF0053793333FD0013C7BB3B869B39BAB9C38DBB97EFAB9 + 9A7BA7425BADA37BB34AC0582D10046909B5AA98A86E59AEAFAA47DB84594CD4 + 0603E09D1022B6C775229CAA4CD6C776A18A6A6D0B9F6F2B9FAF3686AA3AA59E + A2191AA3B70A5BA97502A00FDB931B8BB1217BB1D99BBD1FABBD202BB2DFDBBD + D80BB2ACC28E2B00036410320940747390815E96501A000279F5039DABB4F67B + BFF89BBFFA8BBFDCBAA24EEBBA50CB4B1134BBE70A16BF566A5D300010101810 + 220FEA9338E8F04066BB6FDF23BBA21A09A44A2942384D32F65B513AB08F4722 + F280B039892AA9D1FF2FA352BDD6BBBDE1CBB115EBC22C7CBD30FCBD1E1BC333 + ECB17BA803E7CB0259D0066FA005D3568FD87600AF439B1D5ABAA79B9B9C7BBF + A03BB44DBCC450ACC452FCC44AAB04CF190355560A405815004C266C2984036C + AED678A47DEBB5DED9970E4C47EAC419F082695758C1B525AA84D9547CF362F3 + 09B01FBCAA1F47227244C2620C870C0BB82A1C6CE25BC8867CC8889CC8DDCB01 + 286048B3110454100774000152D0BE1988015F2030724AA7F5BBBF44EBC9A01C + CA463BB480BAA249936F4AA84C8DD6C5E9619DD719AA55BBB756AB0897B020E5 + 89C66033B6BEEB193BB64080597ED83798A8C64D6E5B7FF601453416B075ABC7 + 095022791BCB1174FF17218329DA38C808A8C816CBBDD8BCCDDCACBDEC18113B + D00574A005917BACBCE107F8882C0D15CAECDCCEEEFCB9CF4902191005F98638 + DFC7CA47647D624CC0F4D1080A823F82B33F1473311603C19C219256E14E59B8 + B6C384924BBA18AD168600BB98CB2C931F572278CB7EB3FB38282CC8D6AC0E28 + 9007E22BD2164BD2217DB18C2CD22A7DD2129BD228E0D230CDD227BDD28C5CD2 + 337DD3138B3246C9007F500652004916EA1B7E606DF08B3329D00348ABB435BB + D441CBD44C8DB34FFDB34D3DD551FDC94E4DD553ADB9579C0164B03D9C971660 + 73CFABCCCA52E3606D59C2FB1CC770C279BB6819F1BA40635BD0E770D0443A21 + 6B87AF17ACAF0F0DFF4E73C246EC33D1CB6BD155CA636FAC72E732BD1EFDD103 + D0CD236DC826FDD8136BD2D80CD917DB04A9C9023B4081724588E6655EF64849 + 2461023DD0C9417BB4559DD5EFECCEA36CD53500A824700141A0C5ADCCD6F130 + 5A7C32D6F82C158DA6CFFC7C2A4B755B67F0AE9A0AD705AD22BCAC279DAA54ED + 6792277978E0B44641D63EF5C998764B2275A35C594A5317860D8A6DBD22CDC8 + 319D077990D2E37DD32BFDDDE26DDE27CD01E90DD3EDBDDEEAEDD2E27DDEE58D + DE8CEC10DC15047440058118C40665065B7088A17DB9B8B9D44970D5079EE007 + DED40A8ED508EEE00BFEE012AEB3114EE1095E0338009D2CDA6054011539156B + 053BD0F79CDB5E2CFFA353CB9FB2BCB787D0321320D0E859DCA1B2CB6003987D + 7DA4A6D69E5CB892CEC071CAD82181CDBC0930D01A3DCB7CCB70ECD3DD014AD3 + 370DDE2FFDD2E97DDE4BFEDE2B1DD2F21DD2F50DDF50FEDD560EE5ECADE4226D + 48371011B080B2D3A611BE616D2A2B03790506F42BD59FCCDAA31CE76E5EDA58 + FDE6747ED5762EE770DED44A90E1587C0763E2E18C57B09AD11FA55515AD1BAE + 9665D7D5D8DB7A44016E63DBEAB453300EC111CCA98FD28AB09CAFA9967168C2 + 0898B28C740BC27B5C302897DDA9224F5C8AE408D8DEF53DDEB0CEDEB2BEE5B4 + 3EDFE3CD01E0FDE4B03EDF56DEE5E28DEBBAAED2AFFEEBAE4EDEC28EEB2F30B2 + 55460538550729FBFFA65D061222511212000634E0E0165EE1138EE00DBEEDD9 + EEED067EE10A7EE0FDBBBAB3AD0B204EE8CD5C38DF1719243E15AE2C809877E3 + BE0D63C5D4CB956EDC119C31A5B092DEE3DB79DDE93A5E46D3FB36CA0CC266D8 + CC75530F5868D86B8A0EACDE93BE9EEB14FFD2C04EECBFEEE413AFF1F32DEBBB + 5EDE138FEB1AEFE4F61DEB23EFF1BF0EEC2870482BD0738DF001F2A83A9D4D2C + 7E7033464D034A00EED82EE1E3FEE0506DE13B7FE7DACEE7192ECF800EEF9C97 + 0D20FE71A52E0F87FEEE5221B5583AC0F45EF599274F7BF207BD8B221633D70E + 3B774808BCF24E7801EFD067CD176EA3BCD4ADC777BB400C8FEA6235637318F1 + 0888EBC0EEF1B26EFFF77ABFF7B17EF77BCFF779FFF7767FEB82AFF77D8FF785 + 9F076240004D0011C2DA066730014407B9C2C23AE865D43D000544DBF3DFDEF3 + 9EFFF9A0DFF9E32EFAA2EFF945CF0441C0E15081EE844EE8CD1BE49EC022EC81 + DBB9CD3D674DE4568F855F314DC9D0054C880E94DEF5BC0C2F87AEDCB8BF856D + CB928B40553EBEF6F7C9AA412E1A8129CB5A8A09AB4EF7C266F7270FF27F7FF8 + 847FF8776FF281FFF71AEFF783AFFD814FF8DD8FEC2B2F025A72073B4007BEF2 + A6C2E207AC53332231E034CBF9A00F084982493584838583898A8B8C8685888C + 8F87893D2A2417416D9A5D6D7F67090970A2A3A3A109031F1B0D9B9AADAEAFB0 + B1B2B15D01711461FF0C160CBCBDBEBFC0BD616114017F1F671F1F6BCCCDCECE + CAD1CA6B1B7F6DB6B9BADABBBB0CC3C314E1E2E371011B63751065EB10EDEEEF + EE750963677F0114BEDCDBBA16FD0CC61F06081C48B0A0C1830539285CC870E1 + 0B0E0F1F369CE810224585122B4E8C6831E3468D142312687243C4053201EA68 + 31230583CB97307D6CF1A38184891E881E30D2298867129F8D80EE1CDAA8E720 + A1917A98B891E10E2B4FA14891AA5347D4BC33D4FE345835ABABD7595CBBC4B9 + 352C985960FA18946BF0A7ED8635D39E3D93966C9A2AB1B8B6F9EBE6ED9B5F0A + 63396D180047DDBA32F012533DB5C61EBE7DFAFA49F616A041C03108336B2EF8 + 220F45CF10F3741EFF3D113407D3A14F2F342D5A616BD5AE4F8F16FD9A7567D5 + B457AF9648C040C90B777804B852C68C1E3F7E5CFAC0B0DCCC812F7364D80483 + 0352D1EB44B16B5F84B4E803253F4CE4C072A50D27A851A5AA0785799956F35D + 387D9D3FBF96AD5BBDF89EFDA58F58B9005D1C938C5C7249230D350DE0958B64 + 0CEE574E1B1B7C30061CE91C865862F1C833C6070DDCC34B647A4D56CC1F6B9C + B1D9899B75A422472CAEE8E20B30BE28634430C6D8E28D33E6D8190A05307552 + 171B40F0854BC9C184C11766F8E0470B3990F0437535E824E54F544E69659558 + 5EA965965C6EE965964A1CB1D4165150D1C927EAA549CA551FBC47DF9B6FD642 + D67E740213461C10FFC645203406D6D5581B7332E88F361FF2528C656324908E + 61182A764A9B1E122AA9A00C5010A08928668A5044AD714ADA6C9F762AAAA72B + 8E4A1B8BA7A61A2AA8A6AE9A2A07248990010C745001C70466C4F49214CE7DC1 + 444D1250A7445047156B1477C652795D77C41EABEC4FE089D7D499A0A8291555 + 55B1875535ABC4271F9CE0BA62DF2DB864536730DDDCD945036F19B8679F670C + 688D2D79F163811593ED420C408A1A7658A3F1C0718A2A9182C80D83EA463800 + 669A363C508D10472CF1C414576CF1C518675C711E06F8B6020B6AADE1851E18 + 140913AF5FF8300708364930EC9730772973CC34CF5C65B4375C400754D6F66C + 0A668D25E86DB844FF6F621F36E7D2094E65C8D4B5CC9ECD44136F2ADDD2FBA1 + 152184802F2F7732DDAFBFEC00BC182A1D3E66B0BDFEE0B901A60EB73D008E70 + EB38A38D72C76D374474DF4D230A3ACC7AC7151BA894AB72CC31C76B924C3EA1 + C29389F8E478B1533A7BA5E4C93E4EF99692473B1E1D9FA4D7B37A55098C8A2A + 5B156D7A2B72D69B34BA9491484DD450478D8C32D55893BA2E585B51E9836B53 + 0876D88D667B862A718471F6C192DDD9C61A0BBBEDB6C6D0472FFDF4D47746C0 + 084C051107031F1C80C17126632005AF4A6A00C21326FCD083510FB49FA5FB56 + C25FA5FC52C26F7FFDF8CF7CFF4FF0E3A094064140D3E7D44415ABB4272BDD8A + CFE9C035AE72AD0EFF2D6A09007C1A5022A741CD5DCCE0562DF061057C85A132 + C79850852C742180896E0380CA065F5688300996A879CE7358F56648C31A422F + 0F622840DF8240053A4401572E21D9AE306006C469A04912585FE5B0C43E9B5D + CE66316BE2E4A0F5831868000B021BE0E74C71953F0D6D81708A4F00E865AE07 + 0A231CFBF284052F68A068FCC94316B8D33106A0A845FD0B60ED18DB1A525828 + 8335084F2F8CE1F320868717446062878451220D59A34316F2909044E40B0A09 + 3147466C9130A2642323F6C84932529192ECA4239B30821530210864A043190E + D01221EEEA0B4862021390688397BD4F4BFB6B5FFEE2B7CB5CE6727EBBBC5978 + C6632D5368B18070FFA0472ADAC2153032905EE52AE303BBA1B60D589319072A + 90D4A686A06B006830BE031B1E03968054A4F078688B2320CF3006CCC44B909A + A218263F79494646F29E929C67242B29498BE1139FFCFCE7439AD00459D16A00 + 103840920AB79C868ACF0CB39C0E0EA048D19A59B4A25D52420F62D08220A409 + 14201D203205E6CE6E7ED1995E116339C825CDD5E9EB3F1214D01AB539BBA751 + E32DECF41D094B283681D5432C2A840C3FF0A54E089988616C83E7890C190148 + 36B5A9F684EA53997ACFA74E55A057B5271EEEB955AADAD3AB55B5AA58AD0A56 + AA5A15054DD0C10A30F1870DC0E10B7A2059F89893B23934C90412A84194F8A7 + CBBEFAF5AF800DACFF60074BD8C026E10724584119D2D4CE44794E8B06A49A02 + 511AA706B6F48165515E05F5442037466D61A1B0A385C6E98E64A602A8854A6D + 3A3F48C1A42AB561586564274529DBAFE273B6B6CDAD256FABDBDAC656A0B4BD + E7484A9281206C2501B034524BC617CB1668E00936A8C1B080D957BE5617B07C + B5AE2EB3BB5DEC76D797F8C301625B3052920AC4B159146901BBC8CC6652162C + 9B1823192F7B2E6E288F99EDCA2636399B53D19290B455D9D01F808ACEC954AA + 32256AE700DEF9DA4C3575AB0FBEEA56271C010857F8AA1196AA54BB8A61AE5E + 98AA160E71562F9C61129BD8C2207E6A575180BD0C60219575F042AE8EA35C58 + 1E804978ED010EF0FF57D81EFBF8C74056820472C00437AC89610B6B67B5445A + 0A36A9023E937DAF2CC4781FD599B11780B18504D7B660CEC2652E741CE16801 + 6CDA0117AF8F90B9D72EE210A04036B86D61DDB08A9D4A67437258CE510D6B6F + 3F3C56AC4638CF56BDF33FA56AC83CA075042EE60115A2E0BD2239747C664899 + 7349F0841F4C17C898CEB4A675191E531E395E6C432F643F1D342987918C5736 + 0B6BBFDCD9665C134DEDB82399C7D0186C1478326A0BC89B9DD7E75EFBFAD7C0 + 0EB6B0874DEC5FCF200233B8DE0A66150532243488467289737C9038F53960D3 + D8CE3661C3A3812D84EE2AA0C6949297AC5EF32E835B4633F52B9AD94007A65A + 1B87DA0ABBDAE86AFF9C8A9051A46D8769CB969F7E7F08D74012B7405CBB6BCD + CCB9D8084FB8C2175EEC421254042DC00215E2308003808F702D89B419E6C0A4 + E9F052DB20DFB41252F08415789BA4E12EC8B8476D156D510DCAEA9EB29CEE41 + DFD5F9672C4C9B9A9E5E3DA15803AFA702B6B5500FB6353CCDB1E0BC6EEAB197 + FE54A63BBDE95067BAD2914DF5A93FFDD8569F01D6A97E75AE437DEA56F7FAD3 + C33EF63C10E0377738031C14BA9C92C1842510FD550ED237D1C20A00B0776F5F + DE1FB0F7BEEBD2EF7FDD7B6001FF1D0970740B2867F082417DDEC71E93A4EE71 + 6FCCA73C46B294E5DD586E338178AED39F6328C06BE0F7ADD39627A4C790C452 + 8770D72B8C75D507FF5AE97858BAEBADDA7AD9B79EEC5C8F3DB2552FE2AA47BD + EABA1F7BEE59DC379DD1610CDE23D2A3A5F085036CA105E7BB8912424E7D6C8F + 9CA3580037A6C21DEA901EF3DB077C32CC27DF86B0547E2C5636E34B25A80912 + D9C5DE5FF33C3C02CC21380E1D77450FB8E94FAFF5FE8BFDFF5DE77F4ED77F01 + 886C5AC77507388004B8800948800028760EB88008C88048C062117705575007 + 2C116D43C4049376133840787737827FC7772648827A77822A488228B88225C8 + 822698827787031240022DE00651C0789BA1642CD764A39340DF427EE25279E9 + 7765C4100E6A132F379560E1247FEFB06F34A75A2CD44116906BFB174302D880 + 4BA7850678755C28FF815E08860938815DC8805FF8856408865DB886FD474AA6 + 645C01B07652801CD19624D4561395A65DDA26782A587D80A5143980093A6810 + 29075AD5E27804240AF48020A52384AE607E96777957665F6AF30CEC5447F8A6 + 18C9B44701B02043D7206A615457888566588AA6788AA8988AAAB88AACD88AFE + 875637B0023010075700075AD0121CC82B52E08194F62432E88230188CC0388C + C2588CC4C8771A251E4C908304377083B87288D833EE1479E3E788E6215F73F2 + 6EDD9065F3A60CFDE5733C95479B780DF850601D7460F3D68CA38822AED88EEE + F88EF0188F04880704D0373010047750076EF005B858382EC17C07406D39F004 + 499404D3E78731E8FF6307A969E01103E3A1789A9228E9356AA6F083F0618DAF + 903A35875900B10C974815FE327F9BD8219EE847FDE041000191EBD83033B000 + 2DF9922E199330399332599334799336999338B9933AD9933CF9933EB9007820 + 06C485059CE3062D31570FA524B354693D608C50798C51399552898C55D40203 + 100527C27D47855ED1782DEBB588A483919A503A72C25292786596226F6B137F + 3F571503C089E6B242FFE60F1FE4092B2948042893A7E8927BF9925AC7978039 + 98813993A528987E698A89998A36599882F9978BF99262D0622F7606CFE64AFE + 78245E80014824014340582D18782E98827D159A55298CBA448344560728C27D + 03316E5FA926F3B0FF60267552424865E8B7914AB3526CB60609E00E6F090771 + 498EF72719E738226E96976D03930B109440D992CDF99C31199DCE599DCC699D + 41499D34A99D31190162E0865B4006573006D021572713692A030203E9322F78 + 9AEE4995F0B9823D30644C004F2BD783903796649991A886791F12077FE096A5 + 358E67763C82F2416BA38ECA8922D8299D0EDAA010FAA0128A9D5BE586C04106 + 75905C6E5738CC654404890307D977211AA27F37A2A49990225882279AA2A4A9 + 142BE0060EE39A8638913D832D28776E6E126593677ED09496F5A50D008A0E8B + 1230C359A09F381977A96B0BEA3CD7D99CDC499D4EDA934F1AA53949A53539A5 + D7B99D4EDAA456BAFFA5D349A55C0AA5D39906CD3912100703E22924177732CF + F105CE853E96169F72FA9E743A823FF0043718A32A799F14399B58F11EB6799B + 6759844983A0842192B4C64752F86F547897C9B9A40EE3A5560A9D602AA95F4A + A95D7AA95D4AA99C6AA951DAA962FAA99B3AAA934AAA32C93719C0025D400632 + 6624CBD1120DB524BDA804735AAB755A954A7109ACE93C29C783B1F9518F826E + FB893A63844698B516CC134E10A0887BB43DC579A0C6A0A090CAA0996AA51550 + ADD87AADD81AA5DABAADDE9AADDFDA9CDD1AAED54A8FB178012C602910601C6B + FA8F3EF00534D18B3DF08BC528002368AF7C87AFF61A8CFADAAFF7FAAFF90AB0 + FB8A8C43201E58C0FFAB85D858E456A3EBC526A5568DB7797EC6BA9B08860CBF + B90E70B906A865A0220210D32A485F4AAE223BB2245BB2267BB243D923177005 + 0CF007C5D18F0DE5039136131D27013F40AFB76AAB3AFB005759075AF9663CC8 + 725CB4214F16A8824A841BA92E24026A8A82B1B4D60579C1B1A41721D2FAB19B + B100D74AA6598BB55C7BAD5EDBB560FBB562CBB55A0BB6653BB6681BB66A9BB6 + 637BB66B4BB670BBB56DABB664BA0024E16264C0078243246F57443E10514934 + 7D033BB8FEBAAF862BB0877BB8011BB089EBAF8C2B00AAD9513F1B43096B4C90 + 153AC9F4A76E32ACD78896D204180172190B36218AB801504B977D64608064B5 + F024AE4EDAAD63EBFFBAB2CBB5B30BBBAF7BBBB58BBBB4BBBBB1CBBBBA6BBB5F + 9BBBC2EBBBC38B046E8805787206B7F812CB5744BF4202368BB33B3BBDA7C96D + 5B7007F05488497688E56640C9500D46138411BB5256560C9D909C534330466A + 92FD702714A4A4ACEB366FCBB6F35BBFF47BBFF69BBFF8BBBFFA6BBF78D00419 + 700163F01642C2B7E1935C2C63B320DAB88F5BB884ABB80CFCC00DDCB8F84A04 + 771A7157E858BFBA1EECC5B9A8A391861207E958106DB24141C5BE6BD606F01B + BF6EC3BF2EDCBF2F1CC3303CC3329CB6765B4A4CC0023B10076A4A38AF6A065B + F0B747F40429D003B4BA828ECB8249BCC488DBC48B3BB84A50B04CB1ABAFE59A + D0F87D56313ACCE4FFC1830A18AD0543030129E5B81769866BCB03C62CDC3658 + 5B015ECBC66BDCC670CCC66E2CC76F5CC7747CC7729CC778ACC7763CC77E1CC7 + 7B9CC77D0CC76F2CC87AFCC787ECC60BF09D10770701C00765C08F6EE7683EC0 + 7C662003EB19A714BCC99CDCC99EFCC9051B886F26A3DBBBB0D682B97EFA72DE + 22BE93773495A13007B10C1DC20F93622F45B73C559BC69B51C376DCB5730CC3 + 7F1CB6BFECB56980B6C38CB5C54CC3C77CC734FCC6E62A8B77400772C8811870 + 005E7063431CA74FECC04CBCCD4E2CC1E0ACAF166C456540C5196CCA90D5C11E + 5C7EEE97194A78BA648C3CA4B7C2BADC36897CCFF89CCFFABCCFFCDCCFFEFCCF + 007DCF8B7CAE2C40FF0709B581D1A68B1C37909AFCC90EFDD010BDAF43508318 + 5C7032EA95DF972DED21ACE6618D6C41B59BF1018072A42F75C64856CFF61CD0 + 2ABDD22CDDD22E0DD048409426710761B00375E03DE65938332B903160B3FF1A + D1401DD486DB695B607ADA5BCA3DC81E5A0CB131F7D1C8A019F4D00071902FAB + 25C28F8AD20EA3C71E20C75B9DC75BDDD5158006892CD6F90CD6665D015B4DD6 + 689DC8602DD6607DC86DCDD56B7DD66C7CD65F2DD7753DD7727DD779DDD761BD + 001170B730B0037FF0562F6132322BB3186057D0FB034420D4900DD9DC76B0A3 + A878182DB48BB8B98EC82E574D10F4F007CE9A4EBB3022F48CD559FDD26BDDCF + 6F8DD7F8BCDA65CDFFD6FAECDAFCBC04AC7DD7749DDA797CB727710567E00543 + 92D0CCB70572F7A1B41AD9C6EDD04460782D000127BD6B17ADC1344A401ADD65 + C2AAA3EFD5564F9D1998B1019D28DA112420CD6DDA0DA3D7B64DDEE65DDEE87D + DEE4ED01E9DDDEEAEDDEF0FDDEF28DDE1E8006EC3DDF68ED016920066260123B + C0006B3001524063E79924C32D018F6DAF42B0AF0BAEE00CFEE00E1EE102D0E0 + 130EE1152EE1149EE10230D124C004C27985CD286A14696E45CBCA28C5D9D24A + 0F2854A0446501967274E21D43E5EDD7768DDBEE4DE37B2DDF38BEE3E69DD77C + 8DDF330EE47AEDE336BED71E40006B259E7470D3FD98993EF0E46FCA9EC73DE5 + 9CAC043860020094FF97176DB958CC5E8D686A28BE197F7A0F27B96601A76031 + EE3CECBDE66CCEE6F6DDE6701EE772BEE6F93DE76D6EDF62FDE671EED676DEE7 + 7EFEE7807EE76B8E063340942B1004571007DD036D4324054F8EC90499E015BE + E01A4EE9937EE996EEE0969EE917DEE9955EE188559F2B49CA57FC390D5B52E0 + BBCA278E5327B20C6DC041BAC3660A83E669DE36747EEBF7FDD56C5EE7409EEB + 73EDEBF41DECBC7EEBF39DEBC6AEEBC8FEDEC75EE7BB4EECC96EDB317D0317B8 + 0351B0BC98F9E41A2703E7E399C54DE5DE6EB8FF73BDE1BDA012899FA1A0E209 + 4459612EE66D32D5F862295C56EB8214E8F45EEFF67EEFF89EEFFA5EDF683099 + 817807543000CB9BFF1C075C57D1370409FEE99B8EE90CAFE99ECEF00BEFF002 + 30D993ABE53A08DD1B4C210524965A2179A6B3EE27B206DDFDE212E24EB92CEF + 06B1EF2ABFF22CDFF22CBF002A4012E84A0510B0120E75F3527000F16A0243D0 + ED92FEED869BF00F9DDC9750F1A33E88DB1BDD896840B459E2264E1F201FD280 + 22EBD93D7028EF301E500259BFF5F6ADF55E8F065EBFF5613FF6622FF625F0F5 + 649FF6653FF667BFF66EAFF670FFF6721FF75ADFF5737FF7FA6DBCD983816F35 + 871BFA3DCCF705DA4E699FE9F00B7FF8109FF888BFF8973E04786AF4D32A6E22 + 2EB416F9F450CFEAAD690DA278F5F3EEF6EC4DF69F2FF7A11FFA745FF670AEF5 + 6C1EF6A4EFF9AC8FFFFAADBFE6A0BFF5A32FFBB4AFE7AE1FFBAABFE67A9F686D + F006ADEAAA1AB72403D9F386AFF8C6CFF8C80FF1C96D72906FF1BD7AD9A61E96 + A8D04D4513F59AF1BDB36EF59C8FF55EDFF6630FF6737FF6DE0FFE69EFFD590F + F6E6FFFD6C5FFE2500F6E8BFFEE12FFE6FFFFE674FFE77DFFE709FFE72BFDF38 + 0C08645D036E5F18187E8888665F5F3E2D244F434A4202959796999742989D9A + 9F9EA1A09902124F1A5803AAABACADAEAFB0B167B3AD6363090970BABBBCBDBC + B8036B0D6DC4C5C6C7C70D1B6B67B1AE671F1FCDCED4D5D6D7D8B0251EDBDDDC + DFDEE1E0E3E2E5E4E7E6E9E8DC25EAEEECEFF1EBF215624D2B1759716B135289 + 7A3E0E613023C550FF8B1C4F7E0858288408C385A344617A288AA22587A0880C + 9140E2C2986C20B3CD9A762B97AF93BD12046BD005994B64CA98859C49B3A6CD + 55F0DAE9DCA93327CF9F3B7DB6130AB4A8D1A34089225D6A5429539D0AD2DC63 + 42264E17088E30E81198A8A09939087F1091688953D94D684199E5146AAD26B7 + 434CE42813E5A6DD91B406D8C26512651D5D093E7ED8C0B24BCB9788634EA3B6 + 785563BB9023AF0AD70E4DCF1296E171B35C19B367CEE5867ADEDC4D3468D33C + 2D671E7D79B56870AA75828E1D5BF3E7A4A55BA7060ADADE0D265400C41970C0 + DF568152186138F84482C288D0C94A8F9E51420E264124DBCCCBAA24CA5D63CE + 10EE12A07C80C388FF5D2AD6CEBE7DB6A7F0E3CB9F4FBFBEFDFA69C4FCE69185 + 0221337E249208063E980120130839E750276BB1C5D659103E286183694DC8D6 + 0F2668B0857B35E1D5CC5E70F40558786BFCD1451C148411471CE7A5F7D27A1C + C628E364A7C966E34FA0D9E6136CB97516946738DE98DB6CA1F104CE513BB206 + 0F9147EEE6A393A9E9D7020B6184B1070452084420065214F485063990608204 + 435037DD9911B9750911449840021375CC28125EABEC95CB9D2B918762952CB6 + E8224CCB3C26E7A09095A080A188B673E8A13B2D9A28543C395A94A394425AE9 + A59622CA68A49A72BAE94F923EAA68A79B621AEAA7A4768AC40D2D904181050D + B86186565A1E2205FF0820842981040B3AE8EBAFC0062BECB00DFD704A2A84DE + 5452606B9C48C18A1444DB277A7F160363B2D8DA5469A340853AAAA9A266EA6D + AA98723B6EA99D7E1BAEB9DDA6CBA9BAA8B20B2F1A52DE1186707548A1C7715A + E29A6B826556486184035B48B0C0976C745D1D1F655B8D87AAD812DE1F7130C0 + 4095613C3B6DB5C904EAF0C721912B32B8248F6C72C9289FAC72CA2CAF7CF212 + FAAD1004030074518621030AE4EFBFCD0D3116B140072DF40F12685817C8CED0 + C9CA070D0410C6C5D16ACC22B51C5F8BF4D5B12880C6A29C695D6EAAF08AACE8 + D68F6E5B36A4F38E3AF6A55D934B36BA6A9B1CB7D9E8B2CD76CC30EC90451751 + 14B765403BCB90EBFF13098D75968307276EF0E2BF0A40044717C489F535B308 + B367D41A974775B5564FEEB92A0A842EFAE8A4976EFAE9A8A7AEFAEAACB7EEFA + EBB0B38E061731A0B2030014D4F1853F3AEFCC3399870B2DFCF044FC503B1C9F + 3306CD1A6D049022E62B6ACEB1319D278FF42CB12F1ABAA6A593BABDF6A8738F + 72F7A68BFFFDEBE65F4AFEE8DE83CFBEE8E92BC0451322E43D45006F6861C671 + BE8320380891F0195A1007AC8311904207DC44F132842CEBC1A2720DB85CD4A2 + E7A7E9B5A17A0ECCD6484487000E9AAE83AD0321E944383A1192307BAF3B61E8 + 54A80016A2F0851F64DFFC6E70012A848001C4A155FF7616C0E00DEF87C26213 + 47E074B40CB20282FFCECBD804A3B7B93F61D08884A2050CA748C52A5A11755B + BBA2EA66D7041AF2C00914F880160EB14310CC4106609284E180C84661190F15 + 512003141D7306CB3D6F89D2B3E0053D36C76441CC831D0C24205B4848411AB2 + 90883CA42209793A419630918C1C212417F9C8455A7292923421264F78493074 + 31032CB0D81AB4F0851DCA40067368810C22219636BAF257C5AB5D1D54D24724 + DE515A1BD3E313FBE81E0F8D21759A5CA1072BB9C94C42B29191142627597749 + 625E5293941C66323149CC472EA18B176041161870860994F1946794014202F6 + CA720A81682B7043C3E6084109E2328F16DC252F2543A75BC061930878663E0B + B94F43E6F39FFE04FFA8402709507EFE9383FDC4A7400B1AC88532B485FD74E8 + 411B4A51832ED4A20145C035479081203821046D38E50ECF388733B2F267E66C + 63F14880857542D1964AC4E5D4F4B84799CC534623D10B1CEAE0064329F398C5 + 7464249F19D462FEF490472D2A5185BA54A53A95A830BB070CAAC000299CD177 + E09C831FCE08B094AA940824D8C21D78D9CE5B66AE82D393E74DEFF2213840C0 + 0D5A50C11214D00789DAF5AE19C5AB5E2F4A51896274AF800D2844034BD8C222 + 607E2BC0020F0C74D5C0A1720EFB5A654286E05536B6A9050D7C691D9B66560A + 36D1456A5DEB4CE8948BB76AE100311083A1F27A578CFEB5A28A4CA85D13D9DA + BE1A96B5B01DEC43FF6D7BDB81F25601F6C0C7160EF085C6FAEFB125C5C01CD2 + D8CACA12EF141728A211CB1AD3B37E363DA1152D48723A06B7BAC10B07388006 + 622057DDF6F6BCE84DAF7AD7CB5E892256033E68841EE6E02F703E560FA70C0B + 659D2BB4956AA00CB5DC6C12A1C7449A6657BBD8A045774D1BDE032C97044DE0 + C212F06ADE88EE75B0AFB5707BCF5BE1C27678C3B3B5470E348001E22AF794C8 + 2DA98AC549821FF037686C225A0E36C4CECDBAD3BA06E62382B793D3D2C2B5C1 + E17D3079278C001714F9C8F9347292FFA9E4231BF9C94866B240A1DC64805259 + CA576EF295ADECE42E6F39CA5AF63298A73C66282F39CB588EF299BB2C3F15DC + 40034CF8C2017C405B5254DAB9A4F31567E15E1C34633121C0C218301ED15A35 + 1DEF98267859F0774F0B64071F444C5CA82B88274DE94A5B3AB02E58829BE11C + 5E82E499A42A46048B79C567620DE1092D0074043B9BCB781AFAD02151B07719 + 0DE44000003B} + end + end + object Button1: TButton + Left = 24 + Top = 216 + Width = 75 + Height = 25 + Caption = 'Button1' + TabOrder = 2 + OnClick = Button1Click + end + object PopupMenu1: TPopupMenu + Left = 104 + Top = 16 + object Opciones1: TMenuItem + Action = actOpciones + end + object Refrescarconexin1: TMenuItem + Action = actRestart + end + object N2: TMenuItem + Caption = '-' + end + object Acercade1: TMenuItem + Action = actAcerca + end + object N1: TMenuItem + Caption = '-' + end + object Cerrar1: TMenuItem + Action = actCerrar + end + end + object ActionList: TActionList + Left = 72 + Top = 16 + object actCerrar: TAction + Caption = '&Cerrar' + OnExecute = actCerrarExecute + end + object actRestart: TAction + Caption = 'Refrescar conexi'#243'n' + OnExecute = actRestartExecute + end + object actOpciones: TAction + Caption = '&Configuraci'#243'n...' + OnExecute = actOpcionesExecute + end + object actConexiones: TAction + Caption = 'Lista de conexiones...' + OnExecute = actConexionesExecute + end + object actAcerca: TAction + Caption = 'Acerca de...' + OnExecute = actAcercaExecute + end + end + object XPManifest1: TXPManifest + Left = 40 + Top = 16 + end + object JvTrayIcon: TJvTrayIcon + IconIndex = 0 + DropDownMenu = PopupMenu1 + PopupMenu = PopupMenu1 + Delay = 300 + Snap = True + Visibility = [tvVisibleTaskBar, tvAutoHide] + Left = 8 + Top = 16 + end + object JvAppInstances1: TJvAppInstances + AutoActivate = False + OnCmdLineReceived = JvAppInstances1CmdLineReceived + Left = 136 + Top = 16 + end +end diff --git a/Source/Servidor/uServerMainForm.pas b/Source/Servidor/uServerMainForm.pas new file mode 100644 index 00000000..eb28cdd6 --- /dev/null +++ b/Source/Servidor/uServerMainForm.pas @@ -0,0 +1,130 @@ +unit uServerMainForm; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, + uROClient, uROPoweredByRemObjectsButton, uROClientIntf, uROServer, + uROBinMessage, uROIndyHTTPServer, uROIndyTCPServer, frxClass, frxPreview, + JvComponent, JvTrayIcon, ActnList, Menus, XPMan, JvExControls, + JvGradient, JvGIF, ExtCtrls, JvComponentBase, JvAppInst; + +type + TfServerForm = class(TForm) + Memo1: TMemo; + PopupMenu1: TPopupMenu; + ActionList: TActionList; + actCerrar: TAction; + Cerrar1: TMenuItem; + actRestart: TAction; + actOpciones: TAction; + actConexiones: TAction; + Opciones1: TMenuItem; + Refrescarconexin1: TMenuItem; + N2: TMenuItem; + XPManifest1: TXPManifest; + JvTrayIcon: TJvTrayIcon; + Panel1: TPanel; + Image1: TImage; + JvGradient1: TJvGradient; + Button1: TButton; + actAcerca: TAction; + Acercade1: TMenuItem; + N1: TMenuItem; + JvAppInstances1: TJvAppInstances; + procedure actCerrarExecute(Sender: TObject); + procedure actRestartExecute(Sender: TObject); + procedure actOpcionesExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure actAcercaExecute(Sender: TObject); + procedure actConexionesExecute(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure JvAppInstances1CmdLineReceived(Sender: TObject; + CmdLine: TStrings); + private + { Private declarations } + public + { Public declarations } + end; + +var + fServerForm : TfServerForm; + +implementation + +uses + uDataModuleServer, uConfiguracion, uAcercaDe; + +{$R *.dfm} + +procedure TfServerForm.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfServerForm.actConexionesExecute(Sender: TObject); +var + i: Integer; +begin + JvTrayIcon.ShowApplication; + with Memo1.Lines do + begin + Clear; + for i := 0 to dmServer.ConnectionManager.Connections.Count - 1 do + Memo1.Lines.Add(dmServer.ConnectionManager.Connections[i].Name + ' -> ' + dmServer.ConnectionManager.Connections[i].ConnectionString); + end; +// JvTrayIcon.HideApplication; +end; + +procedure TfServerForm.actRestartExecute(Sender: TObject); +begin + dmServer.RefrescarConexion; +end; + +procedure TfServerForm.Button1Click(Sender: TObject); +begin + JvTrayIcon.HideApplication; +end; + +procedure TfServerForm.actOpcionesExecute(Sender: TObject); +var + AForm : TForm; +begin + AForm := TfConfiguracion.Create(NIL); + try + AForm.ShowModal; + finally + AForm.Free; + actRestart.Execute; + end; +end; + +procedure TfServerForm.FormCreate(Sender: TObject); +begin + JvTrayIcon.HideApplication; + JvTrayIcon.Active := True; +end; + +procedure TfServerForm.JvAppInstances1CmdLineReceived(Sender: TObject; + CmdLine: TStrings); +begin + dmServer.RefrescarConexion; +end; + +procedure TfServerForm.FormClose(Sender: TObject; var Action: TCloseAction); +begin + JvTrayIcon.Active := False; +end; + +procedure TfServerForm.actAcercaExecute(Sender: TObject); +begin + with TfAcercaDe.Create(NIL) do + try + ShowModal; + finally + Free; + end; +end; + +end. diff --git a/Source/Servidor/uUsersManager.pas b/Source/Servidor/uUsersManager.pas new file mode 100644 index 00000000..b039cf47 --- /dev/null +++ b/Source/Servidor/uUsersManager.pas @@ -0,0 +1,97 @@ +unit uUsersManager; + +interface + +uses + uROSessions, FactuGES_Intf, uSesionesUtils, uDataModuleServer; + +type + TUserInfo = class(TObject) + private + FSession : TROSession; + FLoginInfo : TRdxLoginInfo; + function GetLoginInfo: TRdxLoginInfo; + procedure SetLoginInfo(const Value: TRdxLoginInfo); + function GetEsAdministrador: Boolean; + function GetEmpresas: String; + public + constructor Create(ASession : TROSession); overload; + constructor Create(ASessionID : TGUID); overload; + destructor Destroy; override; + property LoginInfo : TRdxLoginInfo read GetLoginInfo write SetLoginInfo; + property EsAdministrador : Boolean read GetEsAdministrador; + property Empresas : String read GetEmpresas; + end; + + + + +implementation + +uses Classes, srvLogin_Impl, SysUtils; + +{ TUserInfo } + +constructor TUserInfo.Create(ASession: TROSession); +begin + FSession := ASession; + FLoginInfo := TRdxLoginInfo(SesionesHelper.GetSessionObject(FSession, SESION_LOGININFO)); +end; + +constructor TUserInfo.Create(ASessionID: TGUID); +begin + Create(dmServer.SessionManager.FindSession(ASessionID)); +end; + +destructor TUserInfo.Destroy; +begin + inherited; +end; + +function TUserInfo.GetEmpresas: String; +var + I: Integer; + AList : TStringList; +begin + Result := ''; + AList := TStringList.Create; + try + AList.Sorted := True; + AList.Delimiter := ','; + AList.Duplicates := dupIgnore; + + for I := 0 to FLoginInfo.Empresas.Count - 1 do + AList.Add(IntToStr(FLoginInfo.Empresas.Items[I])); + + Result := AList.DelimitedText; + finally + AList.Free; + end; +end; + +function TUserInfo.GetEsAdministrador: Boolean; +var + I: Integer; +begin + Result := False; + + for I := 0 to FLoginInfo.Perfiles.Count - 1 do + if FLoginInfo.Perfiles.Items[I] = PERFIL_ADMINISTRADORES then + begin + Result := True; + Break; + end; +end; + +function TUserInfo.GetLoginInfo: TRdxLoginInfo; +begin + Result := FLoginInfo; +end; + +procedure TUserInfo.SetLoginInfo(const Value: TRdxLoginInfo); +begin + FLoginInfo := Value; + SesionesHelper.SaveSessionObject(FSession, SESION_LOGININFO, FLoginInfo); +end; + +end.