diff --git a/2.1.0/Build/Build.fbl5 b/2.1.0/Build/Build.fbl5 new file mode 100644 index 0000000..a0a34f4 Binary files /dev/null and b/2.1.0/Build/Build.fbl5 differ diff --git a/2.1.0/Build/Build.fbp5 b/2.1.0/Build/Build.fbp5 new file mode 100644 index 0000000..9ba8727 --- /dev/null +++ b/2.1.0/Build/Build.fbp5 @@ -0,0 +1,2862 @@ + + + + + + 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 + True + True + False + False + False + False + False + False + False + True + 3082 + + 2 + 0 + 0 + False + 0 + %source_path%\Servidor\AdminPV_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 + True + 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;%project_path%\Lib\SDAC; + 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/2.1.0/Build/Build.fbv b/2.1.0/Build/Build.fbv new file mode 100644 index 0000000..048e500 --- /dev/null +++ b/2.1.0/Build/Build.fbv @@ -0,0 +1 @@ + diff --git a/2.1.0/Build/Build.fbw b/2.1.0/Build/Build.fbw new file mode 100644 index 0000000..e69de29 diff --git a/2.1.0/Build/buildlog.html b/2.1.0/Build/buildlog.html new file mode 100644 index 0000000..de5c813 --- /dev/null +++ b/2.1.0/Build/buildlog.html @@ -0,0 +1,1557 @@ + + + + + + +FinalBuilder Log for Project Build.fbp5 + + +

FinalBuilder 5 LogFile for Build.fbp5

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Project File :C:\Varela_D2007\Build\Build.fbl5
Log Title :Build.fbp5
Date :08/10/2007
Start Time :12:43:05
End Time :12:43:43
Run Time :00:00:37

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StatusAction NameDescriptionStart TimeEnd TimeRun TimeOutput
Show All
Hide All
-Action ListAction List: Main12:43:0612:43:4300:00:37
CompletedSet VariableSet Variable project_path to [ C:\Varela_D2007\Build ]12:43:0612:43:0600:00:00
CompletedString ReplaceString Replace12:43:0612:43:0600:00:00View
+
+
CompletedAction GroupBorrar ficheros temporales12:43:0612:43:0600:00:00
CompletedRun DOS CommandRun DOS Command [ C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\msbuild.exe "C:\Varela_D2007\Source\ClearFiles.msbuild" /t:CleanFiles ]12:43:0612:43:1000:00:04View
+
+
CompletedAction GroupCrear directorios de salida12:43:1012:43:1000:00:00
CompletedList IteratorList Iterator12:43:1012:43:1000:00:00View
+
+
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Debug\Cliente ]12:43:1012:43:1000:00:00View
+
+
CompletedList IteratorList Iterator12:43:1012:43:1000:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Debug\Servidor ]12:43:1012:43:1000:00:00View
+
+
CompletedList IteratorList Iterator12:43:1012:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Debug\Servidor\Carga ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Debug\Servidor\Almacen ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Debug\Servidor\Informes ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Release\Cliente ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Release\Servidor ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Release\Servidor\Carga ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Release\Servidor\Almacen ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedCreate DirectoryCreate Directory [ C:\Varela_D2007\Output\Release\Servidor\Informes ]12:43:1112:43:1100:00:00View
+
+
CompletedList IteratorList Iterator12:43:1112:43:1100:00:00
CompletedReset Variable to DefaultReset Variable to Default12:43:1112:43:1100:00:00
CompletedLog Variable ValuesListar valores de las variables del proyecto12:43:1112:43:1200:00:00View
+
+
CompletedAction GroupServidor12:43:1212:43:1200:00:00
CompletedCompile Delphi Win32 ProjectCompile Servidor\AdminPV_Server.dpr12:43:1212:43:2100:00:09View
+
+
CompletedAction GroupBase12:43:2112:43:2100:00:00
CompletedCompile Delphi Win32 ProjectCompile Base\BaseD10.dpk12:43:2112:43:2300:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile ControlesBase\ControlesBaseD10.dpk12:43:2312:43:2500:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\Parametros\Cliente\Parametros.dpk12:43:2512:43:2600:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Usuarios\Usuarios.dpk12:43:2612:43:2700:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Configuracion\Configuracion.dpk12:43:2712:43:2800:00:01View
+
+
CompletedAction GroupMódulos12:43:2812:43:2800:00:00
CompletedCompile Delphi Win32 ProjectCompile Modulos\FicherosEDI\Cliente\FicherosEDI.dpk12:43:2812:43:3000:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\VentasTerminadas\Cliente\VentasTerminadas.dpk12:43:3012:43:3200:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\VentasProceso\Cliente\VentasProceso.dpk12:43:3212:43:3300:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\ReferenciaGenerica\Cliente\ReferenciaGenerica.dpk12:43:3312:43:3400:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\Recepciones\Cliente\Recepciones.dpk12:43:3412:43:3600:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\Devoluciones\Cliente\Devoluciones.dpk12:43:3612:43:3700:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\Traspasos\Cliente\Traspasos.dpk12:43:3712:43:3900:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile Modulos\Stock\Cliente\Stock.dpk12:43:3912:43:4100:00:01View
+
+
CompletedAction GroupCliente12:43:4112:43:4100:00:00
CompletedCompile Delphi Win32 ProjectCompile Cliente\AdminPV.dpr 12:43:4112:43:4200:00:01View
+
+
CompletedCompile Delphi Win32 ProjectCompile CargaEDI\CargaEDI.dpr ]12:43:4212:43:4300:00:00View
+
+
CompletedAction GroupCopiar los informes al directorio de salida12:43:4312:43:4300:00:00
CompletedCopy File(s)Copy File(s) [ C:\Varela_D2007\Source\Informes\*.* ]12:43:4312:43:4300:00:00View
+
+
CompletedExport LogExport Log12:43:4312:43:4300:00:00


+ + + diff --git a/2.1.0/Database/1 - tablas.sql b/2.1.0/Database/1 - tablas.sql new file mode 100644 index 0000000..ce96e0f --- /dev/null +++ b/2.1.0/Database/1 - tablas.sql @@ -0,0 +1,878 @@ +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_CABINV]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_CABINV] +GO + +CREATE TABLE [RDX_CABINV] ( + [NUMDOC] varchar(25) NOT NULL, + [TIPODOC] varchar(3) NULL, + [TIPOLIQ] varchar(3) NULL, + [FECHA] datetime NULL, + [FECHALIQ] datetime NULL, + [EMISOR] varchar(17) NULL, + [RECEPTOR] varchar(17) NULL, + [DPTO] varchar(3) NULL, + [CENTRO] varchar(17) NULL, + [FECHA_CARGA] datetime NULL, + [IGNORAR] varchar(1) NULL, + [CARGADO] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_CABINV] +ADD PRIMARY KEY CLUSTERED ([NUMDOC]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABINV_idx] ON [RDX_CABINV] + ([FECHALIQ]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABINV_idx2] ON [RDX_CABINV] + ([CENTRO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABINV_idx3] ON [RDX_CABINV] + ([IGNORAR]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CABINV] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_LININV]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_LININV] +GO + +CREATE TABLE [RDX_LININV] ( + [NUMDOC] varchar(25) NOT NULL, + [NUMLIN] numeric(6, 0) NOT NULL, + [CODART] varchar(17) NULL, + [FAMILIA] varchar(17) NULL, + [BARRA] varchar(17) NULL, + [TALLA] varchar(17) NULL, + [MARCA] varchar(25) NULL, + [TAMANO] varchar(25) NULL, + [SERIE] varchar(25) NULL, + [COLOR] varchar(25) NULL, + [MODELO] varchar(25) NULL, + [DIBUJO] varchar(25) NULL, + [DESCRIP] varchar(70) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_LININV] +ADD PRIMARY KEY CLUSTERED ([NUMDOC], [NUMLIN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_LININV_idx] ON [RDX_LININV] + ([CODART]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LININV] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_CANTINV]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_CANTINV] +GO + +CREATE TABLE [RDX_CANTINV] ( + [NUMDOC] varchar(25) NOT NULL, + [NUMLIN] numeric(6, 0) NOT NULL, + [NUMCANT] numeric(6, 0) NOT NULL, + [TIPOCANT] varchar(3) NULL, + [CANTIDAD] numeric(15, 0) NULL, + [CENTRO] varchar(17) NULL, + [TMOV] varchar(3) NULL, + [FACT] varchar(12) NULL, + [DEPTO] varchar(3) NULL, + [IDVEN] varchar(10) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_CANTINV] +ADD PRIMARY KEY CLUSTERED ([NUMDOC], [NUMLIN], [NUMCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CANTINV_idx] ON [RDX_CANTINV] + ([CENTRO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CANTINV_idx2] ON [RDX_CANTINV] + ([TIPOCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CANTINV_idx3] ON [RDX_CANTINV] + ([IDVEN]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CANTINV] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_CABVEN]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_CABVEN] +GO + +CREATE TABLE [RDX_CABVEN] ( + [CLAVE1] numeric(10, 0) NOT NULL, + [NUMINF] varchar(35) NULL, + [FUNCION] varchar(10) NULL, + [FECINI] datetime NULL, + [FECFIN] datetime NULL, + [FECINF] datetime NULL, + [PERVENINI] datetime NULL, + [PERVENFIN] datetime NULL, + [EANOFI] varchar(17) NULL, + [EANEMI] varchar(17) NULL, + [EANREC] varchar(17) NULL, + [EANVEN] varchar(17) NULL, + [EANALM] varchar(17) NULL, + [EANREP] varchar(17) NULL, + [EANPRO] varchar(17) NULL, + [EANADMSA] varchar(17) NULL, + [EANREPSR] varchar(17) NULL, + [ADMVENSA] varchar(35) NULL, + [REPDEPSR] varchar(35) NULL, + [EMAILSA] varchar(35) NULL, + [NUMFAXSA] varchar(35) NULL, + [NUMTELSA] varchar(35) NULL, + [NUMTLXSA] varchar(35) NULL, + [X400SA] varchar(35) NULL, + [EMAILSR] varchar(35) NULL, + [NUMFAXSR] varchar(35) NULL, + [NUMTELSR] varchar(35) NULL, + [NUMTLXSR] varchar(35) NULL, + [X400SR] varchar(35) NULL, + [NUMPRE] varchar(35) NULL, + [NUMINFSC] varchar(35) NULL, + [NUMCON] varchar(35) NULL, + [FECPRE] datetime NULL, + [FECINFSC] datetime NULL, + [FECCON] datetime NULL, + [DIVPED] varchar(3) NULL, + [DIVPRE] varchar(3) NULL, + [DIVPAG] varchar(3) NULL, + [DIVPEDF] varchar(3) NULL, + [DIVPREF] varchar(3) NULL, + [DIVPAGF] varchar(3) NULL, + [TASCAM] numeric(15, 3) NULL, + [FECTAS] datetime NULL, + [FECHA_CARGA] datetime NULL, + [IGNORAR] varchar(1) NULL, + [CARGADO] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_CABVEN] +ADD PRIMARY KEY CLUSTERED ([CLAVE1]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABVEN_idx] ON [RDX_CABVEN] + ([NUMINF]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABVEN_idx2] ON [RDX_CABVEN] + ([IGNORAR]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CABVEN] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_LUGVEN]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_LUGVEN] +GO + +CREATE TABLE [RDX_LUGVEN] ( + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [EANLUG] varchar(17) NULL, + [LUGVEN] varchar(70) NULL, + [FECINI] datetime NULL, + [FECFIN] datetime NULL, + [PERVENINI] datetime NULL, + [PERVENFIN] datetime NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_LUGVEN] +ADD PRIMARY KEY CLUSTERED ([CLAVE1], [CLAVE2]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_LUGVEN_PERVENINI_IDX] ON [RDX_LUGVEN] + ([PERVENINI]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_LUGVEN_idx] ON [RDX_LUGVEN] + ([EANLUG]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LUGVEN] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_ARTVEN]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_ARTVEN] +GO + +CREATE TABLE [RDX_ARTVEN] ( + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [CLAVE3] numeric(5, 0) NOT NULL, + [EANART] varchar(17) NULL, + [CODCOM] varchar(35) NULL, + [NUMVAR] varchar(35) NULL, + [CODPRO] varchar(35) NULL, + [DESARTCO] varchar(35) NULL, + [DESART] varchar(70) NULL, + [NUMCON] varchar(35) NULL, + [NUMLIS] varchar(35) NULL, + [CONESP1] varchar(3) NULL, + [CONESP2] varchar(3) NULL, + [CONESP3] varchar(3) NULL, + [VALVEN] numeric(15, 3) NULL, + [PRENETCT] numeric(15, 3) NULL, + [PREBRUCT] numeric(15, 3) NULL, + [PREINFET] numeric(15, 3) NULL, + [PREINFFT] numeric(15, 3) NULL, + [PRECALCT] numeric(15, 3) NULL, + [PRENETCA] numeric(15, 3) NULL, + [PREBRUCA] numeric(15, 3) NULL, + [PREINFEA] numeric(15, 3) NULL, + [PREINFFA] numeric(15, 3) NULL, + [PRECALCA] numeric(15, 3) NULL, + [BAPRUN1] numeric(9, 0) NULL, + [UNIMED1] varchar(3) NULL, + [BAPRUN2] numeric(9, 0) NULL, + [UNIMED2] varchar(3) NULL, + [BAPRUN3] numeric(9, 0) NULL, + [UNIMED3] varchar(3) NULL, + [BAPRUN4] numeric(9, 0) NULL, + [UNIMED4] varchar(3) NULL, + [BAPRUN5] numeric(9, 0) NULL, + [UNIMED5] varchar(3) NULL, + [CANVEN] numeric(15, 3) NULL, + [EXIPRO] numeric(15, 3) NULL, + [DESEXI] numeric(15, 3) NULL, + [ESPMEDCV] varchar(3) NULL, + [ESPMEDEP] varchar(3) NULL, + [ESPMEDDE] varchar(3) NULL, + [CANDEV] numeric(15, 3) NULL, + [EANVEN] varchar(17) NULL, + [NOMVEN] varchar(70) NULL, + [NUMTALON] varchar(35) NULL, + [CANVENNET] numeric(15, 3) NULL, + [UMEDVENNET] varchar(3) NULL, + [CANESP] numeric(15, 3) NULL, + [UMEDESP] varchar(3) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_ARTVEN] +ADD PRIMARY KEY CLUSTERED ([CLAVE1], [CLAVE2], [CLAVE3]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_ARTVEN_idx] ON [RDX_ARTVEN] + ([EANART]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_ARTVEN_idx2] ON [RDX_ARTVEN] + ([CODCOM]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_ARTVEN_idx4] ON [RDX_ARTVEN] + ([NUMTALON]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_ARTVEN_idx5] ON [RDX_ARTVEN] + ([EANVEN]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_ARTVEN] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_INFORMES]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_INFORMES] +GO + +CREATE TABLE [RDX_INFORMES] ( + [ID] smallint IDENTITY(1, 1) NOT NULL, + [CATEGORIA] varchar(15) NULL, + [ICONO] smallint NULL, + [NOMBRE] varchar(50) NULL, + [DESCRIPCION] varchar(255) NULL, + [ORDEN] smallint NULL, + [VISTA] text NULL, + [MODIFICABLE] char(1) CONSTRAINT [DF__RDX_INFOR__MODIF__5C78A0F0] DEFAULT 'S' NOT NULL +) +ON [PRIMARY] +TEXTIMAGE_ON [PRIMARY] +GO + +ALTER TABLE [RDX_INFORMES] +ADD CONSTRAINT [RDX_INFORMES_pk] +PRIMARY KEY CLUSTERED ([ID]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INFORMES_idx] ON [RDX_INFORMES] + ([CATEGORIA]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_INFORMES] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_LOG_CARGA]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_LOG_CARGA] +GO + +CREATE TABLE [RDX_LOG_CARGA] ( + [ID] int IDENTITY(1, 1) NOT NULL, + [REPORT] varchar(10) NOT NULL, + [FECHA] datetime NOT NULL, + [OK] bit NOT NULL, + [ERROR_MSG] varchar(255) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_LOG_CARGA] +ADD UNIQUE NONCLUSTERED ([ID]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LOG_CARGA] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_REFERENCIA_GENERICA]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_REFERENCIA_GENERICA] +GO + +CREATE TABLE [RDX_REFERENCIA_GENERICA] ( + [NUMINF] varchar(35) NOT NULL, + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [CLAVE3] numeric(5, 0) NOT NULL, + [FECHACAMBIO] datetime NOT NULL, + [ESTADO] char(1) NOT NULL, + [CODIGO_BARRA] varchar(25) NULL, + [CANVEN] numeric(15, 3) NULL, + [CANESP] numeric(15, 3) NULL, + [CANVENNET] numeric(15, 3) NULL, + [NUMCON] smallint CONSTRAINT [DF__RDX_REFER__NUMCO__28C3F2C0] DEFAULT 0 NOT NULL, + [VALVEN] numeric(15, 3) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_REFERENCIA_GENERICA] +ADD CONSTRAINT [PK__RDX_REFERENCIA_G__68DE77D5] +PRIMARY KEY CLUSTERED ([NUMINF], [CLAVE1], [CLAVE2], [CLAVE3], [NUMCON]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_REFERENCIA_GENERICA_idx] ON [RDX_REFERENCIA_GENERICA] + ([FECHACAMBIO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_REFERENCIA_GENERICA_idx2] ON [RDX_REFERENCIA_GENERICA] + ([CODIGO_BARRA]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_REFERENCIA_GENERICA_idx3] ON [RDX_REFERENCIA_GENERICA] + ([ESTADO]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_REFERENCIA_GENERICA] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_AJUSTES_ALBARAN]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_AJUSTES_ALBARAN] +GO + +CREATE TABLE [RDX_AJUSTES_ALBARAN] ( + [ALBARAN] char(7) NOT NULL, + [ESTADO] varchar(15) NULL, + [OBSERVACIONES] varchar(255) NULL, + [CONTABILIZAR] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_AJUSTES_ALBARAN] +ADD CONSTRAINT [PK__RDX_AJUSTES_ALBA__1B69F7A2] +PRIMARY KEY CLUSTERED ([ALBARAN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_AJUSTES_ALBARAN_idx] ON [RDX_AJUSTES_ALBARAN] + ([ESTADO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_AJUSTES_ALBARAN_idx2] ON [RDX_AJUSTES_ALBARAN] + ([CONTABILIZAR]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_AJUSTES_ALBARAN] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_AJUSTES_HOJA_DEVOLUCIONES]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_AJUSTES_HOJA_DEVOLUCIONES] +GO + +CREATE TABLE [RDX_AJUSTES_HOJA_DEVOLUCIONES] ( + [NUMHOJA] char(8) NOT NULL, + [ESTADO] varchar(20) NULL, + [OBSERVACIONES] varchar(255) NULL, + [CONTABILIZAR] char(1) CONSTRAINT [DF__RDX_AJUST__CONTA__7BF14C49] DEFAULT 'S' NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_AJUSTES_HOJA_DEVOLUCIONES] +ADD CONSTRAINT [PK__RDX_AJUSTES_HOJA__483C9E19] +PRIMARY KEY CLUSTERED ([NUMHOJA]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_AJUSTES_HOJA_DEVOLUCIONES] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_DEVOLUCION_AJUSTES]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_DEVOLUCION_AJUSTES] +GO + +CREATE TABLE [RDX_DEVOLUCION_AJUSTES] ( + [FECHA] datetime NOT NULL, + [CENTRO] varchar(17) NOT NULL, + [CODIGO] varchar(12) NOT NULL, + [COLOR] varchar(10) NOT NULL, + [APROBADO] char(1) NULL, + [FECHACAMBIO] datetime NULL, + [CANT38] numeric(15, 0) NULL, + [CANT40] numeric(15, 0) NULL, + [CANT42] numeric(15, 0) NULL, + [CANT44] numeric(15, 0) NULL, + [CANT46] numeric(15, 0) NULL, + [CANT48] numeric(15, 0) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_DEVOLUCION_AJUSTES] +ADD CONSTRAINT [PK_RDX_DEVOLUCION_AJUSTES_2F70F04A] +PRIMARY KEY CLUSTERED ([FECHA], [CENTRO], [CODIGO], [COLOR]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_DEVOLUCION_AJUSTES_idx] ON [RDX_DEVOLUCION_AJUSTES] + ([APROBADO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_DEVOLUCION_AJUSTES_idx2] ON [RDX_DEVOLUCION_AJUSTES] + ([FECHACAMBIO]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_DEVOLUCION_AJUSTES] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_RECEPCION_AJUSTES]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_RECEPCION_AJUSTES] +GO + +CREATE TABLE [RDX_RECEPCION_AJUSTES] ( + [FECHA] datetime NOT NULL, + [CENTRO] varchar(17) NOT NULL, + [CODIGO] varchar(12) NOT NULL, + [COLOR] varchar(10) NOT NULL, + [APROBADO] char(1) NULL, + [FECHACAMBIO] datetime NULL, + [CANT38] numeric(15, 0) NULL, + [CANT40] numeric(15, 0) NULL, + [CANT42] numeric(15, 0) NULL, + [CANT44] numeric(15, 0) NULL, + [CANT46] numeric(15, 0) NULL, + [CANT48] numeric(15, 0) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_RECEPCION_AJUSTES] +ADD CONSTRAINT [PK_RDX_RECEPCION_AJUSTES_2F70F04F] +PRIMARY KEY CLUSTERED ([FECHA], [CENTRO], [CODIGO], [COLOR]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_RECEPCION_AJUSTES_idx] ON [RDX_RECEPCION_AJUSTES] + ([FECHACAMBIO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_RECEPCION_AJUSTES_idx2] ON [RDX_RECEPCION_AJUSTES] + ([APROBADO]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_RECEPCION_AJUSTES] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_TRASPASOS_AJUSTES]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_TRASPASOS_AJUSTES] +GO + +CREATE TABLE [RDX_TRASPASOS_AJUSTES] ( + [FECHA] datetime NOT NULL, + [CENTRO] varchar(17) NOT NULL, + [CENTRO2] varchar(17) NOT NULL, + [CODIGO] varchar(12) NOT NULL, + [COLOR] varchar(10) NOT NULL, + [APROBADO] char(1) NULL, + [ESTADO] varchar(20) NULL, + [OBSERVACIONES] varchar(255) NULL, + [CONTABILIZAR] char(1) NULL, + [FECHACAMBIO] datetime NULL, + [CANT38] numeric(15, 0) NULL, + [CANT40] numeric(15, 0) NULL, + [CANT42] numeric(15, 0) NULL, + [CANT44] numeric(15, 0) NULL, + [CANT46] numeric(15, 0) NULL, + [CANT48] numeric(15, 0) NULL, + [TIPOCANT] varchar(3) NOT NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_TRASPASOS_AJUSTES] +ADD CONSTRAINT [PK_RDX_TRASPASOS_AJUSTES_2F70F04A] +PRIMARY KEY CLUSTERED ([FECHA], [CENTRO], [CENTRO2], [CODIGO], [COLOR]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_TRASPASOS_AJUSTES_idx] ON [RDX_TRASPASOS_AJUSTES] + ([APROBADO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_TRASPASOS_AJUSTES_idx2] ON [RDX_TRASPASOS_AJUSTES] + ([ESTADO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_TRASPASOS_AJUSTES_idx3] ON [RDX_TRASPASOS_AJUSTES] + ([FECHACAMBIO]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_TRASPASOS_AJUSTES] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_FILIALES]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_FILIALES] +GO + +CREATE TABLE [RDX_FILIALES] ( + [CODFILIAL] char(6) NULL, + [CODBARRA] varchar(17) NULL +) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_FILIALES_idx] ON [RDX_FILIALES] + ([CODBARRA]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_FILIALES_idx2] ON [RDX_FILIALES] + ([CODFILIAL]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_FILIALES] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_TALLAS]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_TALLAS] +GO + +CREATE TABLE [RDX_TALLAS] ( + [TALLA] char(2) NOT NULL +) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_TALLAS_idx] ON [RDX_TALLAS] + ([TALLA]) +ON [PRIMARY] +GO + + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_TALLAS] +TO [public] +GO + + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_INVENTARIOEDI]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_INVENTARIOEDI] +GO + +CREATE TABLE [RDX_INVENTARIOEDI] ( + [NUMDOC] varchar(25) NOT NULL, + [NUMLIN] numeric(6, 0) NOT NULL, + [NUMCANT] numeric(6, 0) NOT NULL, + [TIPOCANT] varchar(3) NULL, + [FECHA] datetime NULL, + [CENTRO] varchar(17) NULL, + [FILIAL] varchar(25) NULL, + [CODVEN] varchar(10) NULL, + [VENDEDOR] varchar(66) NULL, + [CODIGO_BARRA] varchar(17) NULL, + [CODIGO] varchar(12) NULL, + [PRODUCTO] varchar(40) NULL, + [COLOR] varchar(10) NULL, + [TALLA] varchar(8) NULL, + [CANTIDAD] numeric(15, 0) NULL, + [CENTRO2] varchar(17) NULL, + [FILIAL2] varchar(25) NULL, + [ULTIMO_INVENTARIO] char(1) NULL, + [IGNORAR] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_INVENTARIOEDI] +ADD CONSTRAINT [RDX_INVENTARIOEDI_pk] +PRIMARY KEY CLUSTERED ([NUMDOC], [NUMLIN], [NUMCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx] ON [RDX_INVENTARIOEDI] + ([TIPOCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx2] ON [RDX_INVENTARIOEDI] + ([FECHA]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx3] ON [RDX_INVENTARIOEDI] + ([CENTRO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx4] ON [RDX_INVENTARIOEDI] + ([CODVEN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx5] ON [RDX_INVENTARIOEDI] + ([CODIGO_BARRA]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx6] ON [RDX_INVENTARIOEDI] + ([CODIGO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx7] ON [RDX_INVENTARIOEDI] + ([CENTRO2]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx8] ON [RDX_INVENTARIOEDI] + ([ULTIMO_INVENTARIO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx9] ON [RDX_INVENTARIOEDI] + ([CENTRO], [CODIGO], [COLOR], [TALLA]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_INVENTARIOEDI] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[RDX_VENTASEDI]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_VENTASEDI] +GO + +CREATE TABLE [RDX_VENTASEDI] ( + [NUMINF] varchar(35) NOT NULL, + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [CLAVE3] numeric(5, 0) NOT NULL, + [PERVENINI] datetime NULL, + [NUMTALON] varchar(35) NULL, + [EANLUG] varchar(17) NULL, + [FILIAL] varchar(25) NULL, + [EANVEN] varchar(17) NULL, + [CODVEN] varchar(4) NULL, + [VENDEDOR] varchar(66) NULL, + [EANART] varchar(17) NULL, + [CODCOM] varchar(35) NULL, + [PRODUTO] varchar(12) NULL, + [DESC_PRODUTO] varchar(40) NULL, + [COR_PRODUTO] varchar(10) NULL, + [GRADE] varchar(8) NULL, + [TIPO_PRODUTO] varchar(25) NULL, + [GRUPO_PRODUTO] varchar(25) NULL, + [DESC_COLECAO] varchar(40) NULL, + [VALVEN] numeric(15, 3) NULL, + [CANVEN] numeric(15, 3) NULL, + [CANDEV] numeric(15, 3) NULL, + [CANVENNET] numeric(15, 3) NULL, + [CANESP] numeric(15, 3) NULL, + [IGNORAR] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_VENTASEDI] +ADD CONSTRAINT [RDX_VENTASEDI_pk] +PRIMARY KEY CLUSTERED ([NUMINF], [CLAVE1], [CLAVE2], [CLAVE3]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx] ON [RDX_VENTASEDI] + ([PERVENINI]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx2] ON [RDX_VENTASEDI] + ([NUMTALON]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx3] ON [RDX_VENTASEDI] + ([EANVEN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx4] ON [RDX_VENTASEDI] + ([CODVEN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx5] ON [RDX_VENTASEDI] + ([EANART]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx6] ON [RDX_VENTASEDI] + ([CODCOM]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx7] ON [RDX_VENTASEDI] + ([PRODUTO]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_VENTASEDI] +TO [public] +GO + +/* EOF */ + + diff --git a/2.1.0/Database/2.1 - vistas inventario.sql b/2.1.0/Database/2.1 - vistas inventario.sql new file mode 100644 index 0000000..8f2bca3 --- /dev/null +++ b/2.1.0/Database/2.1 - vistas inventario.sql @@ -0,0 +1,1175 @@ +DROP VIEW [RDX_V_TRASPASOS_AJUSTES_DESGLOSADO] +GO + +DROP VIEW [RDX_V_HOJAS_TRASPASOS] +GO + +DROP VIEW [RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO] +GO + +DROP VIEW [RDX_V_CONTROL_RECEPCION_DESGLOSADO] +GO + +DROP VIEW [RDX_V_RECEPCION_AJUSTES_DESGLOSADO] +GO + +DROP VIEW [RDX_V_CONTROL_DEVOLUCIONES] +GO + +DROP VIEW [RDX_V_DEVOLUCIONES] +GO + +DROP VIEW [RDX_V_HOJAS_DEVOLUCIONES] +GO + +DROP VIEW [RDX_V_CONTROL_RECEPCION_ALBARANES] +GO + +DROP VIEW [RDX_V_ALBARANES_PENDIENTES] +GO + +DROP VIEW [RDX_V_CONTROL_RECEPCION] +GO + +DROP VIEW [RDX_V_RECEPCION] +GO + +DROP VIEW [RDX_V_ALBARANES] +GO + +DROP VIEW [RDX_V_CONTROL_TRASPASOS] +GO + +DROP VIEW [RDX_V_TRASPASOS] +GO + +DROP VIEW [RDX_V_TRASPASO_SALIDA] +GO + +DROP VIEW [RDX_V_TRASPASO_ENTRADA] +GO + +DROP VIEW [RDX_V_INVENTARIOEDI_TRASPASO_SALIDA] +GO + +DROP VIEW [RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA] +GO + +DROP VIEW [RDX_V_INVENTARIOEDI_TRASPASO] +GO + +DROP VIEW [RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA] +GO + +DROP VIEW [RDX_V_INVENTARIOEDI_RECEPCION] +GO + +DROP VIEW [RDX_V_INVENTARIO_MAXFECHAS] +GO + +DROP VIEW [RDX_V_ULTIMO_INVENTARIO] +GO + +IF EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[RDX_V_INVENTARIOEDI_PESADA]')) +DROP VIEW [RDX_V_INVENTARIOEDI_PESADA] +GO + +DROP VIEW [RDX_V_INVENTARIOEDI] +GO + + + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO2, + FILIAL2, + ULTIMO_INVENTARIO +FROM RDX_INVENTARIOEDI +WHERE FECHA >= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ +AND ((IGNORAR IS NULL) OR (IGNORAR <> 'S')) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI_PESADA AS +SELECT + RDX_CANTINV.NUMDOC, + RDX_CANTINV.NUMLIN, + RDX_CANTINV.NUMCANT, + RDX_CANTINV.TIPOCANT, + RDX_CABINV.FECHALIQ AS FECHA, + RDX_CABINV.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_CABINV.CENTRO), + RDX_CANTINV.IDVEN AS CODVEN, + VENDEDOR = ISNULL(LTRIM(RTRIM(LOJA_VENDEDORES.NOME_VENDEDOR)) + ' ' + LTRIM(RTRIM(LOJA_VENDEDORES.VENDEDOR_APELIDO)), RDX_CANTINV.IDVEN), + RDX_LININV.CODART AS CODIGO_BARRA, + CODIGO = ISNULL(PRODUTOS.PRODUTO, '107CH.EN.01'), + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA **** LLAMAR AL CI'), + COLOR = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, 300), + TALLA = PRODUTOS_BARRA.GRADE, + RDX_CANTINV.CANTIDAD, + CENTRO2 = RDX_CANTINV.CENTRO, + FILIAL2 = ISNULL(FILIAIS2.FILIAL, RDX_CANTINV.CENTRO) +FROM RDX_CANTINV +INNER JOIN RDX_LININV ON + ((RDX_LININV.NUMDOC = RDX_CANTINV.NUMDOC) AND + (RDX_LININV.NUMLIN = RDX_CANTINV.NUMLIN)) +INNER JOIN RDX_CABINV ON + (RDX_CABINV.NUMDOC = RDX_LININV.NUMDOC) +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_CABINV.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN RDX_FILIALES RDX_FILIALES2 ON (RDX_FILIALES2.CODBARRA = RDX_CANTINV.CENTRO) +LEFT OUTER JOIN FILIAIS FILIAIS2 ON (FILIAIS2.COD_FILIAL = RDX_FILIALES2.CODFILIAL) +LEFT OUTER JOIN LOJA_VENDEDORES ON (LOJA_VENDEDORES.RG = RDX_CANTINV.IDVEN) +LEFT OUTER JOIN PRODUTOS_BARRA ON ((PRODUTOS_BARRA.CODIGO_BARRA = RDX_LININV.CODART)) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +WHERE RDX_CABINV.FECHALIQ >= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ +AND (RDX_CABINV.IGNORAR IS NULL) OR (RDX_CABINV.IGNORAR <> 'S') +GO + +/*--------------- SQL ---------------*/ +/*Modificamos la vista para que cuando nos de el último inventario de las tallas de tipo2 las convertimos a TIPO1 para el calculo de STOCK*/ + +CREATE VIEW RDX_V_ULTIMO_INVENTARIO AS +SELECT RDX_INVENTARIOEDI.FECHA, + RDX_INVENTARIOEDI.CENTRO, + RDX_INVENTARIOEDI.FILIAL, + RDX_INVENTARIOEDI.CODIGO, + PRODUTOS.TIPO_PRODUTO as TIPO_PRODUCTO, + PRODUTOS.GRUPO_PRODUTO as GRUPO_PRODUCTO, + PRODUTOS.COLECAO as COLECCION, + RDX_INVENTARIOEDI.PRODUCTO, + RDX_INVENTARIOEDI.COLOR, + CASE UPPER(RDX_INVENTARIOEDI.TALLA) + WHEN 'S' THEN '38' + WHEN 'M' THEN '40' + WHEN 'L' THEN '42' + WHEN 'XL' THEN '44' + ELSE RDX_INVENTARIOEDI.TALLA + END AS TALLA, + SUM(RDX_INVENTARIOEDI.CANTIDAD) AS CANTIDAD +FROM RDX_INVENTARIOEDI +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = RDX_INVENTARIOEDI.CODIGO) + +WHERE (RDX_INVENTARIOEDI.TIPOCANT = '145') AND + (RDX_INVENTARIOEDI.ULTIMO_INVENTARIO IS NOT NULL) +GROUP BY +RDX_INVENTARIOEDI.FECHA, +RDX_INVENTARIOEDI.CENTRO, +RDX_INVENTARIOEDI.FILIAL, +RDX_INVENTARIOEDI.CODIGO, +PRODUTOS.TIPO_PRODUTO, +PRODUTOS.GRUPO_PRODUTO, +PRODUTOS.COLECAO, +RDX_INVENTARIOEDI.PRODUCTO, +RDX_INVENTARIOEDI.COLOR, +RDX_INVENTARIOEDI.TALLA +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIO_MAXFECHAS AS +SELECT + CENTRO, + CODIGO, + COLOR, + TALLA, + FECHA = MAX(FECHA) +FROM RDX_INVENTARIOEDI +WHERE TIPOCANT = 145 + AND FECHA >= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ + AND (IGNORAR IS NULL) OR (IGNORAR <> 'S') +GROUP BY + CENTRO, + CODIGO, + COLOR, + TALLA +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI_RECEPCION AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD +FROM RDX_V_INVENTARIOEDI +WHERE TIPOCANT = 194 /* RECEPCION DE PRENDAS DESDE VARELA */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD +FROM RDX_V_INVENTARIOEDI +WHERE (TIPOCANT = 61) /* DEVOLUCION DE PRENDAS A VARELA */ + OR (TIPOCANT = 65) /* DEVOLUCION POR TARA */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI_TRASPASO AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO2, + FILIAL2 +FROM RDX_V_INVENTARIOEDI +WHERE (TIPOCANT = 46) or (TIPOCANT = 48) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO_ORIGEN = CENTRO2, + FILIAL_ORIGEN = FILIAL2 +FROM RDX_V_INVENTARIOEDI +WHERE TIPOCANT = 46 /* ENTRADA DE PRENDAS DESDE OTRO CENTRO */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIOEDI_TRASPASO_SALIDA AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO_DESTINO = CENTRO2, + FILIAL_DESTINO = FILIAL2 +FROM RDX_V_INVENTARIOEDI +WHERE TIPOCANT = 48 /* SALIDA DE PRENDAS A OTRO CENTRO */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_TRASPASO_ENTRADA AS +SELECT + CENTRO_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO_ORIGEN, + FILIAL_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL_ORIGEN, + + CENTRO_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO, + FILIAL_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL, + + CODIGO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CODIGO, + PRODUCTO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.PRODUCTO, + COLOR = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.COLOR, + FECHA = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FECHA, + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + T38 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 38) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA) = 'S')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T40 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 40) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA) = 'M')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T42 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 42) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA) = 'L')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T44 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 44) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA) = 'XL')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + + TOTAL = SUM(ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0)) + +FROM + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA +GROUP BY + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO_ORIGEN, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL_ORIGEN, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CODIGO, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.PRODUCTO, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.COLOR, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FECHA +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_TRASPASO_SALIDA AS +SELECT + CENTRO_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO, + FILIAL_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL, + + CENTRO_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO_DESTINO, + FILIAL_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL_DESTINO, + + CODIGO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CODIGO, + PRODUCTO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.PRODUCTO, + COLOR = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.COLOR, + FECHA = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FECHA, + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + T38 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 38) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA) = 'S')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T40 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 40) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA) = 'M')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T42 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 42) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA) = 'L')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T44 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 44) OR (UPPER(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA) = 'XL')) THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + + TOTAL = SUM(ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0)) +FROM + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA +GROUP BY + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO_DESTINO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL_DESTINO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CODIGO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.PRODUCTO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.COLOR, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FECHA +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_TRASPASOS AS +SELECT + TIPO = 'S', + CENTRO_ORIGEN as CENTRO, + FILIAL_ORIGEN as FILIAL, + CENTRO_DESTINO as CENTRO2, + FILIAL_DESTINO as FILIAL2, + CODIGO, + PRODUCTO, + COLOR, + FECHA, + T38, + T40, + T42, + T44, + T46, + T48, + TOTAL +FROM RDX_V_TRASPASO_SALIDA +UNION +SELECT + 'E', + CENTRO_DESTINO, + FILIAL_DESTINO, + CENTRO_ORIGEN, + FILIAL_ORIGEN, + CODIGO, + PRODUCTO, + COLOR, + FECHA, + T38, + T40, + T42, + T44, + T46, + T48, + TOTAL +FROM RDX_V_TRASPASO_ENTRADA +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_CONTROL_TRASPASOS AS +SELECT + RDX_V_TRASPASOS.TIPO, + RDX_V_TRASPASOS.FECHA, + RDX_V_TRASPASOS.CENTRO, + RDX_V_TRASPASOS.FILIAL, + RDX_V_TRASPASOS.CENTRO2, + RDX_V_TRASPASOS.FILIAL2, + APROBADO = ISNULL(RDX_TRASPASOS_AJUSTES.APROBADO, 'N'), + ESTADO_TRASPASO = RDX_TRASPASOS_AJUSTES.ESTADO, + OBSERVACIONES = RDX_TRASPASOS_AJUSTES.OBSERVACIONES, + CONTABILIZAR = ISNULL(RDX_TRASPASOS_AJUSTES.CONTABILIZAR, 'S'), + RDX_TRASPASOS_AJUSTES.FECHACAMBIO, + RDX_V_TRASPASOS.CODIGO, + RDX_V_TRASPASOS.PRODUCTO, + RDX_V_TRASPASOS.COLOR, + RDX_V_TRASPASOS.T38, + RDX_V_TRASPASOS.T40, + RDX_V_TRASPASOS.T42, + RDX_V_TRASPASOS.T44, + RDX_V_TRASPASOS.T46, + RDX_V_TRASPASOS.T48, + RDX_V_TRASPASOS.TOTAL, + TR38 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT38, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_S, RDX_V_TRASPASOS.T38)), + TR40 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT40, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_M, RDX_V_TRASPASOS.T40)), + TR42 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT42, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_L, RDX_V_TRASPASOS.T42)), + TR44 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT44, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_XL, RDX_V_TRASPASOS.T44)), + TR46 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT46, RDX_V_TRASPASOS.T46), + TR48 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT48, RDX_V_TRASPASOS.T48), + TOTAL_RECT = + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT38, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_S, RDX_V_TRASPASOS.T38)), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT40, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_M, RDX_V_TRASPASOS.T40)), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT42, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_L, RDX_V_TRASPASOS.T42)), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT44, ISNULL(RDX_TRASPASOS_AJUSTES.CANT_XL, RDX_V_TRASPASOS.T44)), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT46, RDX_V_TRASPASOS.T46), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT48, RDX_V_TRASPASOS.T48), 0) +FROM RDX_V_TRASPASOS +LEFT OUTER JOIN RDX_TRASPASOS_AJUSTES ON + ((RDX_TRASPASOS_AJUSTES.CENTRO = RDX_V_TRASPASOS.CENTRO) AND + (RDX_TRASPASOS_AJUSTES.CENTRO2 = RDX_V_TRASPASOS.CENTRO2) AND + (RDX_TRASPASOS_AJUSTES.CODIGO = RDX_V_TRASPASOS.CODIGO) AND + (RDX_TRASPASOS_AJUSTES.COLOR = RDX_V_TRASPASOS.COLOR) AND + (RDX_TRASPASOS_AJUSTES.FECHA = RDX_V_TRASPASOS.FECHA) AND + (RDX_TRASPASOS_AJUSTES.TIPOCANT = RDX_V_TRASPASOS.TIPO)) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_ALBARANES AS +SELECT + FATURAMENTO.NF_SAIDA AS ALBARAN, + FATURAMENTO.EMISSAO AS FECHA, + RDX_FILIALES.CODBARRA AS CENTRO, + FATURAMENTO.NOME_CLIFOR AS FILIAL, + PRODUTOS_BARRA.CODIGO_BARRA, + FATURAMENTO_PROD.PRODUTO AS CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + PRODUTOS_BARRA.COR_PRODUTO AS COLOR, + PRODUTOS_BARRA.GRADE AS TALLA, + CANTIDAD = CASE UPPER(PRODUTOS_BARRA.GRADE) + WHEN '38' THEN F1 + WHEN 'S' THEN F1 + WHEN '40' THEN F2 + WHEN 'M' THEN F2 + WHEN '42' THEN F3 + WHEN 'L' THEN F3 + WHEN '44' THEN F4 + WHEN 'XL' THEN F4 + WHEN '46' THEN F5 + WHEN '48' THEN F6 + END, + RDX_AJUSTES_ALBARAN.ESTADO, + RDX_AJUSTES_ALBARAN.OBSERVACIONES, + CONTABILIZAR = ISNULL(RDX_AJUSTES_ALBARAN.CONTABILIZAR, 'S') +FROM FATURAMENTO_PROD +INNER JOIN FATURAMENTO ON + ((FATURAMENTO.NF_SAIDA = FATURAMENTO_PROD.NF_SAIDA) AND + (FATURAMENTO.SERIE_NF = FATURAMENTO_PROD.SERIE_NF)) +INNER JOIN FATURAMENTO_TIPO ON + (LTRIM(RTRIM(FATURAMENTO.TIPO_FATURAMENTO)) = FATURAMENTO_TIPO.TIPO_FATURAMENTO) +LEFT OUTER JOIN FILIAIS ON + (FILIAIS.FILIAL = FATURAMENTO.NOME_CLIFOR) +LEFT OUTER JOIN RDX_FILIALES ON + (RDX_FILIALES.CODFILIAL = FILIAIS.COD_FILIAL) +LEFT OUTER JOIN PRODUTOS_BARRA ON + (((PRODUTOS_BARRA.PRODUTO = FATURAMENTO_PROD.PRODUTO) AND + (PRODUTOS_BARRA.COR_PRODUTO = FATURAMENTO_PROD.COR_PRODUTO)) AND + ((PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F1 <> 0) THEN '38' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F1 <> 0) THEN 'S' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F2 <> 0) THEN '40' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F2 <> 0) THEN 'M' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F3 <> 0) THEN '42' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F3 <> 0) THEN 'L' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F4 <> 0) THEN '44' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F4 <> 0) THEN 'XL' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F5 <> 0) THEN '46' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F6 <> 0) THEN '48' END))) +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +LEFT OUTER JOIN RDX_AJUSTES_ALBARAN ON + (RDX_AJUSTES_ALBARAN.ALBARAN = FATURAMENTO.NF_SAIDA) +WHERE FATURAMENTO_TIPO.INDICADOR_TIPO = 'VTPT' /* ALBARANES DE PRODUCTOS TERMINADOS */ +AND FATURAMENTO.NOME_CLIFOR LIKE '%INGLES%' /* ALBARANES PARA CENTROS DEL CORTE INGLES */ +AND FATURAMENTO.EMISSAO >= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_RECEPCION AS +SELECT + CENTRO = ISNULL(RDX_V_ALBARANES.CENTRO, RDX_V_INVENTARIOEDI_RECEPCION.CENTRO), + FILIAL = ISNULL(RDX_V_ALBARANES.FILIAL, RDX_V_INVENTARIOEDI_RECEPCION.FILIAL), + CODIGO = ISNULL(RDX_V_ALBARANES.CODIGO, RDX_V_INVENTARIOEDI_RECEPCION.CODIGO), + PRODUCTO = ISNULL(RDX_V_ALBARANES.PRODUCTO, RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO), + COLOR = ISNULL(RDX_V_ALBARANES.COLOR, RDX_V_INVENTARIOEDI_RECEPCION.COLOR), + FECHA = ISNULL(RDX_V_ALBARANES.FECHA, RDX_V_INVENTARIOEDI_RECEPCION.FECHA), + + /* ALBARAN Y ESTADO */ + ALBARAN = RDX_V_ALBARANES.ALBARAN, + ESTADO_ALBARAN = RDX_V_ALBARANES.ESTADO, + OBSERVACIONES_ALBARAN = RDX_V_ALBARANES.OBSERVACIONES, + CONTABILIZAR_ALBARAN = ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S'), + + /* CANTIDADES ENVIADAS DESDE VARELA */ + E38 = SUM(CASE WHEN ((RDX_V_ALBARANES.TALLA = 38) OR (UPPER(RDX_V_ALBARANES.TALLA) = 'S')) THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E40 = SUM(CASE WHEN ((RDX_V_ALBARANES.TALLA = 40) OR (UPPER(RDX_V_ALBARANES.TALLA) = 'M')) THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E42 = SUM(CASE WHEN ((RDX_V_ALBARANES.TALLA = 42) OR (UPPER(RDX_V_ALBARANES.TALLA) = 'L')) THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E44 = SUM(CASE WHEN ((RDX_V_ALBARANES.TALLA = 44) OR (UPPER(RDX_V_ALBARANES.TALLA) = 'XL')) THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E46 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 46 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E48 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 48 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + ENVIADO = SUM( + CASE ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END + ), + + /* CANTIDADES RECIBIDAS EN EL CENTRO*/ + R38 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 38) OR (UPPER(RDX_V_INVENTARIOEDI_RECEPCION.TALLA) = 'S')) THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R40 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 40) OR (UPPER(RDX_V_INVENTARIOEDI_RECEPCION.TALLA) = 'M')) THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R42 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 42) OR (UPPER(RDX_V_INVENTARIOEDI_RECEPCION.TALLA) = 'L')) THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R44 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 44) OR (UPPER(RDX_V_INVENTARIOEDI_RECEPCION.TALLA) = 'XL')) THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + RECIBIDO = SUM(ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0)), + + DIFERENCIA = SUM( + CASE ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END + ) - + SUM(ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0)) +FROM + RDX_V_ALBARANES +FULL OUTER JOIN RDX_V_INVENTARIOEDI_RECEPCION ON + ((RDX_V_INVENTARIOEDI_RECEPCION.CENTRO = RDX_V_ALBARANES.CENTRO) AND + (RDX_V_INVENTARIOEDI_RECEPCION.CODIGO_BARRA = RDX_V_ALBARANES.CODIGO_BARRA) AND + (RDX_V_INVENTARIOEDI_RECEPCION.FECHA = RDX_V_ALBARANES.FECHA)) +GROUP BY + ISNULL(RDX_V_ALBARANES.CENTRO, RDX_V_INVENTARIOEDI_RECEPCION.CENTRO), + ISNULL(RDX_V_ALBARANES.FILIAL, RDX_V_INVENTARIOEDI_RECEPCION.FILIAL), + ISNULL(RDX_V_ALBARANES.CODIGO, RDX_V_INVENTARIOEDI_RECEPCION.CODIGO), + ISNULL(RDX_V_ALBARANES.PRODUCTO, RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO), + ISNULL(RDX_V_ALBARANES.COLOR, RDX_V_INVENTARIOEDI_RECEPCION.COLOR), + ISNULL(RDX_V_ALBARANES.FECHA, RDX_V_INVENTARIOEDI_RECEPCION.FECHA), + RDX_V_ALBARANES.ALBARAN, + RDX_V_ALBARANES.ESTADO, + RDX_V_ALBARANES.OBSERVACIONES, + ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S') +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_CONTROL_RECEPCION AS +SELECT + APROBADO = ISNULL(RDX_RECEPCION_AJUSTES.APROBADO, 'N'), + RDX_RECEPCION_AJUSTES.FECHACAMBIO, + + RDX_V_RECEPCION.CENTRO, + RDX_V_RECEPCION.FILIAL, + RDX_V_RECEPCION.CODIGO, + RDX_V_RECEPCION.PRODUCTO, + RDX_V_RECEPCION.COLOR, + RDX_V_RECEPCION.FECHA, + + /* ALBARAN Y ESTADO */ + RDX_V_RECEPCION.ALBARAN, + RDX_V_RECEPCION.ESTADO_ALBARAN, + RDX_V_RECEPCION.OBSERVACIONES_ALBARAN, + RDX_V_RECEPCION.CONTABILIZAR_ALBARAN, + + /* CANTIDADES ENVIADAS DESDE VARELA */ + E38, E40, E42, E44, E46, E48, RDX_V_RECEPCION.ENVIADO, + + /* CANTIDADES RECIBIDAS EN EL CENTRO*/ + R38, R40, R42, R44, R46, R48, RDX_V_RECEPCION.RECIBIDO, + + /* CANTIDADES RECIBIDAS RECTIFICADAS */ + RR38 = ISNULL(RDX_RECEPCION_AJUSTES.CANT38, ISNULL(RDX_RECEPCION_AJUSTES.CANT_S, R38)), + RR40 = ISNULL(RDX_RECEPCION_AJUSTES.CANT40, ISNULL(RDX_RECEPCION_AJUSTES.CANT_M, R40)), + RR42 = ISNULL(RDX_RECEPCION_AJUSTES.CANT42, ISNULL(RDX_RECEPCION_AJUSTES.CANT_L, R42)), + RR44 = ISNULL(RDX_RECEPCION_AJUSTES.CANT44, ISNULL(RDX_RECEPCION_AJUSTES.CANT_XL, R44)), + RR46 = ISNULL(RDX_RECEPCION_AJUSTES.CANT46, R46), + RR48 = ISNULL(RDX_RECEPCION_AJUSTES.CANT48, R48), + + RECIBIDO_RECT = + ISNULL(RDX_RECEPCION_AJUSTES.CANT38, ISNULL(RDX_RECEPCION_AJUSTES.CANT_S, ISNULL(R38, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT40, ISNULL(RDX_RECEPCION_AJUSTES.CANT_M, ISNULL(R40, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT42, ISNULL(RDX_RECEPCION_AJUSTES.CANT_L, ISNULL(R42, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT44, ISNULL(RDX_RECEPCION_AJUSTES.CANT_XL, ISNULL(R44, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT46, ISNULL(R46, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT48, ISNULL(R48, 0)), + + DIFERENCIA = + ( + ISNULL(RDX_RECEPCION_AJUSTES.CANT38, ISNULL(RDX_RECEPCION_AJUSTES.CANT_S, ISNULL(R38, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT40, ISNULL(RDX_RECEPCION_AJUSTES.CANT_M, ISNULL(R40, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT42, ISNULL(RDX_RECEPCION_AJUSTES.CANT_L, ISNULL(R42, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT44, ISNULL(RDX_RECEPCION_AJUSTES.CANT_XL, ISNULL(R44, 0))) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT46, ISNULL(R46, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT48, ISNULL(R48, 0)) + ) - ENVIADO +FROM + RDX_V_RECEPCION +LEFT OUTER JOIN RDX_RECEPCION_AJUSTES ON + ((RDX_RECEPCION_AJUSTES.FECHA = RDX_V_RECEPCION.FECHA) AND + (RDX_RECEPCION_AJUSTES.CENTRO = RDX_V_RECEPCION.CENTRO) AND + (RDX_RECEPCION_AJUSTES.CODIGO = RDX_V_RECEPCION.CODIGO) AND + (RDX_RECEPCION_AJUSTES.COLOR = RDX_V_RECEPCION.COLOR)) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_ALBARANES_PENDIENTES AS +SELECT DISTINCT ALBARAN, APROBADO +FROM RDX_V_CONTROL_RECEPCION +WHERE ALBARAN IS NOT NULL +AND APROBADO = 'N' +GO + +/*--------------- SQL ---------------*/GO + +CREATE VIEW RDX_V_CONTROL_RECEPCION_ALBARANES AS +select RDX_V_CONTROL_RECEPCION.ALBARAN +,ESTADOALBARAN = CASE + WHEN RDX_V_ALBARANES_PENDIENTES.ALBARAN is NULL THEN 'R' + ELSE 'P' + END +,ESTADOPRODUCTO = CASE RDX_V_CONTROL_RECEPCION.APROBADO + WHEN 'N' THEN 'PENDIENTE' + WHEN 'S' THEN 'APROBADO' + END +, CENTRO, FILIAL, FECHA, CODIGO, PRODUCTO, COLOR, E38, E40, E42, E44, E46, E48 +from RDX_V_CONTROL_RECEPCION +left join RDX_V_ALBARANES_PENDIENTES +on (RDX_V_CONTROL_RECEPCION.ALBARAN = RDX_V_ALBARANES_PENDIENTES.ALBARAN) +where RDX_V_CONTROL_RECEPCION.ALBARAN is not null +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_HOJAS_DEVOLUCIONES AS +SELECT + LOJA_SAIDAS.ROMANEIO_PRODUTO AS NUMHOJA, + LOJA_SAIDAS.EMISSAO AS FECHA, + RDX_FILIALES_ORI.CODBARRA AS CENTRO_ORIGEN, + LOJA_SAIDAS.FILIAL AS FILIAL_ORIGEN, + RDX_FILIALES_DES.CODBARRA AS CENTRO_DESTINO, + LOJA_SAIDAS.FILIAL_DESTINO AS FILIAL_DESTINO, + PRODUTOS_BARRA.CODIGO_BARRA, + LOJA_SAIDAS_PRODUTO.PRODUTO AS CODIGO, + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA ****'), + PRODUTOS_BARRA.COR_PRODUTO AS COLOR, + PRODUTOS_BARRA.GRADE AS TALLA, + CANTIDAD = CASE UPPER(PRODUTOS_BARRA.GRADE) + WHEN '38' THEN EN1 + WHEN 'S' THEN EN1 + WHEN '40' THEN EN2 + WHEN 'M' THEN EN2 + WHEN '42' THEN EN3 + WHEN 'L' THEN EN3 + WHEN '44' THEN EN4 + WHEN 'XL' THEN EN4 + WHEN '46' THEN EN5 + WHEN '48' THEN EN6 + END, + RDX_AJUSTES_HOJA_DEVOLUCIONES.ESTADO, + RDX_AJUSTES_HOJA_DEVOLUCIONES.OBSERVACIONES, + CONTABILIZAR = ISNULL(RDX_AJUSTES_HOJA_DEVOLUCIONES.CONTABILIZAR, 'S') +FROM LOJA_SAIDAS_PRODUTO +INNER JOIN LOJA_SAIDAS ON (LOJA_SAIDAS.ROMANEIO_PRODUTO = LOJA_SAIDAS_PRODUTO.ROMANEIO_PRODUTO) +INNER JOIN PRODUTOS_BARRA on + (((PRODUTOS_BARRA.PRODUTO = LOJA_SAIDAS_PRODUTO.PRODUTO) AND + (PRODUTOS_BARRA.COR_PRODUTO = LOJA_SAIDAS_PRODUTO.COR_PRODUTO)) AND + ((PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN1 <> 0) THEN '38' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN1 <> 0) THEN 'S' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN2 <> 0) THEN '40' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN2 <> 0) THEN 'M' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN3 <> 0) THEN '42' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN3 <> 0) THEN 'L' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN4 <> 0) THEN '44' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN4 <> 0) THEN 'XL' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN5 <> 0) THEN '46' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN6 <> 0) THEN '48' END))) +INNER JOIN PRODUTOS on (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +INNER JOIN FILIAIS AS FILIAIS_ORI ON (FILIAIS_ORI.FILIAL = LOJA_SAIDAS.FILIAL) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_ORI ON (RDX_FILIALES_ORI.CODFILIAL = FILIAIS_ORI.COD_FILIAL) +INNER JOIN FILIAIS AS FILIAIS_DES ON (FILIAIS_DES.FILIAL = LOJA_SAIDAS.FILIAL_DESTINO) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_DES ON (RDX_FILIALES_DES.CODFILIAL = FILIAIS_DES.COD_FILIAL) +LEFT OUTER JOIN RDX_AJUSTES_HOJA_DEVOLUCIONES ON + (RDX_AJUSTES_HOJA_DEVOLUCIONES.NUMHOJA = LOJA_SAIDAS.ROMANEIO_PRODUTO) +WHERE + LOJA_SAIDAS.TIPO_ENTRADA_SAIDA = 2 /* DEVOLUCION DE PRENDAS A VARELA */ +AND LOJA_SAIDAS.EMISSAO >= '2006.07.01' /* PARA NO COGER AÑOS ANTERIORES */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_DEVOLUCIONES AS +SELECT + CENTRO = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CENTRO_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CENTRO), + FILIAL = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FILIAL_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FILIAL), + CODIGO = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CODIGO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CODIGO), + PRODUCTO = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.PRODUCTO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.PRODUCTO), + COLOR = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.COLOR, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.COLOR), + FECHA = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FECHA, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FECHA), + + /* HOJA DE MOVIMIENTOS Y ESTADO */ + NUMHOJA = RDX_V_HOJAS_DEVOLUCIONES.NUMHOJA, + ESTADO_HOJA = RDX_V_HOJAS_DEVOLUCIONES.ESTADO, + OBSERVACIONES_HOJA = RDX_V_HOJAS_DEVOLUCIONES.OBSERVACIONES, + CONTABILIZAR_HOJA = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S'), + + /* CANTIDADES SOLICITADAS DESDE VARELA */ + S38 = SUM(CASE WHEN ((RDX_V_HOJAS_DEVOLUCIONES.TALLA = 38) OR (RDX_V_HOJAS_DEVOLUCIONES.TALLA = 'S')) THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S40 = SUM(CASE WHEN ((RDX_V_HOJAS_DEVOLUCIONES.TALLA = 40) OR (RDX_V_HOJAS_DEVOLUCIONES.TALLA = 'M')) THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S42 = SUM(CASE WHEN ((RDX_V_HOJAS_DEVOLUCIONES.TALLA = 42) OR (RDX_V_HOJAS_DEVOLUCIONES.TALLA = 'L')) THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S44 = SUM(CASE WHEN ((RDX_V_HOJAS_DEVOLUCIONES.TALLA = 44) OR (RDX_V_HOJAS_DEVOLUCIONES.TALLA = 'XL')) THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S46 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 46 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S48 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 48 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + SOLICITADO = SUM( + CASE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END + ), + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + E38 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 38) OR (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 'S')) THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E40 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 40) OR (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 'M')) THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E42 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 42) OR (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 'L')) THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E44 = SUM(CASE WHEN ((RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 44) OR (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 'XL')) THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + + ENVIADO = SUM(ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0)), + + DIFERENCIA = SUM( + CASE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END) - + SUM(ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0)) +FROM + RDX_V_HOJAS_DEVOLUCIONES +FULL OUTER JOIN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA ON + ((RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CENTRO = RDX_V_HOJAS_DEVOLUCIONES.CENTRO_ORIGEN) AND + (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CODIGO_BARRA = RDX_V_HOJAS_DEVOLUCIONES.CODIGO_BARRA) AND + (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FECHA = RDX_V_HOJAS_DEVOLUCIONES.FECHA)) +GROUP BY + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CENTRO_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CENTRO), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FILIAL_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FILIAL), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CODIGO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CODIGO), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.PRODUCTO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.PRODUCTO), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.COLOR, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.COLOR), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FECHA, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FECHA), + RDX_V_HOJAS_DEVOLUCIONES.NUMHOJA, + RDX_V_HOJAS_DEVOLUCIONES.ESTADO, + RDX_V_HOJAS_DEVOLUCIONES.OBSERVACIONES, + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S') +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_CONTROL_DEVOLUCIONES AS +SELECT + APROBADO = ISNULL(RDX_DEVOLUCION_AJUSTES.APROBADO, 'N'), + RDX_DEVOLUCION_AJUSTES.FECHACAMBIO, + + RDX_V_DEVOLUCIONES.CENTRO, + RDX_V_DEVOLUCIONES.FILIAL, + RDX_V_DEVOLUCIONES.CODIGO, + RDX_V_DEVOLUCIONES.PRODUCTO, + RDX_V_DEVOLUCIONES.COLOR, + RDX_V_DEVOLUCIONES.FECHA, + + /* HOJA DE MOVIMIENTOS Y ESTADO */ + RDX_V_DEVOLUCIONES.NUMHOJA, + RDX_V_DEVOLUCIONES.ESTADO_HOJA, + RDX_V_DEVOLUCIONES.OBSERVACIONES_HOJA, + RDX_V_DEVOLUCIONES.CONTABILIZAR_HOJA, + + /* CANTIDADES SOLICITADAS DESDE VARELA */ + S38, S40, S42, S44, S46, S48, RDX_V_DEVOLUCIONES.SOLICITADO, + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + E38, E40, E42, E44, E46, E48, RDX_V_DEVOLUCIONES.ENVIADO, + + /* CANTIDADES ENVIADAS RECTIFICADAS */ + ER38 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT38, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_S, E38)), + ER40 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT40, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_M, E40)), + ER42 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT42, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_L, E42)), + ER44 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT44, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_XL, E44)), + ER46 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT46, E46), + ER48 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT48, E48), + + ENVIADO_RECT = + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT38, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_S, ISNULL(E38, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT40, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_M, ISNULL(E40, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT42, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_L, ISNULL(E42, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT44, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_XL, ISNULL(E44, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT46, ISNULL(E46, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT48, ISNULL(E48, 0)), + + DIFERENCIA = + ( + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT38, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_S, ISNULL(E38, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT40, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_M, ISNULL(E40, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT42, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_L, ISNULL(E42, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT44, ISNULL(RDX_DEVOLUCION_AJUSTES.CANT_XL, ISNULL(E44, 0))) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT46, ISNULL(E46, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT48, ISNULL(E48, 0)) + ) - SOLICITADO +FROM + RDX_V_DEVOLUCIONES +LEFT OUTER JOIN RDX_DEVOLUCION_AJUSTES ON + ((RDX_DEVOLUCION_AJUSTES.FECHA = RDX_V_DEVOLUCIONES.FECHA) AND + (RDX_DEVOLUCION_AJUSTES.CENTRO = RDX_V_DEVOLUCIONES.CENTRO) AND + (RDX_DEVOLUCION_AJUSTES.CODIGO = RDX_V_DEVOLUCIONES.CODIGO) AND + (RDX_DEVOLUCION_AJUSTES.COLOR = RDX_V_DEVOLUCIONES.COLOR)) +GO + + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_RECEPCION_AJUSTES_DESGLOSADO AS +SELECT + RDX_RECEPCION_AJUSTES.FECHA, + RDX_RECEPCION_AJUSTES.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_RECEPCION_AJUSTES.CENTRO), + RDX_RECEPCION_AJUSTES.CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + RDX_RECEPCION_AJUSTES.COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE UPPER(RDX_TALLAS.TALLA) + WHEN '38' THEN RDX_RECEPCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_RECEPCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_RECEPCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_RECEPCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_RECEPCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_RECEPCION_AJUSTES.CANT48 + WHEN 'S' THEN RDX_RECEPCION_AJUSTES.CANT_S + WHEN 'M' THEN RDX_RECEPCION_AJUSTES.CANT_M + WHEN 'L' THEN RDX_RECEPCION_AJUSTES.CANT_L + WHEN 'XL' THEN RDX_RECEPCION_AJUSTES.CANT_XL + END +FROM RDX_TALLAS, RDX_RECEPCION_AJUSTES +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_RECEPCION_AJUSTES.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = RDX_RECEPCION_AJUSTES.CODIGO) +WHERE CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_RECEPCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_RECEPCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_RECEPCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_RECEPCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_RECEPCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_RECEPCION_AJUSTES.CANT48 + WHEN 'S' THEN RDX_RECEPCION_AJUSTES.CANT_S + WHEN 'M' THEN RDX_RECEPCION_AJUSTES.CANT_M + WHEN 'L' THEN RDX_RECEPCION_AJUSTES.CANT_L + WHEN 'XL' THEN RDX_RECEPCION_AJUSTES.CANT_XL + END IS NOT NULL +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_CONTROL_RECEPCION_DESGLOSADO AS +SELECT + FECHA = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FECHA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA), + CENTRO = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CENTRO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO), + FILIAL = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FILIAL, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FILIAL), + CODIGO = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CODIGO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO), + PRODUCTO = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.PRODUCTO), + COLOR = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.COLOR, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR), + TALLA = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.TALLA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA), + CANTIDAD = SUM(ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD, RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD)) +FROM + RDX_V_RECEPCION_AJUSTES_DESGLOSADO +FULL OUTER JOIN RDX_V_INVENTARIOEDI_RECEPCION ON + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI_RECEPCION.FECHA) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI_RECEPCION.CENTRO) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI_RECEPCION.CODIGO) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI_RECEPCION.COLOR) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI_RECEPCION.TALLA) + +GROUP BY + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FECHA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CENTRO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FILIAL, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FILIAL), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CODIGO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.PRODUCTO), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.COLOR, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.TALLA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA) +GO + + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO AS +SELECT + RDX_DEVOLUCION_AJUSTES.FECHA, + RDX_DEVOLUCION_AJUSTES.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_DEVOLUCION_AJUSTES.CENTRO), + RDX_DEVOLUCION_AJUSTES.CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + RDX_DEVOLUCION_AJUSTES.COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_DEVOLUCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_DEVOLUCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_DEVOLUCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_DEVOLUCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_DEVOLUCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_DEVOLUCION_AJUSTES.CANT48 + WHEN 'S' THEN RDX_DEVOLUCION_AJUSTES.CANT_S + WHEN 'M' THEN RDX_DEVOLUCION_AJUSTES.CANT_M + WHEN 'L' THEN RDX_DEVOLUCION_AJUSTES.CANT_L + WHEN 'XL' THEN RDX_DEVOLUCION_AJUSTES.CANT_XL + END +FROM RDX_TALLAS, RDX_DEVOLUCION_AJUSTES +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_DEVOLUCION_AJUSTES.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = RDX_DEVOLUCION_AJUSTES.CODIGO) +WHERE CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_DEVOLUCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_DEVOLUCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_DEVOLUCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_DEVOLUCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_DEVOLUCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_DEVOLUCION_AJUSTES.CANT48 + WHEN 'S' THEN RDX_DEVOLUCION_AJUSTES.CANT_S + WHEN 'M' THEN RDX_DEVOLUCION_AJUSTES.CANT_M + WHEN 'L' THEN RDX_DEVOLUCION_AJUSTES.CANT_L + WHEN 'XL' THEN RDX_DEVOLUCION_AJUSTES.CANT_XL + END IS NOT NULL +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_HOJAS_TRASPASOS AS +SELECT + LOJA_SAIDAS.ROMANEIO_PRODUTO AS NUMHOJA, + LOJA_SAIDAS.EMISSAO AS FECHA, + RDX_FILIALES_ORI.CODBARRA AS CENTRO_ORIGEN, + LOJA_SAIDAS.FILIAL AS FILIAL_ORIGEN, + RDX_FILIALES_DES.CODBARRA AS CENTRO_DESTINO, + LOJA_SAIDAS.FILIAL_DESTINO AS FILIAL_DESTINO, + PRODUTOS_BARRA.CODIGO_BARRA, + LOJA_SAIDAS_PRODUTO.PRODUTO AS CODIGO, + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA ****'), + PRODUTOS_BARRA.COR_PRODUTO AS COLOR, + PRODUTOS_BARRA.GRADE AS TALLA, + CANTIDAD = CASE UPPER(PRODUTOS_BARRA.GRADE) + WHEN '38' THEN EN1 + WHEN 'S' THEN EN1 + WHEN '40' THEN EN2 + WHEN 'M' THEN EN2 + WHEN '42' THEN EN3 + WHEN 'L' THEN EN3 + WHEN '44' THEN EN4 + WHEN 'XL' THEN EN4 + WHEN '46' THEN EN5 + WHEN '48' THEN EN6 + END +FROM LOJA_SAIDAS_PRODUTO +INNER JOIN LOJA_SAIDAS ON (LOJA_SAIDAS.ROMANEIO_PRODUTO = LOJA_SAIDAS_PRODUTO.ROMANEIO_PRODUTO) +INNER JOIN PRODUTOS_BARRA on + (((PRODUTOS_BARRA.PRODUTO = LOJA_SAIDAS_PRODUTO.PRODUTO) AND + (PRODUTOS_BARRA.COR_PRODUTO = LOJA_SAIDAS_PRODUTO.COR_PRODUTO)) AND + ((PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN1 <> 0) THEN '38' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN1 <> 0) THEN 'S' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN2 <> 0) THEN '40' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN2 <> 0) THEN 'M' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN3 <> 0) THEN '42' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN3 <> 0) THEN 'L' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN4 <> 0) THEN '44' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN4 <> 0) THEN 'XL' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN5 <> 0) THEN '46' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN6 <> 0) THEN '48' END))) +INNER JOIN PRODUTOS on (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +INNER JOIN FILIAIS AS FILIAIS_ORI ON (FILIAIS_ORI.FILIAL = LOJA_SAIDAS.FILIAL) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_ORI ON (RDX_FILIALES_ORI.CODFILIAL = FILIAIS_ORI.COD_FILIAL) +INNER JOIN FILIAIS AS FILIAIS_DES ON (FILIAIS_DES.FILIAL = LOJA_SAIDAS.FILIAL_DESTINO) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_DES ON (RDX_FILIALES_DES.CODFILIAL = FILIAIS_DES.COD_FILIAL) +WHERE LOJA_SAIDAS.TIPO_ENTRADA_SAIDA = 1 /* TRASPASOS DE PRENDAS A OTRO CENTRO */ +AND LOJA_SAIDAS.EMISSAO >= '2006.07.01' /* PARA NO COGER AÑOS ANTERIORES */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_TRASPASOS_AJUSTES_DESGLOSADO AS +SELECT + RDX_TRASPASOS_AJUSTES.FECHA, + RDX_TRASPASOS_AJUSTES.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_TRASPASOS_AJUSTES.CENTRO), + RDX_TRASPASOS_AJUSTES.CENTRO2, + FILIAL2 = ISNULL(FILIAIS2.FILIAL, RDX_TRASPASOS_AJUSTES.CENTRO2), + TIPO = RDX_TRASPASOS_AJUSTES.TIPOCANT, + RDX_TRASPASOS_AJUSTES.CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + RDX_TRASPASOS_AJUSTES.COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE UPPER(RDX_TALLAS.TALLA) + WHEN '38' THEN RDX_TRASPASOS_AJUSTES.CANT38 + WHEN '40' THEN RDX_TRASPASOS_AJUSTES.CANT40 + WHEN '42' THEN RDX_TRASPASOS_AJUSTES.CANT42 + WHEN '44' THEN RDX_TRASPASOS_AJUSTES.CANT44 + WHEN '46' THEN RDX_TRASPASOS_AJUSTES.CANT46 + WHEN '48' THEN RDX_TRASPASOS_AJUSTES.CANT48 + WHEN 'S' THEN RDX_TRASPASOS_AJUSTES.CANT_S + WHEN 'M' THEN RDX_TRASPASOS_AJUSTES.CANT_M + WHEN 'L' THEN RDX_TRASPASOS_AJUSTES.CANT_L + WHEN 'XL' THEN RDX_TRASPASOS_AJUSTES.CANT_XL + END +FROM RDX_TALLAS, RDX_TRASPASOS_AJUSTES +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_TRASPASOS_AJUSTES.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN RDX_FILIALES AS RDX_FILIALES2 ON (RDX_FILIALES2.CODBARRA = RDX_TRASPASOS_AJUSTES.CENTRO2) +LEFT OUTER JOIN FILIAIS AS FILIAIS2 ON (FILIAIS2.COD_FILIAL = RDX_FILIALES2.CODFILIAL) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = RDX_TRASPASOS_AJUSTES.CODIGO) +WHERE CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_TRASPASOS_AJUSTES.CANT38 + WHEN '40' THEN RDX_TRASPASOS_AJUSTES.CANT40 + WHEN '42' THEN RDX_TRASPASOS_AJUSTES.CANT42 + WHEN '44' THEN RDX_TRASPASOS_AJUSTES.CANT44 + WHEN '46' THEN RDX_TRASPASOS_AJUSTES.CANT46 + WHEN '48' THEN RDX_TRASPASOS_AJUSTES.CANT48 + WHEN 'S' THEN RDX_TRASPASOS_AJUSTES.CANT_S + WHEN 'M' THEN RDX_TRASPASOS_AJUSTES.CANT_M + WHEN 'L' THEN RDX_TRASPASOS_AJUSTES.CANT_L + WHEN 'XL' THEN RDX_TRASPASOS_AJUSTES.CANT_XL + END IS NOT NULL +GO + +/* EOF */ diff --git a/2.1.0/Database/2.2 - vistas ventas.sql b/2.1.0/Database/2.2 - vistas ventas.sql new file mode 100644 index 0000000..7886238 --- /dev/null +++ b/2.1.0/Database/2.2 - vistas ventas.sql @@ -0,0 +1,317 @@ +DROP VIEW [RDX_V_VENTASTERMINADAS] +GO + +DROP VIEW [RDX_V_VENTASPROCESOPENDIENTES] +GO + +DROP VIEW [RDX_V_VENTASPROCESO] +GO + +DROP VIEW [RDX_V_REFERENCIA_GENERICA] +GO + +DROP VIEW [RDX_V_VENTASEDI_ERRONEAS] +GO + +DROP VIEW [RDX_V_VENTASEDI_RESUELTAS] +GO + +DROP VIEW [RDX_V_REFERENCIAS_RESUELTAS] +GO + +IF EXISTS (SELECT * FROM sys.views WHERE object_id = OBJECT_ID(N'[dbo].[RDX_V_VENTASEDI_PESADA]')) +DROP VIEW [RDX_V_VENTASEDI_PESADA] +GO + +DROP VIEW [RDX_V_VENTASEDI] +GO + + + + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASEDI AS +SELECT + NUMINF, + CLAVE1, + CLAVE2, + CLAVE3, + PERVENINI, + NUMTALON, + EANLUG, + FILIAL, + EANVEN, + CODVEN, + VENDEDOR, + EANART, + CODCOM, + PRODUTO, + DESC_PRODUTO, + COR_PRODUTO, + GRADE, + TIPO_PRODUTO, + GRUPO_PRODUTO, + DESC_COLECAO, + VALVEN, + CANVEN, + CANDEV, + CANVENNET, + CANESP, + IGNORAR +FROM RDX_VENTASEDI +WHERE (IGNORAR IS NULL) OR (IGNORAR <> 'S') +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASEDI_PESADA +AS +SELECT + RDX_CABVEN.NUMINF, + RDX_ARTVEN.CLAVE1, + RDX_ARTVEN.CLAVE2, + RDX_ARTVEN.CLAVE3, + RDX_LUGVEN.PERVENINI, + RDX_ARTVEN.NUMTALON, + RDX_LUGVEN.EANLUG, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_LUGVEN.EANLUG), + RDX_ARTVEN.EANVEN, + LOJA_VENDEDORES.VENDEDOR AS CODVEN, + VENDEDOR = ISNULL(LTRIM(RTRIM(LOJA_VENDEDORES.NOME_VENDEDOR)) + ' ' + LTRIM(RTRIM(LOJA_VENDEDORES.VENDEDOR_APELIDO)), RDX_ARTVEN.EANVEN), + RDX_ARTVEN.EANART, + RDX_ARTVEN.CODCOM, + produtos.PRODUTO, + ISNULL(produtos.DESC_PRODUTO, '*** ERROR REFERENCIA **** LLAMAR AL CI') AS DESC_PRODUTO, + PRODUTOS_BARRA.COR_PRODUTO, + PRODUTOS_BARRA.GRADE, + produtos.TIPO_PRODUTO, + produtos.GRUPO_PRODUTO, + COLECOES.DESC_COLECAO, + RDX_ARTVEN.VALVEN, + RDX_ARTVEN.CANVEN, + RDX_ARTVEN.CANDEV, + RDX_ARTVEN.CANVENNET, + RDX_ARTVEN.CANESP +FROM + RDX_ARTVEN + INNER JOIN RDX_LUGVEN ON (RDX_ARTVEN.CLAVE1 = RDX_LUGVEN.CLAVE1 AND RDX_ARTVEN.CLAVE2 = RDX_LUGVEN.CLAVE2) + INNER JOIN RDX_CABVEN ON (RDX_LUGVEN.CLAVE1 = RDX_CABVEN.CLAVE1) + left outer join RDX_FILIALES on (RDX_FILIALES.CODBARRA = RDX_LUGVEN.EANLUG) + left outer join FILIAIS on (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) + LEFT OUTER JOIN LOJA_VENDEDORES ON (LOJA_VENDEDORES.RG LIKE '%' + RDX_ARTVEN.EANVEN + '%') + LEFT OUTER JOIN PRODUTOS_BARRA ON ((PRODUTOS_BARRA.CODIGO_BARRA = RDX_ARTVEN.EANART) or (PRODUTOS_BARRA.CODIGO_BARRA = RDX_ARTVEN.CODCOM)) + LEFT OUTER JOIN PRODUTOS on (produtos.PRODUTO = PRODUTOS_BARRA.PRODUTO) + LEFT OUTER JOIN COLECOES on (COLECOES.COLECAO = PRODUTOS.COLECAO) +WHERE (RDX_CABVEN.IGNORAR IS NULL) OR (RDX_CABVEN.IGNORAR <> 'S') +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_REFERENCIAS_RESUELTAS +AS +SELECT * +FROM RDX_REFERENCIA_GENERICA +WHERE ESTADO = 'R' +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASEDI_RESUELTAS +AS +SELECT + RDX_V_VENTASEDI.NUMINF, + RDX_V_VENTASEDI.CLAVE1, + RDX_V_VENTASEDI.CLAVE2, + RDX_V_VENTASEDI.CLAVE3, + RDX_V_VENTASEDI.PERVENINI, + RDX_V_VENTASEDI.NUMTALON, + RDX_V_VENTASEDI.EANLUG, + RDX_V_VENTASEDI.FILIAL, + RDX_V_VENTASEDI.EANVEN, + RDX_V_VENTASEDI.CODVEN, + RDX_V_VENTASEDI.VENDEDOR, + EANART = ISNULL(RDX_V_REFERENCIAS_RESUELTAS.CODIGO_BARRA, RDX_V_VENTASEDI.EANART), + RDX_V_VENTASEDI.CODCOM, + PRODUTO = ISNULL(PRODUTOS_BARRA.PRODUTO, RDX_V_VENTASEDI.PRODUTO), + DESC_PRODUTO = ISNULL(PRODUTOS.DESC_PRODUTO, RDX_V_VENTASEDI.DESC_PRODUTO), + COR_PRODUTO = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, RDX_V_VENTASEDI.COR_PRODUTO), + GRADE = ISNULL(PRODUTOS_BARRA.GRADE, RDX_V_VENTASEDI.GRADE), + TIPO_PRODUTO = ISNULL(PRODUTOS.TIPO_PRODUTO, RDX_V_VENTASEDI.TIPO_PRODUTO), + GRUPO_PRODUTO = ISNULL(PRODUTOS.GRUPO_PRODUTO, RDX_V_VENTASEDI.GRUPO_PRODUTO), + PRODUTOS.COLECAO, + DESC_COLECAO = ISNULL(COLECOES.DESC_COLECAO, RDX_V_VENTASEDI.DESC_COLECAO), + RDX_V_VENTASEDI.VALVEN, + RDX_V_VENTASEDI.CANVEN, + RDX_V_VENTASEDI.CANDEV, + RDX_V_VENTASEDI.CANVENNET, + RDX_V_VENTASEDI.CANESP +FROM RDX_V_VENTASEDI +LEFT JOIN RDX_V_REFERENCIAS_RESUELTAS ON ( + (RDX_V_REFERENCIAS_RESUELTAS.NUMINF = RDX_V_VENTASEDI.NUMINF) AND + (RDX_V_REFERENCIAS_RESUELTAS.CLAVE1 = RDX_V_VENTASEDI.CLAVE1) AND + (RDX_V_REFERENCIAS_RESUELTAS.CLAVE2 = RDX_V_VENTASEDI.CLAVE2) AND + (RDX_V_REFERENCIAS_RESUELTAS.CLAVE3 = RDX_V_VENTASEDI.CLAVE3)) +LEFT JOIN PRODUTOS_BARRA ON ( + (PRODUTOS_BARRA.CODIGO_BARRA = ISNULL(RDX_V_REFERENCIAS_RESUELTAS.CODIGO_BARRA, RDX_V_VENTASEDI.EANART))) +LEFT JOIN PRODUTOS ON ( + (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO)) +LEFT JOIN COLECOES ON ( + (COLECOES.COLECAO = PRODUTOS.COLECAO)) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASEDI_ERRONEAS +AS +SELECT +* +FROM + RDX_V_VENTASEDI +WHERE PRODUTO = '107CH.EN.01' +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_REFERENCIA_GENERICA +AS +SELECT DISTINCT + VENTAS.NUMINF, + VENTAS.CLAVE1, + VENTAS.CLAVE2, + VENTAS.CLAVE3, + NUMCON = ISNULL(REF.NUMCON, 0), + VENTAS.PERVENINI AS FECHA, + VENTAS.EANLUG AS CODCENTRO, + VENTAS.FILIAL AS CENTRO, + VENTAS.EANVEN AS CODVENDEDOR, + VENTAS.VENDEDOR, + VENTAS.NUMTALON, + CODIGO_BARRA = ISNULL(PRODUTOS_BARRA.CODIGO_BARRA, VENTAS.EANART), + CODIGO = ISNULL(PRODUTOS_BARRA.PRODUTO, VENTAS.PRODUTO), + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, VENTAS.DESC_PRODUTO), + COLOR = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, VENTAS.COR_PRODUTO), + TALLA = ISNULL(PRODUTOS_BARRA.GRADE, VENTAS.GRADE), + VTAPROCESO = ISNULL(REF.CANESP, VENTAS.CANESP), + VTAFINAL = ISNULL(REF.CANVENNET, VENTAS.CANVENNET), + VTATERM = ISNULL(REF.CANVEN, VENTAS.CANVEN), + VALTOT = ISNULL(REF.VALVEN, VENTAS.VALVEN), + REF.ESTADO, + REF.FECHACAMBIO +FROM RDX_V_VENTASEDI_ERRONEAS VENTAS +LEFT OUTER JOIN RDX_REFERENCIA_GENERICA REF ON + (REF.NUMINF = VENTAS.NUMINF AND REF.CLAVE1 = VENTAS.CLAVE1 AND + REF.CLAVE2 = VENTAS.CLAVE2 AND REF.CLAVE3 = VENTAS.CLAVE3) +LEFT OUTER JOIN PRODUTOS_BARRA on + (PRODUTOS_BARRA.CODIGO_BARRA = REF.CODIGO_BARRA) +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +WHERE NOT ((VENTAS.VALVEN < 1) AND (VENTAS.VALVEN > 0)) /* QUITAR COMPOSTURAS */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASPROCESO AS +SELECT + NUMINF, + CLAVE1, + CLAVE2, + CLAVE3, + PERVENINI AS FECHA, + DAY(PERVENINI) AS DIA, + DATENAME(DW, PERVENINI) DIASEMANA, + DATENAME(MONTH, PERVENINI) AS MES, + YEAR(PERVENINI) AS ANO, + FILIAL AS CENTRO, + VENDEDOR, + NUMTALON, + PRODUTO AS CODIGO, + DESC_PRODUTO AS PRODUCTO, + GRUPO_PRODUTO AS GRUPOPRODUCTO, + TIPO_PRODUTO AS TIPOPRODUCTO, + COLECAO AS COLECCION, + COR_PRODUTO AS COLOR, + GRADE AS TALLA, + CANESP AS INICIO, + CANVENNET AS FINAL, + VALVEN AS IMPORTE +FROM + RDX_V_VENTASEDI_RESUELTAS +WHERE ((CANESP IS NOT NULL) OR (CANVENNET IS NOT NULL)) +AND NOT ((DESC_PRODUTO LIKE '%ERROR REFERENCIA%') AND ((VALVEN < 1) AND (VALVEN > 0))) /* QUITAR COMPOSTURAS */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASPROCESOPENDIENTES AS +SELECT NUMTALON, + CODIGO, + COLOR, + TALLA, + SUM(ISNULL(INICIO, 0)) AS INICIO, + SUM(ABS(ISNULL(FINAL, 0))) AS FINAL +FROM RDX_V_VENTASPROCESO +GROUP BY NUMTALON, CODIGO, COLOR, TALLA +HAVING ((SUM(ISNULL(INICIO, 0)) <> 0) AND + (SUM(ISNULL(INICIO, 0)) > SUM(ABS(ISNULL(FINAL, 0))))) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_VENTASTERMINADAS +AS +SELECT + NUMINF, + CLAVE1, + CLAVE2, + CLAVE3, + PERVENINI AS FECHA, + DAY(PERVENINI) AS DIA, + DATENAME(DW, PERVENINI) DIASEMANA, + DATENAME(MONTH, PERVENINI) AS MES, + YEAR(PERVENINI) AS ANO, + FILIAL AS CENTRO, + VENDEDOR, + NUMTALON, + PRODUTO AS CODIGO, + DESC_PRODUTO AS PRODUCTO, + GRUPO_PRODUTO AS GRUPOPRODUCTO, + TIPO_PRODUTO AS TIPOPRODUCTO, + COLECAO AS COLECCION, + COR_PRODUTO AS COLOR, + GRADE AS TALLA, + TALLA38 = CASE WHEN ((GRADE = 38) OR (UPPER(GRADE) = 'S')) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA40 = CASE WHEN ((GRADE = 40) OR (UPPER(GRADE) = 'M')) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA42 = CASE WHEN ((GRADE = 42) OR (UPPER(GRADE) = 'L')) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA44 = CASE WHEN ((GRADE = 44) OR (UPPER(GRADE) = 'XL')) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA46 = CASE WHEN (GRADE = 46) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA48 = CASE WHEN (GRADE = 48) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + + VTATERMDEV = ISNULL(CANVEN, 0), + VTAFINALRESC = ISNULL(CANVENNET, 0), + + VENTAS = CASE WHEN (CANVEN > 0) THEN CANVEN ELSE 0 END + + CASE WHEN (CANVENNET > 0) THEN CANVENNET ELSE 0 END, + + DEVOLUCIONES = CASE WHEN (CANVEN < 0) THEN CANVEN ELSE 0 END + + CASE WHEN (CANVENNET < 0) THEN CANVENNET ELSE 0 END, + + TOTAL = ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0), + + VALTERMDEV = CASE WHEN (CANVEN <> 0) THEN ISNULL(VALVEN, 0) ELSE 0 END, + VALFINALRESC = CASE WHEN (CANVENNET <> 0) THEN ISNULL(VALVEN, 0) ELSE 0 END, + + VALVEN = CASE WHEN (VALVEN > 0) THEN VALVEN ELSE 0 END, + VALDEV = CASE WHEN (VALVEN < 0) THEN VALVEN ELSE 0 END, + VALTOT = VALVEN +FROM + RDX_V_VENTASEDI_RESUELTAS +WHERE NOT ((DESC_PRODUTO LIKE '%ERROR REFERENCIA%') AND ((VALVEN < 1) AND (VALVEN > 0))) /* QUITAR COMPOSTURAS */ +AND (CANESP IS NULL OR CANESP = 0) /* QUITAR INICIO V.PROCESO */ +AND (VALVEN IS NOT NULL) /* QUITAR CAMBIO DE TALLA */ +AND ((CANVENNET >= 0) OR (CANVENNET IS NULL)) /* IGNORAR LAS RESCISIONES DE V.PROCESO */ +GO + +/* EOF */ + + diff --git a/2.1.0/Database/2.3 - vistas stock.sql b/2.1.0/Database/2.3 - vistas stock.sql new file mode 100644 index 0000000..7204afe --- /dev/null +++ b/2.1.0/Database/2.3 - vistas stock.sql @@ -0,0 +1,610 @@ +DROP VIEW [RDX_V_CONTROL_INVENTARIO] +GO +DROP VIEW [RDX_V_INVENTARIO_STOCK] +GO +DROP VIEW [RDX_V_INVENTARIO_STOCK_DESGLOSADO] +GO +DROP VIEW [RDX_V_STOCK_CALCULADO_DESGLOSADO] +GO +DROP VIEW [RDX_V_STOCK_CALCULADO] +GO +DROP VIEW [RDX_V_STOCK] +GO +DROP VIEW [RDX_V_STOCK_VENTAS] +GO +DROP VIEW [RDX_V_STOCK_INVENTARIO] +GO +DROP VIEW [RDX_V_STOCK_VARELA] +GO + + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_STOCK_VARELA AS +SELECT ESTOQUE_PRODUTOS.FILIAL, + ESTOQUE_PRODUTOS.PRODUTO AS CODIGO, + ESTOQUE_PRODUTOS.COR_PRODUTO AS COLOR, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + PRODUTOS.TIPO_PRODUTO, + PRODUTOS.GRUPO_PRODUTO, + COLECCION = PRODUTOS.COLECAO, + ESTOQUE_PRODUTOS.ES1 as K38, + ESTOQUE_PRODUTOS.ES2 as K40, + ESTOQUE_PRODUTOS.ES3 as K42, + ESTOQUE_PRODUTOS.ES4 as K44, + ESTOQUE_PRODUTOS.ES5 as K46, + ESTOQUE_PRODUTOS.ES6 as K48, + ESTOQUE_PRODUTOS.ESTOQUE as KT + +FROM ESTOQUE_PRODUTOS +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = ESTOQUE_PRODUTOS.PRODUTO) +WHERE FILIAL LIKE '%VARELA IMAGEN Y DISEÑO%' +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_STOCK_INVENTARIO AS +SELECT + FECHA = ISNULL(RDX_V_INVENTARIOEDI.FECHA, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FECHA, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FECHA))), + CENTRO = ISNULL(RDX_V_INVENTARIOEDI.CENTRO, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CENTRO, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CENTRO))), + FILIAL = ISNULL(RDX_V_INVENTARIOEDI.FILIAL, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FILIAL, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FILIAL, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FILIAL))), + CODIGO = ISNULL(RDX_V_INVENTARIOEDI.CODIGO, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CODIGO, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CODIGO))), + PRODUCTO = ISNULL(RDX_V_INVENTARIOEDI.PRODUCTO, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.PRODUCTO, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.PRODUCTO, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.PRODUCTO))), + COLOR = ISNULL(RDX_V_INVENTARIOEDI.COLOR, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.COLOR, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.COLOR))), + TALLA = ISNULL(RDX_V_INVENTARIOEDI.TALLA, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TALLA, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.TALLA))), + CANTIDAD = ISNULL(RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CANTIDAD, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CANTIDAD, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD, RDX_V_INVENTARIOEDI.CANTIDAD))), + OPERACION = CASE RDX_V_INVENTARIOEDI.TIPOCANT + WHEN '194' THEN 'R' + WHEN '46' THEN 'E' + WHEN '145' THEN 'RM' + WHEN '48' THEN 'S' + WHEN '61' THEN 'D' + WHEN '65' THEN 'T' + ELSE + CASE + WHEN RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD IS NOT NULL THEN 'R' + WHEN RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CANTIDAD IS NOT NULL THEN 'D' + ELSE RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TIPO + END + END +FROM RDX_V_INVENTARIOEDI +FULL OUTER JOIN RDX_V_RECEPCION_AJUSTES_DESGLOSADO ON + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_INVENTARIOEDI.CENTRO = RDX_V_INVENTARIOEDI.CENTRO2) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI.TALLA) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI.FECHA) +FULL OUTER JOIN RDX_V_TRASPASOS_AJUSTES_DESGLOSADO ON + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CENTRO2 = RDX_V_INVENTARIOEDI.CENTRO2) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI.TALLA) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI.FECHA) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TIPO = RDX_V_INVENTARIOEDI.TIPOCANT) +FULL OUTER JOIN RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO ON + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_INVENTARIOEDI.CENTRO = RDX_V_INVENTARIOEDI.CENTRO2) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI.TALLA) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI.FECHA) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_STOCK_VENTAS AS +SELECT + PERVENINI AS FECHA, + DAY(PERVENINI) AS DIA, + DATENAME(DW, PERVENINI) DIASEMANA, + DATENAME(MONTH, PERVENINI) AS MES, + YEAR(PERVENINI) AS ANO, + EANLUG AS CENTRO, + FILIAL AS FILIAL, + CODIGO = ISNULL(PRODUTO, '107CH.EN.01'), + DESC_PRODUTO AS PRODUCTO, + GRUPO_PRODUTO AS GRUPOPRODUCTO, + TIPO_PRODUTO AS TIPOPRODUCTO, + COLECAO AS COLECCION, + COLOR = ISNULL(COR_PRODUTO, '300'), + GRADE AS TALLA, + CANTIDAD = ISNULL(CANVEN, 0) + + + CASE + WHEN ISNULL(CANVENNET, 0) < 0 THEN + ISNULL(CANVENNET, 0) + ELSE 0 + END + + + ISNULL(CANESP, 0) +FROM + RDX_V_VENTASEDI_RESUELTAS +WHERE NOT ((DESC_PRODUTO LIKE '%ERROR REFERENCIA%') AND ((VALVEN < 1) AND (VALVEN > 0))) /* QUITAR COMPOSTURAS */ +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_STOCK AS +SELECT + CENTRO = ISNULL(RDX_V_STOCK_INVENTARIO.CENTRO, RDX_V_STOCK_VENTAS.CENTRO), + FILIAL = ISNULL(RDX_V_STOCK_INVENTARIO.FILIAL, RDX_V_STOCK_VENTAS.FILIAL), + CODIGO = ISNULL(RDX_V_STOCK_INVENTARIO.CODIGO, RDX_V_STOCK_VENTAS.CODIGO), + PRODUCTO = ISNULL(RDX_V_STOCK_INVENTARIO.PRODUCTO, RDX_V_STOCK_VENTAS.PRODUCTO), + TIPO_PRODUCTO = PRODUTOS.TIPO_PRODUTO, + GRUPO_PRODUCTO = PRODUTOS.GRUPO_PRODUTO, + COLECCION = PRODUTOS.COLECAO, + COLOR = ISNULL(RDX_V_STOCK_INVENTARIO.COLOR, RDX_V_STOCK_VENTAS.COLOR), + E38 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '38') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'S')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN 0 + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E40 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '40') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'M')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN 0 + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E42 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '42') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'L')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN 0 + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E44 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '44') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'XL')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN 0 + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E46 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '46' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN 0 + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E48 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '48' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN 0 + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S38 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '38') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'S')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S40 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '40') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'M')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S42 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '42') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'L')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S44 = SUM(CASE + WHEN ((ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) = '44') OR (UPPER(ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA)) = 'XL')) THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S46 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '46' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S48 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '48' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN (RDX_V_STOCK_VENTAS.CANTIDAD > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END) +FROM + RDX_V_STOCK_INVENTARIO +FULL OUTER JOIN RDX_V_STOCK_VENTAS ON + (RDX_V_STOCK_INVENTARIO.CENTRO = RDX_V_STOCK_VENTAS.CENTRO) + AND (RDX_V_STOCK_INVENTARIO.CODIGO = RDX_V_STOCK_VENTAS.CODIGO) + AND (RDX_V_STOCK_INVENTARIO.COLOR = RDX_V_STOCK_VENTAS.COLOR) + AND (RDX_V_STOCK_INVENTARIO.TALLA = RDX_V_STOCK_VENTAS.TALLA) + AND (RDX_V_STOCK_INVENTARIO.FECHA = RDX_V_STOCK_VENTAS.FECHA) +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = ISNULL(RDX_V_STOCK_INVENTARIO.CODIGO, RDX_V_STOCK_VENTAS.CODIGO)) +GROUP BY + ISNULL(RDX_V_STOCK_INVENTARIO.CENTRO, RDX_V_STOCK_VENTAS.CENTRO), + ISNULL(RDX_V_STOCK_INVENTARIO.FILIAL, RDX_V_STOCK_VENTAS.FILIAL), + ISNULL(RDX_V_STOCK_INVENTARIO.CODIGO, RDX_V_STOCK_VENTAS.CODIGO), + ISNULL(RDX_V_STOCK_INVENTARIO.PRODUCTO, RDX_V_STOCK_VENTAS.PRODUCTO), + PRODUTOS.TIPO_PRODUTO, + PRODUTOS.GRUPO_PRODUTO, + PRODUTOS.COLECAO, + ISNULL(RDX_V_STOCK_INVENTARIO.COLOR, RDX_V_STOCK_VENTAS.COLOR) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_STOCK_CALCULADO AS +SELECT + CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + TIPO_PRODUCTO, + GRUPO_PRODUCTO, + COLECCION, + COLOR, + E38, + E40, + E42, + E44, + E46, + E48, + TE = ISNULL(E38, 0) + ISNULL(E40, 0) + ISNULL(E42, 0) + ISNULL(E44, 0) + ISNULL(E46, 0) + ISNULL(E48, 0), + S38, + S40, + S42, + S44, + S46, + S48, + TS = ISNULL(S38, 0) + ISNULL(S40, 0) + ISNULL(S42, 0) + ISNULL(S44, 0) + ISNULL(S46, 0) + ISNULL(S48, 0), + K38 = ISNULL(E38, 0) + ISNULL(S38, 0), + K40 = ISNULL(E40, 0) + ISNULL(S40, 0), + K42 = ISNULL(E42, 0) + ISNULL(S42, 0), + K44 = ISNULL(E44, 0) + ISNULL(S44, 0), + K46 = ISNULL(E46, 0) + ISNULL(S46, 0), + K48 = ISNULL(E48, 0) + ISNULL(S48, 0), + KT = ISNULL(E38, 0) + ISNULL(S38, 0) + ISNULL(E40, 0) + ISNULL(S40, 0) + + ISNULL(E42, 0) + ISNULL(S42, 0) + ISNULL(E44, 0) + ISNULL(S44, 0) + + ISNULL(E46, 0) + ISNULL(S46, 0) + ISNULL(E48, 0) + ISNULL(S48, 0) + +FROM RDX_V_STOCK +GO + +/*--------------- SQL ---------------*/ +/*AQUI TENGO INCLUIDAS LAS S CON LAS 38 LA M CON LA 40..... EL PROBLEMA LO TENEMOS AL HACER EL JOIN CON RDX_TALLAS QUE TENDRÁ TODAS (DEBEREMOS ELEGIR SOLO LAS DE TIPO1(38,40,42,44,48) */ +/*Y NO LAS DE TIPO2(S,M,L,XL)*/ + +CREATE VIEW RDX_V_STOCK_CALCULADO_DESGLOSADO AS +SELECT CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + TIPO_PRODUCTO, + GRUPO_PRODUCTO, + COLECCION, + COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_V_STOCK_CALCULADO.K38 + WHEN '40' THEN RDX_V_STOCK_CALCULADO.K40 + WHEN '42' THEN RDX_V_STOCK_CALCULADO.K42 + WHEN '44' THEN RDX_V_STOCK_CALCULADO.K44 + WHEN '46' THEN RDX_V_STOCK_CALCULADO.K46 + WHEN '48' THEN RDX_V_STOCK_CALCULADO.K48 + END + +FROM RDX_TALLAS, RDX_V_STOCK_CALCULADO +WHERE RDX_TALLAS.TIPO_TALLAJE = 1 +GO + +/*--------------- SQL ---------------*/ +/*PROBLEMA CON TALLA RDX_ULTIMO_INVENTARIO VIENE LAS TALLAS DE TIPO2 Y EL RDX_STOK_CALCULADO_DESGLOSADO YA HEMOS METIDO LS TALLAS DE TIPO2 EN TIPO1*/ +/*El problema se arregla en la vista RDX_V_ULTIMO_INVENTARIO*/ + +CREATE VIEW RDX_V_INVENTARIO_STOCK_DESGLOSADO AS +SELECT + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.CENTRO, RDX_V_ULTIMO_INVENTARIO.CENTRO) as CENTRO, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.FILIAL, RDX_V_ULTIMO_INVENTARIO.FILIAL) as FILIAL, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.CODIGO, RDX_V_ULTIMO_INVENTARIO.CODIGO) as CODIGO, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.PRODUCTO, RDX_V_ULTIMO_INVENTARIO.PRODUCTO) as PRODUCTO, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.COLOR, RDX_V_ULTIMO_INVENTARIO.COLOR) as COLOR, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.TALLA, RDX_V_ULTIMO_INVENTARIO.TALLA) as TALLA, + + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.TIPO_PRODUCTO, RDX_V_ULTIMO_INVENTARIO.TIPO_PRODUCTO) as TIPO_PRODUCTO, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.GRUPO_PRODUCTO, RDX_V_ULTIMO_INVENTARIO.GRUPO_PRODUCTO) as GRUPO_PRODUCTO, + ISNULL(RDX_V_STOCK_CALCULADO_DESGLOSADO.COLECCION, RDX_V_ULTIMO_INVENTARIO.COLECCION) as COLECCION, + + RDX_V_STOCK_CALCULADO_DESGLOSADO.CANTIDAD as CANTIDAD_STOCK, + RDX_V_ULTIMO_INVENTARIO.CANTIDAD as CANTIDAD_INVENTARIO + +FROM RDX_V_ULTIMO_INVENTARIO +FULL OUTER JOIN RDX_V_STOCK_CALCULADO_DESGLOSADO ON +(RDX_V_ULTIMO_INVENTARIO.FILIAL = RDX_V_STOCK_CALCULADO_DESGLOSADO.CENTRO) +AND (RDX_V_ULTIMO_INVENTARIO.CODIGO = RDX_V_STOCK_CALCULADO_DESGLOSADO.CODIGO) +AND (RDX_V_ULTIMO_INVENTARIO.COLOR = RDX_V_STOCK_CALCULADO_DESGLOSADO.COLOR) +AND (RDX_V_ULTIMO_INVENTARIO.TALLA = RDX_V_STOCK_CALCULADO_DESGLOSADO.TALLA) +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_INVENTARIO_STOCK AS +select + CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + COLOR, + TIPO_PRODUCTO, + GRUPO_PRODUCTO, + COLECCION, + I38 = SUM(CASE TALLA + WHEN '38' THEN + CANTIDAD_INVENTARIO + ELSE 0 + END) + + ,I40 = SUM(CASE TALLA + WHEN '40' THEN + CANTIDAD_INVENTARIO + ELSE 0 + END) + + ,I42 = SUM(CASE TALLA + WHEN '42' THEN + CANTIDAD_INVENTARIO + ELSE 0 + END) + + ,I44 = SUM(CASE TALLA + WHEN '44' THEN + CANTIDAD_INVENTARIO + ELSE 0 + END) + + ,I46 = SUM(CASE TALLA + WHEN '46' THEN + CANTIDAD_INVENTARIO + ELSE 0 + END) + + ,I48 = SUM(CASE TALLA + WHEN '48' THEN + CANTIDAD_INVENTARIO + ELSE 0 + END) + + ,K38 = SUM(CASE TALLA + WHEN '38' THEN + CANTIDAD_STOCK + ELSE 0 + END) + + ,K40 = SUM(CASE TALLA + WHEN '40' THEN + CANTIDAD_STOCK + ELSE 0 + END) + + ,K42 = SUM(CASE TALLA + WHEN '42' THEN + CANTIDAD_STOCK + ELSE 0 + END) + + ,K44 = SUM(CASE TALLA + WHEN '44' THEN + CANTIDAD_STOCK + ELSE 0 + END) + + ,K46 = SUM(CASE TALLA + WHEN '46' THEN + CANTIDAD_STOCK + ELSE 0 + END) + + ,K48 = SUM(CASE TALLA + WHEN '48' THEN + CANTIDAD_STOCK + ELSE 0 + END) + +from RDX_V_INVENTARIO_STOCK_DESGLOSADO + +group by CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + COLOR, + TIPO_PRODUCTO, + GRUPO_PRODUCTO, + COLECCION +GO + +/*--------------- SQL ---------------*/ + +CREATE VIEW RDX_V_CONTROL_INVENTARIO AS +SELECT + CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + COLOR, + TIPO_PRODUCTO, + GRUPO_PRODUCTO, + COLECCION, + + I38, + I40, + I42, + I44, + I46, + I48, + TI = ISNULL(I38, 0) + ISNULL(I40, 0) + ISNULL(I42, 0) + ISNULL(I44, 0) + ISNULL(I46, 0) + ISNULL(I48, 0), + + K38, + K40, + K42, + K44, + K46, + K48, + TK = ISNULL(K38, 0) + ISNULL(K40, 0) + ISNULL(K42, 0) + ISNULL(K44, 0) + ISNULL(K46, 0) + ISNULL(K48, 0), + + D38 = ISNULL(I38, 0) - ISNULL(K38, 0), + D40 = ISNULL(I40, 0) - ISNULL(K40, 0), + D42 = ISNULL(I42, 0) - ISNULL(K42, 0), + D44 = ISNULL(I44, 0) - ISNULL(K44, 0), + D46 = ISNULL(I46, 0) - ISNULL(K46, 0), + D48 = ISNULL(I48, 0) - ISNULL(K48, 0), + DT = ISNULL(I38, 0) - ISNULL(K38, 0) + ISNULL(I40, 0) - ISNULL(K40, 0) + + ISNULL(I42, 0) - ISNULL(K42, 0) + ISNULL(I44, 0) - ISNULL(K44, 0) + + ISNULL(I46, 0) - ISNULL(K46, 0) + ISNULL(I48, 0) - ISNULL(K48, 0) + +FROM RDX_V_INVENTARIO_STOCK +where ((ISNULL(I38, 0) - ISNULL(K38, 0) + ISNULL(I40, 0) - ISNULL(K40, 0) + + ISNULL(I42, 0) - ISNULL(K42, 0) + ISNULL(I44, 0) - ISNULL(K44, 0) + + ISNULL(I46, 0) - ISNULL(K46, 0) + ISNULL(I48, 0) - ISNULL(K48, 0)) <> 0) + +GO +/* EOF */ diff --git a/2.1.0/Database/3 - procedimientos.sql b/2.1.0/Database/3 - procedimientos.sql new file mode 100644 index 0000000..e0f3ae8 --- /dev/null +++ b/2.1.0/Database/3 - procedimientos.sql @@ -0,0 +1,273 @@ +/*--------------- SQL ---------------*/ +DROP PROCEDURE crosstab +GO + +CREATE PROCEDURE crosstab + @select varchar(8000), + @sumfunc varchar(100), + @pivot varchar(100), + @table varchar(100) +AS + + DECLARE @sql varchar(8000), @delim varchar(1) + SET NOCOUNT ON + SET ANSI_WARNINGS OFF + + EXEC ('SELECT ' + @pivot + ' AS pivot INTO ##pivot FROM ' + @table + ' WHERE 1=2') + EXEC ('INSERT INTO ##pivot SELECT DISTINCT ' + @pivot + ' FROM ' + @table + ' WHERE ' + @pivot + ' Is Not Null') + + SELECT @sql='', @sumfunc=stuff(@sumfunc, len(@sumfunc), 1, ' END)' ) + + SELECT @delim=CASE Sign( CharIndex('char', data_type)+CharIndex('date', data_type) ) + WHEN 0 THEN '' ELSE '''' END + FROM tempdb.information_schema.columns + WHERE table_name='##pivot' AND column_name='pivot' + + SELECT @sql=@sql + '''' + convert(varchar(100), pivot) + ''' = ' + stuff(@sumfunc,charindex( '(', @sumfunc )+1, 0, ' CASE ' + @pivot + ' WHEN ' + @delim + convert(varchar(100), pivot) + @delim + ' THEN ' ) + ', ' FROM ##pivot + + DROP TABLE ##pivot + + SELECT @sql=left(@sql, len(@sql)-1) + SELECT @select=stuff(@select, charindex(' FROM ', @select)+1, 0, ', ' + @sql + ' ') + + EXEC (@select) + SET ANSI_WARNINGS ON +GO + +/*--------------- SQL ---------------*/ +DROP PROCEDURE RDX_P_CARGAR_INVENTARIOEDI +GO + +CREATE PROCEDURE RDX_P_CARGAR_INVENTARIOEDI +AS +BEGIN + INSERT INTO RDX_INVENTARIOEDI ( + NUMDOC, NUMLIN, NUMCANT, TIPOCANT, FECHA, CENTRO, FILIAL, CODVEN, + VENDEDOR, CODIGO_BARRA, CODIGO, PRODUCTO, COLOR, TALLA, CANTIDAD, + CENTRO2, FILIAL2, IGNORAR ) + SELECT + RDX_CANTINV.NUMDOC, + RDX_CANTINV.NUMLIN, + RDX_CANTINV.NUMCANT, + RDX_CANTINV.TIPOCANT, + RDX_CABINV.FECHALIQ AS FECHA, + RDX_CABINV.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_CABINV.CENTRO), + RDX_CANTINV.IDVEN AS CODVEN, + VENDEDOR = ISNULL(LTRIM(RTRIM(LOJA_VENDEDORES.NOME_VENDEDOR)) + ' ' + LTRIM(RTRIM(LOJA_VENDEDORES.VENDEDOR_APELIDO)), RDX_CANTINV.IDVEN), + RDX_LININV.CODART AS CODIGO_BARRA, + CODIGO = ISNULL(PRODUTOS.PRODUTO, '107CH.EN.01'), + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA **** LLAMAR AL CI'), + COLOR = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, 300), + TALLA = PRODUTOS_BARRA.GRADE, + RDX_CANTINV.CANTIDAD, + CENTRO2 = RDX_CANTINV.CENTRO, + FILIAL2 = ISNULL(FILIAIS2.FILIAL, RDX_CANTINV.CENTRO), + RDX_CABINV.IGNORAR + FROM RDX_CANTINV + INNER JOIN RDX_LININV ON + ((RDX_LININV.NUMDOC = RDX_CANTINV.NUMDOC) AND + (RDX_LININV.NUMLIN = RDX_CANTINV.NUMLIN)) + INNER JOIN RDX_CABINV ON + (RDX_CABINV.NUMDOC = RDX_LININV.NUMDOC) + LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_CABINV.CENTRO) + LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) + LEFT OUTER JOIN RDX_FILIALES RDX_FILIALES2 ON (RDX_FILIALES2.CODBARRA = RDX_CANTINV.CENTRO) + LEFT OUTER JOIN FILIAIS FILIAIS2 ON (FILIAIS2.COD_FILIAL = RDX_FILIALES2.CODFILIAL) + LEFT OUTER JOIN LOJA_VENDEDORES ON (LOJA_VENDEDORES.RG = RDX_CANTINV.IDVEN) + LEFT OUTER JOIN PRODUTOS_BARRA ON ((PRODUTOS_BARRA.CODIGO_BARRA = RDX_LININV.CODART)) + LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) + WHERE RDX_CABINV.FECHALIQ >= CONVERT(DATETIME, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ + AND RDX_CABINV.CARGADO IS NULL + + UPDATE RDX_CABINV SET + CARGADO = 1 + WHERE CARGADO IS NULL +END +GO + +/*--------------- SQL ---------------*/ +DROP PROCEDURE RDX_P_CARGAR_VENTASEDI +GO + +CREATE PROCEDURE RDX_P_CARGAR_VENTASEDI +AS +BEGIN + INSERT INTO RDX_VENTASEDI ( + NUMINF, CLAVE1, CLAVE2, CLAVE3, PERVENINI, NUMTALON, EANLUG, + FILIAL, EANVEN, CODVEN, VENDEDOR, EANART, CODCOM, PRODUTO, + DESC_PRODUTO, COR_PRODUTO, GRADE, TIPO_PRODUTO, GRUPO_PRODUTO, + DESC_COLECAO, VALVEN, CANVEN, CANDEV, CANVENNET, CANESP, IGNORAR ) + SELECT + RDX_CABVEN.NUMINF, + RDX_ARTVEN.CLAVE1, + RDX_ARTVEN.CLAVE2, + RDX_ARTVEN.CLAVE3, + RDX_LUGVEN.PERVENINI, + RDX_ARTVEN.NUMTALON, + RDX_LUGVEN.EANLUG, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_LUGVEN.EANLUG), + RDX_ARTVEN.EANVEN, + LOJA_VENDEDORES.VENDEDOR AS CODVEN, + VENDEDOR = ISNULL(LTRIM(RTRIM(LOJA_VENDEDORES.NOME_VENDEDOR)) + ' ' + LTRIM(RTRIM(LOJA_VENDEDORES.VENDEDOR_APELIDO)), RDX_ARTVEN.EANVEN), + RDX_ARTVEN.EANART, + RDX_ARTVEN.CODCOM, + produtos.PRODUTO, + ISNULL(produtos.DESC_PRODUTO, '*** ERROR REFERENCIA **** LLAMAR AL CI') AS DESC_PRODUTO, + PRODUTOS_BARRA.COR_PRODUTO, + PRODUTOS_BARRA.GRADE, + produtos.TIPO_PRODUTO, + produtos.GRUPO_PRODUTO, + COLECOES.DESC_COLECAO, + RDX_ARTVEN.VALVEN, + RDX_ARTVEN.CANVEN, + RDX_ARTVEN.CANDEV, + RDX_ARTVEN.CANVENNET, + RDX_ARTVEN.CANESP, + RDX_CABVEN.IGNORAR + + FROM + RDX_ARTVEN + INNER JOIN RDX_LUGVEN ON (RDX_ARTVEN.CLAVE1 = RDX_LUGVEN.CLAVE1 AND RDX_ARTVEN.CLAVE2 = RDX_LUGVEN.CLAVE2) + INNER JOIN RDX_CABVEN ON (RDX_LUGVEN.CLAVE1 = RDX_CABVEN.CLAVE1) + left outer join RDX_FILIALES on (RDX_FILIALES.CODBARRA = RDX_LUGVEN.EANLUG) + left outer join FILIAIS on (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) + LEFT OUTER JOIN LOJA_VENDEDORES ON (LOJA_VENDEDORES.RG LIKE '%' + RDX_ARTVEN.EANVEN + '%') + LEFT OUTER JOIN PRODUTOS_BARRA ON ((PRODUTOS_BARRA.CODIGO_BARRA = RDX_ARTVEN.EANART) or (PRODUTOS_BARRA.CODIGO_BARRA = RDX_ARTVEN.CODCOM)) + LEFT OUTER JOIN PRODUTOS on (produtos.PRODUTO = PRODUTOS_BARRA.PRODUTO) + LEFT OUTER JOIN COLECOES on (COLECOES.COLECAO = PRODUTOS.COLECAO) + WHERE RDX_CABVEN.CARGADO IS NULL + + + UPDATE RDX_CABVEN SET + CARGADO = 1 + WHERE CARGADO IS NULL +END +GO + +/*--------------- SQL ---------------*/ +DROP PROCEDURE RDX_P_SET_ULTIMOINVENTARIO +GO + +CREATE PROCEDURE RDX_P_SET_ULTIMOINVENTARIO +AS +BEGIN + DECLARE @CENTRO VARCHAR(17), + @CODIGO VARCHAR(12), + @COLOR VARCHAR(10), + @TALLA VARCHAR(8), + @FECHA DATETIME, + @UPDATECMD VARCHAR(255) + + DECLARE ASD CURSOR FOR + SELECT RTRIM(CENTRO), RTRIM(CODIGO), RTRIM(COLOR), RTRIM(TALLA), FECHA + FROM RDX_V_INVENTARIO_MAXFECHAS + OPEN ASD + FETCH NEXT FROM ASD INTO @CENTRO, @CODIGO, @COLOR, @TALLA, @FECHA + + IF @@ROWCOUNT >= 0 + BEGIN + WHILE @@FETCH_STATUS = 0 + BEGIN + UPDATE RDX_INVENTARIOEDI SET ULTIMO_INVENTARIO=NULL + WHERE CENTRO = @CENTRO AND CODIGO = @CODIGO AND COLOR = @COLOR AND TALLA = @TALLA + + UPDATE RDX_INVENTARIOEDI SET ULTIMO_INVENTARIO=1 + WHERE FECHA = CONVERT(VARCHAR, @FECHA, 112) AND CENTRO = @CENTRO AND CODIGO = @CODIGO AND COLOR = @COLOR AND TALLA = @TALLA AND TIPOCANT = 145 + + FETCH NEXT FROM ASD INTO @CENTRO, @CODIGO, @COLOR, @TALLA, @FECHA + END + END + CLOSE ASD + DEALLOCATE ASD +END +GO + +/*--------------- SQL ---------------*/ +CREATE PROCEDURE RDX_P_DELETE_CARGA_VENTAS +AS +BEGIN + DECLARE @CLAVE1 NUMERIC(10,0) + + DECLARE ASD CURSOR FOR + SELECT RDX_CABVEN.CLAVE1 + FROM RDX_CABVEN + WHERE RDX_CABVEN.FECINF = '2007/09/01' + OPEN ASD + FETCH NEXT FROM ASD INTO @CLAVE1 + + IF @@ROWCOUNT >= 0 + BEGIN + WHILE @@FETCH_STATUS = 0 + BEGIN + DELETE FROM RDX_ARTVEN + WHERE CLAVE1 = @CLAVE1 + + DELETE FROM RDX_LUGVEN + WHERE CLAVE1 = @CLAVE1 + + DELETE FROM RDX_CABVEN + WHERE CLAVE1 = @CLAVE1 + + DELETE FROM RDX_VENTASEDI + WHERE CLAVE1 = @CLAVE1 + + FETCH NEXT FROM ASD INTO @CLAVE1 + END + END + CLOSE ASD + DEALLOCATE ASD +END +GO + + +/*--------------- SQL ---------------*/ +CREATE PROCEDURE RDX_P_DELETE_CARGA_INVENTARIO +AS +BEGIN + DECLARE @NUMDOC VARCHAR(25) + + DECLARE ASD CURSOR FOR + SELECT RDX_CABINV.NUMDOC + FROM RDX_CABINV + WHERE RDX_CABINV.FECHALIQ = '2007/09/01' + OPEN ASD + FETCH NEXT FROM ASD INTO @NUMDOC + + IF @@ROWCOUNT >= 0 + BEGIN + WHILE @@FETCH_STATUS = 0 + BEGIN + DELETE FROM RDX_LININV + WHERE NUMDOC = @NUMDOC + + DELETE FROM RDX_CANTINV + WHERE NUMDOC = @NUMDOC + + DELETE FROM RDX_CABINV + WHERE NUMDOC = @NUMDOC + + DELETE FROM RDX_INVENTARIOEDI + WHERE NUMDOC = @NUMDOC + + FETCH NEXT FROM ASD INTO @NUMDOC + END + END + CLOSE ASD + DEALLOCATE ASD +END +GO + +CREATE PROCEDURE dbo.RDX_P_TIPO_TALLAJE +@PRODUCTO VARCHAR(12), @TIPO_TALLAJE smallint OUT +AS +BEGIN + set @TIPO_TALLAJE = (SELECT DISTINCT RDX_TALLAS.TIPO_TALLAJE + FROM PRODUTOS_BARRA + LEFT JOIN RDX_TALLAS ON (PRODUTOS_BARRA.GRADE = RDX_TALLAS.TALLA) + WHERE PRODUTOS_BARRA.PRODUTO = @PRODUCTO) +END +GO + +/* EOF */ + diff --git a/2.1.0/Database/ANTERIOR/Script Datos.sql b/2.1.0/Database/ANTERIOR/Script Datos.sql new file mode 100644 index 0000000..0a98c3d --- /dev/null +++ b/2.1.0/Database/ANTERIOR/Script Datos.sql @@ -0,0 +1,178 @@ +--------------- SQL --------------- +CREATE USER [usuario_gft] + FOR LOGIN [usuario_gft] + WITH DEFAULT_SCHEMA = [dbo] +GO + +COMMIT +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010082','8422416200065') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010083','8422416200058') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010086','8422416200041') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010089','8422416200102') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010090','8422416200126') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010091','8422416200133') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010092','8422416200188') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010244','8422416101256') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010094','8422416200959') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010096','8422416209068') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010088','8422416200089') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010103','8422416200140') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('010087','8422416200072') +GO + +INSERT INTO [RDX_FILIALES] ([CODFILIAL], [CODBARRA]) +VALUES + ('000001','8435159800003') +GO + +COMMIT +GO + + + +--------------- SQL --------------- +CREATE TABLE [RDX_TALLAS] ( + [TALLA] char(2) NOT NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_TALLAS] +TO [public] +GO + +INSERT INTO [RDX_TALLAS] ([TALLA]) +VALUES + ('38') +GO + +INSERT INTO [RDX_TALLAS] ([TALLA]) +VALUES + ('40') +GO + +INSERT INTO [RDX_TALLAS] ([TALLA]) +VALUES + ('42') +GO + +INSERT INTO [RDX_TALLAS] ([TALLA]) +VALUES + ('44') +GO + +INSERT INTO [RDX_TALLAS] ([TALLA]) +VALUES + ('46') +GO + +INSERT INTO [RDX_TALLAS] ([TALLA]) +VALUES + ('48') +GO + +COMMIT +GO + + + + + +/* Códigos de barra de ECI que son referencias nulas */ + +INSERT INTO [PRODUTOS_BARRA] ([CODIGO_BARRA], [PRODUTO], [COR_PRODUTO], [TAMANHO], [GRADE], [DATA_PARA_TRANSFERENCIA], [CODIGO_BARRA_PADRAO], [NOME_CLIFOR]) +VALUES + ('61800000000','107CH.EN.01','300',1,'38',CURRENT_TIMESTAMP,0,NULL) +GO + +INSERT INTO [PRODUTOS_BARRA] ([CODIGO_BARRA], [PRODUTO], [COR_PRODUTO], [TAMANHO], [GRADE], [DATA_PARA_TRANSFERENCIA], [CODIGO_BARRA_PADRAO], [NOME_CLIFOR]) +VALUES + ('61810001406','107CH.EN.01','300',1,'38',CURRENT_TIMESTAMP,0,NULL) +GO + +INSERT INTO [PRODUTOS_BARRA] ([CODIGO_BARRA], [PRODUTO], [COR_PRODUTO], [TAMANHO], [GRADE], [DATA_PARA_TRANSFERENCIA], [CODIGO_BARRA_PADRAO], [NOME_CLIFOR]) +VALUES + ('61810001547','107CH.EN.01','300',1,'38',CURRENT_TIMESTAMP,0,NULL) +GO + +INSERT INTO [PRODUTOS_BARRA] ([CODIGO_BARRA], [PRODUTO], [COR_PRODUTO], [TAMANHO], [GRADE], [DATA_PARA_TRANSFERENCIA], [CODIGO_BARRA_PADRAO], [NOME_CLIFOR]) +VALUES + ('61810001042','107CH.EN.01','300',1,'38',CURRENT_TIMESTAMP,0,NULL) +GO + +INSERT INTO [PRODUTOS_BARRA] ([CODIGO_BARRA], [PRODUTO], [COR_PRODUTO], [TAMANHO], [GRADE], [DATA_PARA_TRANSFERENCIA], [CODIGO_BARRA_PADRAO], [NOME_CLIFOR]) +VALUES + ('61810001141','107CH.EN.01','300',1,'38',CURRENT_TIMESTAMP,0,NULL) +GO + +INSERT INTO [PRODUTOS_BARRA] ([CODIGO_BARRA], [PRODUTO], [COR_PRODUTO], [TAMANHO], [GRADE], [DATA_PARA_TRANSFERENCIA], [CODIGO_BARRA_PADRAO], [NOME_CLIFOR]) +VALUES + ('8300733557232','107CH.EN.01','300',1,'38',CURRENT_TIMESTAMP,0,NULL) +GO + +COMMIT +GO + + + + + + + + + + + diff --git a/2.1.0/Database/ANTERIOR/Script Tablas.sql b/2.1.0/Database/ANTERIOR/Script Tablas.sql new file mode 100644 index 0000000..2d1d3e9 --- /dev/null +++ b/2.1.0/Database/ANTERIOR/Script Tablas.sql @@ -0,0 +1,519 @@ +--------------- SQL --------------- +CREATE TABLE [RDX_CABINV] ( + [NUMDOC] varchar(25) NOT NULL, + [TIPODOC] varchar(3) NULL, + [TIPOLIQ] varchar(3) NULL, + [FECHA] datetime NULL, + [FECHALIQ] datetime NULL, + [EMISOR] varchar(17) NULL, + [RECEPTOR] varchar(17) NULL, + [DPTO] varchar(3) NULL, + [CENTRO] varchar(17) NULL, + [FECHA_CARGA] datetime NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CABINV] +TO [public] +GO + +ALTER TABLE [RDX_CABINV] +ADD PRIMARY KEY CLUSTERED ([NUMDOC]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABINV_idx] ON [RDX_CABINV] + ([FECHALIQ]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CABINV_idx2] ON [RDX_CABINV] + ([CENTRO]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_LININV] ( + [NUMDOC] varchar(25) NOT NULL, + [NUMLIN] numeric(6, 0) NOT NULL, + [CODART] varchar(17) NULL, + [FAMILIA] varchar(17) NULL, + [BARRA] varchar(17) NULL, + [TALLA] varchar(17) NULL, + [MARCA] varchar(25) NULL, + [TAMANO] varchar(25) NULL, + [SERIE] varchar(25) NULL, + [COLOR] varchar(25) NULL, + [MODELO] varchar(25) NULL, + [DIBUJO] varchar(25) NULL, + [DESCRIP] varchar(70) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LININV] +TO [public] +GO + +ALTER TABLE [RDX_LININV] +ADD PRIMARY KEY CLUSTERED ([NUMDOC], [NUMLIN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_LININV_idx] ON [RDX_LININV] + ([CODART]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_CANTINV] ( + [NUMDOC] varchar(25) NOT NULL, + [NUMLIN] numeric(6, 0) NOT NULL, + [NUMCANT] numeric(6, 0) NOT NULL, + [TIPOCANT] varchar(3) NULL, + [CANTIDAD] numeric(15, 0) NULL, + [CENTRO] varchar(17) NULL, + [TMOV] varchar(3) NULL, + [FACT] varchar(12) NULL, + [DEPTO] varchar(3) NULL, + [IDVEN] varchar(10) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CANTINV] +TO [public] +GO + +ALTER TABLE [RDX_CANTINV] +ADD PRIMARY KEY CLUSTERED ([NUMDOC], [NUMLIN], [NUMCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CANTINV_idx] ON [RDX_CANTINV] + ([TIPOCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_CANTINV_idx2] ON [RDX_CANTINV] + ([IDVEN]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_CABVEN] ( + [CLAVE1] numeric(10, 0) NOT NULL, + [NUMINF] varchar(35) NULL, + [FUNCION] varchar(10) NULL, + [FECINI] datetime NULL, + [FECFIN] datetime NULL, + [FECINF] datetime NULL, + [PERVENINI] datetime NULL, + [PERVENFIN] datetime NULL, + [EANOFI] varchar(17) NULL, + [EANEMI] varchar(17) NULL, + [EANREC] varchar(17) NULL, + [EANVEN] varchar(17) NULL, + [EANALM] varchar(17) NULL, + [EANREP] varchar(17) NULL, + [EANPRO] varchar(17) NULL, + [EANADMSA] varchar(17) NULL, + [EANREPSR] varchar(17) NULL, + [ADMVENSA] varchar(35) NULL, + [REPDEPSR] varchar(35) NULL, + [EMAILSA] varchar(35) NULL, + [NUMFAXSA] varchar(35) NULL, + [NUMTELSA] varchar(35) NULL, + [NUMTLXSA] varchar(35) NULL, + [X400SA] varchar(35) NULL, + [EMAILSR] varchar(35) NULL, + [NUMFAXSR] varchar(35) NULL, + [NUMTELSR] varchar(35) NULL, + [NUMTLXSR] varchar(35) NULL, + [X400SR] varchar(35) NULL, + [NUMPRE] varchar(35) NULL, + [NUMINFSC] varchar(35) NULL, + [NUMCON] varchar(35) NULL, + [FECPRE] datetime NULL, + [FECINFSC] datetime NULL, + [FECCON] datetime NULL, + [DIVPED] varchar(3) NULL, + [DIVPRE] varchar(3) NULL, + [DIVPAG] varchar(3) NULL, + [DIVPEDF] varchar(3) NULL, + [DIVPREF] varchar(3) NULL, + [DIVPAGF] varchar(3) NULL, + [TASCAM] numeric(15, 3) NULL, + [FECTAS] datetime NULL, + [FECHA_CARGA] datetime NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CABVEN] +TO [public] +GO + +ALTER TABLE [RDX_CABVEN] +ADD PRIMARY KEY CLUSTERED ([CLAVE1]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_LUGVEN] ( + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [EANLUG] varchar(17) NULL, + [LUGVEN] varchar(70) NULL, + [FECINI] datetime NULL, + [FECFIN] datetime NULL, + [PERVENINI] datetime NULL, + [PERVENFIN] datetime NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LUGVEN] +TO [public] +GO + +ALTER TABLE [RDX_LUGVEN] +ADD PRIMARY KEY CLUSTERED ([CLAVE1], [CLAVE2]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_LUGVEN_PERVENINI_IDX] ON [RDX_LUGVEN] + ([PERVENINI]) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_LUGVEN] +ADD CONSTRAINT [FK__RDX_LUGVE__CLAVE__4A59F0B5] FOREIGN KEY ([CLAVE1]) + REFERENCES [RDX_CABVEN] ([CLAVE1]) + ON UPDATE CASCADE + ON DELETE CASCADE +GO + +ALTER TABLE [RDX_LUGVEN] +NOCHECK CONSTRAINT [FK__RDX_LUGVE__CLAVE__4A59F0B5] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_ARTVEN] ( + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [CLAVE3] numeric(5, 0) NOT NULL, + [EANART] varchar(17) NULL, + [CODCOM] varchar(35) NULL, + [NUMVAR] varchar(35) NULL, + [CODPRO] varchar(35) NULL, + [DESARTCO] varchar(35) NULL, + [DESART] varchar(70) NULL, + [NUMCON] varchar(35) NULL, + [NUMLIS] varchar(35) NULL, + [CONESP1] varchar(3) NULL, + [CONESP2] varchar(3) NULL, + [CONESP3] varchar(3) NULL, + [VALVEN] numeric(15, 3) NULL, + [PRENETCT] numeric(15, 3) NULL, + [PREBRUCT] numeric(15, 3) NULL, + [PREINFET] numeric(15, 3) NULL, + [PREINFFT] numeric(15, 3) NULL, + [PRECALCT] numeric(15, 3) NULL, + [PRENETCA] numeric(15, 3) NULL, + [PREBRUCA] numeric(15, 3) NULL, + [PREINFEA] numeric(15, 3) NULL, + [PREINFFA] numeric(15, 3) NULL, + [PRECALCA] numeric(15, 3) NULL, + [BAPRUN1] numeric(9, 0) NULL, + [UNIMED1] varchar(3) NULL, + [BAPRUN2] numeric(9, 0) NULL, + [UNIMED2] varchar(3) NULL, + [BAPRUN3] numeric(9, 0) NULL, + [UNIMED3] varchar(3) NULL, + [BAPRUN4] numeric(9, 0) NULL, + [UNIMED4] varchar(3) NULL, + [BAPRUN5] numeric(9, 0) NULL, + [UNIMED5] varchar(3) NULL, + [CANVEN] numeric(15, 3) NULL, + [EXIPRO] numeric(15, 3) NULL, + [DESEXI] numeric(15, 3) NULL, + [ESPMEDCV] varchar(3) NULL, + [ESPMEDEP] varchar(3) NULL, + [ESPMEDDE] varchar(3) NULL, + [CANDEV] numeric(15, 3) NULL, + [EANVEN] varchar(17) NULL, + [NOMVEN] varchar(70) NULL, + [NUMTALON] varchar(35) NULL, + [CANVENNET] numeric(15, 3) NULL, + [UMEDVENNET] varchar(3) NULL, + [CANESP] numeric(15, 3) NULL, + [UMEDESP] varchar(3) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_ARTVEN] +TO [public] +GO + +ALTER TABLE [RDX_ARTVEN] +ADD PRIMARY KEY CLUSTERED ([CLAVE1], [CLAVE2], [CLAVE3]) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_ARTVEN] +ADD CONSTRAINT [FK__RDX_ARTVEN__56BFC79A] FOREIGN KEY ([CLAVE1], [CLAVE2]) + REFERENCES [RDX_LUGVEN] ([CLAVE1], [CLAVE2]) + ON UPDATE CASCADE + ON DELETE CASCADE +GO + +ALTER TABLE [RDX_ARTVEN] +NOCHECK CONSTRAINT [FK__RDX_ARTVEN__56BFC79A] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_INFORMES] ( + [ID] smallint IDENTITY(1, 1) NOT NULL, + [CATEGORIA] varchar(15) NULL, + [ICONO] smallint NULL, + [NOMBRE] varchar(50) NULL, + [DESCRIPCION] varchar(255) NULL, + [ORDEN] smallint NULL, + [VISTA] text NULL, + [MODIFICABLE] char(1) CONSTRAINT [DF__RDX_INFOR__MODIF__5C78A0F0] DEFAULT 'S' NOT NULL +) +ON [PRIMARY] +TEXTIMAGE_ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_INFORMES] +TO [public] +GO + +ALTER TABLE [RDX_INFORMES] +ADD CONSTRAINT [RDX_INFORMES_pk] +PRIMARY KEY CLUSTERED ([ID]) +ON [PRIMARY] +GO + +--------------- SQL --------------- + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_ARTVEN] +TO [public] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CABINV] +TO [public] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CABVEN] +TO [public] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_CANTINV] +TO [public] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LININV] +TO [public] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LUGVEN] +TO [public] +GO + + +--------------- SQL --------------- +CREATE TABLE [RDX_LOG_CARGA] ( + [ID] int IDENTITY(1, 1) NOT NULL, + [REPORT] varchar(10) NOT NULL, + [FECHA] datetime NOT NULL, + [OK] bit NOT NULL, + [ERROR_MSG] varchar(255) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_LOG_CARGA] +TO [public] +GO + +ALTER TABLE [RDX_LOG_CARGA] +ADD UNIQUE NONCLUSTERED ([ID]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_REFERENCIA_GENERICA] ( + [NUMINF] varchar(35) NOT NULL, + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [CLAVE3] numeric(5, 0) NOT NULL, + [FECHACAMBIO] datetime NOT NULL, + [ESTADO] char(1) NOT NULL, + [CODIGO_BARRA] varchar(25) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_REFERENCIA_GENERICA] +TO [public] +GO + +ALTER TABLE [RDX_REFERENCIA_GENERICA] +ADD CONSTRAINT [PK__RDX_REFERENCIA_G__68DE77D5] +PRIMARY KEY CLUSTERED ([NUMINF], [CLAVE1], [CLAVE2], [CLAVE3]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_AJUSTES_ALBARAN] ( + [ALBARAN] char(7) NOT NULL, + [ESTADO] varchar(15) NULL, + [OBSERVACIONES] varchar(255) NULL, + [CONTABILIZAR] char(1) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_AJUSTES_ALBARAN] +TO [public] +GO + +ALTER TABLE [RDX_AJUSTES_ALBARAN] +ADD CONSTRAINT [PK__RDX_AJUSTES_ALBA__1B69F7A2] +PRIMARY KEY CLUSTERED ([ALBARAN]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_AJUSTES_HOJA_DEVOLUCIONES] ( + [NUMHOJA] char(8) NOT NULL, + [ESTADO] varchar(20) NULL, + [OBSERVACIONES] varchar(255) NULL, + [CONTABILIZAR] char(1) CONSTRAINT [DF__RDX_AJUST__CONTA__7BF14C49] DEFAULT 'S' NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_AJUSTES_HOJA_DEVOLUCIONES] +TO [public] +GO + +ALTER TABLE [RDX_AJUSTES_HOJA_DEVOLUCIONES] +ADD CONSTRAINT [PK__RDX_AJUSTES_HOJA__483C9E19] +PRIMARY KEY CLUSTERED ([NUMHOJA]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_DEVOLUCION_AJUSTES] ( + [FECHA] datetime NOT NULL, + [CENTRO] varchar(17) NOT NULL, + [CODIGO] varchar(12) NOT NULL, + [COLOR] varchar(10) NOT NULL, + [APROBADO] char(1) NULL, + [FECHACAMBIO] datetime NULL, + [CANT38] numeric(15, 0) NULL, + [CANT40] numeric(15, 0) NULL, + [CANT42] numeric(15, 0) NULL, + [CANT44] numeric(15, 0) NULL, + [CANT46] numeric(15, 0) NULL, + [CANT48] numeric(15, 0) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_DEVOLUCION_AJUSTES] +TO [public] +GO + +ALTER TABLE [RDX_DEVOLUCION_AJUSTES] +ADD CONSTRAINT [PK_RDX_DEVOLUCION_AJUSTES_2F70F04A] +PRIMARY KEY CLUSTERED ([FECHA], [CENTRO], [CODIGO], [COLOR]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_RECEPCION_AJUSTES] ( + [FECHA] datetime NOT NULL, + [CENTRO] varchar(17) NOT NULL, + [CODIGO] varchar(12) NOT NULL, + [COLOR] varchar(10) NOT NULL, + [APROBADO] char(1) NULL, + [FECHACAMBIO] datetime NULL, + [CANT38] numeric(15, 0) NULL, + [CANT40] numeric(15, 0) NULL, + [CANT42] numeric(15, 0) NULL, + [CANT44] numeric(15, 0) NULL, + [CANT46] numeric(15, 0) NULL, + [CANT48] numeric(15, 0) NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_RECEPCION_AJUSTES] +TO [public] +GO + +ALTER TABLE [RDX_RECEPCION_AJUSTES] +ADD CONSTRAINT [PK_RDX_RECEPCION_AJUSTES_2F70F04F] +PRIMARY KEY CLUSTERED ([FECHA], [CENTRO], [CODIGO], [COLOR]) +ON [PRIMARY] +GO + +--------------- SQL --------------- +CREATE TABLE [RDX_TRASPASOS_AJUSTES] ( + [FECHA] datetime NOT NULL, + [CENTRO] varchar(17) NOT NULL, + [CENTRO2] varchar(17) NOT NULL, + [CODIGO] varchar(12) NOT NULL, + [COLOR] varchar(10) NOT NULL, + [APROBADO] char(1) NULL, + [ESTADO] varchar(20) NULL, + [OBSERVACIONES] varchar(255) NULL, + [CONTABILIZAR] char(1) NULL, + [FECHACAMBIO] datetime NULL, + [CANT38] numeric(15, 0) NULL, + [CANT40] numeric(15, 0) NULL, + [CANT42] numeric(15, 0) NULL, + [CANT44] numeric(15, 0) NULL, + [CANT46] numeric(15, 0) NULL, + [CANT48] numeric(15, 0) NULL, + [TIPOCANT] varchar(3) NOT NULL +) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_TRASPASOS_AJUSTES] +TO [public] +GO + +ALTER TABLE [RDX_TRASPASOS_AJUSTES] +ADD CONSTRAINT [PK_RDX_TRASPASOS_AJUSTES_2F70F04A] +PRIMARY KEY CLUSTERED ([FECHA], [CENTRO], [CENTRO2], [CODIGO], [COLOR], [TIPOCANT]) +ON [PRIMARY] +GO \ No newline at end of file diff --git a/2.1.0/Database/ANTERIOR/Script Vistas INVRPT.sql b/2.1.0/Database/ANTERIOR/Script Vistas INVRPT.sql new file mode 100644 index 0000000..d2d4f7f --- /dev/null +++ b/2.1.0/Database/ANTERIOR/Script Vistas INVRPT.sql @@ -0,0 +1,1156 @@ +-- +-- Definition for view RDX_V_ALBARANES : +-- + +CREATE VIEW RDX_V_ALBARANES AS +SELECT + FATURAMENTO.NF_SAIDA AS ALBARAN, + FATURAMENTO.EMISSAO AS FECHA, + RDX_FILIALES.CODBARRA AS CENTRO, + FATURAMENTO.NOME_CLIFOR AS FILIAL, + PRODUTOS_BARRA.CODIGO_BARRA, + FATURAMENTO_PROD.PRODUTO AS CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + PRODUTOS_BARRA.COR_PRODUTO AS COLOR, + PRODUTOS_BARRA.GRADE AS TALLA, + CANTIDAD = CASE PRODUTOS_BARRA.GRADE + WHEN '38' THEN F1 + WHEN '40' THEN F2 + WHEN '42' THEN F3 + WHEN '44' THEN F4 + WHEN '46' THEN F5 + WHEN '48' THEN F6 + END, + RDX_AJUSTES_ALBARAN.ESTADO, + RDX_AJUSTES_ALBARAN.OBSERVACIONES, + CONTABILIZAR = ISNULL(RDX_AJUSTES_ALBARAN.CONTABILIZAR, 'S') +FROM FATURAMENTO_PROD +INNER JOIN FATURAMENTO ON + (FATURAMENTO.NF_SAIDA = FATURAMENTO_PROD.NF_SAIDA) +INNER JOIN FATURAMENTO_TIPO ON + (LTRIM(RTRIM(FATURAMENTO.TIPO_FATURAMENTO)) = FATURAMENTO_TIPO.TIPO_FATURAMENTO) +LEFT OUTER JOIN FILIAIS ON + (FILIAIS.FILIAL = FATURAMENTO.NOME_CLIFOR) +LEFT OUTER JOIN RDX_FILIALES ON + (RDX_FILIALES.CODFILIAL = FILIAIS.COD_FILIAL) +LEFT OUTER JOIN PRODUTOS_BARRA ON + (((PRODUTOS_BARRA.PRODUTO = FATURAMENTO_PROD.PRODUTO) AND + (PRODUTOS_BARRA.COR_PRODUTO = FATURAMENTO_PROD.COR_PRODUTO)) AND + ((PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F1 <> 0) THEN '38' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F2 <> 0) THEN '40' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F3 <> 0) THEN '42' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F4 <> 0) THEN '44' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F5 <> 0) THEN '46' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (FATURAMENTO_PROD.F6 <> 0) THEN '48' END))) +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +LEFT OUTER JOIN RDX_AJUSTES_ALBARAN ON + (RDX_AJUSTES_ALBARAN.ALBARAN = FATURAMENTO.NF_SAIDA) +WHERE FATURAMENTO_TIPO.INDICADOR_TIPO = 'VTPT' /* ALBARANES DE PRODUCTOS TERMINADOS */ +AND FATURAMENTO.NOME_CLIFOR LIKE '%INGLES%' /* ALBARANES PARA CENTROS DEL CORTE INGLES */ +AND FATURAMENTO.EMISSAO >= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_ALBARANES] +TO [public] +GO + +-- +-- Definition for view RDX_V_HOJAS_DEVOLUCIONES : +-- + +CREATE VIEW RDX_V_HOJAS_DEVOLUCIONES AS +SELECT + LOJA_SAIDAS.ROMANEIO_PRODUTO AS NUMHOJA, + LOJA_SAIDAS.EMISSAO AS FECHA, + RDX_FILIALES_ORI.CODBARRA AS CENTRO_ORIGEN, + LOJA_SAIDAS.FILIAL AS FILIAL_ORIGEN, + RDX_FILIALES_DES.CODBARRA AS CENTRO_DESTINO, + LOJA_SAIDAS.FILIAL_DESTINO AS FILIAL_DESTINO, + PRODUTOS_BARRA.CODIGO_BARRA, + LOJA_SAIDAS_PRODUTO.PRODUTO AS CODIGO, + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA ****'), + PRODUTOS_BARRA.COR_PRODUTO AS COLOR, + PRODUTOS_BARRA.GRADE AS TALLA, + CANTIDAD = CASE PRODUTOS_BARRA.GRADE + WHEN '38' THEN EN1 + WHEN '40' THEN EN2 + WHEN '42' THEN EN3 + WHEN '44' THEN EN4 + WHEN '46' THEN EN5 + WHEN '48' THEN EN6 + END, + RDX_AJUSTES_HOJA_DEVOLUCIONES.ESTADO, + RDX_AJUSTES_HOJA_DEVOLUCIONES.OBSERVACIONES, + CONTABILIZAR = ISNULL(RDX_AJUSTES_HOJA_DEVOLUCIONES.CONTABILIZAR, 'S') +FROM LOJA_SAIDAS_PRODUTO +INNER JOIN LOJA_SAIDAS ON (LOJA_SAIDAS.ROMANEIO_PRODUTO = LOJA_SAIDAS_PRODUTO.ROMANEIO_PRODUTO) +INNER JOIN PRODUTOS_BARRA on + (((PRODUTOS_BARRA.PRODUTO = LOJA_SAIDAS_PRODUTO.PRODUTO) AND + (PRODUTOS_BARRA.COR_PRODUTO = LOJA_SAIDAS_PRODUTO.COR_PRODUTO)) AND + ((PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN1 <> 0) THEN '38' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN2 <> 0) THEN '40' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN3 <> 0) THEN '42' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN4 <> 0) THEN '44' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN5 <> 0) THEN '46' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN6 <> 0) THEN '48' END))) +INNER JOIN PRODUTOS on (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +INNER JOIN FILIAIS AS FILIAIS_ORI ON (FILIAIS_ORI.FILIAL = LOJA_SAIDAS.FILIAL) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_ORI ON (RDX_FILIALES_ORI.CODFILIAL = FILIAIS_ORI.COD_FILIAL) +INNER JOIN FILIAIS AS FILIAIS_DES ON (FILIAIS_DES.FILIAL = LOJA_SAIDAS.FILIAL_DESTINO) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_DES ON (RDX_FILIALES_DES.CODFILIAL = FILIAIS_DES.COD_FILIAL) +LEFT OUTER JOIN RDX_AJUSTES_HOJA_DEVOLUCIONES ON + (RDX_AJUSTES_HOJA_DEVOLUCIONES.NUMHOJA = LOJA_SAIDAS.ROMANEIO_PRODUTO) +WHERE + LOJA_SAIDAS.TIPO_ENTRADA_SAIDA = 2 /* DEVOLUCION DE PRENDAS A VARELA */ +AND LOJA_SAIDAS.EMISSAO >= '2006.07.01' /* PARA NO COGER AÑOS ANTERIORES */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_HOJAS_DEVOLUCIONES] +TO [public] +GO + +-- +-- Definition for view RDX_V_HOJAS_TRASPASOS : +-- + +CREATE VIEW RDX_V_HOJAS_TRASPASOS AS +SELECT + LOJA_SAIDAS.ROMANEIO_PRODUTO AS NUMHOJA, + LOJA_SAIDAS.EMISSAO AS FECHA, + RDX_FILIALES_ORI.CODBARRA AS CENTRO_ORIGEN, + LOJA_SAIDAS.FILIAL AS FILIAL_ORIGEN, + RDX_FILIALES_DES.CODBARRA AS CENTRO_DESTINO, + LOJA_SAIDAS.FILIAL_DESTINO AS FILIAL_DESTINO, + PRODUTOS_BARRA.CODIGO_BARRA, + LOJA_SAIDAS_PRODUTO.PRODUTO AS CODIGO, + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA ****'), + PRODUTOS_BARRA.COR_PRODUTO AS COLOR, + PRODUTOS_BARRA.GRADE AS TALLA, + CANTIDAD = CASE PRODUTOS_BARRA.GRADE + WHEN '38' THEN EN1 + WHEN '40' THEN EN2 + WHEN '42' THEN EN3 + WHEN '44' THEN EN4 + WHEN '46' THEN EN5 + WHEN '48' THEN EN6 + END +FROM LOJA_SAIDAS_PRODUTO +INNER JOIN LOJA_SAIDAS ON (LOJA_SAIDAS.ROMANEIO_PRODUTO = LOJA_SAIDAS_PRODUTO.ROMANEIO_PRODUTO) +INNER JOIN PRODUTOS_BARRA on + (((PRODUTOS_BARRA.PRODUTO = LOJA_SAIDAS_PRODUTO.PRODUTO) AND + (PRODUTOS_BARRA.COR_PRODUTO = LOJA_SAIDAS_PRODUTO.COR_PRODUTO)) AND + ((PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN1 <> 0) THEN '38' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN2 <> 0) THEN '40' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN3 <> 0) THEN '42' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN4 <> 0) THEN '44' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN5 <> 0) THEN '46' END) OR + (PRODUTOS_BARRA.GRADE = CASE WHEN (LOJA_SAIDAS_PRODUTO.EN6 <> 0) THEN '48' END))) +INNER JOIN PRODUTOS on (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +INNER JOIN FILIAIS AS FILIAIS_ORI ON (FILIAIS_ORI.FILIAL = LOJA_SAIDAS.FILIAL) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_ORI ON (RDX_FILIALES_ORI.CODFILIAL = FILIAIS_ORI.COD_FILIAL) +INNER JOIN FILIAIS AS FILIAIS_DES ON (FILIAIS_DES.FILIAL = LOJA_SAIDAS.FILIAL_DESTINO) +INNER JOIN RDX_FILIALES AS RDX_FILIALES_DES ON (RDX_FILIALES_DES.CODFILIAL = FILIAIS_DES.COD_FILIAL) +WHERE LOJA_SAIDAS.TIPO_ENTRADA_SAIDA = 1 /* TRASPASOS DE PRENDAS A OTRO CENTRO */ +AND LOJA_SAIDAS.EMISSAO >= '2006.07.01' /* PARA NO COGER AÑOS ANTERIORES */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_HOJAS_TRASPASOS] +TO [public] +GO + +-- +-- Definition for view RDX_V_INVENTARIOEDI : +-- + +CREATE VIEW RDX_V_INVENTARIOEDI AS +SELECT + RDX_CANTINV.NUMDOC, + RDX_CANTINV.NUMLIN, + RDX_CANTINV.NUMCANT, + RDX_CANTINV.TIPOCANT, + RDX_CABINV.FECHALIQ AS FECHA, + RDX_CABINV.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_CABINV.CENTRO), + RDX_CANTINV.IDVEN AS CODVEN, + VENDEDOR = ISNULL(LTRIM(RTRIM(LOJA_VENDEDORES.NOME_VENDEDOR)) + ' ' + LTRIM(RTRIM(LOJA_VENDEDORES.VENDEDOR_APELIDO)), RDX_CANTINV.IDVEN), + RDX_LININV.CODART AS CODIGO_BARRA, + CODIGO = ISNULL(PRODUTOS.PRODUTO, '107CH.EN.01'), + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, '*** ERROR REFERENCIA **** LLAMAR AL CI'), + COLOR = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, 300), + TALLA = PRODUTOS_BARRA.GRADE, + RDX_CANTINV.CANTIDAD, + CENTRO2 = RDX_CANTINV.CENTRO, + FILIAL2 = ISNULL(FILIAIS2.FILIAL, RDX_CANTINV.CENTRO) +FROM RDX_CANTINV +INNER JOIN RDX_LININV ON + ((RDX_LININV.NUMDOC = RDX_CANTINV.NUMDOC) AND + (RDX_LININV.NUMLIN = RDX_CANTINV.NUMLIN)) +INNER JOIN RDX_CABINV ON + (RDX_CABINV.NUMDOC = RDX_LININV.NUMDOC) +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_CABINV.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN RDX_FILIALES RDX_FILIALES2 ON (RDX_FILIALES2.CODBARRA = RDX_CANTINV.CENTRO) +LEFT OUTER JOIN FILIAIS FILIAIS2 ON (FILIAIS2.COD_FILIAL = RDX_FILIALES2.CODFILIAL) +LEFT OUTER JOIN LOJA_VENDEDORES ON (LOJA_VENDEDORES.RG LIKE '%' + RDX_CANTINV.IDVEN + '%') +LEFT OUTER JOIN PRODUTOS_BARRA ON ((PRODUTOS_BARRA.CODIGO_BARRA = RDX_LININV.CODART)) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +WHERE RDX_CABINV.FECHALIQ >= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIOEDI] +TO [public] +GO + +-- +-- Definition for view RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA : +-- + +CREATE VIEW RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD +FROM RDX_V_INVENTARIOEDI +WHERE (TIPOCANT = 61) /* DEVOLUCION DE PRENDAS A VARELA */ + OR (TIPOCANT = 65) /* DEVOLUCION POR TARA */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA] +TO [public] +GO + + +-- +-- Definition for view RDX_V_INVENTARIOEDI_RECEPCION : +-- + +CREATE VIEW RDX_V_INVENTARIOEDI_RECEPCION AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD +FROM RDX_V_INVENTARIOEDI +WHERE TIPOCANT = 194 /* RECEPCION DE PRENDAS DESDE VARELA */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIOEDI_RECEPCION] +TO [public] +GO + + +-- +-- Definition for view RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA : +-- + +CREATE VIEW RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO_ORIGEN = CENTRO2, + FILIAL_ORIGEN = FILIAL2 +FROM RDX_V_INVENTARIOEDI +WHERE TIPOCANT = 46 /* ENTRADA DE PRENDAS DESDE OTRO CENTRO */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA] +TO [public] +GO + + +-- +-- Definition for view RDX_V_INVENTARIOEDI_TRASPASO_SALIDA : +-- + +CREATE VIEW RDX_V_INVENTARIOEDI_TRASPASO_SALIDA AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO_DESTINO = CENTRO2, + FILIAL_DESTINO = FILIAL2 +FROM RDX_V_INVENTARIOEDI +WHERE TIPOCANT = 48 /* SALIDA DE PRENDAS A OTRO CENTRO */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIOEDI_TRASPASO_SALIDA] +TO [public] +GO + +-- +-- Definition for view RDX_V_RECEPCION : +-- + +CREATE VIEW RDX_V_RECEPCION AS +SELECT + CENTRO = ISNULL(RDX_V_ALBARANES.CENTRO, RDX_V_INVENTARIOEDI_RECEPCION.CENTRO), + FILIAL = ISNULL(RDX_V_ALBARANES.FILIAL, RDX_V_INVENTARIOEDI_RECEPCION.FILIAL), + CODIGO = ISNULL(RDX_V_ALBARANES.CODIGO, RDX_V_INVENTARIOEDI_RECEPCION.CODIGO), + PRODUCTO = ISNULL(RDX_V_ALBARANES.PRODUCTO, RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO), + COLOR = ISNULL(RDX_V_ALBARANES.COLOR, RDX_V_INVENTARIOEDI_RECEPCION.COLOR), + FECHA = ISNULL(RDX_V_ALBARANES.FECHA, RDX_V_INVENTARIOEDI_RECEPCION.FECHA), + + /* ALBARAN Y ESTADO */ + ALBARAN = RDX_V_ALBARANES.ALBARAN, + ESTADO_ALBARAN = RDX_V_ALBARANES.ESTADO, + OBSERVACIONES_ALBARAN = RDX_V_ALBARANES.OBSERVACIONES, + CONTABILIZAR_ALBARAN = ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S'), + + /* CANTIDADES ENVIADAS DESDE VARELA */ + E38 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 38 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E40 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 40 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E42 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 42 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E44 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 44 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E46 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 46 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + E48 = SUM(CASE WHEN RDX_V_ALBARANES.TALLA = 48 THEN + ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END), + ENVIADO = SUM( + CASE ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END + ), + + /* CANTIDADES RECIBIDAS EN EL CENTRO*/ + R38 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 38 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R40 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 40 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R42 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 42 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R44 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 44 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + R48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_RECEPCION.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0) + END), + RECIBIDO = SUM(ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0)), + + DIFERENCIA = SUM( + CASE ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_ALBARANES.CANTIDAD, 0) + END + ) - + SUM(ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD, 0)) +FROM + RDX_V_ALBARANES +FULL OUTER JOIN RDX_V_INVENTARIOEDI_RECEPCION ON + ((RDX_V_INVENTARIOEDI_RECEPCION.CENTRO = RDX_V_ALBARANES.CENTRO) AND + (RDX_V_INVENTARIOEDI_RECEPCION.CODIGO_BARRA = RDX_V_ALBARANES.CODIGO_BARRA) AND + (RDX_V_INVENTARIOEDI_RECEPCION.FECHA = RDX_V_ALBARANES.FECHA)) +GROUP BY + ISNULL(RDX_V_ALBARANES.CENTRO, RDX_V_INVENTARIOEDI_RECEPCION.CENTRO), + ISNULL(RDX_V_ALBARANES.FILIAL, RDX_V_INVENTARIOEDI_RECEPCION.FILIAL), + ISNULL(RDX_V_ALBARANES.CODIGO, RDX_V_INVENTARIOEDI_RECEPCION.CODIGO), + ISNULL(RDX_V_ALBARANES.PRODUCTO, RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO), + ISNULL(RDX_V_ALBARANES.COLOR, RDX_V_INVENTARIOEDI_RECEPCION.COLOR), + ISNULL(RDX_V_ALBARANES.FECHA, RDX_V_INVENTARIOEDI_RECEPCION.FECHA), + RDX_V_ALBARANES.ALBARAN, + RDX_V_ALBARANES.ESTADO, + RDX_V_ALBARANES.OBSERVACIONES, + ISNULL(RDX_V_ALBARANES.CONTABILIZAR, 'S') +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_RECEPCION] +TO [public] +GO + +-- +-- Definition for view RDX_V_DEVOLUCIONES : +-- + +CREATE VIEW RDX_V_DEVOLUCIONES AS +SELECT + CENTRO = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CENTRO_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CENTRO), + FILIAL = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FILIAL_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FILIAL), + CODIGO = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CODIGO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CODIGO), + PRODUCTO = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.PRODUCTO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.PRODUCTO), + COLOR = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.COLOR, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.COLOR), + FECHA = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FECHA, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FECHA), + + /* HOJA DE MOVIMIENTOS Y ESTADO */ + NUMHOJA = RDX_V_HOJAS_DEVOLUCIONES.NUMHOJA, + ESTADO_HOJA = RDX_V_HOJAS_DEVOLUCIONES.ESTADO, + OBSERVACIONES_HOJA = RDX_V_HOJAS_DEVOLUCIONES.OBSERVACIONES, + CONTABILIZAR_HOJA = ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S'), + + /* CANTIDADES SOLICITADAS DESDE VARELA */ + S38 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 38 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S40 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 40 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S42 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 42 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S44 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 44 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S46 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 46 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + S48 = SUM(CASE WHEN RDX_V_HOJAS_DEVOLUCIONES.TALLA = 48 THEN + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END), + SOLICITADO = SUM( + CASE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END + ), + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + E38 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 38 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E40 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 40 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E42 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 42 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E44 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 44 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + E48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0) + END), + + ENVIADO = SUM(ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0)), + + DIFERENCIA = SUM( + CASE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S') + WHEN 'N' THEN 0 + ELSE ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CANTIDAD, 0) + END) - + SUM(ISNULL(RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CANTIDAD, 0)) +FROM + RDX_V_HOJAS_DEVOLUCIONES +FULL OUTER JOIN RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA ON + ((RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CENTRO = RDX_V_HOJAS_DEVOLUCIONES.CENTRO_ORIGEN) AND + (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CODIGO_BARRA = RDX_V_HOJAS_DEVOLUCIONES.CODIGO_BARRA) AND + (RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FECHA = RDX_V_HOJAS_DEVOLUCIONES.FECHA)) +GROUP BY + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CENTRO_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CENTRO), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FILIAL_ORIGEN, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FILIAL), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CODIGO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.CODIGO), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.PRODUCTO, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.PRODUCTO), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.COLOR, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.COLOR), + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.FECHA, RDX_V_INVENTARIOEDI_DEVOLUCION_Y_TARA.FECHA), + RDX_V_HOJAS_DEVOLUCIONES.NUMHOJA, + RDX_V_HOJAS_DEVOLUCIONES.ESTADO, + RDX_V_HOJAS_DEVOLUCIONES.OBSERVACIONES, + ISNULL(RDX_V_HOJAS_DEVOLUCIONES.CONTABILIZAR, 'S') +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_DEVOLUCIONES] +TO [public] +GO + + +-- +-- Definition for view RDX_V_CONTROL_DEVOLUCIONES : +-- + +CREATE VIEW RDX_V_CONTROL_DEVOLUCIONES AS +SELECT + APROBADO = ISNULL(RDX_DEVOLUCION_AJUSTES.APROBADO, 'N'), + RDX_DEVOLUCION_AJUSTES.FECHACAMBIO, + + RDX_V_DEVOLUCIONES.CENTRO, + RDX_V_DEVOLUCIONES.FILIAL, + RDX_V_DEVOLUCIONES.CODIGO, + RDX_V_DEVOLUCIONES.PRODUCTO, + RDX_V_DEVOLUCIONES.COLOR, + RDX_V_DEVOLUCIONES.FECHA, + + /* HOJA DE MOVIMIENTOS Y ESTADO */ + RDX_V_DEVOLUCIONES.NUMHOJA, + RDX_V_DEVOLUCIONES.ESTADO_HOJA, + RDX_V_DEVOLUCIONES.OBSERVACIONES_HOJA, + RDX_V_DEVOLUCIONES.CONTABILIZAR_HOJA, + + /* CANTIDADES SOLICITADAS DESDE VARELA */ + S38, S40, S42, S44, S46, S48, RDX_V_DEVOLUCIONES.SOLICITADO, + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + E38, E40, E42, E44, E46, E48, RDX_V_DEVOLUCIONES.ENVIADO, + + /* CANTIDADES ENVIADAS RECTIFICADAS */ + ER38 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT38, E38), + ER40 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT40, E40), + ER42 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT42, E42), + ER44 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT44, E44), + ER46 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT46, E46), + ER48 = ISNULL(RDX_DEVOLUCION_AJUSTES.CANT48, E48), + + ENVIADO_RECT = + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT38, ISNULL(E38, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT40, ISNULL(E40, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT42, ISNULL(E42, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT44, ISNULL(E44, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT46, ISNULL(E46, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT48, ISNULL(E48, 0)), + + DIFERENCIA = + ( + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT38, ISNULL(E38, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT40, ISNULL(E40, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT42, ISNULL(E42, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT44, ISNULL(E44, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT46, ISNULL(E46, 0)) + + ISNULL(RDX_DEVOLUCION_AJUSTES.CANT48, ISNULL(E48, 0)) + ) - SOLICITADO +FROM + RDX_V_DEVOLUCIONES +LEFT OUTER JOIN RDX_DEVOLUCION_AJUSTES ON + ((RDX_DEVOLUCION_AJUSTES.FECHA = RDX_V_DEVOLUCIONES.FECHA) AND + (RDX_DEVOLUCION_AJUSTES.CENTRO = RDX_V_DEVOLUCIONES.CENTRO) AND + (RDX_DEVOLUCION_AJUSTES.CODIGO = RDX_V_DEVOLUCIONES.CODIGO) AND + (RDX_DEVOLUCION_AJUSTES.COLOR = RDX_V_DEVOLUCIONES.COLOR)) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_CONTROL_DEVOLUCIONES] +TO [public] +GO + + +-- +-- Definition for view RDX_V_CONTROL_RECEPCION : +-- + +CREATE VIEW RDX_V_CONTROL_RECEPCION AS +SELECT + APROBADO = ISNULL(RDX_RECEPCION_AJUSTES.APROBADO, 'N'), + RDX_RECEPCION_AJUSTES.FECHACAMBIO, + + RDX_V_RECEPCION.CENTRO, + RDX_V_RECEPCION.FILIAL, + RDX_V_RECEPCION.CODIGO, + RDX_V_RECEPCION.PRODUCTO, + RDX_V_RECEPCION.COLOR, + RDX_V_RECEPCION.FECHA, + + /* ALBARAN Y ESTADO */ + RDX_V_RECEPCION.ALBARAN, + RDX_V_RECEPCION.ESTADO_ALBARAN, + RDX_V_RECEPCION.OBSERVACIONES_ALBARAN, + RDX_V_RECEPCION.CONTABILIZAR_ALBARAN, + + /* CANTIDADES ENVIADAS DESDE VARELA */ + E38, E40, E42, E44, E46, E48, RDX_V_RECEPCION.ENVIADO, + + /* CANTIDADES RECIBIDAS EN EL CENTRO*/ + R38, R40, R42, R44, R46, R48, RDX_V_RECEPCION.RECIBIDO, + + /* CANTIDADES RECIBIDAS RECTIFICADAS */ + RR38 = ISNULL(RDX_RECEPCION_AJUSTES.CANT38, R38), + RR40 = ISNULL(RDX_RECEPCION_AJUSTES.CANT40, R40), + RR42 = ISNULL(RDX_RECEPCION_AJUSTES.CANT42, R42), + RR44 = ISNULL(RDX_RECEPCION_AJUSTES.CANT44, R44), + RR46 = ISNULL(RDX_RECEPCION_AJUSTES.CANT46, R46), + RR48 = ISNULL(RDX_RECEPCION_AJUSTES.CANT48, R48), + + RECIBIDO_RECT = + ISNULL(RDX_RECEPCION_AJUSTES.CANT38, ISNULL(R38, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT40, ISNULL(R40, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT42, ISNULL(R42, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT44, ISNULL(R44, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT46, ISNULL(R46, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT48, ISNULL(R48, 0)), + + DIFERENCIA = + ( + ISNULL(RDX_RECEPCION_AJUSTES.CANT38, ISNULL(R38, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT40, ISNULL(R40, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT42, ISNULL(R42, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT44, ISNULL(R44, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT46, ISNULL(R46, 0)) + + ISNULL(RDX_RECEPCION_AJUSTES.CANT48, ISNULL(R48, 0)) + ) - ENVIADO +FROM + RDX_V_RECEPCION +LEFT OUTER JOIN RDX_RECEPCION_AJUSTES ON + ((RDX_RECEPCION_AJUSTES.FECHA = RDX_V_RECEPCION.FECHA) AND + (RDX_RECEPCION_AJUSTES.CENTRO = RDX_V_RECEPCION.CENTRO) AND + (RDX_RECEPCION_AJUSTES.CODIGO = RDX_V_RECEPCION.CODIGO) AND + (RDX_RECEPCION_AJUSTES.COLOR = RDX_V_RECEPCION.COLOR)) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_CONTROL_RECEPCION] +TO [public] +GO + +-- +-- Definition for view RDX_V_CONTROL_TRASPASOS : +-- + +CREATE VIEW RDX_V_CONTROL_TRASPASOS AS +SELECT + RDX_V_TRASPASOS.TIPO, + RDX_V_TRASPASOS.FECHA, + RDX_V_TRASPASOS.CENTRO, + RDX_V_TRASPASOS.FILIAL, + RDX_V_TRASPASOS.CENTRO2, + RDX_V_TRASPASOS.FILIAL2, + APROBADO = ISNULL(RDX_TRASPASOS_AJUSTES.APROBADO, 'N'), + ESTADO_TRASPASO = RDX_TRASPASOS_AJUSTES.ESTADO, + OBSERVACIONES = RDX_TRASPASOS_AJUSTES.OBSERVACIONES, + CONTABILIZAR = ISNULL(RDX_TRASPASOS_AJUSTES.CONTABILIZAR, 'S'), + RDX_TRASPASOS_AJUSTES.FECHACAMBIO, + RDX_V_TRASPASOS.CODIGO, + RDX_V_TRASPASOS.PRODUCTO, + RDX_V_TRASPASOS.COLOR, + RDX_V_TRASPASOS.T38, + RDX_V_TRASPASOS.T40, + RDX_V_TRASPASOS.T42, + RDX_V_TRASPASOS.T44, + RDX_V_TRASPASOS.T46, + RDX_V_TRASPASOS.T48, + RDX_V_TRASPASOS.TOTAL, + TR38 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT38, RDX_V_TRASPASOS.T38), + TR40 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT40, RDX_V_TRASPASOS.T40), + TR42 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT42, RDX_V_TRASPASOS.T42), + TR44 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT44, RDX_V_TRASPASOS.T44), + TR46 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT46, RDX_V_TRASPASOS.T46), + TR48 = ISNULL(RDX_TRASPASOS_AJUSTES.CANT48, RDX_V_TRASPASOS.T48), + TOTAL_RECT = + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT38, RDX_V_TRASPASOS.T38), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT40, RDX_V_TRASPASOS.T40), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT42, RDX_V_TRASPASOS.T42), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT44, RDX_V_TRASPASOS.T44), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT46, RDX_V_TRASPASOS.T46), 0) + + ISNULL(ISNULL(RDX_TRASPASOS_AJUSTES.CANT48, RDX_V_TRASPASOS.T48), 0) +FROM RDX_V_TRASPASOS +LEFT OUTER JOIN RDX_TRASPASOS_AJUSTES ON + ((RDX_TRASPASOS_AJUSTES.CENTRO = RDX_V_TRASPASOS.CENTRO) AND + (RDX_TRASPASOS_AJUSTES.CENTRO2 = RDX_V_TRASPASOS.CENTRO2) AND + (RDX_TRASPASOS_AJUSTES.CODIGO = RDX_V_TRASPASOS.CODIGO) AND + (RDX_TRASPASOS_AJUSTES.COLOR = RDX_V_TRASPASOS.COLOR) AND + (RDX_TRASPASOS_AJUSTES.FECHA = RDX_V_TRASPASOS.FECHA) AND + (RDX_TRASPASOS_AJUSTES.TIPOCANT = RDX_V_TRASPASOS.TIPO)) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_CONTROL_TRASPASOS] +TO [public] +GO + + + + + + + + + + + + +-- +-- Definition for view RDX_V_TRASPASO_SALIDA : +-- + +CREATE VIEW RDX_V_TRASPASO_SALIDA AS +SELECT + CENTRO_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO, + FILIAL_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL, + + CENTRO_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO_DESTINO, + FILIAL_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL_DESTINO, + + CODIGO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CODIGO, + PRODUCTO = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.PRODUCTO, + COLOR = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.COLOR, + FECHA = RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FECHA, + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + T38 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 38 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T40 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 40 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T42 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 42 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T44 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 44 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + T48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0) + END), + + TOTAL = SUM(ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CANTIDAD, 0)) +FROM + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA +GROUP BY + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CENTRO_DESTINO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FILIAL_DESTINO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.CODIGO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.PRODUCTO, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.COLOR, + RDX_V_INVENTARIOEDI_TRASPASO_SALIDA.FECHA +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_TRASPASO_SALIDA] +TO [public] +GO + + +-- +-- Definition for view RDX_V_TRASPASO_ENTRADA : +-- + +CREATE VIEW RDX_V_TRASPASO_ENTRADA AS +SELECT + CENTRO_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO_ORIGEN, + FILIAL_ORIGEN = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL_ORIGEN, + + CENTRO_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO, + FILIAL_DESTINO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL, + + CODIGO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CODIGO, + PRODUCTO = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.PRODUCTO, + COLOR = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.COLOR, + FECHA = RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FECHA, + + /* CANTIDADES ENVIADAS DESDE EL CENTRO*/ + T38 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 38 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T40 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 40 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T42 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 42 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T44 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 44 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T46 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 46 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + T48 = SUM(CASE WHEN RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.TALLA = 48 THEN + ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0) + END), + + TOTAL = SUM(ISNULL(RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CANTIDAD, 0)) + +FROM + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA +GROUP BY + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO_ORIGEN, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL_ORIGEN, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CENTRO, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FILIAL, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.CODIGO, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.PRODUCTO, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.COLOR, + RDX_V_INVENTARIOEDI_TRASPASO_ENTRADA.FECHA +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_TRASPASO_ENTRADA] +TO [public] +GO + +-- +-- Definition for view RDX_V_TRASPASOS : +-- + +CREATE VIEW RDX_V_TRASPASOS AS +SELECT + TIPO = 'S', + CENTRO_ORIGEN as CENTRO, + FILIAL_ORIGEN as FILIAL, + CENTRO_DESTINO as CENTRO2, + FILIAL_DESTINO as FILIAL2, + CODIGO, + PRODUCTO, + COLOR, + FECHA, + T38, + T40, + T42, + T44, + T46, + T48, + TOTAL +FROM RDX_V_TRASPASO_SALIDA +UNION +SELECT + 'E', + CENTRO_DESTINO, + FILIAL_DESTINO, + CENTRO_ORIGEN, + FILIAL_ORIGEN, + CODIGO, + PRODUCTO, + COLOR, + FECHA, + T38, + T40, + T42, + T44, + T46, + T48, + TOTAL +FROM RDX_V_TRASPASO_ENTRADA +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_TRASPASOS] +TO [public] +GO + + + + +-- +-- Definition for view RDX_V_RECEPCION_AJUSTES_DESGLOSADO : +-- + +CREATE VIEW RDX_V_RECEPCION_AJUSTES_DESGLOSADO AS +SELECT + RDX_RECEPCION_AJUSTES.FECHA, + RDX_RECEPCION_AJUSTES.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_RECEPCION_AJUSTES.CENTRO), + RDX_RECEPCION_AJUSTES.CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + RDX_RECEPCION_AJUSTES.COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_RECEPCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_RECEPCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_RECEPCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_RECEPCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_RECEPCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_RECEPCION_AJUSTES.CANT48 + END +FROM RDX_TALLAS, RDX_RECEPCION_AJUSTES +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_RECEPCION_AJUSTES.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = RDX_RECEPCION_AJUSTES.CODIGO) +WHERE CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_RECEPCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_RECEPCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_RECEPCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_RECEPCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_RECEPCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_RECEPCION_AJUSTES.CANT48 + END IS NOT NULL +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_RECEPCION_AJUSTES_DESGLOSADO] +TO [public] +GO + + +-- +-- Definition for view RDX_V_CONTROL_RECEPCION_DESGLOSADO : +-- + +CREATE VIEW RDX_V_CONTROL_RECEPCION_DESGLOSADO AS +SELECT + FECHA = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FECHA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA), + CENTRO = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CENTRO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO), + FILIAL = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FILIAL, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FILIAL), + CODIGO = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CODIGO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO), + PRODUCTO = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.PRODUCTO), + COLOR = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.COLOR, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR), + TALLA = ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.TALLA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA), + CANTIDAD = SUM(ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD, RDX_V_INVENTARIOEDI_RECEPCION.CANTIDAD)) +FROM + RDX_V_RECEPCION_AJUSTES_DESGLOSADO +FULL OUTER JOIN RDX_V_INVENTARIOEDI_RECEPCION ON + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI_RECEPCION.FECHA) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI_RECEPCION.CENTRO) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI_RECEPCION.CODIGO) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI_RECEPCION.COLOR) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI_RECEPCION.TALLA) +GROUP BY + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FECHA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CENTRO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.FILIAL, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FILIAL), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.CODIGO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.PRODUCTO, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.PRODUCTO), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.COLOR, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR), + ISNULL(RDX_V_INVENTARIOEDI_RECEPCION.TALLA, RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_CONTROL_RECEPCION_DESGLOSADO] +TO [public] +GO + + + + +-- +-- Definition for view RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO : +-- + +CREATE VIEW RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO AS +SELECT + RDX_DEVOLUCION_AJUSTES.FECHA, + RDX_DEVOLUCION_AJUSTES.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_DEVOLUCION_AJUSTES.CENTRO), + RDX_DEVOLUCION_AJUSTES.CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + RDX_DEVOLUCION_AJUSTES.COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_DEVOLUCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_DEVOLUCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_DEVOLUCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_DEVOLUCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_DEVOLUCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_DEVOLUCION_AJUSTES.CANT48 + END +FROM RDX_TALLAS, RDX_DEVOLUCION_AJUSTES +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_DEVOLUCION_AJUSTES.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = RDX_DEVOLUCION_AJUSTES.CODIGO) +WHERE CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_DEVOLUCION_AJUSTES.CANT38 + WHEN '40' THEN RDX_DEVOLUCION_AJUSTES.CANT40 + WHEN '42' THEN RDX_DEVOLUCION_AJUSTES.CANT42 + WHEN '44' THEN RDX_DEVOLUCION_AJUSTES.CANT44 + WHEN '46' THEN RDX_DEVOLUCION_AJUSTES.CANT46 + WHEN '48' THEN RDX_DEVOLUCION_AJUSTES.CANT48 + END IS NOT NULL +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO] +TO [public] +GO + +-- +-- Definition for view RDX_V_INVENTARIO_MAXFECHAS : +-- + +CREATE VIEW RDX_V_INVENTARIO_MAXFECHAS AS +SELECT + CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + FECHA = MAX(FECHA) +FROM RDX_V_INVENTARIOEDI +WHERE RDX_V_INVENTARIOEDI.TIPOCANT = 145 +GROUP BY + CENTRO, + FILIAL, + CODIGO, + PRODUCTO, + COLOR, + TALLA +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIO_MAXFECHAS] +TO [public] +GO + + +-- +-- Definition for view RDX_V_INVENTARIOEDI_TRASPASO : +-- + +CREATE VIEW RDX_V_INVENTARIOEDI_TRASPASO AS +SELECT + NUMDOC, + NUMLIN, + NUMCANT, + TIPOCANT, + FECHA, + CENTRO, + FILIAL, + CODVEN, + VENDEDOR, + CODIGO_BARRA, + CODIGO, + PRODUCTO, + COLOR, + TALLA, + CANTIDAD, + CENTRO2, + FILIAL2 +FROM RDX_V_INVENTARIOEDI +WHERE (TIPOCANT = 46) or (TIPOCANT = 48) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_INVENTARIOEDI_TRASPASO] +TO [public] +GO + + +-- +-- Definition for view RDX_V_TRASPASOS_AJUSTES_DESGLOSADO : +-- + +CREATE VIEW RDX_V_TRASPASOS_AJUSTES_DESGLOSADO AS +SELECT + RDX_TRASPASOS_AJUSTES.FECHA, + RDX_TRASPASOS_AJUSTES.CENTRO, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_TRASPASOS_AJUSTES.CENTRO), + RDX_TRASPASOS_AJUSTES.CENTRO2, + FILIAL2 = ISNULL(FILIAIS2.FILIAL, RDX_TRASPASOS_AJUSTES.CENTRO2), + TIPO = RDX_TRASPASOS_AJUSTES.TIPOCANT, + RDX_TRASPASOS_AJUSTES.CODIGO, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + RDX_TRASPASOS_AJUSTES.COLOR, + RDX_TALLAS.TALLA, + CANTIDAD = CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_TRASPASOS_AJUSTES.CANT38 + WHEN '40' THEN RDX_TRASPASOS_AJUSTES.CANT40 + WHEN '42' THEN RDX_TRASPASOS_AJUSTES.CANT42 + WHEN '44' THEN RDX_TRASPASOS_AJUSTES.CANT44 + WHEN '46' THEN RDX_TRASPASOS_AJUSTES.CANT46 + WHEN '48' THEN RDX_TRASPASOS_AJUSTES.CANT48 + END +FROM RDX_TALLAS, RDX_TRASPASOS_AJUSTES +LEFT OUTER JOIN RDX_FILIALES ON (RDX_FILIALES.CODBARRA = RDX_TRASPASOS_AJUSTES.CENTRO) +LEFT OUTER JOIN FILIAIS ON (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) +LEFT OUTER JOIN RDX_FILIALES AS RDX_FILIALES2 ON (RDX_FILIALES2.CODBARRA = RDX_TRASPASOS_AJUSTES.CENTRO2) +LEFT OUTER JOIN FILIAIS AS FILIAIS2 ON (FILIAIS2.COD_FILIAL = RDX_FILIALES2.CODFILIAL) +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = RDX_TRASPASOS_AJUSTES.CODIGO) +WHERE CASE RDX_TALLAS.TALLA + WHEN '38' THEN RDX_TRASPASOS_AJUSTES.CANT38 + WHEN '40' THEN RDX_TRASPASOS_AJUSTES.CANT40 + WHEN '42' THEN RDX_TRASPASOS_AJUSTES.CANT42 + WHEN '44' THEN RDX_TRASPASOS_AJUSTES.CANT44 + WHEN '46' THEN RDX_TRASPASOS_AJUSTES.CANT46 + WHEN '48' THEN RDX_TRASPASOS_AJUSTES.CANT48 + END IS NOT NULL +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_TRASPASOS_AJUSTES_DESGLOSADO] +TO [public] +GO + +-- +-- Definition for view RDX_V_ULTIMO_RECUENTOINVENTARIO : +-- + +CREATE VIEW RDX_V_ULTIMO_RECUENTOINVENTARIO AS +SELECT + RDX_V_INVENTARIOEDI.FECHA, + RDX_V_INVENTARIOEDI.CENTRO, + RDX_V_INVENTARIOEDI.FILIAL, + RDX_V_INVENTARIOEDI.CODIGO, + RDX_V_INVENTARIOEDI.PRODUCTO, + RDX_V_INVENTARIOEDI.COLOR, + RDX_V_INVENTARIOEDI.TALLA, + RDX_V_INVENTARIOEDI.CANTIDAD +FROM RDX_V_INVENTARIOEDI +INNER JOIN RDX_V_INVENTARIO_MAXFECHAS ON + (RDX_V_INVENTARIOEDI.FECHA = RDX_V_INVENTARIO_MAXFECHAS.FECHA AND + RDX_V_INVENTARIOEDI.CENTRO = RDX_V_INVENTARIO_MAXFECHAS.CENTRO AND + RDX_V_INVENTARIOEDI.CODIGO = RDX_V_INVENTARIO_MAXFECHAS.CODIGO AND + RDX_V_INVENTARIOEDI.COLOR = RDX_V_INVENTARIO_MAXFECHAS.COLOR AND + RDX_V_INVENTARIOEDI.TALLA = RDX_V_INVENTARIO_MAXFECHAS.TALLA) +WHERE RDX_V_INVENTARIOEDI.TIPOCANT = 145 +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_ULTIMO_RECUENTOINVENTARIO] +TO [public] +GO + diff --git a/2.1.0/Database/ANTERIOR/Script Vistas STOCK.sql b/2.1.0/Database/ANTERIOR/Script Vistas STOCK.sql new file mode 100644 index 0000000..04deb77 --- /dev/null +++ b/2.1.0/Database/ANTERIOR/Script Vistas STOCK.sql @@ -0,0 +1,431 @@ +-- +-- Definition for view RDX_V_STOCK_VARELA : +-- + +CREATE VIEW RDX_V_STOCK_VARELA AS +SELECT ESTOQUE_PRODUTOS.FILIAL, + ESTOQUE_PRODUTOS.PRODUTO AS CODIGO, + ESTOQUE_PRODUTOS.COR_PRODUTO AS COLOR, + PRODUCTO = PRODUTOS.DESC_PRODUTO, + PRODUTOS.TIPO_PRODUTO, + PRODUTOS.GRUPO_PRODUTO, + COLECCION=COLECOES.DESC_COLECAO, + + ESTOQUE_PRODUTOS.ES1 as K38, + ESTOQUE_PRODUTOS.ES2 as K40, + ESTOQUE_PRODUTOS.ES3 as K42, + ESTOQUE_PRODUTOS.ES4 as K44, + ESTOQUE_PRODUTOS.ES5 as K46, + ESTOQUE_PRODUTOS.ES6 as K48, + ESTOQUE_PRODUTOS.ESTOQUE as KT + +FROM ESTOQUE_PRODUTOS +LEFT OUTER JOIN PRODUTOS ON (PRODUTOS.PRODUTO = ESTOQUE_PRODUTOS.PRODUTO) +LEFT OUTER JOIN COLECOES ON (PRODUTOS.COLECAO = COLECOES.COLECAO) + +WHERE FILIAL LIKE '%VARELA IMAGEN Y DISEÑO%' +GO + + + +-- +-- Definition for view RDX_V_STOCK_VENTAS : +-- + +CREATE VIEW RDX_V_STOCK_VENTAS AS +SELECT + PERVENINI AS FECHA, + DAY(PERVENINI) AS DIA, + DATENAME(DW, PERVENINI) DIASEMANA, + DATENAME(MONTH, PERVENINI) AS MES, + YEAR(PERVENINI) AS ANO, + FILIAL AS CENTRO, + CODIGO = ISNULL(PRODUTO, '107CH.EN.01'), + DESC_PRODUTO AS PRODUCTO, + GRUPO_PRODUTO AS GRUPOPRODUCTO, + TIPO_PRODUTO AS TIPOPRODUCTO, + DESC_COLECAO AS COLECCION, + COLOR = ISNULL(COR_PRODUTO, '300'), + GRADE AS TALLA, + CANTIDAD = ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) +FROM + RDX_V_VENTASEDI_RESUELTAS +WHERE NOT ((DESC_PRODUTO LIKE '%ERROR REFERENCIA%') AND ((VALVEN < 1) AND (VALVEN > 0))) /* QUITAR COMPOSTURAS */ +GO + + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_STOCK_VENTAS] +TO [public] +GO + + +-- +-- Definition for view RDX_V_STOCK_INVENTARIO : +-- + +CREATE VIEW RDX_V_STOCK_INVENTARIO AS +SELECT + FECHA = ISNULL(RDX_V_INVENTARIOEDI.FECHA, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FECHA, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FECHA))), + CENTRO = ISNULL(RDX_V_INVENTARIOEDI.FILIAL, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FILIAL, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FILIAL, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FILIAL))), + CODIGO = ISNULL(RDX_V_INVENTARIOEDI.CODIGO, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CODIGO, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CODIGO))), + PRODUCTO = ISNULL(RDX_V_INVENTARIOEDI.PRODUCTO, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.PRODUCTO, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.PRODUCTO, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.PRODUCTO))), + COLOR = ISNULL(RDX_V_INVENTARIOEDI.COLOR, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.COLOR, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.COLOR))), + TALLA = ISNULL(RDX_V_INVENTARIOEDI.TALLA, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TALLA, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.TALLA))), + CANTIDAD = ISNULL(RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CANTIDAD, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CANTIDAD, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD, RDX_V_INVENTARIOEDI.CANTIDAD))), + /*RDX_V_INVENTARIOEDI.CANTIDAD, + RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD, + RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CANTIDAD, + RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CANTIDAD,*/ + OPERACION = CASE RDX_V_INVENTARIOEDI.TIPOCANT + WHEN '194' THEN 'R' + WHEN '46' THEN 'E' + WHEN '145' THEN 'RM' + WHEN '48' THEN 'S' + WHEN '61' THEN 'D' + WHEN '65' THEN 'T' + ELSE + CASE + WHEN RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CANTIDAD IS NOT NULL THEN 'R' + WHEN RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CANTIDAD IS NOT NULL THEN 'D' + ELSE RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TIPO + END + END +FROM RDX_V_INVENTARIOEDI +FULL OUTER JOIN RDX_V_INVENTARIO_MAXFECHAS ON + (RDX_V_INVENTARIO_MAXFECHAS.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_INVENTARIO_MAXFECHAS.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_INVENTARIO_MAXFECHAS.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_INVENTARIO_MAXFECHAS.TALLA = RDX_V_INVENTARIOEDI.TALLA) +FULL OUTER JOIN RDX_V_RECEPCION_AJUSTES_DESGLOSADO ON + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_INVENTARIOEDI.CENTRO = RDX_V_INVENTARIOEDI.CENTRO2) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI.TALLA) AND + (RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI.FECHA) +FULL OUTER JOIN RDX_V_TRASPASOS_AJUSTES_DESGLOSADO ON + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CENTRO2 = RDX_V_INVENTARIOEDI.CENTRO2) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI.TALLA) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI.FECHA) AND + (RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.TIPO = RDX_V_INVENTARIOEDI.TIPOCANT) +FULL OUTER JOIN RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO ON + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CENTRO = RDX_V_INVENTARIOEDI.CENTRO) AND + (RDX_V_INVENTARIOEDI.CENTRO = RDX_V_INVENTARIOEDI.CENTRO2) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.CODIGO = RDX_V_INVENTARIOEDI.CODIGO) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.COLOR = RDX_V_INVENTARIOEDI.COLOR) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.TALLA = RDX_V_INVENTARIOEDI.TALLA) AND + (RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FECHA = RDX_V_INVENTARIOEDI.FECHA) +WHERE + ((RDX_V_INVENTARIO_MAXFECHAS.FECHA IS NULL) /* Puede haber prendas que no se hayan inventariado nunca */ + OR + (ISNULL(RDX_V_INVENTARIOEDI.FECHA, ISNULL(RDX_V_RECEPCION_AJUSTES_DESGLOSADO.FECHA, ISNULL(RDX_V_TRASPASOS_AJUSTES_DESGLOSADO.FECHA, RDX_V_DEVOLUCION_AJUSTES_DESGLOSADO.FECHA))) >= RDX_V_INVENTARIO_MAXFECHAS.FECHA)) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_STOCK_INVENTARIO] +TO [public] +GO + + +-- +-- Definition for view RDX_V_STOCK : +-- + +CREATE VIEW RDX_V_STOCK AS +SELECT + CENTRO = ISNULL(RDX_V_STOCK_INVENTARIO.CENTRO, RDX_V_STOCK_VENTAS.CENTRO), + CODIGO = ISNULL(RDX_V_STOCK_INVENTARIO.CODIGO, RDX_V_STOCK_VENTAS.CODIGO), + PRODUCTO = ISNULL(RDX_V_STOCK_INVENTARIO.PRODUCTO, RDX_V_STOCK_VENTAS.PRODUCTO), + TIPO_PRODUCTO = PRODUTOS.TIPO_PRODUTO, + GRUPO_PRODUCTO = PRODUTOS.GRUPO_PRODUTO, + COLECCION = COLECOES.DESC_COLECAO, + COLOR = ISNULL(RDX_V_STOCK_INVENTARIO.COLOR, RDX_V_STOCK_VENTAS.COLOR), + E38 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '38' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E40 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '40' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E42 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '42' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E44 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '44' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E46 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '46' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + E48 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '48' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'RM' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'R' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + WHEN 'E' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) > 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S38 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '38' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S40 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '40' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S42 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '42' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S44 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '44' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S46 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '46' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END), + + S48 = SUM(CASE ISNULL(RDX_V_STOCK_INVENTARIO.TALLA, RDX_V_STOCK_VENTAS.TALLA) + WHEN '48' THEN + CASE RDX_V_STOCK_INVENTARIO.OPERACION + WHEN 'D' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'S' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + WHEN 'T' THEN RDX_V_STOCK_INVENTARIO.CANTIDAD * (-1) + ELSE + 0 + END + + + CASE + WHEN ((RDX_V_STOCK_VENTAS.CANTIDAD * (-1)) < 0) THEN + RDX_V_STOCK_VENTAS.CANTIDAD * (-1) + ELSE + 0 + END + END) +FROM + RDX_V_STOCK_INVENTARIO +FULL OUTER JOIN RDX_V_STOCK_VENTAS ON + (RDX_V_STOCK_INVENTARIO.CENTRO = RDX_V_STOCK_VENTAS.CENTRO) + AND (RDX_V_STOCK_INVENTARIO.CODIGO = RDX_V_STOCK_VENTAS.CODIGO) + AND (RDX_V_STOCK_INVENTARIO.COLOR = RDX_V_STOCK_VENTAS.COLOR) + AND (RDX_V_STOCK_INVENTARIO.TALLA = RDX_V_STOCK_VENTAS.TALLA) + AND (RDX_V_STOCK_INVENTARIO.FECHA = RDX_V_STOCK_VENTAS.FECHA) +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = ISNULL(RDX_V_STOCK_INVENTARIO.CODIGO, RDX_V_STOCK_VENTAS.CODIGO)) +LEFT OUTER JOIN COLECOES ON + (COLECOES.COLECAO = PRODUTOS.COLECAO) + +GROUP BY + ISNULL(RDX_V_STOCK_INVENTARIO.CENTRO, RDX_V_STOCK_VENTAS.CENTRO), + ISNULL(RDX_V_STOCK_INVENTARIO.CODIGO, RDX_V_STOCK_VENTAS.CODIGO), + ISNULL(RDX_V_STOCK_INVENTARIO.PRODUCTO, RDX_V_STOCK_VENTAS.PRODUCTO), + PRODUTOS.TIPO_PRODUTO, + PRODUTOS.GRUPO_PRODUTO, + COLECOES.DESC_COLECAO, + ISNULL(RDX_V_STOCK_INVENTARIO.COLOR, RDX_V_STOCK_VENTAS.COLOR) +GO + +-- +-- Definition for view RDX_V_STOCK_CALCULADO : +-- + +CREATE VIEW RDX_V_STOCK_CALCULADO AS +SELECT + CENTRO, + CODIGO, + PRODUCTO, + TIPO_PRODUCTO, + GRUPO_PRODUCTO, + COLECCION, + COLOR, + E38, + E40, + E42, + E44, + E46, + E48, + TE = ISNULL(E38, 0) + ISNULL(E40, 0) + ISNULL(E42, 0) + ISNULL(E44, 0) + ISNULL(E46, 0) + ISNULL(E48, 0), + S38, + S40, + S42, + S44, + S46, + S48, + TS = ISNULL(S38, 0) + ISNULL(S40, 0) + ISNULL(S42, 0) + ISNULL(S44, 0) + ISNULL(S46, 0) + ISNULL(S48, 0), + K38 = ISNULL(E38, 0) + ISNULL(S38, 0), + K40 = ISNULL(E40, 0) + ISNULL(S40, 0), + K42 = ISNULL(E42, 0) + ISNULL(S42, 0), + K44 = ISNULL(E44, 0) + ISNULL(S44, 0), + K46 = ISNULL(E46, 0) + ISNULL(S46, 0), + K48 = ISNULL(E48, 0) + ISNULL(S48, 0), + KT = ISNULL(E38, 0) + ISNULL(S38, 0) + ISNULL(E40, 0) + ISNULL(S40, 0) + + ISNULL(E42, 0) + ISNULL(S42, 0) + ISNULL(E44, 0) + ISNULL(S44, 0) + + ISNULL(E46, 0) + ISNULL(S46, 0) + ISNULL(E48, 0) + ISNULL(S48, 0) + +FROM RDX_V_STOCK +GO + + + + + + + + diff --git a/2.1.0/Database/ANTERIOR/Script Vistas.sql b/2.1.0/Database/ANTERIOR/Script Vistas.sql new file mode 100644 index 0000000..70c2461 --- /dev/null +++ b/2.1.0/Database/ANTERIOR/Script Vistas.sql @@ -0,0 +1,302 @@ +-- +-- Definition for view RDX_V_VENTASEDI : +-- + +CREATE VIEW RDX_V_VENTASEDI +AS +SELECT + RDX_CABVEN.NUMINF, + RDX_ARTVEN.CLAVE1, + RDX_ARTVEN.CLAVE2, + RDX_ARTVEN.CLAVE3, + RDX_LUGVEN.PERVENINI, + RDX_ARTVEN.NUMTALON, + RDX_LUGVEN.EANLUG, + FILIAL = ISNULL(FILIAIS.FILIAL, RDX_LUGVEN.EANLUG), + RDX_ARTVEN.EANVEN, + LOJA_VENDEDORES.VENDEDOR AS CODVEN, + VENDEDOR = ISNULL(LTRIM(RTRIM(LOJA_VENDEDORES.NOME_VENDEDOR)) + ' ' + LTRIM(RTRIM(LOJA_VENDEDORES.VENDEDOR_APELIDO)), RDX_ARTVEN.EANVEN), + RDX_ARTVEN.EANART, + RDX_ARTVEN.CODCOM, + produtos.PRODUTO, + ISNULL(produtos.DESC_PRODUTO, '*** ERROR REFERENCIA **** LLAMAR AL CI') AS DESC_PRODUTO, + PRODUTOS_BARRA.COR_PRODUTO, + PRODUTOS_BARRA.GRADE, + produtos.TIPO_PRODUTO, + produtos.GRUPO_PRODUTO, + COLECOES.DESC_COLECAO, + RDX_ARTVEN.VALVEN, + RDX_ARTVEN.CANVEN, + RDX_ARTVEN.CANDEV, + RDX_ARTVEN.CANVENNET, + RDX_ARTVEN.CANESP +FROM + RDX_ARTVEN + INNER JOIN RDX_LUGVEN ON (RDX_ARTVEN.CLAVE1 = RDX_LUGVEN.CLAVE1 AND RDX_ARTVEN.CLAVE2 = RDX_LUGVEN.CLAVE2) + INNER JOIN RDX_CABVEN ON (RDX_LUGVEN.CLAVE1 = RDX_CABVEN.CLAVE1) + left outer join RDX_FILIALES on (RDX_FILIALES.CODBARRA = RDX_LUGVEN.EANLUG) + left outer join FILIAIS on (FILIAIS.COD_FILIAL = RDX_FILIALES.CODFILIAL) + LEFT OUTER JOIN LOJA_VENDEDORES ON (LOJA_VENDEDORES.RG LIKE '%' + RDX_ARTVEN.EANVEN + '%') + LEFT OUTER JOIN PRODUTOS_BARRA ON ((PRODUTOS_BARRA.CODIGO_BARRA = RDX_ARTVEN.EANART) or (PRODUTOS_BARRA.CODIGO_BARRA = RDX_ARTVEN.CODCOM)) + LEFT OUTER JOIN PRODUTOS on (produtos.PRODUTO = PRODUTOS_BARRA.PRODUTO) + LEFT OUTER JOIN COLECOES on (COLECOES.COLECAO = PRODUTOS.COLECAO) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_VENTASEDI] +TO [public] +GO + +-- +-- Definition for view RDX_V_REFERENCIAS_RESUELTAS : +-- + +CREATE VIEW RDX_V_REFERENCIAS_RESUELTAS +AS +SELECT * +FROM RDX_REFERENCIA_GENERICA +WHERE ESTADO = 'R' +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_REFERENCIAS_RESUELTAS] +TO [public] +GO + + +-- +-- Definition for view RDX_V_VENTASEDI_RESUELTAS : +-- + +CREATE VIEW RDX_V_VENTASEDI_RESUELTAS +AS +SELECT + RDX_V_VENTASEDI.NUMINF, + RDX_V_VENTASEDI.CLAVE1, + RDX_V_VENTASEDI.CLAVE2, + RDX_V_VENTASEDI.CLAVE3, + RDX_V_VENTASEDI.PERVENINI, + RDX_V_VENTASEDI.NUMTALON, + RDX_V_VENTASEDI.EANLUG, + RDX_V_VENTASEDI.FILIAL, + RDX_V_VENTASEDI.EANVEN, + RDX_V_VENTASEDI.CODVEN, + RDX_V_VENTASEDI.VENDEDOR, + EANART = ISNULL(RDX_V_REFERENCIAS_RESUELTAS.CODIGO_BARRA, RDX_V_VENTASEDI.EANART), + RDX_V_VENTASEDI.CODCOM, + PRODUTO = ISNULL(PRODUTOS_BARRA.PRODUTO, RDX_V_VENTASEDI.PRODUTO), + DESC_PRODUTO = ISNULL(PRODUTOS.DESC_PRODUTO, RDX_V_VENTASEDI.DESC_PRODUTO), + COR_PRODUTO = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, RDX_V_VENTASEDI.COR_PRODUTO), + GRADE = ISNULL(PRODUTOS_BARRA.GRADE, RDX_V_VENTASEDI.GRADE), + TIPO_PRODUTO = ISNULL(PRODUTOS.TIPO_PRODUTO, RDX_V_VENTASEDI.TIPO_PRODUTO), + GRUPO_PRODUTO = ISNULL(PRODUTOS.GRUPO_PRODUTO, RDX_V_VENTASEDI.GRUPO_PRODUTO), + DESC_COLECAO = ISNULL(COLECOES.DESC_COLECAO, RDX_V_VENTASEDI.DESC_COLECAO), + RDX_V_VENTASEDI.VALVEN, + RDX_V_VENTASEDI.CANVEN, + RDX_V_VENTASEDI.CANDEV, + RDX_V_VENTASEDI.CANVENNET, + RDX_V_VENTASEDI.CANESP +FROM RDX_V_VENTASEDI +LEFT JOIN RDX_V_REFERENCIAS_RESUELTAS ON ( + (RDX_V_REFERENCIAS_RESUELTAS.NUMINF = RDX_V_VENTASEDI.NUMINF) AND + (RDX_V_REFERENCIAS_RESUELTAS.CLAVE1 = RDX_V_VENTASEDI.CLAVE1) AND + (RDX_V_REFERENCIAS_RESUELTAS.CLAVE2 = RDX_V_VENTASEDI.CLAVE2) AND + (RDX_V_REFERENCIAS_RESUELTAS.CLAVE3 = RDX_V_VENTASEDI.CLAVE3)) +LEFT JOIN PRODUTOS_BARRA ON ( + (PRODUTOS_BARRA.CODIGO_BARRA = ISNULL(RDX_V_REFERENCIAS_RESUELTAS.CODIGO_BARRA, RDX_V_VENTASEDI.EANART))) +LEFT JOIN PRODUTOS ON ( + (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO)) +LEFT JOIN COLECOES ON ( + (COLECOES.COLECAO = PRODUTOS.COLECAO)) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_VENTASEDI_RESUELTAS] +TO [public] +GO + + +-- +-- Definition for view RDX_V_VENTASEDI_ERRONEAS : +-- + +CREATE VIEW RDX_V_VENTASEDI_ERRONEAS +AS +SELECT +* +FROM + RDX_V_VENTASEDI +WHERE PRODUTO = '107CH.EN.01' +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_VENTASEDI_ERRONEAS] +TO [public] +GO + +-- +-- Definition for view RDX_V_VENTASTERMINADAS : +-- + +CREATE VIEW RDX_V_VENTASTERMINADAS +AS +SELECT + NUMINF, + CLAVE1, + CLAVE2, + CLAVE3, + PERVENINI AS FECHA, + DAY(PERVENINI) AS DIA, + DATENAME(DW, PERVENINI) DIASEMANA, + DATENAME(MONTH, PERVENINI) AS MES, + YEAR(PERVENINI) AS ANO, + FILIAL AS CENTRO, + VENDEDOR, + NUMTALON, + PRODUTO AS CODIGO, + DESC_PRODUTO AS PRODUCTO, + GRUPO_PRODUTO AS GRUPOPRODUCTO, + TIPO_PRODUTO AS TIPOPRODUCTO, + DESC_COLECAO AS COLECCION, + COR_PRODUTO AS COLOR, + GRADE AS TALLA, + TALLA38 = CASE WHEN (GRADE = 38) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA40 = CASE WHEN (GRADE = 40) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA42 = CASE WHEN (GRADE = 42) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA44 = CASE WHEN (GRADE = 44) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA46 = CASE WHEN (GRADE = 46) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + TALLA48 = CASE WHEN (GRADE = 48) THEN ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0) ELSE NULL END, + VENTAS = CASE WHEN (CANVEN > 0) THEN CANVEN ELSE 0 END + + CASE WHEN (CANVENNET > 0) THEN CANVENNET ELSE 0 END, + + DEVOLUCIONES = CASE WHEN (CANVEN < 0) THEN CANVEN ELSE 0 END + + CASE WHEN (CANVENNET < 0) THEN CANVENNET ELSE 0 END, + + TOTAL = ISNULL(CANVEN, 0) + ISNULL(CANVENNET, 0), + VALVEN = CASE WHEN (VALVEN > 0) THEN VALVEN ELSE 0 END, + VALDEV = CASE WHEN (VALVEN < 0) THEN VALVEN ELSE 0 END, + VALTOT = VALVEN +FROM + RDX_V_VENTASEDI_RESUELTAS +WHERE NOT ((DESC_PRODUTO LIKE '%ERROR REFERENCIA%') AND ((VALVEN < 1) AND (VALVEN > 0))) /* QUITAR COMPOSTURAS */ +AND (CANESP IS NULL OR CANESP = 0) /* QUITAR INICIO V.PROCESO */ +AND (VALVEN IS NOT NULL) /* QUITAR CAMBIO DE TALLA */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_VENTASTERMINADAS] +TO [public] +GO + + +-- +-- Definition for view RDX_V_VENTASPROCESO : +-- + +CREATE VIEW RDX_V_VENTASPROCESO AS +SELECT + NUMINF, + CLAVE1, + CLAVE2, + CLAVE3, + PERVENINI AS FECHA, + DAY(PERVENINI) AS DIA, + DATENAME(DW, PERVENINI) DIASEMANA, + DATENAME(MONTH, PERVENINI) AS MES, + YEAR(PERVENINI) AS ANO, + FILIAL AS CENTRO, + VENDEDOR, + NUMTALON, + PRODUTO AS CODIGO, + DESC_PRODUTO AS PRODUCTO, + GRUPO_PRODUTO AS GRUPOPRODUCTO, + TIPO_PRODUTO AS TIPOPRODUCTO, + DESC_COLECAO AS COLECCION, + COR_PRODUTO AS COLOR, + GRADE AS TALLA, + CANESP AS INICIO, + CANVENNET AS FINAL, + VALVEN AS IMPORTE +FROM + RDX_V_VENTASEDI_RESUELTAS +WHERE ((CANESP IS NOT NULL) OR (CANVENNET IS NOT NULL)) +AND NOT ((DESC_PRODUTO LIKE '%ERROR REFERENCIA%') AND ((VALVEN < 1) AND (VALVEN > 0))) /* QUITAR COMPOSTURAS */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_VENTASPROCESO] +TO [public] +GO + + +-- +-- Definition for view RDX_V_VENTASPROCESOPENDIENTES : +-- + +CREATE VIEW RDX_V_VENTASPROCESOPENDIENTES AS +SELECT NUMTALON, + CODIGO, + COLOR, + TALLA, + SUM(ISNULL(INICIO, 0)) AS INICIO, + SUM(ABS(ISNULL(FINAL, 0))) AS FINAL +FROM RDX_V_VENTASPROCESO +GROUP BY NUMTALON, CODIGO, COLOR, TALLA +HAVING ((SUM(ISNULL(INICIO, 0)) <> 0) AND + (SUM(ISNULL(INICIO, 0)) > SUM(ABS(ISNULL(FINAL, 0))))) +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_VENTASPROCESOPENDIENTES] +TO [public] +GO + + + +--------------- SQL --------------- + +-- +-- Definition for view RDX_V_REFERENCIA_GENERICA : +-- + +CREATE VIEW RDX_V_REFERENCIA_GENERICA +AS +SELECT DISTINCT + VENTAS.NUMINF, + VENTAS.CLAVE1, + VENTAS.CLAVE2, + VENTAS.CLAVE3, + VENTAS.PERVENINI AS FECHA, + VENTAS.EANLUG AS CODCENTRO, + VENTAS.FILIAL AS CENTRO, + VENTAS.EANVEN AS CODVENDEDOR, + VENTAS.VENDEDOR, + VENTAS.NUMTALON, + CODIGO_BARRA = ISNULL(PRODUTOS_BARRA.CODIGO_BARRA, VENTAS.EANART), + CODIGO = ISNULL(PRODUTOS_BARRA.PRODUTO, VENTAS.PRODUTO), + PRODUCTO = ISNULL(PRODUTOS.DESC_PRODUTO, VENTAS.DESC_PRODUTO), + COLOR = ISNULL(PRODUTOS_BARRA.COR_PRODUTO, VENTAS.COR_PRODUTO), + TALLA = ISNULL(PRODUTOS_BARRA.GRADE, VENTAS.GRADE), + VENTAS.CANESP AS VTAPROCESO, + VENTAS.CANVENNET AS VTAFINAL, + VTATERM = VENTAS.CANVEN, + VALTOT = VENTAS.VALVEN, + REF.ESTADO, + REF.FECHACAMBIO +FROM RDX_V_VENTASEDI_ERRONEAS VENTAS +LEFT OUTER JOIN RDX_REFERENCIA_GENERICA REF ON + (REF.NUMINF = VENTAS.NUMINF AND REF.CLAVE1 = VENTAS.CLAVE1 AND + REF.CLAVE2 = VENTAS.CLAVE2 AND REF.CLAVE3 = VENTAS.CLAVE3) +LEFT OUTER JOIN PRODUTOS_BARRA on + (PRODUTOS_BARRA.CODIGO_BARRA = REF.CODIGO_BARRA) +LEFT OUTER JOIN PRODUTOS ON + (PRODUTOS.PRODUTO = PRODUTOS_BARRA.PRODUTO) +WHERE NOT ((VENTAS.VALVEN < 1) AND (VENTAS.VALVEN > 0)) /* QUITAR COMPOSTURAS */ +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_V_REFERENCIA_GENERICA] +TO [public] +GO + + diff --git a/2.1.0/Database/SCRIPT MEJORAS TABLAS.SQL b/2.1.0/Database/SCRIPT MEJORAS TABLAS.SQL new file mode 100644 index 0000000..9189fa6 --- /dev/null +++ b/2.1.0/Database/SCRIPT MEJORAS TABLAS.SQL @@ -0,0 +1,263 @@ +ALTER TABLE [dbo].[RDX_TALLAS] +ADD [TIPO_TALLAJE] smallint NULL +GO + +update rdx_tallas +set TIPO_TALLAJE = 1 +GO + +insert into rdx_tallas (TALLA, TIPO_TALLAJE) +Values('S', 2) +GO + +insert into rdx_tallas (TALLA, TIPO_TALLAJE) +Values('M', 2) +GO + +insert into rdx_tallas (TALLA, TIPO_TALLAJE) +Values('L', 2) +GO + +insert into rdx_tallas (TALLA, TIPO_TALLAJE) +Values('XL', 2) +GO + +ALTER TABLE [dbo].[RDX_TRASPASOS_AJUSTES] +ADD [CANT_S] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_TRASPASOS_AJUSTES] +ADD [CANT_M] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_TRASPASOS_AJUSTES] +ADD [CANT_L] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_TRASPASOS_AJUSTES] +ADD [CANT_XL] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_RECEPCION_AJUSTES] +ADD [CANT_S] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_RECEPCION_AJUSTES] +ADD [CANT_M] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_RECEPCION_AJUSTES] +ADD [CANT_L] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_RECEPCION_AJUSTES] +ADD [CANT_XL] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_DEVOLUCION_AJUSTES] +ADD [CANT_S] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_DEVOLUCION_AJUSTES] +ADD [CANT_M] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_DEVOLUCION_AJUSTES] +ADD [CANT_L] numeric(15, 0) NULL +GO + +ALTER TABLE [dbo].[RDX_DEVOLUCION_AJUSTES] +ADD [CANT_XL] numeric(15, 0) NULL +GO + +CREATE PROCEDURE dbo.RDX_P_TIPO_TALLAJE +@PRODUCTO VARCHAR(12), @TIPO_TALLAJE smallint OUT +AS +BEGIN + set @TIPO_TALLAJE = (SELECT DISTINCT RDX_TALLAS.TIPO_TALLAJE + FROM PRODUTOS_BARRA + LEFT JOIN RDX_TALLAS ON (PRODUTOS_BARRA.GRADE = RDX_TALLAS.TALLA) + WHERE PRODUTOS_BARRA.PRODUTO = @PRODUCTO) +END +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[RDX_INVENTARIOEDI]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_INVENTARIOEDI] +GO + +CREATE TABLE [RDX_INVENTARIOEDI] ( + [NUMDOC] varchar(25) NOT NULL, + [NUMLIN] numeric(6, 0) NOT NULL, + [NUMCANT] numeric(6, 0) NOT NULL, + [TIPOCANT] varchar(3) NULL, + [FECHA] datetime NULL, + [CENTRO] varchar(17) NULL, + [FILIAL] varchar(25) NULL, + [CODVEN] varchar(10) NULL, + [VENDEDOR] varchar(66) NULL, + [CODIGO_BARRA] varchar(17) NULL, + [CODIGO] varchar(12) NULL, + [PRODUCTO] varchar(40) NULL, + [COLOR] varchar(10) NULL, + [TALLA] varchar(8) NULL, + [CANTIDAD] numeric(15, 0) NULL, + [CENTRO2] varchar(17) NULL, + [FILIAL2] varchar(25) NULL, + [ULTIMO_INVENTARIO] char(1) NULL, + [IGNORAR] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_INVENTARIOEDI] +ADD CONSTRAINT [RDX_INVENTARIOEDI_pk] +PRIMARY KEY CLUSTERED ([NUMDOC], [NUMLIN], [NUMCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx] ON [RDX_INVENTARIOEDI] + ([TIPOCANT]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx2] ON [RDX_INVENTARIOEDI] + ([FECHA]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx3] ON [RDX_INVENTARIOEDI] + ([CENTRO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx4] ON [RDX_INVENTARIOEDI] + ([CODVEN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx5] ON [RDX_INVENTARIOEDI] + ([CODIGO_BARRA]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx6] ON [RDX_INVENTARIOEDI] + ([CODIGO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx7] ON [RDX_INVENTARIOEDI] + ([CENTRO2]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx8] ON [RDX_INVENTARIOEDI] + ([ULTIMO_INVENTARIO]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_INVENTARIOEDI_idx9] ON [RDX_INVENTARIOEDI] + ([CENTRO], [CODIGO], [COLOR], [TALLA]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_INVENTARIOEDI] +TO [public] +GO + +/*--------------- SQL ---------------*/ + +IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[RDX_VENTASEDI]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) + DROP TABLE [RDX_VENTASEDI] +GO + +CREATE TABLE [RDX_VENTASEDI] ( + [NUMINF] varchar(35) NOT NULL, + [CLAVE1] numeric(10, 0) NOT NULL, + [CLAVE2] numeric(5, 0) NOT NULL, + [CLAVE3] numeric(5, 0) NOT NULL, + [PERVENINI] datetime NULL, + [NUMTALON] varchar(35) NULL, + [EANLUG] varchar(17) NULL, + [FILIAL] varchar(25) NULL, + [EANVEN] varchar(17) NULL, + [CODVEN] varchar(4) NULL, + [VENDEDOR] varchar(66) NULL, + [EANART] varchar(17) NULL, + [CODCOM] varchar(35) NULL, + [PRODUTO] varchar(12) NULL, + [DESC_PRODUTO] varchar(40) NULL, + [COR_PRODUTO] varchar(10) NULL, + [GRADE] varchar(8) NULL, + [TIPO_PRODUTO] varchar(25) NULL, + [GRUPO_PRODUTO] varchar(25) NULL, + [DESC_COLECAO] varchar(40) NULL, + [VALVEN] numeric(15, 3) NULL, + [CANVEN] numeric(15, 3) NULL, + [CANDEV] numeric(15, 3) NULL, + [CANVENNET] numeric(15, 3) NULL, + [CANESP] numeric(15, 3) NULL, + [IGNORAR] char(1) NULL +) +ON [PRIMARY] +GO + +ALTER TABLE [RDX_VENTASEDI] +ADD CONSTRAINT [RDX_VENTASEDI_pk] +PRIMARY KEY CLUSTERED ([NUMINF], [CLAVE1], [CLAVE2], [CLAVE3]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx] ON [RDX_VENTASEDI] + ([PERVENINI]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx2] ON [RDX_VENTASEDI] + ([NUMTALON]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx3] ON [RDX_VENTASEDI] + ([EANVEN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx4] ON [RDX_VENTASEDI] + ([CODVEN]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx5] ON [RDX_VENTASEDI] + ([EANART]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx6] ON [RDX_VENTASEDI] + ([CODCOM]) +ON [PRIMARY] +GO + +CREATE NONCLUSTERED INDEX [RDX_VENTASEDI_idx7] ON [RDX_VENTASEDI] + ([PRODUTO]) +ON [PRIMARY] +GO + +GRANT SELECT, INSERT, DELETE, REFERENCES, UPDATE +ON [RDX_VENTASEDI] +TO [public] +GO + + + +UPDATE RDX_CABINV +SET CARGADO = NULL; + +UPDATE RDX_CABVEN +SET CARGADO = NULL; +GO + + +>>>>>>>>>>>= convert(datetime, '20060601', 112) /* PARA NO COGER AÑOS ANTERIORES */ +AND (RDX_CABINV.IGNORAR IS NULL) OR (RDX_CABINV.IGNORAR <> 'S') +GO + + + +create table RDX_INVENTARIOEDI ( + [NUMDOC]numeric(10, 0) NOT NULL, + [NUMLIN]numeric(5, 0) NOT NULL, + [NUMCANT]varchar(17) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [TIPOCANT]varchar(70) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, + [FECHA]datetime NULL, + [CENTRO]datetime NULL, + [FILIAL]datetime NULL, + [CODVEN]datetime NULL, + [VENDEDOR]datetime NULL, + [CODIGO_BARRA] + [CODIGO] + [PRODUCTO] + [COLOR] + [TALLA] + [CANTIDAD] + [CENTRO2] + [FILIAL2] + PRIMARY KEY CLUSTERED ([CLAVE1], [CLAVE2]), + CONSTRAINT [FK__RDX_LUGVE__CLAVE__4A59F0B5] FOREIGN KEY ([CLAVE1]) + REFERENCES [dbo].[RDX_CABVEN] ([CLAVE1]) + ON UPDATE CASCADE + ON DELETE CASCADE +) + + + + + + + + + + + + + + + + + diff --git a/2.1.0/Lib/midas.dll b/2.1.0/Lib/midas.dll new file mode 100644 index 0000000..7b11def Binary files /dev/null and b/2.1.0/Lib/midas.dll differ diff --git a/2.1.0/Resources/Iconos/CargaEDI.ico b/2.1.0/Resources/Iconos/CargaEDI.ico new file mode 100644 index 0000000..5c20b23 Binary files /dev/null and b/2.1.0/Resources/Iconos/CargaEDI.ico differ diff --git a/2.1.0/Resources/Iconos/Cliente.ico b/2.1.0/Resources/Iconos/Cliente.ico new file mode 100644 index 0000000..3633372 Binary files /dev/null and b/2.1.0/Resources/Iconos/Cliente.ico differ diff --git a/2.1.0/Resources/Iconos/Devoluciones/16x16/Remove.png b/2.1.0/Resources/Iconos/Devoluciones/16x16/Remove.png new file mode 100644 index 0000000..332ae88 Binary files /dev/null and b/2.1.0/Resources/Iconos/Devoluciones/16x16/Remove.png differ diff --git a/2.1.0/Resources/Iconos/Devoluciones/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Devoluciones/16x16/Thumbs.db new file mode 100644 index 0000000..8496f5f Binary files /dev/null and b/2.1.0/Resources/Iconos/Devoluciones/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Devoluciones/24x24/Remove.png b/2.1.0/Resources/Iconos/Devoluciones/24x24/Remove.png new file mode 100644 index 0000000..96872cd Binary files /dev/null and b/2.1.0/Resources/Iconos/Devoluciones/24x24/Remove.png differ diff --git a/2.1.0/Resources/Iconos/Devoluciones/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Devoluciones/24x24/Thumbs.db new file mode 100644 index 0000000..fa10699 Binary files /dev/null and b/2.1.0/Resources/Iconos/Devoluciones/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Devoluciones/28x28/Remove.png b/2.1.0/Resources/Iconos/Devoluciones/28x28/Remove.png new file mode 100644 index 0000000..f4f4bb2 Binary files /dev/null and b/2.1.0/Resources/Iconos/Devoluciones/28x28/Remove.png differ diff --git a/2.1.0/Resources/Iconos/Devoluciones/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Devoluciones/28x28/Thumbs.db new file mode 100644 index 0000000..70502f6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Devoluciones/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/16x16/Delete.png b/2.1.0/Resources/Iconos/FicherosEDI/16x16/Delete.png new file mode 100644 index 0000000..cb27f30 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/16x16/Delete.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/16x16/History.png b/2.1.0/Resources/Iconos/FicherosEDI/16x16/History.png new file mode 100644 index 0000000..3f766a4 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/16x16/History.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/16x16/Thumbs.db b/2.1.0/Resources/Iconos/FicherosEDI/16x16/Thumbs.db new file mode 100644 index 0000000..88c3362 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/16x16/Tick.png b/2.1.0/Resources/Iconos/FicherosEDI/16x16/Tick.png new file mode 100644 index 0000000..14a31e9 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/16x16/Tick.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/16x16/carga.png b/2.1.0/Resources/Iconos/FicherosEDI/16x16/carga.png new file mode 100644 index 0000000..c115d91 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/16x16/carga.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/24x24/History.png b/2.1.0/Resources/Iconos/FicherosEDI/24x24/History.png new file mode 100644 index 0000000..5439f61 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/24x24/History.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/24x24/Thumbs.db b/2.1.0/Resources/Iconos/FicherosEDI/24x24/Thumbs.db new file mode 100644 index 0000000..28c62fa Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/24x24/cargar.png b/2.1.0/Resources/Iconos/FicherosEDI/24x24/cargar.png new file mode 100644 index 0000000..a5d3347 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/24x24/cargar.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/28x28/History.png b/2.1.0/Resources/Iconos/FicherosEDI/28x28/History.png new file mode 100644 index 0000000..10cf0c6 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/28x28/History.png differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/28x28/Thumbs.db b/2.1.0/Resources/Iconos/FicherosEDI/28x28/Thumbs.db new file mode 100644 index 0000000..1414e12 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/FicherosEDI/28x28/cargar.png b/2.1.0/Resources/Iconos/FicherosEDI/28x28/cargar.png new file mode 100644 index 0000000..af541f4 Binary files /dev/null and b/2.1.0/Resources/Iconos/FicherosEDI/28x28/cargar.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/013422.bmp b/2.1.0/Resources/Iconos/Generales/16x16/013422.bmp new file mode 100644 index 0000000..315851d Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/013422.bmp differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/09378.bmp b/2.1.0/Resources/Iconos/Generales/16x16/09378.bmp new file mode 100644 index 0000000..248fc74 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/09378.bmp differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/09378.png b/2.1.0/Resources/Iconos/Generales/16x16/09378.png new file mode 100644 index 0000000..7e79599 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/09378.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/About.png b/2.1.0/Resources/Iconos/Generales/16x16/About.png new file mode 100644 index 0000000..32635db Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/About.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Añadir-capítulo.png b/2.1.0/Resources/Iconos/Generales/16x16/Añadir-capítulo.png new file mode 100644 index 0000000..16e9ab9 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Añadir-capítulo.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Añadir-material.png b/2.1.0/Resources/Iconos/Generales/16x16/Añadir-material.png new file mode 100644 index 0000000..d43ef4a Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Añadir-material.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Back.png b/2.1.0/Resources/Iconos/Generales/16x16/Back.png new file mode 100644 index 0000000..31194b5 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Back.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Box-Closed.png b/2.1.0/Resources/Iconos/Generales/16x16/Box-Closed.png new file mode 100644 index 0000000..189b83f Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Box-Closed.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Box-Open-2.png b/2.1.0/Resources/Iconos/Generales/16x16/Box-Open-2.png new file mode 100644 index 0000000..8e30418 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Box-Open-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Card-Copy.png b/2.1.0/Resources/Iconos/Generales/16x16/Card-Copy.png new file mode 100644 index 0000000..0da221c Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Card-Copy.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Cell-Format.png b/2.1.0/Resources/Iconos/Generales/16x16/Cell-Format.png new file mode 100644 index 0000000..62773cf Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Cell-Format.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Clear.png b/2.1.0/Resources/Iconos/Generales/16x16/Clear.png new file mode 100644 index 0000000..2062c27 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Clear.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Copy.png b/2.1.0/Resources/Iconos/Generales/16x16/Copy.png new file mode 100644 index 0000000..7067e8d Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Copy.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Cut.png b/2.1.0/Resources/Iconos/Generales/16x16/Cut.png new file mode 100644 index 0000000..3bb4451 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Cut.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Dates-Adjust.png b/2.1.0/Resources/Iconos/Generales/16x16/Dates-Adjust.png new file mode 100644 index 0000000..0f623d8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Dates-Adjust.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Debug-Breakpoint.png b/2.1.0/Resources/Iconos/Generales/16x16/Debug-Breakpoint.png new file mode 100644 index 0000000..464fcd7 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Debug-Breakpoint.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Debug-Watch-Delete.png b/2.1.0/Resources/Iconos/Generales/16x16/Debug-Watch-Delete.png new file mode 100644 index 0000000..8e2e6a1 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Debug-Watch-Delete.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Debug-Watch.png b/2.1.0/Resources/Iconos/Generales/16x16/Debug-Watch.png new file mode 100644 index 0000000..5976f75 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Debug-Watch.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Delete.png b/2.1.0/Resources/Iconos/Generales/16x16/Delete.png new file mode 100644 index 0000000..cb27f30 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Delete.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Details-Hide.png b/2.1.0/Resources/Iconos/Generales/16x16/Details-Hide.png new file mode 100644 index 0000000..2f44439 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Details-Hide.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Details-Show.png b/2.1.0/Resources/Iconos/Generales/16x16/Details-Show.png new file mode 100644 index 0000000..5d3fc51 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Details-Show.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Distribute-Rows Evenly.png b/2.1.0/Resources/Iconos/Generales/16x16/Distribute-Rows Evenly.png new file mode 100644 index 0000000..42c647b Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Distribute-Rows Evenly.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Edit.png b/2.1.0/Resources/Iconos/Generales/16x16/Edit.png new file mode 100644 index 0000000..a4431dd Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Edit.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Exit.png b/2.1.0/Resources/Iconos/Generales/16x16/Exit.png new file mode 100644 index 0000000..21613aa Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Exit.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Filter.png b/2.1.0/Resources/Iconos/Generales/16x16/Filter.png new file mode 100644 index 0000000..d2a5e99 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Filter.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Format-Font.png b/2.1.0/Resources/Iconos/Generales/16x16/Format-Font.png new file mode 100644 index 0000000..d3040cd Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Format-Font.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Forward.png b/2.1.0/Resources/Iconos/Generales/16x16/Forward.png new file mode 100644 index 0000000..2a17743 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Forward.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Grid-Select Column.png b/2.1.0/Resources/Iconos/Generales/16x16/Grid-Select Column.png new file mode 100644 index 0000000..a1d949e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Grid-Select Column.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Group By.png b/2.1.0/Resources/Iconos/Generales/16x16/Group By.png new file mode 100644 index 0000000..7a47750 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Group By.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Home.png b/2.1.0/Resources/Iconos/Generales/16x16/Home.png new file mode 100644 index 0000000..199e9cd Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Home.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Minus.png b/2.1.0/Resources/Iconos/Generales/16x16/Minus.png new file mode 100644 index 0000000..ad8a7d0 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Minus.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/New.png b/2.1.0/Resources/Iconos/Generales/16x16/New.png new file mode 100644 index 0000000..adfecfe Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/New.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Outline-Collapse.png b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Collapse.png new file mode 100644 index 0000000..95ded08 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Collapse.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Outline-Expand.png b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Expand.png new file mode 100644 index 0000000..17cbe65 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Expand.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Outline-Move Down.png b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Move Down.png new file mode 100644 index 0000000..09fdc68 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Move Down.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Outline-Move Up.png b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Move Up.png new file mode 100644 index 0000000..4678fac Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Outline-Move Up.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Parcel.png b/2.1.0/Resources/Iconos/Generales/16x16/Parcel.png new file mode 100644 index 0000000..eb0ef92 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Parcel.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Paste.png b/2.1.0/Resources/Iconos/Generales/16x16/Paste.png new file mode 100644 index 0000000..f1cbee6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Paste.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Plus.png b/2.1.0/Resources/Iconos/Generales/16x16/Plus.png new file mode 100644 index 0000000..cab9e8e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Plus.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Preview.png b/2.1.0/Resources/Iconos/Generales/16x16/Preview.png new file mode 100644 index 0000000..a1ee549 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Preview.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Print-Options.png b/2.1.0/Resources/Iconos/Generales/16x16/Print-Options.png new file mode 100644 index 0000000..cd0e509 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Print-Options.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Print.png b/2.1.0/Resources/Iconos/Generales/16x16/Print.png new file mode 100644 index 0000000..8f029d7 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Print.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Refresh.png b/2.1.0/Resources/Iconos/Generales/16x16/Refresh.png new file mode 100644 index 0000000..9ed4aac Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Refresh.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Save.png b/2.1.0/Resources/Iconos/Generales/16x16/Save.png new file mode 100644 index 0000000..51eb9de Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Save.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Search.png b/2.1.0/Resources/Iconos/Generales/16x16/Search.png new file mode 100644 index 0000000..e7a6758 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Search.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Select All.png b/2.1.0/Resources/Iconos/Generales/16x16/Select All.png new file mode 100644 index 0000000..b3476eb Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Select All.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Speaking-Start.png b/2.1.0/Resources/Iconos/Generales/16x16/Speaking-Start.png new file mode 100644 index 0000000..935e566 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Speaking-Start.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Sum-2.png b/2.1.0/Resources/Iconos/Generales/16x16/Sum-2.png new file mode 100644 index 0000000..6e5d8e9 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Sum-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Table-Search.png b/2.1.0/Resources/Iconos/Generales/16x16/Table-Search.png new file mode 100644 index 0000000..be8bf80 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Table-Search.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Generales/16x16/Thumbs.db new file mode 100644 index 0000000..fa43abb Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Total-capítulo.png b/2.1.0/Resources/Iconos/Generales/16x16/Total-capítulo.png new file mode 100644 index 0000000..4f721ba Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Total-capítulo.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Título-capítulo.png b/2.1.0/Resources/Iconos/Generales/16x16/Título-capítulo.png new file mode 100644 index 0000000..4eb60d9 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Título-capítulo.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Undo.png b/2.1.0/Resources/Iconos/Generales/16x16/Undo.png new file mode 100644 index 0000000..114cf33 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Undo.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/View-One Page.png b/2.1.0/Resources/Iconos/Generales/16x16/View-One Page.png new file mode 100644 index 0000000..7573d11 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/View-One Page.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/View-Page Width.png b/2.1.0/Resources/Iconos/Generales/16x16/View-Page Width.png new file mode 100644 index 0000000..2ad4e8e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/View-Page Width.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Warning.png b/2.1.0/Resources/Iconos/Generales/16x16/Warning.png new file mode 100644 index 0000000..0fca356 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Warning.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Zoom-In.png b/2.1.0/Resources/Iconos/Generales/16x16/Zoom-In.png new file mode 100644 index 0000000..812c814 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Zoom-In.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/Zoom-Out.png b/2.1.0/Resources/Iconos/Generales/16x16/Zoom-Out.png new file mode 100644 index 0000000..e6ccf65 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/Zoom-Out.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/db-Next-2.png b/2.1.0/Resources/Iconos/Generales/16x16/db-Next-2.png new file mode 100644 index 0000000..759e9ee Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/db-Next-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/db-Previous-2.png b/2.1.0/Resources/Iconos/Generales/16x16/db-Previous-2.png new file mode 100644 index 0000000..f673f28 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/db-Previous-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/db-first-2.png b/2.1.0/Resources/Iconos/Generales/16x16/db-first-2.png new file mode 100644 index 0000000..7274025 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/db-first-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/16x16/db-last-2.png b/2.1.0/Resources/Iconos/Generales/16x16/db-last-2.png new file mode 100644 index 0000000..bfb5d67 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/16x16/db-last-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/About.png b/2.1.0/Resources/Iconos/Generales/24x24/About.png new file mode 100644 index 0000000..5d0ba3e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/About.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Back.png b/2.1.0/Resources/Iconos/Generales/24x24/Back.png new file mode 100644 index 0000000..1cd4d31 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Back.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Box-Open-2.png b/2.1.0/Resources/Iconos/Generales/24x24/Box-Open-2.png new file mode 100644 index 0000000..9959446 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Box-Open-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Card-Copy.png b/2.1.0/Resources/Iconos/Generales/24x24/Card-Copy.png new file mode 100644 index 0000000..ee4b76f Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Card-Copy.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Cell-Format.png b/2.1.0/Resources/Iconos/Generales/24x24/Cell-Format.png new file mode 100644 index 0000000..18818c4 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Cell-Format.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Clear.png b/2.1.0/Resources/Iconos/Generales/24x24/Clear.png new file mode 100644 index 0000000..4ce31c8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Clear.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Copy.png b/2.1.0/Resources/Iconos/Generales/24x24/Copy.png new file mode 100644 index 0000000..9bf2618 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Copy.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Cut.png b/2.1.0/Resources/Iconos/Generales/24x24/Cut.png new file mode 100644 index 0000000..b6e6529 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Cut.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Dates-Adjust.png b/2.1.0/Resources/Iconos/Generales/24x24/Dates-Adjust.png new file mode 100644 index 0000000..f8bf558 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Dates-Adjust.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Debug-Breakpoint.png b/2.1.0/Resources/Iconos/Generales/24x24/Debug-Breakpoint.png new file mode 100644 index 0000000..16e4542 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Debug-Breakpoint.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Debug-Watch-Delete.png b/2.1.0/Resources/Iconos/Generales/24x24/Debug-Watch-Delete.png new file mode 100644 index 0000000..89ae7bd Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Debug-Watch-Delete.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Debug-Watch.png b/2.1.0/Resources/Iconos/Generales/24x24/Debug-Watch.png new file mode 100644 index 0000000..547428e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Debug-Watch.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Delete.png b/2.1.0/Resources/Iconos/Generales/24x24/Delete.png new file mode 100644 index 0000000..a169184 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Delete.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Details-Hide.png b/2.1.0/Resources/Iconos/Generales/24x24/Details-Hide.png new file mode 100644 index 0000000..77ce656 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Details-Hide.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Details-Show.png b/2.1.0/Resources/Iconos/Generales/24x24/Details-Show.png new file mode 100644 index 0000000..db15b56 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Details-Show.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Distribute-Rows Evenly.png b/2.1.0/Resources/Iconos/Generales/24x24/Distribute-Rows Evenly.png new file mode 100644 index 0000000..e18f127 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Distribute-Rows Evenly.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Edit.png b/2.1.0/Resources/Iconos/Generales/24x24/Edit.png new file mode 100644 index 0000000..f39269e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Edit.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Exit.png b/2.1.0/Resources/Iconos/Generales/24x24/Exit.png new file mode 100644 index 0000000..70eadf9 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Exit.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Filter.png b/2.1.0/Resources/Iconos/Generales/24x24/Filter.png new file mode 100644 index 0000000..b69dcac Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Filter.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Format-Font.png b/2.1.0/Resources/Iconos/Generales/24x24/Format-Font.png new file mode 100644 index 0000000..2aa01b2 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Format-Font.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Forward.png b/2.1.0/Resources/Iconos/Generales/24x24/Forward.png new file mode 100644 index 0000000..2ceec67 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Forward.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Grid-Select Column.png b/2.1.0/Resources/Iconos/Generales/24x24/Grid-Select Column.png new file mode 100644 index 0000000..5bf1b9b Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Grid-Select Column.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Group By.png b/2.1.0/Resources/Iconos/Generales/24x24/Group By.png new file mode 100644 index 0000000..70adc01 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Group By.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Home.png b/2.1.0/Resources/Iconos/Generales/24x24/Home.png new file mode 100644 index 0000000..96b8c87 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Home.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Minus.png b/2.1.0/Resources/Iconos/Generales/24x24/Minus.png new file mode 100644 index 0000000..1b2257f Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Minus.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Outline-Collapse.png b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Collapse.png new file mode 100644 index 0000000..0e7c2cc Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Collapse.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Outline-Expand.png b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Expand.png new file mode 100644 index 0000000..c643a7c Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Expand.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Outline-Move Down.png b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Move Down.png new file mode 100644 index 0000000..65aaa61 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Move Down.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Outline-Move Up.png b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Move Up.png new file mode 100644 index 0000000..3dc2673 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Outline-Move Up.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Paste.png b/2.1.0/Resources/Iconos/Generales/24x24/Paste.png new file mode 100644 index 0000000..9b4c3f0 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Paste.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Plus.png b/2.1.0/Resources/Iconos/Generales/24x24/Plus.png new file mode 100644 index 0000000..f60ef53 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Plus.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Preview.png b/2.1.0/Resources/Iconos/Generales/24x24/Preview.png new file mode 100644 index 0000000..4d185c1 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Preview.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Print-Options.png b/2.1.0/Resources/Iconos/Generales/24x24/Print-Options.png new file mode 100644 index 0000000..b97b98c Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Print-Options.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Print.png b/2.1.0/Resources/Iconos/Generales/24x24/Print.png new file mode 100644 index 0000000..3f6e390 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Print.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Refresh.png b/2.1.0/Resources/Iconos/Generales/24x24/Refresh.png new file mode 100644 index 0000000..03cacdf Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Refresh.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Save.png b/2.1.0/Resources/Iconos/Generales/24x24/Save.png new file mode 100644 index 0000000..56cc714 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Save.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Search.png b/2.1.0/Resources/Iconos/Generales/24x24/Search.png new file mode 100644 index 0000000..3af96da Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Search.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Select All.png b/2.1.0/Resources/Iconos/Generales/24x24/Select All.png new file mode 100644 index 0000000..5632ed5 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Select All.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Speaking-Start.png b/2.1.0/Resources/Iconos/Generales/24x24/Speaking-Start.png new file mode 100644 index 0000000..a02336a Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Speaking-Start.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Sum-2.png b/2.1.0/Resources/Iconos/Generales/24x24/Sum-2.png new file mode 100644 index 0000000..51a90c6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Sum-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Table-Search.png b/2.1.0/Resources/Iconos/Generales/24x24/Table-Search.png new file mode 100644 index 0000000..b145e04 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Table-Search.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Generales/24x24/Thumbs.db new file mode 100644 index 0000000..7c4548e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Undo.png b/2.1.0/Resources/Iconos/Generales/24x24/Undo.png new file mode 100644 index 0000000..0fe4cc9 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Undo.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/View-One Page.png b/2.1.0/Resources/Iconos/Generales/24x24/View-One Page.png new file mode 100644 index 0000000..b66609e Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/View-One Page.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/View-Page Width.png b/2.1.0/Resources/Iconos/Generales/24x24/View-Page Width.png new file mode 100644 index 0000000..760a323 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/View-Page Width.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Warning.png b/2.1.0/Resources/Iconos/Generales/24x24/Warning.png new file mode 100644 index 0000000..e674c1f Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Warning.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Zoom-In.png b/2.1.0/Resources/Iconos/Generales/24x24/Zoom-In.png new file mode 100644 index 0000000..131feed Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Zoom-In.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/Zoom-Out.png b/2.1.0/Resources/Iconos/Generales/24x24/Zoom-Out.png new file mode 100644 index 0000000..26cf347 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/Zoom-Out.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/db-First-2.png b/2.1.0/Resources/Iconos/Generales/24x24/db-First-2.png new file mode 100644 index 0000000..c36c2ea Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/db-First-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/db-Last-2.png b/2.1.0/Resources/Iconos/Generales/24x24/db-Last-2.png new file mode 100644 index 0000000..97292c3 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/db-Last-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/db-Next-2.png b/2.1.0/Resources/Iconos/Generales/24x24/db-Next-2.png new file mode 100644 index 0000000..d23efc7 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/db-Next-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/24x24/db-Previous-2.png b/2.1.0/Resources/Iconos/Generales/24x24/db-Previous-2.png new file mode 100644 index 0000000..7c11e16 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/24x24/db-Previous-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Box-Open-2.png b/2.1.0/Resources/Iconos/Generales/28x28/Box-Open-2.png new file mode 100644 index 0000000..e88310c Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Box-Open-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Card-Copy.png b/2.1.0/Resources/Iconos/Generales/28x28/Card-Copy.png new file mode 100644 index 0000000..60566d1 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Card-Copy.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Cell-Format.png b/2.1.0/Resources/Iconos/Generales/28x28/Cell-Format.png new file mode 100644 index 0000000..ab87664 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Cell-Format.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Dates-Adjust.png b/2.1.0/Resources/Iconos/Generales/28x28/Dates-Adjust.png new file mode 100644 index 0000000..1523445 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Dates-Adjust.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Debug-Watch-Delete.png b/2.1.0/Resources/Iconos/Generales/28x28/Debug-Watch-Delete.png new file mode 100644 index 0000000..faf46e8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Debug-Watch-Delete.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Debug-Watch.png b/2.1.0/Resources/Iconos/Generales/28x28/Debug-Watch.png new file mode 100644 index 0000000..31c568f Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Debug-Watch.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Details-Hide.png b/2.1.0/Resources/Iconos/Generales/28x28/Details-Hide.png new file mode 100644 index 0000000..84f6b24 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Details-Hide.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Details-Show.png b/2.1.0/Resources/Iconos/Generales/28x28/Details-Show.png new file mode 100644 index 0000000..6b28c94 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Details-Show.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Distribute-Rows Evenly.png b/2.1.0/Resources/Iconos/Generales/28x28/Distribute-Rows Evenly.png new file mode 100644 index 0000000..6b62515 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Distribute-Rows Evenly.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Filter.png b/2.1.0/Resources/Iconos/Generales/28x28/Filter.png new file mode 100644 index 0000000..225c97b Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Filter.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Format-Font.png b/2.1.0/Resources/Iconos/Generales/28x28/Format-Font.png new file mode 100644 index 0000000..b5ceec7 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Format-Font.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Grid-Select Column.png b/2.1.0/Resources/Iconos/Generales/28x28/Grid-Select Column.png new file mode 100644 index 0000000..5033d4c Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Grid-Select Column.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Group By.png b/2.1.0/Resources/Iconos/Generales/28x28/Group By.png new file mode 100644 index 0000000..95af7df Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Group By.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Home.png b/2.1.0/Resources/Iconos/Generales/28x28/Home.png new file mode 100644 index 0000000..f89327a Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Home.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Outline-Move Down.png b/2.1.0/Resources/Iconos/Generales/28x28/Outline-Move Down.png new file mode 100644 index 0000000..eb2aa92 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Outline-Move Down.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Outline-Move Up.png b/2.1.0/Resources/Iconos/Generales/28x28/Outline-Move Up.png new file mode 100644 index 0000000..4397959 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Outline-Move Up.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Speaking-Start.png b/2.1.0/Resources/Iconos/Generales/28x28/Speaking-Start.png new file mode 100644 index 0000000..52294bb Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Speaking-Start.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Sum-2.png b/2.1.0/Resources/Iconos/Generales/28x28/Sum-2.png new file mode 100644 index 0000000..0508feb Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Sum-2.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Table-Search.png b/2.1.0/Resources/Iconos/Generales/28x28/Table-Search.png new file mode 100644 index 0000000..bb23481 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Table-Search.png differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Generales/28x28/Thumbs.db new file mode 100644 index 0000000..8f10cab Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Generales/28x28/Warning.png b/2.1.0/Resources/Iconos/Generales/28x28/Warning.png new file mode 100644 index 0000000..19aec79 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/28x28/Warning.png differ diff --git a/2.1.0/Resources/Iconos/Generales/Thumbs.db b/2.1.0/Resources/Iconos/Generales/Thumbs.db new file mode 100644 index 0000000..ae2c460 Binary files /dev/null and b/2.1.0/Resources/Iconos/Generales/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Recepciones/16x16/Insert.png b/2.1.0/Resources/Iconos/Recepciones/16x16/Insert.png new file mode 100644 index 0000000..1fb5501 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/16x16/Insert.png differ diff --git a/2.1.0/Resources/Iconos/Recepciones/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Recepciones/16x16/Thumbs.db new file mode 100644 index 0000000..5c8b107 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Recepciones/16x16/albaran.png b/2.1.0/Resources/Iconos/Recepciones/16x16/albaran.png new file mode 100644 index 0000000..6251fbf Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/16x16/albaran.png differ diff --git a/2.1.0/Resources/Iconos/Recepciones/24x24/Insert.png b/2.1.0/Resources/Iconos/Recepciones/24x24/Insert.png new file mode 100644 index 0000000..707bd92 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/24x24/Insert.png differ diff --git a/2.1.0/Resources/Iconos/Recepciones/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Recepciones/24x24/Thumbs.db new file mode 100644 index 0000000..bf854b8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Recepciones/24x24/albaran.png b/2.1.0/Resources/Iconos/Recepciones/24x24/albaran.png new file mode 100644 index 0000000..fd60ff3 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/24x24/albaran.png differ diff --git a/2.1.0/Resources/Iconos/Recepciones/28x28/Insert.png b/2.1.0/Resources/Iconos/Recepciones/28x28/Insert.png new file mode 100644 index 0000000..2c075b6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/28x28/Insert.png differ diff --git a/2.1.0/Resources/Iconos/Recepciones/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Recepciones/28x28/Thumbs.db new file mode 100644 index 0000000..6418f7c Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Recepciones/28x28/albaran.png b/2.1.0/Resources/Iconos/Recepciones/28x28/albaran.png new file mode 100644 index 0000000..716a028 Binary files /dev/null and b/2.1.0/Resources/Iconos/Recepciones/28x28/albaran.png differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/16x16/Label-Edit.png b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/Label-Edit.png new file mode 100644 index 0000000..2930b98 Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/Label-Edit.png differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/Thumbs.db new file mode 100644 index 0000000..3a5ac32 Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/16x16/enespera.png b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/enespera.png new file mode 100644 index 0000000..618db41 Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/enespera.png differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/16x16/pendiente.png b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/pendiente.png new file mode 100644 index 0000000..d199223 Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/pendiente.png differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/16x16/resuelto.png b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/resuelto.png new file mode 100644 index 0000000..230d926 Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/16x16/resuelto.png differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/24x24/Label-Edit.png b/2.1.0/Resources/Iconos/Referencias genéricas/24x24/Label-Edit.png new file mode 100644 index 0000000..4c980f5 Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/24x24/Label-Edit.png differ diff --git a/2.1.0/Resources/Iconos/Referencias genéricas/28x28/Label-Edit.png b/2.1.0/Resources/Iconos/Referencias genéricas/28x28/Label-Edit.png new file mode 100644 index 0000000..5305bcc Binary files /dev/null and b/2.1.0/Resources/Iconos/Referencias genéricas/28x28/Label-Edit.png differ diff --git a/2.1.0/Resources/Iconos/Servidor.ico b/2.1.0/Resources/Iconos/Servidor.ico new file mode 100644 index 0000000..ff7c9cc Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor.ico differ diff --git a/2.1.0/Resources/Iconos/Servidor/16x16/Database.png b/2.1.0/Resources/Iconos/Servidor/16x16/Database.png new file mode 100644 index 0000000..badb104 Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor/16x16/Database.png differ diff --git a/2.1.0/Resources/Iconos/Servidor/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Servidor/16x16/Thumbs.db new file mode 100644 index 0000000..57412b6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Servidor/24x24/Database.png b/2.1.0/Resources/Iconos/Servidor/24x24/Database.png new file mode 100644 index 0000000..cd859e1 Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor/24x24/Database.png differ diff --git a/2.1.0/Resources/Iconos/Servidor/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Servidor/24x24/Thumbs.db new file mode 100644 index 0000000..c75e445 Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Servidor/28x28/Database.png b/2.1.0/Resources/Iconos/Servidor/28x28/Database.png new file mode 100644 index 0000000..26d3c56 Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor/28x28/Database.png differ diff --git a/2.1.0/Resources/Iconos/Servidor/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Servidor/28x28/Thumbs.db new file mode 100644 index 0000000..8b19047 Binary files /dev/null and b/2.1.0/Resources/Iconos/Servidor/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Stock/16x16/Task.png b/2.1.0/Resources/Iconos/Stock/16x16/Task.png new file mode 100644 index 0000000..83697bc Binary files /dev/null and b/2.1.0/Resources/Iconos/Stock/16x16/Task.png differ diff --git a/2.1.0/Resources/Iconos/Stock/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Stock/16x16/Thumbs.db new file mode 100644 index 0000000..a2ff4be Binary files /dev/null and b/2.1.0/Resources/Iconos/Stock/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Stock/24x24/Task.png b/2.1.0/Resources/Iconos/Stock/24x24/Task.png new file mode 100644 index 0000000..b88be99 Binary files /dev/null and b/2.1.0/Resources/Iconos/Stock/24x24/Task.png differ diff --git a/2.1.0/Resources/Iconos/Stock/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Stock/24x24/Thumbs.db new file mode 100644 index 0000000..60771b8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Stock/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Stock/28x28/Task.png b/2.1.0/Resources/Iconos/Stock/28x28/Task.png new file mode 100644 index 0000000..edfbc98 Binary files /dev/null and b/2.1.0/Resources/Iconos/Stock/28x28/Task.png differ diff --git a/2.1.0/Resources/Iconos/Stock/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Stock/28x28/Thumbs.db new file mode 100644 index 0000000..0275ba6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Stock/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Thumbs.db b/2.1.0/Resources/Iconos/Thumbs.db new file mode 100644 index 0000000..b783c8d Binary files /dev/null and b/2.1.0/Resources/Iconos/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Traspasos/16x16/Entrada.png b/2.1.0/Resources/Iconos/Traspasos/16x16/Entrada.png new file mode 100644 index 0000000..baef7a8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/16x16/Entrada.png differ diff --git a/2.1.0/Resources/Iconos/Traspasos/16x16/Salida.png b/2.1.0/Resources/Iconos/Traspasos/16x16/Salida.png new file mode 100644 index 0000000..1779d0d Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/16x16/Salida.png differ diff --git a/2.1.0/Resources/Iconos/Traspasos/16x16/Swap.png b/2.1.0/Resources/Iconos/Traspasos/16x16/Swap.png new file mode 100644 index 0000000..bf54e00 Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/16x16/Swap.png differ diff --git a/2.1.0/Resources/Iconos/Traspasos/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Traspasos/16x16/Thumbs.db new file mode 100644 index 0000000..0cf331f Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Traspasos/24x24/Swap.png b/2.1.0/Resources/Iconos/Traspasos/24x24/Swap.png new file mode 100644 index 0000000..12cece4 Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/24x24/Swap.png differ diff --git a/2.1.0/Resources/Iconos/Traspasos/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Traspasos/24x24/Thumbs.db new file mode 100644 index 0000000..2c5ec15 Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Traspasos/28x28/Swap.png b/2.1.0/Resources/Iconos/Traspasos/28x28/Swap.png new file mode 100644 index 0000000..2e23a78 Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/28x28/Swap.png differ diff --git a/2.1.0/Resources/Iconos/Traspasos/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Traspasos/28x28/Thumbs.db new file mode 100644 index 0000000..972a081 Binary files /dev/null and b/2.1.0/Resources/Iconos/Traspasos/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Usuarios/16x16/Thumbs.db new file mode 100644 index 0000000..a4ab3ce Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/User-Add.png b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Add.png new file mode 100644 index 0000000..1649f38 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Add.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/User-Edit.png b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Edit.png new file mode 100644 index 0000000..a660a37 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Edit.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/User-Password.png b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Password.png new file mode 100644 index 0000000..a6d8942 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Password.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/User-Remove.png b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Remove.png new file mode 100644 index 0000000..5edbd1d Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/User-Remove.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/User.png b/2.1.0/Resources/Iconos/Usuarios/16x16/User.png new file mode 100644 index 0000000..ee6f2a7 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/User.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/16x16/Users.png b/2.1.0/Resources/Iconos/Usuarios/16x16/Users.png new file mode 100644 index 0000000..c376648 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/16x16/Users.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Usuarios/24x24/Thumbs.db new file mode 100644 index 0000000..79aece3 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/User-Add.png b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Add.png new file mode 100644 index 0000000..3616f18 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Add.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/User-Edit.png b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Edit.png new file mode 100644 index 0000000..1af01ad Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Edit.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/User-Password.png b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Password.png new file mode 100644 index 0000000..a121a6b Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Password.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/User-Remove.png b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Remove.png new file mode 100644 index 0000000..b50a9da Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/User-Remove.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/User.png b/2.1.0/Resources/Iconos/Usuarios/24x24/User.png new file mode 100644 index 0000000..ddb1dd6 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/User.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/24x24/Users.png b/2.1.0/Resources/Iconos/Usuarios/24x24/Users.png new file mode 100644 index 0000000..dbdd35c Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/24x24/Users.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Usuarios/28x28/Thumbs.db new file mode 100644 index 0000000..7f04aaa Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/User-Add.png b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Add.png new file mode 100644 index 0000000..76459dc Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Add.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/User-Edit.png b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Edit.png new file mode 100644 index 0000000..139ec63 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Edit.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/User-Password.png b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Password.png new file mode 100644 index 0000000..7720bf1 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Password.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/User-Remove.png b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Remove.png new file mode 100644 index 0000000..b046745 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/User-Remove.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/User.png b/2.1.0/Resources/Iconos/Usuarios/28x28/User.png new file mode 100644 index 0000000..e389c2a Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/User.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/28x28/Users.png b/2.1.0/Resources/Iconos/Usuarios/28x28/Users.png new file mode 100644 index 0000000..4c006ba Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/28x28/Users.png differ diff --git a/2.1.0/Resources/Iconos/Usuarios/48x48/Thumbs.db b/2.1.0/Resources/Iconos/Usuarios/48x48/Thumbs.db new file mode 100644 index 0000000..c827026 Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/48x48/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Usuarios/48x48/Users.png b/2.1.0/Resources/Iconos/Usuarios/48x48/Users.png new file mode 100644 index 0000000..1697dfe Binary files /dev/null and b/2.1.0/Resources/Iconos/Usuarios/48x48/Users.png differ diff --git a/2.1.0/Resources/Iconos/Ventas en proceso/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Ventas en proceso/16x16/Thumbs.db new file mode 100644 index 0000000..56e3ebd Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas en proceso/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Ventas en proceso/16x16/Ventas en proceso.png b/2.1.0/Resources/Iconos/Ventas en proceso/16x16/Ventas en proceso.png new file mode 100644 index 0000000..9299fe2 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas en proceso/16x16/Ventas en proceso.png differ diff --git a/2.1.0/Resources/Iconos/Ventas en proceso/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Ventas en proceso/24x24/Thumbs.db new file mode 100644 index 0000000..00de62c Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas en proceso/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Ventas en proceso/24x24/Venta en proceso.png b/2.1.0/Resources/Iconos/Ventas en proceso/24x24/Venta en proceso.png new file mode 100644 index 0000000..b121137 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas en proceso/24x24/Venta en proceso.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Currency-Notes.png b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Currency-Notes.png new file mode 100644 index 0000000..7eb9a4c Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Currency-Notes.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Currency.png b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Currency.png new file mode 100644 index 0000000..5ecaee8 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Currency.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Report.png b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Report.png new file mode 100644 index 0000000..f040487 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Report.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Thumbs.db b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Thumbs.db new file mode 100644 index 0000000..65daa1e Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Venta terminada.png b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Venta terminada.png new file mode 100644 index 0000000..1f12605 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/16x16/Venta terminada.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Currency-Notes.png b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Currency-Notes.png new file mode 100644 index 0000000..94f8cb4 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Currency-Notes.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Currency.png b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Currency.png new file mode 100644 index 0000000..af28329 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Currency.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Report.png b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Report.png new file mode 100644 index 0000000..417cb9e Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Report.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Thumbs.db b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Thumbs.db new file mode 100644 index 0000000..c838463 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Thumbs.db differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Venta terminada.png b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Venta terminada.png new file mode 100644 index 0000000..6d04f29 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/24x24/Venta terminada.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Currency-Notes.png b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Currency-Notes.png new file mode 100644 index 0000000..f3c4a88 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Currency-Notes.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Currency.png b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Currency.png new file mode 100644 index 0000000..0d7259c Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Currency.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Report.png b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Report.png new file mode 100644 index 0000000..36a49f1 Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Report.png differ diff --git a/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Thumbs.db b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Thumbs.db new file mode 100644 index 0000000..6c6799f Binary files /dev/null and b/2.1.0/Resources/Iconos/Ventas terminadas/28x28/Thumbs.db differ diff --git a/2.1.0/Resources/Imagenes/Cabecera.jpg b/2.1.0/Resources/Imagenes/Cabecera.jpg new file mode 100644 index 0000000..ce37d1a Binary files /dev/null and b/2.1.0/Resources/Imagenes/Cabecera.jpg differ diff --git a/2.1.0/Resources/Imagenes/Cabecera.psd b/2.1.0/Resources/Imagenes/Cabecera.psd new file mode 100644 index 0000000..e3bd135 Binary files /dev/null and b/2.1.0/Resources/Imagenes/Cabecera.psd differ diff --git a/2.1.0/Resources/Imagenes/Thumbs.db b/2.1.0/Resources/Imagenes/Thumbs.db new file mode 100644 index 0000000..0e88c29 Binary files /dev/null and b/2.1.0/Resources/Imagenes/Thumbs.db differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1021.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1021.BMP new file mode 100644 index 0000000..e249876 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1021.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1022.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1022.BMP new file mode 100644 index 0000000..b792f59 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1022.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1023.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1023.BMP new file mode 100644 index 0000000..89722dc Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1023.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1024.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1024.BMP new file mode 100644 index 0000000..798cb41 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1024.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1025.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1025.BMP new file mode 100644 index 0000000..2f12281 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1025.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1026.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1026.BMP new file mode 100644 index 0000000..63b1f2f Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1026.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1027.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1027.BMP new file mode 100644 index 0000000..45eb301 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1027.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1028.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1028.BMP new file mode 100644 index 0000000..c9266e2 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1028.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1029.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1029.BMP new file mode 100644 index 0000000..a8a7b40 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1029.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1030.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1030.BMP new file mode 100644 index 0000000..97e4521 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1030.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1031.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1031.BMP new file mode 100644 index 0000000..3f7eb1e Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1031.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1032.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1032.BMP new file mode 100644 index 0000000..663c511 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1032.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/1033.BMP b/2.1.0/Resources/Imagenes/WaitProgress/1033.BMP new file mode 100644 index 0000000..bc8fdfa Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/1033.BMP differ diff --git a/2.1.0/Resources/Imagenes/WaitProgress/Thumbs.db b/2.1.0/Resources/Imagenes/WaitProgress/Thumbs.db new file mode 100644 index 0000000..68464d9 Binary files /dev/null and b/2.1.0/Resources/Imagenes/WaitProgress/Thumbs.db differ diff --git a/2.1.0/Resources/Imagenes/Watermark Ficheros.psd b/2.1.0/Resources/Imagenes/Watermark Ficheros.psd new file mode 100644 index 0000000..f89490a Binary files /dev/null and b/2.1.0/Resources/Imagenes/Watermark Ficheros.psd differ diff --git a/2.1.0/Resources/Imagenes/Watermark-Ficheros.png b/2.1.0/Resources/Imagenes/Watermark-Ficheros.png new file mode 100644 index 0000000..99b4ed0 Binary files /dev/null and b/2.1.0/Resources/Imagenes/Watermark-Ficheros.png differ diff --git a/2.1.0/Source/AdminPVGroup.bdsgroup b/2.1.0/Source/AdminPVGroup.bdsgroup new file mode 100644 index 0000000..3a0016c --- /dev/null +++ b/2.1.0/Source/AdminPVGroup.bdsgroup @@ -0,0 +1,32 @@ + + + + + + + + + + + Base\BaseD10.bdsproj + ControlesBase\ControlesBaseD10.bdsproj + Modulos\Parametros\Cliente\Parametros.bdsproj + Usuarios\Usuarios.bdsproj + Configuracion\Configuracion.bdsproj + Modulos\FicherosEDI\Cliente\FicherosEDI.bdsproj + Modulos\VentasTerminadas\Cliente\VentasTerminadas.bdsproj + Modulos\VentasProceso\Cliente\VentasProceso.bdsproj + Modulos\ReferenciaGenerica\Cliente\ReferenciaGenerica.bdsproj + Modulos\Recepciones\Cliente\Recepciones.bdsproj + Modulos\Devoluciones\Cliente\Devoluciones.bdsproj + Modulos\Traspasos\Cliente\Traspasos.bdsproj + Modulos\Stock\Cliente\Stock.bdsproj + Cliente\AdminPV.bdsproj + Servidor\AdminPV_Server.bdsproj + CargaEDI\CargaEDI.bdsproj + BaseD10.bpl ControlesBaseD10.bpl Parametros.bpl Usuarios.bpl Configuracion.bpl FicherosEDI.bpl VentasTerminadas.bpl VentasProceso.bpl ReferenciaGenerica.bpl Recepciones.bpl Devoluciones.bpl Traspasos.bpl Stock.bpl AdminPV.exe AdminPV_Server.exe CargaEDI.exe + + + + diff --git a/2.1.0/Source/AdminPVGroup.bdsgroup.local b/2.1.0/Source/AdminPVGroup.bdsgroup.local new file mode 100644 index 0000000..235eceb --- /dev/null +++ b/2.1.0/Source/AdminPVGroup.bdsgroup.local @@ -0,0 +1,6 @@ + + + + + + diff --git a/2.1.0/Source/AdminPVGroup.bpg b/2.1.0/Source/AdminPVGroup.bpg new file mode 100644 index 0000000..722af4b --- /dev/null +++ b/2.1.0/Source/AdminPVGroup.bpg @@ -0,0 +1,72 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = DataAbstract_D7.bpl BaseD7.bpl ControlesBaseD7.bpl Parametros.bpl \ + Usuarios.bpl Configuracion.bpl FicherosEDI.bpl VentasTerminadas.bpl \ + VentasProceso.bpl ReferenciaGenerica.bpl Recepciones.bpl Devoluciones.bpl \ + Traspasos.bpl Stock.bpl AdminPV.exe AdminPV_Server.exe CargaEDI.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + + +AdminPV_Server.exe: Servidor\AdminPV_Server.dpr + $(DCC) + +BaseD7.bpl: Base\BaseD7.dpk + $(DCC) + +Usuarios.bpl: Usuarios\Usuarios.dpk + $(DCC) + +AdminPV.exe: Cliente\AdminPV.dpr + $(DCC) + +Configuracion.bpl: Configuracion\Configuracion.dpk + $(DCC) + +DataAbstract_D7.bpl: DataAbstract_D7\DataAbstract_D7.dpk + $(DCC) + +FicherosEDI.bpl: Modulos\FicherosEDI\Cliente\FicherosEDI.dpk + $(DCC) + +ControlesBaseD7.bpl: ControlesBase\ControlesBaseD7.dpk + $(DCC) + +VentasProceso.bpl: Modulos\VentasProceso\Cliente\VentasProceso.dpk + $(DCC) + +VentasTerminadas.bpl: Modulos\VentasTerminadas\Cliente\VentasTerminadas.dpk + $(DCC) + +CargaEDI.exe: CargaEDI\CargaEDI.dpr + $(DCC) + +ReferenciaGenerica.bpl: Modulos\ReferenciaGenerica\Cliente\ReferenciaGenerica.dpk + $(DCC) + +Recepciones.bpl: Modulos\Recepciones\Cliente\Recepciones.dpk + $(DCC) + +Devoluciones.bpl: Modulos\Devoluciones\Cliente\Devoluciones.dpk + $(DCC) + +Traspasos.bpl: Modulos\Traspasos\Cliente\Traspasos.dpk + $(DCC) + +Stock.bpl: Modulos\Stock\Cliente\Stock.dpk + $(DCC) + +Parametros.bpl: Modulos\Parametros\Cliente\Parametros.dpk + $(DCC) + + diff --git a/2.1.0/Source/AdminPVGroup.groupproj b/2.1.0/Source/AdminPVGroup.groupproj new file mode 100644 index 0000000..5ba9cae --- /dev/null +++ b/2.1.0/Source/AdminPVGroup.groupproj @@ -0,0 +1,184 @@ + + + {fad576a4-cc33-4b34-a98b-46e69bb566c8} + + + + + + + + + + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2.1.0/Source/Base/BaseD10.bdsproj b/2.1.0/Source/Base/BaseD10.bdsproj new file mode 100644 index 0000000..cf4977f --- /dev/null +++ b/2.1.0/Source/Base/BaseD10.bdsproj @@ -0,0 +1,673 @@ + + + + + + + + + + + + BaseD10.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 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\Output\Debug\Cliente + ..\Lib + + + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 2 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 2.0.0.0 + + + + + + 1.0.0.0 + + + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + (untitled) + + + + diff --git a/2.1.0/Source/Base/BaseD10.dpk b/2.1.0/Source/Base/BaseD10.dpk new file mode 100644 index 0000000..9555c9f --- /dev/null +++ b/2.1.0/Source/Base/BaseD10.dpk @@ -0,0 +1,109 @@ +package BaseD10; + +{$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} +{$RUNONLY} +{$IMPLICITBUILD OFF} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + vcldb, + GUISDK_D10, + vcljpg, + dbrtl, + dsnap, + PNG_D10, + PngComponentsD10, + JvCoreD10R, + JvStdCtrlsD10R, + JvPageCompsD10R, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + tb2k_D10, + tbx_D10, + vclx, + vclactnband, + designide, + cxExportD10, + adortl, + JvSystemD10R, + dxPSCoreD10, + dxPScxCommonD10, + dxPScxGridLnkD10, + cxIntlPrintSys3D10, + dxBarD10, + dxBarExtItemsD10, + cxIntl5D10, + dxPsPrVwAdvD10, + ccpack10, + JvMMD10R, + JvCtrlsD10R, + tee, + frx10, + fs10, + frxe10, + dxLayoutControlD10, + dxComnD10, + Jcl, + JclVcl, + JvAppFrmD10R, + dxPSLnksD10, + vclshlctrls, + dclcxLibraryD10, + RemObjects_Core_D10, + DataAbstract_Core_D10; + +contains + uDataModuleBase in 'uDataModuleBase.pas' {dmBase: TDAClientDataModule}, + uEditorBase in 'uEditorBase.pas' {fEditorBase}, + uEditorGridBase in 'uEditorGridBase.pas' {fEditorGridBase}, + uEditorItem in 'uEditorItem.pas' {fEditorItem}, + uDataTableUtils in 'uDataTableUtils.pas', + uEditorUtils in 'uEditorUtils.pas', + uEditorPreview in 'uEditorPreview.pas' {fEditorPreview}, + uViewPreview in 'uViewPreview.pas' {frViewPreview: TFrame}, + uViewBase in 'uViewBase.pas' {frViewBase: TCustomView}, + uViewGridBase in 'uViewGridBase.pas' {frViewGridBase: TCustomView}, + uEditorDBBase in 'uEditorDBBase.pas' {fEditorDBBase: TCustomEditor}, + uEditorDBItem in 'uEditorDBItem.pas' {fEditorDBItem: TCustomEditor}, + uExceptions in 'uExceptions.pas', + uViewBarraSeleccion in 'uViewBarraSeleccion.pas' {frViewBarraSeleccion: TFrame}, + uDBSelectionList in 'uDBSelectionList.pas', + uConfigurarConexion in 'uConfigurarConexion.pas' {fConfigurarConexion}, + uBizInformesBase in 'uBizInformesBase.pas', + uSysFunc in 'uSysFunc.pas', + VARELA_Intf in '..\Servidor\VARELA_Intf.pas', + uViewGrid in 'uViewGrid.pas' {frViewGrid: TCustomView}, + uIntegerList in 'uIntegerList.pas', + schStockClient_Intf in '..\Modulos\Stock\Reglas\schStockClient_Intf.pas', + schStockServer_Intf in '..\Modulos\Stock\Reglas\schStockServer_Intf.pas', + uGridUtils in 'uGridUtils.pas'; + +end. diff --git a/2.1.0/Source/Base/BaseD10.dproj b/2.1.0/Source/Base/BaseD10.dproj new file mode 100644 index 0000000..cd2c4f7 --- /dev/null +++ b/2.1.0/Source/Base/BaseD10.dproj @@ -0,0 +1,645 @@ + + + + {51b1cbd5-e922-4e6d-b778-6de1bca9118c} + BaseD10.dpk + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Cliente\BaseD10.bpl + + + 7.0 + False + False + False + True + 0 + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + RELEASE + + + 7.0 + False + True + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseTrueC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2000FalseFalseFalseFalseFalse308212522.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 + BaseD10.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fConfigurarConexion
+
+ +
dmBase
+
+ + + +
fEditorBase
+
+ +
fEditorDBBase
+
+ +
fEditorDBItem
+
+ +
fEditorGridBase
+
+ +
fEditorItem
+
+ +
fEditorPreview
+
+ + + + + + +
frViewBarraSeleccion
+
+ +
frViewBase
+
+ +
frViewGrid
+
+ +
frViewGridBase
+
+ +
frViewPreview
+
+
+
+ diff --git a/2.1.0/Source/Base/BaseD10.drc b/2.1.0/Source/Base/BaseD10.drc new file mode 100644 index 0000000..33eb733 --- /dev/null +++ b/2.1.0/Source/Base/BaseD10.drc @@ -0,0 +1,29 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Base\uConfigurarConexion.dfm */ +/* C:\Varela_D2007\Source\Base\uDataModuleBase.dfm */ +/* C:\Varela_D2007\Source\Base\uViewBase.dfm */ +/* C:\Varela_D2007\Source\Base\uEditorBase.dfm */ +/* C:\Varela_D2007\Source\Base\uViewGridBase.dfm */ +/* C:\Varela_D2007\Source\Base\uEditorItem.dfm */ +/* C:\Varela_D2007\Source\Base\uEditorDBBase.dfm */ +/* C:\Varela_D2007\Source\Base\uEditorGridBase.dfm */ +/* C:\Varela_D2007\Source\Base\uViewPreview.dfm */ +/* C:\Varela_D2007\Source\Base\uEditorPreview.dfm */ +/* C:\Varela_D2007\Source\Base\uEditorDBItem.dfm */ +/* C:\Varela_D2007\Source\Base\uViewBarraSeleccion.dfm */ +/* C:\Varela_D2007\Source\Base\uViewGrid.dfm */ +/* C:\Varela_D2007\Source\Base\BaseD10.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtfA.tmp */ diff --git a/2.1.0/Source/Base/BaseD10.identcache b/2.1.0/Source/Base/BaseD10.identcache new file mode 100644 index 0000000..3d15709 Binary files /dev/null and b/2.1.0/Source/Base/BaseD10.identcache differ diff --git a/2.1.0/Source/Base/BaseD10.rc b/2.1.0/Source/Base/BaseD10.rc new file mode 100644 index 0000000..d9bfd1d --- /dev/null +++ b/2.1.0/Source/Base/BaseD10.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 2,0,0,0 +PRODUCTVERSION 2,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "2.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Base/BaseD10.res b/2.1.0/Source/Base/BaseD10.res new file mode 100644 index 0000000..01cbcba Binary files /dev/null and b/2.1.0/Source/Base/BaseD10.res differ diff --git a/2.1.0/Source/Base/uBizInformesBase.pas b/2.1.0/Source/Base/uBizInformesBase.pas new file mode 100644 index 0000000..3a96c41 --- /dev/null +++ b/2.1.0/Source/Base/uBizInformesBase.pas @@ -0,0 +1,14 @@ +unit uBizInformesBase; + +interface + +type + IBizInformesAware = interface + ['{98AD6541-199F-4155-B394-ED0316298759}'] + procedure Preview; + procedure Print; + end; + +implementation + +end. diff --git a/2.1.0/Source/Base/uConfigurarConexion.dfm b/2.1.0/Source/Base/uConfigurarConexion.dfm new file mode 100644 index 0000000..5a266e8 --- /dev/null +++ b/2.1.0/Source/Base/uConfigurarConexion.dfm @@ -0,0 +1,113 @@ +object fConfigurarConexion: TfConfigurarConexion + Left = 663 + Top = 468 + ActiveControl = edtServer + AutoScroll = False + 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 + Caption = 'Nombre del servidor:' + end + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + 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/2.1.0/Source/Base/uConfigurarConexion.pas b/2.1.0/Source/Base/uConfigurarConexion.pas new file mode 100644 index 0000000..035d05a --- /dev/null +++ b/2.1.0/Source/Base/uConfigurarConexion.pas @@ -0,0 +1,74 @@ +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, uDataModuleBase, VARELA_Intf; + +{$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 dmBase.HayConexion(TargetURL) then + Application.MessageBox('Conexión válida con el servidor.', 'Información', MB_OK); +end; + +procedure TfConfigurarConexion.FormCreate(Sender: TObject); +begin + HTTPChannel.OnFailure := dmBase.ROChannelFailure; +end; + +end. diff --git a/2.1.0/Source/Base/uDBSelectionList.pas b/2.1.0/Source/Base/uDBSelectionList.pas new file mode 100644 index 0000000..b5b88b8 --- /dev/null +++ b/2.1.0/Source/Base/uDBSelectionList.pas @@ -0,0 +1,183 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uDBSelectionList; + +interface + +uses + Classes, DB, cxGridTableView, uDADataTable, uIntegerList, cxGridCustomView; + +type + TRecID = Integer; + TSelectedRowList = class; + + ISelectedRowList = interface + ['{1886B04A-DB0D-40AE-BCAE-DA57CD4CD582}'] + function GetSelectedRows : TSelectedRowList; + property SelectedRows : TSelectedRowList read GetSelectedRows; + end; + + TSelectedRowList = class + private + FDataTable: TDADataTable; + FListRecID : TIntegerList; + function GetCount: Integer; + function GetCurrentRowSelected: Boolean; + function GetItem(Index: Integer): TRecID; + procedure SetCurrentRowSelected(Value: Boolean); + protected + function CurrentRow: TRecID; + function Compare(const Item1, Item2: TRecID): Boolean; + public + constructor Create(ADataTable : TDADataTable); + destructor Destroy; override; + procedure Clear; // free all bookmarks + function Find(const Item: TRecID; var Index: Integer): Boolean; + function IndexOf(const Item: TRecID): Integer; + property Count: Integer read GetCount; + property CurrentRowSelected: Boolean read GetCurrentRowSelected + write SetCurrentRowSelected; + property Items[Index: Integer]: TRecID read GetItem; default; + function LocateItem(const Index : Integer) : Boolean; + end; + + + procedure SeleccionarFilasDesdeGrid(const AView : TcxCustomGridView; + var ASelectedRowList : ISelectedRowList); + + +implementation + +uses + DBConsts, cxGridCustomTableView, cxControls, Math, Variants, Dialogs; + +{ TSelectedRowList } + +constructor TSelectedRowList.Create(ADataTable : TDADataTable); +begin + inherited Create; + FListRecID := TIntegerList.Create; + + FDataTable := ADataTable; +end; + +destructor TSelectedRowList.Destroy; +begin + Clear; + FListRecID.Free; + FDataTable := NIL; + inherited Destroy; +end; + +procedure TSelectedRowList.Clear; +begin + if FListRecID.Count = 0 then + Exit; + FListRecID.Clear; +end; + +function TSelectedRowList.Compare(const Item1, Item2: TRecID): Boolean; +begin + Result := (Item1 = Item2); +end; + +function TSelectedRowList.CurrentRow: TRecID; +begin + if not FDataTable.Active then + raise EDatabaseError.Create(sDataSetClosed); + Result := FDataTable.RecIDValue; +end; + +function TSelectedRowList.GetCurrentRowSelected: Boolean; +var + Index: Integer; +begin + Result := Find(CurrentRow, Index); +end; + +function TSelectedRowList.Find(const Item: TRecID; var Index: Integer): Boolean; +begin + Result := FListRecID.Find(Item, Index) +end; + +function TSelectedRowList.GetCount: Integer; +begin + Result := FListRecID.Count; +end; + +function TSelectedRowList.GetItem(Index: Integer): TRecID; +begin + Result := FListRecID.Integers[Index]; +end; + +function TSelectedRowList.IndexOf(const Item: TRecID): Integer; +var + AIndex : Integer; +begin + Result := -1; + if FListRecID.Find(Item, AIndex) then + Result := AIndex +end; + +procedure TSelectedRowList.SetCurrentRowSelected(Value: Boolean); +var + Index: Integer; + Current: TRecID; +begin + Current := CurrentRow; + if (Find(Current, Index) = Value) then + Exit; + if Value then + FListRecID.Add(Current) + else + FListRecID.Delete(Index); +end; + + + +procedure SeleccionarFilasDesdeGrid(const AView : TcxCustomGridView; + var ASelectedRowList : ISelectedRowList); +var + ADataTable : TDADataTable; + ABookmark : Pointer; + ARecord: TcxCustomGridRecord; + i : Integer; +begin + ADataTable := ASelectedRowList.SelectedRows.FDataTable; + AView.BeginUpdate; + ShowHourglassCursor; + ABookmark := ADataTable.GetBookMark; + try + ASelectedRowList.SelectedRows.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.SelectedRows.CurrentRowSelected := True; + end; + end; + ADataTable.GotoBookmark(ABookmark); + finally + AView.EndUpdate; + ADataTable.FreeBookmark(ABookmark); + HideHourglassCursor; + end; +end; + + +function TSelectedRowList.LocateItem(const Index: Integer) : Boolean; +begin + if not FDataTable.Active then + raise EDatabaseError.Create(sDataSetClosed); + Result := FDataTable.Locate('RecID', Items[Index], []); +end; + +end. diff --git a/2.1.0/Source/Base/uDataModuleBase.dfm b/2.1.0/Source/Base/uDataModuleBase.dfm new file mode 100644 index 0000000..5f633ba --- /dev/null +++ b/2.1.0/Source/Base/uDataModuleBase.dfm @@ -0,0 +1,1660 @@ +object dmBase: TdmBase + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + 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 ROChannel: TROWinInetHTTPChannel + OnFailure = ROChannelFailure + OnException = ROChannelFailure + UserAgent = 'RemObjects SDK' + TargetURL = 'http://localhost:8099/bin' + Login.Username = 'zvg' + Login.Password = 'zeus' + KeepConnection = True + OnProgress = ROChannelProgress + ServerLocators = <> + DispatchOptions = [] + Left = 330 + Top = 24 + 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 cxIntlPrintSys3: 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 = 184 + Top = 16 + end + object ROMessage: TROBinMessage + Left = 329 + Top = 88 + end + object DABINAdapter: TDABINAdapter + IsCompatibleV4 = False + Left = 424 + Top = 24 + end + object JvAppRegistryStorage: TJvAppRegistryStorage + StorageOptions.BooleanStringTrueValues = 'TRUE, YES, Y' + StorageOptions.BooleanStringFalseValues = 'FALSE, NO, N' + Root = 'Software\%APPL_NAME%' + SubStorages = <> + Left = 184 + Top = 80 + end + object RORemoteService: TRORemoteService + Message = ROMessage + Channel = ROChannel + ServiceName = 'srvLogin' + Left = 424 + Top = 92 + end +end diff --git a/2.1.0/Source/Base/uDataModuleBase.pas b/2.1.0/Source/Base/uDataModuleBase.pas new file mode 100644 index 0000000..ee02d51 --- /dev/null +++ b/2.1.0/Source/Base/uDataModuleBase.pas @@ -0,0 +1,254 @@ +unit uDataModuleBase; + +interface + +uses + Controls, PngImageList, JvComponent, JvNavigationPane, TBXSwitcher, + TBXOffice2003Theme, Classes, ImgList, uROClient, uROBinMessage, + uROServiceComponent, uRORemoteService, uROWinInetHttpChannel, + DataAbstract3_Intf, uDADataTable, uDABINAdapter, cxintl, cxIntlPrintSys3, + JvAppStorage, JvAppRegistryStorage, SysUtils, + JvComponentBase, uDADataStreamer; + +type + TdmBase = class(TDataModule) + ROChannel: TROWinInetHTTPChannel; + SmallImages: TPngImageList; + StyleManager: TJvNavPaneStyleManager; + TBXSwitcher: TTBXSwitcher; + cxIntl: TcxIntl; + cxIntlPrintSys3: TcxIntlPrintSys3; + ROMessage: TROBinMessage; + DABINAdapter: TDABINAdapter; + JvAppRegistryStorage: TJvAppRegistryStorage; + RORemoteService: TRORemoteService; + procedure DAClientDataModuleCreate(Sender: TObject); + procedure ROChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); + procedure ROChannelProgress(iSender: TObject; iType: TProgressType; + iDirection: TProgressDirection; iTransferred, iTotal: Integer); + private + FOnThemeChange: TNotifyEvent; + function GetAdapter: TDABINAdapter; + function GetChannel: TROWinInetHTTPChannel; + function GetCodigoEmpresa: Integer; + function GetMessage: TROBinMessage; + procedure InitStyleManager; + procedure OnTBXThemeChange(Sender: TObject); + procedure LeerConfiguracion; + procedure SalvarConfiguracion; + public + function DarVersion : String; + procedure ConfigurarConexion; + function HayConexion(const ATargetURL : String = ''): Boolean; + property Adapter: TDABINAdapter read GetAdapter; + property Channel: TROWinInetHTTPChannel read GetChannel; + property CodigoEmpresa: Integer read GetCodigoEmpresa; + property Message: TROBinMessage read GetMessage; + property OnThemeChange: TNotifyEvent read FOnThemeChange write + FOnThemeChange; + end; + +var + dmBase: TdmBase; + +implementation + +{$R *.DFM} + +uses + Dialogs, TBX, TBXThemes, uConfigurarConexion, WinInet, Forms, Windows, + JclFileUtils, VARELA_Intf, cxControls; + +const + SERVER_URL = 'http://localhost:8099/bin'; + IE_OFFLINE_ERROR = 'Unexpected error in WinInet HTTP Channel (2)'; + +{ +*********************************** TdmBase ************************************ +} +procedure TdmBase.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; + SalvarConfiguracion; + end; + finally + Free; + end; +end; + +procedure TdmBase.DAClientDataModuleCreate(Sender: TObject); +begin + TBXSwitcher.OnThemeChange := OnTBXThemeChange; + TBXSetTheme('Office2003'); + + LeerConfiguracion; +end; + +function TdmBase.GetAdapter: TDABINAdapter; +begin + Result := DABinAdapter; +end; + +function TdmBase.GetChannel: TROWinInetHTTPChannel; +begin + Result := ROChannel; +end; + +function TdmBase.GetCodigoEmpresa: Integer; +begin + Result := 1; +end; + +function TdmBase.GetMessage: TROBinMessage; +begin + Result := ROMessage; +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 + ROChannel.TargetURL := JvAppRegistryStorage.ReadString('ServerURL', SERVER_URL); +end; + +procedure TdmBase.OnTBXThemeChange(Sender: TObject); +begin + InitStyleManager; + + if Assigned(FOnThemeChange) then + FOnThemeChange(Sender); +end; + +procedure TdmBase.SalvarConfiguracion; +begin + JvAppRegistryStorage.BeginUpdate; + try + JvAppRegistryStorage.WriteString('ServerURL', ROChannel.TargetURL); + finally + JvAppRegistryStorage.EndUpdate; + end; +end; + +procedure TdmBase.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 operación + else + Abort; // Si el usuario pulsa en 'Seguir desconectado' parar todo + end + else + Retry := True; +// raise Exception.Create(anException.Message); +end; + +procedure TdmBase.ROChannelProgress(iSender: TObject; iType: TProgressType; + iDirection: TProgressDirection; iTransferred, iTotal: Integer); +begin +{ if iType = ptInProgress then + begin + if not Form1.Visible then + Form1.Show; + end + else + Form1.Hide;} +end; + +function TdmBase.DarVersion: String; +var + Obj : TJclFileVersionInfo; +begin + Obj := TJclFileVersionInfo.Create(Application.ExeName); + try + Result := 'v' + Obj.FileVersion; + finally + FreeAndNil(Obj); + end; +end; + +function TdmBase.HayConexion(const ATargetURL: String): Boolean; +var + AHTTPChannel: TROWinInetHTTPChannel; + AROBinMessage: TROBinMessage; + ACoService: TRORemoteService; +begin + AHTTPChannel := TROWinInetHTTPChannel.Create(Self); + AROBinMessage := TROBinMessage.Create(Self); + ACoService := TRORemoteService.Create(Self); + + ShowHourglassCursor; + try + with AHTTPChannel do + begin + Name := 'HTTPChannel'; + UserAgent := 'AdminPV'; + if Length(ATargetURL) > 0 then + TargetURL := ATargetURL + else + TargetURL := ROChannel.TargetURL; + end; + + with ACoService do + begin + ServiceName := 'srvLogin'; + Message := AROBinMessage; + Channel := AHTTPChannel; + end; + + try + (ACoService as IsrvLogin).Ping; + Result := True; + except + Result := False; + end; + finally + AHTTPChannel.Connected := False; + FreeAndNil(AHTTPChannel); + FreeAndNil(ACoService); + FreeAndNil(AROBinMessage); + HideHourglassCursor; + end; +end; + +initialization + dmBase := TdmBase.Create(NIL); + +finalization + dmBase.Free; + +end. diff --git a/2.1.0/Source/Base/uDataTableUtils.pas b/2.1.0/Source/Base/uDataTableUtils.pas new file mode 100644 index 0000000..9bbb7b1 --- /dev/null +++ b/2.1.0/Source/Base/uDataTableUtils.pas @@ -0,0 +1,324 @@ +unit uDataTableUtils; + +interface + +uses + uDACDSDataTable, uDADataTable, uDAInterfaces, uDADelta; + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable; + RemoteUpdate: Boolean = True); + +procedure CopyDataTable(ASource : IDADataset; ATarget : TDADataTable; + const OnlySelectedRows : Boolean = False); +procedure DeleteAllTable(const ADataTable : TDADataTable); +function DeltaValuesAreDifferent(const aDelta : IDADelta): boolean; + +implementation + +uses + uDAClasses, SysUtils, uDABINAdapter, uROTypes, uDBSelectionList, cxControls, + Dialogs, Variants, uDADataStreamer; + + +{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;} + + +procedure DeleteAllTable(const ADataTable : TDADataTable); +begin + ADataTable.ClearRows; +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 : IDADataset; ATarget : TDADataTable; + const OnlySelectedRows : Boolean = False); +var + DABin: Binary; + DAAdapter : TDABINAdapter; + AFilter : String; + AFiltered : Boolean; + AObj : ISelectedRowList; + i : Integer; +begin + DABin := Binary.Create; + DAAdapter := TDABINAdapter.Create(nil); + AFilter := ''; + + if OnlySelectedRows then + begin + if not Supports(ASource, ISelectedRowList, aObj) then + raise Exception.Create('El origen de datos no soporta la interfaz ISelectedRowList (CopyDataTable)'); + + if ASource.Dataset.Filtered then + begin + AFiltered := True; + AFilter := ASource.Dataset.Filter; + ASource.Dataset.Filtered := False; + end; + + ASource.Dataset.Filter := ''; + for i := 0 to AObj.SelectedRows.Count - 1 do + begin + if (i > 0) then + ASource.Dataset.Filter := ASource.Dataset.Filter + ' or '; + ASource.Dataset.Filter := ASource.Dataset.Filter + '(RecID = ' + IntToStr(AObj.SelectedRows.Items[i]) + ')'; + end; + + ASource.Dataset.Filtered := True; + end; + + try + ATarget.LogicalName := ASource.LogicalName; // We need to specify new dataset LogicalName + + if not ASource.Active then + ASource.Open; + ASource.Dataset.First; + + DAAdapter.WriteDataset(DABin, ASource, [woRows, woSchema], -1); + DAAdapter.Initialize(DABin, aiReadFromBeginning); + DAAdapter.ReadDataset(ATarget.LogicalName, ATarget, True, True); + DAAdapter.Finalize; + + if OnlySelectedRows then + begin + ASource.Dataset.Filtered := False; + ASource.Dataset.Filter := AFilter; + if AFiltered then + ASource.Dataset.Filtered := True; + end; + + finally + FreeAndNil(DABin); + FreeAndNil(DAAdapter); + end; +end; + + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable; RemoteUpdate: Boolean); +var + i : Integer; +begin + with ATarget do + begin + RemoteDataAdapter := ASource.RemoteDataAdapter; + + 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 + ATarget.Fields.AssignFieldCollection(ASource.Fields); // o también ATarget.LoadSchema; + + 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; + + +end. + +procedure CloneDataTable(const ASource : TDACDSDataTable; + var ATarget : TDACDSDataTable; RemoteUpdate: Boolean); +var + i : Integer; +begin + with ATarget do + begin + // ****** Inicio migración DA 5 + + //RemoteService := ASource.GetRemoteService; + //Adapter := ASource.GetAdapter; + RemoteDataAdapter.Assign(ASource.RemoteDataAdapter); + // ****** Fin migración 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 migración 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 migración DA 5 + ATarget.Fields.AssignFieldCollection(ASource.Fields); // o también ATarget.LoadSchema; + end; + + // ****** Inicio migración 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 migración 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; + + + diff --git a/2.1.0/Source/Base/uEditorBase.dfm b/2.1.0/Source/Base/uEditorBase.dfm new file mode 100644 index 0000000..b99e388 --- /dev/null +++ b/2.1.0/Source/Base/uEditorBase.dfm @@ -0,0 +1,1622 @@ +object fEditorBase: TfEditorBase + Left = 222 + Top = 127 + Caption = 'EditorBase' + ClientHeight = 462 + ClientWidth = 654 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + KeyPreview = True + OldCreateOrder = False + Position = poDefault + OnCloseQuery = FormCloseQuery + OnShow = FormShow + InstanceID = 0 + ReadOnly = False + PixelsPerInch = 96 + TextHeight = 13 + object JvNavPanelHeader: TJvNavPanelHeader + Left = 0 + Top = 49 + Width = 654 + 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 = 627 + 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 + end + end + object TBXDock: TTBXDock + Left = 0 + Top = 0 + Width = 654 + Height = 49 + AllowDrag = False + object tbxMain: TTBXToolbar + Left = 0 + Top = 23 + Caption = 'tbxMain' + ChevronHint = 'M'#225's botones|' + DockMode = dmCannotFloatOrChangeDocks + DockPos = -23 + DockRow = 1 + DragHandleStyle = dhNone + 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 + 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 TBXSeparatorItem6: 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: TStatusBar + Left = 0 + Top = 443 + Width = 654 + Height = 19 + Panels = < + item + Width = 50 + end> + Visible = False + end + object EditorActionList: TActionList + Images = SmallImages + Left = 16 + Top = 144 + object actNuevo: TAction + Category = 'Archivo' + Caption = 'Nuevo' + ShortCut = 45 + end + object actModificar: TAction + Category = 'Archivo' + Caption = 'Modificar' + ImageIndex = 18 + end + object actGuardarCerrar: TAction + Category = 'Archivo' + Caption = 'G&uardar y cerrar' + ImageIndex = 17 + OnExecute = actGuardarCerrarExecute + end + object actGuardar: TAction + Category = 'Archivo' + Caption = '&Guardar' + ImageIndex = 17 + end + object actEliminar: TAction + Category = 'Archivo' + Caption = 'Eliminar' + ImageIndex = 4 + ShortCut = 16430 + end + object actConfPagina: TAction + Category = 'Archivo' + Caption = '&Configurar p'#225'gina' + ImageIndex = 8 + end + object actPrevisualizar: TAction + Category = 'Archivo' + Caption = '&Previsualizar' + ImageIndex = 6 + end + object actImprimir: TAction + Category = 'Archivo' + Caption = 'Imprimir' + ImageIndex = 7 + ShortCut = 16464 + 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 = 'Refrescar' + ImageIndex = 9 + ShortCut = 116 + 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' + 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> + 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> + 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 +end diff --git a/2.1.0/Source/Base/uEditorBase.pas b/2.1.0/Source/Base/uEditorBase.pas new file mode 100644 index 0000000..ef16e4f --- /dev/null +++ b/2.1.0/Source/Base/uEditorBase.pas @@ -0,0 +1,218 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, 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; + +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; + TBXSeparatorItem6: TTBXSeparatorItem; + TBXSeparatorItem7: TTBXSeparatorItem; + TBXSeparatorItem8: TTBXSeparatorItem; + TBXSeparatorItem9: TTBXSeparatorItem; + TBXSubmenuItem1: TTBXSubmenuItem; + TBXSubmenuItem4: TTBXSubmenuItem; + TBXSubmenuItem5: TTBXSubmenuItem; + TBXSubmenuItem6: TTBXSubmenuItem; + TBXSubmenuItem7: TTBXSubmenuItem; + StatusBar: TStatusBar; + JvFormStorage: TJvFormStorage; + JvAppRegistryStorage: TJvAppRegistryStorage; + Image1: TImage; + procedure actCerrarExecute(Sender: TObject); + procedure actGuardarCerrarExecute(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + protected + function ModifiedQuery : Boolean; + procedure CreateParams(var Params: TCreateParams); override; + public + constructor Create(AOwner: TComponent); override; + published + procedure FormShow(Sender: TObject); virtual; + end; + + TfEditorBaseClass = class of TfEditorBase; + +implementation + +{$R *.dfm} + +uses + Menus, uDataModuleBase, cxControls; + +{ +********************************* TfEditorBase ********************************* +} +procedure TfEditorBase.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TfEditorBase.actGuardarCerrarExecute(Sender: TObject); +begin + ShowHourglassCursor; + Application.ProcessMessages; + try + if actGuardar.Execute then + actCerrar.Execute; + finally + HideHourglassCursor; + end; +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.CreateParams(var Params: TCreateParams); +begin + inherited; +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 +{ if Assigned(Parent) then + begin + StatusBar.Visible := False; + actCerrar.ShortCut := 0 + end + else begin + StatusBar.Visible := True; + actCerrar.ShortCut := ShortCut(VK_ESCAPE, []); + end;} +end; + +function TfEditorBase.ModifiedQuery: Boolean; +var + Respuesta: Integer; +begin + Result := True; + if Modified then + begin + Respuesta := Application.MessageBox('Se han producido cambios.' + #10#13 + + '¿Desea guardarlos antes de salir?', 'Atención', MB_YESNOCANCEL); + case Respuesta of + IDYES : actGuardar.Execute; + IDNO : actCancelarCambios.Execute; + else + Result := False; + end; + end +{ else + actCancelarCambios.Execute;} +end; + +initialization + RegisterClass(TfEditorBase); + +finalization + UnRegisterClass(TfEditorBase); + +end. diff --git a/2.1.0/Source/Base/uEditorDBBase.ddp b/2.1.0/Source/Base/uEditorDBBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Base/uEditorDBBase.ddp differ diff --git a/2.1.0/Source/Base/uEditorDBBase.dfm b/2.1.0/Source/Base/uEditorDBBase.dfm new file mode 100644 index 0000000..317e217 --- /dev/null +++ b/2.1.0/Source/Base/uEditorDBBase.dfm @@ -0,0 +1,70 @@ +inherited fEditorDBBase: TfEditorDBBase + Left = 295 + Top = 247 + Caption = 'fEditorDBBase' + ClientHeight = 460 + ClientWidth = 652 + ExplicitWidth = 660 + ExplicitHeight = 494 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 652 + ExplicitWidth = 652 + inherited Image1: TImage + Left = 625 + Picture.Data = {00} + ExplicitLeft = 625 + end + end + inherited TBXDock: TTBXDock + Width = 652 + ExplicitWidth = 652 + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 652 + end + end + inherited StatusBar: TStatusBar + Top = 441 + Width = 652 + ExplicitTop = 441 + ExplicitWidth = 652 + end + inherited EditorActionList: TActionList + inherited actModificar: TAction + OnUpdate = actModificarUpdate + end + inherited actGuardar: TAction + OnExecute = actGuardarExecute + end + inherited actEliminar: TAction + OnExecute = actEliminarExecute + OnUpdate = actEliminarUpdate + end + inherited actPrevisualizar: TAction + OnUpdate = actPrevisualizarUpdate + end + inherited actImprimir: TAction + OnUpdate = actImprimirUpdate + end + inherited actRefrescar: TAction + OnExecute = actRefrescarExecute + OnUpdate = actRefrescarUpdate + end + inherited actAnterior: TAction + OnExecute = actAnteriorExecute + OnUpdate = actAnteriorUpdate + end + inherited actSiguiente: TAction + OnExecute = actSiguienteExecute + OnUpdate = actSiguienteUpdate + end + inherited actCancelarCambios: TAction + OnExecute = actCancelarCambiosExecute + end + end + object dsDataTable: TDADataSource + Left = 40 + Top = 88 + end +end diff --git a/2.1.0/Source/Base/uEditorDBBase.pas b/2.1.0/Source/Base/uEditorDBBase.pas new file mode 100644 index 0000000..667d42c --- /dev/null +++ b/2.1.0/Source/Base/uEditorDBBase.pas @@ -0,0 +1,305 @@ +unit uEditorDBBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, 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, uDAInterfaces; + +type + IEditorDBBase = interface(IEditorBase) + ['{497AE4CE-D061-4F75-A29A-320F8565FF54}'] + end; + + TfEditorDBBase = class(TfEditorBase, IEditorDBBase) + dsDataTable: TDADataSource; + procedure actRefrescarExecute(Sender: TObject); + procedure actAnteriorExecute(Sender: TObject); + procedure actSiguienteExecute(Sender: TObject); + procedure actAnteriorUpdate(Sender: TObject); + procedure actSiguienteUpdate(Sender: TObject); + procedure actRefrescarUpdate(Sender: TObject); + procedure actCancelarCambiosExecute(Sender: TObject); + procedure actGuardarExecute(Sender: TObject); + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); virtual; + procedure actEliminarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actPrevisualizarUpdate(Sender: TObject); + procedure actImprimirUpdate(Sender: TObject); + private + { Private declarations } + protected + function GetModified: Boolean; override; + published + end; + +var + fEditorDBBase: TfEditorDBBase; + +implementation + +uses + uExceptions, uDataTableUtils, uBizInformesBase, + cxControls, uDADelta; + +{$R *.dfm} + +procedure TfEditorDBBase.actRefrescarExecute(Sender: TObject); +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.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 Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := not dsDataTable.DataTable.BOF + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actSiguienteUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := not dsDataTable.DataTable.EOF + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actRefrescarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := not dsDataTable.DataTable.Fetching + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actCancelarCambiosExecute(Sender: TObject); +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 válido cuando estamos cancelando la + inserción de una fila nueva. + CUIDADO!! Si no es válido salta una excepción. 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.actGuardarExecute(Sender: TObject); +var + dtDetails : TList; + i : integer; +begin + inherited; + if Assigned(dsDataTable.DataTable) then + begin + if dsDataTable.DataTable.Editing then + dsDataTable.DataTable.Post; + + dtDetails := dsDataTable.DataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + if (TDADataTable(dtDetails.Items[i])).Editing then + (TDADataTable(dtDetails.Items[i])).Post; + + dsDataTable.DataTable.ApplyUpdates; + Modified := False; + end; +end; + +function TfEditorDBBase.GetModified: Boolean; +var + dtDetails : TList; + i : integer; + bCambiado : Boolean; +begin + bCambiado := False; + if Assigned(dsDataTable.DataTable) then + begin + bCambiado := (dsDataTable.DataTable.State = dsEdit) or + DeltaValuesAreDifferent(dsDataTable.DataTable.Delta); + + if (not bCambiado) then + begin + dtDetails := dsDataTable.DataTable.GetDetailDataTables; + for i := 0 to dtDetails.Count - 1 do + begin + bCambiado := bCambiado or + ((TDADataTable(dtDetails.Items[i])).State = dsEdit) or + DeltaValuesAreDifferent((TDADataTable(dtDetails.Items[i])).Delta); + if bCambiado then + Break; + end; + end; + end; + + if (not bCambiado) then + bCambiado := inherited GetModified; + + Result := bCambiado; +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 ningún dato. } + if Assigned(dsDataTable.DataTable) and (not Modified) then + dsDataTable.DataTable.Cancel; + inherited; +end; + +procedure TfEditorDBBase.actEliminarExecute(Sender: TObject); +var + aObj : IApplyUpdateFailedException; +begin + inherited; + ShowHourglassCursor; + try + if dsDataTable.DataTable.State in dsEditModes then + dsDataTable.DataTable.Cancel; + dsDataTable.DataTable.Delete; + try + dsDataTable.DataTable.ApplyUpdates; + Modified := False; + except + on E: EDAApplyUpdateFailed do + begin + dsDataTable.DataTable.CancelUpdates; + actRefrescar.Execute; + if Supports(dsDataTable.DataTable, IApplyUpdateFailedException, aObj) then + aObj.ShowApplyUpdateFailed(E); + end + else + raise; // Generic exception + end; + finally + HideHourglassCursor; + end; +end; + +procedure TfEditorDBBase.actEliminarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actModificarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actPrevisualizarUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorDBBase.actImprimirUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + else + (Sender as TAction).Enabled := False; +end; + +end. diff --git a/2.1.0/Source/Base/uEditorDBItem.ddp b/2.1.0/Source/Base/uEditorDBItem.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Base/uEditorDBItem.ddp differ diff --git a/2.1.0/Source/Base/uEditorDBItem.dfm b/2.1.0/Source/Base/uEditorDBItem.dfm new file mode 100644 index 0000000..fe0bcb2 --- /dev/null +++ b/2.1.0/Source/Base/uEditorDBItem.dfm @@ -0,0 +1,60 @@ +inherited fEditorDBItem: TfEditorDBItem + Left = 450 + Top = 321 + Caption = 'fEditorDBItem' + ClientHeight = 465 + ClientWidth = 656 + ExplicitWidth = 664 + ExplicitHeight = 499 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 656 + ExplicitWidth = 656 + inherited Image1: TImage + Left = 629 + ExplicitLeft = 629 + end + end + inherited TBXDock: TTBXDock + Width = 656 + ExplicitWidth = 656 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 548 + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 656 + inherited TBXSubmenuItem1: TTBXSubmenuItem + Visible = False + end + end + end + inherited StatusBar: TStatusBar + Top = 446 + Width = 656 + ExplicitTop = 446 + ExplicitWidth = 656 + end + inherited EditorActionList: TActionList + Top = 112 + inherited actEliminar: TAction + ShortCut = 0 + end + inherited actPrevisualizar: TAction + OnExecute = actPrevisualizarExecute + end + inherited actImprimir: TAction + OnExecute = actImprimirExecute + end + end + inherited dsDataTable: TDADataSource + Left = 48 + Top = 112 + end +end diff --git a/2.1.0/Source/Base/uEditorDBItem.pas b/2.1.0/Source/Base/uEditorDBItem.pas new file mode 100644 index 0000000..d902c74 --- /dev/null +++ b/2.1.0/Source/Base/uEditorDBItem.pas @@ -0,0 +1,89 @@ +unit uEditorDBItem; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, 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, uDAInterfaces; + +type + IEditorDBItem = interface(IEditorDBBase) + ['{497AE4CE-D061-4F75-A29A-320F8565FF54}'] + end; + + TfEditorDBItem = class(TfEditorDBBase, IEditorDBItem) + procedure actEliminarExecute(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + fEditorDBItem: TfEditorDBItem; + +implementation + +uses + uBizInformesBase; + +{$R *.dfm} + +procedure TfEditorDBItem.actEliminarExecute(Sender: TObject); +begin + inherited; + actCerrar.Execute; +end; + +procedure TfEditorDBItem.actPrevisualizarExecute(Sender: TObject); +var + Respuesta: Integer; + aInf : IBizInformesAware; +begin + inherited; +{ if Modified then + begin + if (Application.MessageBox('Se han producido cambios y no se puede previsualizar hasta que no se guarden.' + #10#13 + + '¿Desea guardarlos ahora?', 'Atención', MB_YESNO) = IDYES) then + actGuardar.Execute + else begin + Application.MessageBox('Recuerde guardar los cambios si quiere previsualizar o imprimir.', 'Información', MB_OK); + Exit; + end; + end;} + + if Assigned(dsDataTable.DataTable) and + Supports(dsDataTable.DataTable, IBizInformesAware, aInf) then + aInf.Preview; +end; + +procedure TfEditorDBItem.actImprimirExecute(Sender: TObject); +var + Respuesta: Integer; + aInf : IBizInformesAware; +begin + inherited; +{ if Modified then + begin + if (Application.MessageBox('Se han producido cambios y no se puede imprimir hasta que no se guarden.' + #10#13 + + '¿Desea guardarlos ahora?', 'Atención', MB_YESNO) = IDYES) then + actGuardar.Execute + else begin + Application.MessageBox('Recuerde guardar los cambios si quiere previsualizar o imprimir.', 'Información', MB_OK); + Exit; + end; + end;} + + if Assigned(dsDataTable.DataTable) and + Supports(dsDataTable.DataTable, IBizInformesAware, aInf) then + aInf.Print; +end; + +end. diff --git a/2.1.0/Source/Base/uEditorGridBase.dfm b/2.1.0/Source/Base/uEditorGridBase.dfm new file mode 100644 index 0000000..2329822 --- /dev/null +++ b/2.1.0/Source/Base/uEditorGridBase.dfm @@ -0,0 +1,1433 @@ +inherited fEditorGridBase: TfEditorGridBase + Left = 441 + Top = 354 + Caption = 'fEditorGridBase' + ClientHeight = 446 + ClientWidth = 703 + ExplicitWidth = 711 + ExplicitHeight = 480 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 0 + Width = 703 + ExplicitTop = 0 + ExplicitWidth = 703 + inherited Image1: TImage + Left = 676 + ExplicitLeft = 676 + end + end + inherited TBXDock: TTBXDock + Top = 27 + Width = 703 + ExplicitTop = 27 + ExplicitWidth = 703 + inherited tbxMain: TTBXToolbar + DefaultDock = TBXDock + ExplicitWidth = 442 + inherited TBXItem29: TTBXItem + Visible = False + end + inherited TBXItem27: TTBXItem + Visible = False + end + object TBXSeparatorItem14: TTBXSeparatorItem [6] + end + object TBXItem33: TTBXItem [7] + Action = actDuplicar + DisplayMode = nbdmImageAndText + end + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + inherited TBXItem28: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + Visible = False + ExplicitWidth = 703 + inherited TBXSubmenuItem4: TTBXSubmenuItem + object TBXItem34: TTBXItem [7] + Action = actDuplicar + end + object TBXSeparatorItem15: TTBXSeparatorItem [8] + end + end + end + object tbxFiltro: TTBXToolbar + Left = 442 + Top = 23 + Align = alRight + CloseButton = False + DefaultDock = TBXDock + DockMode = dmCannotFloatOrChangeDocks + DockPos = 392 + DockRow = 1 + DragHandleStyle = dhNone + Images = SmallImages + ParentShowHint = False + Resizable = False + ShowHint = True + ShrinkMode = tbsmNone + TabOrder = 2 + object TBXLabelItem1: TTBXLabelItem + Caption = 'Filtrar:' + end + object tbxEditFiltro: TTBXEditItem + EditWidth = 150 + ImageIndex = 10 + EditorFontSettings.Italic = tsTrue + ExtendedAccept = True + Images = SmallImages + ShowImage = True + OnChange = tbxEditFiltroChange + end + object TBXItem7: TTBXItem + Action = actQuitarFiltro + Images = SmallImages + end + end + end + inherited StatusBar: TStatusBar + Top = 427 + Width = 703 + ExplicitTop = 427 + ExplicitWidth = 703 + end + inherited EditorActionList: TActionList + Left = 72 + Top = 120 + inherited actGuardarCerrar: TAction + Enabled = False + end + inherited actGuardar: TAction + Enabled = False + end + inherited actConfPagina: TAction + OnExecute = actConfPaginaExecute + end + inherited actPrevisualizar: TAction + OnExecute = actPrevisualizarExecute + end + inherited actImprimir: TAction + OnExecute = actImprimirExecute + 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 + object actQuitarFiltro: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltroExecute + end + object actDuplicar: TAction + Category = 'Archivo' + Caption = 'Duplicar' + ImageIndex = 20 + OnUpdate = actDuplicarUpdate + 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> + 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> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage + OnSavePlacement = JvFormStorageSavePlacement + OnRestorePlacement = JvFormStorageRestorePlacement + end + object GridPopupMenu: TPopupMenu + Images = SmallImages + Left = 72 + Top = 88 + 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 + end +end diff --git a/2.1.0/Source/Base/uEditorGridBase.pas b/2.1.0/Source/Base/uEditorGridBase.pas new file mode 100644 index 0000000..673bc61 --- /dev/null +++ b/2.1.0/Source/Base/uEditorGridBase.pas @@ -0,0 +1,194 @@ +{*******************************************************} +{ } +{ Administración 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, uDAInterfaces; + +type + IEditorGridBase = interface(IEditorDBBase) + ['{CB8CDE00-B225-4A1D-9A5C-EC6FBE2C854B}'] + end; + + TfEditorGridBase = class(TfEditorDBBase, IEditorGridBase) + tbxEditFiltro: TTBXEditItem; + tbxFiltro: TTBXToolbar; + TBXItem7: TTBXItem; + GridPopupMenu: TPopupMenu; + Modificar1: TMenuItem; + Eliminar1: TMenuItem; + N1: TMenuItem; + Nuevo1: TMenuItem; + TBXLabelItem1: TTBXLabelItem; + actQuitarFiltro: TAction; + N2: TMenuItem; + Previsualizar1: TMenuItem; + Imprimir1: TMenuItem; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem33: TTBXItem; + actDuplicar: TAction; + TBXSeparatorItem15: TTBXSeparatorItem; + TBXItem34: TTBXItem; + Duplicar1: TMenuItem; + procedure tbxEditFiltroChange(Sender: TObject; const Text: String); + procedure FormShow(Sender: TObject); override; + procedure actPrevisualizarExecute(Sender: TObject); + procedure actConfPaginaExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actQuitarFiltroExecute(Sender: TObject); + procedure actDuplicarUpdate(Sender: TObject); + procedure JvFormStorageSavePlacement(Sender: TObject); + procedure JvFormStorageRestorePlacement(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + private + FViewGrid : IViewGridBase; + protected + procedure SetViewGrid(const Value : IViewGridBase); virtual; + function GetViewGrid: IViewGridBase; + public + property ViewGrid: IViewGridBase read GetViewGrid write SetViewGrid; + constructor Create(AOwner : TComponent); override; + + destructor Destroy; override; + end; + +implementation + +uses + uDataModuleBase, uCustomEditor, cxGridTableView; + +{$R *.dfm} + +{ +********************************* TfEditorGridBase ***************************** +} +destructor TfEditorGridBase.Destroy; +begin + FViewGrid := NIL; + inherited; +end; + +function TfEditorGridBase.GetViewGrid: IViewGridBase; +begin + Result := FViewGrid; +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 + ViewGrid.Filter := Text; +end; + +procedure TfEditorGridBase.FormShow(Sender: TObject); +begin + inherited; + ViewGrid.ShowEmbedded(Self); +end; + +procedure TfEditorGridBase.actPrevisualizarExecute(Sender: TObject); +begin + inherited; + ViewGrid.Preview; +end; + +procedure TfEditorGridBase.actConfPaginaExecute(Sender: TObject); +begin + inherited; + ViewGrid.PrintSetup; +end; + +procedure TfEditorGridBase.actImprimirExecute(Sender: TObject); +begin + inherited; + ViewGrid.Print; +end; + +procedure TfEditorGridBase.actQuitarFiltroExecute(Sender: TObject); +begin + if Assigned(ViewGrid) then + begin + tbxEditFiltro.Text := ''; + ViewGrid.Filter := ''; + end; +end; + +constructor TfEditorGridBase.Create(AOwner: TComponent); +begin + inherited; + actModificar.ShortCut := ShortCut(VK_RETURN, []); +end; + +procedure TfEditorGridBase.actDuplicarUpdate(Sender: TObject); +begin + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorGridBase.JvFormStorageSavePlacement(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + ViewGrid.StoreToRegistry(JvAppRegistryStorage.Root); +end; + +procedure TfEditorGridBase.JvFormStorageRestorePlacement(Sender: TObject); +begin + inherited; + if Assigned(ViewGrid) then + begin + ViewGrid.RestoreFromRegistry(JvAppRegistryStorage.Root); + end; +end; + +procedure TfEditorGridBase.actRefrescarExecute(Sender: TObject); +var + FocusedRow, TopRow : Integer; +begin + TopRow := ViewGrid._FocusedView.Controller.TopRowIndex; + FocusedRow := ViewGrid._FocusedView.DataController.FocusedRowIndex; + ViewGrid._FocusedView.BeginUpdate; + try + inherited; + finally + ViewGrid._FocusedView.EndUpdate; + ViewGrid._FocusedView.DataController.FocusedRowIndex := FocusedRow; + ViewGrid._FocusedView.Controller.TopRowIndex := TopRow; + end; +end; + +initialization + RegisterClass(TfEditorGridBase); + +finalization + UnRegisterClass(TfEditorGridBase); + +end. + diff --git a/2.1.0/Source/Base/uEditorItem.dfm b/2.1.0/Source/Base/uEditorItem.dfm new file mode 100644 index 0000000..106f387 --- /dev/null +++ b/2.1.0/Source/Base/uEditorItem.dfm @@ -0,0 +1,53 @@ +inherited fEditorItem: TfEditorItem + Left = 423 + Top = 273 + Width = 686 + Height = 535 + Caption = 'fEditorItem' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 678 + Visible = False + inherited Image1: TImage + Left = 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 + inherited tbxMain: TTBXToolbar + inherited TBXItem5: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem10: TTBXItem + Visible = False + end + end + end + end + inherited StatusBar: TStatusBar + Top = 482 + Width = 678 + end + inherited EditorActionList: TActionList + Top = 104 + inherited actEliminar: TAction + ShortCut = 0 + end + end +end diff --git a/2.1.0/Source/Base/uEditorItem.pas b/2.1.0/Source/Base/uEditorItem.pas new file mode 100644 index 0000000..50461c5 --- /dev/null +++ b/2.1.0/Source/Base/uEditorItem.pas @@ -0,0 +1,41 @@ + +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; + +type + IEditorItem = interface(IEditorBase) + ['{F6A412D1-59AA-41D2-ADD5-C92687CD5387}'] + end; + + TfEditorItem = class(TfEditorBase, IEditorItem) + pagGeneral: TTabSheet; + pgPaginas: TPageControl; + end; + +var + fEditorItem: TfEditorItem; + +implementation + +uses uDataModuleBase; + +{$R *.dfm} + +initialization + RegisterClass(TfEditorItem); + +finalization + + UnRegisterClass(TfEditorItem); + + +end. diff --git a/2.1.0/Source/Base/uEditorPSPreview.dfm b/2.1.0/Source/Base/uEditorPSPreview.dfm new file mode 100644 index 0000000..a3f98e6 --- /dev/null +++ b/2.1.0/Source/Base/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/2.1.0/Source/Base/uEditorPSPreview.pas b/2.1.0/Source/Base/uEditorPSPreview.pas new file mode 100644 index 0000000..683b402 --- /dev/null +++ b/2.1.0/Source/Base/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/2.1.0/Source/Base/uEditorPreview.dfm b/2.1.0/Source/Base/uEditorPreview.dfm new file mode 100644 index 0000000..af16215 --- /dev/null +++ b/2.1.0/Source/Base/uEditorPreview.dfm @@ -0,0 +1,937 @@ +inherited fEditorPreview: TfEditorPreview + Left = 521 + Top = 340 + Caption = 'Previsualizar' + WindowState = wsMaximized + OnDestroy = FormDestroy + OnResize = FormResize + ExplicitWidth = 320 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 75 + Visible = False + ExplicitTop = 75 + end + inherited TBXDock: TTBXDock + Height = 75 + ExplicitHeight = 75 + inherited tbxMain: TTBXToolbar + Top = 49 + DefaultDock = TBXDock + Visible = False + ExplicitTop = 49 + ExplicitWidth = 191 + 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 TBXSeparatorItem14: TTBXSeparatorItem + 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 TBXSeparatorItem16: TTBXSeparatorItem + end + object TBXItem35: 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 TBXSeparatorItem15: TTBXSeparatorItem + end + object TBXItem7: TTBXItem + Action = actCerrar + Images = SmallImages + end + end + end + inherited StatusBar: TStatusBar + Panels = < + item + Width = 150 + end + item + Width = 50 + end> + Visible = True + 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 actImprimir: TAction + OnExecute = actImprimirExecute + 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 + end + object actUltimaPagina: TAction + Category = 'Ver' + Caption = #218'ltima p'#225'gina' + ImageIndex = 3 + OnExecute = actUltimaPaginaExecute + end + object actPaginaAnterior: TAction + Category = 'Ver' + Caption = 'P'#225'gina anterior' + ImageIndex = 1 + OnExecute = actPaginaAnteriorExecute + end + object actPaginaSiguiente: TAction + Category = 'Ver' + Caption = 'P'#225'gina siguiente' + ImageIndex = 2 + OnExecute = actPaginaSiguienteExecute + 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 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/2.1.0/Source/Base/uEditorPreview.pas b/2.1.0/Source/Base/uEditorPreview.pas new file mode 100644 index 0000000..0197134 --- /dev/null +++ b/2.1.0/Source/Base/uEditorPreview.pas @@ -0,0 +1,311 @@ +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, frxOLE, frxBarcode, + ExtCtrls, JvComponentBase; + +type + IEditorPreview = interface(IEditorBase) + ['{7E79BEFC-C817-43D9-A60F-9573D1777068}'] + function GetReport: TfrxReport; + property Report: TfrxReport read GetReport; + procedure LoadFromStream(AStream : TStream); + function ExportToFile : String; + end; + + TfEditorPreview = class(TfEditorBase, IEditorPreview) + TBXToolbar1: TTBXToolbar; + TBXItem7: TTBXItem; + TBXItem33: TTBXItem; + TBXItem34: TTBXItem; + TBXItem39: TTBXItem; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXSeparatorItem15: TTBXSeparatorItem; + TBXSeparatorItem16: TTBXSeparatorItem; + cbZoom: TTBXComboBoxItem; + PreviewActionList: TActionList; + PreviewSmallImageList: TPngImageList; + PreviewLargeImageList: TPngImageList; + actPrimeraPagina: TAction; + actUltimaPagina: TAction; + actPaginaAnterior: TAction; + actPaginaSiguiente: TAction; + TBXItem35: TTBXItem; + 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; + 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; + 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); + private + FPreview : TfrViewPreview; + function GetReport: TfrxReport; + procedure OnPageChanged(Sender: TfrxPreview; PageNo: Integer); + procedure UpdateZoom; + public + constructor Create(AOwner: TComponent); override; + property Report: TfrxReport read GetReport; + procedure Print; + procedure LoadFromStream(AStream : TStream); + function ExportToFile : String; + end; + +var + fEditorPreview: TfEditorPreview; + +implementation + +uses + frxRes, frxUtils, frxPrinter, uCustomEditor, uSysFunc, frxFormUtils; + +{$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.actUltimaPaginaExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Last; +end; + +procedure TfEditorPreview.actPaginaAnteriorExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Prior; +end; + +procedure TfEditorPreview.actPaginaSiguienteExecute(Sender: TObject); +begin + inherited; + FPreview.Preview.Next; +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; + if not frxPrinters.HasPhysicalPrinters then + frxErrorMsg(frxResources.Get('clNoPrinters')) + else + FPreview.Preview.Print; + Enabled := True; +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.Print; +begin + actImprimir.Execute; +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; + +end. diff --git a/2.1.0/Source/Base/uEditorUtils.pas b/2.1.0/Source/Base/uEditorUtils.pas new file mode 100644 index 0000000..68b4b86 --- /dev/null +++ b/2.1.0/Source/Base/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/2.1.0/Source/Base/uExceptions.pas b/2.1.0/Source/Base/uExceptions.pas new file mode 100644 index 0000000..a8f8b26 --- /dev/null +++ b/2.1.0/Source/Base/uExceptions.pas @@ -0,0 +1,21 @@ +unit uExceptions; + +interface + +uses + uDADelta; + +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/2.1.0/Source/Base/uGridUtils.pas b/2.1.0/Source/Base/uGridUtils.pas new file mode 100644 index 0000000..40b8e6d --- /dev/null +++ b/2.1.0/Source/Base/uGridUtils.pas @@ -0,0 +1,261 @@ +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; + +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; + +implementation + + +uses + 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; + + +end. diff --git a/2.1.0/Source/Base/uIntegerList.pas b/2.1.0/Source/Base/uIntegerList.pas new file mode 100644 index 0000000..93d40db --- /dev/null +++ b/2.1.0/Source/Base/uIntegerList.pas @@ -0,0 +1,61 @@ +unit uIntegerList; + +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/2.1.0/Source/Base/uSysFunc.pas b/2.1.0/Source/Base/uSysFunc.pas new file mode 100644 index 0000000..f4c26f4 --- /dev/null +++ b/2.1.0/Source/Base/uSysFunc.pas @@ -0,0 +1,249 @@ +{ +=============================================================================== + Copyright (©) 2002. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: 01-11-2002 + Versión actual: 1.0.0 + Fecha versión actual: 01-11-2002 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit uSysFunc; + +interface + +{ Funciones del sistema } +function Ejecutar (const LineaComando: String; Oculto, Esperar: Boolean) : Boolean; +function DarRutaTemporal : String; +function DarFicheroTemporal : 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 DarFicheroExportar (var Fichero : String) : Boolean; +var + DialogoSalvar : TSaveDialog; +begin + Result := False; + 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); +var + lpMsgBuf : pchar; +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/2.1.0/Source/Base/uViewBarraSeleccion.dfm b/2.1.0/Source/Base/uViewBarraSeleccion.dfm new file mode 100644 index 0000000..cf83624 --- /dev/null +++ b/2.1.0/Source/Base/uViewBarraSeleccion.dfm @@ -0,0 +1,53 @@ +inherited frViewBarraSeleccion: TfrViewBarraSeleccion + Width = 439 + Height = 19 + Align = alBottom + AutoScroll = False + Visible = False + object pnlSeleccion: TPanel + Left = 0 + Top = -18 + Width = 439 + Height = 37 + Align = alBottom + BevelOuter = bvNone + ParentBackground = True + TabOrder = 0 + DesignSize = ( + 439 + 37) + object bSeleccionar: TButton + Left = 264 + Top = 7 + Width = 74 + Height = 23 + Action = actSeleccionar + Anchors = [akRight] + Default = True + ModalResult = 1 + TabOrder = 0 + end + object bCancelar: TButton + Left = 343 + Top = 7 + Width = 74 + Height = 23 + Action = actCancelar + Anchors = [akRight] + Cancel = True + ModalResult = 2 + TabOrder = 1 + end + end + object ActionListSeleccion: TActionList + Left = 8 + Top = 5 + object actSeleccionar: TAction + Caption = '&Seleccionar' + end + object actCancelar: TAction + Caption = '&Cancelar' + OnExecute = actCancelarExecute + end + end +end diff --git a/2.1.0/Source/Base/uViewBarraSeleccion.pas b/2.1.0/Source/Base/uViewBarraSeleccion.pas new file mode 100644 index 0000000..b09d87f --- /dev/null +++ b/2.1.0/Source/Base/uViewBarraSeleccion.pas @@ -0,0 +1,37 @@ +unit uViewBarraSeleccion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, ActnList, ExtCtrls; + +type + TfrViewBarraSeleccion = class(TfrViewBase) + pnlSeleccion: TPanel; + bSeleccionar: TButton; + bCancelar: TButton; + ActionListSeleccion: TActionList; + actSeleccionar: TAction; + actCancelar: TAction; + procedure actCancelarExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + frViewBarraSeleccion: TfrViewBarraSeleccion; + +implementation + +{$R *.dfm} + +procedure TfrViewBarraSeleccion.actCancelarExecute(Sender: TObject); +begin + inherited; + // +end; + +end. diff --git a/2.1.0/Source/Base/uViewBase.dfm b/2.1.0/Source/Base/uViewBase.dfm new file mode 100644 index 0000000..6b80b72 --- /dev/null +++ b/2.1.0/Source/Base/uViewBase.dfm @@ -0,0 +1,14 @@ +object frViewBase: TfrViewBase + Left = 0 + Top = 0 + Width = 294 + Height = 214 + 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/2.1.0/Source/Base/uViewBase.pas b/2.1.0/Source/Base/uViewBase.pas new file mode 100644 index 0000000..16962ed --- /dev/null +++ b/2.1.0/Source/Base/uViewBase.pas @@ -0,0 +1,32 @@ +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) + public + procedure Refresh; virtual; + end; + +implementation + +{$R *.dfm} + + +{ TfrViewBase } + +procedure TfrViewBase.Refresh; +begin + // +end; + +end. diff --git a/2.1.0/Source/Base/uViewGrid.dfm b/2.1.0/Source/Base/uViewGrid.dfm new file mode 100644 index 0000000..211269d --- /dev/null +++ b/2.1.0/Source/Base/uViewGrid.dfm @@ -0,0 +1,79 @@ +inherited frViewGrid: TfrViewGrid + object cxGrid: TcxGrid [0] + Left = 0 + Top = 0 + Width = 441 + Height = 268 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfOffice11 + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + 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 + 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 cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object dxComponentPrinter: TdxComponentPrinter + 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 + 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 + end +end diff --git a/2.1.0/Source/Base/uViewGrid.pas b/2.1.0/Source/Base/uViewGrid.pas new file mode 100644 index 0000000..c644770 --- /dev/null +++ b/2.1.0/Source/Base/uViewGrid.pas @@ -0,0 +1,86 @@ +{*******************************************************} +{ } +{ 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, uDAInterfaces; + +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; + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + protected + function GetGrid : TcxGrid; override; + function GetFocusedView : TcxGridDBTableView; override; + end; + +implementation + +uses + uDataModuleBase, uDBSelectionList; + +{$R *.dfm} + +{ +********************************* TfrViewGrid ********************************** +} + +{ TfrViewGrid } +function TfrViewGrid.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +function TfrViewGrid.GetGrid: TcxGrid; +begin + Result := cxGrid; +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 + AStyle := cxStyleConOrden; + end; +end; + +end. + diff --git a/2.1.0/Source/Base/uViewGridBase.ddp b/2.1.0/Source/Base/uViewGridBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Base/uViewGridBase.ddp differ diff --git a/2.1.0/Source/Base/uViewGridBase.dfm b/2.1.0/Source/Base/uViewGridBase.dfm new file mode 100644 index 0000000..5695879 --- /dev/null +++ b/2.1.0/Source/Base/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/2.1.0/Source/Base/uViewGridBase.pas b/2.1.0/Source/Base/uViewGridBase.pas new file mode 100644 index 0000000..d1c5818 --- /dev/null +++ b/2.1.0/Source/Base/uViewGridBase.pas @@ -0,0 +1,335 @@ +{*******************************************************} +{ } +{ Administración 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, uDAInterfaces; + +type + IViewGridBase = interface(IViewBase) + ['{D5B9B017-2A2E-44AC-8223-E54664C6BC66}'] + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + + procedure Preview; + procedure Print; + procedure PrintSetup; + + 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 GetFilterAsSQL: string; + end; + + + TfrViewGridBase = class(TfrViewBase, IViewGridBase) + dsDataSource: TDADataSource; + private + FFilter: string; + FOnFilterChanged : TNotifyEvent; + FPopupMenu: TPopupMenu; + procedure FiltrarGrid(TextoFiltro : String); + protected + FGridStatus : TcxGridStatus; + FOnDblClick: TNotifyEvent; + 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; + procedure FilterChanged(Sender : TObject); virtual; + public + constructor Create(AOwner: TComponent); override; + + procedure ShowEmbedded(const AParent : TWinControl); override; + + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + + procedure SaveGridStatus; + procedure RestoreGridStatus; + + procedure Preview; virtual; + procedure Print; virtual; + procedure PrintSetup; virtual; + + procedure GotoFirst; + procedure GotoLast; + + procedure StoreToRegistry (const Path : String); + procedure RestoreFromRegistry (const Path : String); + + function GetFilterAsSQL: string; + + property Filter: string read GetFilter write SetFilter; + 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, uDBSelectionList; + +{$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; + FGridStatus := nil; + FFilter := ''; + FOnFilterChanged := FilterChanged; + FPopupMenu := nil; + FOnDblClick := 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.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; + +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.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 := True; +// _FocusedView..OnSelectionChanged := SelectionChanged; +end; + +procedure TfrViewGridBase.SetPopupMenu(const Value: TPopupMenu); +begin + FPopupMenu := Value; + _FocusedView.PopupMenu := FPopupMenu; +end; + +procedure TfrViewGridBase.ShowEmbedded(const AParent: TWinControl); +begin + inherited; + + // No activar la tabla ya por si acaso tuviera parámetros +{ 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; + FreeAndNIL(FGridStatus); + inherited; +end; + +procedure TfrViewGridBase.RestoreGridStatus; +begin + if Assigned(FGridStatus) then + FGridStatus.Restore(_FocusedView); +end; + +procedure TfrViewGridBase.SaveGridStatus; +begin + FreeAndNIL(FGridStatus); + FGridStatus := TcxGridStatus.Create(_FocusedView); +end; + +function TfrViewGridBase.GetFilterAsSQL: string; +begin + with _FocusedView.DataController.Filter do + Result := FilterText; +end; + +end. + diff --git a/2.1.0/Source/Base/uViewPreview.dfm b/2.1.0/Source/Base/uViewPreview.dfm new file mode 100644 index 0000000..52e3be3 --- /dev/null +++ b/2.1.0/Source/Base/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/2.1.0/Source/Base/uViewPreview.pas b/2.1.0/Source/Base/uViewPreview.pas new file mode 100644 index 0000000..c16f376 --- /dev/null +++ b/2.1.0/Source/Base/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/2.1.0/Source/CargaEDI/CargaEDI.bdsproj b/2.1.0/Source/CargaEDI/CargaEDI.bdsproj new file mode 100644 index 0000000..3437b92 --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.bdsproj @@ -0,0 +1,679 @@ + + + + + + + + + + + + CargaEDI.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;..\Base + BaseD10;Configuracion;FicherosEDI;rtl;dbrtl;vcldb;DataAbstract_Core_D10;DataAbstract_IDE_D10 + + + True + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 2 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 2.0.0.0 + + + + + + 1.0.0.0 + + + Internet Direct Version 9 (Indy) Property and Component Editors + + + + diff --git a/2.1.0/Source/CargaEDI/CargaEDI.cfg b/2.1.0/Source/CargaEDI/CargaEDI.cfg new file mode 100644 index 0000000..d4335d6 --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Output\Cliente" +-N".\" +-LE"..\Lib" +-LN"..\Lib" +-U"..\Lib" +-O"..\Lib" +-I"..\Lib" +-R"..\Lib" +-LUBaseD7;Configuracion;FicherosEDI +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/CargaEDI/CargaEDI.dof b/2.1.0/Source/CargaEDI/CargaEDI.dof new file mode 100644 index 0000000..75a90da --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.dof @@ -0,0 +1,480 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=..\..\Output\Cliente +UnitOutputDir=.\ +PackageDLLOutputDir=..\Lib +PackageDCPOutputDir=..\Lib +SearchPath=..\Lib +Packages=BaseD7;Configuracion;FicherosEDI +Conditionals= +DebugSourceDirs= +UsePackages=1 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=1 +Release=1 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.1.1.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=3 +Item0=..\Lib +Item1=..\Lib;..\Base +Item2=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Cliente +Item1=..\..\Output\Servidor +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=0 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/CargaEDI/CargaEDI.dpr b/2.1.0/Source/CargaEDI/CargaEDI.dpr new file mode 100644 index 0000000..44e0fec --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.dpr @@ -0,0 +1,14 @@ +program CargaEDI; + +uses + Forms, + uCargaEDI in 'uCargaEDI.pas' {fCargaEDI}; + +{$R *.res} + +begin + Application.Initialize; + Application.Title := 'Carga automática EDI'; + Application.CreateForm(TfCargaEDI, fCargaEDI); + Application.Run; +end. diff --git a/2.1.0/Source/CargaEDI/CargaEDI.dproj b/2.1.0/Source/CargaEDI/CargaEDI.dproj new file mode 100644 index 0000000..6c2765e --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.dproj @@ -0,0 +1,584 @@ + + + + {f4b339bd-0b22-48c7-b8f3-aea30a5c3ef7} + CargaEDI.dpr + Debug + AnyCPU + true + BaseD10;Configuracion;FicherosEDI + DCC32 + ..\..\Output\Debug\Cliente\CargaEDI.exe + + + 7.0 + False + False + 0 + 3 + ..\..\Output\Debug\Cliente + .\ + .\ + .\ + ..\Lib + ..\Lib + ..\Lib + ..\Lib + RELEASE + + + 7.0 + 3 + ..\..\Output\Debug\Cliente + .\ + .\ + .\ + ..\Lib + ..\Lib + ..\Lib + ..\Lib + DEBUG + + + Delphi.Personality + VCLApplication + +FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2000FalseFalseFalseFalseFalse308212522.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 + CargaEDI.dpr + + + + + MainSource + + +
fCargaEDI
+
+
+
+ diff --git a/2.1.0/Source/CargaEDI/CargaEDI.drc b/2.1.0/Source/CargaEDI/CargaEDI.drc new file mode 100644 index 0000000..2868863 --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.drc @@ -0,0 +1,18 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\WindowsXP.res */ +/* C:\Varela_D2007\Source\CargaEDI\uCargaEDI.dfm */ +/* C:\Varela_D2007\Source\CargaEDI\CargaEDI.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf26.tmp */ diff --git a/2.1.0/Source/CargaEDI/CargaEDI.identcache b/2.1.0/Source/CargaEDI/CargaEDI.identcache new file mode 100644 index 0000000..f6d8112 Binary files /dev/null and b/2.1.0/Source/CargaEDI/CargaEDI.identcache differ diff --git a/2.1.0/Source/CargaEDI/CargaEDI.rc b/2.1.0/Source/CargaEDI/CargaEDI.rc new file mode 100644 index 0000000..44990e7 --- /dev/null +++ b/2.1.0/Source/CargaEDI/CargaEDI.rc @@ -0,0 +1,23 @@ +MAINICON ICON "C:\Varela_D2007\Resources\Iconos\CargaEDI.ico" +1 VERSIONINFO +FILEVERSION 2,0,0,0 +PRODUCTVERSION 2,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "2.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/CargaEDI/CargaEDI.res b/2.1.0/Source/CargaEDI/CargaEDI.res new file mode 100644 index 0000000..5c6d4bd Binary files /dev/null and b/2.1.0/Source/CargaEDI/CargaEDI.res differ diff --git a/2.1.0/Source/CargaEDI/uCargaEDI.ddp b/2.1.0/Source/CargaEDI/uCargaEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/CargaEDI/uCargaEDI.ddp differ diff --git a/2.1.0/Source/CargaEDI/uCargaEDI.dfm b/2.1.0/Source/CargaEDI/uCargaEDI.dfm new file mode 100644 index 0000000..1a08cf1 --- /dev/null +++ b/2.1.0/Source/CargaEDI/uCargaEDI.dfm @@ -0,0 +1,843 @@ +object fCargaEDI: TfCargaEDI + Left = 470 + Top = 409 + BorderIcons = [] + BorderStyle = bsDialog + Caption = 'Monitor de carga autom'#225'tica' + ClientHeight = 324 + ClientWidth = 367 + 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 + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Label13: TLabel + Left = 40 + Top = 118 + Width = 204 + Height = 14 + Caption = 'Carga autom'#225'tica de ficheros EDI' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Image1: TImage + Left = 0 + Top = 0 + Width = 367 + Height = 100 + Align = alTop + AutoSize = True + Picture.Data = { + 0A544A504547496D616765194A0000FFD8FFE000104A46494600010201004800 + 480000FFE106744578696600004D4D002A000000080007011200030000000100 + 010000011A00050000000100000062011B0005000000010000006A0128000300 + 00000100020000013100020000001B0000007201320002000000140000008D87 + 69000400000001000000A4000000D00000004800000001000000480000000141 + 646F62652050686F746F73686F702043532057696E646F777300323030363A30 + 373A30372031323A35323A3237000000000003A00100030000000100010000A0 + 0200040000000100000177A00300040000000100000064000000000000000601 + 0300030000000100060000011A0005000000010000011E011B00050000000100 + 00012601280003000000010002000002010004000000010000012E0202000400 + 0000010000053E0000000000000048000000010000004800000001FFD8FFE000 + 104A46494600010201004800480000FFED000C41646F62655F434D0001FFEE00 + 0E41646F626500648000000001FFDB0084000C08080809080C09090C110B0A0B + 11150F0C0C0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E + 0E14140E0E0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC0001108002B00A003012200 + 021101031101FFDD0004000AFFC4013F00000105010101010101000000000000 + 00030001020405060708090A0B01000105010101010101000000000000000100 + 02030405060708090A0B1000010401030204020507060805030C330100021103 + 04211231054151611322718132061491A1B14223241552C16233347282D14307 + 259253F0E1F163733516A2B283264493546445C2A3743617D255E265F2B384C3 + D375E3F3462794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F6 + 37475767778797A7B7C7D7E7F711000202010204040304050607070605350100 + 021103213112044151617122130532819114A1B14223C152D1F0332462E17282 + 92435315637334F1250616A2B283072635C2D2449354A317644555367465E2F2 + B384C3D375E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6 + E6F62737475767778797A7B7C7FFDA000C03010002110311003F00ED3D34BD35 + 6762AF9E0B711EF05CD0D2D2E2D25A76EE1BFDCDF72BBC47A35C8A04F6636065 + 6DDD6B9B5B7F79C4347FD249A1AF687B08735C25AE064107BB4A0D67A656DDC3 + 1EB3673EA3C6F7FF00DB96EF7A9F4701DD36A03863ACAFFCCB2C68FF00A29C78 + 80B90AD698F1E58642447A0B49E9A5E9AB1B12F4D378D9385AFE9A5E9AB1B12D + 8971AB85AFE9A5E9AB1B12D89712B85AFE9A5E9AB1B12D8971AB85AFE9A5E9AB + 1B12D89712B85AFE9A5E9AB1B12D89712B85AFE9A5E9AB05A1A0B8E800927C82 + 8BA5B58B4B46C2247BD931F0DDB7FE9A64F3C202E7211F34C71CA5B0B43E9A5E + 9A2D2EAEFA9B7547731E25A7E71FC14FD34E1901008360EA08418D685FFFD0F4 + 4D8839741BB1ADC76C6FBD8FAEB9D06E2D73BDDF72BBB142EA196B363C122410 + 5A4B5C08E1CC7B7DCC729B89653C6F54E9FD570AA6B6B7B1CF2D97BF576D3FBA + 07B59DBE97E916DF4DA725984D183F66F4097901E6E2EF53745DEABDFBFDDEAB + 7DFF00F411EFE8E6E3FA6C9C8757DEB0EADA48F036B2865BFF004D5FC7C7A28A + 194E3B0574D6218C1DBC79F739DBBE9B93F2E696488133A8BF97D2B31E1C7885 + 63888FE7F597CCD235F56EC713EEB5215F57EE70FE42E5A3B12D8A3BF12BE9CE + F4FAB78E27DD6FF7A5E9F56F1C4FBADFEF5A3B12D895F895539DE9F56F1C4FBA + DFEF4FE9F55FDEC4FF0036DFEF5A1B12D895F895539FE9F55FDEC4FBADFEF4DE + 9F56F1C4FBADFEF5A3B12D895F895539DE9F56F1C4FBAEFEF4BD3EADE389F75B + FDEB47625B12BF12AA73BD3EAD3F4B123E16FF007A5E9F55F1C49F18B63FF325 + A3B12D897D4FDAAA732DAFAAFA4F938B1B5D302D9E0F9A0F56603855BF6932C0 + 7716309E3FD2B7D8B676A03F0F0DDF4E8ADC39D5808FFA95067C5EE0F9AB4235 + 5F8E5C3D1A1D09B3D1B0CFFC1FFDF9EAFEC460C102388D23884FB14D8FD308C6 + EF8408FD8B25A927B9B7FFD1F51DA98B11124ED51A213592A4187E088925AAB4 + 47B0F8A5B0F8FE0A69D2D548F61F14B61F144492D55A23D87C52D87C54D3A5AA + 91EC3E296C3E2A6925AAB461B0F8A5B0F8A2264B5568C361F1FC12D87C511325 + AA986C3E3F82635CA2A64B55300C8007825B54D3A5AA9FFFD9FFED0B4A50686F + 746F73686F7020332E30003842494D0425000000000010000000000000000000 + 000000000000003842494D03ED00000000001000480000000100020048000000 + 0100023842494D042600000000000E000000000000000000003F800000384249 + 4D040D000000000004000000783842494D04190000000000040000001E384249 + 4D03F3000000000009000000000000000001003842494D040A00000000000100 + 003842494D271000000000000A000100000000000000023842494D03F5000000 + 000048002F66660001006C66660006000000000001002F6666000100A1999A00 + 06000000000001003200000001005A0000000600000000000100350000000100 + 2D000000060000000000013842494D03F80000000000700000FFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFF03E800003842494D040000000000000200023842494D04020000000000 + 0A000000010001000100013842494D0408000000000029000000010000024000 + 000240000000050000072001000006500000002B60000000072001000008E001 + 003842494D041E000000000004000000003842494D041A000000000345000000 + 0600000000000000000000006400000177000000080043006100620065006300 + 6500720061000000010000000000000000000000000000000000000001000000 + 0000000000000001770000006400000000000000000000000000000000010000 + 000000000000000000000000000000000010000000010000000000006E756C6C + 0000000200000006626F756E64734F626A630000000100000000000052637431 + 0000000400000000546F70206C6F6E6700000000000000004C6566746C6F6E67 + 000000000000000042746F6D6C6F6E670000006400000000526768746C6F6E67 + 0000017700000006736C69636573566C4C73000000014F626A63000000010000 + 00000005736C6963650000001200000007736C69636549446C6F6E6700000000 + 0000000767726F757049446C6F6E6700000000000000066F726967696E656E75 + 6D0000000C45536C6963654F726967696E0000000D6175746F47656E65726174 + 65640000000054797065656E756D0000000A45536C6963655479706500000000 + 496D672000000006626F756E64734F626A630000000100000000000052637431 + 0000000400000000546F70206C6F6E6700000000000000004C6566746C6F6E67 + 000000000000000042746F6D6C6F6E670000006400000000526768746C6F6E67 + 000001770000000375726C54455854000000010000000000006E756C6C544558 + 54000000010000000000004D7367655445585400000001000000000006616C74 + 546167544558540000000100000000000E63656C6C54657874497348544D4C62 + 6F6F6C010000000863656C6C546578745445585400000001000000000009686F + 727A416C69676E656E756D0000000F45536C696365486F727A416C69676E0000 + 000764656661756C740000000976657274416C69676E656E756D0000000F4553 + 6C69636556657274416C69676E0000000764656661756C740000000B6267436F + 6C6F7254797065656E756D0000001145536C6963654247436F6C6F7254797065 + 000000004E6F6E6500000009746F704F75747365746C6F6E6700000000000000 + 0A6C6566744F75747365746C6F6E67000000000000000C626F74746F6D4F7574 + 7365746C6F6E67000000000000000B72696768744F75747365746C6F6E670000 + 0000003842494D042800000000000C000000013FF00000000000003842494D04 + 140000000000040000000D3842494D040C00000000055A00000001000000A000 + 00002B000001E0000050A00000053E00180001FFD8FFE000104A464946000102 + 01004800480000FFED000C41646F62655F434D0001FFEE000E41646F62650064 + 8000000001FFDB0084000C08080809080C09090C110B0A0B11150F0C0C0F1518 + 131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10140E0E0E14140E0E0E0E14 + 110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C0CFFC0001108002B00A003012200021101031101FFDD + 0004000AFFC4013F000001050101010101010000000000000003000102040506 + 0708090A0B010001050101010101010000000000000001000203040506070809 + 0A0B1000010401030204020507060805030C3301000211030421123105415161 + 1322718132061491A1B14223241552C16233347282D14307259253F0E1F16373 + 3516A2B283264493546445C2A3743617D255E265F2B384C3D375E3F3462794A4 + 85B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F637475767778797A7 + B7C7D7E7F7110002020102040403040506070706053501000211032131120441 + 51617122130532819114A1B14223C152D1F0332462E1728292435315637334F1 + 250616A2B283072635C2D2449354A317644555367465E2F2B384C3D375E3F346 + 94A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6D6E6F6273747576777 + 8797A7B7C7FFDA000C03010002110311003F00ED3D34BD356762AF9E0B711EF0 + 5CD0D2D2E2D25A76EE1BFDCDF72BBC47A35C8A04F66360656DDD6B9B5B7F79C4 + 347FD249A1AF687B08735C25AE064107BB4A0D67A656DDC31EB3673EA3C6F7FF + 00DB96EF7A9F4701DD36A03863ACAFFCCB2C68FF00A29C7880B90AD698F1E586 + 42447A0B49E9A5E9AB1B12F4D378D9385AFE9A5E9AB1B12D8971AB85AFE9A5E9 + AB1B12D89712B85AFE9A5E9AB1B12D8971AB85AFE9A5E9AB1B12D89712B85AFE + 9A5E9AB1B12D89712B85AFE9A5E9AB05A1A0B8E800927C828BA5B58B4B46C224 + 7BD931F0DDB7FE9A64F3C202E7211F34C71CA5B0B43E9A5E9A2D2EAEFA9B7547 + 731E25A7E71FC14FD34E1901008360EA08418D685FFFD0F44D8839741BB1ADC7 + 6C6FBD8FAEB9D06E2D73BDDF72BBB142EA196B363C1224105A4B5C08E1CC7B7D + CC729B89653C6F54E9FD570AA6B6B7B1CF2D97BF576D3FBA07B59DBE97E916DF + 4DA725984D183F66F4097901E6E2EF53745DEABDFBFDDEAB7DFF00F411EFE8E6 + E3FA6C9C8757DEB0EADA48F036B2865BFF004D5FC7C7A28A194E3B0574D6218C + 1DBC79F739DBBE9B93F2E696488133A8BF97D2B31E1C788563888FE7F597CCD2 + 35F56EC713EEB5215F57EE70FE42E5A3B12D8A3BF12BE9CEF4FAB78E27DD6FF7 + A5E9F56F1C4FBADFEF5A3B12D895F895539DE9F56F1C4FBADFEF4FE9F55FDEC4 + FF0036DFEF5A1B12D895F895539FE9F55FDEC4FBADFEF4DE9F56F1C4FBADFEF5 + A3B12D895F895539DE9F56F1C4FBAEFEF4BD3EADE389F75BFDEB47625B12BF12 + AA73BD3EAD3F4B123E16FF007A5E9F55F1C49F18B63FF325A3B12D897D4FDAAA + 732DAFAAFA4F938B1B5D302D9E0F9A0F56603855BF6932C07716309E3FD2B7D8 + B676A03F0F0DDF4E8ADC39D5808FFA95067C5EE0F9AB42355F8E5C3D1A1D09B3 + D1B0CFFC1FFDF9EAFEC460C102388D23884FB14D8FD308C6EF8408FD8B25A927 + B9B7FFD1F51DA98B11124ED51A213592A4187E088925AAB447B0F8A5B0F8FE0A + 69D2D548F61F14B61F144492D55A23D87C52D87C54D3A5AA91EC3E296C3E2A69 + 25AAB461B0F8A5B0F8A2264B5568C361F1FC12D87C511325AA986C3E3F82635C + A2A64B55300C8007825B54D3A5AA9FFFD93842494D0421000000000053000000 + 01010000000F00410064006F00620065002000500068006F0074006F00730068 + 006F00700000001200410064006F00620065002000500068006F0074006F0073 + 0068006F007000200043005300000001003842494D0406000000000007000500 + 0100010100FFE11934687474703A2F2F6E732E61646F62652E636F6D2F786170 + 2F312E302F003C3F787061636B657420626567696E3D27EFBBBF272069643D27 + 57354D304D7043656869487A7265537A4E54637A6B633964273F3E0A3C783A78 + 6D706D65746120786D6C6E733A783D2761646F62653A6E733A6D6574612F2720 + 783A786D70746B3D27584D5020746F6F6C6B697420332E302D32382C20667261 + 6D65776F726B20312E36273E0A3C7264663A52444620786D6C6E733A7264663D + 27687474703A2F2F7777772E77332E6F72672F313939392F30322F32322D7264 + 662D73796E7461782D6E73232720786D6C6E733A69583D27687474703A2F2F6E + 732E61646F62652E636F6D2F69582F312E302F273E0A0A203C7264663A446573 + 6372697074696F6E207264663A61626F75743D27757569643A38643632323166 + 382D306461362D313164622D393366622D616463643939616537623064270A20 + 20786D6C6E733A657869663D27687474703A2F2F6E732E61646F62652E636F6D + 2F657869662F312E302F273E0A20203C657869663A436F6C6F7253706163653E + 313C2F657869663A436F6C6F7253706163653E0A20203C657869663A50697865 + 6C5844696D656E73696F6E3E3337353C2F657869663A506978656C5844696D65 + 6E73696F6E3E0A20203C657869663A506978656C5944696D656E73696F6E3E31 + 30303C2F657869663A506978656C5944696D656E73696F6E3E0A203C2F726466 + 3A4465736372697074696F6E3E0A0A203C7264663A4465736372697074696F6E + 207264663A61626F75743D27757569643A38643632323166382D306461362D31 + 3164622D393366622D616463643939616537623064270A2020786D6C6E733A70 + 64663D27687474703A2F2F6E732E61646F62652E636F6D2F7064662F312E332F + 273E0A203C2F7264663A4465736372697074696F6E3E0A0A203C7264663A4465 + 736372697074696F6E207264663A61626F75743D27757569643A386436323231 + 66382D306461362D313164622D393366622D616463643939616537623064270A + 2020786D6C6E733A70686F746F73686F703D27687474703A2F2F6E732E61646F + 62652E636F6D2F70686F746F73686F702F312E302F273E0A20203C70686F746F + 73686F703A486973746F72793E3C2F70686F746F73686F703A486973746F7279 + 3E0A203C2F7264663A4465736372697074696F6E3E0A0A203C7264663A446573 + 6372697074696F6E207264663A61626F75743D27757569643A38643632323166 + 382D306461362D313164622D393366622D616463643939616537623064270A20 + 20786D6C6E733A746966663D27687474703A2F2F6E732E61646F62652E636F6D + 2F746966662F312E302F273E0A20203C746966663A4F7269656E746174696F6E + 3E313C2F746966663A4F7269656E746174696F6E3E0A20203C746966663A5852 + 65736F6C7574696F6E3E37322F313C2F746966663A585265736F6C7574696F6E + 3E0A20203C746966663A595265736F6C7574696F6E3E37322F313C2F74696666 + 3A595265736F6C7574696F6E3E0A20203C746966663A5265736F6C7574696F6E + 556E69743E323C2F746966663A5265736F6C7574696F6E556E69743E0A203C2F + 7264663A4465736372697074696F6E3E0A0A203C7264663A4465736372697074 + 696F6E207264663A61626F75743D27757569643A38643632323166382D306461 + 362D313164622D393366622D616463643939616537623064270A2020786D6C6E + 733A7861703D27687474703A2F2F6E732E61646F62652E636F6D2F7861702F31 + 2E302F273E0A20203C7861703A437265617465446174653E323030362D30372D + 30375431323A35323A32372B30313A30303C2F7861703A437265617465446174 + 653E0A20203C7861703A4D6F64696679446174653E323030362D30372D303754 + 31323A35323A32372B30313A30303C2F7861703A4D6F64696679446174653E0A + 20203C7861703A4D65746164617461446174653E323030362D30372D30375431 + 323A35323A32372B30313A30303C2F7861703A4D65746164617461446174653E + 0A20203C7861703A43726561746F72546F6F6C3E41646F62652050686F746F73 + 686F702043532057696E646F77733C2F7861703A43726561746F72546F6F6C3E + 0A203C2F7264663A4465736372697074696F6E3E0A0A203C7264663A44657363 + 72697074696F6E207264663A61626F75743D27757569643A3864363232316638 + 2D306461362D313164622D393366622D616463643939616537623064270A2020 + 786D6C6E733A73745265663D27687474703A2F2F6E732E61646F62652E636F6D + 2F7861702F312E302F73547970652F5265736F7572636552656623270A202078 + 6D6C6E733A7861704D4D3D27687474703A2F2F6E732E61646F62652E636F6D2F + 7861702F312E302F6D6D2F273E0A20203C7861704D4D3A446572697665644672 + 6F6D207264663A7061727365547970653D275265736F75726365273E0A202020 + 3C73745265663A696E7374616E636549443E757569643A38643632323166342D + 306461362D313164622D393366622D6164636439396165376230643C2F737452 + 65663A696E7374616E636549443E0A2020203C73745265663A646F63756D656E + 7449443E61646F62653A646F6369643A70686F746F73686F703A633838336237 + 36382D306461322D313164622D393366622D6164636439396165376230643C2F + 73745265663A646F63756D656E7449443E0A20203C2F7861704D4D3A44657269 + 76656446726F6D3E0A20203C7861704D4D3A446F63756D656E7449443E61646F + 62653A646F6369643A70686F746F73686F703A38643632323166372D30646136 + 2D313164622D393366622D6164636439396165376230643C2F7861704D4D3A44 + 6F63756D656E7449443E0A203C2F7264663A4465736372697074696F6E3E0A0A + 203C7264663A4465736372697074696F6E207264663A61626F75743D27757569 + 643A38643632323166382D306461362D313164622D393366622D616463643939 + 616537623064270A2020786D6C6E733A64633D27687474703A2F2F7075726C2E + 6F72672F64632F656C656D656E74732F312E312F273E0A20203C64633A666F72 + 6D61743E696D6167652F6A7065673C2F64633A666F726D61743E0A203C2F7264 + 663A4465736372697074696F6E3E0A0A3C2F7264663A5244463E0A3C2F783A78 + 6D706D6574613E0A202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020200A20202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020202020200A2020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020202020202020200A202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020200A20202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 0A20202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020200A2020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020200A202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020200A20202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020202020202020200A2020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020202020202020202020200A202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020200A20 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020200A20202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020200A2020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020200A202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020200A20202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020202020202020202020200A2020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020202020202020202020202020200A202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 200A202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020200A20202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020200A2020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020200A202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020200A20202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020202020202020202020202020200A2020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020202020202020202020202020202020200A + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020200A202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020200A20202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020200A2020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020202020200A202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020200A20202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020202020202020202020202020202020200A2020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20200A2020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020200A202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020200A20202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020202020202020202020202020200A2020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020202020202020202020202020200A202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020200A20202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 0A20202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 20202020200A2020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020202020200A202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 2020202020202020202020202020200A20202020202020202020202020202020 + 2020202020202020202020202020202020202020202020202020202020202020 + 202020202020200A3C3F787061636B657420656E643D2777273F3EFFE20C5849 + 43435F50524F46494C4500010100000C484C696E6F021000006D6E7472524742 + 2058595A2007CE00020009000600310000616373704D53465400000000494543 + 20735247420000000000000000000000000000F6D6000100000000D32D485020 + 2000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000011637072740000015000000033646573 + 63000001840000006C77747074000001F000000014626B707400000204000000 + 147258595A00000218000000146758595A0000022C000000146258595A000002 + 4000000014646D6E640000025400000070646D6464000002C400000088767565 + 640000034C0000008676696577000003D4000000246C756D69000003F8000000 + 146D6561730000040C0000002474656368000004300000000C72545243000004 + 3C0000080C675452430000043C0000080C625452430000043C0000080C746578 + 7400000000436F70797269676874202863292031393938204865776C6574742D + 5061636B61726420436F6D70616E790000646573630000000000000012735247 + 422049454336313936362D322E31000000000000000000000012735247422049 + 454336313936362D322E31000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000058595A + 20000000000000F35100010000000116CC58595A200000000000000000000000 + 000000000058595A200000000000006FA2000038F50000039058595A20000000 + 00000062990000B785000018DA58595A2000000000000024A000000F840000B6 + CF64657363000000000000001649454320687474703A2F2F7777772E6965632E + 636800000000000000000000001649454320687474703A2F2F7777772E696563 + 2E63680000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000064657363000000000000002E494543 + 2036313936362D322E312044656661756C742052474220636F6C6F7572207370 + 616365202D207352474200000000000000000000002E4945432036313936362D + 322E312044656661756C742052474220636F6C6F7572207370616365202D2073 + 5247420000000000000000000000000000000000000000000064657363000000 + 000000002C5265666572656E63652056696577696E6720436F6E646974696F6E + 20696E2049454336313936362D322E3100000000000000000000002C52656665 + 72656E63652056696577696E6720436F6E646974696F6E20696E204945433631 + 3936362D322E3100000000000000000000000000000000000000000000000000 + 0076696577000000000013A4FE00145F2E0010CF140003EDCC0004130B00035C + 9E0000000158595A2000000000004C09560050000000571FE76D656173000000 + 0000000001000000000000000000000000000000000000028F00000002736967 + 20000000004352542063757276000000000000040000000005000A000F001400 + 19001E00230028002D00320037003B00400045004A004F00540059005E006300 + 68006D00720077007C00810086008B00900095009A009F00A400A900AE00B200 + B700BC00C100C600CB00D000D500DB00E000E500EB00F000F600FB0101010701 + 0D01130119011F0125012B01320138013E0145014C0152015901600167016E01 + 75017C0183018B0192019A01A101A901B101B901C101C901D101D901E101E901 + F201FA0203020C0214021D0226022F02380241024B0254025D02670271027A02 + 84028E029802A202AC02B602C102CB02D502E002EB02F50300030B0316032103 + 2D03380343034F035A03660372037E038A039603A203AE03BA03C703D303E003 + EC03F9040604130420042D043B0448045504630471047E048C049A04A804B604 + C404D304E104F004FE050D051C052B053A05490558056705770586059605A605 + B505C505D505E505F6060606160627063706480659066A067B068C069D06AF06 + C006D106E306F507070719072B073D074F076107740786079907AC07BF07D207 + E507F8080B081F08320846085A086E0882089608AA08BE08D208E708FB091009 + 25093A094F09640979098F09A409BA09CF09E509FB0A110A270A3D0A540A6A0A + 810A980AAE0AC50ADC0AF30B0B0B220B390B510B690B800B980BB00BC80BE10B + F90C120C2A0C430C5C0C750C8E0CA70CC00CD90CF30D0D0D260D400D5A0D740D + 8E0DA90DC30DDE0DF80E130E2E0E490E640E7F0E9B0EB60ED20EEE0F090F250F + 410F5E0F7A0F960FB30FCF0FEC1009102610431061107E109B10B910D710F511 + 131131114F116D118C11AA11C911E81207122612451264128412A312C312E313 + 03132313431363138313A413C513E5140614271449146A148B14AD14CE14F015 + 12153415561578159B15BD15E0160316261649166C168F16B216D616FA171D17 + 411765178917AE17D217F7181B18401865188A18AF18D518FA19201945196B19 + 9119B719DD1A041A2A1A511A771A9E1AC51AEC1B141B3B1B631B8A1BB21BDA1C + 021C2A1C521C7B1CA31CCC1CF51D1E1D471D701D991DC31DEC1E161E401E6A1E + 941EBE1EE91F131F3E1F691F941FBF1FEA20152041206C209820C420F0211C21 + 48217521A121CE21FB22272255228222AF22DD230A23382366239423C223F024 + 1F244D247C24AB24DA250925382568259725C725F726272657268726B726E827 + 182749277A27AB27DC280D283F287128A228D429062938296B299D29D02A022A + 352A682A9B2ACF2B022B362B692B9D2BD12C052C392C6E2CA22CD72D0C2D412D + 762DAB2DE12E162E4C2E822EB72EEE2F242F5A2F912FC72FFE3035306C30A430 + DB3112314A318231BA31F2322A3263329B32D4330D3346337F33B833F1342B34 + 65349E34D83513354D358735C235FD3637367236AE36E937243760379C37D738 + 143850388C38C839053942397F39BC39F93A363A743AB23AEF3B2D3B6B3BAA3B + E83C273C653CA43CE33D223D613DA13DE03E203E603EA03EE03F213F613FA23F + E24023406440A640E74129416A41AC41EE4230427242B542F7433A437D43C044 + 034447448A44CE45124555459A45DE4622466746AB46F04735477B47C0480548 + 4B489148D7491D496349A949F04A374A7D4AC44B0C4B534B9A4BE24C2A4C724C + BA4D024D4A4D934DDC4E254E6E4EB74F004F494F934FDD5027507150BB510651 + 50519B51E65231527C52C75313535F53AA53F65442548F54DB5528557555C256 + 0F565C56A956F75744579257E0582F587D58CB591A596959B85A075A565AA65A + F55B455B955BE55C355C865CD65D275D785DC95E1A5E6C5EBD5F0F5F615FB360 + 05605760AA60FC614F61A261F56249629C62F06343639763EB6440649464E965 + 3D659265E7663D669266E8673D679367E9683F689668EC6943699A69F16A486A + 9F6AF76B4F6BA76BFF6C576CAF6D086D606DB96E126E6B6EC46F1E6F786FD170 + 2B708670E0713A719571F0724B72A67301735D73B87414747074CC7528758575 + E1763E769B76F8775677B37811786E78CC792A798979E77A467AA57B047B637B + C27C217C817CE17D417DA17E017E627EC27F237F847FE5804780A8810A816B81 + CD8230829282F4835783BA841D848084E3854785AB860E867286D7873B879F88 + 04886988CE8933899989FE8A648ACA8B308B968BFC8C638CCA8D318D988DFF8E + 668ECE8F368F9E9006906E90D6913F91A89211927A92E3934D93B69420948A94 + F4955F95C99634969F970A977597E0984C98B89924999099FC9A689AD59B429B + AF9C1C9C899CF79D649DD29E409EAE9F1D9F8B9FFAA069A0D8A147A1B6A226A2 + 96A306A376A3E6A456A4C7A538A5A9A61AA68BA6FDA76EA7E0A852A8C4A937A9 + A9AA1CAA8FAB02AB75ABE9AC5CACD0AD44ADB8AE2DAEA1AF16AF8BB000B075B0 + EAB160B1D6B24BB2C2B338B3AEB425B49CB513B58AB601B679B6F0B768B7E0B8 + 59B8D1B94AB9C2BA3BBAB5BB2EBBA7BC21BC9BBD15BD8FBE0ABE84BEFFBF7ABF + F5C070C0ECC167C1E3C25FC2DBC358C3D4C451C4CEC54BC5C8C646C6C3C741C7 + BFC83DC8BCC93AC9B9CA38CAB7CB36CBB6CC35CCB5CD35CDB5CE36CEB6CF37CF + B8D039D0BAD13CD1BED23FD2C1D344D3C6D449D4CBD54ED5D1D655D6D8D75CD7 + E0D864D8E8D96CD9F1DA76DAFBDB80DC05DC8ADD10DD96DE1CDEA2DF29DFAFE0 + 36E0BDE144E1CCE253E2DBE363E3EBE473E4FCE584E60DE696E71FE7A9E832E8 + BCE946E9D0EA5BEAE5EB70EBFBEC86ED11ED9CEE28EEB4EF40EFCCF058F0E5F1 + 72F1FFF28CF319F3A7F434F4C2F550F5DEF66DF6FBF78AF819F8A8F938F9C7FA + 57FAE7FB77FC07FC98FD29FDBAFE4BFEDCFF6DFFFFFFEE000E41646F62650064 + 4000000001FFDB00840004030303030304030304060403040607050404050708 + 0606070606080A0809090909080A0A0C0C0C0C0C0A0C0C0C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C010405050807080F0A0A0F140E0E0E14140E0E0E0E14 + 110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C + 0C0C0C0C0C0C0C0C0C0C0CFFC00011080064017703011100021101031101FFDD + 0004002FFFC400B2000101000105010000000000000000000000010203040607 + 0805010101000203010000000000000000000000010405020306071000010205 + 020109050505040B01000000010002120313040511215131416191D114D40607 + 812255951771A1B13252F13324154542722325C16282A2B273A3549465851611 + 010100020004030407050607000000000011010212031304216105314151A171 + 81C12232B20691D172A2D2F0B142529214C2E2F22333B334FFDA000C03010002 + 110311003F00F4B525ECEBCFC292948535690A4A5214D291292BC442994A4292 + 711169A94894D5A429A5214D290A694819494853D1290A4948534A429A5214D2 + 90A69429EE948534A42994A429A52148FB5290A7D6948534A42994A429A52149 + 290A65290A65290A6948534A42927110A453888534A42994A42994A404B29485 + 34A429A522534A45A69C44291294852E64A429A523FFD0F50535EB6B45169A52 + 14D2AC4A4948196948534A90A7EC1D2956235AD700E690E69E42370948B48254 + 8534AB0A695214D5AB0A6A548534AB0A7FB1290A695214D28532948534A429A5 + 214D28534A429A5214928534AB0A695214FA128534A429A5214D5A2534A45A69 + 5614F82548535290A6AD214D290A6948534A429A944A6AD22996944A6948534A + 2D3D5290A694894D290A6948FFD1F55D25EA389A68524A429A506CADC0E3CFB9 + FC352B8EDBCC672B8D6E6387CFF3D58CE7D2C4D9DE5F4C047BB2A506EBA6FB3B + FC43BF26F2D62E3B8DB6FC3877E797A69F8F6C6194A67A8B990458E2A5D95BB8 + ED3AF2706BDBEC6161FF00A653A9B63DB97567B8EDF1ECCD695DF907CD53C479 + AF30B1846F059B093F646699EB056472A6CC2E77AA6BA7E1D7EC6DBD3833A45C + 79870B3A7BE78C7DEEB2CCC3A9826C401E888CB2E3D2564F331C3965E37EA69A + EFFE6C39E53DD75548534A44A6948534A45A6948534A90A695529A711169A521 + 4F44A910CB4AAA25A522532948534A4532D2A2534A2D3D12AC29F3A5214C2711 + 129A5429EC948534AB169A522524A8534AA534E20A652A429A55853EA5690A6A + 5214D290A695214D28534A429A5214D2AC2925214CA5214D2A3FFFD2F5AD35E8 + EB530A7D0945A69462E0F960CC943598C11307170DC299F1C45C7878B82E1AE5 + B6136E2C4681B69713A4B34D8402612C3ED690B6BDAE9C7C8C793C6FAAFF00DB + EEF6F39B7C9CC2DB350B0089746FDB5CBA74EE3C1B4C865C3DA7572EEE576F1D + 5CDE7D70AF244D6B7CFDE65B7076BBB7B6B860E34B50E3D7314EF74E18F5BE9B + CCE3ED75CFC2E3E6ECBA656B6B3CA6948534A42994A14CA50A69404B4A14D285 + 34A429A5214FA129129A522D34A429A5214D290A65290A69429F4250A69429A5 + 214D289014A45A7FB128534A429A5214FA12894D29169A5129F42522D34A2534 + A1068354A46CE5E46D2792DB3AB7B09D1C6CA44EBB6B4F268E3218F03DAB036F + 50E463338AFF000E33BFE4C6CC8C76DCCCFBA7D3F77FBD8CDC9DB48DEE245E49 + 6F3BA6D8DDCB68FB4BA5003DABA33EAFDAE3DBB671F4EBBEBF9B573FF65CDF85 + FAF1FBDAF6B73677F2ABD94F9771275D2394F0F6EA3947BA7956C795CFE5F375 + E2D36C6D8F8EB9AC6DF97B6999B6265AF4CAEEAE2535290A6528534A47FFD3F5 + FC0B7D5AC29A52065A50A694751F99677F29F355FC91A319384A9ED68E4DD907 + 37F702F4BE91AF1E9B6BF0CBC67EA5C70EDCBE67C719D7FD3FF524BCE68DFCCB + 6B9ED9E571DC346E737AB4FBCB9E9DB386FDC365E49C837EA75B02ED3BF63E7D + B81C5CC2277E12D6ABD63978D74C671EECBDE7E9CDF6DBB6DAE33F8BC3E89877 + 8535E62BD214D284094204A429A950A695481290A69429AB48532A5214FA15A2 + 534A2D3528197A250A6AD214FA14A14D290A6AD214D28533C1290814A40CB4A4 + 29A52025AB48534A841D095614D4A253569081291604A44A6948F91E6564C18B + 6B658639D32EEC65964E05D29EC9979258E63DA08D5AE692D70FD2569BD67999 + D3B5DB38F8EBF9F5B8FAF1E0CDECB5C679D8BE7F972E59333D91B6B16C5849D2 + 98C01B1DA3E44D9000D80602F973341FF282D0EDDD733A775D33F549F667F95B + 2C72F5E2F1D9C03CC3E709AC8F4B3BA277D440D67FC6E6AF1BDF73B9FB7BB2DC + F235D31EF713F23E76E32DE7E9D20C912249C65C4C9835D5EF74BB8B66B0BF4D + BDD0F769F9B488EEB61FA3BA9AF77CCC6D9F6E9ECF77E2D589EB3C39E4EB9C63 + FC5F665DAD0742FACD7928409420E84A14D2A3FFD4F64C0B755AF20294203A72 + 252102523A5FD58B3C83BCCB622CADCCE9D712A1952E434BA6386849886FF960 + 7127920FB1CBD47A0F3B4D37DB8F38C627BDE67F5276BBF3FB5C74F5CEDB6BB6 + 3C35F1CF8FDD70D9AE18FB775C5FDC4665EB1DBD80EF6F04687474C61A4DE5DF + FC4739BCEC5E8399EA1CBCEDC3CBC5CFC76FB9AFCFEF7F2FD6F33D97E98EE799 + 8BCECE3978F87E2DFF00A7F9BEA70BCBF9D728F8998CB3EE968D04BE7CC35EE3 + 400F26DA6BC21682B1BB8DB99D3DB6CE7C718F663C35FEAF9BD9767E89DA7233 + 8FBBC59FF36FF7BFE5F93B7BCA779E43F2CCC9796B6C4E6EFB2E587FCCEEF179 + 89D3747B74743FC0C2D041FEC8E45E079BDE6FCCFC55BFCE3DCE6D6FEA7E0A6C + D6B2E24DDE3E41D4BAEB216391B290DD012019971692DBA93B0116AB51DF7A86 + 7B6E5F1E34DB7F1935C6D9FCBAED9F93B791DBE399B4B8C7ECFDEDBC9F5630B3 + E54B9B2F1D947B6600E6BA5E2B2D35875FD2F65916B87483A2CCE5F719DB5C6D + 9D738B8F63AB6E5CCE71599F5530EDD4BB1B9601A3524E1F31A01FF82BB3ABE5 + 971E0691F577CBE06BDCF27F29CBF8157ABE49C0C59EB0601E746E3F2A4F461B + 33E014EAF92F03703D52C4BB718CCB1FFE3E63C0A75BCB2701F54B123FA5E5BE + 4F98F029D5F2C9C09F54F103FA665BE4F98F02A75BCB27007D55C3FC372DF27C + C7814EB7964E04FAAB87F86E5BE4F98F02AF5BCB2702FD55C39E4C6E5BE4F98F + 02A75BCB2701F55311F0CCB7C9F31E053ADE59380FAA788F8665BE4F98F02AF5 + BCB2702FD52C4FC332DF27CC7814EB7964E03EA9627E1996F93E63C0A75BCB27 + 02FD51C4FC332DF27CC7814EAF964E04FAA589F8665BE4F97F029D5F2C9C01F5 + 4B13F0CCB7C9F31E053ADE593813EA9E23E1996F93E63C0A75BCB2701F55311F + 0CCB7C9F31E053ADE593813EAAE1FE1B96F93E63C0A75BCB2701F5570FF0CCB7 + C9F31E053ADE59383CCFAAB87F86E5BE4F98F029D5F2C9C0A3D54C41FE9996F9 + 3E63C0A757CB2702FD52C49FE9996F93E63C0A75BCB270317FAAB88672E2F2FE + CC3664FE16054EB7964E062CF5630EF3A0C5E5FDB85CD0FC6C0275BCB27079B3 + FAA988E7C665BE4F98F02AF5BCB270327FAA7E5F956D367CF97736F318E96D95 + 6973677F6F733AA3A1264C99B6AD99321E781AE5ACE7FA96DCAE7E9CAC72F6CE + 37FF0014DB875FA73C3C3FEADB564F2FB6C6DA676E2C627BBC3F7B1FAA788E4F + E5996D47FE9F31E056CFADE596374D0FAA988D5A3F9665BDE3A0FF0027CC7302 + 7FEC7A13ADE59381B7BDF3CD879865DBE2AD2D725693E75ED843713F1B90B663 + 0B2F64BB5A975692E583B6D13B7E95A5F5AE671769B62671E3A7FECD59BD96B3 + 9D8FAFF2E5D9F33F9DCAC569FC2DD0E671A96C7939C01381FB96AF97D4C727DD + 9F97F53336E1E3753F9ADD927548D922572EED7BE6FDC5AC5E6BBDE2F26CF931 + C6FD2C64CFA8B3EA3E371C4DDF2085A3F89B4E41B9FBD647E94FFECDFF00833F + 9B574FAB7FE1D7F8BECCBBD202BEA35E5A10742521074252102548FFD5F6940B + 6B58508129081291B0CCDD4CC7E32E6EE5E8264B6FBAE2356B4B886C6E1B6CDD + 623D0172C2E31E293FCA7E51CC48B67E62C197B36D5C664A7CE2E313DC002660 + 0407EBA0FCE1C16169DD7374BC399595C3871BF38E32C26583254892C9522D1E + D7325CB686B1B2F585E001A0003493EC5D9DAF376C732DF69B63C1D239AF269C + 7B321A334EECD9A5A74E660241FB97A9C77FC7ACF8BA381DA9E9D7996E266627 + F94EE1C66C9976C6EECDC773298C7B65BA5EBFA7DE05A3FB3F668B53CFD71899 + 4DB5F7BB3605875C2102B48B029484094840948900E0AD22C0A52241CC948B07 + 32521025224015A4204A4204A45814A44815A42052908355691605291201AA52 + 100E0948B025210251205690A7D094806252102952102B561025210746C94840 + 14A4205691F07CE32E51C13DD7061B665D58CC9F3222C8254BBD92E7BCB8105A + 1AD05C5DAFBA044B4DEB3AE76ED36C63E3AFCB7D73966765E1CDC7D7FDD97DC7 + 59DF33121D6B9274C9446AD1712D93806E9B68E65327ED7172D472F4DBA3E1B7 + EDFED866ED9C71F8E1D51E6B917C6A55BB1CFF00BA94187FDE73D79AEF71B7BF + 2D9F27387C0F496DDDF512EE634BE6365E2AE1B3661DC35D32E6D4B01D3605C1 + 8ED38C2EE0B23F4AEB9FF77BE7DDC1FF0016AE9F55CE3A5AE3CFECCBBE20E85F + 4DAF310812AC204A9081291FFFD6F6DD35B1AC48401290A695634E7DAC9B9913 + 2DAE25B66C89CD74B9B2DE226B98E1A39A41E50414C6C91C3AEB1BE6EC007330 + EC6E7712DFDD5BCD9D42FE53799A263F564E0398BCCB7FEA73CEEB8EDCBD36F1 + F667E4EED77714CBF9A32643ED2F3CA5E6089ED2D98D958F7DCB3476C454B774 + C69EB5D9A7271AF8F161CAD7C09B8FF50BCE0F2DB5C05DC8913340E9D9B12EC2 + 580069ACC92C151FC9B83EE9FD2B275CF2F4F1F7B8E5D91E40F4EE5F93DB717F + 7D75FCC3CC57E00BCBCD2163583712E53799A0F5AEAE67373BE5D79CD7378174 + D71840948534A429A50A652908129129A522D34A40CB4A429A5214D29081290A + 694894D290A69429A5214D290A6948534A4583A129129A522C0944A612908128 + 40948B4D2894D290A69429A5210250A6944328105A46A0EC41E4D1291F23FF00 + C9E198C74AB69536CA4BB7749B0B9B8B1944F12CB6992DBAF4E8B0F6ED3939F7 + 4FE1CE75FCB1DF8E76F8F7FDAD9DC7A7FE5ABB24DCC9BA9BA8D087E42F9C08FB + 0CFD163E7D2FB6DBDBADFAF6FDEECC775CDC7B33F2C3EBE33098BC35BF74C4D9 + 49B2B7D7532E431B2C177244ED00D4F49DD67F2B95A72B5E1D318D71E4C7DF7D + B7CDDB35BDA6BB6B8429EE94204A429A523FFFD7F71C0B36B1C8129080AB442D + 00124E806E4A946DDDDE267EECD3673123571F67204B82341F6AFF00CCE9F375 + E87C3F868AD1A70DDC83EECD711C2668FF00BC6EB9782C6F2DA75605AE6C335B + F99BFE90B8E52371074294204A1074250812840950812A9014A44815A2C0A508 + 3A12840AD080A50814A102510315A2C0A51204A102A101E0A50812A420554814 + A2C0952240AD520528B004A24094205684078252018A521014A2C1EC4A8D38D9 + CA0977F74177E014E2C3946266CA1CBA8FF65DD8A71E0E16A36078D58438710B + 95C245815A10250812A10A557FFFD0F7542B2ABA610A5210A08F971348E29443 + 03408B6D5069CC68D3A0A61636CE6C5AEDCBAAE68D7916F0BCCD239B40B8E723 + 71070528B0A108529121E84A10A508529085290852841D094842128409421421 + 0F425085284294843A25210A50850214210A50850214A4204A108E094204A421 + 4210A5210A5210A508529087A128C26B019641E4D46BF66A171DB3E0B8584C3A + 06EDD4A0DBCC964F285D7972636D2A19C4FF00AA75EB0AE9ED36F63790AEE708 + 4294842128429523FFD1F7940BBABAE1004A4481291604A4694C95AB874705CB + 194CB132470EAD95A98AC0DB704E25C3544961DB520F0D4F6AE1557BBB7A4F41 + 24A672A7766E9CA7ACA5487771C4F59ED4A44EECDE9EB3DAAD0EECDE627ACF6A + 945EEE389EB3DAAD2140713D67B5290EEEDE27ACF6A521DDDBD3D654A43BBB78 + 9EB3DA94877768E73D65287771C4F59ED4A1DDC713D65287776F17759ED4A43B + B8E27ACAB487776F13D67B54A1DDDBC4F594A1DDDBC4F59ED4A43BBB78BBACF6 + AB489DDDBC5DD67B5287771C4F59ED4A45EEEDE27ACF6A521DDC7313D67B5289 + DDDBC4F59ED4A1DDDBCFAF59ED4A43BB8E27ACF6A521DDC713D67B528BDDDBC5 + DD67B54A1DDDBCFBFDA4EA81DDDBC4F59ED4A27771C49F69ED4A42801B8D79B9 + CA672ACCB0E9B689460E9479C6AB8892E510FD74E64C196AC0B9D420E8D52841 + C12840947FFFD2F7C68B9B890A042810A5210A5080252100E094842129085021 + 4A10A5085284294842810A5210A50850842810A50852842810A042810A50D102 + 14A10A508502140852868810A042810A042942140852885A94585289084A2C28 + 2421003420B0A042942141214A3FFFD3F7E6CAA2EC81B7B504D9053A22A2228D + 1036413640D903DD40D914F7510D914DB5441036D514DB9D10DBF6A29B7372A2 + 1B7ED4536F6221B73206DED45364436453644364536E640D910D91536D505DB4 + ED40D910DB440D90364542886DCCAAAEDCEA06C8E27BBCE8A185041A2AA6CA0B + B73A227BA83FFFD9} + end + object Bevel1: TBevel + Left = 0 + Top = 100 + Width = 367 + Height = 6 + Align = alTop + Shape = bsTopLine + end + object JvAnimate1: TJvAnimate + Left = 16 + Top = 118 + Width = 16 + Height = 16 + CommonAVI = aviFindComputer + StopFrame = 8 + end + object Button1: TButton + Left = 276 + Top = 287 + Width = 75 + Height = 25 + Caption = 'Cerrar' + Enabled = False + TabOrder = 1 + OnClick = Button1Click + end + object ListView1: TListView + Left = 16 + Top = 144 + Width = 335 + Height = 129 + Columns = < + item + Caption = 'Hora' + Width = 75 + end + item + Caption = 'Mensaje' + Width = 255 + end> + ReadOnly = True + RowSelect = True + SmallImages = ImageList1 + TabOrder = 2 + ViewStyle = vsReport + end + object TimerCuentaAtrasCerrar: TTimer + Enabled = False + OnTimer = TimerCuentaAtrasCerrarTimer + Left = 16 + Top = 288 + end + object TimerCuentaAtrasCargar: TTimer + Enabled = False + Interval = 10 + OnTimer = TimerCuentaAtrasCargarTimer + Left = 56 + Top = 288 + end + object XPManifest1: TXPManifest + Left = 96 + Top = 288 + end + object ImageList1: TImageList + Left = 144 + Top = 288 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF00FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008599CD00102890008B99CA00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000007088E0001048FF0010289000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000E1E7E0009EC39500B0DCAD00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000ADB9DD007088E000ABB5D800000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000709F5E003F81200065B25900CEE4CC000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000092A0CA0000000000000000000000 + 0000000000000000000000000000000000000000000000000000D8E0D4005999 + 3B0065CD50005CC7400042AA300083C87A00E0E6DF0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000004050B00000000000000000000000 + 00000000000000000000000000000000000000000000D8E0D4005094300065CD + 500079EA600082E077006AD0600057B24700A2C7990000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000929CC3000038F000848EAE00000000000000 + 000000000000000000000000000000000000000000004F9D3B006AD9500079EA + 6000A3ED9600D9E7D8009DED8E006AD060004CAE3B00D5DED200000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000002040C0000038F0000E339500000000000000 + 00000000000000000000000000000000000000000000AAEB9B00A7EC900090ED + 87000000000000000000E3E9E10097E28E006AD0600059A24700D1EAC2000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000A7B1D8005070E0000040FF000030D000BFC3CE000000 + 00000000000000000000000000000000000000000000E1EDDD00CAEBC3000000 + 0000000000000000000000000000E3E9E10082E0770065CD50005EB35900D5EA + CD00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000007688CB005078E0001048FF000040F0007581A5000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000E3E9E10082E077004CBE400085C1 + 7700D5EACD000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000005068D0007090FF001050FF001040F0000E33A4000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000E3EAE10089E07F004CBE + 400094D08600D8E5D30000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000006078D0008098FF003060FF001050FF001D43C3000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000E3EAE100B0ED + A10064BE5000C7DFC30000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000007088E00090A8F00080A0FF006080F0003955A9000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000E4EB + E200CBEAC10096CF8A0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000D4D8E3007088E0006078D0005068D000D6DBE8000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF00FFFFFFFF00000000FFFFFFFF00000000 + FE3FFFFF00000000FE3FF1FF00000000FE3FF0FF00000000FF7FC07F00000000 + FF7F807F00000000FE3F803F00000000FE3F8C1F00000000FC1F9E0F00000000 + FC1FFF0700000000FC1FFF8300000000FC1FFFC300000000FC1FFFE300000000 + FC1FFFFF00000000FFFFFFFF00000000} + end +end diff --git a/2.1.0/Source/CargaEDI/uCargaEDI.pas b/2.1.0/Source/CargaEDI/uCargaEDI.pas new file mode 100644 index 0000000..748bddb --- /dev/null +++ b/2.1.0/Source/CargaEDI/uCargaEDI.pas @@ -0,0 +1,163 @@ +unit uCargaEDI; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ExtCtrls, jpeg, ComCtrls, StdCtrls, JvExComCtrls, JvAnimate, + pngimage, XPMan, ImgList; + +type + TIconoEstado = (ieOK, ieMAL, ieNada); + + TfCargaEDI = class(TForm) + Label13: TLabel; + JvAnimate1: TJvAnimate; + Button1: TButton; + TimerCuentaAtrasCerrar: TTimer; + ListView1: TListView; + Image1: TImage; + Bevel1: TBevel; + TimerCuentaAtrasCargar: TTimer; + XPManifest1: TXPManifest; + ImageList1: TImageList; + procedure FormShow(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); + procedure FormCreate(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure TimerCuentaAtrasCerrarTimer(Sender: TObject); + procedure TimerCuentaAtrasCargarTimer(Sender: TObject); + private + FNumCargasError : Integer; + FNumCargasOK : Integer; + FCuentaAtras : Integer; + procedure OnLoadSuccess(Sender: TObject); + procedure OnLoadError(Sender : TObject); + procedure AnadirMensaje(const aMensaje : String; Icono : TIconoEstado = ieNada); + procedure LanzarCargas; + public + { Public declarations } + end; + +var + fCargaEDI: TfCargaEDI; + +implementation + +{$R *.dfm} + +uses + uCargarFicheros, uDataModuleBase; + +procedure TfCargaEDI.FormShow(Sender: TObject); +begin + FNumCargasOK := 0; + FNumCargasError := 0; + TimerCuentaAtrasCargar.Enabled := True; +end; + +procedure TfCargaEDI.OnLoadError(Sender: TObject); +begin + Beep; + AnadirMensaje((Sender as TCargarFicherosThread).Nombre + ': ' + (Sender as TCargarFicherosThread).ErrorText, ieMAL); + + FNumCargasError := FNumCargasError + 1; + if (FNumCargasError = 2) or + ((FNumCargasError = 1) and (FNumCargasOK = 1)) then + begin + JvAnimate1.Visible := False; + JvAnimate1.Active := False; + TimerCuentaAtrasCerrar.Enabled := True; + end; +end; + +procedure TfCargaEDI.OnLoadSuccess(Sender: TObject); +begin + Beep; + AnadirMensaje((Sender as TCargarFicherosThread).Nombre + ': Ficheros cargados', ieOK); + + FNumCargasOK := FNumCargasOK + 1; + if (FNumCargasOK = 2) or + ((FNumCargasError = 1) and (FNumCargasOK = 1)) then + begin + JvAnimate1.Visible := False; + JvAnimate1.Active := False; + TimerCuentaAtrasCerrar.Enabled := True; + end; +end; + +procedure TfCargaEDI.FormClose(Sender: TObject; var Action: TCloseAction); +begin + Action := caFree; +end; + +procedure TfCargaEDI.FormCreate(Sender: TObject); +begin + FCuentaAtras := 5; + FNumCargasError := 0; + FNumCargasOK := 0; +end; + +procedure TfCargaEDI.Button1Click(Sender: TObject); +begin + Close; +end; + +procedure TfCargaEDI.AnadirMensaje(const aMensaje: String; + Icono : TIconoEstado = ieNada); +var + AItem : TListItem; +begin + AItem := ListView1.Items.Add; + case Icono of + ieOK : AItem.ImageIndex := 1; + ieMAL : AItem.ImageIndex := 0; + else + AItem.ImageIndex := -1; + end; + AItem.Caption := TimeToStr(Now); + AItem.SubItems.Add(aMensaje); +end; + +procedure TfCargaEDI.LanzarCargas; +begin + if not dmBase.HayConexion then + begin + JvAnimate1.Visible := False; + JvAnimate1.Active := False; + AnadirMensaje('No se encuentra el servidor', ieMAL); + TimerCuentaAtrasCerrar.Enabled := True; + end + else begin + JvAnimate1.Active := True; + AnadirMensaje('Cargando ficheros de ventas'); + TCargarVentasThread.Create('CABVEN.TXT', 'LUGVEN.TXT', + 'ARTVEN.TXT', OnLoadSuccess, OnLoadError); + + AnadirMensaje('Cargando ficheros de inventario'); + TCargarInventarioThread.Create('CABINV.TXT', 'LININV.TXT', + 'CANTINV.TXT', OnLoadSuccess, OnLoadError); + end; +end; + +procedure TfCargaEDI.TimerCuentaAtrasCerrarTimer(Sender: TObject); +begin + Button1.Enabled := True; + TimerCuentaAtrasCerrar.Enabled := False; + if FCuentaAtras = 0 then + Close; + Button1.Caption := 'Cerrar (' + IntToStr(FCuentaAtras) + ')'; + Update; + Application.ProcessMessages; + FCuentaAtras := FCuentaAtras - 1; + TimerCuentaAtrasCerrar.Enabled := True; +end; + +procedure TfCargaEDI.TimerCuentaAtrasCargarTimer(Sender: TObject); +begin + TimerCuentaAtrasCargar.Enabled := False; + Update; + LanzarCargas; +end; + +end. diff --git a/2.1.0/Source/ClearFiles.msbuild b/2.1.0/Source/ClearFiles.msbuild new file mode 100644 index 0000000..30f4b9d --- /dev/null +++ b/2.1.0/Source/ClearFiles.msbuild @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2.1.0/Source/Cliente/AdminPV.cfg b/2.1.0/Source/Cliente/AdminPV.cfg new file mode 100644 index 0000000..e4b793b --- /dev/null +++ b/2.1.0/Source/Cliente/AdminPV.cfg @@ -0,0 +1,46 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Output\Cliente" +-N".\" +-LE"..\Lib" +-LN"..\Lib" +-U"..\Lib" +-O"..\Lib" +-I"..\Lib" +-R"..\Lib" +-LUBaseD7;Configuracion;ControlesBaseD7;Usuarios;FicherosEDI;VentasProceso;VentasTerminadas;ReferenciaGenerica +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Cliente/AdminPV.dof b/2.1.0/Source/Cliente/AdminPV.dof new file mode 100644 index 0000000..105bdb6 --- /dev/null +++ b/2.1.0/Source/Cliente/AdminPV.dof @@ -0,0 +1,480 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir=..\..\Output\Cliente +UnitOutputDir=.\ +PackageDLLOutputDir=..\Lib +PackageDCPOutputDir=..\Lib +SearchPath=..\Lib +Packages=BaseD7;Configuracion;ControlesBaseD7;Usuarios;FicherosEDI;VentasProceso;VentasTerminadas;ReferenciaGenerica +Conditionals= +DebugSourceDirs= +UsePackages=1 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=1 +Release=1 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName=Rodax Software S.L. +FileDescription= +FileVersion=1.1.1.0 +InternalName=Administración de puntos de venta +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName=Administración de puntos de venta +ProductVersion=1.0.6 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=3 +Item0=..\Lib +Item1=..\Lib;..\Base +Item2=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Cliente +Item1=..\..\Output\Servidor +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=0 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Cliente/AdminPV.dpr b/2.1.0/Source/Cliente/AdminPV.dpr new file mode 100644 index 0000000..d4006f3 --- /dev/null +++ b/2.1.0/Source/Cliente/AdminPV.dpr @@ -0,0 +1,23 @@ +program AdminPV; + +uses + Forms, + uLoginForm, + uPantallaPrincipal in 'uPantallaPrincipal.pas' {fPantallaPrincipal}, + uMenuUtils in 'uMenuUtils.pas', + uSplash in 'uSplash.pas' {SplashScreen}, + uAcercaDe in 'uAcercaDe.pas' {fAcercaDe}, + uIntegerList in '..\Base\uIntegerList.pas'; + +{$R *.res} + +begin + Application.Initialize; + + Application.Title := 'Administración de puntos de venta'; + Application.CreateForm(TfPantallaPrincipal, fPantallaPrincipal); + Application.MainFormOnTaskBar := True; + Application.Run; + Application.Terminate; +end. + diff --git a/2.1.0/Source/Cliente/AdminPV.dproj b/2.1.0/Source/Cliente/AdminPV.dproj new file mode 100644 index 0000000..b070396 --- /dev/null +++ b/2.1.0/Source/Cliente/AdminPV.dproj @@ -0,0 +1,556 @@ + + + + {c1d52109-a098-45a1-97ed-37902144cf8a} + AdminPV.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Cliente\AdminPV.exe + true + BaseD10;Configuracion;ControlesBaseD10;Usuarios;FicherosEDI;VentasProceso;VentasTerminadas;ReferenciaGenerica + + + 7.0 + False + False + 0 + RELEASE + ..\..\Output\Release\Cliente + .\ + .\ + .\ + ..\Lib + ..\Lib + ..\Lib + ..\Lib + + + 7.0 + DEBUG; + ..\..\Output\Debug\Cliente + .\ + .\ + .\ + ..\Lib + ..\Lib + ..\Lib + ..\Lib + 3 + + + Delphi.Personality + VCLApplication + + FalseTrueFalseTrueFalse2100FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.1.0.0Administración de puntos de ventaAdministración de puntos de venta1.0.0.0 + viernes, 05 de octubre de 2007 17:13 + + 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 + AdminPV.dpr + + + + + MainSource + + + +
fAcercaDe
+
+ + +
fPantallaPrincipal
+
+ +
SplashScreen
+
+
+
+ diff --git a/2.1.0/Source/Cliente/AdminPV.drc b/2.1.0/Source/Cliente/AdminPV.drc new file mode 100644 index 0000000..68efa45 --- /dev/null +++ b/2.1.0/Source/Cliente/AdminPV.drc @@ -0,0 +1,22 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\WindowsXP.res */ +/* C:\Varela_D2007\Lib\JVCL\JvXPCore.res */ +/* C:\Varela_D2007\Lib\JVCL\JvXPBar.res */ +/* C:\Varela_D2007\Source\Cliente\uSplash.dfm */ +/* C:\Varela_D2007\Source\Cliente\uAcercaDe.dfm */ +/* C:\Varela_D2007\Source\Cliente\uPantallaPrincipal.dfm */ +/* C:\Varela_D2007\Source\Cliente\AdminPV.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf24.tmp */ diff --git a/2.1.0/Source/Cliente/AdminPV.identcache b/2.1.0/Source/Cliente/AdminPV.identcache new file mode 100644 index 0000000..bef3627 Binary files /dev/null and b/2.1.0/Source/Cliente/AdminPV.identcache differ diff --git a/2.1.0/Source/Cliente/AdminPV.rc b/2.1.0/Source/Cliente/AdminPV.rc new file mode 100644 index 0000000..afcfcb5 --- /dev/null +++ b/2.1.0/Source/Cliente/AdminPV.rc @@ -0,0 +1,27 @@ +MAINICON ICON "C:\Varela_D2007\Resources\Iconos\Cliente.ico" +1 VERSIONINFO +FILEVERSION 2,1,0,0 +PRODUCTVERSION 2,1,0,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.1.0.0\0" + VALUE "InternalName", "Administración de puntos de venta\0" + VALUE "ProductName", "Administración de puntos de venta\0" + VALUE "ProductVersion", "1.0.0.0\0" + VALUE "CompileDate", "lunes, 08 de octubre de 2007 12:43\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Cliente/AdminPV.res b/2.1.0/Source/Cliente/AdminPV.res new file mode 100644 index 0000000..bef3f48 Binary files /dev/null and b/2.1.0/Source/Cliente/AdminPV.res differ diff --git a/2.1.0/Source/Cliente/uAcercaDe.dfm b/2.1.0/Source/Cliente/uAcercaDe.dfm new file mode 100644 index 0000000..f4ef396 --- /dev/null +++ b/2.1.0/Source/Cliente/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/2.1.0/Source/Cliente/uAcercaDe.pas b/2.1.0/Source/Cliente/uAcercaDe.pas new file mode 100644 index 0000000..693ee22 --- /dev/null +++ b/2.1.0/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; + Image1: TImage; + Bevel1: TBevel; + bAceptar: TButton; + memModulos: TMemo; + 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 + ' - Versión ' + 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 DISEÑO S.L.'); + end; + finally + FreeAndNil(Obj); + end; + + if Assigned(FHostManager) then + begin + memModulos.Lines.Add(''); + memModulos.Lines.Add(''); + memModulos.Lines.Add('Módulos 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/2.1.0/Source/Cliente/uMenuUtils.pas b/2.1.0/Source/Cliente/uMenuUtils.pas new file mode 100644 index 0000000..8333cce --- /dev/null +++ b/2.1.0/Source/Cliente/uMenuUtils.pas @@ -0,0 +1,263 @@ +unit uMenuUtils; + +interface + +uses + Forms, ImgList, ActnList, JvPageList, JvNavigationPane, Menus, + Controls; + + +procedure MergeMenus(Source, Dest: TMainMenu; ImageIndex : Integer = -1); +procedure SortMenuByTag(Menu : TMainMenu); + +function CreatePageNavPane(const APageList : TJvCustomPageList; + ACaption : String; AAction : TAction; AImageIndex : Integer): Integer; + +procedure PopulateNavPagePane(APanePage : TJvNavPanelPage; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); overload; + +function getSubMenu(Const pMenu: TMainMenu; Const pCaption: String): TMenuItem; +procedure copiarItemsMenu(MenuDestino: TMenuItem; pMenu: TMenuItem); + +procedure PopulateNavPagePane(AParentControl : TWinControl; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); overload; + + + + + +implementation + +uses + ComCtrls, Classes, Math, TBXDkPanels, StrUtils, SysUtils, + ExtCtrls, Graphics; + +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 CreatePageNavPane(const APageList : TJvCustomPageList; + 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; + +procedure PopulateNavPagePane(APanePage : TJvNavPanelPage; + AMenuItem: TMenuItem; AImageList : TCustomImageList; + AStyleManager : TJvNavPaneStyleManager); +var + APanel : TScrollBox; + ItemIndex : Integer; +begin + with TJvNavPanelDivider.Create(APanePage) do + begin + Caption := AMenuItem.Caption; + Parent := APanePage; + Top := 100; + Align := alTop; + Enabled := false; + Cursor := crDefault; + end; + + APanel := TScrollBox.Create(APanePage); + with APanel do + begin + Top := 200; + Align := alTop; + Font.Style := []; + BorderStyle := bsNone; + Parent := APanePage; + BevelEdges := []; + BorderStyle := bsNone; + //ParentColor := True; + ParentFont := True; + Color := clRed; + end; + + for ItemIndex := 0 to (AMenuItem.Count - 1) do + begin + if AMenuItem[ItemIndex].Caption <> '-' then + with TTBXLink.Create(Application) do + begin + Parent := APanePage; + Align := alTop; + Tag := AMenuItem[ItemIndex].Tag; + Caption := AMenuItem[ItemIndex].Caption; + Action := AMenuItem[ItemIndex].Action; + Images := AImageList; + ImageIndex := AMenuItem[ItemIndex].ImageIndex; + {if ItemIndex = 0 then + Margins.Top := 20 + else + Margins.Top := 14; + Margins.Bottom := 14; + Margins.Left := 10; + Margins.Right := 10;} + //Invalidate; + end; + end; +end; + +function getSubMenu(const pMenu: TMainMenu; const pCaption: String): TMenuItem; +var + i: Integer; +begin + i:=0; + while ((i < pMenu.Items.Count) and (StringReplace(pMenu.Items[i].Caption,'&','',[]) <> pCaption)) do + inc(i); + Result := pMenu.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; + +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 AMenuItem[ItemIndex].Caption <> '-' 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 := 8; + Margins.Bottom := 8; + Margins.Left := 10; + Margins.Right := 10; + Height := 18; + Invalidate; + AHeight := AHeight + Margins.Top + Margins.Bottom + Height; + end; + end; + AParentControl.Height := AHeight; + AParentControl.Invalidate; +end; + + +end. + diff --git a/2.1.0/Source/Cliente/uPantallaPrincipal.ddp b/2.1.0/Source/Cliente/uPantallaPrincipal.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Cliente/uPantallaPrincipal.ddp differ diff --git a/2.1.0/Source/Cliente/uPantallaPrincipal.dfm b/2.1.0/Source/Cliente/uPantallaPrincipal.dfm new file mode 100644 index 0000000..7f7fe90 --- /dev/null +++ b/2.1.0/Source/Cliente/uPantallaPrincipal.dfm @@ -0,0 +1,441 @@ +object fPantallaPrincipal: TfPantallaPrincipal + Left = 358 + Top = 250 + Caption = 'Pantalla principal' + ClientHeight = 599 + ClientWidth = 771 + 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 + OnCreate = FormCreate + OnDestroy = FormDestroy + PixelsPerInch = 96 + TextHeight = 13 + object pnlContenido: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 771 + Height = 580 + Margins.Left = 5 + Margins.Top = 5 + Margins.Right = 5 + Margins.Bottom = 5 + ParentColor = True + Align = alClient + TabOrder = 0 + object JvSyncSplitter1: TJvSyncSplitter + Left = 210 + Top = 5 + Width = 5 + Height = 570 + ResizeStyle = rsPattern + end + object JvNavigationPane: TJvNavigationPane + Left = 5 + Top = 5 + Width = 205 + Height = 570 + 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 = 0 + 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 + object pagInicio: TJvNavPanelPage + Left = 0 + Top = 0 + Width = 203 + Height = 497 + Background.Stretch = False + Background.Proportional = False + Background.Center = False + Background.Tile = False + Background.Transparent = False + Caption = 'Men'#250' principal' + Iconic = True + ImageIndex = 0 + end + end + object pnlBorde: TJvXPContainer + Left = 215 + Top = 5 + Width = 551 + Height = 570 + BoundColor = clActiveCaption + BoundLines = [blLeft, blTop, blRight, blBottom] + Caption = 'pnlBorde' + Align = alClient + object pnlMain: TTBXAlignmentPanel + Left = 1 + Top = 1 + Width = 549 + Height = 568 + Align = alClient + Color = clWindow + TabOrder = 0 + object lblBienvenido: TLabel + Left = 8 + Top = 8 + Width = 210 + Height = 54 + 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 + 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 + end + end + end + end + object StatusBar: TStatusBar + Left = 0 + Top = 580 + Width = 771 + Height = 19 + Panels = <> + end + object XPManifest1: TXPManifest + Left = 248 + Top = 48 + end + object GeneralActionList: TActionList + Left = 248 + Top = 149 + object actSalir: TAction + Category = 'Archivo' + Caption = '&Salir' + OnExecute = actSalirExecute + end + object actLogin: TAction + Category = 'Archivo' + Caption = 'Login' + OnExecute = actLoginExecute + end + object actAdministracion: TAction + Category = 'Archivo' + Caption = 'Panel de administraci'#243'n' + end + object actCambiarPass: TAction + Category = 'Archivo' + Caption = 'Cambiar mi contrase'#241'a' + Enabled = False + OnExecute = actCambiarPassExecute + end + object actConexion: TAction + Category = 'Archivo' + Caption = 'Configurar conexi'#243'n' + OnExecute = actConexionExecute + end + object actAcerca: TAction + Caption = 'Acerca de...' + OnExecute = actAcercaExecute + 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 = 43 + Top = 493 + Bitmap = {} + end + object ModulesActionList: TActionList + Left = 11 + Top = 492 + 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 = 75 + Top = 493 + Bitmap = {} + end + object HostManager: THostManager + OnAfterLoad = HostManagerAfterLoad + Left = 276 + 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 = 176 + Top = 504 + end + object JvFormStorage: TJvFormStorage + AppStorage = JvAppRegistryStorage + AppStoragePath = 'fPantallaPrincipal\' + VersionCheck = fpvcNocheck + 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 + OnActionExecute = ApplicationEventsActionExecute + Left = 248 + Top = 190 + 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: TMenuItem + Tag = -9000 + Caption = 'Archivo' + object Cambiarmicontrasea2: TMenuItem + Tag = 1 + Action = actCambiarPass + end + object N3: TMenuItem + Tag = 2 + Caption = '-' + end + object Configurarconexin2: TMenuItem + Tag = 3 + Action = actConexion + end + object Paneldeadministracin2: TMenuItem + Tag = 4 + Action = actAdministracion + Visible = False + end + object N4: TMenuItem + Tag = 5 + Caption = '-' + end + object Salir2: TMenuItem + Tag = 6 + Action = actSalir + end + end + object Ayuda2: TMenuItem + Tag = 10000 + Caption = 'Ayuda' + object Acercade2: TMenuItem + Action = actAcerca + end + end + end + object JvXPMenuItemPainter1: TJvXPMenuItemPainter + SelectionFrameBrush.Color = 13811126 + SelectionFramePen.Color = 6956042 + Left = 424 + Top = 256 + end +end diff --git a/2.1.0/Source/Cliente/uPantallaPrincipal.pas b/2.1.0/Source/Cliente/uPantallaPrincipal.pas new file mode 100644 index 0000000..4408715 --- /dev/null +++ b/2.1.0/Source/Cliente/uPantallaPrincipal.pas @@ -0,0 +1,569 @@ + +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; + +type + TfPantallaPrincipal = class(TForm, IHostForm) + GeneralActionList: TActionList; + ModulesSmallImageList: TPngImageList; + XPManifest1: TXPManifest; + actSalir: TAction; + ModulesActionList: TActionList; + ModulesLargeImageList: TPngImageList; + pnlContenido: TTBXAlignmentPanel; + JvNavigationPane: TJvNavigationPane; + pnlMain: TTBXAlignmentPanel; + JvSyncSplitter1: TJvSyncSplitter; + StatusBar: TStatusBar; + HostManager: THostManager; + actLogin: TAction; + pagInicio: TJvNavPanelPage; + StyleManagerButtons: TJvNavPaneStyleManager; + JvFormStorage: TJvFormStorage; + JvAppRegistryStorage: TJvAppRegistryStorage; + actAdministracion: TAction; + ApplicationEvents: TApplicationEvents; + actCambiarPass: TAction; + actConexion: TAction; + actAcerca: TAction; + pnlBorde: TJvXPContainer; + HostMenu: TJvMainMenu; + JvXPMenuItemPainter1: TJvXPMenuItemPainter; + Archivo2: TMenuItem; + Ayuda2: TMenuItem; + Cambiarmicontrasea2: TMenuItem; + N3: TMenuItem; + Configurarconexin2: TMenuItem; + Paneldeadministracin2: TMenuItem; + N4: TMenuItem; + Salir2: TMenuItem; + Acercade2: TMenuItem; + lblBienvenido: TLabel; + Label22: TLabel; + 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 ApplicationEventsActionExecute(Action: TBasicAction; + var Handled: Boolean); + procedure actCambiarPassExecute(Sender: TObject); + procedure actAcercaExecute(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure actConexionExecute(Sender: TObject); + private + FContenido : TCustomEditor; + FStartDefaultAction : TBasicAction; + + procedure ShowEmbedded(AEditor : ICustomEditor); + procedure AplicarPerfil; + function FindNavPanePage(ACaption : String) : Integer; + procedure InitializeUI; + procedure OnThemeChange(Sender: TObject); + procedure CopyImages(const SrcList: TPngImageList; var DstList: TPngImageList; + out Index, Count: Integer); + procedure RegisterModule(AModuleInfo : TModuleInfo); + procedure ExecuteActionMenu(Sender : TObject); + protected + function GetWorkPanel : TWinControl; + public + function IsShortcut(var Message: TWMKey): Boolean; override; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + property WorkPanel : TWinControl read GetWorkPanel; + constructor Create(AOwner: TComponent); override; + end; + +var + fPantallaPrincipal: TfPantallaPrincipal; + +implementation + +uses + PNGImage, uModuleController, uDataModuleBase, Math, uMenuUtils, + uPanelControl, uDataModuleUsuarios, uSplash, uAcercaDe, + uViewBase,UxTheme, Themes; + + +{$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.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 TfPantallaPrincipal.FormCreate(Sender: TObject); +begin + 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) + '\'; + MainForm := Self; + end; + + actLogin.Execute; +end; + +procedure TfPantallaPrincipal.FormDestroy(Sender: TObject); +begin + HostManager.UnloadModules; +end; + +procedure TfPantallaPrincipal.HostManagerAfterLoad(Sender: TObject; + AModuleInfo: TModuleInfo); +begin + RegisterModule(AModuleInfo); +end; + +procedure TfPantallaPrincipal.RegisterModule(AModuleInfo : TModuleInfo); +var + AModule: TModuleController; + AModuleMenu : TMainMenu; + AIndex: Integer; + ACount: Integer; +begin + AModule := AModuleInfo.Module; + SplashScreen.Texto := 'Cargando ''' + AModule.ModuleName + '''...'; + + CopyImages(TPngImageList(AModule.SmallImages), TPngImageList(ModulesSmallImageList), AIndex, ACount); + CopyImages(TPngImageList(AModule.LargeImages), TPngImageList(ModulesLargeImageList), AIndex, ACount); + + if Assigned(AModule.ModuleMenu) then + begin + AModuleMenu := AModule.ModuleMenu; + MergeMenus(AModuleMenu, Self.Menu, AIndex); + end; +end; + +procedure TfPantallaPrincipal.Salir1Click(Sender: TObject); +begin + Close; +end; + +procedure TfPantallaPrincipal.actSalirExecute(Sender: TObject); +begin + Close; +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.GetWorkPanel: TWinControl; +begin + Result := pnlMain; +end; + +procedure TfPantallaPrincipal.InitializeUI; + + function EsUnModulo(AMenuItem : TMenuItem) : Boolean; + begin + Result := (AMenuItem.Tag >= 0) and (AMenuItem.Tag < 9000) + end; + +var + i : Integer; + AMenuItem : TMenuItem; + APageIndex : Integer; + AStringList : TStringList; + APanel : TScrollBox; +begin + SortMenuByTag(Menu); + + AStringList := TStringList.Create; + AStringList.Duplicates := dupIgnore; + try + for i := 0 to Menu.Items.Count - 1 do + begin + AMenuItem := Menu.Items[i]; + if not EsUnModulo(AMenuItem) then + Continue; + + AStringList.Add(StringReplace(AMenuItem.Caption, '&', '', [])) + end; + + for i := 0 to AStringList.Count - 1 do + begin + with TJvNavPanelDivider.Create(Self) do + begin + Parent := pagInicio; + Top := 100 * i; + Align := alTop; + Caption := AStringList[i]; + ParentFont := True; + if i = 0 then + begin + Enabled := false; + Cursor := crDefault; + end + else + Cursor := crSizeNS; + end; + + APanel := TScrollBox.Create(Self); + with APanel do + begin + Parent := pagInicio; + Top := 101 * i; + if i = AStringList.Count - 1 then + Align := alClient + else + Align := alTop; + BorderStyle := bsNone; + end; + AStringList.Objects[i] := APanel; + end; + + for i := 0 to Menu.Items.Count - 1 do + begin + AMenuItem := Menu.Items[i]; + if not EsUnModulo(AMenuItem) then + Continue; + + if not Assigned(FStartDefaultAction) then + FStartDefaultAction := AMenuItem[0].Action; + + APageIndex := AStringList.IndexOf(StringReplace(AMenuItem.Caption, '&', '', [])); + PopulateNavPagePane(TScrollBox(AStringList.Objects[APageIndex]), AMenuItem, ModulesLargeImageList, StyleManagerButtons); + + // Elimino la imagen que tiene el menú porque queda feo. + AMenuItem.ImageIndex := -1; + end; + finally + AStringList.Free; + end; + + ApplicationEvents.OnActionExecute := ApplicationEventsActionExecute; +end; + + +{ var + i : Integer; + AMenuItem : TMenuItem; + APageIndex : Integer; +begin + SortMenuByTag(Menu); + + for i := 0 to Menu.Items.Count - 1 do + begin + AMenuItem := Menu.Items[i]; + if not EsUnModulo(AMenuItem) then + Continue; + + if Pos('Ficheros', AMenuItem.Caption) > 0 then + PopulateNavPagePane(pnlEDI, AMenuItem, ModulesLargeImageList, StyleManagerButtons); + + if Pos('Inventario', AMenuItem.Caption) > 0 then + PopulateNavPagePane(pnlInventario, AMenuItem, ModulesLargeImageList, StyleManagerButtons); + + if Pos('Ventas', AMenuItem.Caption) > 0 then + PopulateNavPagePane(pnlVentas, AMenuItem, ModulesLargeImageList, StyleManagerButtons); + + if Pos('Stock', AMenuItem.Caption) > 0 then + PopulateNavPagePane(pnlStock, AMenuItem, ModulesLargeImageList, StyleManagerButtons); + + // Elimino la imagen que tiene el menú porque queda feo. + AMenuItem.ImageIndex := -1; + end; + JvNavigationPane.ActivePage := pagInicio; + ApplicationEvents.OnActionExecute := ApplicationEventsActionExecute; +end;} + + +procedure TfPantallaPrincipal.actLoginExecute(Sender: TObject); +begin + HostManager.UnloadModules; + + if dmUsuarios.Login then + begin + ShowHourglassCursor; + SplashScreen.Update; + Application.ProcessMessages; + try + HostManager.LoadModule('FicherosEDI.bpl'); + HostManager.LoadModule('VentasTerminadas.bpl'); + HostManager.LoadModule('VentasProceso.bpl'); + HostManager.LoadModule('ReferenciaGenerica.bpl'); + HostManager.LoadModule('Recepciones.bpl'); + HostManager.LoadModule('Devoluciones.bpl'); + HostManager.LoadModule('Traspasos.bpl'); + HostManager.LoadModule('Stock.bpl'); + + InitializeUI; + Application.ProcessMessages; + Visible := True; + AplicarPerfil; + finally + SplashScreen.Update; + SplashScreen.Hide; + SplashScreen.Free; + HideHourglassCursor; + end; + end + else + Application.Terminate; +end; + +function TfPantallaPrincipal.FindNavPanePage(ACaption: String): Integer; +var + i : integer; +begin + Result := -1; + for i := 0 to JvNavigationPane.PageCount - 1 do + if JvNavigationPane.NavPages[i].Caption = ACaption then + begin + Result := i; + break; + end; +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 + actAdministracion.Visible := dmUsuarios.EsAdmin; +end; + +procedure TfPantallaPrincipal.ApplicationEventsActionExecute( + Action: TBasicAction; var Handled: Boolean); +var + APageIndex : Integer; +begin + if (Action is TAction) then + begin + APageIndex := FindNavPanePage((Action as TAction).Category); + if APageIndex > 0 then + JvNavigationPane.ActivePageIndex := APageIndex; + end; +end; + +procedure TfPantallaPrincipal.OnWorkPanelChanged(AEditor: ICustomEditor); +begin + // +end; + +procedure TfPantallaPrincipal.ShowEmbedded(AEditor: ICustomEditor); +begin + ShowHourglassCursor; + LockWindowUpdate(Handle); + try + if Assigned(FContenido) then + FContenido.Release; + + 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; + +constructor TfPantallaPrincipal.Create(AOwner: TComponent); +begin + inherited; + FContenido := NIL; +end; + +procedure TfPantallaPrincipal.actCambiarPassExecute(Sender: TObject); +begin + dmUsuarios.CambiarPassword; +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.Button1Click(Sender: TObject); +var + i : integer; + AModule : TModuleInfo; +{ lCLG: TdxLayoutGroup; + lLI: TdxLayoutItem;} +begin + { + for i := 0 to HostManager.ModulesCount -1 do + begin + AModule := HostManager.Modules[i]; + if Supports(AModule.Module, IViewInicio, AVista) then + begin + Exit; + lLI := dxLayoutControl1.CreateItemForControl(Button2); + lLI.Caption := 'Hello World'; + lCLG := dxLayoutControl1.CreateGroup; + lCLG.Caption := 'Test this'; + lCLG.Parent := dxLayoutControl1.Items; + lLI.Parent := lCLG; + dxLayoutControl1.Customization := True; + end; + end; + } +end; + +{procedure TfPantallaPrincipal.JvPanel1Paint(Sender: TObject); +var + PS: PAINTSTRUCT; +begin + BeginPaint(JvPanel1.Canvas.Handle, PS); + ThemeServices.DrawElement(JvPanel1.Canvas.Handle, ThemeServices.GetElementDetails(tebExplorerBarDontCare), JvPanel1.BoundsRect); +// ThemeServices.DrawText(JvPanel1.Canvas.Handle, ThemeServices.GetElementDetails(tspUserPane), 'Hola', JvPanel1.Canvas.ClipRect, 0, 0); + EndPaint(JvPanel1.Canvas.Handle, PS); + +end; + +procedure TfPantallaPrincipal.JvPanel2Paint(Sender: TObject); +var + PS: PAINTSTRUCT; +begin + BeginPaint(JvPanel2.Canvas.Handle, PS); + ThemeServices.DrawElement(JvPanel2.Canvas.Handle, ThemeServices.GetElementDetails(tebExplorerBarDontCare), JvPanel2.BoundsRect); + EndPaint(JvPanel2.Canvas.Handle, PS); +end;} + +procedure TfPantallaPrincipal.actConexionExecute(Sender: TObject); +begin + dmBase.ConfigurarConexion; +end; + +end. diff --git a/2.1.0/Source/Cliente/uSplash.ddp b/2.1.0/Source/Cliente/uSplash.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Cliente/uSplash.ddp differ diff --git a/2.1.0/Source/Cliente/uSplash.dfm b/2.1.0/Source/Cliente/uSplash.dfm new file mode 100644 index 0000000..664f75c --- /dev/null +++ b/2.1.0/Source/Cliente/uSplash.dfm @@ -0,0 +1,935 @@ +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 = { + 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 +end diff --git a/2.1.0/Source/Cliente/uSplash.pas b/2.1.0/Source/Cliente/uSplash.pas new file mode 100644 index 0000000..7f951a8 --- /dev/null +++ b/2.1.0/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) + Image1: TImage; + Panel1: TPanel; + lblTexto: TLabel; + 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/2.1.0/Source/Configuracion/Configuracion.bdsproj b/2.1.0/Source/Configuracion/Configuracion.bdsproj new file mode 100644 index 0000000..3e6bdf5 --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + Configuracion.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;..\Base + 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/2.1.0/Source/Configuracion/Configuracion.cfg b/2.1.0/Source/Configuracion/Configuracion.cfg new file mode 100644 index 0000000..96c8d0b --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\Output\Cliente" +-LN"..\Lib" +-U"..\Lib" +-O"..\Lib" +-I"..\Lib" +-R"..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Configuracion/Configuracion.dof b/2.1.0/Source/Configuracion/Configuracion.dof new file mode 100644 index 0000000..38d0745 --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.dof @@ -0,0 +1,471 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\Output\Cliente +PackageDCPOutputDir=..\Lib +SearchPath=..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=1 +Item0=..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlBPLOutput] +Count=1 +Item0=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Configuracion/Configuracion.dpk b/2.1.0/Source/Configuracion/Configuracion.dpk new file mode 100644 index 0000000..122da4b --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.dpk @@ -0,0 +1,36 @@ +package Configuracion; + +{$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 ON} +{$DEFINE DEBUG} + +requires + JvGlobusD10R, + BaseD10, + Usuarios; + +contains + uPanelControl in 'uPanelControl.pas' {fPanelControl}; + +end. diff --git a/2.1.0/Source/Configuracion/Configuracion.dproj b/2.1.0/Source/Configuracion/Configuracion.dproj new file mode 100644 index 0000000..0b5d696 --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.dproj @@ -0,0 +1,561 @@ + + + {60c479d5-4a7e-4944-8c2c-759005f12e4e} + Configuracion.dpk + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Cliente\Configuracion.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0Configuracion.dpk + + + + + MainSource + + + + + +
fPanelControl
+
+
+
+ diff --git a/2.1.0/Source/Configuracion/Configuracion.drc b/2.1.0/Source/Configuracion/Configuracion.drc new file mode 100644 index 0000000..7d4fafa --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.drc @@ -0,0 +1,17 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Configuracion\uPanelControl.dfm */ +/* C:\Varela_D2007\Source\Configuracion\Configuracion.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf12.tmp */ diff --git a/2.1.0/Source/Configuracion/Configuracion.rc b/2.1.0/Source/Configuracion/Configuracion.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Configuracion/Configuracion.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Configuracion/Configuracion.res b/2.1.0/Source/Configuracion/Configuracion.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Configuracion/Configuracion.res differ diff --git a/2.1.0/Source/Configuracion/uPanelControl.dfm b/2.1.0/Source/Configuracion/uPanelControl.dfm new file mode 100644 index 0000000..f04e221 --- /dev/null +++ b/2.1.0/Source/Configuracion/uPanelControl.dfm @@ -0,0 +1,262 @@ +object fPanelControl: TfPanelControl + Left = 509 + Top = 252 + BorderStyle = bsDialog + Caption = 'Panel de control' + ClientHeight = 458 + ClientWidth = 547 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object TabControl1: TTabControl + Left = 8 + Top = 32 + Width = 531 + Height = 383 + TabOrder = 0 + object Image1: TImage + Left = 112 + Top = 153 + Width = 48 + Height = 48 + AutoSize = True + Center = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000003000 + 00003008060000005702F987000000097048597300004E2000004E2001167D99 + DE0000000467414D410000AA11B57D14DC000016574944415478DAD55909905D + 65993D777DF7EDAFFB75A75F77A73BE94EA7B3922640D8229000E228E2A810C6 + D21970CA65600A0B95D151B12CA56AC6711D75449D08E2308C25E04204044380 + B08728210964EB24DDE97D7FFB76F739FF7D0DA53599194B29A7A6BB6EDEED97 + F7EEFDCEFF9DEF7CE7FBAFE4FB3EFE3FFF489FDA14FB9D376AB68BF37AD3306D + 07B62B61AA5246425771622187DEA63464C58722C9A83A1E1C5FC24CB9865F1F + A9E2A9FDB7E0D8FEB1D7AFA37B212C5473B0BD3A5625CFC91C9F1A7C8BAAEB57 + C5A3EA65AEEDA5AAB53A4CCB8669DA56B658DD1B56DCDD0FBD3071FF8E3D5323 + F305B3A02812BC3F1580D15215E62070C527FA51C95519BC8167A513F8EE9537 + E264FE245644CFC4B1B1A367AB867E59321EDAEC395E47B55A8B589653AC5B76 + 315BA81C30646FCFCF9E1E7DF427CF4D552DC76D2C82AAE07FE3C71B06205506 + 2EFAF000CAB91A42BE8157B483E88926B1A1FDECD4E68E4B3E3C591BB94CD3B4 + 01DBB1DA3CD743A55A0FEE51B7EA28E7CDB2AABAA75E3E9E7DE2F068FEF9FB9F + 18BD37D312C6E86C0DAA2CFFDF00D82B1FC4DA64A2FBFCA5177FE0C215E77DCE + 540A90F8BD6C360FDBF650AE55797D0766D524080B2ECF991184C398BCE3C1E1 + BFBFE7B1530F329C82C62CFCC9005CF1A9F3313D340D9714684AB7616547EB07 + 3A52ED1FEB6E6B5F57732B107C28166A41B0E53A5F1970DDACA356B3613926DF + 77113764BC7434F7E4E3FBE6BEF9CCE1991D85B2F3060248A523B2EA87082042 + 001601B804902700AF4353313FE1E0AF3FFA3E8C9F1AC3C0597D57F57437DF01 + D55E02DD46ADC2403C1F96C99576F9370BD87318789D854C1A95AA161CDB84A2 + C9688E189898ADBEF2AD07063FB5E768F6976F088043B339B53FDDFC564966AC + B2DC5D73FC05C7536A53E5F2DEE1627D68B9A1E6C4CAC6DA9BB07ACD2AF4ACCA + 7C637947FA665592A051514CD3854F3A9B04E03A0E6A5C798759F408C6B52D14 + 2B7566C10E6248450D4C2ED471DF93A7BEF8D08BD39F091B0AA43F14C048B1D0 + A74ADE95692336100F1B67FA9E9B72E0B771F94B16E329D6CCC142DD9A9D2BD4 + F618927F60494FE6E9359BD6AEE85BDE7A4F6BD238DFB2C5CA2BF03C870990E1 + 7A366452C9F32CD4EA1646A60AC8E64DD8A4635C9758271E3A5B43BCB78F7DC7 + F283FFBE6BE486E313E5DDAC05FFF706B0B9AF0525A6B6603ACB9B42C6AD4BA2 + C6070D55439D1CB53C8F9FB1E1F0DC21254CCF0DA8319DCB63C1749E32DAD23F + 5C7FE6EAB665CB5357B7C6639B6C7ECE63B3140D53ACA2CDEF8A33C712C5EB62 + 78B2845CD541346460494267564C24221E2C167ABEEC54763C3F7DFBCE7D93DF + 4F84B513BF17009B12D796D4D19E8CAE5364F5E3ED91F8F5BA2A2BE2E685402D + 5C16B0C80E01B0584DDF85D089F97215147064251CECEAE90CAF3DA3A7BDAF2F + 13AB911A123F2F945D913DCCCD573093AF622A67419514446321649AA2686D8E + 41E7FF576B26F2A532E60A5514CA269E3C30B773E7DEE9DB1211EDB9D302F8FC + F989D7FF10AB6B92972D49B56763A6757B2214BB3C1ED29063D7142B5EE2EA79 + FC8CC884B378D4F879B23B904250B3A7160A404847DB8A0EACDDB0022AA1CB7C + BF6E5A906489AF4085D9ADF0356A44B072590A7D1D1134C7341459C83566636A + 3E8FD19912696C62F7FE99977FFCC4C86D9DE9C803A70570F5DAD78207564474 + C09595FE4CF2F31B3AD29F957C0D941CAE2CD5821410D41119A82D066F933A8E + 2732E10435E330D06CA50A9732EB8505882E34A56290149DAB5AE7FB0ADA5BE2 + 48C723E8688D435525240C9DB26C4358079BF40D28C7A2CE174DC40C1F3B9E1F + DBF7ED1D83FF38365BFDE96901BC777DA3BE4530195D436732766D6F3AF5839E + A6645450822212041B646791CF0E6963997690EE7916624556D884EC802A3258 + 1FB2CA552497BB9AD0BFBE0F3D7DCB6155AB0C983C6F89A09320BAF8EA4BA291 + 31D84A0D36AFE7F3FA826AE1900C876AD5DDAAE2C7BB4E1DFADC3D07BE7C7CBC + 7CF769016C63060C2173ACFACE78F88CB33AD2B726D4D0DBA2A150DC16011181 + 085A089CC51B8862F4791BCB114556439677ACB37D3A04A8570AF0F91D4F9131 + 3D5545BA2B89BE75FDB8E8D2B3900ECB813C96D879832B08BF435D71858CF2BB + 41F0C1E105B55225B0F62605F7EF1E7DF52BF71FFEDAD074F587A705F0E9F3D9 + F6E7EAE436707647F8BA8B97B6FF9BCE1585AF30685E8C00244AA0C6D762B506 + 93241EA6612BAB3AEAA11096F666B0B42B4D1551B0303987C1A3A3989ACA6276 + 1A68EF025ABB97E25D576FC1405F1BD46404A5991C41928EAC19DF6737A71279 + 92CFA6E604007C014005B36B519514FC64F7C8AB5FF9C9D1AF0F4F97EF3A2D80 + 8F6DD23156B18412627D53EC1BEB3A5A6E96C51F1EB9A3040A19644020344527 + E5B2CDB25EBD6414D1F6166C5CDB8535DD093485550C8DE771E0E0308E1E1EC1 + ECE414058105CBE3CD579C83CB2F3A031D4B9A30450082FBE27A815DF61938D3 + EB13841380F0C0B24085F682A28A1F3D7E6AF7F6474E7C6B62A1FEF3D302B861 + A32AB747756FA26C36F5B6A4B62F8B46AEB1B8CA362F20B4B3463DCEF1A225DE + 446A49C04824B07C450619518C6D0924A32124A21214822B525A84CB1C1B99C3 + E1C3C338F8EA28B24560CB25FD78E7951760E9D234E666732C5804B4118DCD77 + 1ACAD6381A148AD24E944C33C8CA8F9E38F9ABEFED18FA66F792F023A705F0B9 + 0B2354154111E5BC5448FF523C1EBBC4A57590984766122E3BA4472935351D4D + 9DAD4834A7B0BEBF0319A6376948C8E5CA34636C4A2C425217AD9938CA549CE1 + 9129EC78702F0E0FE6D1DF97C6BBB76DC14A02AF174ABC364BDD12E52A6A0AAF + 0370BD466F49475552C8C1F18979FCEBC327FFE5E117A7EF4C45B503A705F089 + F3C3140FCF9754E9E2A8E37D21D596DE12E9CC20DC46E749698C47427496A448 + 2282543C4C7FEE91024A507CA281598BBDC1E64A4A8C49D51566A1469562137A + EA20F6EC1D43737B1CDBDEBD152BFB32906A35961725D3F40231684CB46E2002 + 1EB32D64794932843233F9CC4B9373DF7C60F02BFB478AF74774E5D4E901B006 + C44528DD5BADB2755B5B4FFB9B969DBD0E7D1BFB2199353618035182100E5157 + 7DD1AA51AA54E863D81B44017AE26011DA0D35516859443662E1109E7AE62076 + EE3E02998D6DDB355BB176553BCD69A3A155095861C684AA79BED7B01B220B94 + E865CD2152AF86AFDD77E4B96F3F34F419C6F93C8FD3FA6AE9939BB4E0028A2C + 5F5E2EDA5FE8EECD5CB8E2CC95D874E13A68BC588C4EB0C27406F219D4363B6B + 70EE0537148D47FC78813FF240571D9834CAA4FFF473AFE2C5174F493A33F78E + 776CC6DA95EDBC261580D710122D80FB8B3EC9155E4948218B995D0587860BB9 + AFDE77ECAE3DC7725FE5E5A7F0DFFC481F3F2F2402A1DB51DE51CFD56F5DBABC + F5AC15037DD874F199882A2E79AE2257B602EDF6A84C422D84660B09B1C50DDD + C6C2088BECF03C440A95A9F56EDDF29F2480DFEC1B97E294CFABDE7E0156F5B7 + 43764D213954283B90B80600362E5EB0D900BA68E8F6EC99CC6F7FF8C46377ED + 9FB99397FE15FE871FE9660220FF92AAA2BCD72FD66F69CE2456C4326D388719 + 10DDB22915A5A9B2982141560ED992D06A916EC1600FB2F0425EE31032188BE9 + 28D1AC8D4FCEFB4F3D7B1043C35529950EE3C28B376260D512A4C27EB018B59A + 1B6442AC84A06144526916EB810A6D7FF2D4E11D7B27EE9A9DB0BECB0F54CEDD + 3180D1EDE3987974016A5C85436D16AD4AC8AF74F3B9BA28C2564996AFA3A1B9 + 29D5145F2EC51338EB82B558BFAC09AD6D49CCB371C9FC659D70D116012CDA63 + 910D9108C77302CB918A1BC8E52B183C3EEE3FBE7B3FF21C853576EA33CE5A8D + 0BD73763659B4C8228A83B4AD06B6485168275D1A684F0C2C9021E3B99C77D33 + 73476B2AEE9ED937FFC59537ADA2989858783287F9E70B50630A9CAA4B25E3BD + 05808F9CC361C34527DFB851F6BC0F6B7AB8354F59DC74DE1A5CB27935BABADB + 3039394F5749CDF61A0D4750C0271029B0150D8B215008695C928E62663E8BDD + CF1CF29F7D6602092AF25C4A81D2DD8D8B370CE092250976E13C72C571D24E86 + 41DF54F375E866180F64E7B0B33087D14E2FDBDDD97CD8CD9A2FDA47723F4BAD + 0DBF927DAA503A2D801B364A22884EAEE64DB2247F4095E5D6B9BC8D0D034BBD + 0B376F9056ADEAF4F3F33959D39446D105DD536A6462B198858C8A0A7728BB86 + A1616474162FEC3D82032FE7D1AE01C73A81B9EE0CCEE8BB147F965809C59945 + AD3444F7E94077A39865CF3D5628E3D78919D4977266EE52912887582F0ACCF1 + D21E98957B66764EDD9EDF57A5CD901A05FF1A800F0E70F164F47392FB242DED + 5FF1552F647DF4AC8860C379FD38F7ECD54143A32342A5CC6F885A20777DAFC1 + 6551C426BD4D9C0ED20881F42962DFFE51BC74F01466475D6408E0C03260A837 + 89AE8E4B717DD75558B6A415AD7109B3A52C3ADD4E0C5B59DC39B9033BB45D68 + ED4CA33915879ED3394B1BF0B2F469057B32FBEBB12FE75F99FB51A4233137BB + 6B0E92BE08E0FD0322382C65287F4B79BE810C6912438766C06C6E6EC1E60BD6 + 6867AC6995C37A0845BA4F5177AF495FA0E10420AA4193FD20432F1F19C7BE97 + 193C3B74983788578143CB81B14D6D30DB9AF1BEBE77E3EDEBB671EE1EE09C41 + D3562DE1F19947F1C3D2DD783AF72C5AAC36442B714A1C6BCEE4AC6069BC7618 + 7EB564D50BD9EF8EDD37F48FE563B5D9A08B7A41270ED428C2C0AE2788EF2C50 + 15E7788CCFE120E87CDF72D18A966BDED6DBD9BD2405ABC2262576D31C51078D + D9C0E0179BB89A39FAA023B345FCE2D963183E99635103AB09B6758614EA050E + 5ED489C1BE22DED57D05FEA6E323784BDF25F4F1C033D93DF8EAF12FE325E740 + E01F43D5088CB201C95620D77958061B5E08AA25CC5EAD36BDFBE84D33CFCEFC + 40A3DDB1E639AFAC69E700A10535B83424615BAB226D0B6986AAE412BE548DAA + 3DDDE9B60D17463A3BFA5518292137BCA827E4483430618B590B460DC74F5A18 + 3D0A4C1C65CF504AB0953A6ACD453A5807E3EB62280C6430BC620ABD910CB6BA + 17E1EAE6AB504DD6716FF95E3C30F1083BB88A1EA51FAEC902AD68541EDEC754 + 09A271AE3951363A36D5B9B1A199FDC76ECC3E5BDAE99329D299EB81FDAF2E76 + 05A6E59248DBD67546C75BDF145B737DD450933473FA7C6A5A72FB7348AEB210 + 710DA4690D4411AB5490D16C05C3E4F2C42105C64C0BD6E59723D2E2619E36E4 + C1AE610CB5E7307D2E9059D20CB3C5A569A45DB64288EB34CB2A0717A546A76B + B29F4808D5A3816150EAAC3A5B0C052A34BEFAA493664602206EAD58CC0E0EDF + 31B37BEAF6FA823924FD03AEE144E6719869C175630FE3DAF4FA5B56EB992D9B + 5B97BD3DC499B4306BE3A8348E899527A09E9B439B9C4498B3729ECD4D22C98B + 256074BA02ED600BBAEADD38CFEF819A9668C37D3C1A1DC1896409CF5D3A8DCA + 3A06D9A120C45937EBCCA1589B0F8A2F66A4D1AA2E41C8A227AB48414F51C4AA + 5BD45F062FD7480FD2477322F428945B5AF7D2A9B1C1D1878E7EB2345EDA29FD + 9DB61575D2A125A9B7AC6D5A725B3C64DC28EC80D8517369CC12E528AC988591 + D653A86CA46AA463FC3F0DB39CE2AC580DA102ADC829036D43ED4869519A350D + 39AF8288478E965D9865070FAF9EC4D35B6631BABE8E949856C87D25D8849382 + 1D0DD118396807BC975C29085A7609C0E4DFCC86CC0C28AC05F06F9D6A571C99 + 9C1C7DF4F0ADE589D2C3D227F4CBD1648713AB3A539FCE34256EA1C46B41C7E5 + C02D56A8C989C1D16D1C9447609D9BC5DAB5CDC87444303351473D5D8134A643 + 7A2E85C82B69528729E66FD9B58240B40AFB770D38AA66B1B7770EBBB6CE61FA + 7C0B21DE2052538246E8D207A95E30984112AB2EBA33954761B020ADA46A28D0 + 799115B0A823315AEDF159FBE443073F5B9EC8DE2B7D54DA9A6C8A86FFB2AFBD + E9DBE95024E8B42A2FAC706C52789E9205000783330BF03756D0BB2582813747 + E14E69289A55CC3EE142DE976016C2B09BEAB02531B07BC18697D8B9137B42D1 + 71095956DC83678CE29177CE022D1484180332F9FF220F0200010BCA08004126 + 0846B616DF6306542B1C64C0A0D72A8E4DD4871EDDFF85F278E17EE94B2D576D + 896AA1F7B6C7231F125A2F7A934E4DA73782CE0CC45583F5E4617AAC8ADA8632 + 966CF1B1F6EA38A2F3ECA047AA18FD8589F84C023AA5CF0C89FD23DA6A4730A2 + 319C301788175494250B2FC466F0D8E6492CACA59D5EC17AC8FB4196255A0A39 + 0041ED27F5244B5087632A3B31C43901A96482E28660D0CCE5C687ACE15F1EF8 + 7C698C00EEEAF98BDB2952EF4B84D4A422FA33AFA4D1EA857888A665D0E00BB3 + 214DAA28F69450D85840E77B34F43AAD28EEF231762F8717AA52282EA36ED9B4 + D8087A80502993202C6621CC206CD94561BC82A7FBE6B1EFB21A462EF3D19A37 + 0293287622644F7803021020C4EA933E7075D602E943C596B9FA5E9DF49C9EC6 + FCE0D053732FCFFCB353B6F748DF6FDFF680A22A7F1E0F85A0D3EFC8CC278703 + 82E0176551CC088E68358C7CBA8CA9F6053FB255C60AAD49F2F7918F8FB32043 + ECC211A931D3BA7E631F69719B526C998802ADD28687A77CECEDCCE2C90BF278 + F522135D661CAAC6EFD51BF644628F5104951C35E0BFEC3732203617DC6285A2 + 50AECF1E187A297B7CEE17D6BC2B76EA26A53B975E3BC8616665949D4DA7AED3 + 7406BC157B43E2F194D80F12459DF40DCAB28519A5EC5B19CBCBE831D9C88620 + 4D50AF425C69D50D14C5751AD39590C3C64E1E255DECE4B14ADB66C2D81F9BC7 + CFFB4FE1F94D0B5E6FB885964571DD2A51BB32FD381ADB126207B3E6982C28D3 + 2AD4734EC135CDF9F29455B5C72A13D967DC2A7EC3E0831959DADE79CD010EE9 + 1BA2AAD6285C59094008FB2C1E2B888713E237C434F85C15DBE3D45A774591F8 + BA21C9BAA14962B4B49CC5D15080107BA63C17BB77E23D31B05BECC81DF5047E + E38FBBF729AF1CDADB3CF2627324E5C851B58AB25872DFE2504FD6F99E6BF3DC + B46B9EE954AC923BEB5450A6AD1961BC591EF3BF33916D5F7AED3102E88F88C0 + 45B0E295FF11129B370C5C67E0627B51A1D3930447C5506049AC375F585B49D1 + 102C9A785E86C5D956A88FBBF8EC403048042FC0ACD232D8571AC10F0A7B7FBA + D71EFB3A6BAEC45BCC335DC96068F7C552505C7DDF12ACE12FDB2143A78EF0D7 + 847B9A91F28EF6F77C87C17EC8D035553C9715749182C15AD4831FECA2C98DC6 + 106C950B695594C6A34F4F3CA8109213342451FF7E30DB3A6EC36E0B10AEA829 + 2A4B9DF35F4A8E6057F6E8DC8F17F6FDD310725FD7337A6089F9C140FDB0B871 + 106CB504F3B6DFB05CC23A9BC1EECB7F05F0BDD66BAED355F5FD71C3D86A681A + E3F4026D96C582F21F41A30010CF657117CEAE92DC78DA239EA5FB62D0179C17 + 92E57A012837D8224160AFC58A44A96E65CB41D1AAE181FCA1E776D506EFCEBB + D5EDE21AC65203AE7812F98702D8ACF7C4238AB6A9CF68B9A137943EB3458F2F + 0F2BB21696E9C399114314336188F61C6CF44AC1738CE0FA02802DDE137C173B + CBBEA83F71EE05F371D9B1827D9E39A75A1BB77233FB2B53270EDB53FF31EF56 + C53ECFE06B41845AB97096FF870168985009036A666597DEF4A6A416B938AE84 + 5AE2AAD6A1CB5A28AC849AC92285ED9F9457645F0A4A445CDF110FE4C4481E68 + BEE85B9EE750715C7661CB716CABE09BB9BA6BD927ABB9E1512F7F74DCCDBFCC + AF1EE231FBDB41FCD100229CCF56CA4DAC4D2F32E5577AC390239AA2A6154F0E + 93EF49C997382A4BB47892E62F767F31D78B3D66569E13705FF2C416B747DDB7 + 1DF138C1F72C0229905456DE35397AB8423D664EB7B7F34703B832BC1A05AF2E + CDB865FFB8F3BA4AE98B076D603016BF76881FB931D02DD67283C1EE6FBDBE76 + 988BEF99D2625C6F3480FF047136462EB85916B00000000049454E44AE426082} + end + object lblUsuarios: TcxLabel + Left = 168 + Top = 152 + Cursor = crHandPoint + Caption = 'Administraci'#243'n de usuarios' + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clHighlight + Style.Font.Height = -13 + Style.Font.Name = 'Tahoma' + Style.Font.Style = [fsBold] + Style.HotTrack = True + StyleFocused.BorderStyle = ebsNone + StyleFocused.TextStyle = [] + StyleHot.BorderStyle = ebsNone + StyleHot.TextStyle = [fsBold, fsUnderline] + Transparent = True + OnClick = lblUsuariosClick + end + end + object Button1: TButton + Left = 464 + Top = 424 + Width = 75 + Height = 25 + Caption = '&Cerrar' + ModalResult = 1 + TabOrder = 1 + end + object JvNavPanelHeader1: TJvNavPanelHeader + Left = 0 + Top = 0 + Width = 547 + 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 +end diff --git a/2.1.0/Source/Configuracion/uPanelControl.pas b/2.1.0/Source/Configuracion/uPanelControl.pas new file mode 100644 index 0000000..c2609b8 --- /dev/null +++ b/2.1.0/Source/Configuracion/uPanelControl.pas @@ -0,0 +1,50 @@ +unit uPanelControl; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ComCtrls, JvExControls, JvComponent, JvgWizardHeader, StdCtrls, + ExtCtrls, uDataModuleBase, JvNavigationPane, cxControls, cxContainer, + cxEdit, cxLabel, Buttons, PngSpeedButton, pngimage; + +type + TfPanelControl = class(TForm) + TabControl1: TTabControl; + Button1: TButton; + JvNavPanelHeader1: TJvNavPanelHeader; + lblUsuarios: TcxLabel; + Image1: TImage; + procedure lblUsuariosClick(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + + + procedure VerPanelControl; + +implementation + +uses uUsuarios; + +{$R *.dfm} + + +procedure VerPanelControl; +begin + with TfPanelControl.Create(NIL) do + try + ShowModal; + finally + Free; + end; +end; + +procedure TfPanelControl.lblUsuariosClick(Sender: TObject); +begin + AdministrarUsuarios; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.ddp b/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.dfm b/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.dfm new file mode 100644 index 0000000..f615384 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.dfm @@ -0,0 +1,172 @@ +object dmControles: TdmControles + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 300 + Width = 300 + object RemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvControles' + Left = 56 + Top = 16 + end + object ds_Controles: TDADataSource + DataSet = tbl_Controles.Dataset + DataTable = tbl_Controles + Left = 176 + Top = 80 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetDatasetData' + GetDataCall.Params = < + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'ListaControlesPorCategoria' + end + item + Name = 'Params' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = True + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RemoteService + DataStreamer = DABinDataStreamer1 + Left = 56 + Top = 80 + end + object DABinDataStreamer1: TDABinDataStreamer + IsCompatibleV4 = False + Left = 56 + Top = 152 + end + object tbl_Controles: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + Required = True + ServerAutoRefresh = True + InPrimaryKey = True + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + end + item + Name = 'MODIFICABLE' + DataType = datString + Size = 1 + DefaultValue = 'S' + end + item + Name = 'ICONO' + DataType = datSmallInt + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end + item + Name = 'ORDEN' + DataType = datSmallInt + end + item + Name = 'VISTA' + DataType = datMemo + end> + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Value = 'vebyas' + ParamType = daptInput + end> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + LocalDataStreamer = DABinDataStreamer1 + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ListaControlesPorCategoria' + IndexDefs = <> + Left = 176 + Top = 16 + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.pas b/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.pas new file mode 100644 index 0000000..9fbe2d4 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uDataModuleControles.pas @@ -0,0 +1,76 @@ +unit uDataModuleControles; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uROClient, uROServiceComponent, uRORemoteService, + uDARemoteDataAdapter, uDAInterfaces, uDADataStreamer, uDABinAdapter, + uDAMemDataTable; + +type + TdmControles = class(TDAClientDataModule) + RemoteService: TRORemoteService; + ds_Controles: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + DABinDataStreamer1: TDABinDataStreamer; + tbl_Controles: TDACDSDataTable; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + function GetItems (const ACategoria : String): TDACDSDataTable; + end; + +var + dmControles: TdmControles; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, + schControlesClient_Intf, + uDataModuleBase, uDataTableUtils, DataAbstract3_Intf, cxControls; + +procedure TdmControles.DAClientDataModuleCreate(Sender: TObject); +begin + RemoteService.Channel := dmBase.Channel; + RemoteService.Message := dmBase.Message; +end; + +function TdmControles.GetItems (const ACategoria : String): TDACDSDataTable; +var + dtControles: TDACDSDataTable; + //AParams : TDADatasetParamArray; +begin + ShowHourglassCursor; + try + dtControles := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Controles, dtControles); + + // Begin adaptación DA5 + {AParams := TDADatasetParamArray.Create; + with AParams.Add do begin + Name := fld_ListaControlesPorCategoriaCATEGORIA; + Value := ACategoria; + end;} + //dtControles.DataRequestCall.ParamByName(par_Params).AsComplexType := AParams; + + dtControles.ParamByName(fld_ListaControlesPorCategoriaCATEGORIA).AsString := ACategoria; // adaptación + // End adaptación DA5 + Result := dtControles; + finally + HideHourglassCursor; + end; +end; + +initialization + dmControles := TdmControles.Create(nil); + +finalization + FreeAndNil(dmControles); + +end. + diff --git a/2.1.0/Source/ControlesBase/Cliente/uDateUtils.pas b/2.1.0/Source/ControlesBase/Cliente/uDateUtils.pas new file mode 100644 index 0000000..d46a72b --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uDateUtils.pas @@ -0,0 +1,68 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uDateUtils; + +interface + +function NumberDayOfTheWeek(const ADay : String) : Word; +function NumberMonthOfTheYear(const AMonth : String) : Word; + +implementation + +uses + DateUtils; + +function NumberDayOfTheWeek(const ADay : String) : Word; +begin + if (ADay = 'Monday') or (ADay = 'Lunes') then + Result := DayMonday; + if (ADay = 'Tuesday') or (ADay = 'Martes') then + Result := DayTuesday; + if (ADay = 'Wednesday') or (ADay = 'Miercoles') or (ADay = 'Miércoles') then + Result := DayWednesday; + if (ADay = 'Thursday') or (ADay = 'Jueves') then + Result := DayThursday; + if (ADay = 'Friday') or (ADay = 'Viernes') then + Result := DayFriday; + if (ADay = 'Saturday') or (ADay = 'Sabado') or (ADay = 'Sábado') then + Result := DaySaturday; + if (ADay = 'Sunday') or (ADay = 'Domingo') then + Result := DaySunday; +end; + +function NumberMonthOfTheYear(const AMonth : String) : Word; +begin + if (AMonth = 'January') or (AMonth = 'Enero') then + Result := 1; + if (AMonth = 'February') or (AMonth = 'Febrero') then + Result := 2; + if (AMonth = 'March') or (AMonth = 'Marzo') then + Result := 3; + if (AMonth = 'April') or (AMonth = 'Abril') then + Result := 4; + if (AMonth = 'May') or (AMonth = 'Mayo') then + Result := 5; + if (AMonth = 'June') or (AMonth = 'Junio') then + Result := 6; + if (AMonth = 'July') or (AMonth = 'Julio') then + Result := 7; + if (AMonth = 'August') or (AMonth = 'Agosto') then + Result := 8; + if (AMonth = 'September') or (AMonth = 'Septiembre') or (AMonth = 'Setiembre') then + Result := 9; + if (AMonth = 'October') or (AMonth = 'Octubre') then + Result := 10; + if (AMonth = 'November') or (AMonth = 'Noviembre') then + Result := 11; + if (AMonth = 'December') or (AMonth = 'Diciembre') then + Result := 12; +end; + +end. + \ No newline at end of file diff --git a/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.ddp b/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.dfm b/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.dfm new file mode 100644 index 0000000..0aa84fd --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.dfm @@ -0,0 +1,1324 @@ +inherited fEditorControlBase: TfEditorControlBase + Left = 499 + Top = 302 + Caption = '' + ExplicitWidth = 320 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited tbxMain: TTBXToolbar + ExplicitWidth = 523 + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + object tbxiPropiedades: TTBXItem [7] + Action = actPropiedades + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem14: TTBXSeparatorItem [8] + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem4: TTBXSubmenuItem + inherited TBXItem10: TTBXItem + Visible = False + end + object TBXSeparatorItem15: TTBXSeparatorItem [6] + end + object tbxiPropiedades2: TTBXItem [7] + Action = actPropiedades + end + end + end + end + inherited EditorActionList: TActionList + inherited actGuardarCerrar: TAction + OnUpdate = actGuardarCerrarUpdate + end + inherited actGuardar: TAction + OnUpdate = actGuardarUpdate + end + object actPropiedades: TAction + Category = 'Archivo' + Caption = 'Propiedades' + ImageIndex = 20 + OnExecute = actPropiedadesExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + Bitmap = {} + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.pas b/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.pas new file mode 100644 index 0000000..ee7b12f --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uEditorControlBase.pas @@ -0,0 +1,133 @@ +unit uEditorControlBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, + uBizControlesBase, schControlesClient_Intf, uViewControlBase, uDAInterfaces; + +type + IEditorControlBase = interface(IEditorDBItem) + ['{A9892225-82DB-41AF-B69D-821E0663B3EF}'] + function GetControl: IBizControlBase; + procedure SetControl(const Value: IBizControlBase); + property Control: IBizControlBase read GetControl write SetControl; + end; + + + TfEditorControlBase = class(TfEditorDBItem, IEditorControlBase) + actPropiedades: TAction; + TBXSeparatorItem14: TTBXSeparatorItem; + tbxiPropiedades: TTBXItem; + TBXSeparatorItem15: TTBXSeparatorItem; + tbxiPropiedades2: TTBXItem; + procedure actPropiedadesExecute(Sender: TObject); + procedure actGuardarCerrarUpdate(Sender: TObject); + procedure actGuardarUpdate(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + protected + FControl : IBizControlBase; + FViewControl : IViewControlBase; + function GetControl: IBizControlBase; virtual; + procedure SetControl(const Value: IBizControlBase); virtual; + procedure RefrescarTituloEditor; virtual; + function GetModified: Boolean; override; + procedure RellenarCabeceraInforme; virtual; + public + property Control: IBizControlBase read GetControl write SetControl; + end; + +implementation + +uses uEditorDBBase, uEditorBase; + +{$R *.dfm} + +{ TfEditorControlBase } + +function TfEditorControlBase.GetControl: IBizControlBase; +begin + Result := FControl; +end; + +procedure TfEditorControlBase.SetControl(const Value: IBizControlBase); +begin + FControl := Value; + dsDataTable.DataTable := FControl.DataTable; + if Assigned(FViewControl) then + FViewControl.Control := FControl; +end; + +procedure TfEditorControlBase.actPropiedadesExecute(Sender: TObject); +begin + inherited; + try + FControl.VerPropiedades; + finally + RefrescarTituloEditor; + FViewControl.Modificable := FControl.EsModificable; + inherited actGuardarExecute(Sender); + end; +end; + +procedure TfEditorControlBase.RefrescarTituloEditor; +begin + if Assigned(FControl) and (Length(FControl.NOMBRE) > 0) then + begin + Caption := FControl.NOMBRE; + JvNavPanelHeader.Caption := FControl.NOMBRE; + end; +end; + +function TfEditorControlBase.GetModified: Boolean; +begin + Result := inherited GetModified and + (Assigned(FControl) and FControl.EsModificable); +end; + +procedure TfEditorControlBase.actGuardarCerrarUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FControl) and (FControl.EsModificable); +end; + +procedure TfEditorControlBase.actGuardarUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FControl) and (FControl.EsModificable); +end; + +procedure TfEditorControlBase.actPrevisualizarExecute(Sender: TObject); +begin + RellenarCabeceraInforme; + inherited; +end; + +procedure TfEditorControlBase.RellenarCabeceraInforme; +begin + inherited; + // +end; + +procedure TfEditorControlBase.actImprimirExecute(Sender: TObject); +begin + RellenarCabeceraInforme; + inherited; +end; + + +procedure TfEditorControlBase.actEliminarExecute(Sender: TObject); +begin + if not FControl.EsModificable then + ShowMessage('Este control no se puede eliminar') + else + inherited +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.dfm b/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.dfm new file mode 100644 index 0000000..941ccbd --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.dfm @@ -0,0 +1,1394 @@ +inherited fEditorControlesBase: TfEditorControlesBase + Left = 385 + Top = 375 + Caption = '' + ExplicitWidth = 320 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 0 + ExplicitTop = 0 + end + inherited TBXDock: TTBXDock + Top = 27 + ExplicitTop = 27 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 386 + inherited TBXItem2: TTBXItem + ImageIndex = 0 + Images = pngImageNuevo + end + inherited TBXItem29: TTBXItem + Visible = False + end + inherited TBXItem27: TTBXItem + Visible = False + end + object TBXSeparatorItem14: TTBXSeparatorItem [6] + end + object TBXItem7: TTBXItem [7] + Action = actPropiedades + DisplayMode = nbdmImageAndText + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + inherited TBXSeparatorItem10: TTBXSeparatorItem + Visible = False + end + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + inherited TBXSeparatorItem11: TTBXSeparatorItem + Visible = False + end + inherited TBXItem28: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + Visible = False + end + end + inherited EditorActionList: TActionList + Left = 72 + Top = 128 + inherited actNuevo: TAction + Caption = 'Nuevo control...' + OnExecute = actNuevoExecute + end + inherited actModificar: TAction + Caption = 'Abrir control' + OnExecute = actModificarExecute + end + object actPropiedades: TAction + Category = 'Archivo' + Caption = 'Propiedades' + ImageIndex = 20 + OnExecute = actPropiedadesExecute + OnUpdate = actPropiedadesUpdate + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + Bitmap = {} + end + object ViewPopupMenu: TPopupMenu + Images = SmallImages + Left = 72 + Top = 88 + object Modificar1: TMenuItem + Action = actModificar + end + object Eliminar1: TMenuItem + Action = actEliminar + end + object N1: TMenuItem + Caption = '-' + end + object Nuevo1: TMenuItem + Action = actNuevo + end + object N2: TMenuItem + Caption = '-' + end + object Propiedades1: TMenuItem + Action = actPropiedades + end + end + object pngImageNuevo: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F84944415478DA + 63FCFFFF3F03084C59BC03C2200072E33C19616C905E46640372623DF06A06AA + 6198B77413C3F99DD3194936E0DFBF7F0CD396EE62D051576128AAEB031B42B4 + 0120CDBFFFFC6398BD720F43B0A70DC3CD7B2FC0869CDB318D91A00130CDBF7F + FF6558B06E3FD80B3040D00064CDBFFF40F0AA6D47C1722083F01A804D3304FF + 63D8B2EF147E03F06906D13B0F9DC56D0058E16F540D20FC07C607CA1D387911 + BB01E991AE043583F847CF5EC16E4052881341CD207CEAE275EC06C406D813D4 + 0CC2E7AFDEC26E40848F2D41CD20B12B37EF603720D8C38AA06610C069809F8B + 39C3A63D2789C994D80D404EA6C400900100F58BBFF09BC1E25C000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 91 + Top = 224 + Bitmap = {} + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.dfm.cbk b/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.dfm.cbk new file mode 100644 index 0000000..941ccbd --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.dfm.cbk @@ -0,0 +1,1394 @@ +inherited fEditorControlesBase: TfEditorControlesBase + Left = 385 + Top = 375 + Caption = '' + ExplicitWidth = 320 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 0 + ExplicitTop = 0 + end + inherited TBXDock: TTBXDock + Top = 27 + ExplicitTop = 27 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 386 + inherited TBXItem2: TTBXItem + ImageIndex = 0 + Images = pngImageNuevo + end + inherited TBXItem29: TTBXItem + Visible = False + end + inherited TBXItem27: TTBXItem + Visible = False + end + object TBXSeparatorItem14: TTBXSeparatorItem [6] + end + object TBXItem7: TTBXItem [7] + Action = actPropiedades + DisplayMode = nbdmImageAndText + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + inherited TBXSeparatorItem10: TTBXSeparatorItem + Visible = False + end + inherited TBXItem26: TTBXItem + Visible = False + end + inherited TBXItem25: TTBXItem + Visible = False + end + inherited TBXSeparatorItem11: TTBXSeparatorItem + Visible = False + end + inherited TBXItem28: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + Visible = False + end + end + inherited EditorActionList: TActionList + Left = 72 + Top = 128 + inherited actNuevo: TAction + Caption = 'Nuevo control...' + OnExecute = actNuevoExecute + end + inherited actModificar: TAction + Caption = 'Abrir control' + OnExecute = actModificarExecute + end + object actPropiedades: TAction + Category = 'Archivo' + Caption = 'Propiedades' + ImageIndex = 20 + OnExecute = actPropiedadesExecute + OnUpdate = actPropiedadesUpdate + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end> + Bitmap = {} + end + object ViewPopupMenu: TPopupMenu + Images = SmallImages + Left = 72 + Top = 88 + object Modificar1: TMenuItem + Action = actModificar + end + object Eliminar1: TMenuItem + Action = actEliminar + end + object N1: TMenuItem + Caption = '-' + end + object Nuevo1: TMenuItem + Action = actNuevo + end + object N2: TMenuItem + Caption = '-' + end + object Propiedades1: TMenuItem + Action = actPropiedades + end + end + object pngImageNuevo: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F84944415478DA + 63FCFFFF3F03084C59BC03C2200072E33C19616C905E46640372623DF06A06AA + 6198B77413C3F99DD3194936E0DFBF7F0CD396EE62D051576128AAEB031B42B4 + 0120CDBFFFFC6398BD720F43B0A70DC3CD7B2FC0869CDB318D91A00130CDBF7F + FF6558B06E3FD80B3040D00064CDBFFF40F0AA6D47C1722083F01A804D3304FF + 63D8B2EF147E03F06906D13B0F9DC56D0058E16F540D20FC07C607CA1D387911 + BB01E991AE043583F847CF5EC16E4052881341CD207CEAE275EC06C406D813D4 + 0CC2E7AFDEC26E40848F2D41CD20B12B37EF603720D8C38AA06610C069809F8B + 39C3A63D2789C994D80D404EA6C400900100F58BBFF09BC1E25C000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 91 + Top = 224 + Bitmap = {} + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.pas b/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.pas new file mode 100644 index 0000000..3817fac --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uEditorControlesBase.pas @@ -0,0 +1,167 @@ +unit uEditorControlesBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorDBBase, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, pngimage, uBizControlesBase, uEditorBase, + uViewControlesBase, uDAInterfaces; + +type + IEditorControlesBase = interface(IEditorDBBase) + ['{9B15BCEA-4C31-442A-89EC-773B66460A3B}'] + function GetControl: IBizControlBase; + procedure SetControl(const Value: IBizControlBase); + property Control: IBizControlBase read GetControl write SetControl; + end; + + TfEditorControlesBase = class(TfEditorDBBase, IEditorControlesBase) + ViewPopupMenu: TPopupMenu; + Modificar1: TMenuItem; + Eliminar1: TMenuItem; + N1: TMenuItem; + Nuevo1: TMenuItem; + pngImageNuevo: TPngImageList; + actPropiedades: TAction; + TBXSeparatorItem14: TTBXSeparatorItem; + TBXItem7: TTBXItem; + N2: TMenuItem; + Propiedades1: TMenuItem; + procedure actNuevoExecute(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actPropiedadesExecute(Sender: TObject); + procedure actPropiedadesUpdate(Sender: TObject); + protected + FControl : IBizControlBase; + FViewControl : IViewControlesBase; + function GetControl: IBizControlBase; virtual; + procedure SetControl(const Value: IBizControlBase); virtual; + public + destructor Destroy; override; + property Control: IBizControlBase read GetControl write SetControl; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +{$R *.dfm} + +{ TfEditorControlesBase } + +function TfEditorControlesBase.GetControl: IBizControlBase; +begin + Result := FControl; +end; + +procedure TfEditorControlesBase.SetControl(const Value: IBizControlBase); +begin + FControl := Value; + dsDataTable.DataTable := FControl.DataTable; + if Assigned(FViewControl) then + begin + FViewControl.Control := FControl; + end; +end; + +procedure TfEditorControlesBase.actNuevoExecute(Sender: TObject); +begin + inherited; + try + FControl.Insert; + FControl.Show; + finally + FViewControl.Refresh; + end; +end; + +procedure TfEditorControlesBase.actModificarExecute(Sender: TObject); +begin + inherited; + try + FControl.Show; + finally + FViewControl.Refresh; + end; +end; + +procedure TfEditorControlesBase.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewControl) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Control) then + raise Exception.Create('No hay ningún control asignado'); + + FViewControl.OnDblClick := actModificar.OnExecute; + FViewControl.PopupMenu := ViewPopupMenu; + + Control.DataTable.Active := True; + + FViewControl.Refresh; +end; + +destructor TfEditorControlesBase.Destroy; +begin + FViewControl := NIL; + FControl := NIL; + inherited; +end; + +procedure TfEditorControlesBase.actEliminarExecute(Sender: TObject); +begin + try + if not FControl.EsModificable then + ShowMessage('Este control no se puede borrar') + else + if (Application.MessageBox('¿Desea borrar este control?', 'Atención', MB_YESNO) = IDYES) then + inherited; + finally + FViewControl.Refresh; + end; +end; + +procedure TfEditorControlesBase.actRefrescarExecute(Sender: TObject); +begin + inherited; + if Assigned(FViewControl) then + FViewControl.Refresh; +end; + +procedure TfEditorControlesBase.actPropiedadesExecute(Sender: TObject); +begin + inherited; + if Assigned(FControl) then + try + FControl.VerPropiedades; + actGuardar.Execute; + finally + FViewControl.Refresh; + end; +end; + +procedure TfEditorControlesBase.actPropiedadesUpdate(Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and not (dsDataTable.DataTable.State = dsInsert) + else + (Sender as TAction).Enabled := False; +end; + +constructor TfEditorControlesBase.Create(AOwner: TComponent); +begin + inherited; + actModificar.ShortCut := ShortCut(VK_RETURN, []); +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uFormPropiedadesControl.dfm b/2.1.0/Source/ControlesBase/Cliente/uFormPropiedadesControl.dfm new file mode 100644 index 0000000..9180b16 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uFormPropiedadesControl.dfm @@ -0,0 +1,384 @@ +object frPropiedadesControl: TfrPropiedadesControl + Left = 569 + Top = 354 + ActiveControl = edtNombre + BorderStyle = bsDialog + Caption = 'Propiedades del informe' + ClientHeight = 418 + ClientWidth = 378 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnCloseQuery = FormCloseQuery + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 15 + Top = 84 + Width = 92 + Height = 13 + Caption = '&Nombre del control:' + FocusControl = edtNombre + end + object Label2: TLabel + Left = 48 + Top = 112 + Width = 59 + Height = 13 + Caption = '&Descripci'#243'n:' + FocusControl = memDescripcion + end + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 378 + Height = 60 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'MS Sans Serif' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'MS Sans Serif' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Propiedades del control') + Comments.Strings = ( + 'Introduca los datos del control') + Gradient.FromColor = clGradientActiveCaption + Gradient.ToColor = clGradientInactiveCaption + Gradient.Active = True + Gradient.Orientation = fgdVertical + BufferedDraw = False + end + object Label3: TLabel + Left = 77 + Top = 272 + Width = 30 + Height = 13 + Caption = '&Icono:' + end + object Bevel1: TBevel + Left = 8 + Top = 360 + Width = 361 + Height = 10 + Shape = bsBottomLine + end + object memDescripcion: TcxMemo + Left = 120 + Top = 112 + Lines.Strings = ( + '') + Properties.ScrollBars = ssVertical + Properties.WantReturns = 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 = 105 + Width = 241 + end + object edtNombre: TcxTextEdit + Left = 120 + Top = 80 + Style.Color = 14745599 + 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 = 241 + end + object bAceptar: TButton + Left = 296 + Top = 384 + Width = 75 + Height = 25 + Caption = '&Aceptar' + Default = True + ModalResult = 1 + TabOrder = 2 + end + object cbModificable: TCheckBox + Left = 120 + Top = 232 + Width = 234 + Height = 17 + Caption = 'No &permitir realizar cambios en este control' + TabOrder = 3 + end + object btnIcono: TJvImgBtn + Left = 120 + Top = 272 + Width = 60 + Height = 60 + TabOrder = 4 + DropDownMenu = JvPopupMenu1 + DropArrow = True + Flat = True + HotTrackFont.Charset = DEFAULT_CHARSET + HotTrackFont.Color = clWindowText + HotTrackFont.Height = -11 + HotTrackFont.Name = 'MS Sans Serif' + HotTrackFont.Style = [] + Images = ReportImages + ImageIndex = 1 + end + object ReportImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002024944415478DA + BDD5DB2E03411800E0E923B870E1CE9D085A940B823894D2489C4FAFE101BC80 + 8444840B89B3D4A954292D8A2855DD5655EB14E205A4570E09BAFB9B5944C7A1 + B335F87727F3CFBF93F976B3995D1500A0FF0C553468D93A9107A4F6D6A8313E + E4F33597AFCBE74BDED93384FCF67E5534F0F181287061F3186A4AD27E74E746 + AB80921213507B471785C604CD1B21A82D4DFF1138B1B48F325393D175F88642 + FF0494F01A46AB07156853D0EDFD0385C604E71D41A82BCB880B1325098922A0 + 699B80CAF2D2D1E35384420F6C7DAA6FC1B9F523A8D7A9E3C6483F6BF7A2EEBE + B14F736282A6F50034E834716392847B51425BDE2B74777F87C2E1B03C6770C2 + C200D73058CE06BFC23ED64C36171B9C5D3D84C68A4C6E8CD4CC6B6E363863F7 + 43933E8B1B23F9A2C3C306A7ED07D0ACCFE6C6486EDD14D8E094CD072D955A0A + 227B8C0550B5D7F1AAD3A7005CC16095961B23BD63D7CF062757BCD05A95C38D + C95BC41D6083C66501DA0CB9DC18694E21A800B40AD062C8E1C6445C77F9426C + 107FF1F13BCCE5C622B8F71C9E28031B2BB4DC18C97DC1333638BEE8863A5D36 + 738F452FFC0ED278E0F4820D8E59F6A0A6348B1B237342E797CAC0EA620D3746 + 421138BAE0024391861B530C8E9877A1B250CD8D290687E777405FA0E6C61483 + 43734E28CFCF90FF65BF114C70D0B40DBD0393BF82BD454CF03FE219EFD39C05 + A47A98E90000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002CB4944415478DA + BDD36F4813711807F0EF4984F5A68108254249648689A961334B8C95342CAD4C + 222D5F66607F2C825E1426B504090A7B636446A00605A624A4258A664EF1DFA6 + 0E97298D72AED3306FCB68A277D7EE3776E9727AB7AB1E381EF8DDFD9ECFEFB9 + E78EE2791EFF33286F90A228E0DA171EB737504AB37E3D48F1DD34A865415556 + 13CF3CD5504AF2AB660D765D3E8F804F15E8A86644F40FF0597D2F59385B69C7 + 8353EBFCCA8FD24611929F8B840C15A0676076AA60187720DBC1514B8227B471 + A0624AC01B2ECACA6CDF05D43C2FC39EE4740C6487E2C0B77982093134F51D21 + 012C7C82728373D5F160344D639AF90A477E0A8269777D130D9C1126F6374096 + E3F0AE220FEF9D3BA056AB0926849DF901AAF028268C3CC17CCE500EE8C1E2F7 + 6F4780B5074F8C6A6C8DD84C30A1539D4E07ABD5EAFB2B5D0816D78CAF08AA1D + 3A119B9C9B01373F8B86E15472CF1B53D4A177671E8C9918839331E2B82E14C1 + 918761785DAA1C94825D2D2AC3E3AA97CA416F6C62D60E8E9D857DD226621DDD + 83A86DEC940F2E35C38533F3850987AA6BEAF2BF43E11FE3381EED95CB77D6DE + 35409E13C0FA961EFF407F3096E5F1A6AD573EE8C15896C3AD829398E3D39197 + FA62454CC84DED0679A080DDA9B591B54DB6EB181C9B41ECCC38FA5497901955 + 2462E7EE772EDA9F16BD8A1CB0A5B35F3A98793056EC4C386D516136AE24AD86 + A5D90C8B3310D59FD7E0ADE1C3929D913DAEABCDF5F1480633526244ACAE3C17 + DDFA56E4C586C160F909FD340D666D1C0A6E3EF489B1AE757DAF493A7844132D + 163A9D93838F23666C0CE611141A066D7C10128EDD5D169B77E52EE39074F050 + 7214D95CDA3885AA1B5A848547226B5F201233EE91E26ECC5DD8F326DCE06FBC + CF342C1DD4EE8D5C74FA85F394820957BF79443A9892B84D11263C631A1E950E + 6AD4118A30216481C9F1E18A30D960D2CE2DA86ED0436948068B4BCA15639E58 + 11FCD7F10B8E341130466CDCF80000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002B14944415478DA + BDD5CB4F13411800F0AF897AF2A0311E8C07F5604C63E9839683040D42A1D098 + D42A8826DEFC070C4AF4E4C1981883C117C13755B02922A505ACB440855829B5 + DB07B5151589070831846C222A242ADD717760B14B6B676991AFBB99D9D96FF7 + 37B3B3D3952084602D439208760E8CE003AE8DDF05C7EC0F6F8B757C1E6F0BF5 + DA9B2608BB6E4B1281E50312801DFDEF90E1E0DE8C7A6E7150B06DEB66A8BE50 + 2740D382F6973174B8489611687EFE0694D29D304D7F17A0FF0564D87B581C7E + 2850EF811F733F05685AD0E68E2263710EAE5FB14D12A173C6ED10671888C711 + B43A2928DE27835FBFE70568C8D920F927D8DEF7161DD1CA458F8CC7B8B2CD15 + 806B0DCD493969416B5F041DD52A568C310C5BC61918087C86D9B959A0691AE7 + 349A3B09602F0B9690C154D8F236ABD34B06DB7A865145A952F41C26C6A9C24D + 820ED87B7D64F0992B8C2A75AAAC46C6B775B9FD64B0D51542C774B959635CDD + D14F91C1A7CE20AA2A530B206E8D910041DBE2718F272802EC66C172754673C8 + 8751B501A3EEC130196CE90EA0E3E59AAC46B650B24BC41721839617143AA1CF + CB1AE3760F1515013A2854A5D7648DC5D9766F304606D97F7C760EF3F045D71D + 5329E7E864FE467CF31DF7C6539E0F566E8179F67AFFF08838B0A2542D6A64BB + 1E4C80A9F8EFB7939E61C07CEB34DCA93D8FF383D10F64F049970F19B5B9C435 + C63DB2DDA6C92590C3462718A0ECD5507FB906E746DE7F2283CD9D43C850A422 + 62DC2393367DC1208F8D8E3330133A0B372E9DC139B18F63E2C043850A8C3D1C + F89A728E0CCAF5B80332F3145CD5489730FA1B827563355077B11AE789029B3A + BC487F409176647C9BC2320DAAA1BB491D5A11F8D83E88CAF6CB89D8C2EB9FBC + 14124314F8C8F61AE90AE45963A24153BB0795E4E7E06FD96A04116CB4BE42F5 + F75B5605E3232DB816F1079F420105E5B916660000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002E14944415478DA + 63FCFFFF3F033D0123B2859B0E5C03734062308CC207423082B2C1F260046177 + 4F9ACF707EE77446640BD03D8462E1C6FD57FFFB3B6A93E5F2E55B4F33488A0A + 3214D5F5A1588AD7C20DFBAEFC0F70D221CBC2A55B4E3218682A30BC7EFB19C5 + 52A22DEC5CFF142E5E1E284D504C86F509838DB13AC3976F3F512CC56BE1FABD + 97FF073AEB92E4B3BFFFFE31FCFDFB9F61D58ED30CCE963A0CBF7EFF41B1F4DC + 8E698C382D5CB7E7D2FF20173D922D03D16B769E61E89FB618430D5E0BD7EEB9 + F83FD8451F23F8B081127F49B865FFFE01E9BFFF180E9CB9C7F0F5DB5786B76F + DF82D5CC5BBA898085BB8116BAEA93E4339865E8626B771C236CE19A5D17FE87 + B819506C19486CC3EE13842D5CBDF3FCFF5077439420454F8D20D5202D208341 + 74B6BB10D8B2C93BDF81B300509821D5818761F3DE53842D5CB5F3DCFF307723 + 8A7C06636FDD7F9AB0852B779CFD1FEE618CE2A3D20029B0013D9B9EA3F8ECDF + 7F089DEECC0FB674FADE8F50710686441B4E865D87CF1261E176A0859EC6703E + C85042BE411143E2EF3D7A9EB0852BB69FF91FE16982E2C3026F71B0017D5B5E + 217CF60FE1C354475EB06533F77F81C7619C251BC3811317095BB87CDBE9FF91 + 5EA614F90C2C0FC4874F5F26C2C2ADA7FF877B99800DE9DEF81CECE25C0F51B0 + 4113B7BF41F1D93F48CDC4906CC705B66CF6C16F701FC698B3301C3B7B85B085 + C0121F1887A614F9EC2F50FC0F903E75E11A711686B819A3C459B69B10D82048 + 3E43F80C9662136C38C0F2F38EFC848B459830329CBD7C83B0854B369FF81FE8 + 6244308FC17C815087E9D38BD76F13B670F1A6E3FFFD9D0CC11A27ED780B8E33 + 483EFB07CC679F507CF60FDAD48806C617C8B2C527FE80C5402058FF2FC3959B + 7788B3D0C7419F229FFD85DA4A94858B361EFBEF65A74FB165445BB870C3D1FF + 1EB67A6459B6EA3C13DC1CA28374C1FA23FFDD6DF428F219493E9CBFEEF07F57 + 2B5D705D460D40D0C2796B0FFD9F327B05552C8301BC16D2030000BD734D0581 + 7DF1720000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001C64944415478DA + 63FCFFFF3F033D01E38059B87CDB699ADB1CE965CA88622150806CC3FE01CDF9 + F7EF3FC3DFBFFF18FEFEFB87C4FECFB06CD32186794B37319CDB310DBF858C33 + 1919823435197EFDFD0BC6BFA134980D34F4C79F3F0C3F81EC3F40F64F201BCC + 07E237515FE196FD03CAADD87284780BC9011FA2BEC12D03D1ABB71D25CE424A + 8211661988BF6EE771D22D644CC4EFDBCF537F30FCF903B1186C21D462107FD3 + 9E9394F9106CE85F245F807CF7F73F56CB40BEDEB2EF146E0B09F9845470A7E9 + 35C3F60367F05BF87F3E224B5E5C69C8A01F7E1E271F19A0CB81CCBA59FF8A61 + D7E1B3F82D4CC830806B2A78C0C030418101271F19A0CB2D987181E17AED0B86 + 3D47CFD3CF8757AA9F33EC3F7E817E3EBC50FE84E1F0E9CBF4F3E1D9D2C70CC7 + CE5EA19F0F4F173F643871FE1AFD7C78A2F001C3E98BD7B15B18EE69C2C09CC4 + 44551F1ECDBBC770EECA4DEC1686BA1B33B0A63053D5878773EE325CB8760BBB + 85412E860C1CE9AC54F5E1FECCDB0C576EDEC16EA1BF933E0377263B557D88D7 + 426F7B5D06FE1C4E066A02BC167ADAE8E02CF149AD2190014E0BDDACB4A86E19 + 5E0B9D2D3419566D3D42D5208501AC16764F9A4F13CB6000C5427A01BA5B0800 + BE8AE7E7F700C7D10000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020E4944415478DA + 63FCFFFF3F033D0123C842464646086F06034D6CFF9FFE9F11C5C2695326FDEF + 9ED4CFF0A0F801C311EF7D641BFC0F08FFFCFFC5F0FBDF2F300DC2FE4D310CFF + E7A359A8A8A6F8FFFEADFB0C8585850C1BB66E6058B26F1E752CDB15C3C07082 + 01D342980F4100D9329BAD4E382D60636283606636067628FBE1D7470C5BDD57 + C12D0CDE9D84DD425C3E0459986060806A112307030FB310032F8B1098E666E6 + 63E060E201E3A8B61C868D754B2016027D1ABE3783741F225B88CF324E661E86 + C0E60486B5B5F3C096FD065A1AB32F8F7C1F12B20C447B3686302CAB9E0AB610 + E4CBA403E5E4F99018CB40D8B1DE836151653F3C0ED30ED692EEC334430BA22C + 6305261A9B5A278679159D700BB30E3593914A4F90963D669537C32DCC3BDC49 + 9A0F91C19FFFBFC1090196026186FE46E323F06F86A2237DA4F99012CB4072E5 + 47A790EE434296FDFAFF1D21CEF01BA5B4A93D3E97781F622BAA6096FE46E363 + B30C841B4F2C26CE878BF6CDA1D832106E3DB992B00FA9651908779E5A4F9C0F + 67EE9E40B16520F57DA7B712F621B52C03D193CEEC26CE871377B6906DD9CF7F + DFE1EC19E78E10F621BA65BF900C40CE637843018AE79C3F459C0FDBB695E2CD + D0C45806C20B2E5C20EC43522D5B1E7E066B99EAB05800B785E83EACDB9C4991 + CF6080281F52CB32BC16A2FB10D45CA41AC06621A821ACA0AA006E043FB0A6A2 + 65508061213D010026DA8D05688EA69C0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000003474944415478DA + BD946B48536118C79F95140409E62DBB7C083F85084566372135D2F292B74AD3 + CCC44B492C32FC966D5AFA2D2A34E9A236733A9D695EA76B622A998917549CA9 + 980895B75D6995A5DBD9DBD939DBAB23754B9D0FBC9CE7FF1ECEF37BFEEFCB79 + 180821D8C860E8808CDB03CE649E4AAEAB16E214902B033D741D330039AE7B6D + D604637AD8027F500D12A5CA28EF1E0F845EE526386A5F5040026329A055BC08 + 1173EAE5AB21C672E78353768C37D48895D0DBD36B948B9D7221EFE721C89E3F + 029A3C1F06063A8C0D5AE834E99038BB2C007730BBD048FA7E8B029DEF0E812A + E7300DB4BDD98DE4596EAB2EA6256B68B50808420B84965C04A29E863DBEA00D + 5822040AEE59D3C0FCFC853C2E6E657D296A1E4A8AB7601D10FC83825608DB81 + F5560B8A22BFB5395CCACD527B558D1D24902081FEC6C0FCC5EDAE43F8FA8751 + E0DAA64E600935A0280E589D43739D1972417317B01AD4A0E0051A03E3E37BA9 + 82797907CDBAC388C87928E519DF595DD576ACBD7DE5241481B0B51BD80DF320 + E79DA38176CC4E24CB765F77673A985A4340D3077218D4CF81BC24480FBCF111 + C9728E9974187D85006EE166AC432FCCC29BD7DBB03EEDA784C67A1BAC8F7BCD + 500DB474F4035BF007E4A5C134D03EA90D499F7A98ED4CD7F5B20E1769EA3DB9 + DE770D00BBEE37C8F9217AE0B556247D7EF21F87BA1F9AF372618E5E8C9883B2 + D2AD58FB07A940506D8DB5A78F0C5A447658BB9D98A08EB5BD474C0267496028 + 0D74486841925C4F2357A6A68739CE74300DF9ECECFB0469B5BF405616A607C6 + 352149FE29ECF045EE015CB8886B859B08393F0B95E52BDF597BB323D6AEEE5F + A81A3D03C3904E02A506A063AC08CD707CD6D599EE9E0DBA7F6814D2ABBE83B4 + 225C0F8C11A29957675605536BB48BDE2D0D178F7C867BE552905447D3C09DD1 + 023459E80789097D94CBAC272EF8C394E4617C446919FB202D751CEB943BBBE1 + 41E604D6D76FD9C1B3C732AC2F27D2434007BCCF9F8299BA583D30AA067D2B0C + C09D6A34A67F680D61DA992174C00CDE57986E48A081BB222BD11827C0ECE9F1 + 3F300CE48EC3B4288906EE09E5A291E270E094BF3339DE561B9905A330D5C4A4 + 814E5E8FD0B4B5DDDAABAE104E2A194C3627EB8F94045A94A60F0CDCC8D870E0 + 5FA7D4B1F664B3FE1D0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001084944415478DA + 63FCFFFF3F033D01E3A88534B19031F124ED6DBD7081E1FFF97446B885516106 + 0CEF7E3130ECD870812134D480E1EB1F06862F50FCE937847E71807C390C0B3D + 0220169EDA7681C12BD00045D38B1F1036C3093C72474F31788598E1D4876121 + CD82F2FF3F60C431A15AB874CBC9FF6E969A0C5FBFFF64387AE11E43B48F3956 + BD407564C98180914716C3B91DD310161AA849812DBCFDF82DD52D9CB27807C3 + BCA59B502D549515663875E90E83A0A020568D7FFFFE6558B1FD0C5972D397ED + C6B49016D1F7FBD72F0656363686F7EFDF635A48CB38C41AA4A3714809188DC3 + D1381C8D43E2E21014A42BB71DA3593C6258D83B6521CD2C8301B885F404C3DF + 42005A1A11E70A945A890000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 27 + Top = 216 + Bitmap = {} + end + object JvPopupMenu1: TJvPopupMenu + Images = ReportImages + OnPopup = JvPopupMenu1Popup + Style = msItemPainter + ImageMargin.Left = 0 + ImageMargin.Top = 0 + ImageMargin.Right = 0 + ImageMargin.Bottom = 0 + ImageSize.Height = 0 + ImageSize.Width = 0 + Left = 192 + Top = 288 + object N11: TMenuItem + Caption = '1' + end + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uFormPropiedadesControl.pas b/2.1.0/Source/ControlesBase/Cliente/uFormPropiedadesControl.pas new file mode 100644 index 0000000..22d8afa --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uFormPropiedadesControl.pas @@ -0,0 +1,117 @@ +unit uFormPropiedadesControl; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, StdCtrls, + JvExControls, JvComponent, JvgWizardHeader, ExtCtrls, ImgList, + PngImageList, JvExStdCtrls, JvButton, JvCtrls, Menus, JvMenus, ActnList; + +type + TfrPropiedadesControl = class(TForm) + edtNombre: TcxTextEdit; + Label1: TLabel; + Label2: TLabel; + bAceptar: TButton; + memDescripcion: TcxMemo; + JvgWizardHeader1: TJvgWizardHeader; + cbModificable: TCheckBox; + Label3: TLabel; + Bevel1: TBevel; + btnIcono: TJvImgBtn; + ReportImages: TPngImageList; + JvPopupMenu1: TJvPopupMenu; + N11: TMenuItem; + procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); + procedure JvPopupMenu1Popup(Sender: TObject); + private + procedure SetDescripcion(const Value: String); + procedure SetNombre(const Value: String); + function GetDescripcion: String; + function GetNombre: String; + function GetModificable: Boolean; + procedure SetModificable(const Value: Boolean); + function GetIcono: Integer; + procedure SetIcono(const Value: Integer); + procedure OnMenuItemClick(Sender: TObject); + public + property Nombre : String read GetNombre write SetNombre; + property Descripcion : String read GetDescripcion write SetDescripcion; + property Modificable : Boolean read GetModificable write SetModificable; + property Icono : Integer read GetIcono write SetIcono; + end; + + +implementation + +{$R *.dfm} + +procedure TfrPropiedadesControl.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +begin + CanClose := Length(edtNombre.Text) > 0; + if not CanClose then + ShowMessage('Debe indicar al menos el nombre de este control.'); +end; + +function TfrPropiedadesControl.GetDescripcion: String; +begin + Result := memDescripcion.Lines.Text; +end; + +function TfrPropiedadesControl.GetIcono: Integer; +begin + Result := btnIcono.ImageIndex; +end; + +function TfrPropiedadesControl.GetModificable: Boolean; +begin + Result := not cbModificable.Checked; +end; + +function TfrPropiedadesControl.GetNombre: String; +begin + Result := edtNombre.Text; +end; + +procedure TfrPropiedadesControl.SetDescripcion(const Value: String); +begin + memDescripcion.Lines.Text := Value; +end; + +procedure TfrPropiedadesControl.SetIcono(const Value: Integer); +begin + btnIcono.ImageIndex := Value; +end; + +procedure TfrPropiedadesControl.SetModificable(const Value: Boolean); +begin + cbModificable.Checked := not Value; +end; + +procedure TfrPropiedadesControl.SetNombre(const Value: String); +begin + edtNombre.Text := Value; +end; + +procedure TfrPropiedadesControl.JvPopupMenu1Popup(Sender: TObject); +var + AItem : TMenuItem; + i : integer; +begin + JvPopupMenu1.Items.Clear; + for i := 0 to ReportImages.Count - 1 do + begin + AItem := TMenuItem.Create(JvPopupMenu1); + AItem.OnClick := OnMenuItemClick; + AItem.ImageIndex := i; + JvPopupMenu1.Items.Add(AItem); + end; +end; + +procedure TfrPropiedadesControl.OnMenuItemClick(Sender: TObject); +begin + btnIcono.ImageIndex := (Sender as TMenuItem).ImageIndex; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.dfm new file mode 100644 index 0000000..20e4854 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.dfm @@ -0,0 +1,135 @@ +inherited frViewAgrupaciones: TfrViewAgrupaciones + Width = 228 + Height = 396 + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 228 + Height = 29 + Align = alTop + Caption = 'Agrupaciones' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Margins.Top = 5 + Margins.Bottom = 10 + ParentColor = True + ParentFont = False + Underline = True + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 0 + Top = 29 + Width = 228 + Height = 77 + Align = alTop + AutoSize = True + TabOrder = 1 + DesignSize = ( + 228 + 77) + object Label3: TLabel + Left = 7 + Top = 60 + Width = 74 + Height = 13 + Caption = 'y por '#250'ltimo por:' + Transparent = True + end + object Label2: TLabel + Left = 7 + Top = 32 + Width = 61 + Height = 13 + Caption = 'despu'#233's por:' + Transparent = True + end + object Label1: TLabel + Left = 7 + Top = 4 + Width = 95 + Height = 13 + Caption = 'Agrupar primero por:' + Transparent = True + end + object TBXButton1: TTBXButton + Tag = 1 + Left = 111 + Top = 0 + Width = 111 + Height = 21 + Action = actBoton1 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DropDownMenu = PopupMenu1 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ImageIndex = 0 + ParentFont = False + TabOrder = 0 + Wrapping = twEndEllipsis + end + object TBXButton3: TTBXButton + Tag = 3 + Left = 111 + Top = 56 + Width = 111 + Height = 21 + Action = actBoton3 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DropDownMenu = PopupMenu3 + ImageIndex = 0 + TabOrder = 1 + Wrapping = twEndEllipsis + end + object TBXButton2: TTBXButton + Tag = 2 + Left = 111 + Top = 28 + Width = 111 + Height = 21 + Action = actBoton2 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DropDownMenu = PopupMenu2 + ImageIndex = 0 + TabOrder = 2 + Wrapping = twEndEllipsis + end + end + object PopupMenu1: TPopupMenu + Left = 32 + Top = 136 + end + object PopupMenu2: TPopupMenu + Left = 64 + Top = 136 + end + object PopupMenu3: TPopupMenu + Left = 96 + Top = 136 + end + object ActionList1: TActionList + Left = 32 + Top = 168 + object actBoton2: TAction + OnExecute = actBoton2Execute + OnUpdate = actBoton2Update + end + object actBoton3: TAction + OnExecute = actBoton3Execute + OnUpdate = actBoton3Update + end + object actBoton1: TAction + OnExecute = actBoton1Execute + end + object actMenuClick: TAction + end + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.pas b/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.pas new file mode 100644 index 0000000..ff987e2 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewAgrupaciones.pas @@ -0,0 +1,339 @@ +unit uViewAgrupaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, ActnList, Menus, dxLayoutLookAndFeels, dxLayoutControl, uViewBase, + TBXDkPanels, cxControls, StdCtrls, ImgList, uViewControlGrid, + PngImageList, uViewParametrosControlGrid, JvExControls, JvComponent, + JvArrowButton, cxLookAndFeelPainters, cxButtons; + +type + IViewAgrupaciones = interface(IViewParametrosControlGrid) + ['{42030B8F-B12D-43D2-AEB2-F642F11D78DA}'] + function GetAgrupaciones: TStringList; + end; + + TfrViewAgrupaciones = class(TfrViewParametrosControlGrid, IViewAgrupaciones) + TBXButton1: TTBXButton; + TBXButton2: TTBXButton; + TBXButton3: TTBXButton; + PopupMenu1: TPopupMenu; + PopupMenu2: TPopupMenu; + PopupMenu3: TPopupMenu; + ActionList1: TActionList; + actBoton2: TAction; + actBoton3: TAction; + actBoton1: TAction; + actMenuClick: TAction; + TBXLabel1: TTBXLabel; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + pnlAgrupaciones: TTBXAlignmentPanel; + procedure actBoton2Update(Sender: TObject); + procedure actBoton3Update(Sender: TObject); + procedure actBoton2Execute(Sender: TObject); + procedure actBoton3Execute(Sender: TObject); + procedure actBoton1Execute(Sender: TObject); + procedure AMenuItemClick(Sender: TObject); + protected + FColumns : TStringList; + + FBotonPulsado : TTBXButton; + procedure MarcarItem(AMenuItem : TMenuItem); overload; + procedure MarcarItem(AMenu : TPopupMenu; const ACaption : String); overload; + procedure DesmarcarItem(AMenu : TPopupMenu; const ACaption : String); + procedure DesmarcarItems(AMenu : TPopupMenu); + + procedure OnButtonPopup(Sender: TTBXCustomButton; var AllowDropDown: Boolean); + procedure RellenarListaColumnas; + procedure RellenarAgrupaciones; + procedure SetModificable(const Value: Boolean); override; + public + function GetAgrupaciones: TStringList; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Refresh; override; + procedure Execute; override; + end; + +implementation + +uses + cxGridDBTableView, JclStrings; + +{$R *.dfm} + +const + SIN_AGRUPACION = '(Quitar agrupación)'; + +{ TfrAgrupaciones } + +procedure TfrViewAgrupaciones.MarcarItem(AMenuItem : TMenuItem); +var + AItem : TMenuItem; +begin + AMenuItem.Checked := True; + + AItem := PopupMenu1.Items.Find(AMenuItem.Caption); + if Assigned(AItem) then + AItem.Enabled := False; + + AItem := PopupMenu2.Items.Find(AMenuItem.Caption); + if Assigned(AItem) then + AItem.Enabled := False; + + AItem := PopupMenu3.Items.Find(AMenuItem.Caption); + if Assigned(AItem) then + AItem.Enabled := False; +end; + +procedure TfrViewAgrupaciones.MarcarItem(AMenu : TPopupMenu; const ACaption : String); +var + AItem : TMenuItem; +begin + AItem := AMenu.Items.Find(ACaption); + if Assigned(AItem) then + MarcarItem(AItem); +end; + +procedure TfrViewAgrupaciones.DesmarcarItem(AMenu : TPopupMenu; const ACaption : String); +var + AItem : TMenuItem; +begin + AItem := AMenu.Items.Find(ACaption); + if Assigned(AItem) then + begin + AItem.Enabled := True; + AItem.Checked := False; + end; +end; + +procedure TfrViewAgrupaciones.DesmarcarItems(AMenu : TPopupMenu); +var + i : integer; +begin + for i := 0 to AMenu.Items.Count - 1 do + begin + AMenu.Items[i].Enabled := True; + AMenu.Items[i].Checked := False; + end; +end; + + +function TfrViewAgrupaciones.GetAgrupaciones: TStringList; +var + aux : String; + AIndex : Integer; +begin + Result := TStringList.Create; + if actBoton1.Enabled then + begin + aux := TBXButton1.Caption; + aux := StringReplace(aux, '&', '', [rfReplaceAll, rfIgnoreCase]); + if Length(Trim(aux)) > 0 then + Result.Add(aux); + + if actBoton2.Enabled then + begin + aux := TBXButton2.Caption; + aux := StringReplace(aux, '&', '', [rfReplaceAll, rfIgnoreCase]); + if Length(Trim(aux)) > 0 then + Result.Add(aux); + + if actBoton3.Enabled then + begin + aux := TBXButton3.Caption; + aux := StringReplace(aux, '&', '', [rfReplaceAll, rfIgnoreCase]); + if Length(Trim(aux)) > 0 then + Result.Add(aux); + end; + end; + end; +end; + +procedure TfrViewAgrupaciones.actBoton2Update(Sender: TObject); +begin + (Sender as TAction).Enabled := Length(TBXButton1.Caption) > 0; +end; + +procedure TfrViewAgrupaciones.actBoton3Update(Sender: TObject); +begin + (Sender as TAction).Enabled := Length(TBXButton2.Caption) > 0; +end; + +procedure TfrViewAgrupaciones.actBoton2Execute(Sender: TObject); +begin + // +end; + +procedure TfrViewAgrupaciones.actBoton3Execute(Sender: TObject); +begin + // +end; + +procedure TfrViewAgrupaciones.actBoton1Execute(Sender: TObject); +begin + // +end; + +procedure TfrViewAgrupaciones.AMenuItemClick(Sender: TObject); +var + i : integer; +begin + if (Sender as TMenuItem).MenuIndex > 0 then // El 0 es 'Sin agrupacion' + begin + DesmarcarItem(PopupMenu1, FBotonPulsado.Caption); + DesmarcarItem(PopupMenu2, FBotonPulsado.Caption); + DesmarcarItem(PopupMenu3, FBotonPulsado.Caption); + FBotonPulsado.Caption := (Sender as TMenuItem).Caption; + MarcarItem(Sender as TMenuItem); + end + else begin + DesmarcarItems(PopupMenu1); + DesmarcarItems(PopupMenu2); + DesmarcarItems(PopupMenu3); + // Anular los botones que estén por debajo del actual + for i := 3 downto FBotonPulsado.Tag do + TTBXButton(FindComponent('TBXButton' + IntToStr(i))).Caption := ''; + end; +end; + +constructor TfrViewAgrupaciones.Create(AOwner: TComponent); +begin + inherited; + FColumns := TStringList.Create; + + TBXButton1.OnDropDown := OnButtonPopup; + TBXButton2.OnDropDown := OnButtonPopup; + TBXButton3.OnDropDown := OnButtonPopup; +end; + +procedure TfrViewAgrupaciones.OnButtonPopup(Sender: TTBXCustomButton; + var AllowDropDown: Boolean); +begin + FBotonPulsado := (Sender as TTBXButton); +end; + +procedure TfrViewAgrupaciones.Execute; +var + AgrBotones : TStringList; + i : Integer; +begin + AgrBotones := GetAgrupaciones; + for i := 0 to FColumns.Count - 1 do + (FColumns.Objects[i] as TcxGridDBColumn).GroupIndex := AgrBotones.IndexOf(FColumns.Strings[i]); +end; + +procedure TfrViewAgrupaciones.Refresh; +begin + RellenarListaColumnas; + RellenarAgrupaciones; +end; + +procedure TfrViewAgrupaciones.RellenarListaColumnas; +var + i : integer; + + function DarItem (const ACaption : string):TMenuItem; + begin + Result := NewItem(ACaption, 0, false, true, AMenuItemClick, 0, ''); + end; + +begin + PopupMenu1.Items.Clear; + PopupMenu2.Items.Clear; + PopupMenu3.Items.Clear; + + PopupMenu1.Items.Add(DarItem(SIN_AGRUPACION)); + PopupMenu2.Items.Add(DarItem(SIN_AGRUPACION)); + PopupMenu3.Items.Add(DarItem(SIN_AGRUPACION)); + + for i := 0 to ViewControlGrid.ColumnCount - 1 do + begin + FColumns.AddObject(ViewControlGrid.Columns[i].Caption, ViewControlGrid.Columns[i]); + PopupMenu1.Items.Add(DarItem(ViewControlGrid.Columns[i].Caption)); + PopupMenu2.Items.Add(DarItem(ViewControlGrid.Columns[i].Caption)); + PopupMenu3.Items.Add(DarItem(ViewControlGrid.Columns[i].Caption)); + end; +end; + +destructor TfrViewAgrupaciones.Destroy; +begin + FreeAndNIL(FColumns); + inherited; +end; + +procedure TfrViewAgrupaciones.RellenarAgrupaciones; +var + i : integer; + AList : TStringList; +begin + AList := TStringList.Create; + + try + // Recuperar las agrupaciones del grid + for i := 0 to ViewControlGrid.GroupedColumnCount - 1 do + begin + if i = 3 then + Break; // Sólo meter las 3 primera agrupaciones + AList.Add(ViewControlGrid.GroupedColumns[i].Caption); + end; + + if AList.Count > 0 then + begin + DesmarcarItems(PopupMenu1); + DesmarcarItems(PopupMenu2); + DesmarcarItems(PopupMenu3); + + // Anular los botones que estén por debajo del actual + for i := 1 to 3 do + TTBXButton(FindComponent('TBXButton' + IntToStr(i))).Caption := ''; + + TBXButton1.Caption := AList.Strings[0]; + MarcarItem(TBXButton1.DropDownMenu, AList.Strings[0]); + + if AList.Count > 1 then + begin + TBXButton2.Caption := AList.Strings[1]; + MarcarItem(TBXButton2.DropDownMenu, AList.Strings[1]); + + if AList.Count > 2 then + begin + TBXButton3.Caption := AList.Strings[2]; + MarcarItem(TBXButton3.DropDownMenu, AList.Strings[2]); + end; + end; + end; + finally + FreeAndNil(AList); + end; +end; + +procedure TfrViewAgrupaciones.SetModificable(const Value: Boolean); +begin + inherited; + pnlAgrupaciones.Enabled := Value; + + if pnlAgrupaciones.Enabled then + begin + Label1.Font.Color := clWindowText; + Label2.Font.Color := clWindowText; + Label3.Font.Color := clWindowText; + TBXButton1.Font.Color := clWindowText; + TBXButton2.Font.Color := clWindowText; + TBXButton3.Font.Color := clWindowText; + end + else begin + Label1.Font.Color := clBtnShadow; + Label2.Font.Color := clBtnShadow; + Label3.Font.Color := clBtnShadow; + TBXButton1.Font.Color := clBtnShadow; + TBXButton2.Font.Color := clBtnShadow; + TBXButton3.Font.Color := clBtnShadow; + end +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.dfm new file mode 100644 index 0000000..ecbb78b --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.dfm @@ -0,0 +1,42 @@ +inherited frViewColumnas: TfrViewColumnas + Width = 316 + Height = 350 + object lbColumnas: TcxCheckListBox + Left = 0 + Top = 29 + Width = 316 + Height = 321 + Align = alClient + Items = <> + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.Color = clWindow + 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 + OnClickCheck = lbColumnasClickCheck + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 316 + Height = 29 + Align = alTop + Caption = 'Columnas' + FocusControl = lbColumnas + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Margins.Top = 5 + Margins.Bottom = 10 + ParentColor = True + ParentFont = False + Underline = True + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.pas b/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.pas new file mode 100644 index 0000000..ccba0d7 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewColumnas.pas @@ -0,0 +1,113 @@ +unit uViewColumnas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, dxLayoutControl, cxControls, cxContainer, cxListBox, + TBXDkPanels, ActnList, cxCustomData, cxGridDBTableView, cxGridTableView, + JvExControls, JvComponent, JvxCheckListBox, uViewControlGrid, + cxCheckListBox, cxCheckBox, uViewParametrosControlGrid; + +type + IViewColumnas = interface(IViewParametrosControlGrid) + ['{FD33275B-6875-421A-ABAC-595982ACDDDB}'] + function GetCheckedColumns : TStringList; + end; + + TfrViewColumnas = class(TfrViewParametrosControlGrid, IViewColumnas) + lbColumnas: TcxCheckListBox; + TBXLabel1: TTBXLabel; + procedure lbColumnasClickCheck(Sender: TObject; AIndex: Integer; + APrevState, ANewState: TcxCheckBoxState); + protected + procedure RellenarListaColumnas; + procedure SetModificable(const Value : Boolean); override; + public + procedure Refresh; override; + procedure Execute; override; + function GetCheckedColumns : TStringList; + end; + +implementation + +{$R *.dfm} + +{ TfrViewColumnas } + +procedure TfrViewColumnas.Refresh; +begin + inherited; + RellenarListaColumnas; +end; + +procedure TfrViewColumnas.RellenarListaColumnas; +var + i : integer; + AIndex : Integer; +begin + with lbColumnas do + begin + Items.BeginUpdate; + Items.Clear; + try + for i := 0 to ViewControlGrid.ColumnCount - 1 do + begin + AddItem(ViewControlGrid.Columns[i].Caption); + AIndex := Items.Count - 1; + Items[AIndex].Checked := ViewControlGrid.Columns[i].Visible; + Items[AIndex].ItemObject := ViewControlGrid.Columns[i]; + end; + finally + Items.EndUpdate; + end; + end; +end; + +procedure TfrViewColumnas.lbColumnasClickCheck(Sender: TObject; + AIndex: Integer; APrevState, ANewState: TcxCheckBoxState); +var + i : integer; +begin + inherited; + { No hacer nada por que el cambio en las columnas se debe ver cuando + el usuario pulse sobre el botón 'Refrescar'. } +{ with lbColumnas.Items[AIndex] do + if Assigned(ItemObject) then + (ItemObject as TcxGridDBColumn).Visible := (ANewState = cbsChecked);} +end; + +procedure TfrViewColumnas.Execute; +var + AIndex : integer; +begin + inherited; + for AIndex := 0 to lbColumnas.Items.Count - 1 do + with lbColumnas.Items[AIndex] do + if Assigned(ItemObject) then + (ItemObject as TcxGridDBColumn).Visible := (State = cbsChecked); +end; + +function TfrViewColumnas.GetCheckedColumns: TStringList; +var + AIndex : integer; +begin + result := TStringList.Create; + for AIndex := 0 to lbColumnas.Items.Count - 1 do + if (lbColumnas.Items[AIndex].State = cbsChecked) then + with lbColumnas.Items[AIndex] do + if Assigned(ItemObject) then + Result.Add((ItemObject as TcxGridDBColumn).DataBinding.FieldName); +end; + +procedure TfrViewColumnas.SetModificable(const Value: Boolean); +begin + inherited; + lbColumnas.ReadOnly := not Value; + if lbColumnas.ReadOnly then + lbColumnas.Style.TextColor := clBtnShadow + else + lbColumnas.Style.TextColor := clWindowText; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.dfm new file mode 100644 index 0000000..916411a --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.dfm @@ -0,0 +1,616 @@ +inherited frViewControlBase: TfrViewControlBase + Width = 699 + Height = 607 + ExplicitWidth = 699 + ExplicitHeight = 607 + object TBXMultiDock1: TTBXMultiDock + Left = 0 + Top = 0 + Width = 222 + Height = 607 + Position = dpLeft + object pnlParametros: TTBXDockablePanel + Left = 0 + Top = 0 + Caption = 'Par'#225'metros del informe' + CloseButton = False + CloseButtonWhenDocked = False + DockedWidth = 218 + DockedHeight = 185 + DockMode = dmCannotFloat + DockPos = 0 + ParentShowHint = False + ShowHint = False + SplitHeight = 261 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 0 + object TBXAlignmentPanel2: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 218 + Height = 67 + Margins.Left = 4 + Margins.Top = 4 + Margins.Right = 4 + Margins.Bottom = 4 + Align = alTop + AutoSize = True + TabOrder = 0 + object TBXLink1: TTBXLink + Left = 4 + Top = 4 + Width = 210 + Height = 19 + Cursor = crHandPoint + Margins.Top = 2 + Margins.Bottom = 2 + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ImageIndex = 29 + ParentColor = True + ParentFont = False + TabOrder = 0 + Wrapping = twPathEllipsis + end + object TBXLink5: TTBXLink + Left = 4 + Top = 23 + Width = 210 + Height = 20 + Cursor = crHandPoint + Margins.Top = 2 + Margins.Bottom = 2 + Action = actColumnas + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ImageIndex = 3 + Images = SmallImages + ParentColor = True + ParentFont = False + TabOrder = 1 + Wrapping = twPathEllipsis + end + object TBXLink2: TTBXLink + Left = 4 + Top = 43 + Width = 210 + Height = 20 + Cursor = crHandPoint + Margins.Top = 2 + Margins.Bottom = 2 + Action = actAgrupaciones + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ImageIndex = 0 + Images = SmallImages + ParentColor = True + ParentFont = False + TabOrder = 2 + Wrapping = twPathEllipsis + end + end + object pcParametros: TPageControl + Left = 0 + Top = 67 + Width = 218 + Height = 169 + ActivePage = tsAgrupacion + Align = alClient + Style = tsFlatButtons + TabOrder = 1 + object TabSheet5: TTabSheet + Caption = 'TabSheet5' + TabVisible = False + end + object tsColumnas: TTabSheet + Caption = 'tsColumnas' + ImageIndex = 1 + TabVisible = False + inline frViewColumnas1: TfrViewColumnas + Left = 0 + Top = 0 + Width = 210 + Height = 159 + Align = alClient + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 210 + ExplicitHeight = 159 + inherited lbColumnas: TcxCheckListBox + Width = 210 + Height = 130 + ExplicitWidth = 210 + ExplicitHeight = 130 + end + inherited TBXLabel1: TTBXLabel + Width = 210 + ExplicitWidth = 210 + end + end + end + object tsAgrupacion: TTabSheet + Caption = 'tsAgrupacion' + ImageIndex = 2 + TabVisible = False + inline frViewAgrupaciones1: TfrViewAgrupaciones + Left = 0 + Top = 0 + Width = 210 + Height = 159 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 210 + ExplicitHeight = 159 + inherited TBXLabel1: TTBXLabel + Width = 210 + ExplicitWidth = 210 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 210 + ExplicitWidth = 210 + DesignSize = ( + 210 + 77) + inherited Label3: TLabel + Width = 74 + ExplicitWidth = 74 + end + inherited Label2: TLabel + Width = 61 + ExplicitWidth = 61 + end + inherited Label1: TLabel + Width = 95 + ExplicitWidth = 95 + end + inherited TBXButton1: TTBXButton + Width = 97 + ExplicitWidth = 97 + end + inherited TBXButton3: TTBXButton + Width = 97 + ExplicitWidth = 97 + end + inherited TBXButton2: TTBXButton + Width = 97 + ExplicitWidth = 97 + end + end + inherited PopupMenu1: TPopupMenu + Left = 24 + Top = 120 + end + inherited PopupMenu2: TPopupMenu + Left = 56 + Top = 120 + end + inherited PopupMenu3: TPopupMenu + Left = 88 + Top = 120 + end + end + end + end + object TBXAlignmentPanel3: TTBXAlignmentPanel + Left = 0 + Top = 236 + Width = 218 + Height = 30 + Align = alBottom + TabOrder = 2 + object bRefrescar: TButton + Left = 2 + Top = 4 + Width = 100 + Height = 21 + Action = actRefrescar + TabOrder = 0 + end + end + end + object pnlTareas: TTBXDockablePanel + Left = 0 + Top = 288 + Caption = 'Modificar el informe' + CloseButton = False + CloseButtonWhenDocked = False + DockedWidth = 218 + DockMode = dmCannotFloat + DockPos = 288 + FloatingWidth = 128 + FloatingHeight = 128 + SplitHeight = 276 + SplitWidth = 3 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + object TBXPageScroller1: TTBXPageScroller + Left = 0 + Top = 0 + Width = 218 + Height = 281 + Align = alClient + DoubleBuffered = False + Range = 0 + TabOrder = 0 + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 0 + Width = 218 + Height = 48 + Margins.Left = 4 + Margins.Top = 4 + Margins.Right = 4 + Margins.Bottom = 4 + Align = alTop + AutoSize = True + TabOrder = 0 + object bFiltros: TTBXLink + Left = 4 + Top = 24 + Width = 210 + Height = 20 + Cursor = crHandPoint + Margins.Top = 2 + Margins.Bottom = 2 + Action = actFiltros + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ImageIndex = 1 + Images = SmallImages + ParentColor = True + ParentFont = False + TabOrder = 0 + end + object bSumarios: TTBXLink + Left = 4 + Top = 4 + Width = 210 + Height = 20 + Cursor = crHandPoint + Margins.Top = 2 + Margins.Bottom = 2 + Action = actSumarios + Align = alTop + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ImageIndex = 2 + Images = SmallImages + ParentColor = True + ParentFont = False + TabOrder = 1 + end + end + object pcTareas: TPageControl + Left = 0 + Top = 48 + Width = 218 + Height = 233 + ActivePage = tsFiltros + Align = alClient + Style = tsButtons + TabOrder = 1 + object tsSumarios: TTabSheet + Caption = 'tsSumarios' + ImageIndex = 2 + TabVisible = False + inline frViewSumarios1: TfrViewSumarios + Left = 0 + Top = 0 + Width = 210 + Height = 223 + Align = alClient + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 210 + ExplicitHeight = 223 + inherited TBXLabel1: TTBXLabel + Width = 210 + ExplicitWidth = 210 + end + inherited vgSumarios: TcxVerticalGrid + Width = 210 + Height = 194 + ExplicitWidth = 210 + ExplicitHeight = 194 + end + end + end + object tsFiltros: TTabSheet + Caption = 'tsFiltros' + ImageIndex = 1 + TabVisible = False + inline frViewFiltros1: TfrViewFiltros + Left = 0 + Top = 0 + Width = 210 + Height = 223 + Align = alClient + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 210 + ExplicitHeight = 223 + inherited vgFiltros: TcxVerticalGrid + Width = 196 + Height = 0 + ExplicitWidth = 196 + ExplicitHeight = 0 + inherited vgFiltrosEditorRow1: TcxEditorRow + Properties.EditProperties.OnEditValueChanged = nil + end + end + inherited TBXLabel1: TTBXLabel + Width = 210 + ExplicitWidth = 210 + end + inherited cxFilterControl1: TcxFilterControl + Width = 210 + Height = 164 + ExplicitWidth = 210 + ExplicitHeight = 164 + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 193 + Width = 210 + ExplicitTop = 193 + ExplicitWidth = 210 + end + end + end + end + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000794944415478DA + 63FCFFFF3F0325809162030CDD338936E1FCCEE98C580DC8CF4C870BFCF9F397 + E1FBCF5F0CDF7E00F1F79F0C5FBEFF6078F6FA3DC38D8B27F01BB0F3D845BCB6 + E33580222F60530832149B62AC81884B825843F02A20C6108236103204671810 + E37FBC06109B36F01A404CDAA0DC0B039E1B0126BE69852B2E82B70000000049 + 454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001574944415478DA + 63FCFFFF3F0308303232826943C3648800109C3F3F9791010780EB433600A4D9 + B1A892E1129300C399C38719144F6E61483F3F17AE2903A88CA001E7053C1918 + B8B9197C448E33F82C68620868296078346B2503EBA3E70C27910CC169809AC5 + 578685FA3718FEE99A332CB29EC9602427C9C00FD4CC0A54B38B9001B53D0BFE + 57F34C60600E2E6160E27AC6F07BF1328605191718D480F27C407C069F0175BD + 0BFF4BE87832243F7067604F2F61F839B38781D53E8AE1D9C5DD0C5B237683D5 + 6C4D6A03D34FCEDF6538776E0E238A017EC9EDFF37CDAD64F8F4FD2F43CFB425 + 60B10BD79EA1847C4A4626C39377BF18E65456611A00F2826F521BDC90379FFE + 30BCFDFC07AEF9F9FBDF70CDA0E8C51A062080CD1074CD38031106900D3970E5 + 3386668206201B326DE72B0CCD2419606494823549D3C780096D450C219ED9E4 + 1B004A30B8722451066C9E5745303B030083AA15F0BB1362F30000000049454E + 44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000000534944415478DA + 63FCFFFF3F03258071F018C0C8C848944940F58CB80CB0075207A0E20E407C10 + BB7EDC0680288286A07B19DD0082861063005E43883500A72174710145614051 + 2C509C0E284B89E4028A0D0000DBA366E1865C514F0000000049454E44AE4260 + 82} + Name = 'PngImage27' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011E4944415478DA + 63FCFFFF3F0325801164C0D22D27C936056E40B48F39511AFEFCFDC7F0FBCF5F + 3076082E423540ADEA3C5CE165F924148DBA0FE7C1D967AA351916AD3BC0306F + E9264C036EB5198215FD9C09A43DBE3030BC60605830E30E43FA7C882F416A8E + 96AA32ACDC728408030C80063CE06058B0E30A8A01070B9519D6EE3886DD006C + 5E5870E20243AFE439387F4FAE02C3A63D27C9F7C28E4C59866D07CE90EF85CD + A9D20CBB8F9C23DF0BABE3C4180E9FBE4CBE17964589309C387F15D580704F53 + 06ADDA8B447961619820C3D9CB37500D08723562D06FBC82E20590D36100D90B + 7382F8182E5DBF8D6A80AFA33EC39F3F88640A67FFFE0B1543C8FDFBF79FE1CA + CD3BA80678DAEA322CDB7488A48C846240EF948564E54600564A377B046BCB77 + 0000000049454E44AE426082} + Name = 'PngImage28' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001534944415478DA + 63542C3BFB9F8102C00832A0CE570F43E2E76F06864F5FFF337CFCF20F4C7FFA + FE9FE11750ECF3B7FF0C5FBE41E87FD74BB11B804D334C13CC001060B9033580 + 5CE70B5C9CC3C0B866CDEAFFC1C1217815FEFDF79FE1F79FBF402FFC61F8FDFB + 2F98BD66FB3186794B37611AC0987812CE6E50D881D5C0C4B43C864D7B4EE236 + E044860183C58C0B0C5247F318562FD8CF109AE008A6ADACB8181A1B1B196292 + 7218B61F388D6A0048026CEB030FB861475375C19A4100640008ECDEDDCD101E + 97C9B0E7C8394C03EAEBEB198E1DFB06B60944C334C30C80B9C03F3C85E1C8E9 + CB9806B8BA96E20CC8CBD6DC70B6E1A5870CA72E5C23EC02647A26232343FAD9 + B30C338D8D1974CEDE63387FF526F630C005241A1AE06CF593B719AEDCBC8330 + C0D73F101EBFBF40348CFDE72F5671104031C0C3CB8F61FE9A7D24A744B801AD + B349D70C4F37FFFF53949B1900BA770EC0E001FEA50000000049454E44AE4260 + 82} + Name = 'PngImage29' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 368 + Top = 32 + Bitmap = {} + end + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000CA4944415478DA + 63FCFFFF3F032D01E3D0B7A0A0730DD56C98501EC288D5020375151441908D7F + FFFE63F8FBEF1FC33F10FDF72F980D11FB0F66FF0189FD05D110F68EED9B19CE + EF9C4ED802720C07B177EFDA4AD802720D07D1FBF7EEC06F012586FF03CA1FDC + BF13B705FA400BEE3D7E497464A21B0E02782D38B86F2F555211560B88D50C73 + 083643F00192149363094916906309C916906A095916906209232ECDE45A4CB4 + 05D42A9F88B28092F289A00594964F782DA046F984D3026A954F382DA056F934 + F42B7D00F75AE9FD6BE4FF8E0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022F4944415478DA + 63FCFFFF3F030C303232C2D98686C9FA406A0A101B00F174205E7AFEFCDC8B0C + 44001433B1590034FC30C8E0ECB9737840FCA9C92920AA1F8817822CD902B40C + C85EE6C3C0B095640B8086AF033203818633ACBBCFC0B0EDFA7584AFD6F63234 + 9F9F8B6C16C89268522DF82F593387615B0BD4202323087DEE1CC396F3290CB6 + F3BA19FEBC7DC670BCB49F410B28BC0F8881FE6324C982F346D908D54083FFF7 + A4306C7566C0301C06D02D21CA82648E7360B11EAB140681A8974053C4C19680 + 00B2E120F00A88AF205982D782C6A605FF1FBDFCC3602A3187215CE904C47086 + CD60F90FCB52186E46430C7342337C63521BC3E67955F82D686A5EF85F4C531D + CCCE10B2049A826AB880E51C86F3FB52187EA5400CD5811AFE7BF571B09A6DDB + F783E94D732B19715AF0878B81E1C2B567508562D040069AA83807AE0E64C9B9 + 14081B6438C860032D2906091D4F861DABE6E2B7A0AC2296E1D79FFF0CBF8178 + E2ACA508CB6AC4E086D71F6B83EB01196C62E70F663F79F70BBF05A038A8ED59 + F0BF2A2F96E1EB8F7F0CBFFFFE67F803C4207AFEE21560CB4006FA0784A0C87D + FEFE0F6E38281E08E66498251FBEFE851B8242FF41B0DF7DF98B6238C1540403 + A0D4040AAE379FFEE0B4E0D5C73F1886136D01B225CFDFFFC6B0E0E9BBDF580D + 27C902644B1EBFF905B7E0C1AB5F380D27D902644BEEBDFC09B6E0C88D2F380D + 27CB02644BE6ED7B83D7F0510B86B80522669E040DA7C882330F9E11349C220B + EAEB12081A8E6E01002A731EEF226ACE030000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300004E2000004E2001167D99DE000000DB4944415478DA + 63FCFFFF3F032D01E3A805245BC0C8C848B68D40B31889B16002908A066211A8 + 9003101FC463AE3D10EB03F144622D0051CD405C0315DA09C4ED4458D20034CB + 91580B40603E102740D97B80B88580250CD8E2139F0520D007C48550F62520CE + 43B304A49805887F936B01084C841A0C02A780B80C974FC8B500045600713894 + BD05887BB0F8E43F29168035A0A96D00E27A28FB3210E7A2FB84121FB001F12F + 205E0EC41150B11D40DC01C42780F827A916D0DD07548F036440D35444937CC0 + 0AD540D39C4CD3B288E6A5296DEB036A83A16F01003B61B4D1E99D5171000000 + 0049454E44AE426082} + Name = 'PngImage27' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001AD4944415478DA + 63FCFFFF3F032D0123C882A55B4ED2C496681F7346B805400E5986FC03EAFFF7 + EF3FC3DFBFFF20F81F88FECFE01456CC706EC734540BE44BCFA168BEA5928C61 + A0DA9DB9782D3C5FA3C1B06CD32186794B3761B7E07E97215CF1EF59460C0C1E + 6F802C1606862FEC0C0B7A6E32A4CEFB0797572C3B8FA21EC43F53A5C6B072CB + 11522CF800369CE1051BC3822597095A70B25C9561CDF6A3245860F31D6C38C3 + 1D668605272E10B4E058A932C3FA9DC7715B8011070F24E0FC052F7630B4899C + C51B07878B141936ED3949BB383858A0C0B065DF29DAC5C1DE5C39861D07CFD0 + 2E0E7666C930EC39728E7671B02D5D8A61FFF10BB48B83CDA9120C874E5EA25D + 1C6C481263387AE60AEDE2606DBC28C389F357312D88F436032BA0340E56440B + 319CBD7C03D382704F5306E58A0B14C7C1D24801860B576F615A10E46AC4A051 + 7399E2385814C6C770F9C61D4C0BFC9D0C18B4EBAF521C070B43F918AEDCC462 + 818F833E835EE3358C3800198A0C08C5014E0B3C6D75E1B51184FE07A9A9D0C4 + 20B5D67F863F2835D83F06E4AA1DAB056ED6DAE08A825A00C382DE290BA96638 + 0CC02DA02500004F8255EF277FDA8C0000000049454E44AE426082} + Name = 'PngImage28' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000022E4944415478DA + 63FCFFFF3F032D0123DD2C60646404D351F98B2700A97C209EB86C626C013186 + E0D203321B9B05FF974E886130F2C86238BF733A23911660D583628152F93930 + C3F2E735063B4D558699EB17327CD04F212A1870E9B9D769C48862419DAF1EC3 + EE352BC0FCEB378E31E4D54C4231E8DB8FFF0C5F81184243F8DF80F4CF3B6BE0 + 7AB8F47BC0E21F386E62B7E0E6C5730C3B372F6070F74D6050D7372268F8F79F + 0C0C7FDF5C60B8737E11838C761CC3933FBA0C7FFE32307CE1C661013680CF70 + 30FBE77F381B64380860B580DCA4880BA058B076F7C5FFC1AEFA446BFEF70FE4 + DA7F0C7F804E86D040FC17C25EB7F338C3BCA59B18CEED9886DF02C6C49328FC + C94EEF095AECE76CCEB069EF49122CB87082E1C48C0C068B191718A48EE6313C + BD7592E1D8B16F0C56565C6035C8EC298B7730783998326C3B709A780B4E6418 + 80D9200B1678BC60A8AA6D6358BD603FD850693573381B66819BAD31C3AEC367 + 715B00520403B9FB04512C3C9AAACB70FBF16EB0253000B20006CEDD3DC4E064 + 69C0B0EFF805FC16E4C47A60781F990D7239B205C83EB033D3633874EA12F916 + 201B8ECD020B432D8613E7AFE1B7C048D98EE8E47AD99A1B85AF7FFE3EC399CB + 37280B2264F64C60297C0648CF3E7B9661A6B13183F699BB0C17AEDDA2AE05E9 + 40C3C16CA005EA276F335CB97987B854440C608DF344E1E3B5C0DF511792DDC1 + D9FE1F1A1BA938C0210F03382DF0B6D36298B36A2F493EC005B05AD0DA3B932A + 86C3008A05B40200F47739EF77A04B0C0000000049454E44AE426082} + Name = 'PngImage29' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 328 + Top = 32 + Bitmap = {} + end + object EditorActionList: TActionList + Images = SmallImages + Left = 288 + Top = 32 + object actAgrupaciones: TAction + Category = 'Tareas' + Caption = 'Agrupaciones' + ImageIndex = 0 + OnExecute = actAgrupacionesExecute + end + object actColumnas: TAction + Category = 'Tareas' + Caption = 'Columnas' + ImageIndex = 3 + OnExecute = actColumnasExecute + end + object actSumarios: TAction + Category = 'Tareas' + Caption = 'Res'#250'menes' + ImageIndex = 2 + OnExecute = actSumariosExecute + end + object actFiltros: TAction + Category = 'Tareas' + Caption = 'Filtros' + ImageIndex = 1 + OnExecute = actFiltrosExecute + end + object actRefrescar: TAction + Category = 'Ver' + Caption = 'Refrescar' + end + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.pas b/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.pas new file mode 100644 index 0000000..6104911 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlBase.pas @@ -0,0 +1,179 @@ +unit uViewControlBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, TBXDkPanels, StdCtrls, ComCtrls, TB2Dock, + uViewAgrupaciones, uCustomView, uViewColumnas, ImgList, PngImageList, + ActnList, uViewControlGrid, uBizControlesBase, uViewSumarios, + uViewParametrosControlGrid, uViewFiltros, cxStyles; + +type + IViewControlBase = interface(IViewBase) + ['{A9892225-82DB-41AF-B69D-821E0663B3EF}'] + function GetModificable: Boolean; + procedure SetModificable(const Value: Boolean); + property Modificable : Boolean read GetModificable write SetModificable; + + function GetControl: IBizControlBase; + procedure SetControl(const Value: IBizControlBase); + property Control: IBizControlBase read GetControl write SetControl; + + function GetOnViewChanged : TNotifyEvent; + procedure SetOnViewChanged(const Value : TNotifyEvent); + property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged; + end; + + TfrViewControlBase = class(TfrViewBase, IViewControlBase) + TBXMultiDock1: TTBXMultiDock; + pnlParametros: TTBXDockablePanel; + TBXAlignmentPanel2: TTBXAlignmentPanel; + TBXLink1: TTBXLink; + TBXLink5: TTBXLink; + TBXLink2: TTBXLink; + pcParametros: TPageControl; + TabSheet5: TTabSheet; + tsColumnas: TTabSheet; + tsAgrupacion: TTabSheet; + TBXAlignmentPanel3: TTBXAlignmentPanel; + bRefrescar: TButton; + pnlTareas: TTBXDockablePanel; + TBXPageScroller1: TTBXPageScroller; + TBXAlignmentPanel1: TTBXAlignmentPanel; + bFiltros: TTBXLink; + bSumarios: TTBXLink; + pcTareas: TPageControl; + tsSumarios: TTabSheet; + tsFiltros: TTabSheet; + frViewColumnas1: TfrViewColumnas; + frViewAgrupaciones1: TfrViewAgrupaciones; + SmallImages: TPngImageList; + LargeImages: TPngImageList; + EditorActionList: TActionList; + actAgrupaciones: TAction; + actColumnas: TAction; + actSumarios: TAction; + actFiltros: TAction; + frViewSumarios1: TfrViewSumarios; + actRefrescar: TAction; + frViewFiltros1: TfrViewFiltros; + procedure actColumnasExecute(Sender: TObject); + procedure actSumariosExecute(Sender: TObject); + procedure actFiltrosExecute(Sender: TObject); + procedure actAgrupacionesExecute(Sender: TObject); + protected + FControl : IBizControlBase; + FOnViewChanged : TNotifyEvent; + FModificable : Boolean; + procedure ActivarTarea (const ATarea : Integer); virtual; + function GetControl: IBizControlBase; virtual; + procedure SetControl(const Value: IBizControlBase); virtual; + function GetOnViewChanged : TNotifyEvent; virtual; + procedure SetOnViewChanged(const Value : TNotifyEvent); virtual; + function GetModificable: Boolean; virtual; + procedure SetModificable(const Value: Boolean); virtual; + public + property Modificable : Boolean read GetModificable write SetModificable; + property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged; + property Control: IBizControlBase read GetControl write SetControl; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +{$R *.dfm} + +const + COLUMNAS = 1; + AGRUPACIONES = 2; + SUMARIOS = 3; + FILTROS = 4; + + +procedure TfrViewControlBase.actColumnasExecute(Sender: TObject); +begin + inherited; + ActivarTarea(COLUMNAS); + frViewColumnas1.Refresh; +end; + +procedure TfrViewControlBase.ActivarTarea(const ATarea: Integer); +begin + case ATarea of + COLUMNAS : pcParametros.ActivePage := tsColumnas; + AGRUPACIONES : pcParametros.ActivePage := tsAgrupacion; + SUMARIOS : pcTareas.ActivePage := tsSumarios; + FILTROS : pcTareas.ActivePage := tsFiltros; + end; +end; + +function TfrViewControlBase.GetControl: IBizControlBase; +begin + Result := FControl; +end; + +procedure TfrViewControlBase.SetControl(const Value: IBizControlBase); +begin + FControl := Value; + frViewColumnas1.Refresh; + frViewAgrupaciones1.Refresh; + + // ¿Es modificable el control? + Self.Modificable := FControl.EsModificable; +end; + +procedure TfrViewControlBase.actSumariosExecute(Sender: TObject); +begin + inherited; + ActivarTarea(SUMARIOS); + frViewSumarios1.Refresh; +end; + +procedure TfrViewControlBase.actFiltrosExecute(Sender: TObject); +begin + inherited; + ActivarTarea(FILTROS); + frViewFiltros1.Refresh; + end; + +procedure TfrViewControlBase.actAgrupacionesExecute(Sender: TObject); +begin + inherited; + ActivarTarea(AGRUPACIONES); + frViewAgrupaciones1.Refresh; +end; + +function TfrViewControlBase.GetOnViewChanged: TNotifyEvent; +begin + Result := FOnViewChanged; +end; + +procedure TfrViewControlBase.SetOnViewChanged(const Value: TNotifyEvent); +begin + FOnViewChanged := Value; +end; + +constructor TfrViewControlBase.Create(AOwner: TComponent); +begin + inherited; + FModificable := False; + pcParametros.ActivePage := tsColumnas; + pcTareas.ActivePage := tsSumarios; + FOnViewChanged := nil; +end; + +function TfrViewControlBase.GetModificable: Boolean; +begin + Result := FModificable; +end; + +procedure TfrViewControlBase.SetModificable(const Value: Boolean); +begin + FModificable := Value; + + frViewColumnas1.Modificable := FModificable; + frViewAgrupaciones1.Modificable := FModificable; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.dfm new file mode 100644 index 0000000..60e526d --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.dfm @@ -0,0 +1,149 @@ +inherited frViewControlGrid: TfrViewControlGrid + object dxPrintStyleManager1: TdxPrintStyleManager + CurrentStyle = dxPrintStyleManager1Style1 + PageSetupDialog = dxPageSetupDialog1 + Version = 0 + Left = 16 + Top = 16 + 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 = ( + 'VARELA IMAGEN Y DISE'#209'O 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 + object dxPageSetupDialog1: TdxPageSetupDialog + ButtonsVisible = [psbStyleOptions] + Left = 48 + Top = 16 + end + object dxPSEngineController1: TdxPSEngineController + LookAndFeel = pslfOffice11 + UseNativeLookAndFeel = False + Left = 80 + Top = 16 + end + object dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxPrinterLinkcxGrid + PreviewOptions.ShowExplorer = True + PreviewOptions.WindowState = wsMaximized + Version = 0 + Left = 112 + Top = 16 + object dxPrinterLinkcxGrid: TdxGridReportLink + 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 = 38877.461868113420000000 + StyleManager = dxPrintStyleManager1 + OptionsCards.Shadow.Depth = 0 + OptionsExpanding.ExpandGroupRows = 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 cxStyleRepositoryInforme: TcxStyleRepository + Left = 112 + Top = 48 + 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 +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.pas b/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.pas new file mode 100644 index 0000000..4303660 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlGrid.pas @@ -0,0 +1,284 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewControlGrid; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, ActnList, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, dxPScxCommon, dxPScxGridLnk, + dxPgsDlg; + +type + IViewControlGrid = interface(IViewBase) + ['{566F315A-70A6-4BCE-8A02-0C7E10FF311A}'] + procedure ExpandirTodo; + procedure ContraerTodo; + procedure AjustarAncho; + procedure Preview; + procedure Print; + procedure PrintSetup; + procedure GotoFirst; + procedure GotoLast; + + function GetColumnByCaption (const ACaption : String): TcxGridDBColumn; + + function GetFocusedView : TcxGridDBTableView; + property FocusedView : TcxGridDBTableView read GetFocusedView; + + function GetColumnCount: Integer; + function GetColumns(Index: Integer): TcxGridDBColumn; + property Columns[Index: Integer] : TcxGridDBColumn read GetColumns; + property ColumnCount : Integer read GetColumnCount; + + function GetGroupedColumnCount: Integer; + function GetGroupedColumns(index: Integer): TcxGridColumn; + property GroupedColumns[Index: Integer] : TcxGridColumn read GetGroupedColumns; + property GroupedColumnCount : Integer read GetGroupedColumnCount; + + function GetOnViewChanged : TNotifyEvent; + procedure SetOnViewChanged(const Value : TNotifyEvent); + property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged; + + function GetViewProperties: String; + procedure SetViewProperties(const Value: String); + property ViewProperties: String read GetViewProperties write SetViewProperties; + + function GetFilterValueList(index: Integer) : TStringList; + property FilterValueList[Index : Integer]: TStringList read GetFilterValueList; + + function GetOnFilterChanged: TNotifyEvent; + procedure SetOnFilterChanged(const Value: TNotifyEvent); + property OnFilterChanged: TNotifyEvent read GetOnFilterChanged write SetOnFilterChanged; + end; + + TfrViewControlGrid = class(TfrViewBase, IViewControlGrid) + dxPrintStyleManager1: TdxPrintStyleManager; + dxPrintStyleManager1Style1: TdxPSPrintStyle; + dxPageSetupDialog1: TdxPageSetupDialog; + dxPSEngineController1: TdxPSEngineController; + dxComponentPrinter: TdxComponentPrinter; + dxPrinterLinkcxGrid: TdxGridReportLink; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + private + protected + FOnViewChanged : TNotifyEvent; + FOnFilterChanged : TNotifyEvent; + function GetColumnCount: Integer; + function GetColumns(Index: Integer): TcxGridDBColumn; + function GetGroupedColumnCount: Integer; + function GetGroupedColumns(Index: Integer): TcxGridColumn; + function GetFocusedView : TcxGridDBTableView; virtual; abstract; + function GetColumnByCaption (const ACaption : String): TcxGridDBColumn; + function GetOnViewChanged : TNotifyEvent; virtual; + procedure SetOnViewChanged(const Value : TNotifyEvent); virtual; + function GetOnFilterChanged: TNotifyEvent; virtual; + procedure SetOnFilterChanged(const Value: TNotifyEvent); virtual; + function GetViewProperties: String; virtual; + procedure SetViewProperties(const Value: String); virtual; + function GetFilterValueList(index: Integer) : TStringList; virtual; + procedure ActivarEventos; virtual; + procedure DesactivarEventos; virtual; + public + procedure Preview; virtual; + procedure Print; virtual; + procedure PrintSetup; virtual; + procedure GotoFirst; virtual; + procedure GotoLast; virtual; + procedure ExpandirTodo; virtual; + procedure ContraerTodo; virtual; + procedure AjustarAncho; virtual; + property FocusedView : TcxGridDBTableView read GetFocusedView; + property Columns[Index: Integer] : TcxGridDBColumn read GetColumns; + property ColumnCount : Integer read GetColumnCount; + property GroupedColumns[Index: Integer] : TcxGridColumn read GetGroupedColumns; + property GroupedColumnCount : Integer read GetGroupedColumnCount; + property OnViewChanged: TNotifyEvent read GetOnViewChanged write SetOnViewChanged; + property OnFilterChanged: TNotifyEvent read GetOnFilterChanged write SetOnFilterChanged; + property ViewProperties: String read GetViewProperties write SetViewProperties; + property FilterValueList[Index : Integer]: TStringList read GetFilterValueList; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +{$R *.dfm} + +{ TfrViewControlGrid } + +procedure TfrViewControlGrid.ActivarEventos; +begin + // +end; + +procedure TfrViewControlGrid.AjustarAncho; +begin + FocusedView.ApplyBestFit; +end; + +procedure TfrViewControlGrid.ContraerTodo; +begin + FocusedView.ViewData.Collapse(True); +end; + +constructor TfrViewControlGrid.Create(AOwner: TComponent); +begin + inherited; + FOnViewChanged := nil; +end; + +procedure TfrViewControlGrid.DesactivarEventos; +begin + // +end; + +procedure TfrViewControlGrid.ExpandirTodo; +begin + FocusedView.ViewData.Expand(True); +end; + +function TfrViewControlGrid.GetColumnByCaption( + const ACaption: String): TcxGridDBColumn; +var + i : integer; +begin + Result := NIL; + for i := 0 to FocusedView.ColumnCount - 1 do + if FocusedView.Columns[i].Caption = ACaption then + begin + Result := FocusedView.Columns[i]; + Break; + end; +end; + +function TfrViewControlGrid.GetColumnCount: Integer; +begin + Result := FocusedView.ColumnCount; +end; + +function TfrViewControlGrid.GetColumns(Index: Integer): TcxGridDBColumn; +begin + Result := FocusedView.Columns[Index]; +end; + +function TfrViewControlGrid.GetFilterValueList( + index: Integer): TStringList; +var + AValueList : TcxDataFilterValueList; + i : Integer; +begin + Result := TStringList.Create; + AValueList := TcxDataFilterValueList.Create(FocusedView.DataController.Filter); + try + AValueList.Load(Columns[Index].Index); + for i := 0 to AValueList.Count - 1 do + Result.Add(AValueList[i].DisplayText); + finally + FreeAndNil(AValueList); + end; +end; + +function TfrViewControlGrid.GetGroupedColumnCount: Integer; +begin + Result := FocusedView.GroupedColumnCount; +end; + +function TfrViewControlGrid.GetGroupedColumns( + Index: Integer): TcxGridColumn; +begin + Result := FocusedView.GroupedColumns[Index]; +end; + +function TfrViewControlGrid.GetOnFilterChanged: TNotifyEvent; +begin + Result := FOnFilterChanged; +end; + +function TfrViewControlGrid.GetOnViewChanged: TNotifyEvent; +begin + Result := FOnViewChanged; +end; + +function TfrViewControlGrid.GetViewProperties: String; +var + AStream : TStringStream; +begin + DesactivarEventos; + AStream := TStringStream.Create(''); + try + FocusedView.StoreToStream(AStream, [gsoUseFilter,gsoUseSummary], FocusedView.Name); + Result := AStream.DataString; + finally + AStream.Free; + ActivarEventos; + end; +end; + +procedure TfrViewControlGrid.GotoFirst; +begin + FocusedView.DataController.GotoFirst; +end; + +procedure TfrViewControlGrid.GotoLast; +begin + FocusedView.DataController.GotoLast; +end; + +procedure TfrViewControlGrid.Preview; +begin + dxPrinterLinkcxGrid.Preview; +end; + +procedure TfrViewControlGrid.Print; +begin + dxPrinterLinkcxGrid.Print(True, nil); +end; + +procedure TfrViewControlGrid.PrintSetup; +begin + dxPrinterLinkcxGrid.PageSetup; +end; + +procedure TfrViewControlGrid.SetOnFilterChanged(const Value: TNotifyEvent); +begin + FOnFilterChanged := Value; +end; + +procedure TfrViewControlGrid.SetOnViewChanged(const Value: TNotifyEvent); +begin + FOnViewChanged := Value; +end; + +procedure TfrViewControlGrid.SetViewProperties(const Value: String); +var + AStream : TStringStream; +begin + DesactivarEventos; + AStream := TStringStream.Create(Value); + try + AStream.Position := 0; + FocusedView.RestoreFromStream(AStream, True, True, [gsoUseFilter,gsoUseSummary], + FocusedView.Name); + finally + AStream.Free; + ActivarEventos; + end; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.dfm new file mode 100644 index 0000000..061fcfb --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.dfm @@ -0,0 +1,274 @@ +inherited frViewControlesBase: TfrViewControlesBase + object EasyListview: TEasyListview + Left = 0 + Top = 0 + Width = 294 + Height = 214 + Align = alClient + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'Tahoma' + EditManager.Font.Style = [] + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'Tahoma' + GroupFont.Style = [] + HintAlignment = taLeftJustify + Header.Columns.Items = { + 0500000001000000110000005445617379436F6C756D6E53746F726564FFFECE + 0005000000800800010000010000000000000121010000000000000000000000 + 00000000000000} + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + ImagesLarge = ReportImages + PaintInfoGroup.BandColor = clGradientActiveCaption + PaintInfoGroup.BandThickness = 2 + PaintInfoGroup.CaptionIndent = 5 + PaintInfoGroup.Expandable = False + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + Selection.AlphaBlend = True + TabOrder = 0 + View = elsTile + OnItemContextMenu = EasyListviewItemContextMenu + OnItemDblClick = EasyListviewItemDblClick + OnItemSelectionChanged = EasyListviewItemSelectionChanged + end + object ReportImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002024944415478DA + BDD5DB2E03411800E0E923B870E1CE9D085A940B823894D2489C4FAFE101BC80 + 8444840B89B3D4A954292D8A2855DD5655EB14E205A4570E09BAFB9B5944C7A1 + B335F87727F3CFBF93F976B3995D1500A0FF0C553468D93A9107A4F6D6A8313E + E4F33597AFCBE74BDED93384FCF67E5534F0F181287061F3186A4AD27E74E746 + AB80921213507B471785C604CD1B21A82D4DFF1138B1B48F325393D175F88642 + FF0494F01A46AB07156853D0EDFD0385C604E71D41A82BCB880B1325098922A0 + 699B80CAF2D2D1E35384420F6C7DAA6FC1B9F523A8D7A9E3C6483F6BF7A2EEBE + B14F736282A6F50034E834716392847B51425BDE2B74777F87C2E1B03C6770C2 + C200D73058CE06BFC23ED64C36171B9C5D3D84C68A4C6E8CD4CC6B6E363863F7 + 43933E8B1B23F9A2C3C306A7ED07D0ACCFE6C6486EDD14D8E094CD072D955A0A + 227B8C0550B5D7F1AAD3A7005CC16095961B23BD63D7CF062757BCD05A95C38D + C95BC41D6083C66501DA0CB9DC18694E21A800B40AD062C8E1C6445C77F9426C + 107FF1F13BCCE5C622B8F71C9E28031B2BB4DC18C97DC1333638BEE8863A5D36 + 738F452FFC0ED278E0F4820D8E59F6A0A6348B1B237342E797CAC0EA620D3746 + 421138BAE0024391861B530C8E9877A1B250CD8D290687E777405FA0E6C61483 + 43734E28CFCF90FF65BF114C70D0B40DBD0393BF82BD454CF03FE219EFD39C05 + A47A98E90000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002CB4944415478DA + BDD36F4813711807F0EF4984F5A68108254249648689A961334B8C95342CAD4C + 222D5F66607F2C825E1426B504090A7B636446A00605A624A4258A664EF1DFA6 + 0E97298D72AED3306FCB68A277D7EE3776E9727AB7AB1E381EF8DDFD9ECFEFB9 + E78EE2791EFF33286F90A228E0DA171EB737504AB37E3D48F1DD34A865415556 + 13CF3CD5504AF2AB660D765D3E8F804F15E8A86644F40FF0597D2F59385B69C7 + 8353EBFCCA8FD24611929F8B840C15A0676076AA60187720DBC1514B8227B471 + A0624AC01B2ECACA6CDF05D43C2FC39EE4740C6487E2C0B77982093134F51D21 + 012C7C82728373D5F160344D639AF90A477E0A8269777D130D9C1126F6374096 + E3F0AE220FEF9D3BA056AB0926849DF901AAF028268C3CC17CCE500EE8C1E2F7 + 6F4780B5074F8C6A6C8DD84C30A1539D4E07ABD5EAFB2B5D0816D78CAF08AA1D + 3A119B9C9B01373F8B86E15472CF1B53D4A177671E8C9918839331E2B82E14C1 + 918761785DAA1C94825D2D2AC3E3AA97CA416F6C62D60E8E9D857DD226621DDD + 83A86DEC940F2E35C38533F3850987AA6BEAF2BF43E11FE3381EED95CB77D6DE + 35409E13C0FA961EFF407F3096E5F1A6AD573EE8C15896C3AD829398E3D39197 + FA62454CC84DED0679A080DDA9B591B54DB6EB181C9B41ECCC38FA5497901955 + 2462E7EE772EDA9F16BD8A1CB0A5B35F3A98793056EC4C386D516136AE24AD86 + A5D90C8B3310D59FD7E0ADE1C3929D913DAEABCDF5F1480633526244ACAE3C17 + DDFA56E4C586C160F909FD340D666D1C0A6E3EF489B1AE757DAF493A7844132D + 163A9D93838F23666C0CE611141A066D7C10128EDD5D169B77E52EE39074F050 + 7214D95CDA3885AA1B5A848547226B5F201233EE91E26ECC5DD8F326DCE06FBC + CF342C1DD4EE8D5C74FA85F394820957BF79443A9892B84D11263C631A1E950E + 6AD4118A30216481C9F1E18A30D960D2CE2DA86ED0436948068B4BCA15639E58 + 11FCD7F10B8E341130466CDCF80000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002B14944415478DA + BDD5CB4F13411800F0AF897AF2A0311E8C07F5604C63E9839683040D42A1D098 + D42A8826DEFC070C4AF4E4C1981883C117C13755B02922A505ACB440855829B5 + DB07B5151589070831846C222A242ADD717760B14B6B676991AFBB99D9D96FF7 + 37B3B3D3952084602D439208760E8CE003AE8DDF05C7EC0F6F8B757C1E6F0BF5 + DA9B2608BB6E4B1281E50312801DFDEF90E1E0DE8C7A6E7150B06DEB66A8BE50 + 2740D382F6973174B8489611687EFE0694D29D304D7F17A0FF0564D87B581C7E + 2850EF811F733F05685AD0E68E2263710EAE5FB14D12A173C6ED10671888C711 + B43A2928DE27835FBFE70568C8D920F927D8DEF7161DD1CA458F8CC7B8B2CD15 + 806B0DCD493969416B5F041DD52A568C310C5BC61918087C86D9B959A0691AE7 + 349A3B09602F0B9690C154D8F236ABD34B06DB7A865145A952F41C26C6A9C24D + 820ED87B7D64F0992B8C2A75AAAC46C6B775B9FD64B0D51542C774B959635CDD + D14F91C1A7CE20AA2A530B206E8D910041DBE2718F272802EC66C172754673C8 + 8751B501A3EEC130196CE90EA0E3E59AAC46B650B24BC41721839617143AA1CF + CB1AE3760F1515013A2854A5D7648DC5D9766F304606D97F7C760EF3F045D71D + 5329E7E864FE467CF31DF7C6539E0F566E8179F67AFFF08838B0A2542D6A64BB + 1E4C80A9F8EFB7939E61C07CEB34DCA93D8FF383D10F64F049970F19B5B9C435 + C63DB2DDA6C92590C3462718A0ECD5507FB906E746DE7F2283CD9D43C850A422 + 62DC2393367DC1208F8D8E3330133A0B372E9DC139B18F63E2C043850A8C3D1C + F89A728E0CCAF5B80332F3145CD5489730FA1B827563355077B11AE789029B3A + BC487F409176647C9BC2320DAAA1BB491D5A11F8D83E88CAF6CB89D8C2EB9FBC + 14124314F8C8F61AE90AE45963A24153BB0795E4E7E06FD96A04116CB4BE42F5 + F75B5605E3232DB816F1079F420105E5B916660000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002E14944415478DA + 63FCFFFF3F033D0123B2859B0E5C03734062308CC207423082B2C1F260046177 + 4F9ACF707EE77446640BD03D8462E1C6FD57FFFB3B6A93E5F2E55B4F33488A0A + 3214D5F5A1588AD7C20DFBAEFC0F70D221CBC2A55B4E3218682A30BC7EFB19C5 + 52A22DEC5CFF142E5E1E284D504C86F509838DB13AC3976F3F512CC56BE1FABD + 97FF073AEB92E4B3BFFFFE31FCFDFB9F61D58ED30CCE963A0CBF7EFF41B1F4DC + 8E698C382D5CB7E7D2FF20173D922D03D16B769E61E89FB618430D5E0BD7EEB9 + F83FD8451F23F8B081127F49B865FFFE01E9BFFF180E9CB9C7F0F5DB5786B76F + DF82D5CC5BBA898085BB8116BAEA93E4339865E8626B771C236CE19A5D17FE87 + B819506C19486CC3EE13842D5CBDF3FCFF5077439420454F8D20D5202D208341 + 74B6BB10D8B2C93BDF81B300509821D5818761F3DE53842D5CB5F3DCFF307723 + 8A7C06636FDD7F9AB0852B779CFD1FEE618CE2A3D20029B0013D9B9EA3F8ECDF + 7F089DEECC0FB674FADE8F50710686441B4E865D87CF1261E176A0859EC6703E + C85042BE411143E2EF3D7A9EB0852BB69FF91FE16982E2C3026F71B0017D5B5E + 217CF60FE1C354475EB06533F77F81C7619C251BC3811317095BB87CDBE9FF91 + 5EA614F90C2C0FC4874F5F26C2C2ADA7FF877B99800DE9DEF81CECE25C0F51B0 + 4113B7BF41F1D93F48CDC4906CC705B66CF6C16F701FC698B3301C3B7B85B085 + C0121F1887A614F9EC2F50FC0F903E75E11A711686B819A3C459B69B10D82048 + 3E43F80C9662136C38C0F2F38EFC848B459830329CBD7C83B0854B369FF81FE8 + 6244308FC17C815087E9D38BD76F13B670F1A6E3FFFD9D0CC11A27ED780B8E33 + 483EFB07CC679F507CF60FDAD48806C617C8B2C527FE80C5402058FF2FC3959B + 7788B3D0C7419F229FFD85DA4A94858B361EFBEF65A74FB165445BB870C3D1FF + 1EB67A6459B6EA3C13DC1CA28374C1FA23FFDD6DF428F219493E9CBFEEF07F57 + 2B5D705D460D40D0C2796B0FFD9F327B05552C8301BC16D2030000BD734D0581 + 7DF1720000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001C64944415478DA + 63FCFFFF3F033D01E38059B87CDB699ADB1CE965CA88622150806CC3FE01CDF9 + F7EF3FC3DFBFFF18FEFEFB87C4FECFB06CD32186794B37319CDB310DBF858C33 + 1919823435197EFDFD0BC6BFA134980D34F4C79F3F0C3F81EC3F40F64F201BCC + 07E237515FE196FD03CAADD87284780BC9011FA2BEC12D03D1ABB71D25CE424A + 8211661988BF6EE771D22D644CC4EFDBCF537F30FCF903B1186C21D462107FD3 + 9E9394F9106CE85F245F807CF7F73F56CB40BEDEB2EF146E0B09F9845470A7E9 + 35C3F60367F05BF87F3E224B5E5C69C8A01F7E1E271F19A0CB81CCBA59FF8A61 + D7E1B3F82D4CC830806B2A78C0C030418101271F19A0CB2D987181E17AED0B86 + 3D47CFD3CF8757AA9F33EC3F7E817E3EBC50FE84E1F0E9CBF4F3E1D9D2C70CC7 + CE5EA19F0F4F173F643871FE1AFD7C78A2F001C3E98BD7B15B18EE69C2C09CC4 + 44551F1ECDBBC770EECA4DEC1686BA1B33B0A63053D5878773EE325CB8760BBB + 85412E860C1CE9AC54F5E1FECCDB0C576EDEC16EA1BF933E0377263B557D88D7 + 426F7B5D06FE1C4E066A02BC167ADAE8E02CF149AD2190014E0BDDACB4A86E19 + 5E0B9D2D3419566D3D42D5208501AC16764F9A4F13CB6000C5427A01BA5B0800 + BE8AE7E7F700C7D10000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020E4944415478DA + 63FCFFFF3F033D0123C842464646086F06034D6CFF9FFE9F11C5C2695326FDEF + 9ED4CFF0A0F801C311EF7D641BFC0F08FFFCFFC5F0FBDF2F300DC2FE4D310CFF + E7A359A8A8A6F8FFFEADFB0C8585850C1BB66E6058B26F1E752CDB15C3C07082 + 01D342980F4100D9329BAD4E382D60636283606636067628FBE1D7470C5BDD57 + C12D0CDE9D84DD425C3E0459986060806A112307030FB310032F8B1098E666E6 + 63E060E201E3A8B61C868D754B2016027D1ABE3783741F225B88CF324E661E86 + C0E60486B5B5F3C096FD065A1AB32F8F7C1F12B20C447B3686302CAB9E0AB610 + E4CBA403E5E4F99018CB40D8B1DE836151653F3C0ED30ED692EEC334430BA22C + 6305261A9B5A278679159D700BB30E3593914A4F90963D669537C32DCC3BDC49 + 9A0F91C19FFFBFC1090196026186FE46E323F06F86A2237DA4F99012CB4072E5 + 47A790EE434296FDFAFF1D21CEF01BA5B4A93D3E97781F622BAA6096FE46E363 + B30C841B4F2C26CE878BF6CDA1D832106E3DB992B00FA9651908779E5A4F9C0F + 67EE9E40B16520F57DA7B712F621B52C03D193CEEC26CE871377B6906DD9CF7F + DFE1EC19E78E10F621BA65BF900C40CE637843018AE79C3F459C0FDBB695E2CD + D0C45806C20B2E5C20EC43522D5B1E7E066B99EAB05800B785E83EACDB9C4991 + CF6080281F52CB32BC16A2FB10D45CA41AC06621A821ACA0AA006E043FB0A6A2 + 65508061213D010026DA8D05688EA69C0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000003474944415478DA + BD946B48536118C79F95140409E62DBB7C083F85084566372135D2F292B74AD3 + CCC44B492C32FC966D5AFA2D2A34E9A236733A9D695EA76B622A998917549CA9 + 980895B75D6995A5DBD9DBD939DBAB23754B9D0FBC9CE7FF1ECEF37BFEEFCB79 + 180821D8C860E8808CDB03CE649E4AAEAB16E214902B033D741D330039AE7B6D + D604637AD8027F500D12A5CA28EF1E0F845EE526386A5F5040026329A055BC08 + 1173EAE5AB21C672E78353768C37D48895D0DBD36B948B9D7221EFE721C89E3F + 029A3C1F06063A8C0D5AE834E99038BB2C007730BBD048FA7E8B029DEF0E812A + E7300DB4BDD98DE4596EAB2EA6256B68B50808420B84965C04A29E863DBEA00D + 5822040AEE59D3C0FCFC853C2E6E657D296A1E4A8AB7601D10FC83825608DB81 + F5560B8A22BFB5395CCACD527B558D1D24902081FEC6C0FCC5EDAE43F8FA8751 + E0DAA64E600935A0280E589D43739D1972417317B01AD4A0E0051A03E3E37BA9 + 82797907CDBAC388C87928E519DF595DD576ACBD7DE5241481B0B51BD80DF320 + E79DA38176CC4E24CB765F77673A985A4340D3077218D4CF81BC24480FBCF111 + C9728E9974187D85006EE166AC432FCCC29BD7DBB03EEDA784C67A1BAC8F7BCD + 500DB474F4035BF007E4A5C134D03EA90D499F7A98ED4CD7F5B20E1769EA3DB9 + DE770D00BBEE37C8F9217AE0B556247D7EF21F87BA1F9AF372618E5E8C9883B2 + D2AD58FB07A940506D8DB5A78F0C5A447658BB9D98A08EB5BD474C0267496028 + 0D74486841925C4F2357A6A68739CE74300DF9ECECFB0469B5BF405616A607C6 + 352149FE29ECF045EE015CB8886B859B08393F0B95E52BDF597BB323D6AEEE5F + A81A3D03C3904E02A506A063AC08CD707CD6D599EE9E0DBA7F6814D2ABBE83B4 + 225C0F8C11A29957675605536BB48BDE2D0D178F7C867BE552905447D3C09DD1 + 023459E80789097D94CBAC272EF8C394E4617C446919FB202D751CEB943BBBE1 + 41E604D6D76FD9C1B3C732AC2F27D2434007BCCF9F8299BA583D30AA067D2B0C + C09D6A34A67F680D61DA992174C00CDE57986E48A081BB222BD11827C0ECE9F1 + 3F300CE48EC3B4288906EE09E5A291E270E094BF3339DE561B9905A330D5C4A4 + 814E5E8FD0B4B5DDDAABAE104E2A194C3627EB8F94045A94A60F0CDCC8D870E0 + 5FA7D4B1F664B3FE1D0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001084944415478DA + 63FCFFFF3F033D01E3A88534B19031F124ED6DBD7081E1FFF97446B885516106 + 0CEF7E3130ECD870812134D480E1EB1F06862F50FCE937847E71807C390C0B3D + 0220169EDA7681C12BD00045D38B1F1036C3093C72474F31788598E1D4876121 + CD82F2FF3F60C431A15AB874CBC9FF6E969A0C5FBFFF64387AE11E43B48F3956 + BD407564C98180914716C3B91DD310161AA849812DBCFDF82DD52D9CB27807C3 + BCA59B502D549515663875E90E83A0A020568D7FFFFE6558B1FD0C5972D397ED + C6B49016D1F7FBD72F0656363686F7EFDF635A48CB38C41AA4A3714809188DC3 + D1381C8D43E2E21014A42BB71DA3593C6258D83B6521CD2C8301B885F404C3DF + 42005A1A11E70A945A890000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 115 + Top = 96 + Bitmap = {} + end + object dsDataTable: TDADataSource + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.dfm.cbk b/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.dfm.cbk new file mode 100644 index 0000000..0afad52 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.dfm.cbk @@ -0,0 +1,269 @@ +inherited frViewControlesBase: TfrViewControlesBase + object EasyListview: TEasyListview + Left = 0 + Top = 0 + Width = 294 + Height = 214 + Align = alClient + BevelKind = bkTile + CacheDoubleBufferBits = False + CellSizes.List.AutoSize = True + EditManager.Font.Charset = DEFAULT_CHARSET + EditManager.Font.Color = clWindowText + EditManager.Font.Height = -11 + EditManager.Font.Name = 'Tahoma' + EditManager.Font.Style = [] + UseDockManager = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + GroupFont.Charset = DEFAULT_CHARSET + GroupFont.Color = clWindowText + GroupFont.Height = -11 + GroupFont.Name = 'Tahoma' + GroupFont.Style = [] + Header.Font.Charset = DEFAULT_CHARSET + Header.Font.Color = clWindowText + Header.Font.Height = -11 + Header.Font.Name = 'Tahoma' + Header.Font.Style = [] + ImagesLarge = ReportImages + PaintInfoGroup.BandColor = clGradientActiveCaption + PaintInfoGroup.BandThickness = 2 + PaintInfoGroup.CaptionIndent = 5 + PaintInfoGroup.Expandable = False + PaintInfoGroup.MarginBottom.CaptionIndent = 4 + ParentFont = False + Selection.AlphaBlend = True + TabOrder = 0 + View = elsTile + OnItemContextMenu = EasyListviewItemContextMenu + OnItemDblClick = EasyListviewItemDblClick + OnItemSelectionChanged = EasyListviewItemSelectionChanged + end + object ReportImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002024944415478DA + BDD5DB2E03411800E0E923B870E1CE9D085A940B823894D2489C4FAFE101BC80 + 8444840B89B3D4A954292D8A2855DD5655EB14E205A4570E09BAFB9B5944C7A1 + B335F87727F3CFBF93F976B3995D1500A0FF0C553468D93A9107A4F6D6A8313E + E4F33597AFCBE74BDED93384FCF67E5534F0F181287061F3186A4AD27E74E746 + AB80921213507B471785C604CD1B21A82D4DFF1138B1B48F325393D175F88642 + FF0494F01A46AB07156853D0EDFD0385C604E71D41A82BCB880B1325098922A0 + 699B80CAF2D2D1E35384420F6C7DAA6FC1B9F523A8D7A9E3C6483F6BF7A2EEBE + B14F736282A6F50034E834716392847B51425BDE2B74777F87C2E1B03C6770C2 + C200D73058CE06BFC23ED64C36171B9C5D3D84C68A4C6E8CD4CC6B6E363863F7 + 43933E8B1B23F9A2C3C306A7ED07D0ACCFE6C6486EDD14D8E094CD072D955A0A + 227B8C0550B5D7F1AAD3A7005CC16095961B23BD63D7CF062757BCD05A95C38D + C95BC41D6083C66501DA0CB9DC18694E21A800B40AD062C8E1C6445C77F9426C + 107FF1F13BCCE5C622B8F71C9E28031B2BB4DC18C97DC1333638BEE8863A5D36 + 738F452FFC0ED278E0F4820D8E59F6A0A6348B1B237342E797CAC0EA620D3746 + 421138BAE0024391861B530C8E9877A1B250CD8D290687E777405FA0E6C61483 + 43734E28CFCF90FF65BF114C70D0B40DBD0393BF82BD454CF03FE219EFD39C05 + A47A98E90000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002CB4944415478DA + BDD36F4813711807F0EF4984F5A68108254249648689A961334B8C95342CAD4C + 222D5F66607F2C825E1426B504090A7B636446A00605A624A4258A664EF1DFA6 + 0E97298D72AED3306FCB68A277D7EE3776E9727AB7AB1E381EF8DDFD9ECFEFB9 + E78EE2791EFF33286F90A228E0DA171EB737504AB37E3D48F1DD34A865415556 + 13CF3CD5504AF2AB660D765D3E8F804F15E8A86644F40FF0597D2F59385B69C7 + 8353EBFCCA8FD24611929F8B840C15A0676076AA60187720DBC1514B8227B471 + A0624AC01B2ECACA6CDF05D43C2FC39EE4740C6487E2C0B77982093134F51D21 + 012C7C82728373D5F160344D639AF90A477E0A8269777D130D9C1126F6374096 + E3F0AE220FEF9D3BA056AB0926849DF901AAF028268C3CC17CCE500EE8C1E2F7 + 6F4780B5074F8C6A6C8DD84C30A1539D4E07ABD5EAFB2B5D0816D78CAF08AA1D + 3A119B9C9B01373F8B86E15472CF1B53D4A177671E8C9918839331E2B82E14C1 + 918761785DAA1C94825D2D2AC3E3AA97CA416F6C62D60E8E9D857DD226621DDD + 83A86DEC940F2E35C38533F3850987AA6BEAF2BF43E11FE3381EED95CB77D6DE + 35409E13C0FA961EFF407F3096E5F1A6AD573EE8C15896C3AD829398E3D39197 + FA62454CC84DED0679A080DDA9B591B54DB6EB181C9B41ECCC38FA5497901955 + 2462E7EE772EDA9F16BD8A1CB0A5B35F3A98793056EC4C386D516136AE24AD86 + A5D90C8B3310D59FD7E0ADE1C3929D913DAEABCDF5F1480633526244ACAE3C17 + DDFA56E4C586C160F909FD340D666D1C0A6E3EF489B1AE757DAF493A7844132D + 163A9D93838F23666C0CE611141A066D7C10128EDD5D169B77E52EE39074F050 + 7214D95CDA3885AA1B5A848547226B5F201233EE91E26ECC5DD8F326DCE06FBC + CF342C1DD4EE8D5C74FA85F394820957BF79443A9892B84D11263C631A1E950E + 6AD4118A30216481C9F1E18A30D960D2CE2DA86ED0436948068B4BCA15639E58 + 11FCD7F10B8E341130466CDCF80000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002B14944415478DA + BDD5CB4F13411800F0AF897AF2A0311E8C07F5604C63E9839683040D42A1D098 + D42A8826DEFC070C4AF4E4C1981883C117C13755B02922A505ACB440855829B5 + DB07B5151589070831846C222A242ADD717760B14B6B676991AFBB99D9D96FF7 + 37B3B3D3952084602D439208760E8CE003AE8DDF05C7EC0F6F8B757C1E6F0BF5 + DA9B2608BB6E4B1281E50312801DFDEF90E1E0DE8C7A6E7150B06DEB66A8BE50 + 2740D382F6973174B8489611687EFE0694D29D304D7F17A0FF0564D87B581C7E + 2850EF811F733F05685AD0E68E2263710EAE5FB14D12A173C6ED10671888C711 + B43A2928DE27835FBFE70568C8D920F927D8DEF7161DD1CA458F8CC7B8B2CD15 + 806B0DCD493969416B5F041DD52A568C310C5BC61918087C86D9B959A0691AE7 + 349A3B09602F0B9690C154D8F236ABD34B06DB7A865145A952F41C26C6A9C24D + 820ED87B7D64F0992B8C2A75AAAC46C6B775B9FD64B0D51542C774B959635CDD + D14F91C1A7CE20AA2A530B206E8D910041DBE2718F272802EC66C172754673C8 + 8751B501A3EEC130196CE90EA0E3E59AAC46B650B24BC41721839617143AA1CF + CB1AE3760F1515013A2854A5D7648DC5D9766F304606D97F7C760EF3F045D71D + 5329E7E864FE467CF31DF7C6539E0F566E8179F67AFFF08838B0A2542D6A64BB + 1E4C80A9F8EFB7939E61C07CEB34DCA93D8FF383D10F64F049970F19B5B9C435 + C63DB2DDA6C92590C3462718A0ECD5507FB906E746DE7F2283CD9D43C850A422 + 62DC2393367DC1208F8D8E3330133A0B372E9DC139B18F63E2C043850A8C3D1C + F89A728E0CCAF5B80332F3145CD5489730FA1B827563355077B11AE789029B3A + BC487F409176647C9BC2320DAAA1BB491D5A11F8D83E88CAF6CB89D8C2EB9FBC + 14124314F8C8F61AE90AE45963A24153BB0795E4E7E06FD96A04116CB4BE42F5 + F75B5605E3232DB816F1079F420105E5B916660000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000002E14944415478DA + 63FCFFFF3F033D0123B2859B0E5C03734062308CC207423082B2C1F260046177 + 4F9ACF707EE77446640BD03D8462E1C6FD57FFFB3B6A93E5F2E55B4F33488A0A + 3214D5F5A1588AD7C20DFBAEFC0F70D221CBC2A55B4E3218682A30BC7EFB19C5 + 52A22DEC5CFF142E5E1E284D504C86F509838DB13AC3976F3F512CC56BE1FABD + 97FF073AEB92E4B3BFFFFE31FCFDFB9F61D58ED30CCE963A0CBF7EFF41B1F4DC + 8E698C382D5CB7E7D2FF20173D922D03D16B769E61E89FB618430D5E0BD7EEB9 + F83FD8451F23F8B081127F49B865FFFE01E9BFFF180E9CB9C7F0F5DB5786B76F + DF82D5CC5BBA898085BB8116BAEA93E4339865E8626B771C236CE19A5D17FE87 + B819506C19486CC3EE13842D5CBDF3FCFF5077439420454F8D20D5202D208341 + 74B6BB10D8B2C93BDF81B300509821D5818761F3DE53842D5CB5F3DCFF307723 + 8A7C06636FDD7F9AB0852B779CFD1FEE618CE2A3D20029B0013D9B9EA3F8ECDF + 7F089DEECC0FB674FADE8F50710686441B4E865D87CF1261E176A0859EC6703E + C85042BE411143E2EF3D7A9EB0852BB69FF91FE16982E2C3026F71B0017D5B5E + 217CF60FE1C354475EB06533F77F81C7619C251BC3811317095BB87CDBE9FF91 + 5EA614F90C2C0FC4874F5F26C2C2ADA7FF877B99800DE9DEF81CECE25C0F51B0 + 4113B7BF41F1D93F48CDC4906CC705B66CF6C16F701FC698B3301C3B7B85B085 + C0121F1887A614F9EC2F50FC0F903E75E11A711686B819A3C459B69B10D82048 + 3E43F80C9662136C38C0F2F38EFC848B459830329CBD7C83B0854B369FF81FE8 + 6244308FC17C815087E9D38BD76F13B670F1A6E3FFFD9D0CC11A27ED780B8E33 + 483EFB07CC679F507CF60FDAD48806C617C8B2C527FE80C5402058FF2FC3959B + 7788B3D0C7419F229FFD85DA4A94858B361EFBEF65A74FB165445BB870C3D1FF + 1EB67A6459B6EA3C13DC1CA28374C1FA23FFDD6DF428F219493E9CBFEEF07F57 + 2B5D705D460D40D0C2796B0FFD9F327B05552C8301BC16D2030000BD734D0581 + 7DF1720000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001C64944415478DA + 63FCFFFF3F033D01E38059B87CDB699ADB1CE965CA88622150806CC3FE01CDF9 + F7EF3FC3DFBFFF18FEFEFB87C4FECFB06CD32186794B37319CDB310DBF858C33 + 1919823435197EFDFD0BC6BFA134980D34F4C79F3F0C3F81EC3F40F64F201BCC + 07E237515FE196FD03CAADD87284780BC9011FA2BEC12D03D1ABB71D25CE424A + 8211661988BF6EE771D22D644CC4EFDBCF537F30FCF903B1186C21D462107FD3 + 9E9394F9106CE85F245F807CF7F73F56CB40BEDEB2EF146E0B09F9845470A7E9 + 35C3F60367F05BF87F3E224B5E5C69C8A01F7E1E271F19A0CB81CCBA59FF8A61 + D7E1B3F82D4CC830806B2A78C0C030418101271F19A0CB2D987181E17AED0B86 + 3D47CFD3CF8757AA9F33EC3F7E817E3EBC50FE84E1F0E9CBF4F3E1D9D2C70CC7 + CE5EA19F0F4F173F643871FE1AFD7C78A2F001C3E98BD7B15B18EE69C2C09CC4 + 44551F1ECDBBC770EECA4DEC1686BA1B33B0A63053D5878773EE325CB8760BBB + 85412E860C1CE9AC54F5E1FECCDB0C576EDEC16EA1BF933E0377263B557D88D7 + 426F7B5D06FE1C4E066A02BC167ADAE8E02CF149AD2190014E0BDDACB4A86E19 + 5E0B9D2D3419566D3D42D5208501AC16764F9A4F13CB6000C5427A01BA5B0800 + BE8AE7E7F700C7D10000000049454E44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020E4944415478DA + 63FCFFFF3F033D0123C842464646086F06034D6CFF9FFE9F11C5C2695326FDEF + 9ED4CFF0A0F801C311EF7D641BFC0F08FFFCFFC5F0FBDF2F300DC2FE4D310CFF + E7A359A8A8A6F8FFFEADFB0C8585850C1BB66E6058B26F1E752CDB15C3C07082 + 01D342980F4100D9329BAD4E382D60636283606636067628FBE1D7470C5BDD57 + C12D0CDE9D84DD425C3E0459986060806A112307030FB310032F8B1098E666E6 + 63E060E201E3A8B61C868D754B2016027D1ABE3783741F225B88CF324E661E86 + C0E60486B5B5F3C096FD065A1AB32F8F7C1F12B20C447B3686302CAB9E0AB610 + E4CBA403E5E4F99018CB40D8B1DE836151653F3C0ED30ED692EEC334430BA22C + 6305261A9B5A278679159D700BB30E3593914A4F90963D669537C32DCC3BDC49 + 9A0F91C19FFFBFC1090196026186FE46E323F06F86A2237DA4F99012CB4072E5 + 47A790EE434296FDFAFF1D21CEF01BA5B4A93D3E97781F622BAA6096FE46E363 + B30C841B4F2C26CE878BF6CDA1D832106E3DB992B00FA9651908779E5A4F9C0F + 67EE9E40B16520F57DA7B712F621B52C03D193CEEC26CE871377B6906DD9CF7F + DFE1EC19E78E10F621BA65BF900C40CE637843018AE79C3F459C0FDBB695E2CD + D0C45806C20B2E5C20EC43522D5B1E7E066B99EAB05800B785E83EACDB9C4991 + CF6080281F52CB32BC16A2FB10D45CA41AC06621A821ACA0AA006E043FB0A6A2 + 65508061213D010026DA8D05688EA69C0000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000003474944415478DA + BD946B48536118C79F95140409E62DBB7C083F85084566372135D2F292B74AD3 + CCC44B492C32FC966D5AFA2D2A34E9A236733A9D695EA76B622A998917549CA9 + 980895B75D6995A5DBD9DBD939DBAB23754B9D0FBC9CE7FF1ECEF37BFEEFCB79 + 180821D8C860E8808CDB03CE649E4AAEAB16E214902B033D741D330039AE7B6D + D604637AD8027F500D12A5CA28EF1E0F845EE526386A5F5040026329A055BC08 + 1173EAE5AB21C672E78353768C37D48895D0DBD36B948B9D7221EFE721C89E3F + 029A3C1F06063A8C0D5AE834E99038BB2C007730BBD048FA7E8B029DEF0E812A + E7300DB4BDD98DE4596EAB2EA6256B68B50808420B84965C04A29E863DBEA00D + 5822040AEE59D3C0FCFC853C2E6E657D296A1E4A8AB7601D10FC83825608DB81 + F5560B8A22BFB5395CCACD527B558D1D24902081FEC6C0FCC5EDAE43F8FA8751 + E0DAA64E600935A0280E589D43739D1972417317B01AD4A0E0051A03E3E37BA9 + 82797907CDBAC388C87928E519DF595DD576ACBD7DE5241481B0B51BD80DF320 + E79DA38176CC4E24CB765F77673A985A4340D3077218D4CF81BC24480FBCF111 + C9728E9974187D85006EE166AC432FCCC29BD7DBB03EEDA784C67A1BAC8F7BCD + 500DB474F4035BF007E4A5C134D03EA90D499F7A98ED4CD7F5B20E1769EA3DB9 + DE770D00BBEE37C8F9217AE0B556247D7EF21F87BA1F9AF372618E5E8C9883B2 + D2AD58FB07A940506D8DB5A78F0C5A447658BB9D98A08EB5BD474C0267496028 + 0D74486841925C4F2357A6A68739CE74300DF9ECECFB0469B5BF405616A607C6 + 352149FE29ECF045EE015CB8886B859B08393F0B95E52BDF597BB323D6AEEE5F + A81A3D03C3904E02A506A063AC08CD707CD6D599EE9E0DBA7F6814D2ABBE83B4 + 225C0F8C11A29957675605536BB48BDE2D0D178F7C867BE552905447D3C09DD1 + 023459E80789097D94CBAC272EF8C394E4617C446919FB202D751CEB943BBBE1 + 41E604D6D76FD9C1B3C732AC2F27D2434007BCCF9F8299BA583D30AA067D2B0C + C09D6A34A67F680D61DA992174C00CDE57986E48A081BB222BD11827C0ECE9F1 + 3F300CE48EC3B4288906EE09E5A291E270E094BF3339DE561B9905A330D5C4A4 + 814E5E8FD0B4B5DDDAABAE104E2A194C3627EB8F94045A94A60F0CDCC8D870E0 + 5FA7D4B1F664B3FE1D0000000049454E44AE426082} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001084944415478DA + 63FCFFFF3F033D01E3A88534B19031F124ED6DBD7081E1FFF97446B885516106 + 0CEF7E3130ECD870812134D480E1EB1F06862F50FCE937847E71807C390C0B3D + 0220169EDA7681C12BD00045D38B1F1036C3093C72474F31788598E1D4876121 + CD82F2FF3F60C431A15AB874CBC9FF6E969A0C5FBFFF64387AE11E43B48F3956 + BD407564C98180914716C3B91DD310161AA849812DBCFDF82DD52D9CB27807C3 + BCA59B502D549515663875E90E83A0A020568D7FFFFE6558B1FD0C5972D397ED + C6B49016D1F7FBD72F0656363686F7EFDF635A48CB38C41AA4A3714809188DC3 + D1381C8D43E2E21014A42BB71DA3593C6258D83B6521CD2C8301B885F404C3DF + 42005A1A11E70A945A890000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 115 + Top = 96 + Bitmap = {} + end + object dsDataTable: TDADataSource + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.pas b/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.pas new file mode 100644 index 0000000..9477dcc --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewControlesBase.pas @@ -0,0 +1,210 @@ +unit uViewControlesBase; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, cxGraphics, cxCustomData, cxStyles, cxTL, + cxImageComboBox, cxMaskEdit, cxTextEdit, cxInplaceContainer, cxDBTL, + cxControls, cxTLData, Menus, uBizControlesBase, DB, uDADataTable, + ImgList, PngImageList, uDAInterfaces, MPCommonObjects, EasyListview, + MPCommonUtilities; + +type + IViewControlesBase = interface(IViewBase) + ['{D991FCEC-08DB-4F77-BD57-FA04B3C88788}'] + function GetDblClick: TNotifyEvent; + procedure SetDblClick(const Value: TNotifyEvent); + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + + function GetPopupMenu: TPopupMenu; + procedure SetPopupMenu(const Value: TPopupMenu); + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + + function GetControl: IBizControlBase; + procedure SetControl(const Value: IBizControlBase); + property Control: IBizControlBase read GetControl write SetControl; + + procedure Refresh; + end; + + TfrViewControlesBase = class(TfrViewBase, IViewControlesBase) + ReportImages: TPngImageList; + dsDataTable: TDADataSource; + EasyListview: TEasyListview; +{ procedure EasyListviewItemDblClick(Sender: TCustomEasyListview; + Button: TEasyMouseButton; MousePos: TPoint; + HitInfo: TEasyHitInfoItem);} + + procedure EasyListviewItemDblClick(Sender: TCustomEasyListview; + Button: TCommonMouseButton; MousePos: TPoint; HitInfo: TEasyHitInfoItem); + + procedure EasyListviewItemContextMenu(Sender: TCustomEasyListview; + HitInfo: TEasyHitInfoItem; WindowPoint: TPoint; var Menu: TPopupMenu; + var Handled: Boolean); + + procedure EasyListviewItemSelectionChanged(Sender: TCustomEasyListview; + Item: TEasyItem); + protected + FControl : IBizControlBase; + FOnDblClick: TNotifyEvent; + FPopupMenu: TPopupMenu; + + function GetDblClick: TNotifyEvent; virtual; + procedure SetDblClick(const Value: TNotifyEvent); virtual; + + function GetPopupMenu: TPopupMenu; virtual; + procedure SetPopupMenu(const Value: TPopupMenu); virtual; + + function GetControl: IBizControlBase; virtual; + procedure SetControl(const Value: IBizControlBase); virtual; + public + procedure Refresh; override; + property Control: IBizControlBase read GetControl write SetControl; + property OnDblClick: TNotifyEvent read GetDblClick write SetDblClick; + property PopupMenu: TPopupMenu read GetPopupMenu write SetPopupMenu; + end; + +implementation + +{$R *.dfm} + +{ TfrViewControlesBase } + +function TfrViewControlesBase.GetControl: IBizControlBase; +begin + Result := FControl; +end; + +function TfrViewControlesBase.GetDblClick: TNotifyEvent; +begin + Result := FOnDblClick; +end; + +function TfrViewControlesBase.GetPopupMenu: TPopupMenu; +begin + Result := FPopupMenu; +end; + +procedure TfrViewControlesBase.Refresh; +var + GroupNoModificable: TEasyGroup; + GroupModificable: TEasyGroup; + AItem : TEasyItem; + i: Integer; + IDSelected : string; +begin + inherited; + + if not Assigned(FControl) then + Exit; + + EasyListview.BeginUpdate; + try + IDSelected := ''; + if EasyListview.Groups.Count > 0 then + begin + for i := 0 to EasyListview.Items.Count - 1 do + if EasyListview.Items[i].Selected then + IDSelected := EasyListview.Items[i].Captions[3]; // Columna ID + EasyListview.Groups.Clear; + end; + + GroupNoModificable := EasyListview.Groups.Add; + GroupNoModificable.Caption := 'Controles generales'; + GroupNoModificable.Bold := True; + + GroupModificable := EasyListview.Groups.Add; + GroupModificable.Caption := 'Controles personalizados'; + GroupModificable.Bold := True; + + with FControl do + begin + FControl.First; + for i := 0 to (FControl.RecordCount - 1) do + begin + if EsModificable then + AItem := GroupModificable.Items.Add(NIL) + else + AItem := GroupNoModificable.Items.Add(NIL); + + AItem.ImageIndex := ICONO; + AItem.Captions[0] := NOMBRE; + AItem.Captions[1] := DESCRIPCION; + AItem.Captions[3] := IntToStr(ID); + AItem.Captions[4] := MODIFICABLE; + AItem.DetailCount := 2; + AItem.Details[0] := 0; // Columna NOMBRE; + AItem.Details[1] := 1; // Columna DESCRIPCION; + + AItem.Selected := (IDSelected = AItem.Captions[3]); + FControl.Next; + end; + end; + finally + EasyListview.Sort.SortAll; + EasyListview.EndUpdate; + + if (Length(IDSelected) = 0) and (EasyListview.Items.Count > 0) then + EasyListview.Items[0].Selected := True; + + for i := 0 to EasyListview.Items.Count - 1 do + if EasyListview.Items[i].Selected then + begin + FControl.First; + FControl.Locate('ID', StrToInt(EasyListview.Items[i].Captions[3]), []); + Break; + end; + + EasyListview.ShowGroupMargins := True; + end +end; + +procedure TfrViewControlesBase.SetControl(const Value: IBizControlBase); +begin + FControl := Value; + dsDataTable.DataTable := Value.DataTable; +end; + +procedure TfrViewControlesBase.SetDblClick(const Value: TNotifyEvent); +begin + FOnDblClick := Value; +end; + +procedure TfrViewControlesBase.SetPopupMenu(const Value: TPopupMenu); +begin + FPopupMenu := Value; +end; + +procedure TfrViewControlesBase.EasyListviewItemContextMenu( + Sender: TCustomEasyListview; HitInfo: TEasyHitInfoItem; + WindowPoint: TPoint; var Menu: TPopupMenu; var Handled: Boolean); +begin + inherited; + if Assigned(FPopupMenu) then + Menu := FPopupMenu; +end; + +procedure TfrViewControlesBase.EasyListviewItemDblClick( + Sender: TCustomEasyListview; Button: TCommonMouseButton; MousePos: TPoint; + HitInfo: TEasyHitInfoItem); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Self); +end; + +procedure TfrViewControlesBase.EasyListviewItemSelectionChanged( + Sender: TCustomEasyListview; Item: TEasyItem); +begin + inherited; + if not Item.Destroying then + begin + FControl.First; + FControl.Locate('ID', StrToInt(Item.Captions[3]), []); + end; +end; + +end. + + diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.dfm new file mode 100644 index 0000000..2599dfe --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.dfm @@ -0,0 +1,115 @@ +inherited frViewFiltros: TfrViewFiltros + Width = 209 + Height = 462 + object vgFiltros: TcxVerticalGrid + Left = 0 + Top = 229 + Width = 216 + Height = 233 + Enabled = False + Images = PngImageList1 + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + OptionsView.CellAutoHeight = True + OptionsView.CellEndEllipsis = True + OptionsView.ScrollBars = ssVertical + OptionsView.RowHeaderWidth = 97 + OptionsView.GridLines = vglVertical + OptionsView.ValueMinWidth = 75 + TabOrder = 0 + Visible = False + object vgFiltrosEditorRow1: TcxEditorRow + Properties.EditPropertiesClassName = 'TcxComboBoxProperties' + Properties.EditProperties.OnEditValueChanged = vgFiltrosEditorRow1EditPropertiesEditValueChanged + Properties.DataBinding.ValueType = 'String' + Properties.Value = Null + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 209 + Height = 29 + Align = alTop + Caption = 'Filtros' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Margins.Top = 5 + Margins.Bottom = 10 + ParentColor = True + ParentFont = False + Underline = True + end + object cxFilterControl1: TcxFilterControl + Left = 0 + Top = 29 + Width = 209 + Height = 403 + Align = alClient + Color = clWindow + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + TabOrder = 2 + TabStop = True + end + object TBXAlignmentPanel3: TTBXAlignmentPanel + Left = 0 + Top = 432 + Width = 209 + Height = 30 + Align = alBottom + Margins.Left = 3 + Margins.Top = 3 + Margins.Right = 3 + Margins.Bottom = 3 + TabOrder = 3 + object bRefrescar: TButton + Left = 4 + Top = 5 + Width = 100 + Height = 21 + Caption = 'Aplicar filtro' + TabOrder = 0 + OnClick = bRefrescarClick + end + end + object cxStyleRepository1: TcxStyleRepository + Left = 216 + Top = 104 + object cxStyleNombreColumna: TcxStyle + AssignedValues = [svTextColor] + TextColor = clActiveCaption + end + object cxStyleCategoria: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = 15329769 + TextColor = clHighlight + end + end + object PngImageList1: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011E4944415478DA + 63FCFFFF3F0325801164C0D22D27C936056E40B48F39511AFEFCFDC7F0FBCF5F + 3076082E423540ADEA3C5CE165F924148DBA0FE7C1D967AA351916AD3BC0306F + E9264C036EB5198215FD9C09A43DBE3030BC60605830E30E43FA7C882F416A8E + 96AA32ACDC728408030C80063CE06058B0E30A8A01070B9519D6EE3886DD006C + 5E5870E20243AFE439387F4FAE02C3A63D27C9F7C28E4C59866D07CE90EF85CD + A9D20CBB8F9C23DF0BABE3C4180E9FBE4CBE17964589309C387F15D580704F53 + 06ADDA8B447961619820C3D9CB37500D08723562D06FBC82E20590D36100D90B + 7382F8182E5DBF8D6A80AFA33EC39F3F88640A67FFFE0B1543C8FDFBF79FE1CA + CD3BA80678DAEA322CDB7488A48C846240EF948564E54600564A377B046BCB77 + 0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 88 + Top = 104 + Bitmap = {} + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.pas b/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.pas new file mode 100644 index 0000000..88da478 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewFiltros.pas @@ -0,0 +1,197 @@ +unit uViewFiltros; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewParametrosControlGrid, cxStyles, cxGraphics, cxEdit, + TBXDkPanels, cxControls, cxInplaceContainer, cxVGrid, cxDropDownEdit, + ImgList, PngImageList, cxFilterControl, uViewControlGrid, + cxDBFilterControl, StdCtrls; + +type + IViewFiltros = interface(IViewParametrosControlGrid) + ['{92FA8AF8-D0D8-4BC6-9611-CF3094CD4385}'] + end; + + TfrViewFiltros = class(TfrViewParametrosControlGrid, IViewFiltros) + vgFiltros: TcxVerticalGrid; + TBXLabel1: TTBXLabel; + cxStyleRepository1: TcxStyleRepository; + cxStyleNombreColumna: TcxStyle; + cxStyleCategoria: TcxStyle; + PngImageList1: TPngImageList; + vgFiltrosEditorRow1: TcxEditorRow; + cxFilterControl1: TcxFilterControl; + TBXAlignmentPanel3: TTBXAlignmentPanel; + bRefrescar: TButton; + procedure vgFiltrosEditorRow1EditPropertiesEditValueChanged( + Sender: TObject); + procedure bRefrescarClick(Sender: TObject); + protected + procedure RellenarFiltros; + procedure SetViewControlGrid(const Value: IViewControlGrid); override; + procedure SetModificable(const Value: Boolean); override; + public + procedure Execute; override; + procedure Refresh; override; + end; + +implementation + +{$R *.dfm} + +uses + cxCustomData, cxFilter, cxGridDBDataDefinitions, + cxGridDBTableView, cxGridCustomTableView, cxFilterConsts, cxClasses, + cxDBData; + +{ TfrViewFiltros } + +procedure TfrViewFiltros.Execute; +begin + inherited; + cxFilterControl1.ApplyFilter; + FViewControlGrid.FocusedView.DataController.Filter.Active := True; +end; + +procedure TfrViewFiltros.Refresh; +begin + inherited; + cxFilterControl1.UpdateFilter; + SetModificable(Modificable); + //RellenarFiltros; +end; + +procedure TfrViewFiltros.RellenarFiltros; +var + i : Integer; + ACaption : String; + ARow : TcxEditorRow; + AColumn : TcxGridDBColumn; + AValueList : TcxDataFilterValueList; + + procedure GetFilterStrings(AStrings: TStrings; + AValueList: TcxDataFilterValueList); + var + I: Integer; + S: string; + begin + AStrings.BeginUpdate; + try + AStrings.Clear; + for I := 0 to AValueList.Count - 1 do + begin + S := AValueList[I].DisplayText; + AStrings.AddObject(S, TObject(AValueList[I])); + end; + finally + AStrings.EndUpdate; + end; + end; + + procedure AddRow; + begin + ARow := vgFiltros.Add(TcxEditorRow) as TcxEditorRow; + ARow.Parent := NIL; + ARow.Properties.Caption := AColumn.Caption; + ARow.Properties.EditPropertiesClassName := 'TcxComboBoxProperties'; + with (TcxComboBoxProperties(ARow.Properties.EditProperties)) do + begin + ARow.Properties.ImageIndex := 0; + ImmediateDropDown := True; + ImmediatePost := True; + ImmediateUpdateText := True; + PostPopupValueOnTab := True; + OnEditValueChanged := vgFiltrosEditorRow1EditPropertiesEditValueChanged; + GetFilterStrings(Items, AValueList); + end; + end; + +begin +{ vgFiltros.BeginUpdate; + try + vgFiltros.ClearRows; + for i := 0 to ViewControlGrid.FocusedView.VisibleColumnCount - 1 do + begin + AColumn := TcxGridDBColumn(ViewControlGrid.FocusedView.VisibleColumns[i]); + AValueList := ViewControlGrid.FilterValueList[AColumn.Index]; + AddRow; + end; + finally + vgFiltros.EndUpdate; + end;} +end; + +procedure TfrViewFiltros.SetViewControlGrid(const Value: IViewControlGrid); +begin + inherited; + cxFilterControl1.LinkComponent := FViewControlGrid.FocusedView; +end; + +procedure TfrViewFiltros.vgFiltrosEditorRow1EditPropertiesEditValueChanged( + Sender: TObject); +var + ARow : TcxEditorRow; + AColumn : TcxGridDBColumn; + AItemIndex : Integer; +begin +{ ARow := TcxEditorRow(vgFiltros.FocusedRow); + + if not Assigned(ARow) then + Exit; + + with (TcxComboBoxProperties(ARow.Properties.EditProperties)) do + AItemIndex := Items.IndexOf(ARow.Properties.Value); + + AColumn := ViewControlGrid.GetColumnByCaption(ARow.Properties.Caption); + + if Assigned(AColumn) and (AItemIndex <> -1) then + begin + AColumn.DataBinding.Filter.BeginUpdate; + try + with ViewControlGrid.FilterValueList[AColumn.Index][AItemIndex]^ do + begin + if not (Kind in [fviAll, fviCustom]) then + AColumn.DataBinding.Filter.Active := True; + case Kind of + fviAll: + begin + AColumn.Filtered := False; + ARow.Properties.Value := ''; + end; + fviCustom: + ViewControlGrid.FocusedView.Filtering.RunCustomizeDialog(AColumn); + fviBlanks: + AColumn.DataBinding.AddToFilter(nil, foEqual, Value, + cxGetResourceStringNet(cxSFilterBlankCaption)); + fviNonBlanks: + AColumn.DataBinding.AddToFilter(nil, foNotEqual, Value, + cxGetResourceStringNet(cxSFilterBlankCaption)); + fviValue, fviMRU: + begin + AColumn.DataBinding.AddToFilter(nil, foEqual, Value, DisplayText); + AColumn.DataBinding.FilterMRUValueItems.Add(Value, DisplayText); + end; + end; + end; + finally + AColumn.DataBinding.Filter.EndUpdate; + end; + end;} +end; + +procedure TfrViewFiltros.bRefrescarClick(Sender: TObject); +begin + inherited; + Execute; +end; + +procedure TfrViewFiltros.SetModificable(const Value: Boolean); +begin + inherited; + vgFiltros.Enabled := Value; +end; + +end. + diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.dfm new file mode 100644 index 0000000..e4accb4 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.dfm @@ -0,0 +1,3 @@ +inherited frViewParametrosControlGrid: TfrViewParametrosControlGrid + ParentFont = True +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.pas b/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.pas new file mode 100644 index 0000000..94dc1b7 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewParametrosControlGrid.pas @@ -0,0 +1,82 @@ +unit uViewParametrosControlGrid; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uViewControlGrid; + +type + IViewParametrosControlGrid = interface(IViewBase) + ['{A060605B-AFB1-4F6F-8273-7739C4C4905B}'] + function GetModificable: Boolean; + procedure SetModificable(const Value: Boolean); + property Modificable : Boolean read GetModificable write SetModificable; + + procedure SetViewControlGrid (const Value : IViewControlGrid); + function GetViewControlGrid : IViewControlGrid; + property ViewControlGrid : IViewControlGrid read GetViewControlGrid write SetViewControlGrid; + + procedure Execute; + procedure Refresh; + end; + + TfrViewParametrosControlGrid = class(TfrViewBase, IViewParametrosControlGrid) + protected + FViewControlGrid : IViewControlGrid; + FModificable : Boolean; + function GetModificable: Boolean; virtual; + procedure SetModificable(const Value: Boolean); virtual; + procedure SetViewControlGrid (const Value : IViewControlGrid); virtual; + function GetViewControlGrid : IViewControlGrid; virtual; + public + property Modificable : Boolean read GetModificable write SetModificable; + property ViewControlGrid : IViewControlGrid read GetViewControlGrid write SetViewControlGrid; + procedure Execute; virtual; + procedure Refresh; override; + end; + + +implementation + +{$R *.dfm} + +{ TfrViewParametrosControlGrid } + + +procedure TfrViewParametrosControlGrid.Execute; +begin + if not Assigned(ViewControlGrid) then + raise Exception.Create('Vista para el control no asignada (Execute)'); +end; + +function TfrViewParametrosControlGrid.GetModificable: Boolean; +begin + Result := FModificable; +end; + +function TfrViewParametrosControlGrid.GetViewControlGrid: IViewControlGrid; +begin + Result := FViewControlGrid; +end; + +procedure TfrViewParametrosControlGrid.Refresh; +begin + inherited; + if not Assigned(ViewControlGrid) then + raise Exception.Create('Vista para el control no asignada (Refresh)'); +end; + +procedure TfrViewParametrosControlGrid.SetModificable( + const Value: Boolean); +begin + FModificable := Value; +end; + +procedure TfrViewParametrosControlGrid.SetViewControlGrid( + const Value: IViewControlGrid); +begin + FViewControlGrid := Value; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.dfm new file mode 100644 index 0000000..03232be --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.dfm @@ -0,0 +1,174 @@ +inherited frViewPeriodoFechas: TfrViewPeriodoFechas + Width = 253 + Height = 351 + object TBXLabel1: TTBXLabel + Left = 0 + Top = 50 + Width = 253 + Height = 29 + Align = alTop + Caption = 'Rango de fechas' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Margins.Top = 5 + Margins.Bottom = 10 + ParentColor = True + ParentFont = False + Underline = True + end + object TBXLabel2: TTBXLabel + Left = 0 + Top = 0 + Width = 253 + Height = 29 + Align = alTop + Caption = 'Periodo' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Margins.Top = 5 + Margins.Bottom = 10 + ParentColor = True + ParentFont = False + Underline = True + end + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 0 + Top = 29 + Width = 253 + Height = 21 + Align = alTop + AutoSize = True + Margins.Left = 5 + Margins.Right = 5 + TabOrder = 2 + DesignSize = ( + 253 + 21) + object cbPeriodo: TcxComboBox + Left = 8 + Top = 0 + RepositoryItem = cxRepositoryPeriodos + Anchors = [akLeft, akTop, akRight] + Properties.OnChange = cbPeriodoPropertiesChange + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + 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 + Text = 'Este mes' + Width = 209 + end + end + object TBXAlignmentPanel2: TTBXAlignmentPanel + Left = 0 + Top = 79 + Width = 253 + Height = 48 + Align = alTop + AutoSize = True + Margins.Left = 5 + Margins.Right = 5 + TabOrder = 3 + object Label1: TLabel + Left = 9 + Top = 4 + Width = 34 + Height = 13 + Caption = 'Desde:' + Transparent = True + end + object Label2: TLabel + Left = 14 + Top = 31 + Width = 29 + Height = 13 + Caption = 'hasta:' + Transparent = True + end + object edtFechaIni: TcxDateEdit + Left = 48 + Top = 0 + Properties.DateButtons = [btnToday] + Properties.PostPopupValueOnTab = True + Properties.SaveTime = False + Properties.ShowTime = False + Properties.OnValidate = edtFechaIni2PropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsDefault + 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 = 170 + end + object edtFechaFin: TcxDateEdit + Left = 48 + Top = 27 + Properties.DateButtons = [btnToday] + Properties.PostPopupValueOnTab = True + Properties.SaveTime = False + Properties.ShowTime = False + Properties.OnValidate = edtFechaFinPropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + 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 = 170 + end + end + object cxRepository: TcxEditRepository + Left = 184 + Top = 32 + object cxRepositoryPeriodos: TcxEditRepositoryComboBoxItem + Properties.BeepOnError = True + Properties.DropDownListStyle = lsFixedList + Properties.DropDownRows = 10 + Properties.ImmediatePost = True + Properties.ImmediateUpdateText = True + Properties.Items.Strings = ( + 'Hoy' + 'Ayer' + 'Esta semana' + 'Este mes' + 'Este a'#241'o' + #218'ltimos 7 d'#237'as' + #218'ltimos 30 d'#237'as' + #218'ltimos 3 meses' + 'Mes anterior' + 'A'#241'o anterior' + 'Personalizado') + Properties.PostPopupValueOnTab = True + Properties.ReadOnly = False + end + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.pas b/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.pas new file mode 100644 index 0000000..a3dc473 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewPeriodoFechas.pas @@ -0,0 +1,203 @@ +unit uViewPeriodoFechas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxGraphics, cxEdit, cxDropDownEdit, cxCalendar, StdCtrls, + cxControls, cxContainer, cxTextEdit, cxMaskEdit, TBXDkPanels, + cxEditRepositoryItems, dxLayoutControl, dxLayoutLookAndFeels, uViewBase, + Mask, JvExMask, JvToolEdit, uViewParametrosControlGrid; + +type + IViewPeriodoFechas = interface(IViewParametrosControlGrid) + ['{793084E2-873E-4C57-8BD6-9087816CCF3A}'] + end; + + TfrViewPeriodoFechas = class(TfrViewParametrosControlGrid, IViewPeriodoFechas) + cbPeriodo: TcxComboBox; + edtFechaIni: TcxDateEdit; + edtFechaFin: TcxDateEdit; + cxRepository: TcxEditRepository; + cxRepositoryPeriodos: TcxEditRepositoryComboBoxItem; + TBXLabel1: TTBXLabel; + TBXLabel2: TTBXLabel; + TBXAlignmentPanel1: TTBXAlignmentPanel; + TBXAlignmentPanel2: TTBXAlignmentPanel; + Label1: TLabel; + Label2: TLabel; + procedure cbPeriodoPropertiesChange(Sender: TObject); + procedure edtFechaIni2PropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); + procedure edtFechaFinPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); + private + function GetFechaFinal: TDateTime; + function GetFechaInicial: TDateTime; + procedure SetFechaFinal(const Value: TDateTime); + procedure SetFechaInicial(const Value: TDateTime); + public + procedure Hoy; + procedure Ayer; + procedure EstaSemana; + procedure EsteMes; + procedure EsteAno; + procedure Ultimos7dias; + procedure Ultimos30dias; + procedure Ultimos3meses; + procedure MesAnterior; + procedure AnoAnterior; + procedure Personalizado; + property FechaInicial : TDateTime read GetFechaInicial write SetFechaInicial; + property FechaFinal : TDateTime read GetFechaFinal write SetFechaFinal; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses DateUtils; + +{$R *.dfm} + +procedure TfrViewPeriodoFechas.AnoAnterior; +begin + edtFechaIni.Date := StartOfTheYear(IncYear(Today, -1)); + edtFechaFin.Date := EndOfTheYear(IncYear(Today, -1)); +end; + +procedure TfrViewPeriodoFechas.Ayer; +begin + edtFechaIni.Date := Yesterday; + edtFechaFin.Date := Yesterday; +end; + +procedure TfrViewPeriodoFechas.EstaSemana; +begin + edtFechaIni.Date := StartOfTheWeek(Today); + edtFechaFin.Date := EndOfTheWeek(Today); +end; + +procedure TfrViewPeriodoFechas.EsteAno; +begin + edtFechaIni.Date := StartOfTheYear(Today); + edtFechaFin.Date := EndOfTheYear(Today); +end; + +procedure TfrViewPeriodoFechas.EsteMes; +begin + edtFechaIni.Date := StartOfTheMonth(Today); + edtFechaFin.Date := EndOfTheMonth(Today); +end; + +function TfrViewPeriodoFechas.GetFechaFinal: TDateTime; +begin + Result := DateOf(edtFechaFin.Date); +end; + +function TfrViewPeriodoFechas.GetFechaInicial: TDateTime; +begin + Result := DateOf(edtFechaIni.Date); +end; + +procedure TfrViewPeriodoFechas.Hoy; +begin + edtFechaIni.Date := Today; + edtFechaFin.Date := Today; +end; + +procedure TfrViewPeriodoFechas.MesAnterior; +begin + edtFechaIni.Date := StartOfTheMonth(IncMonth(Today, -1)); + edtFechaFin.Date := EndOfTheMonth(IncMonth(Today, -1)); +end; + +procedure TfrViewPeriodoFechas.Personalizado; +begin + edtFechaIni.SetFocus; +end; + +procedure TfrViewPeriodoFechas.SetFechaFinal(const Value: TDateTime); +begin + edtFechaFin.Date := Value; +end; + +procedure TfrViewPeriodoFechas.SetFechaInicial(const Value: TDateTime); +begin + edtFechaIni.Date := Value; +end; + +procedure TfrViewPeriodoFechas.Ultimos30dias; +begin + edtFechaIni.Date := IncDay(Today, -30); + edtFechaFin.Date := Today +end; + +procedure TfrViewPeriodoFechas.Ultimos3meses; +begin + edtFechaIni.Date := IncMonth(Today, -3); + edtFechaFin.Date := Today +end; + +procedure TfrViewPeriodoFechas.Ultimos7dias; +begin + edtFechaIni.Date := IncDay(Today, -7); + edtFechaFin.Date := Today +end; + +procedure TfrViewPeriodoFechas.cbPeriodoPropertiesChange(Sender: TObject); +begin + case (Sender as TcxComboBox).ItemIndex of + 0 : Hoy; + 1 : Ayer; + 2 : EstaSemana; + 3 : EsteMes; + 4 : EsteAno; + 5 : Ultimos7dias; + 6 : Ultimos30dias; + 7 : Ultimos3meses; + 8 : MesAnterior; + 9 : AnoAnterior; + else + Personalizado; + end; +end; + +constructor TfrViewPeriodoFechas.Create(AOwner: TComponent); +begin + inherited; + cbPeriodo.ItemIndex := 3; + EsteMes; +end; + +procedure TfrViewPeriodoFechas.edtFechaIni2PropertiesValidate( + Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); +begin + inherited; + if DisplayValue <> edtFechaIni.Date then + cbPeriodo.ItemIndex := 12; + if DisplayValue > edtFechaFin.Date then + begin + edtFechaFin.EditText := DisplayValue; + edtFechaFin.ValidateEdit(True); + end; +end; + +procedure TfrViewPeriodoFechas.edtFechaFinPropertiesValidate( + Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); +begin + inherited; + if DisplayValue <> edtFechaFin.Date then + cbPeriodo.ItemIndex := 12; + if DisplayValue < edtFechaIni.Date then + begin + edtFechaIni.EditText := DisplayValue; + edtFechaIni.ValidateEdit(True); + end; +end; + +end. + diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.ddp b/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.ddp differ diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.dfm b/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.dfm new file mode 100644 index 0000000..d5abe2c --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.dfm @@ -0,0 +1,115 @@ +inherited frViewSumarios: TfrViewSumarios + Width = 344 + Height = 472 + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 344 + Height = 29 + Align = alTop + Caption = 'Res'#250'menes' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Margins.Top = 5 + Margins.Bottom = 10 + ParentColor = True + ParentFont = False + Underline = True + end + object vgSumarios: TcxVerticalGrid + Left = 0 + Top = 29 + Width = 344 + Height = 443 + Styles.Category = cxStyleCategoria + Align = alClient + Images = PngImageList1 + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + OptionsView.CellAutoHeight = True + OptionsView.CellEndEllipsis = True + OptionsView.ScrollBars = ssVertical + OptionsView.RowHeaderWidth = 133 + OptionsView.GridLines = vglVertical + OptionsView.ValueMinWidth = 75 + TabOrder = 1 + end + object PngImageList1: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000000534944415478DA + 63FCFFFF3F03258071F018C0C8C848944940F58CB80CB0075207A0E20E407C10 + BB7EDC0680288286A07B19DD0082861063005E43883500A72174710145614051 + 2C509C0E284B89E4028A0D0000DBA366E1865C514F0000000049454E44AE4260 + 82} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000794944415478DA + 63FCFFFF3F0325809162030CDD338936E1FCCEE98C580DC8CF4C870BFCF9F397 + E1FBCF5F0CDF7E00F1F79F0C5FBEFF6078F6FA3DC38D8B27F01BB0F3D845BCB6 + E33580222F60530832149B62AC81884B825843F02A20C6108236103204671810 + E37FBC06109B36F01A404CDAA0DC0B039E1B0126BE69852B2E82B70000000049 + 454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000011E4944415478DA + 63FCFFFF3F0325801164C0D22D27C936056E40B48F39511AFEFCFDC7F0FBCF5F + 3076082E423540ADEA3C5CE165F924148DBA0FE7C1D967AA351916AD3BC0306F + E9264C036EB5198215FD9C09A43DBE3030BC60605830E30E43FA7C882F416A8E + 96AA32ACDC728408030C80063CE06058B0E30A8A01070B9519D6EE3886DD006C + 5E5870E20243AFE439387F4FAE02C3A63D27C9F7C28E4C59866D07CE90EF85CD + A9D20CBB8F9C23DF0BABE3C4180E9FBE4CBE17964589309C387F15D580704F53 + 06ADDA8B447961619820C3D9CB37500D08723562D06FBC82E20590D36100D90B + 7382F8182E5DBF8D6A80AFA33EC39F3F88640A67FFFE0B1543C8FDFBF79FE1CA + CD3BA80678DAEA322CDB7488A48C846240EF948564E54600564A377B046BCB77 + 0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 88 + Top = 104 + Bitmap = {} + end + object cxStyleRepository1: TcxStyleRepository + Left = 216 + Top = 104 + object cxStyleNombreColumna: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clWindow + TextColor = clActiveCaption + end + object cxStyleCategoria: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = 15329769 + TextColor = clHighlight + end + object cxStyleNombreColumnaInactivo: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clWindow + TextColor = cl3DDkShadow + end + object cxStyleCategoriaInactivo: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = 15329769 + TextColor = clBtnShadow + end + object cxStyleContentInactivo: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clWindow + TextColor = clBtnShadow + end + end +end diff --git a/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.pas b/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.pas new file mode 100644 index 0000000..85f31f9 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Cliente/uViewSumarios.pas @@ -0,0 +1,325 @@ +unit uViewSumarios; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, dxLayoutControl, cxControls, cxContainer, cxListBox, + TBXDkPanels, ActnList, cxCustomData, cxGridDBTableView, cxGridTableView, + cxGraphics, cxStyles, cxTL, cxTextEdit, cxDropDownEdit, ImgList, + PngImageList, ComCtrls, JvExComCtrls, JvComCtrls, cxInplaceContainer, + ExtCtrls, cxEdit, cxVGrid, TBXToolPals, uViewControlGrid, + uViewParametrosControlGrid; + +type + IViewSumarios = interface(IViewParametrosControlGrid) + ['{4AEE3447-C6A4-491F-87E7-02CD255A7695}'] + end; + + TfrViewSumarios = class(TfrViewParametrosControlGrid, IViewSumarios) + PngImageList1: TPngImageList; + vgSumarios: TcxVerticalGrid; + TBXLabel1: TTBXLabel; + cxStyleRepository1: TcxStyleRepository; + cxStyleNombreColumna: TcxStyle; + cxStyleCategoria: TcxStyle; + cxStyleNombreColumnaInactivo: TcxStyle; + cxStyleCategoriaInactivo: TcxStyle; + cxStyleContentInactivo: TcxStyle; + procedure vgSumariosEditorRowInitPopup(Sender: TObject); + procedure vgSumariosEditorRowEditValueChanged( + Sender: TObject); + protected + procedure RellenarArbolTotales; + + function AnadirSumario(const ACaption : String; + const AKind : TcxSummaryKind) : TcxEditorRow; + + procedure RellenarTotalesPie; + procedure RellenarTotalesGrupo(const AGroupName : String); + procedure RellenarCategorias; + procedure RellenarCategoria(const APosition : TcxSummaryPosition; + const AGroupName : String = ''); + + procedure AplicarSumarioVista(const APosition : TcxSummaryPosition; + const AColumnCaption : String; const AKind : TcxSummaryKind); + procedure SetModificable(const Value: Boolean); override; + public + procedure Execute; override; + procedure Refresh; override; + end; + +implementation + +{$R *.dfm} + +uses + DB, cxGridPopupMenuConsts; + +var + SumaryKindStrArray : array[skNone..skAverage] of String + = ('', 'Sumar', 'Mínimo', 'Máximo', 'Contar', 'Promedio'); + +procedure TfrViewSumarios.Refresh; +begin + RellenarCategorias; +end; + +procedure TfrViewSumarios.RellenarArbolTotales; +var + i : Integer; +begin + // Recuperar las agrupaciones del grid + for i := 0 to ViewControlGrid.GroupedColumnCount - 1 do + begin + if i = 3 then + Break; // Sólo meter las 3 primera agrupaciones + RellenarCategoria(spGroup, ViewControlGrid.GroupedColumns[i].Caption); + end; +end; + +function TfrViewSumarios.AnadirSumario(const ACaption : String; + const AKind : TcxSummaryKind) : TcxEditorRow; +begin + Result := vgSumarios.Add(TcxEditorRow) as TcxEditorRow; + with Result do + begin + Properties.Caption := ACaption; + Properties.Value := SumaryKindStrArray[AKind]; + Properties.ImageIndex := 2; + Properties.EditPropertiesClass := TcxComboBoxProperties; + with TcxComboBoxProperties(Properties.EditProperties) do + begin + ImmediateDropDown := True; + DropDownListStyle := lsFixedList; + ImmediatePost := True; + ImmediateUpdateText := True; + PostPopupValueOnTab := True; + OnInitPopup := vgSumariosEditorRowInitPopup; + OnEditValueChanged := vgSumariosEditorRowEditValueChanged; + end; + end; +end; + +procedure TfrViewSumarios.AplicarSumarioVista ( + const APosition: TcxSummaryPosition; const AColumnCaption: String; + const AKind: TcxSummaryKind); +const + MASK_MONEDA = ',0.## €;-,0.## €'; + MASK_NUMERO = '#,##0'; +var + AColumn : TcxGridDBColumn; +begin + AColumn := ViewControlGrid.GetColumnByCaption(AColumnCaption); + if APosition = spFooter then + begin + AColumn.Summary.FooterKind := AKind; + if (AKind in [skSum, skAverage]) and (AColumn.PropertiesClassName = 'TcxCurrencyEditProperties') then + AColumn.Summary.FooterFormat := MASK_MONEDA + else + AColumn.Summary.FooterFormat := MASK_NUMERO; + end + else begin + AColumn.Summary.GroupFooterKind := AKind; + if (AKind in [skSum, skAverage]) and (AColumn.PropertiesClassName = 'TcxCurrencyEditProperties') then + AColumn.Summary.GroupFooterFormat := MASK_MONEDA + else + AColumn.Summary.GroupFooterFormat := MASK_NUMERO; + end; +end; + +procedure TfrViewSumarios.RellenarTotalesPie; +var + i, j: Integer; + ASummary: TcxDataFooterSummaryItems; + AClase : TcxSummaryKind; + ACaption : String; + ACategory : TcxCategoryRow; + ARow : TcxEditorRow; +begin + vgSumarios.BeginUpdate; + try + ACategory := (vgSumarios.AddChild(nil, TcxCategoryRow) as TcxCategoryRow); + with ACategory.Properties do + begin + ASummary := ViewControlGrid.FocusedView.DataController.Summary.FooterSummaryItems; + ImageIndex := 0; + Caption := 'Resúmenes totales' + end; + + for i := 0 to ViewControlGrid.FocusedView.VisibleColumnCount - 1 do + begin + ACaption := ViewControlGrid.FocusedView.VisibleColumns[i].Caption; + AClase := ViewControlGrid.FocusedView.VisibleColumns[i].Summary.FooterKind; + ARow := AnadirSumario(ACaption, AClase); + ARow.Parent := ACategory; + end; + finally + vgSumarios.EndUpdate; + end; +end; + + +procedure TfrViewSumarios.RellenarCategoria( + const APosition: TcxSummaryPosition; const AGroupName: String); +begin + if APosition = spFooter then + RellenarTotalesPie + else + RellenarTotalesGrupo(AGroupName); +end; + +procedure TfrViewSumarios.RellenarCategorias; +var + i : Integer; +begin + vgSumarios.ClearRows; + RellenarCategoria(spFooter); + + // Recuperar las agrupaciones del grid + for i := 0 to ViewControlGrid.GroupedColumnCount - 1 do + begin + if i = 3 then + Break; // Sólo meter las 3 primera agrupaciones + RellenarCategoria(spGroup, ViewControlGrid.GroupedColumns[i].Caption); + end; +end; + +procedure TfrViewSumarios.vgSumariosEditorRowInitPopup(Sender: TObject); +var + AColumn: TcxGridDBColumn; + ARow : TcxEditorRow; +const + NumberFieldTypes = + [ftSmallint, ftInteger, ftWord, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, + ftDateTime, ftAutoInc]; + TimeFieldTypes = [ftDate, ftTime, ftDateTime]; + +begin + inherited; + + ARow := TcxEditorRow(vgSumarios.FocusedRow); + AColumn := TcxGridDBColumn(ViewControlGrid.FocusedView.VisibleColumns[ARow.Index]); + + if Assigned(AColumn.DataBinding.Field) then + with TcxComboBoxProperties(TcxPopupEdit(Sender).Properties) do + begin + Items.Clear; + BeginUpdate; + try + Items.Add(SumaryKindStrArray[skNone]); + Items.Add(SumaryKindStrArray[skCount]); + + if AColumn.DataBinding.Field.DataType in NumberFieldTypes then + begin + Items.Add(SumaryKindStrArray[skMax]); + Items.Add(SumaryKindStrArray[skMin]); + if not (AColumn.DataBinding.Field.DataType in TimeFieldTypes) then + begin + Items.Add(SumaryKindStrArray[skSum]); + Items.Add(SumaryKindStrArray[skAverage]); + end; + end; + finally + EndUpdate; + end; + end; +end; + +procedure TfrViewSumarios.vgSumariosEditorRowEditValueChanged( + Sender: TObject); +var + AColumn : String; + ARow : TcxEditorRow; + AKind : TcxSummaryKind; + + function DarSummaryKind(AKind : String) : TcxSummaryKind; + var + i : TcxSummaryKind; + begin + if Length(AKind) = 0 then + Result := skNone + else + for i := skSum to skAverage do + if SumaryKindStrArray[i] = AKind then + begin + Result := i; + Break; + end; + end; + +begin + inherited; + + ARow := TcxEditorRow(vgSumarios.FocusedRow); + AColumn := ARow.Properties.Caption; + AKind := DarSummaryKind(VarToStr(ARow.Properties.Value)); + + if Assigned(ARow.Parent) then + begin + if(ARow.Parent.Index = 0) then + AplicarSumarioVista(spFooter, AColumn, AKind) + else + AplicarSumarioVista(spGroup, AColumn, AKind) + end; +end; + +procedure TfrViewSumarios.RellenarTotalesGrupo(const AGroupName: String); +var + i, j: Integer; + ASummary: TcxDataSummaryGroup; + AClase : TcxSummaryKind; + ACaption : String; + ACategory : TcxCategoryRow; + ARow : TcxEditorRow; + +begin + ASummary := ViewControlGrid.FocusedView.DataController.Summary.SummaryGroups.FindByItemLink(ViewControlGrid.GetColumnByCaption(AGroupName)); + + vgSumarios.BeginUpdate; + try + ACategory := (vgSumarios.AddChild(nil, TcxCategoryRow) as TcxCategoryRow); + with ACategory.Properties do + begin + ImageIndex := 1; + Caption := 'Totales de ' + AGroupName; + end; + + for i := 0 to ViewControlGrid.FocusedView.VisibleColumnCount - 1 do + begin + ACaption := ViewControlGrid.FocusedView.VisibleColumns[i].Caption; + AClase := ViewControlGrid.FocusedView.VisibleColumns[i].Summary.GroupFooterKind; + ARow := AnadirSumario(ACaption, AClase); + ARow.Parent := ACategory; + end; + finally + vgSumarios.EndUpdate; + end; +end; + +procedure TfrViewSumarios.Execute; +begin + inherited; + // +end; + +procedure TfrViewSumarios.SetModificable(const Value: Boolean); +begin + inherited; + vgSumarios.Enabled := Value; + if Value then + begin + vgSumarios.Styles.Category := cxStyleCategoria; + vgSumarios.Styles.Header := cxStyleNombreColumna; + vgSumarios.Styles.Content := nil; + end + else begin + vgSumarios.Styles.Category := cxStyleCategoriaInactivo; + vgSumarios.Styles.Header := cxStyleNombreColumnaInactivo; + vgSumarios.Styles.Content := cxStyleContentInactivo; + end; +end; + +end. + + diff --git a/2.1.0/Source/ControlesBase/ControlesBaseD10.bdsproj b/2.1.0/Source/ControlesBase/ControlesBaseD10.bdsproj new file mode 100644 index 0000000..be74bb3 --- /dev/null +++ b/2.1.0/Source/ControlesBase/ControlesBaseD10.bdsproj @@ -0,0 +1,658 @@ + + + + + + + + + + + + ControlesBaseD10.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 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + 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/2.1.0/Source/ControlesBase/ControlesBaseD10.dpk b/2.1.0/Source/ControlesBase/ControlesBaseD10.dpk new file mode 100644 index 0000000..2c5a651 --- /dev/null +++ b/2.1.0/Source/ControlesBase/ControlesBaseD10.dpk @@ -0,0 +1,86 @@ +package ControlesBaseD10; + +{$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} +{$RUNONLY} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + PngComponentsD10, + PNG_D10, + BaseD10, + dbrtl, + dsnap, + adortl, + JvGlobusD10R, + cxTreeListD10, + vclactnband, + vclx, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + cxExtEditorsD10, + cxGridD10, + cxPageControlD10, + dxLayoutControlD10, + dxComnD10, + cxVerticalGridD10, + dxPSCoreD10, + VclSmp, + bdertl, + EasyListviewD11; + +contains + uEditorControlesBase in 'Cliente\uEditorControlesBase.pas' {fEditorControlesBase: TCustomEditor}, + schControlesClient_Intf in 'Reglas\schControlesClient_Intf.pas', + uBizControlesBase in 'Reglas\uBizControlesBase.pas', + uDataModuleControles in 'Cliente\uDataModuleControles.pas' {dmControles: TDAClientDataModule}, + uEditorControlBase in 'Cliente\uEditorControlBase.pas' {fEditorControlBase: TCustomEditor}, + uViewAgrupaciones in 'Cliente\uViewAgrupaciones.pas' {frViewAgrupaciones: TCustomView}, + uViewColumnas in 'Cliente\uViewColumnas.pas' {frViewColumnas: TCustomView}, + uViewSumarios in 'Cliente\uViewSumarios.pas' {frViewSumarios: TCustomView}, + uViewControlGrid in 'Cliente\uViewControlGrid.pas' {frViewControlGrid: TCustomView}, + uViewControlBase in 'Cliente\uViewControlBase.pas' {frViewControlBase: TCustomView}, + uViewParametrosControlGrid in 'Cliente\uViewParametrosControlGrid.pas' {frViewParametrosControlGrid: TCustomView}, + uFormPropiedadesControl in 'Cliente\uFormPropiedadesControl.pas' {frPropiedadesControl}, + uViewFiltros in 'Cliente\uViewFiltros.pas' {frViewFiltros: TCustomView}, + uViewPeriodoFechas in 'Cliente\uViewPeriodoFechas.pas' {frViewPeriodoFechas: TCustomView}, + uViewControlesBase in 'Cliente\uViewControlesBase.pas' {frViewControlesBase: TCustomView}, + uDateUtils in 'Cliente\uDateUtils.pas'; + +end. diff --git a/2.1.0/Source/ControlesBase/ControlesBaseD10.dproj b/2.1.0/Source/ControlesBase/ControlesBaseD10.dproj new file mode 100644 index 0000000..a2ed8fe --- /dev/null +++ b/2.1.0/Source/ControlesBase/ControlesBaseD10.dproj @@ -0,0 +1,628 @@ + + + {5a36df18-a9b1-4d84-b46c-41d1522c62e2} + ControlesBaseD10.dpk + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Cliente\ControlesBaseD10.bpl + + + 7.0 + False + False + False + True + 0 + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + RELEASE + + + 7.0 + False + True + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseTrueC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0ControlesBaseD10.dpk + 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 + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmControles
+
+ + +
fEditorControlBase
+
+ +
fEditorControlesBase
+
+ +
frPropiedadesControl
+
+ +
frViewAgrupaciones
+
+ +
frViewColumnas
+
+ +
frViewControlBase
+
+ +
frViewControlesBase
+
+ +
frViewControlGrid
+
+ +
frViewFiltros
+
+ +
frViewParametrosControlGrid
+
+ +
frViewPeriodoFechas
+
+ +
frViewSumarios
+
+ + +
+
+ diff --git a/2.1.0/Source/ControlesBase/ControlesBaseD10.drc b/2.1.0/Source/ControlesBase/ControlesBaseD10.drc new file mode 100644 index 0000000..46b19f0 --- /dev/null +++ b/2.1.0/Source/ControlesBase/ControlesBaseD10.drc @@ -0,0 +1,29 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uFormPropiedadesControl.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewControlesBase.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uEditorControlesBase.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uDataModuleControles.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewControlGrid.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewParametrosControlGrid.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewAgrupaciones.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewColumnas.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewSumarios.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewFiltros.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewControlBase.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uEditorControlBase.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Cliente\uViewPeriodoFechas.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\ControlesBaseD10.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtfC.tmp */ diff --git a/2.1.0/Source/ControlesBase/ControlesBaseD10.identcache b/2.1.0/Source/ControlesBase/ControlesBaseD10.identcache new file mode 100644 index 0000000..626882e Binary files /dev/null and b/2.1.0/Source/ControlesBase/ControlesBaseD10.identcache differ diff --git a/2.1.0/Source/ControlesBase/ControlesBaseD10.rc b/2.1.0/Source/ControlesBase/ControlesBaseD10.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/ControlesBase/ControlesBaseD10.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/ControlesBase/ControlesBaseD10.res b/2.1.0/Source/ControlesBase/ControlesBaseD10.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/ControlesBase/ControlesBaseD10.res differ diff --git a/2.1.0/Source/ControlesBase/Reglas/schControlesClient_Intf.pas b/2.1.0/Source/ControlesBase/Reglas/schControlesClient_Intf.pas new file mode 100644 index 0000000..31eb351 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Reglas/schControlesClient_Intf.pas @@ -0,0 +1,209 @@ +unit schControlesClient_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_ListaControlesPorCategoria = '{E00A0F0C-CDD1-4E50-AED7-E0AD758A5DEF}'; + + { Data table names } + nme_ListaControlesPorCategoria = 'ListaControlesPorCategoria'; + + { ListaControlesPorCategoria fields } + fld_ListaControlesPorCategoriaID = 'ID'; + fld_ListaControlesPorCategoriaCATEGORIA = 'CATEGORIA'; + fld_ListaControlesPorCategoriaMODIFICABLE = 'MODIFICABLE'; + fld_ListaControlesPorCategoriaICONO = 'ICONO'; + fld_ListaControlesPorCategoriaNOMBRE = 'NOMBRE'; + fld_ListaControlesPorCategoriaDESCRIPCION = 'DESCRIPCION'; + fld_ListaControlesPorCategoriaORDEN = 'ORDEN'; + fld_ListaControlesPorCategoriaVISTA = 'VISTA'; + + { ListaControlesPorCategoria field indexes } + idx_ListaControlesPorCategoriaID = 0; + idx_ListaControlesPorCategoriaCATEGORIA = 1; + idx_ListaControlesPorCategoriaMODIFICABLE = 2; + idx_ListaControlesPorCategoriaICONO = 3; + idx_ListaControlesPorCategoriaNOMBRE = 4; + idx_ListaControlesPorCategoriaDESCRIPCION = 5; + idx_ListaControlesPorCategoriaORDEN = 6; + idx_ListaControlesPorCategoriaVISTA = 7; + +type + { IListaControlesPorCategoria } + IListaControlesPorCategoria = interface(IDAStronglyTypedDataTable) + ['{A9D98B29-EE5D-49D6-A871-DA34463DD0EC}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetCATEGORIAValue: String; + procedure SetCATEGORIAValue(const aValue: String); + function GetMODIFICABLEValue: String; + procedure SetMODIFICABLEValue(const aValue: String); + function GetICONOValue: Integer; + procedure SetICONOValue(const aValue: Integer); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetDESCRIPCIONValue: String; + procedure SetDESCRIPCIONValue(const aValue: String); + function GetORDENValue: Integer; + procedure SetORDENValue(const aValue: Integer); + function GetVISTAValue: IROStrings; + procedure SetVISTAValue(const aValue: IROStrings); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + property MODIFICABLE: String read GetMODIFICABLEValue write SetMODIFICABLEValue; + property ICONO: Integer read GetICONOValue write SetICONOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property ORDEN: Integer read GetORDENValue write SetORDENValue; + property VISTA: IROStrings read GetVISTAValue write SetVISTAValue; + end; + + { TListaControlesPorCategoriaDataTableRules } + TListaControlesPorCategoriaDataTableRules = class(TDADataTableRules, IListaControlesPorCategoria) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + function GetMODIFICABLEValue: String; virtual; + procedure SetMODIFICABLEValue(const aValue: String); virtual; + function GetICONOValue: Integer; virtual; + procedure SetICONOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetORDENValue: Integer; virtual; + procedure SetORDENValue(const aValue: Integer); virtual; + function GetVISTAValue: IROStrings; virtual; + procedure SetVISTAValue(const aValue: IROStrings); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property CATEGORIA: String read GetCATEGORIAValue write SetCATEGORIAValue; + property MODIFICABLE: String read GetMODIFICABLEValue write SetMODIFICABLEValue; + property ICONO: Integer read GetICONOValue write SetICONOValue; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property DESCRIPCION: String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property ORDEN: Integer read GetORDENValue write SetORDENValue; + property VISTA: IROStrings read GetVISTAValue write SetVISTAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TListaControlesPorCategoriaDataTableRules } +constructor TListaControlesPorCategoriaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TListaControlesPorCategoriaDataTableRules.Destroy; +begin + inherited; +end; + +function TListaControlesPorCategoriaDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaID].AsInteger; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaID].AsInteger := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetCATEGORIAValue: String; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaCATEGORIA].AsString; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetCATEGORIAValue(const aValue: String); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaCATEGORIA].AsString := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetMODIFICABLEValue: String; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaMODIFICABLE].AsString; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetMODIFICABLEValue(const aValue: String); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaMODIFICABLE].AsString := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetICONOValue: Integer; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaICONO].AsInteger; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetICONOValue(const aValue: Integer); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaICONO].AsInteger := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaNOMBRE].AsString; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaNOMBRE].AsString := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetDESCRIPCIONValue: String; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaDESCRIPCION].AsString; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetDESCRIPCIONValue(const aValue: String); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaDESCRIPCION].AsString := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetORDENValue: Integer; +begin + result := DataTable.Fields[idx_ListaControlesPorCategoriaORDEN].AsInteger; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetORDENValue(const aValue: Integer); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaORDEN].AsInteger := aValue; +end; + +function TListaControlesPorCategoriaDataTableRules.GetVISTAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := DataTable.Fields[idx_ListaControlesPorCategoriaVISTA].AsString; +end; + +procedure TListaControlesPorCategoriaDataTableRules.SetVISTAValue(const aValue: IROStrings); +begin + DataTable.Fields[idx_ListaControlesPorCategoriaVISTA].AsString := aValue.Text; +end; + + +initialization + RegisterDataTableRules(RID_ListaControlesPorCategoria, TListaControlesPorCategoriaDataTableRules); + +end. diff --git a/2.1.0/Source/ControlesBase/Reglas/schControlesServer_Intf.pas b/2.1.0/Source/ControlesBase/Reglas/schControlesServer_Intf.pas new file mode 100644 index 0000000..469110c --- /dev/null +++ b/2.1.0/Source/ControlesBase/Reglas/schControlesServer_Intf.pas @@ -0,0 +1,235 @@ +unit schControlesServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schControlesClient_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_ListaControlesPorCategoriaDelta = '{65EAE0A6-0E97-4F81-A0E0-E554B067286C}'; + +type + { IListaControlesPorCategoriaDelta } + IListaControlesPorCategoriaDelta = interface(IListaControlesPorCategoria) + ['{65EAE0A6-0E97-4F81-A0E0-E554B067286C}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldCATEGORIAValue : String; + function GetOldMODIFICABLEValue : String; + function GetOldICONOValue : Integer; + function GetOldNOMBREValue : String; + function GetOldDESCRIPCIONValue : String; + function GetOldORDENValue : Integer; + function GetOldVISTAValue : IROStrings; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + property OldMODIFICABLE : String read GetOldMODIFICABLEValue; + property OldICONO : Integer read GetOldICONOValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property OldORDEN : Integer read GetOldORDENValue; + property OldVISTA : IROStrings read GetOldVISTAValue; + end; + + { TListaControlesPorCategoriaBusinessProcessorRules } + TListaControlesPorCategoriaBusinessProcessorRules = class(TDABusinessProcessorRules, IListaControlesPorCategoria, IListaControlesPorCategoriaDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetCATEGORIAValue: String; virtual; + function GetOldCATEGORIAValue: String; virtual; + procedure SetCATEGORIAValue(const aValue: String); virtual; + function GetMODIFICABLEValue: String; virtual; + function GetOldMODIFICABLEValue: String; virtual; + procedure SetMODIFICABLEValue(const aValue: String); virtual; + function GetICONOValue: Integer; virtual; + function GetOldICONOValue: Integer; virtual; + procedure SetICONOValue(const aValue: Integer); virtual; + function GetNOMBREValue: String; virtual; + function GetOldNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetDESCRIPCIONValue: String; virtual; + function GetOldDESCRIPCIONValue: String; virtual; + procedure SetDESCRIPCIONValue(const aValue: String); virtual; + function GetORDENValue: Integer; virtual; + function GetOldORDENValue: Integer; virtual; + procedure SetORDENValue(const aValue: Integer); virtual; + function GetVISTAValue: IROStrings; virtual; + function GetOldVISTAValue: IROStrings; virtual; + procedure SetVISTAValue(const aValue: IROStrings); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property CATEGORIA : String read GetCATEGORIAValue write SetCATEGORIAValue; + property OldCATEGORIA : String read GetOldCATEGORIAValue; + property MODIFICABLE : String read GetMODIFICABLEValue write SetMODIFICABLEValue; + property OldMODIFICABLE : String read GetOldMODIFICABLEValue; + property ICONO : Integer read GetICONOValue write SetICONOValue; + property OldICONO : Integer read GetOldICONOValue; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property DESCRIPCION : String read GetDESCRIPCIONValue write SetDESCRIPCIONValue; + property OldDESCRIPCION : String read GetOldDESCRIPCIONValue; + property ORDEN : Integer read GetORDENValue write SetORDENValue; + property OldORDEN : Integer read GetOldORDENValue; + property VISTA : IROStrings read GetVISTAValue write SetVISTAValue; + property OldVISTA : IROStrings read GetOldVISTAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TListaControlesPorCategoriaBusinessProcessorRules } +constructor TListaControlesPorCategoriaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TListaControlesPorCategoriaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaID]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaID]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaID] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaCATEGORIA]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldCATEGORIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaCATEGORIA]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetCATEGORIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaCATEGORIA] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetMODIFICABLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaMODIFICABLE]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldMODIFICABLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaMODIFICABLE]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetMODIFICABLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaMODIFICABLE] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetICONOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaICONO]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldICONOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaICONO]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetICONOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaICONO] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaNOMBRE]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaNOMBRE]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaNOMBRE] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaDESCRIPCION]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldDESCRIPCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaDESCRIPCION]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetDESCRIPCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaDESCRIPCION] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetORDENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaORDEN]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldORDENValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaORDEN]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetORDENValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaORDEN] := aValue; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetVISTAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaVISTA]; +end; + +function TListaControlesPorCategoriaBusinessProcessorRules.GetOldVISTAValue: IROStrings; +begin + result := NewROStrings(); + result.Text := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaControlesPorCategoriaVISTA]; +end; + +procedure TListaControlesPorCategoriaBusinessProcessorRules.SetVISTAValue(const aValue: IROStrings); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaControlesPorCategoriaVISTA] := aValue.Text; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ListaControlesPorCategoriaDelta, TListaControlesPorCategoriaBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/ControlesBase/Reglas/uBizControlesBase.pas b/2.1.0/Source/ControlesBase/Reglas/uBizControlesBase.pas new file mode 100644 index 0000000..59fc9d1 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Reglas/uBizControlesBase.pas @@ -0,0 +1,80 @@ +unit uBizControlesBase; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, schControlesClient_Intf; + +type + IBizControlBase = interface(IListaControlesPorCategoria) + ['{203A654A-16DF-404B-ACD4-CCCA796091C6}'] + procedure Show; + procedure VerPropiedades; + function EsModificable : Boolean; + end; + + TBizControlBaseDataTableRules = class(TListaControlesPorCategoriaDataTableRules, IBizControlBase) + protected + function GetVISTAValue: IROStrings; override; + procedure BeforePost(Sender: TDADataTable); override; + public + procedure Show; virtual; abstract; + procedure VerPropiedades; + function EsModificable : Boolean; + end; + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, uDataModuleBase, + uEditorUtils, Variants, uFormPropiedadesControl, Forms, Controls; + +{ TBizInformesVentasDataTableRules } + +procedure TBizControlBaseDataTableRules.BeforePost( + Sender: TDADataTable); +begin + inherited; + if Length(CATEGORIA) = 0 then + raise Exception.Create('Categoría no asignada'); + + if Length(NOMBRE) = 0 then + VerPropiedades; +end; + +function TBizControlBaseDataTableRules.EsModificable: Boolean; +begin + Result := (MODIFICABLE = 'S'); +end; + +function TBizControlBaseDataTableRules.GetVISTAValue: IROStrings; +begin + Result := NewROStrings(); + Result.Add(DataTable.Fields[idx_ListaControlesPorCategoriaVISTA].AsString); +end; + +procedure TBizControlBaseDataTableRules.VerPropiedades; +begin + with TfrPropiedadesControl.Create(NIL) do + try + Nombre := Self.NOMBRE; + Descripcion := Self.DESCRIPCION; + Modificable := Self.EsModificable; + Icono := Self.ICONO; + if (ShowModal = mrOK) then + begin + DataTable.Edit; + Self.NOMBRE := Nombre; + Self.DESCRIPCION := Descripcion; + Self.ICONO := Icono; + if Modificable then + Self.MODIFICABLE := 'S' + else + Self.MODIFICABLE := 'N'; + end; + finally + Free; + end; +end; + +end. diff --git a/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.ddp b/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.ddp differ diff --git a/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.dfm b/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.dfm new file mode 100644 index 0000000..b5cd583 --- /dev/null +++ b/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.dfm @@ -0,0 +1,264 @@ +object srvControles: TsrvControles + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schControles + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object schControles: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Value = 'vebyas' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'SELECT '#10' ID, CATEGORIA, MODIFICABLE, ICONO, NOMBRE, DESCRIPCI' + + 'ON, ORDEN, VISTA'#10' FROM'#10' RDX_INFORMES'#10' WHERE CATEGORIA = :CA' + + 'TEGORIA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'ICONO' + TableField = 'ICONO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'ORDEN' + TableField = 'ORDEN' + end + item + DatasetField = 'VISTA' + TableField = 'VISTA' + end + item + DatasetField = 'MODIFICABLE' + TableField = 'MODIFICABLE' + end> + end> + Name = 'ListaControlesPorCategoria' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + Required = True + ServerAutoRefresh = True + InPrimaryKey = True + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + end + item + Name = 'MODIFICABLE' + DataType = datString + Size = 1 + DefaultValue = 'S' + end + item + Name = 'ICONO' + DataType = datSmallInt + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + end + item + Name = 'ORDEN' + DataType = datSmallInt + end + item + Name = 'VISTA' + DataType = datMemo + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'MODIFICABLE' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'ICONO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ORDEN' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'VISTA' + DataType = datMemo + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'INSERT'#10' INTO RDX_INFORMES'#10' (CATEGORIA, MODIFICABLE, ICONO, N' + + 'OMBRE, DESCRIPCION, ORDEN, VISTA)'#10' VALUES'#10' (:CATEGORIA, :MOD' + + 'IFICABLE, :ICONO, :NOMBRE, :DESCRIPCION, :ORDEN,'#10' :VISTA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ControlesPorCategoria' + end + item + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'MODIFICABLE' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'ICONO' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'ORDEN' + DataType = datInteger + Value = '' + ParamType = daptInput + end + item + Name = 'VISTA' + DataType = datMemo + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'UPDATE RDX_INFORMES'#10' SET '#10' CATEGORIA = :CATEGORIA, '#10' MODI' + + 'FICABLE = :MODIFICABLE,'#10' ICONO = :ICONO, '#10' NOMBRE = :NOMBR' + + 'E, '#10' DESCRIPCION = :DESCRIPCION, '#10' ORDEN = :ORDEN, '#10' VI' + + 'STA = :VISTA'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ControlesPorCategoria' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 40 + Top = 24 + end + object bpControles: TDABusinessProcessor + Schema = schControles + InsertCommandName = 'Insert_ControlesPorCategoria' + UpdateCommandName = 'Update_ControlesPorCategoria' + ReferencedDataset = 'ListaControlesPorCategoria' + ProcessorOptions = [poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 144 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.pas b/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.pas new file mode 100644 index 0000000..c4dbf0b --- /dev/null +++ b/2.1.0/Source/ControlesBase/Servidor/srvControles_Impl.pas @@ -0,0 +1,48 @@ +unit srvControles_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TsrvControles } + TsrvControles = class(TDARemoteService, IsrvControles) + bpControles: TDABusinessProcessor; + DABINAdapter: TDABINAdapter; + schControles: TDASchema; + private + protected + { IsrvControles methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer; + +procedure Create_srvControles(out anInstance : IUnknown); +begin + anInstance := TsrvControles.Create(NIL); +end; + +{ srvControles } +initialization + TROClassFactory.Create('srvControles', Create_srvControles, TsrvControles_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Informes/InformeReferenciaGenerica.fr3 b/2.1.0/Source/Informes/InformeReferenciaGenerica.fr3 new file mode 100644 index 0000000..0de6515 --- /dev/null +++ b/2.1.0/Source/Informes/InformeReferenciaGenerica.fr3 @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.bdsproj b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.bdsproj new file mode 100644 index 0000000..099c4ad --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + Devoluciones.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 + 0 + 1 + 0 + 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 + 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 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.cfg b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.cfg new file mode 100644 index 0000000..a34a309 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dof b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dof new file mode 100644 index 0000000..e3c2ef2 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Cliente +Item1=..\..\Output\Servidor +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dpk b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dpk new file mode 100644 index 0000000..929e16d --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dpk @@ -0,0 +1,78 @@ +package Devoluciones; + +{$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 OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + dbrtl, + dsnap, + BaseD10, + vcl, + adortl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + GUISDK_D10, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + cxTreeListD10, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + JvGlobusD10R, + ControlesBaseD10, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + dxPSCoreD10, + dxComnD10, + JvCustomD10R, + bdertl, + VclSmp, + dxLayoutControlD10, + Parametros; + +contains + uPluginControllerDevoluciones in 'uPluginControllerDevoluciones.pas' {ModuleDevoluciones: TModuleController}, + uBizDevoluciones in '..\Reglas\uBizDevoluciones.pas', + uDataModuleDevoluciones in 'uDataModuleDevoluciones.pas' {dmDevoluciones: TDAClientDataModule}, + uViewListaDevoluciones in 'uViewListaDevoluciones.pas' {frViewListaDevoluciones: TCustomView}, + uEditorListaDevoluciones in 'uEditorListaDevoluciones.pas' {fEditorListaDevoluciones: TCustomEditor}, + uEditorAjustarDevoluciones in 'uEditorAjustarDevoluciones.pas' {fEditorAjustarRecepciones}; + +end. diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dproj b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dproj new file mode 100644 index 0000000..9ae57bb --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.dproj @@ -0,0 +1,614 @@ + + + {b18cc884-6459-4d3a-be2f-ae618ad4aa76} + Devoluciones.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Devoluciones.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Devoluciones.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmDevoluciones
+
+ +
fEditorAjustarRecepciones
+
+ +
fEditorListaDevoluciones
+
+ +
ModuleDevoluciones
+
+ +
frViewListaDevoluciones
+
+
+
+ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.drc b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.drc new file mode 100644 index 0000000..606df9d --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.drc @@ -0,0 +1,21 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Cliente\uDataModuleDevoluciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Cliente\uViewListaDevoluciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Cliente\uEditorListaDevoluciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Cliente\uPluginControllerDevoluciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Cliente\uEditorAjustarDevoluciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Cliente\Devoluciones.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1E.tmp */ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.identcache b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.identcache new file mode 100644 index 0000000..9ba82d1 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.identcache differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.rc b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.res b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/Devoluciones.res differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/MPCommonLibD10.drc b/2.1.0/Source/Modulos/Devoluciones/Cliente/MPCommonLibD10.drc new file mode 100644 index 0000000..e520ba1 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/MPCommonLibD10.drc @@ -0,0 +1,23 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x52", "\x00", "\x4f", "\x00", "\x44", "\x00", /* 0020: .R.O.D. */ + "\x58", "\x00", "\x53", "\x00", "\x6f", "\x00", "\x63", "\x00", /* 0028: X.S.o.c. */ + "\x6b", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0030: k. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0038: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0040: y... */ +END + diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/cxVerticalGridVCLD7.drc b/2.1.0/Source/Modulos/Devoluciones/Cliente/cxVerticalGridVCLD7.drc new file mode 100644 index 0000000..e520ba1 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/cxVerticalGridVCLD7.drc @@ -0,0 +1,23 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x52", "\x00", "\x4f", "\x00", "\x44", "\x00", /* 0020: .R.O.D. */ + "\x58", "\x00", "\x53", "\x00", "\x6f", "\x00", "\x63", "\x00", /* 0028: X.S.o.c. */ + "\x6b", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0030: k. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0038: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0040: y... */ +END + diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.ddp b/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.ddp differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.dfm b/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.dfm new file mode 100644 index 0000000..72e2fe3 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.dfm @@ -0,0 +1,1639 @@ +object dmDevoluciones: TdmDevoluciones + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 297 + Width = 620 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvDevoluciones' + Left = 40 + Top = 32 + end + object tbl_Devoluciones: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_APROBADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FECHACAMBIO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CENTRO' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FILIAL' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CODIGO' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_PRODUCTO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_COLOR' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FECHA' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_NUMHOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_ESTADO_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_OBSERVACIONES_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CONTABILIZAR_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S38' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S40' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S42' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S44' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S46' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S48' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SOLICITADO' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_SOLICITADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E38' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E40' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E42' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E44' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E46' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E48' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENVIADO' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ENVIADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER38' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER40' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER42' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER44' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER46' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER48' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENVIADO_RECT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + ServerAutoRefresh = True + DictionaryEntry = 'Devoluciones_ENVIADO_RECT' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIFERENCIA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + ServerAutoRefresh = True + DictionaryEntry = 'Devoluciones_DIFERENCIA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Devoluciones' + IndexDefs = <> + Left = 160 + Top = 96 + end + object ds_Devoluciones: TDADataSource + DataSet = tbl_Devoluciones.Dataset + DataTable = tbl_Devoluciones + Left = 160 + Top = 32 + end + object tbl_DevolucionesAprobadas: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_APROBADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FECHACAMBIO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CENTRO' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FILIAL' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CODIGO' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_PRODUCTO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_COLOR' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FECHA' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_NUMHOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_ESTADO_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_OBSERVACIONES_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CONTABILIZAR_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S38' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S40' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S42' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S44' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S46' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S48' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SOLICITADO' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_SOLICITADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E38' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E40' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E42' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E44' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E46' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E48' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENVIADO' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ENVIADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER38' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER40' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER42' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER44' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER46' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER48' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENVIADO_RECT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + ServerAutoRefresh = True + DictionaryEntry = 'Devoluciones_ENVIADO_RECT' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIFERENCIA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + ServerAutoRefresh = True + DictionaryEntry = 'Devoluciones_DIFERENCIA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DevolucionesAprobadas' + IndexDefs = <> + Left = 320 + Top = 96 + end + object ds_DevolucionesAprobadas: TDADataSource + DataSet = tbl_DevolucionesAprobadas.Dataset + DataTable = tbl_DevolucionesAprobadas + Left = 320 + Top = 32 + end + object tbl_DevolucionesPendientes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_APROBADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FECHACAMBIO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CENTRO' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FILIAL' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CODIGO' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_PRODUCTO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_COLOR' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + ReadOnly = True + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_FECHA' + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_NUMHOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_ESTADO_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_OBSERVACIONES_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + DictionaryEntry = 'Devoluciones_CONTABILIZAR_HOJA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S38' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S40' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S42' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S44' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S46' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'S48' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_S48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SOLICITADO' + DataType = datInteger + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_SOLICITADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E38' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E40' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E42' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E44' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E46' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'E48' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_E48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENVIADO' + DataType = datFloat + BlobType = dabtUnknown + LogChanges = False + DisplayWidth = 0 + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ENVIADO' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER38' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER38' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER40' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER40' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER42' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER42' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER44' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER44' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER46' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER46' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ER48' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + DictionaryEntry = 'Devoluciones_ER48' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ENVIADO_RECT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + ServerAutoRefresh = True + DictionaryEntry = 'Devoluciones_ENVIADO_RECT' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIFERENCIA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taRightJustify + ServerAutoRefresh = True + DictionaryEntry = 'Devoluciones_DIFERENCIA' + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'DevolucionesPendientes' + IndexDefs = <> + Left = 480 + Top = 96 + end + object ds_DevolucionesPendientes: TDADataSource + DataSet = tbl_DevolucionesPendientes.Dataset + DataTable = tbl_DevolucionesPendientes + Left = 480 + Top = 32 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + FailureBehavior = fbBoth + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.pas b/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.pas new file mode 100644 index 0000000..7809dc3 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uDataModuleDevoluciones.pas @@ -0,0 +1,87 @@ +unit uDataModuleDevoluciones; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uDataModuleBase, uROClient, + uROServiceComponent, uRORemoteService, uBizDevoluciones, uDARemoteDataAdapter, + uDAInterfaces; + +type + TdmDevoluciones = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_Devoluciones: TDACDSDataTable; + ds_Devoluciones: TDADataSource; + tbl_DevolucionesAprobadas: TDACDSDataTable; + ds_DevolucionesAprobadas: TDADataSource; + tbl_DevolucionesPendientes: TDACDSDataTable; + ds_DevolucionesPendientes: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function GetItems : IBizDevoluciones; overload; + function GetItems(const AEstado : TInvDevolucionEstado) : IBizDevoluciones; overload; + end; + +var + dmDevoluciones: TdmDevoluciones; + +implementation + +{$R *.DFM} + +uses + Forms, Windows, Controls, VARELA_Intf, uEditorPreview, + uDataTableUtils, uROTypes, cxControls; + +procedure TdmDevoluciones.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmDevoluciones.GetItems: IBizDevoluciones; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Devoluciones, dtLista); + dtLista.BusinessRulesID := BIZ_DEVOLUCIONES; + Result := (dtLista as IBizDevoluciones); + finally + HideHourglassCursor; + end; +end; + +function TdmDevoluciones.GetItems( + const AEstado: TInvDevolucionEstado): IBizDevoluciones; +var + dtLista: TDACDSDataTable; + AStr : String; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + + case AEstado of + tidPendiente : CloneDataTable(tbl_DevolucionesPendientes, dtLista); + tidAprobado : CloneDataTable(tbl_DevolucionesAprobadas, dtLista); + end; + + dtLista.BusinessRulesID := BIZ_DEVOLUCIONES; + Result := (dtLista as IBizDevoluciones); + finally + HideHourglassCursor; + end; +end; + +initialization + dmDevoluciones := TdmDevoluciones.Create(nil); + +finalization + FreeAndNil(dmDevoluciones); + +end. diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.ddp b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.ddp differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.dfm b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.dfm new file mode 100644 index 0000000..11203b8 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.dfm @@ -0,0 +1,945 @@ +object fEditorAjustarDevoluciones: TfEditorAjustarDevoluciones + Left = 445 + Top = 219 + BorderStyle = bsDialog + Caption = 'Modificaci'#243'n de devoluciones de productos' + ClientHeight = 536 + ClientWidth = 753 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 753 + Height = 73 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'MS Sans Serif' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'MS Sans Serif' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Modificaci'#243'n de devoluciones de productos') + Comments.Strings = ( + '') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = True + Gradient.Orientation = fgdVertical + BufferedDraw = False + end + object Bevel1: TBevel + Left = 11 + Top = 483 + Width = 730 + Height = 4 + Shape = bsBottomLine + end + object bAceptar: TButton + Left = 572 + Top = 496 + Width = 75 + Height = 25 + Caption = '&Aceptar' + ModalResult = 1 + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 666 + Top = 496 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 73 + Width = 753 + Height = 403 + ParentBackground = True + TabOrder = 2 + AutoContentSizes = [acsWidth, acsHeight] + object Bevel2: TBevel + Left = 22 + Top = 222 + Width = 50 + Height = 10 + Shape = bsBottomLine + end + object Label1: TLabel + Left = 22 + Top = 258 + Width = 92 + Height = 13 + Caption = 'Cantidad solicitada:' + end + object Label2: TLabel + Left = 22 + Top = 333 + Width = 84 + Height = 13 + Caption = 'Cantidad por EDI:' + end + object Label3: TLabel + Left = 61 + Top = 362 + Width = 45 + Height = 13 + Caption = 'Cantidad:' + end + object edtEnv40: TcxDBMaskEdit + Left = 218 + Top = 256 + DataBinding.DataField = 'S40' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 9 + Width = 25 + end + object edtEnv38: TcxDBMaskEdit + Left = 120 + Top = 256 + DataBinding.DataField = 'S38' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 8 + Width = 25 + end + object edtEnv42: TcxDBMaskEdit + Left = 323 + Top = 256 + DataBinding.DataField = 'S42' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 10 + Width = 25 + end + object edtEnv44: TcxDBMaskEdit + Left = 421 + Top = 256 + DataBinding.DataField = 'S44' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 11 + Width = 25 + end + object edtEnv46: TcxDBMaskEdit + Left = 541 + Top = 256 + DataBinding.DataField = 'S46' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 12 + Width = 25 + end + object edtEnv48: TcxDBMaskEdit + Left = 639 + Top = 256 + DataBinding.DataField = 'S48' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 13 + Width = 25 + end + object edtRec38: TcxDBMaskEdit + Left = 112 + Top = 331 + DataBinding.DataField = 'E38' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 14 + Width = 98 + end + object edtRec40: TcxDBMaskEdit + Left = 216 + Top = 331 + DataBinding.DataField = 'E40' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 16 + Width = 98 + end + object edtRec42: TcxDBMaskEdit + Left = 320 + Top = 331 + DataBinding.DataField = 'E42' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 18 + Width = 98 + end + object edtRec44: TcxDBMaskEdit + Left = 424 + Top = 331 + DataBinding.DataField = 'E44' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 20 + Width = 98 + end + object edtRec46: TcxDBMaskEdit + Left = 528 + Top = 331 + DataBinding.DataField = 'E46' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 22 + Width = 98 + end + object edtRec48: TcxDBMaskEdit + Left = 632 + Top = 331 + DataBinding.DataField = 'E48' + DataBinding.DataSource = dsDataSource + Enabled = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 24 + Width = 98 + end + object edtRecR48: TcxCurrencyEdit + Left = 632 + Top = 358 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 25 + Width = 98 + end + object edtRecR46: TcxCurrencyEdit + Left = 528 + Top = 358 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 23 + Width = 98 + end + object edtRecR44: TcxCurrencyEdit + Left = 424 + Top = 358 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 21 + Width = 98 + end + object edtRecR42: TcxCurrencyEdit + Left = 320 + Top = 358 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 19 + Width = 98 + end + object edtRecR40: TcxCurrencyEdit + Left = 216 + Top = 358 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 17 + Width = 98 + end + object edtRecR38: TcxCurrencyEdit + Left = 112 + Top = 358 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 15 + Width = 98 + end + object edtFecha: TcxDBLabel + Left = 144 + Top = 28 + DataBinding.DataField = 'FECHA' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 108 + end + object edtCentro: TcxDBLabel + Left = 344 + Top = 28 + DataBinding.DataField = 'FILIAL' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 481 + end + object edtProducto: TcxDBLabel + Left = 144 + Top = 51 + DataBinding.DataField = 'PRODUCTO' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 420 + end + object edtColor: TcxDBLabel + Left = 613 + Top = 51 + DataBinding.DataField = 'COLOR' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 118 + end + object edtHoja: TcxDBLabel + Left = 144 + Top = 104 + DataBinding.DataField = 'NUMHOJA' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 140 + end + object cbEstadoHoja: TcxComboBox + Left = 144 + Top = 127 + Properties.Items.Strings = ( + 'Ninguna' + 'Env'#237'o perdido' + 'Env'#237'o retrasado' + 'Env'#237'o devuelto' + 'Otras incidencias') + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + 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 + Text = 'cbEstadoHoja' + Width = 166 + end + object memEstadoHoja: TcxMemo + Left = 22 + Top = 172 + Lines.Strings = ( + 'memEstadoHoja') + 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 + Height = 44 + Width = 709 + end + object cbContabilizarHoja: TcxCheckBox + Left = 231 + Top = 127 + Caption = 'Contabilizar esta hoja de movimiento' + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 'S' + Properties.ValueUnchecked = 'N' + State = cbsGrayed + 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 = 708 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Datos generales' + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item31: TdxLayoutItem + Caption = 'Fecha del movimiento:' + Control = edtFecha + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item17: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Centro de origen:' + Control = edtCentro + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group3: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item32: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Producto:' + Control = edtProducto + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item33: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Color:' + Control = edtColor + ControlOptions.MinWidth = 50 + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group4: TdxLayoutGroup + Caption = 'Datos de la hoja de movimientos' + object dxLayoutControl1Group8: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group7: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'N'#250'mero de hoja:' + Control = edtHoja + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group6: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Estado de la devoluci'#243'n:' + Control = cbEstadoHoja + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'cxCheckBox1' + ShowCaption = False + Control = cbContabilizarHoja + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Item6: TdxLayoutItem + Caption = 'Observaciones sobre la hoja:' + CaptionOptions.AlignVert = tavTop + CaptionOptions.Layout = clTop + Control = memEstadoHoja + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item9: TdxLayoutItem + Control = Bevel2 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group9: TdxLayoutGroup + Caption = 'New Group' + ShowCaption = False + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item16: TdxLayoutItem + Caption = 'Tallas:' + CaptionOptions.AlignHorz = taRightJustify + CaptionOptions.Layout = clTop + Offsets.Top = 2 + Control = Label1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item11: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '38/S' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv38 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item10: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '40/M' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv40 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item12: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '42/L' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv42 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item13: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '44/XL' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv44 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item14: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '46' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv46 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item15: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '48' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv48 + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + Caption = 'Datos de recepci'#243'n del env'#237'o' + LayoutDirection = ldHorizontal + object dxLayoutControl1Group16: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item23: TdxLayoutItem + Caption = 'Tallas:' + CaptionOptions.AlignHorz = taRightJustify + CaptionOptions.Layout = clTop + Offsets.Top = 2 + Control = Label2 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item30: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + CaptionOptions.Layout = clTop + Offsets.Top = 10 + ShowCaption = False + Control = Label3 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group10: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '38/S' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec38 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item29: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR38 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group11: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '40/M' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec40 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item28: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR40 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group12: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '42/L' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec42 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item27: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR42 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group13: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item20: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '44/XL' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec44 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item26: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR44 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group14: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item21: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '46' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec46 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item25: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR46 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group15: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item22: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '48' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec48 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item24: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR48 + ControlOptions.ShowBorder = False + end + end + end + end + end + object dsDataSource: TDADataSource + DataSet = tbl_Devoluciones.Dataset + DataTable = dmDevoluciones.tbl_Devoluciones + Left = 200 + Top = 496 + end +end diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.pas b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.pas new file mode 100644 index 0000000..115e719 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorAjustarDevoluciones.pas @@ -0,0 +1,350 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorAjustarDevoluciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, JvExControls, JvComponent, + JvgWizardHeader, ExtCtrls, cxStyles, cxCustomData, uBizDevoluciones, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, + cxCurrencyEdit, uDADataTable, cxGridLevel, cxGridCustomTableView, + cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, dxLayoutControl, + cxContainer, cxTextEdit, cxDBEdit, cxMemo, cxMaskEdit, cxDropDownEdit, + cxCheckBox, cxCalendar, cxLabel, cxDBLabel, uDAInterfaces; + +type + IEditorAjustarDevoluciones = interface + ['{F75441C6-D0D4-42AF-ABB7-FC531222F0DD}'] + function GetItems : IBizDevoluciones; + procedure SetItems (const AValue : IBizDevoluciones); + property Items : IBizDevoluciones read GetItems write SetItems; + end; + + TfEditorAjustarDevoluciones = class(TForm, IEditorAjustarDevoluciones) + bAceptar: TButton; + bCancelar: TButton; + JvgWizardHeader1: TJvgWizardHeader; + Bevel1: TBevel; + dsDataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Group4: TdxLayoutGroup; + dxLayoutControl1Group5: TdxLayoutGroup; + dxLayoutControl1Item9: TdxLayoutItem; + Bevel2: TBevel; + dxLayoutControl1Group8: TdxLayoutGroup; + dxLayoutControl1Item10: TdxLayoutItem; + edtEnv40: TcxDBMaskEdit; + dxLayoutControl1Group9: TdxLayoutGroup; + dxLayoutControl1Item11: TdxLayoutItem; + edtEnv38: TcxDBMaskEdit; + dxLayoutControl1Item12: TdxLayoutItem; + edtEnv42: TcxDBMaskEdit; + dxLayoutControl1Item13: TdxLayoutItem; + edtEnv44: TcxDBMaskEdit; + dxLayoutControl1Item14: TdxLayoutItem; + edtEnv46: TcxDBMaskEdit; + dxLayoutControl1Item15: TdxLayoutItem; + edtEnv48: TcxDBMaskEdit; + dxLayoutControl1Item16: TdxLayoutItem; + Label1: TLabel; + dxLayoutControl1Item2: TdxLayoutItem; + edtRec38: TcxDBMaskEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtRec40: TcxDBMaskEdit; + dxLayoutControl1Item4: TdxLayoutItem; + edtRec42: TcxDBMaskEdit; + dxLayoutControl1Item20: TdxLayoutItem; + edtRec44: TcxDBMaskEdit; + dxLayoutControl1Item21: TdxLayoutItem; + edtRec46: TcxDBMaskEdit; + dxLayoutControl1Item22: TdxLayoutItem; + edtRec48: TcxDBMaskEdit; + dxLayoutControl1Item23: TdxLayoutItem; + Label2: TLabel; + dxLayoutControl1Item24: TdxLayoutItem; + edtRecR48: TcxCurrencyEdit; + dxLayoutControl1Item25: TdxLayoutItem; + edtRecR46: TcxCurrencyEdit; + dxLayoutControl1Item26: TdxLayoutItem; + edtRecR44: TcxCurrencyEdit; + dxLayoutControl1Item27: TdxLayoutItem; + edtRecR42: TcxCurrencyEdit; + dxLayoutControl1Item28: TdxLayoutItem; + edtRecR40: TcxCurrencyEdit; + dxLayoutControl1Item29: TdxLayoutItem; + edtRecR38: TcxCurrencyEdit; + dxLayoutControl1Group10: TdxLayoutGroup; + dxLayoutControl1Group11: TdxLayoutGroup; + dxLayoutControl1Group12: TdxLayoutGroup; + dxLayoutControl1Group13: TdxLayoutGroup; + dxLayoutControl1Group14: TdxLayoutGroup; + dxLayoutControl1Group15: TdxLayoutGroup; + dxLayoutControl1Item30: TdxLayoutItem; + Label3: TLabel; + dxLayoutControl1Group16: TdxLayoutGroup; + edtFecha: TcxDBLabel; + dxLayoutControl1Item31: TdxLayoutItem; + edtCentro: TcxDBLabel; + dxLayoutControl1Item17: TdxLayoutItem; + edtProducto: TcxDBLabel; + dxLayoutControl1Item32: TdxLayoutItem; + edtColor: TcxDBLabel; + dxLayoutControl1Item33: TdxLayoutItem; + edtHoja: TcxDBLabel; + dxLayoutControl1Item1: TdxLayoutItem; + cbEstadoHoja: TcxComboBox; + dxLayoutControl1Item5: TdxLayoutItem; + memEstadoHoja: TcxMemo; + dxLayoutControl1Item6: TdxLayoutItem; + cbContabilizarHoja: TcxCheckBox; + dxLayoutControl1Item8: TdxLayoutItem; + dxLayoutControl1Group7: TdxLayoutGroup; + dxLayoutControl1Group6: TdxLayoutGroup; + procedure FormShow(Sender: TObject); + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure bAceptarClick(Sender: TObject); + private + FItems : IBizDevoluciones; + FHayErrores : Boolean; + FAlbaranModificado : Boolean; + procedure CargarValores; + procedure SalvarValores; + procedure ModificarAlbaran; + protected + function GetItems : IBizDevoluciones; + procedure SetItems (const AValue : IBizDevoluciones); + public + property Items : IBizDevoluciones read GetItems write SetItems; + end; + + +implementation + +uses + uEditorUtils, uDataModuleDevoluciones; + +{$R *.dfm} + +function ShowEditorAjustarDevoluciones (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorAjustarDevoluciones; +begin + AEditor := TfEditorAjustarDevoluciones.Create(Application); + try + AEditor.Items := (ABizObject as IBizDevoluciones); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorCambioReferenciaGenerica } + +procedure TfEditorAjustarDevoluciones.FormShow(Sender: TObject); +begin + FHayErrores := False; + FItems.DataTable.Open; + + cbEstadoHoja.Enabled := Length(FItems.DataTable.FieldByName('NUMHOJA').AsString) > 0; + cbContabilizarHoja.Enabled := cbEstadoHoja.Enabled; + memEstadoHoja.Enabled := cbEstadoHoja.Enabled; + + CargarValores;; +end; + +function TfEditorAjustarDevoluciones.GetItems: IBizDevoluciones; +begin + Result := FItems; +end; + +procedure TfEditorAjustarDevoluciones.SetItems( + const AValue: IBizDevoluciones); +begin + FItems := AValue; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfEditorAjustarDevoluciones.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + if ((AViewInfo.Item as TcxGridDBBandedColumn).Position.RowIndex = 1) then + begin + ADone := True; + with AViewInfo do begin + ACanvas.FillRect(Bounds); + ACanvas.DrawTexT(Text, TextAreaBounds, 0); + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom]); + end; + end; +end; + +procedure TfEditorAjustarDevoluciones.bAceptarClick(Sender: TObject); +begin + ShowHourglassCursor; + Application.ProcessMessages; + try + SalvarValores; + FItems.DataTable.ApplyUpdates; + ModificarAlbaran; + finally + HideHourglassCursor; + end; + Close; +end; + +procedure TfEditorAjustarDevoluciones.CargarValores; +begin + with FItems.DataTable do + begin + if FieldByName('E38').AsInteger <> FieldByName('ER38').AsInteger then + edtRecR38.Value := FieldByName('ER38').AsInteger + else + edtRecR38.Value := FieldByName('E38').AsInteger; + + if FieldByName('E40').AsInteger <> FieldByName('ER40').AsInteger then + edtRecR40.Value := FieldByName('ER40').AsInteger + else + edtRecR40.Value := FieldByName('E40').AsInteger; + + if FieldByName('E42').AsInteger <> FieldByName('ER42').AsInteger then + edtRecR42.Value := FieldByName('ER42').AsInteger + else + edtRecR42.Value := FieldByName('E42').AsInteger; + + if FieldByName('E44').AsInteger <> FieldByName('ER44').AsInteger then + edtRecR44.Value := FieldByName('ER44').AsInteger + else + edtRecR44.Value := FieldByName('E44').AsInteger; + + if FieldByName('E46').AsInteger <> FieldByName('ER46').AsInteger then + edtRecR46.Value := FieldByName('ER46').AsInteger + else + edtRecR46.Value := FieldByName('E46').AsInteger; + + if FieldByName('E48').AsInteger <> FieldByName('ER48').AsInteger then + edtRecR48.Value := FieldByName('ER48').AsInteger + else + edtRecR48.Value := FieldByName('E48').AsInteger; + + if Length(FieldByName('ESTADO_HOJA').AsString) = 0 then + cbEstadoHoja.Text := cbEstadoHoja.Properties.Items[0]; + + if Length(FieldByName('ESTADO_HOJA').AsString) = 0 then + cbEstadoHoja.Text := cbEstadoHoja.Properties.Items[0] + else + cbEstadoHoja.Text := FieldByName('ESTADO_HOJA').AsString; + + cbContabilizarHoja.Checked := (FieldByName('CONTABILIZAR_HOJA').AsString = 'S'); + memEstadoHoja.Lines.Clear; + if Length(FieldByName('OBSERVACIONES_HOJA').AsString) > 0 then + memEstadoHoja.Lines.Add(FieldByName('OBSERVACIONES_HOJA').AsString) + end; +end; + +procedure TfEditorAjustarDevoluciones.SalvarValores; +var + aux : String; +begin + FAlbaranModificado := False; + with FItems.DataTable do + begin + Edit; + FieldByName('ER38').AsFloat := edtRecR38.Value; + FieldByName('ER40').AsFloat := edtRecR40.Value; + FieldByName('ER42').AsFloat := edtRecR42.Value; + FieldByName('ER44').AsFloat := edtRecR44.Value; + FieldByName('ER46').AsFloat := edtRecR46.Value; + FieldByName('ER48').AsFloat := edtRecR48.Value; + + if cbEstadoHoja.Text = cbEstadoHoja.Properties.Items[0] then + aux := '' + else + aux := cbEstadoHoja.Text; + + if FieldByName('ESTADO_HOJA').AsString <> aux then + FieldByName('ESTADO_HOJA').AsString := aux; + + if cbContabilizarHoja.Checked then + aux := 'S' + else + aux := 'N'; + + if FieldByName('CONTABILIZAR_HOJA').AsString <> aux then + FieldByName('CONTABILIZAR_HOJA').AsString := aux; + + FieldByName('OBSERVACIONES_HOJA').AsString := memEstadoHoja.Lines.Text; + Post; + end; +end; + +procedure TfEditorAjustarDevoluciones.ModificarAlbaran; +var + bm : TBookMark ; + AHoja : String; + AEstado : String; + AContabilizar : String; +begin + { Si se ha cambiado el albarán, hay + que cambiarlo en el resto de filas en las que aparezca } + + AHoja := FItems.DataTable.FieldByName('NUMHOJA').AsString; + AEstado := FItems.DataTable.FieldByName('ESTADO_HOJA').AsString; + AContabilizar := FItems.DataTable.FieldByName('CONTABILIZAR_HOJA').AsString; + + bm := FItems.DataTable.GetBookMark; + FItems.DataTable.DisableControls; + FItems.DataTable.DisableEventHandlers; + FItems.DataTable.LogChanges := False; + try + FItems.DataTable.Filter := 'NUMHOJA = ''' + AHoja + ''''; + FItems.DataTable.Filtered := True; + FItems.DataTable.First; + + repeat + FItems.Edit; + FItems.DataTable.FieldByName('ESTADO_HOJA').AsString := AEstado; + FItems.DataTable.FieldByName('CONTABILIZAR_HOJA').AsString := AContabilizar; + FItems.Post; + FItems.DataTable.Next + until FItems.DataTable.EOF; + + try + FItems.DataTable.GotoBookMark(bm); + except + // No hacer nada + end; + finally + FItems.DataTable.Filter := ''; + FItems.DataTable.Filtered := False; + FItems.DataTable.FreeBookMark(BM); + FItems.DataTable.LogChanges := True; + FItems.DataTable.EnableEventHandlers; + FItems.DataTable.EnableControls; + end; +end; + +initialization + RegisterEditor(IBizDevoluciones, ShowEditorAjustarDevoluciones, etItem); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.ddp b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.ddp differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.dfm b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.dfm new file mode 100644 index 0000000..8dc8243 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.dfm @@ -0,0 +1,1662 @@ +inherited fEditorListaDevoluciones: TfEditorListaDevoluciones + Left = 403 + Top = 247 + Caption = 'Control de devoluciones' + ClientHeight = 637 + ClientWidth = 901 + ExplicitWidth = 909 + ExplicitHeight = 671 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 901 + Caption = 'Control de devoluciones' + ExplicitWidth = 901 + inherited Image1: TImage + Left = 874 + ExplicitLeft = 874 + end + end + inherited TBXDock: TTBXDock + Width = 901 + ExplicitWidth = 901 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 583 + object TBXSubmenuItem2: TTBXSubmenuItem [5] + Caption = 'Cambiar el estado' + DropdownCombo = True + object TBXItem37: TTBXItem + Action = actPendiente + end + object TBXItem36: TTBXItem + Action = actAprobado + end + end + object TBXSeparatorItem16: TTBXSeparatorItem [8] + end + object tbxiExpandir: TTBXItem [16] + Action = actExpandir + end + object tbxiContraer: TTBXItem [17] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [18] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 901 + end + inherited tbxFiltro: TTBXToolbar + Left = 583 + ExplicitLeft = 583 + end + end + inherited StatusBar: TStatusBar + Top = 618 + Width = 901 + ExplicitTop = 618 + ExplicitWidth = 901 + end + object JvTabBar1: TJvTabBar [3] + Left = 0 + Top = 76 + Width = 901 + Height = 29 + Cursor = crHandPoint + CloseButton = False + Painter = JvModernTabBarPainter1 + Images = SmallImages + Tabs = < + item + Caption = 'Pendientes' + Selected = True + ImageIndex = 26 + end + item + Caption = 'Aprobados' + ImageIndex = 25 + end + item + Caption = 'Todos' + end> + OnTabSelected = JvTabBar1TabSelected + end + inline frViewListaDevoluciones1: TfrViewListaDevoluciones [4] + Left = 0 + Top = 105 + Width = 901 + Height = 513 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + ExplicitTop = 105 + ExplicitWidth = 901 + ExplicitHeight = 513 + inherited cxGrid: TcxGrid + Width = 901 + Height = 453 + ExplicitTop = 60 + ExplicitWidth = 901 + ExplicitHeight = 453 + inherited cxGridView: TcxGridDBTableView + PopupMenu = GridPopupMenu + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = ',0;-,0' + Kind = skSum + Position = spFooter + Column = frViewListaDevoluciones1.cxGridViewDIFERENCIA + end + item + Format = 'Diferencia: ,0 unidades;Diferencia: -,0 unidades' + Kind = skSum + Column = frViewListaDevoluciones1.cxGridViewDIFERENCIA + end> + inherited cxGridViewAPROBADO: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 901 + inherited frViewParametrosCentro1: TfrViewParametrosCentro + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + inherited TBXLabel1: TTBXLabel + Width = 901 + ExplicitWidth = 901 + ExplicitHeight = 19 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 476 + ExplicitHeight = 41 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [5] + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Caption = 'Modificar devoluci'#243'n' + OnExecute = actModificarExecute + end + inherited actEliminar: TAction + Enabled = False + Visible = False + end + inherited actDuplicar: TAction + Enabled = False + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + OnUpdate = actAnchoAutoUpdate + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + OnUpdate = actAnchoAutoUpdate + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + OnUpdate = actAnchoAutoUpdate + end + object actPendiente: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Pendiente' + GroupIndex = 1 + ImageIndex = 26 + OnExecute = actPendienteExecute + OnUpdate = actPendienteUpdate + end + object actAprobado: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Aprobado' + GroupIndex = 1 + ImageIndex = 25 + OnExecute = actAprobadoExecute + OnUpdate = actAprobadoUpdate + end + end + inherited SmallImages: TPngImageList [6] + 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 + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + 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 + 61000001D94944415478DA9D9321781B310C859F59580CCB66B6B21886CDF0A0 + 61A061E19595CD6585375678B0D030D0B0D065851E2B74589827E9B26CFDF205 + 6C427767E9E9D7934FE114F5A3F5522AB0A29723D08E0DC61858A3A1B556B812 + EA77717EADF0C3E67CD0DA01F5BDA23612D21A766BA0579742F2813AF74CDDC3 + EE1BC6F1510EA6E9FB22F471E006A8B50A91DB1A7549505B8FCFB3A01B423637 + 1A4CD41A533978EFE8591AD1382011AB2E04D26B41182CD6AB350EC703E6974C + 9DAB14C518606F37C8E5A734F1EE0F85E2F9D3BE301A9B859412AC7554A02539 + E50C7281881A0A7B42E330A11F0CA6D12935CDB93B67C9209A9BC6F08397E238 + 9D9E69A4F09449A82D2D4F5BC2AA61DC39A8E92577460F63447C88D87C5DE3FE + F1C7B938BF37F8872CB561D098A35736A45EE8BBDB6AA8382521E0644922A110 + 02DCAD11FC4CDEF89D472153E3E889B8F4712A923B060B353ECD9D67276701FD + 05561F04719A9398C8778123EF67159F738FF3F23EEE2C796095E20D945208B5 + 8A89764B2B23A3E6294AA2730E4CC8AB7377A9B399DC998BCF6B5C2ECCB24A46 + AE24686804BE038BC1CB0D34C3DCD9CAB60F9FEFC1DFD18EBDD7F2263424F2E9 + 9C572E4237FABAC0B5E062332459634DFE2CF21F02F45FA4F0EF02D7E217D845 + 051D2C6D56E60000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [7] + 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 + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + 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> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource [10] + Top = 136 + end + inherited GridPopupMenu: TPopupMenu + Left = 112 + Top = 128 + object Cambiarelestado1: TMenuItem [3] + Caption = 'Cambiar el estado a...' + object Pendiente1: TMenuItem + Action = actPendiente + AutoCheck = True + GroupIndex = 1 + end + object Enespera1: TMenuItem + Action = actAprobado + AutoCheck = True + GroupIndex = 1 + end + end + end + object JvModernTabBarPainter1: TJvModernTabBarPainter + BorderColor = clWindow + ControlDivideColor = cl3DDkShadow + DividerColor = clBtnShadow + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + DisabledFont.Charset = DEFAULT_CHARSET + DisabledFont.Color = clGrayText + DisabledFont.Height = -11 + DisabledFont.Name = 'MS Sans Serif' + DisabledFont.Style = [] + SelectedFont.Charset = DEFAULT_CHARSET + SelectedFont.Color = clHighlight + SelectedFont.Height = -11 + SelectedFont.Name = 'MS Sans Serif' + SelectedFont.Style = [fsBold] + Left = 320 + Top = 128 + end +end diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.pas b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.pas new file mode 100644 index 0000000..34c26de --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uEditorListaDevoluciones.pas @@ -0,0 +1,304 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorListaDevoluciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uBizDevoluciones, uViewListaDevoluciones, uEditorGridBase, + JvTabBar, uCustomView, uViewBase, uViewGridBase, uViewGrid, Menus, DB, + uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, + JvExControls, JvComponent, JvNavigationPane, TBXDkPanels, + uViewParametrosControlGrid, uViewParametrosCentro, uDAInterfaces; + + +type + IEditorListaDevoluciones = interface(IEditorGridBase) + ['{F7023263-A26E-4C09-87AF-02275AD594C4}'] + function GetItems: IBizDevoluciones; + procedure SetItems(const Value: IBizDevoluciones); + property Items: IBizDevoluciones read GetItems + write SetItems; + end; + + TfEditorListaDevoluciones = class(TfEditorGridBase, IEditorListaDevoluciones) + JvTabBar1: TJvTabBar; + JvModernTabBarPainter1: TJvModernTabBarPainter; + actPendiente: TAction; + Cambiarelestado1: TMenuItem; + Pendiente1: TMenuItem; + Enespera1: TMenuItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem36: TTBXItem; + TBXItem37: TTBXItem; + actAprobado: TAction; + frViewListaDevoluciones1: TfrViewListaDevoluciones; + procedure FormShow(Sender: TObject); + procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); + procedure actModificarExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actAnchoAutoUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actPendienteExecute(Sender: TObject); + procedure actPendienteUpdate(Sender: TObject); + procedure actAprobadoExecute(Sender: TObject); + procedure actAprobadoUpdate(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + protected + FItems : IBizDevoluciones; + function GetItems: IBizDevoluciones; + procedure SetItems(const Value: IBizDevoluciones); + procedure CambiarEstado(const NuevoEstado: TInvDevolucionestado); + function GetModified: Boolean; override; + public + property Items: IBizDevoluciones read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses uEditorBase, cxGridTableView, cxGridCustomTableView, cxControls, + uDBSelectionList, cxGridDBTableView, + cxGridDBDataDefinitions, uDataModuleDevoluciones, uEditorDBBase; + + +{$R *.dfm} + +constructor TfEditorListaDevoluciones.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewListaDevoluciones1; +end; + +function TfEditorListaDevoluciones.GetItems: IBizDevoluciones; +begin + Result := FItems; +end; + +procedure TfEditorListaDevoluciones.SetItems( + const Value: IBizDevoluciones); +begin + FItems := Value; + if Assigned(FItems) then + begin + dsDataTable.DataTable := FItems.DataTable; + frViewListaDevoluciones1.Items := FItems; + end; +end; + +procedure TfEditorListaDevoluciones.FormShow(Sender: TObject); +begin + inherited; + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + with (ViewGrid as IViewListaDevoluciones) do + VerPendientes; +end; + +procedure TfEditorListaDevoluciones.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); +begin + if Items.DataTable.Active then + Items.DataTable.Active := False; + frViewListaDevoluciones1.frViewParametrosCentro1.LimpiarSeleccion; +end; + +procedure TfEditorListaDevoluciones.actModificarExecute( + Sender: TObject); +begin + ViewGrid._FocusedView.BeginUpdate; + ViewGrid.SaveGridStatus; + try + FItems.Show; + finally + // Que salga el reloj de espera mientras el grid refresca datos y restaura la posición + ShowHourglassCursor; + Application.ProcessMessages; + try + ViewGrid._FocusedView.EndUpdate; + ViewGrid.RestoreGridStatus; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaDevoluciones.actExpandirExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorListaDevoluciones.actContraerExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +procedure TfEditorListaDevoluciones.actAnchoAutoExecute( + Sender: TObject); +begin + inherited; + ViewGrid.AjustarAncho; +end; + +procedure TfEditorListaDevoluciones.actAnchoAutoUpdate( + Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and Assigned(ViewGrid) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorListaDevoluciones.actModificarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (ViewGrid._FocusedView.Controller.SelectedRecordCount < 2) and + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + not (ViewGrid._FocusedView.Controller.FocusedRow.Expandable)) +end; + +procedure TfEditorListaDevoluciones.actRefrescarExecute(Sender: TObject); +begin + ShowHourglassCursor; + Items.DataTable.Active := False; + Application.ProcessMessages; + ViewGrid._FocusedView.BeginUpdate; + Application.ProcessMessages; + try + case JvTabBar1.SelectedTab.Index of + 0 : begin + Items := dmDevoluciones.GetItems(tidPendiente); + (ViewGrid as IViewListaDevoluciones).VerPendientes; + end; + + 1 : begin + Items := dmDevoluciones.GetItems(tidAprobado); + (ViewGrid as IViewListaDevoluciones).VerAprobados; + end; + + 2 : begin + Items := dmDevoluciones.GetItems; + (ViewGrid as IViewListaDevoluciones).VerTodos; + end; + end; + + frViewListaDevoluciones1.Refresh; + inherited; + + finally + ViewGrid._FocusedView.EndUpdate; + HideHourglassCursor; + ViewGrid.ExpandirTodo; + ViewGrid.GotoFirst; + end; +end; + +procedure TfEditorListaDevoluciones.actPendienteExecute( + Sender: TObject); +begin + CambiarEstado(tidPendiente); +end; + +procedure TfEditorListaDevoluciones.actPendienteUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + (ViewGrid._FocusedView.Controller.FocusedRow.Level <> 0)); + + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = tidPendiente); +end; + +procedure TfEditorListaDevoluciones.actAprobadoExecute( + Sender: TObject); +begin + CambiarEstado(tidAprobado); +end; + +procedure TfEditorListaDevoluciones.actAprobadoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + (ViewGrid._FocusedView.Controller.FocusedRow.Level <> 0)); + + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = tidAprobado); +end; + +procedure TfEditorListaDevoluciones.CambiarEstado( + const NuevoEstado: TInvDevolucionestado); +var + ARecord: TcxCustomGridRecord; + i : Integer; +begin + if Assigned(FItems) and Assigned(ViewGrid) and (ViewGrid.MultiSelect) then + begin + ShowHourglassCursor; + //ViewGrid._FocusedView.BeginUpdate; + FItems.DataTable.DisableControls; + + Application.ProcessMessages; + try + for i := 0 to ViewGrid._FocusedView.Controller.SelectedRecordCount-1 do + begin + ARecord := ViewGrid._FocusedView.Controller.SelectedRecords[i]; + if (ARecord is TcxGridDataRow) then + begin + (ARecord as TcxGridDataRow).Focused := True; + FItems.Edit; + FItems.Estado := NuevoEstado; + FItems.Post; + end; + Application.ProcessMessages; + end; + FItems.DataTable.ApplyUpdates; + finally + //ViewGrid._FocusedView.EndUpdate; + FItems.DataTable.EnableControls; + ViewGrid._FocusedView.Controller.ClearSelection; + HideHourglassCursor; + Application.ProcessMessages; + end; + end; +end; + +procedure TfEditorListaDevoluciones.actEliminarExecute( + Sender: TObject); +begin +// inherited; +end; + + +function TfEditorListaDevoluciones.GetModified: Boolean; +begin + Result := False; +end; + +end. diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.ddp b/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.ddp differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.dfm b/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.dfm new file mode 100644 index 0000000..aac76d2 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.dfm @@ -0,0 +1,125 @@ +object ModuleDevoluciones: TModuleDevoluciones + OldCreateOrder = True + DefaultAction = actDevolucion + Description = 'Control de devoluci'#243'n de prendas' + ModuleMenu = MainMenu + ModuleName = 'Control de devoluci'#243'n de prendas' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.1' + Left = 779 + Top = 651 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000019B4944415478DA + 63FCFFFF3F032D0123C8826B95B2CE40F61E3CEA5C08C96B773CD98B2E08321B + 66C17FE5861A0676F6740C9D3F7FCE649897D8C290341FBF7CD6F2278C782DD0 + 6A7F0C560C073F7E00F17786D9BB0C1898B7A732642EC32F4F9A0520CD1FDE41 + 0C38E58469011679E22D8069061BF09361F6AD20540B70C81367C1C78908CD1F + 3E405CF82A0561011E79E22C78588FD00C0B825F65080BF0C813B400948A66AF + 92C79A0641068052113E794216381F7C883B9DDBCB33B81092A7381F60732121 + 40523E005970B54286608E47F60949F9006A01493E25291FC02CC0E5530E0F41 + 86699A842C2090CE312C40F2A9757F12C3D9930719182E64E0B180403A47B100 + 68B875B93B6A0438093274B66F805B42523E40B100EA53EBF64886BC581514B5 + 33561D63387EE83AD81292F2012875C02D80FAD47A7A36D8826B4FDF32BCFCFC + 9DE1CD97DF60F56FEF3D075BF2FF7C3A23C41646E292382C15C17CBAE0A802D8 + 82FD379E60188EE203122C40F1E95CBEDD908885024B3B4DB8E1287140AC0578 + 81C10C48E58E2D1551CD0224C3512CA025A0B90500E54149EFB4C64472000000 + 0049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actDevolucion: TAction + Category = 'Inventario' + Caption = 'Control de devoluci'#243'n' + ImageIndex = 0 + OnExecute = actDevolucionExecute + end + end + object MainMenu: TMainMenu + Tag = 500 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Inventario' + GroupIndex = 1 + ImageIndex = 4 + object Controldeventasenproceso1: TMenuItem + Tag = 210 + Action = actDevolucion + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000F64944415478DA + 63BC5A21F39F8148A0DDF184115D8C11648072430D84F7E30703C3833B0CF33A + 373024CDC714CB5A8ECF00A8C2D997BC1998B7A7420C4013C36D4045095821C3 + 8DAB0CB37F95410C988E2986DB808800B02D300036A01C530CA701071F121788 + F8C3808800C306700622C8005C518C1C9D380311660021D7E10C441403905C97 + DB070CB00B19A806600B44B80168AE5B705481E1ECC9837043F00614CC75D6D3 + B3E16279B12A0CEF3E7E6328AC5E0E3684A00120D7CDE5DB0DD6080220CDF79E + BC05D34B971D61202AAA8CD3AFFF073B1B087233DD18EE3E7EC3B06DCB39C22E + C00A0C6640A2969830C06900522C0000AF7FD7D8678509020000000049454E44 + AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001F14944415478DA + BDD64D4B02511406E03328F8270A83DA549BA09508B55082D6AD5A8414942615 + ADC2A0458BC016D1A68D21951014F8075AF4014A1FB4B05A5442216119481018 + EA980331796F3A36E39DB9F74EE60151F1CC79668EBE83822CCBD0CA121078BF + D8EEAABC3EA2F4BA597A7A5733C77A1F22AB06CA9DCB4B60B379898DE5F2266C + 8FAFC0C40EBDC7BF9F1198C09EE00B3E4855853C7E84E30EB01C4CC2F41EBDC7 + 3C581D84875D0D9141428F39F0D7203CEC61A411D4E9E1073583A05880F0AB47 + 0D1AF4F081EF6B0D83A0588470CE5F07293D7CE063004092548340AC9CBDB450 + 07293DCC208A45386AD7EBC5C3502C683DACA02B96360EF5A01DDC2C3D4D0DBE + D1D9B31477F01178176863BA0D92AE943BF85590BA8D90CF07F31110D8418350 + 2390B68DAF93610E90126A22A8D9063BC810EA0690B08DD9F534C08D8F016408 + B50AD4D946E4AC031297B106943BF82AB0BA0D677094D83F37D6059E992D15CA + 1D7CF45357C0EA369C1B537838A942D173B8882715540105813DCFB558D4B681 + D687C0442A8BDF974A127ECEE74B60B55A20F5F4A6A06641D76136A36C63D796 + 54402D56FA94401425C87D881895AFBD0237A8AD7E6F5246E0E9EDB32166FA0A + 8D4084A1122B575A14CB18FCF3774802710434E518E856614D0389D517FAF977 + AD97C37F018DEE34ADAC6FE2EA02F65CB3A8E60000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.pas b/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.pas new file mode 100644 index 0000000..29ba2d3 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uPluginControllerDevoluciones.pas @@ -0,0 +1,73 @@ +unit uPluginControllerDevoluciones; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCDevoluciones = interface(IInterface) + ['{46008D56-3823-4F95-8D22-89130764307B}'] + end; + + TModuleDevoluciones = class(TModuleController, IMCDevoluciones) + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + actDevolucion: TAction; + Controldeventasenproceso1: TMenuItem; + procedure actDevolucionExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uBizDevoluciones, + uDataModuleDevoluciones, uEditorListaDevoluciones; + + +function GetModule : TModuleController; +begin + Result := TModuleDevoluciones.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleDevoluciones.actDevolucionExecute(Sender: TObject); +var + aControl: IBizDevoluciones; + aObj: IEditorListaDevoluciones; +begin + aControl := dmDevoluciones.GetItems(tidPendiente); + aObj := TfEditorListaDevoluciones.Create(Application); + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleDevoluciones); + +finalization + UnRegisterModuleClass(TModuleDevoluciones); + +end. diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.ddp b/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.ddp differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.dfm b/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.dfm new file mode 100644 index 0000000..c43767a --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.dfm @@ -0,0 +1,562 @@ +inherited frViewListaDevoluciones: TfrViewListaDevoluciones + Width = 466 + Height = 477 + ExplicitWidth = 466 + ExplicitHeight = 477 + inherited cxGrid: TcxGrid + Top = 60 + Width = 466 + Height = 417 + ExplicitTop = 60 + ExplicitWidth = 466 + ExplicitHeight = 417 + inherited cxGridView: TcxGridDBTableView + OnMouseDown = cxGridViewMouseDown + FilterBox.Visible = fvNever + OnCellDblClick = cxGridViewCellDblClick + DataController.KeyFieldNames = 'Centro;Codigo;Color;Fecha' + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = ',0;-,0' + Kind = skSum + Position = spFooter + Column = cxGridViewDIFERENCIA + end + item + Format = 'Diferencia: ,0 unidades;Diferencia: -,0 unidades' + Kind = skSum + Column = cxGridViewDIFERENCIA + end> + OptionsCustomize.ColumnGrouping = True + OptionsSelection.MultiSelect = True + OptionsView.Footer = False + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfVisibleWhenExpanded + OptionsView.GroupRowStyle = grsOffice11 + Preview.Column = cxGridViewOBSERVACIONES_HOJA + Preview.Visible = True + Styles.Footer = cxStyleFooter + OnCustomDrawGroupCell = cxGridViewCustomDrawGroupCell + object cxGridViewAPROBADO: TcxGridDBColumn + DataBinding.FieldName = 'APROBADO' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Alignment.Horz = taLeftJustify + Properties.Images = SmallImages + Properties.Items = < + item + Description = 'Aprobado' + ImageIndex = 0 + Value = 'S' + end + item + Description = 'Pendiente' + ImageIndex = 1 + Value = 'N' + end> + Properties.ReadOnly = True + Properties.ShowDescriptions = False + MinWidth = 15 + Width = 15 + IsCaptionAssigned = True + end + object cxGridViewCENTRO: TcxGridDBColumn + DataBinding.FieldName = 'CENTRO' + Visible = False + end + object cxGridViewFILIAL: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'FILIAL' + Visible = False + GroupIndex = 0 + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + OnGetDataText = cxGridViewCODIGOGetDataText + OnGetDisplayText = cxGridViewCODIGOGetDisplayText + GroupIndex = 1 + SortIndex = 1 + SortOrder = soAscending + end + object cxGridViewPRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'PRODUCTO' + Visible = False + end + object cxGridViewCOLOR: TcxGridDBColumn + DataBinding.FieldName = 'COLOR' + Visible = False + end + object cxGridViewFECHA: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHA' + SortIndex = 2 + SortOrder = soAscending + end + object cxGridViewESTADO_HOJA: TcxGridDBColumn + DataBinding.FieldName = 'ESTADO_HOJA' + Visible = False + end + object cxGridViewNUMHOJA: TcxGridDBColumn + Caption = 'Hoja' + DataBinding.FieldName = 'NUMHOJA' + OnGetDisplayText = cxGridViewNUMHOJAGetDisplayText + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + end + object cxGridViewCONTABILIZAR_HOJA: TcxGridDBColumn + DataBinding.FieldName = 'CONTABILIZAR_HOJA' + Visible = False + end + object cxGridViewOBSERVACIONES_HOJA: TcxGridDBColumn + DataBinding.FieldName = 'OBSERVACIONES_HOJA' + PropertiesClassName = 'TcxMemoProperties' + end + object cxGridViewS38: TcxGridDBColumn + Caption = 'S38/S' + DataBinding.FieldName = 'S38' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + Width = 42 + end + object cxGridViewS40: TcxGridDBColumn + Caption = 'S40/M' + DataBinding.FieldName = 'S40' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + Width = 42 + end + object cxGridViewS42: TcxGridDBColumn + Caption = 'S42/L' + DataBinding.FieldName = 'S42' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + Width = 42 + end + object cxGridViewS44: TcxGridDBColumn + Caption = 'S44/XL' + DataBinding.FieldName = 'S44' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + Width = 42 + end + object cxGridViewS46: TcxGridDBColumn + DataBinding.FieldName = 'S46' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + Width = 42 + end + object cxGridViewS48: TcxGridDBColumn + DataBinding.FieldName = 'S48' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridViewNUMHOJAStylesGetContentStyle + Width = 42 + end + object cxGridViewSOLICITADO: TcxGridDBColumn + Caption = 'Solicitado' + DataBinding.FieldName = 'SOLICITADO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSubtotal + Width = 43 + end + object cxGridViewE38: TcxGridDBColumn + Caption = 'E38/S' + DataBinding.FieldName = 'E38' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewE40: TcxGridDBColumn + Caption = 'E40/M' + DataBinding.FieldName = 'E40' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewE42: TcxGridDBColumn + Caption = 'E42/L' + DataBinding.FieldName = 'E42' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewE44: TcxGridDBColumn + Caption = 'E44/XL' + DataBinding.FieldName = 'E44' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewE46: TcxGridDBColumn + DataBinding.FieldName = 'E46' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewE48: TcxGridDBColumn + DataBinding.FieldName = 'E48' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewENVIADO: TcxGridDBColumn + DataBinding.FieldName = 'ENVIADO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + end + object cxGridViewER38: TcxGridDBColumn + Caption = 'E38/S' + DataBinding.FieldName = 'ER38' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR38GetDisplayText + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR38StylesGetContentStyle + Width = 41 + end + object cxGridViewER40: TcxGridDBColumn + Caption = 'E40/M' + DataBinding.FieldName = 'ER40' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR40GetDisplayText + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR40StylesGetContentStyle + Width = 41 + end + object cxGridViewER42: TcxGridDBColumn + Caption = 'E42/L' + DataBinding.FieldName = 'ER42' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR42GetDisplayText + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR42StylesGetContentStyle + Width = 41 + end + object cxGridViewER44: TcxGridDBColumn + Caption = 'E44/XL' + DataBinding.FieldName = 'ER44' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR44GetDisplayText + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR44StylesGetContentStyle + Width = 41 + end + object cxGridViewER46: TcxGridDBColumn + Caption = 'E46' + DataBinding.FieldName = 'ER46' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR46GetDisplayText + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR46StylesGetContentStyle + Width = 41 + end + object cxGridViewER48: TcxGridDBColumn + Caption = 'E48' + DataBinding.FieldName = 'ER48' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR48GetDisplayText + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR48StylesGetContentStyle + Width = 41 + end + object cxGridViewENVIADO_RECT: TcxGridDBColumn + Caption = 'Enviado' + DataBinding.FieldName = 'ENVIADO_RECT' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDataText = cxGridViewENVIADO_RECTGetDataText + Styles.Content = cxStyleSubtotal + Width = 42 + end + object cxGridViewDIFERENCIA: TcxGridDBColumn + Caption = 'Diferencia' + DataBinding.FieldName = 'DIFERENCIA' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDataText = cxGridViewDIFERENCIAGetDataText + HeaderAlignmentHorz = taRightJustify + Width = 42 + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + MaxClientHeight = 61 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 0 + Top = 19 + Width = 425 + Height = 41 + Align = alLeft + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 425 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 425 + ExplicitWidth = 425 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 466 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 425 + Top = 19 + Width = 41 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 2 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + end + inherited dsDataSource: TDADataSource + Top = 120 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: 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.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 = ( + 'VARELA IMAGEN Y DISE'#209'O 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 = ( + 'CONTROL DE DEVOLUCI'#211'N') + PrinterPage.PageHeader.RightTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage.ScaleMode = smFit + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 38877.461868113420000000 + ShrinkToPageWidth = True + OptionsCards.Shadow.Depth = 0 + OptionsExpanding.ExpandGroupRows = 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 + OnInitializeCell = dxComponentPrinterLink1InitializeCell + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleEnviado: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleRecibido: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleSubtotal: TcxStyle + AssignedValues = [svColor] + Color = 14803425 + end + object cxStyleCantidadRectificada: TcxStyle + AssignedValues = [svTextColor] + TextColor = 2129152 + end + object cxStyle1: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsStrikeOut] + TextColor = clGray + end + object cxStyleFooter: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 395 + Top = 80 + Bitmap = {} + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 112 + Top = 48 + 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 +end diff --git a/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.pas b/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.pas new file mode 100644 index 0000000..8529efc --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Cliente/uViewListaDevoluciones.pas @@ -0,0 +1,702 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewListaDevoluciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, DBTables, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, uBizDevoluciones, dxPSGlbl, + dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxCalendar, cxTextEdit, + cxCurrencyEdit, dxPSCore, uDADataTable, StdCtrls, cxGridBandedTableView, + cxGridDBBandedTableView, cxImageComboBox, ImgList, PngImageList, + dxPScxCommon, dxPScxGridLnk, cxMemo, TBXDkPanels, uCustomView, uViewBase, + uViewParametrosControlGrid, uViewParametrosCentro, TB2Dock, uDAInterfaces; + +type + TvDevolucionesVistaActiva = (tdvaPendiente, tdvaAprobado, tdvaTodos); + + IViewListaDevoluciones = interface(IViewGrid) + ['{2179BA33-B039-4CC9-A423-F50FD2C7B880}'] + procedure VerPendientes; + procedure VerAprobados; + procedure VerTodos; + + function GetVistaActiva : TvDevolucionesVistaActiva; + property VistaActiva : TvDevolucionesVistaActiva read GetVistaActiva; + + function GetItems: IBizDevoluciones; + procedure SetItems(const Value: IBizDevoluciones); + property Items: IBizDevoluciones read GetItems write SetItems; + end; + + TfrViewListaDevoluciones = class(TfrViewGrid, IViewListaDevoluciones) + cxStyleEnviado: TcxStyle; + cxStyleRecibido: TcxStyle; + cxStyleSubtotal: TcxStyle; + SmallImages: TPngImageList; + cxStyleCantidadRectificada: TcxStyle; + cxStyle1: TcxStyle; + cxGridViewAPROBADO: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewFILIAL: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewFECHA: TcxGridDBColumn; + cxGridViewNUMHOJA: TcxGridDBColumn; + cxGridViewESTADO_HOJA: TcxGridDBColumn; + cxGridViewOBSERVACIONES_HOJA: TcxGridDBColumn; + cxGridViewCONTABILIZAR_HOJA: TcxGridDBColumn; + cxGridViewS38: TcxGridDBColumn; + cxGridViewS40: TcxGridDBColumn; + cxGridViewS42: TcxGridDBColumn; + cxGridViewS44: TcxGridDBColumn; + cxGridViewS46: TcxGridDBColumn; + cxGridViewS48: TcxGridDBColumn; + cxGridViewSOLICITADO: TcxGridDBColumn; + cxGridViewE38: TcxGridDBColumn; + cxGridViewE40: TcxGridDBColumn; + cxGridViewE42: TcxGridDBColumn; + cxGridViewE44: TcxGridDBColumn; + cxGridViewE46: TcxGridDBColumn; + cxGridViewE48: TcxGridDBColumn; + cxGridViewENVIADO: TcxGridDBColumn; + cxGridViewER38: TcxGridDBColumn; + cxGridViewER40: TcxGridDBColumn; + cxGridViewER42: TcxGridDBColumn; + cxGridViewER44: TcxGridDBColumn; + cxGridViewER46: TcxGridDBColumn; + cxGridViewER48: TcxGridDBColumn; + cxGridViewENVIADO_RECT: TcxGridDBColumn; + cxGridViewDIFERENCIA: TcxGridDBColumn; + dxComponentPrinterLink1: TdxGridReportLink; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosCentro1: TfrViewParametrosCentro; + TBXLabel1: TTBXLabel; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + procedure cxGridViewMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure cxGridBandedViewRR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR40GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR42GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR44GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR46GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR48GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR38StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR40StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR42StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR44StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR46StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR48StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewCustomDrawGroupCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableCellViewInfo; + var ADone: Boolean); + procedure cxGridViewCellDblClick(Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); + procedure cxGridBandedViewCODIGOGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure cxGridViewNUMHOJAGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridViewNUMHOJAStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewCODIGOGetDataText(Sender: TcxCustomGridTableItem; + ARecordIndex: Integer; var AText: String); + procedure cxGridViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridViewENVIADO_RECTGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure cxGridViewDIFERENCIAGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure dxComponentPrinterLink1InitializeCell( + Sender: TdxGridReportLink; AView: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AColumn: TcxGridColumn; + AnItem: TAbstractdxReportCellData); + protected + FItems: IBizDevoluciones; + FTipo : String; + FNivelFiltrado : TcxFilterCriteriaItemList; + procedure FilterChanged(Sender: TObject); override; + function GetVistaActiva : TvDevolucionesVistaActiva; + function GetItems: IBizDevoluciones; + procedure SetItems(const Value: IBizDevoluciones); + + public + property Items: IBizDevoluciones read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Preview; override; + procedure Print; override; + procedure PrintSetup; override; + procedure VerPendientes; + procedure VerAprobados; + procedure VerTodos; + property VistaActiva : TvDevolucionesVistaActiva read GetVistaActiva; + procedure Refresh; + end; + + +implementation + +uses + uDataModuleDevoluciones, DateUtils, cxGridDBDataDefinitions, + uViewGridBase, cxGridRows; + +{$R *.dfm} + +procedure TfrViewListaDevoluciones.cxGridViewMouseDown( + Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, + Y: Integer); +var + HT: TcxCustomGridHitTest; + ALevelIndex, AGroupIndex, I, AIndex: Integer; + AList: TList; + DC: TcxGridDBDataController; +begin + inherited; + HT := TcxGridSite(Sender).GridView.ViewInfo.GetHitTest(X, Y); + if (HT is TcxGridRecordHitTest) and not (HT is TcxGridRecordCellHitTest) + and not (HT is TcxGridExpandButtonHitTest) then + begin + DC := TcxGridDBTableView(TcxGridSite(Sender).GridView).DataController; + AList := TList.Create; + ALevelIndex := TcxGridRecordHitTest(HT).GridRecord.Level; + if ALevelIndex > 0 then + begin + ShowHourglassCursor; + TcxGridDBTableView(TcxGridSite(Sender).GridView).BeginUpdate; + try + AGroupIndex := DC.Groups.DataGroupIndexByRowIndex[TcxGridRecordHitTest(HT).GridRecord.Index]; + DC.Groups.LoadRecordIndexes(AList, AGroupIndex); + for I := 0 to AList.Count - 1 do + begin + AIndex := DC.GetRowIndexByRecordIndex(Integer(AList[I]), True); + DC.SelectRows(AIndex, AIndex); + end; + finally + FreeAndNil(AList); + TcxGridDBTableView(TcxGridSite(Sender).GridView).EndUpdate; + HideHourglassCursor; + end; + end; + end; +end; + +procedure TfrViewListaDevoluciones.VerAprobados; +begin + FTipo := 'S'; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); +end; + +procedure TfrViewListaDevoluciones.VerPendientes; +begin + FTipo := 'N'; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); +end; + +procedure TfrViewListaDevoluciones.VerTodos; +begin + FTipo := ''; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); + cxGridViewAPROBADO.Visible := True; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewE38.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR40GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewE40.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR42GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewE42.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR44GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewE44.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR46GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewE46.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR48GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewE48.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR38StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewE38.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR40StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewE40.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR42StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewE42.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR44StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewE44.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR46StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewE46.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewRR48StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewE48.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaDevoluciones.cxGridViewCustomDrawGroupCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableCellViewInfo; var ADone: Boolean); +var + ARecIndex: Integer; + Val1: string; +begin + inherited; + + if TcxGridGroupCellViewInfo(AViewInfo).GridRecord.GroupedColumn = cxGridViewFILIAL then + begin + ARecIndex := AViewInfo.GridRecord.RecordIndex; + Val1 := Sender.DataController.DisplayTexts[ARecIndex, cxGridViewFILIAL.Index]; + AViewInfo.Text := 'Centro: ' + Val1; + end; +end; + + +procedure TfrViewListaDevoluciones.cxGridViewCellDblClick( + Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +constructor TfrViewListaDevoluciones.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewListaDevoluciones.cxGridBandedViewCODIGOGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Val1: string; +begin + inherited; + Val1 := Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridViewCOLOR.Index]; + AText := AText + '-' + Val1; + +end; + +procedure TfrViewListaDevoluciones.cxGridViewNUMHOJAGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +begin + inherited; + if Length(VarToStr(ARecord.Values[cxGridViewESTADO_HOJA.Index])) > 0 then + AText := AText + ' (' + VarToStr(ARecord.Values[cxGridViewESTADO_HOJA.Index]) + ')'; +end; + +procedure TfrViewListaDevoluciones.cxGridViewNUMHOJAStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + + if VarToStr(ARecord.Values[cxGridViewCONTABILIZAR_HOJA.Index]) = 'N' then + AStyle := cxStyle1; +end; + +destructor TfrViewListaDevoluciones.Destroy; +begin + FItems := Nil; + inherited; +end; + +procedure TfrViewListaDevoluciones.Preview; +begin + inherited; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewListaDevoluciones.Print; +begin + inherited; + dxComponentPrinterLink1.Print(True, nil); +end; + +procedure TfrViewListaDevoluciones.PrintSetup; +begin + inherited; + dxComponentPrinterLink1.PageSetup +end; + +procedure TfrViewListaDevoluciones.Refresh; +var + ACentrosList : TStringList; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + ACentrosList := frViewParametrosCentro1.CentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' FILIAL in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + AWhereCentro := AWhereCentro + ', '; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + end; + end; + + AWhere := ''; + if AWhereCentro <> '' then + begin + AWhere := AWhere + AWhereCentro; + end; + + Items.DataTable.Where.Clear; + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(ACentrosList); + end; +end; + +procedure TfrViewListaDevoluciones.SetItems(const Value: IBizDevoluciones); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewListaDevoluciones.cxGridViewCODIGOGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Val1, Val2: string; +begin + inherited; + + Val1 := Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridViewPRODUCTO.Index]; + Val2 := Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridViewCOLOR.Index]; + AText := 'Producto: ' + Val1 + ' - Color: ' + Val2; +end; + +procedure TfrViewListaDevoluciones.cxGridViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +begin + inherited; + AText := StringReplace(AText, 'CODIGO : ', '', [rfReplaceAll, rfIgnoreCase]) +end; + +procedure TfrViewListaDevoluciones.cxGridViewENVIADO_RECTGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Total : Double; +begin + inherited; + + Total := 0; + with Sender.GridView.DataController do + begin + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewER38.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewER40.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewER42.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewER44.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewER46.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewER48.Index], 0); + end; + AText := FloatToStr(Total); +end; + +procedure TfrViewListaDevoluciones.cxGridViewDIFERENCIAGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Total : Double; +begin + inherited; + with Sender.GridView.DataController do + begin + Total := StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewENVIADO_RECT.Index], 0); + Total := Total - StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewSOLICITADO.Index], 0); + end; + AText := FloatToStr(Total); +end; + +procedure TfrViewListaDevoluciones.dxComponentPrinterLink1InitializeCell( + Sender: TdxGridReportLink; AView: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AColumn: TcxGridColumn; + AnItem: TAbstractdxReportCellData); +var + aux : string; +begin + inherited; + if Assigned(ARecord) then + begin + aux := ARecord.Values[cxGridViewCONTABILIZAR_HOJA.Index]; + if aux = 'N' then + begin + AnItem.Font.Style := cxStyle1.Font.Style; + AnItem.Font.Color := cxStyle1.Font.Color; + end; + end; +end; + +procedure TfrViewListaDevoluciones.FilterChanged(Sender: TObject); +var + AItemList: TcxFilterCriteriaItemList; +begin + inherited; + + cxGridView.DataController.Filter.BeginUpdate; + AItemList := cxGridView.DataController.Filter.Root; + + if (Length(FTIPO) > 0) then + begin + FNivelFiltrado := AItemList.AddItemList(fboAnd); + FNivelFiltrado.AddItem(cxGridViewAPROBADO, foEqual, FTIPO, FTIPO); + end; + + if cxGridView.DataController.Filter.IsEmpty + then cxGridView.DataController.Filter.Active := False + else cxGridView.DataController.Filter.Active := True; + + cxGridView.DataController.Filter.EndUpdate; +end; + +function TfrViewListaDevoluciones.GetItems: IBizDevoluciones; +begin + Result := FItems; +end; + +function TfrViewListaDevoluciones.GetVistaActiva: TvDevolucionesVistaActiva; +begin + if FTipo = 'N' then + Result := tdvaPendiente + else if FTipo = 'S' then + Result := tdvaAprobado + else + Result := tdvaTodos; +end; + +end. diff --git a/2.1.0/Source/Modulos/Devoluciones/Reglas/uBizDevoluciones.pas b/2.1.0/Source/Modulos/Devoluciones/Reglas/uBizDevoluciones.pas new file mode 100644 index 0000000..ba34a6a --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Reglas/uBizDevoluciones.pas @@ -0,0 +1,77 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uBizDevoluciones; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDBSelectionList; + + +const + BIZ_DEVOLUCIONES = 'Client.Devoluciones'; + +type + TInvDevolucionEstado = (tidPendiente, tidAprobado); + + IBizDevoluciones = interface(IDAStronglyTypedDataTable) //IRecepciones) + ['{E7196FF3-EFC9-45FC-AA50-C0C79F567ECA}'] + procedure Show; + procedure SetEstado(const AValue : TInvDevolucionEstado); + function GetEstado : TInvDevolucionEstado ; + property Estado : TInvDevolucionEstado read GetEstado write SetEstado; + end; + + + TBizDevolucionesDataTableRules = class(TDADataTableRules, IBizDevoluciones) + protected + procedure SetEstado(const AValue : TInvDevolucionEstado); + function GetEstado : TInvDevolucionEstado ; + public + procedure Show; + property Estado : TInvDevolucionEstado read GetEstado write SetEstado; + end; + + +implementation + +uses + uEditorUtils, uDataModuleDevoluciones; + +{ TBizDevolucionesDataTableRules } + +function TBizDevolucionesDataTableRules.GetEstado: TInvDevolucionEstado; +begin + if DataTable.FieldByName('APROBADO').AsString = 'S' then + Result := tidAprobado + else + Result := tidPendiente +end; + +procedure TBizDevolucionesDataTableRules.SetEstado( + const AValue: TInvDevolucionEstado); +begin + case AValue of + tidPendiente : DataTable.FieldByName('APROBADO').AsString := 'N'; + tidAprobado : DataTable.FieldByName('APROBADO').AsString := 'S'; + else + DataTable.FieldByName('APROBADO').AsString := 'N'; + end; +end; + +procedure TBizDevolucionesDataTableRules.Show; +begin + ShowEditor(IBizDevoluciones, Self, etItem); +end; + +initialization + RegisterDataTableRules(BIZ_DEVOLUCIONES, TBizDevolucionesDataTableRules); + +end. + diff --git a/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.ddp b/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.dfm b/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.dfm new file mode 100644 index 0000000..961b1d4 --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.dfm @@ -0,0 +1,1520 @@ +object srvDevoluciones: TsrvDevoluciones + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schDevoluciones + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 + object schDevoluciones: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DADataDictionary1 + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_DEVOLUCIONES' + SQL = 'SELECT '#10' *'#10' FROM'#10' RDX_V_CONTROL_DEVOLUCIONES' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'ENVIADO' + TableField = 'ENVIADO' + end + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end + item + DatasetField = 'NUMHOJA' + TableField = 'NUMHOJA' + end + item + DatasetField = 'ESTADO_HOJA' + TableField = 'ESTADO_HOJA' + end + item + DatasetField = 'OBSERVACIONES_HOJA' + TableField = 'OBSERVACIONES_HOJA' + end + item + DatasetField = 'CONTABILIZAR_HOJA' + TableField = 'CONTABILIZAR_HOJA' + end + item + DatasetField = 'S38' + TableField = 'S38' + end + item + DatasetField = 'S40' + TableField = 'S40' + end + item + DatasetField = 'S42' + TableField = 'S42' + end + item + DatasetField = 'S44' + TableField = 'S44' + end + item + DatasetField = 'S46' + TableField = 'S46' + end + item + DatasetField = 'S48' + TableField = 'S48' + end + item + DatasetField = 'SOLICITADO' + TableField = 'SOLICITADO' + end + item + DatasetField = 'ER38' + TableField = 'ER38' + end + item + DatasetField = 'ER40' + TableField = 'ER40' + end + item + DatasetField = 'ER42' + TableField = 'ER42' + end + item + DatasetField = 'ER44' + TableField = 'ER44' + end + item + DatasetField = 'ER46' + TableField = 'ER46' + end + item + DatasetField = 'ER48' + TableField = 'ER48' + end + item + DatasetField = 'ENVIADO_RECT' + TableField = 'ENVIADO_RECT' + end> + end> + Name = 'Devoluciones' + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Devoluciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Devoluciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Devoluciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Devoluciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Devoluciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Devoluciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Devoluciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Devoluciones_FECHA' + InPrimaryKey = True + end + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + DictionaryEntry = 'Devoluciones_NUMHOJA' + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + DictionaryEntry = 'Devoluciones_ESTADO_HOJA' + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + DictionaryEntry = 'Devoluciones_OBSERVACIONES_HOJA' + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + DictionaryEntry = 'Devoluciones_CONTABILIZAR_HOJA' + end + item + Name = 'S38' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S38' + end + item + Name = 'S40' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S40' + end + item + Name = 'S42' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S42' + end + item + Name = 'S44' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S44' + end + item + Name = 'S46' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S46' + end + item + Name = 'S48' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S48' + end + item + Name = 'SOLICITADO' + DataType = datInteger + DictionaryEntry = 'Devoluciones_SOLICITADO' + end + item + Name = 'E38' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E38' + end + item + Name = 'E40' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E40' + end + item + Name = 'E42' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E42' + end + item + Name = 'E44' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E44' + end + item + Name = 'E46' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E46' + end + item + Name = 'E48' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E48' + end + item + Name = 'ENVIADO' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ENVIADO' + end + item + Name = 'ER38' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER38' + end + item + Name = 'ER40' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER40' + end + item + Name = 'ER42' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER42' + end + item + Name = 'ER44' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER44' + end + item + Name = 'ER46' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER46' + end + item + Name = 'ER48' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER48' + end + item + Name = 'ENVIADO_RECT' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ENVIADO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + DictionaryEntry = 'Devoluciones_DIFERENCIA' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_DEVOLUCIONES' + SQL = + 'SELECT '#10' *'#10'FROM RDX_V_CONTROL_DEVOLUCIONES'#10'WHERE (APROBADO' + + ' = '#39'N'#39')' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'ENVIADO' + TableField = 'ENVIADO' + end + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end + item + DatasetField = 'NUMHOJA' + TableField = 'NUMHOJA' + end + item + DatasetField = 'ESTADO_HOJA' + TableField = 'ESTADO_HOJA' + end + item + DatasetField = 'OBSERVACIONES_HOJA' + TableField = 'OBSERVACIONES_HOJA' + end + item + DatasetField = 'CONTABILIZAR_HOJA' + TableField = 'CONTABILIZAR_HOJA' + end + item + DatasetField = 'S38' + TableField = 'S38' + end + item + DatasetField = 'S40' + TableField = 'S40' + end + item + DatasetField = 'S42' + TableField = 'S42' + end + item + DatasetField = 'S44' + TableField = 'S44' + end + item + DatasetField = 'S46' + TableField = 'S46' + end + item + DatasetField = 'S48' + TableField = 'S48' + end + item + DatasetField = 'SOLICITADO' + TableField = 'SOLICITADO' + end + item + DatasetField = 'ER38' + TableField = 'ER38' + end + item + DatasetField = 'ER40' + TableField = 'ER40' + end + item + DatasetField = 'ER42' + TableField = 'ER42' + end + item + DatasetField = 'ER44' + TableField = 'ER44' + end + item + DatasetField = 'ER46' + TableField = 'ER46' + end + item + DatasetField = 'ER48' + TableField = 'ER48' + end + item + DatasetField = 'ENVIADO_RECT' + TableField = 'ENVIADO_RECT' + end> + end> + Name = 'DevolucionesPendientes' + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Devoluciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Devoluciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Devoluciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Devoluciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Devoluciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Devoluciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Devoluciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Devoluciones_FECHA' + InPrimaryKey = True + end + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + DictionaryEntry = 'Devoluciones_NUMHOJA' + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + DictionaryEntry = 'Devoluciones_ESTADO_HOJA' + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + DictionaryEntry = 'Devoluciones_OBSERVACIONES_HOJA' + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + DictionaryEntry = 'Devoluciones_CONTABILIZAR_HOJA' + end + item + Name = 'S38' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S38' + end + item + Name = 'S40' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S40' + end + item + Name = 'S42' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S42' + end + item + Name = 'S44' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S44' + end + item + Name = 'S46' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S46' + end + item + Name = 'S48' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S48' + end + item + Name = 'SOLICITADO' + DataType = datInteger + DictionaryEntry = 'Devoluciones_SOLICITADO' + end + item + Name = 'E38' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E38' + end + item + Name = 'E40' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E40' + end + item + Name = 'E42' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E42' + end + item + Name = 'E44' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E44' + end + item + Name = 'E46' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E46' + end + item + Name = 'E48' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E48' + end + item + Name = 'ENVIADO' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ENVIADO' + end + item + Name = 'ER38' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER38' + end + item + Name = 'ER40' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER40' + end + item + Name = 'ER42' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER42' + end + item + Name = 'ER44' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER44' + end + item + Name = 'ER46' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER46' + end + item + Name = 'ER48' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER48' + end + item + Name = 'ENVIADO_RECT' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ENVIADO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + DictionaryEntry = 'Devoluciones_DIFERENCIA' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_DEVOLUCIONES' + SQL = + 'SELECT '#10' *'#10' FROM'#10' RDX_V_CONTROL_DEVOLUCIONES'#10'WHERE (APROB' + + 'ADO = '#39'S'#39')' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'ENVIADO' + TableField = 'ENVIADO' + end + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'NUMHOJA' + TableField = 'NUMHOJA' + end + item + DatasetField = 'ESTADO_HOJA' + TableField = 'ESTADO_HOJA' + end + item + DatasetField = 'OBSERVACIONES_HOJA' + TableField = 'OBSERVACIONES_HOJA' + end + item + DatasetField = 'CONTABILIZAR_HOJA' + TableField = 'CONTABILIZAR_HOJA' + end + item + DatasetField = 'S38' + TableField = 'S38' + end + item + DatasetField = 'S40' + TableField = 'S40' + end + item + DatasetField = 'S42' + TableField = 'S42' + end + item + DatasetField = 'S44' + TableField = 'S44' + end + item + DatasetField = 'S46' + TableField = 'S46' + end + item + DatasetField = 'S48' + TableField = 'S48' + end + item + DatasetField = 'SOLICITADO' + TableField = 'SOLICITADO' + end + item + DatasetField = 'ER38' + TableField = 'ER38' + end + item + DatasetField = 'ER40' + TableField = 'ER40' + end + item + DatasetField = 'ER42' + TableField = 'ER42' + end + item + DatasetField = 'ER44' + TableField = 'ER44' + end + item + DatasetField = 'ER46' + TableField = 'ER46' + end + item + DatasetField = 'ER48' + TableField = 'ER48' + end + item + DatasetField = 'ENVIADO_RECT' + TableField = 'ENVIADO_RECT' + end> + end> + Name = 'DevolucionesAprobadas' + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Devoluciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Devoluciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Devoluciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Devoluciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Devoluciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Devoluciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Devoluciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Devoluciones_FECHA' + InPrimaryKey = True + end + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + DictionaryEntry = 'Devoluciones_NUMHOJA' + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + DictionaryEntry = 'Devoluciones_ESTADO_HOJA' + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + DictionaryEntry = 'Devoluciones_OBSERVACIONES_HOJA' + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + DictionaryEntry = 'Devoluciones_CONTABILIZAR_HOJA' + end + item + Name = 'S38' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S38' + end + item + Name = 'S40' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S40' + end + item + Name = 'S42' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S42' + end + item + Name = 'S44' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S44' + end + item + Name = 'S46' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S46' + end + item + Name = 'S48' + DataType = datInteger + DictionaryEntry = 'Devoluciones_S48' + end + item + Name = 'SOLICITADO' + DataType = datInteger + DictionaryEntry = 'Devoluciones_SOLICITADO' + end + item + Name = 'E38' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E38' + end + item + Name = 'E40' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E40' + end + item + Name = 'E42' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E42' + end + item + Name = 'E44' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E44' + end + item + Name = 'E46' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E46' + end + item + Name = 'E48' + DataType = datFloat + DictionaryEntry = 'Devoluciones_E48' + end + item + Name = 'ENVIADO' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ENVIADO' + end + item + Name = 'ER38' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER38' + end + item + Name = 'ER40' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER40' + end + item + Name = 'ER42' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER42' + end + item + Name = 'ER44' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER44' + end + item + Name = 'ER46' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER46' + end + item + Name = 'ER48' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ER48' + end + item + Name = 'ENVIADO_RECT' + DataType = datFloat + DictionaryEntry = 'Devoluciones_ENVIADO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + DictionaryEntry = 'Devoluciones_DIFERENCIA' + end> + end + item + Params = < + item + Name = 'FECHA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_DEVOLUCIONES' + SQL = + 'SELECT '#10' ENVIADO_RECT, DIFERENCIA'#10' FROM'#10' RDX_V_CONTROL' + + '_DEVOLUCIONES'#10' WHERE'#10' FECHA = :FECHA AND'#10' CENTRO = ' + + ':CENTRO AND'#10' CODIGO = :CODIGO AND'#10' COLOR = :COLOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'ENVIADO_RECT' + TableField = 'ENVIADO_RECT' + end> + end> + Name = 'RefreshDevoluciones' + Fields = < + item + Name = 'ENVIADO_RECT' + DataType = datFloat + end + item + Name = 'DIFERENCIA' + DataType = datFloat + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'NUMHOJA' + DataType = datString + Size = 8 + Value = '' + ParamType = daptInput + end + item + Name = 'ESTADO_HOJA' + DataType = datString + Size = 20 + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'ER38' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'ER40' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'ER42' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'ER44' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'ER46' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'ER48' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_DEVOLUCIONES' + SQL = + 'begin'#10#9'declare @rowcount_var int'#10#10' declare @NUMHOJA char(8)'#10' ' + + ' declare @ESTADO_HOJA varchar(20)'#10' declare @OBSERVACIONES_H' + + 'OJA varchar(255)'#10' declare @CONTABILIZAR_HOJA char(1)'#10#10' dec' + + 'lare @ER38 numeric(15,0)'#10' declare @ER40 numeric(15,0)'#10' dec' + + 'lare @ER42 numeric(15,0)'#10' declare @ER44 numeric(15,0)'#10' dec' + + 'lare @ER46 numeric(15,0)'#10' declare @ER48 numeric(15,0)'#10' dec' + + 'lare @ER_S numeric(15,0)'#10' declare @ER_M numeric(15,0)'#10' dec' + + 'lare @ER_L numeric(15,0)'#10' declare @ER_XL numeric(15,0)'#10#10#10' ' + + 'declare @APROBADO char(1)'#10' declare @FECHA datetime'#10' declar' + + 'e @CENTRO varchar(17)'#10' declare @CODIGO varchar(12)'#10' declar' + + 'e @COLOR varchar(10)'#10#10' declare @TIPO_TALLAJE smallint'#10#10' se' + + 't @NUMHOJA = :NUMHOJA'#10' set @ESTADO_HOJA = :ESTADO_HOJA'#10' se' + + 't @OBSERVACIONES_HOJA = :OBSERVACIONES_HOJA'#10' set @CONTABILIZA' + + 'R_HOJA = :CONTABILIZAR_HOJA'#10#10' set @ER38 = :ER38'#10' set @ER40' + + ' = :ER40'#10' set @ER42 = :ER42'#10' set @ER44 = :ER44'#10' set @ER' + + '46 = :ER46'#10' set @ER48 = :ER48'#10' set @ER_S = :ER38'#10' set @' + + 'ER_M = :ER40'#10' set @ER_L = :ER42'#10' set @ER_XL = :ER44'#10#10' s' + + 'et @APROBADO = :APROBADO'#10' set @FECHA = :FECHA'#10' set @CENTRO' + + ' = :CENTRO'#10' set @CODIGO = :CODIGO'#10' set @COLOR = :COLOR'#10#10' ' + + ' /* *********************************** */'#10' if @NUMHOJA <> '#39 + + #39#10' begin'#10#9' update RDX_AJUSTES_HOJA_DEVOLUCIONES set'#10#9' ' + + ' ESTADO = @ESTADO_HOJA,'#10#9#9' OBSERVACIONES = @OBSERVAC' + + 'IONES_HOJA,'#10#9#9' CONTABILIZAR = @CONTABILIZAR_HOJA'#10#9' whe' + + 're RDX_AJUSTES_HOJA_DEVOLUCIONES.NUMHOJA = @NUMHOJA'#10#10#9#9' select @' + + 'ROWCOUNT_VAR = @@ROWCOUNT'#10#10#9' if @ROWCOUNT_VAR = 0'#10#9#9' begin'#10#9 + + ' insert into RDX_AJUSTES_HOJA_DEVOLUCIONES'#10#9' ' + + ' (NUMHOJA, ESTADO, OBSERVACIONES, CONTABILIZAR)'#10#9#9' val' + + 'ues (@NUMHOJA, @ESTADO_HOJA,'#10#9' @OBSERVACIONES_H' + + 'OJA, @CONTABILIZAR_HOJA)'#10#9' end'#10' end'#10#10' /* ARREGLO PARA ' + + 'QUE SOPORTE LOS NUEVOS TALLAJES*** */'#10#10' execute RDX_P_TIPO_TA' + + 'LLAJE @CODIGO, @TIPO_TALLAJE OUTPUT'#10#10' if @TIPO_TALLAJE = 1'#10' ' + + ' begin'#10' set @ER_S = NULL'#10' set @ER_M = NULL'#10' s' + + 'et @ER_L = NULL'#10' set @ER_XL = NULL'#10' end'#10' '#10' if @TI' + + 'PO_TALLAJE = 2'#10' begin'#10' set @ER38 = NULL'#10' set @ER4' + + '0 = NULL'#10' set @ER42 = NULL'#10' set @ER44 = NULL'#10' ' + + 'set @ER46 = NULL'#10' set @ER48 = NULL'#10' end'#10#10' /* *******' + + '**************************** */'#10#9'update RDX_DEVOLUCION_AJUSTES s' + + 'et'#10#9' CANT38 = @ER38,'#10#9' CANT40 = @ER40,'#10#9' ' + + ' CANT42 = @ER42,'#10#9' CANT44 = @ER44,'#10#9' C' + + 'ANT46 = @ER46,'#10#9' CANT48 = @ER48,'#10#9' CANT_S = ' + + '@ER_S,'#10#9' CANT_M = @ER_M,'#10#9' CANT_L = @ER_L,'#10#9 + + ' CANT_XL = @ER_XL,'#10' APROBADO = @APROBADO' + + ','#10' FECHACAMBIO = CURRENT_TIMESTAMP'#10#9'where'#10' ' + + ' (RDX_DEVOLUCION_AJUSTES.CENTRO = @CENTRO and'#10#9' RDX_DEV' + + 'OLUCION_AJUSTES.CODIGO = @CODIGO and'#10#9' RDX_DEVOLUCION_AJUST' + + 'ES.COLOR = @COLOR and'#10#9' RDX_DEVOLUCION_AJUSTES.FECHA = @FEC' + + 'HA)'#10#10#9'select @ROWCOUNT_VAR = @@ROWCOUNT'#10#10#9'if @ROWCOUNT_VAR = 0'#10' ' + + ' begin'#10' insert into RDX_DEVOLUCION_AJUSTES'#10' ' + + ' (FECHA, CENTRO, CODIGO, COLOR,'#10' APROBADO, F' + + 'ECHACAMBIO,'#10' CANT38, CANT40, CANT42,'#10' ' + + ' CANT44, CANT46, CANT48,'#10' CANT_S, CANT_M, C' + + 'ANT_L, CANT_XL)'#10' values ('#10' @FECHA, @CENT' + + 'RO, @CODIGO,'#10' @COLOR, @APROBADO, CURRENT_TIMESTA' + + 'MP,'#10' @ER38, @ER40, @ER42,'#10' @ER44' + + ', @ER46, @ER48,'#10' @ER_S, @ER_M, @ER_L, @ER_XL)'#10' ' + + ' end'#10'end'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Estado_Devoluciones' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 48 + Top = 32 + end + object bpDevoluciones: TDABusinessProcessor + Schema = schDevoluciones + UpdateCommandName = 'Update_Estado_Devoluciones' + RefreshDatasetName = 'RefreshDevoluciones' + ReferencedDataset = 'Devoluciones' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 32 + end + object bpDevolucionesAprobadas: TDABusinessProcessor + Schema = schDevoluciones + UpdateCommandName = 'Update_Estado_Devoluciones' + RefreshDatasetName = 'RefreshDevoluciones' + ReferencedDataset = 'DevolucionesAprobadas' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 88 + end + object bpDevolucionesPendientes: TDABusinessProcessor + Schema = schDevoluciones + UpdateCommandName = 'Update_Estado_Devoluciones' + RefreshDatasetName = 'RefreshDevoluciones' + ReferencedDataset = 'DevolucionesPendientes' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 152 + end + object DADataDictionary1: TDADataDictionary + Fields = < + item + Name = 'Devoluciones_APROBADO' + DataType = datString + Size = 1 + DisplayLabel = 'APROBADO' + end + item + Name = 'Devoluciones_FECHACAMBIO' + DataType = datDateTime + DisplayLabel = 'FECHACAMBIO' + end + item + Name = 'Devoluciones_CENTRO' + DataType = datString + Size = 17 + DisplayLabel = 'CENTRO' + ReadOnly = True + end + item + Name = 'Devoluciones_FILIAL' + DataType = datString + Size = 25 + DisplayLabel = 'FILIAL' + ReadOnly = True + end + item + Name = 'Devoluciones_CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'CODIGO' + ReadOnly = True + end + item + Name = 'Devoluciones_PRODUCTO' + DataType = datString + Size = 40 + DisplayLabel = 'PRODUCTO' + ReadOnly = True + end + item + Name = 'Devoluciones_COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'COLOR' + ReadOnly = True + end + item + Name = 'Devoluciones_FECHA' + DataType = datDateTime + DisplayLabel = 'FECHA' + ReadOnly = True + end + item + Name = 'Devoluciones_NUMHOJA' + DataType = datString + Size = 8 + DisplayLabel = 'NUMHOJA' + end + item + Name = 'Devoluciones_ESTADO_HOJA' + DataType = datString + Size = 20 + DisplayLabel = 'ESTADO_HOJA' + end + item + Name = 'Devoluciones_OBSERVACIONES_HOJA' + DataType = datString + Size = 255 + DisplayLabel = 'OBSERVACIONES_HOJA' + end + item + Name = 'Devoluciones_CONTABILIZAR_HOJA' + DataType = datString + Size = 1 + DisplayLabel = 'CONTABILIZAR_HOJA' + end + item + Name = 'Devoluciones_S38' + DataType = datInteger + DisplayLabel = 'S38' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_S40' + DataType = datInteger + DisplayLabel = 'S40' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_S42' + DataType = datInteger + DisplayLabel = 'S42' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_S44' + DataType = datInteger + DisplayLabel = 'S44' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_S46' + DataType = datInteger + DisplayLabel = 'S46' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_S48' + DataType = datInteger + DisplayLabel = 'S48' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_SOLICITADO' + DataType = datInteger + DisplayLabel = 'SOLICITADO' + ReadOnly = True + Alignment = taRightJustify + ServerAutoRefresh = True + end + item + Name = 'Devoluciones_E38' + DataType = datFloat + DisplayLabel = 'E38' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_E40' + DataType = datFloat + DisplayLabel = 'E40' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_E42' + DataType = datFloat + DisplayLabel = 'E42' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_E44' + DataType = datFloat + DisplayLabel = 'E44' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_E46' + DataType = datFloat + DisplayLabel = 'E46' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_E48' + DataType = datFloat + DisplayLabel = 'E48' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ENVIADO' + DataType = datFloat + DisplayLabel = 'ENVIADO' + ReadOnly = True + Alignment = taRightJustify + ServerAutoRefresh = True + end + item + Name = 'Devoluciones_ER38' + DataType = datFloat + DisplayLabel = 'ER38' + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ER40' + DataType = datFloat + DisplayLabel = 'ER40' + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ER42' + DataType = datFloat + DisplayLabel = 'ER42' + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ER44' + DataType = datFloat + DisplayLabel = 'ER44' + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ER46' + DataType = datFloat + DisplayLabel = 'ER46' + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ER48' + DataType = datFloat + DisplayLabel = 'ER48' + Alignment = taRightJustify + end + item + Name = 'Devoluciones_ENVIADO_RECT' + DataType = datFloat + DisplayLabel = 'ENVIADO_RECT' + Alignment = taRightJustify + ServerAutoRefresh = True + end + item + Name = 'Devoluciones_DIFERENCIA' + DataType = datFloat + DisplayLabel = 'DIFERENCIA' + Alignment = taRightJustify + ServerAutoRefresh = True + end> + Left = 48 + Top = 120 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 184 + end +end diff --git a/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.pas b/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.pas new file mode 100644 index 0000000..e52bb6e --- /dev/null +++ b/2.1.0/Source/Modulos/Devoluciones/Servidor/srvDevoluciones_Impl.pas @@ -0,0 +1,51 @@ +unit srvDevoluciones_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TsrvDevoluciones } + TsrvDevoluciones = class(TDARemoteService, IsrvDevoluciones) + bpDevoluciones: TDABusinessProcessor; + bpDevolucionesAprobadas: TDABusinessProcessor; + bpDevolucionesPendientes: TDABusinessProcessor; + DABINAdapter: TDABINAdapter; + schDevoluciones: TDASchema; + DADataDictionary1: TDADataDictionary; + private + protected + { IsrvDevoluciones methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer; + +procedure Create_srvDevoluciones(out anInstance : IUnknown); +begin + anInstance := TsrvDevoluciones.Create(NIL); +end; + +{ srvDevoluciones } +initialization + TROClassFactory.Create('srvDevoluciones', Create_srvDevoluciones, TsrvDevoluciones_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.bdsproj b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.bdsproj new file mode 100644 index 0000000..3469638 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + FicherosEDI.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 + 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 + 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/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.cfg b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.cfg new file mode 100644 index 0000000..396e927 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dof b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dof new file mode 100644 index 0000000..c912ddd --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dof @@ -0,0 +1,474 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\..\..\Lib +Item1=..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlBPLOutput] +Count=2 +Item0=..\..\..\..\Output\Cliente +Item1=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\..\..\Lib +Item1=..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dpk b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dpk new file mode 100644 index 0000000..e014b67 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dpk @@ -0,0 +1,75 @@ +package FicherosEDI; + +{$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 OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + vcl, + rtl, + PluginSDK_D10R, + GUISDK_D10, + PNG_D10, + PngComponentsD10, + BaseD10, + JvWizardD10R, + dbrtl, + vclx, + dsnap, + adortl, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + vcljpg, + vcldb, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + cxExportD10, + dxPSCoreD10, + dxComnD10, + vclactnband, + tb2k_D10, + tbx_D10, + JvCoreD10R, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R; + +contains + uPluginControllerFicherosEDI in 'uPluginControllerFicherosEDI.pas' {ModuleFicherosEDI: TModuleController}, + uAsistenteCargaFicheros in 'uAsistenteCargaFicheros.pas' {fAsistenteCargaFicheros}, + uSubirFicheros in 'uSubirFicheros.pas', + uCargarFicheros in 'uCargarFicheros.pas', + uEditorHistorialCargasEDI in 'uEditorHistorialCargasEDI.pas' {fEditorHistorialCargasEDI: TCustomEditor}, + uViewHistorialCargasEDI in 'uViewHistorialCargasEDI.pas' {frViewHistorialCargasEDI: TCustomView}, + uDataModuleFicherosEDI in 'uDataModuleFicherosEDI.pas' {dmFicherosEDI: TDAClientDataModule}, + schEDILogClient_Intf in '..\Reglas\schEDILogClient_Intf.pas', + uBizEDILog in '..\Reglas\uBizEDILog.pas', + schEDILogServer_Intf in '..\Reglas\schEDILogServer_Intf.pas'; + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dproj b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dproj new file mode 100644 index 0000000..4b660cf --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.dproj @@ -0,0 +1,610 @@ + + + {184c8df1-a667-496a-975e-df3d0e0781b0} + FicherosEDI.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\FicherosEDI.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0FicherosEDI.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fAsistenteCargaFicheros
+
+ + +
dmFicherosEDI
+
+ +
fEditorHistorialCargasEDI
+
+ +
ModuleFicherosEDI
+
+ + +
frViewHistorialCargasEDI
+
+
+
+ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.drc b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.drc new file mode 100644 index 0000000..99cb479 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.drc @@ -0,0 +1,21 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\FicherosEDI\Cliente\uAsistenteCargaFicheros.dfm */ +/* C:\Varela_D2007\Source\Modulos\FicherosEDI\Cliente\uDataModuleFicherosEDI.dfm */ +/* C:\Varela_D2007\Source\Modulos\FicherosEDI\Cliente\uViewHistorialCargasEDI.dfm */ +/* C:\Varela_D2007\Source\Modulos\FicherosEDI\Cliente\uEditorHistorialCargasEDI.dfm */ +/* C:\Varela_D2007\Source\Modulos\FicherosEDI\Cliente\uPluginControllerFicherosEDI.dfm */ +/* C:\Varela_D2007\Source\Modulos\FicherosEDI\Cliente\FicherosEDI.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf14.tmp */ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.identcache b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.identcache new file mode 100644 index 0000000..41c8bfd Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.identcache differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.rc b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.res b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/FicherosEDI.res differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.ddp b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.ddp differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.dfm b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.dfm new file mode 100644 index 0000000..f8be239 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.dfm @@ -0,0 +1,2769 @@ +object fAsistenteCargaFicheros: TfAsistenteCargaFicheros + Left = 494 + Top = 309 + ActiveControl = JvWizardWelcomePage1 + BorderStyle = bsDialog + Caption = 'Asistente para la carga de ficheros EDI' + ClientHeight = 399 + ClientWidth = 608 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + PixelsPerInch = 96 + TextHeight = 13 + object JvWizard1: TJvWizard + Left = 0 + Top = 0 + Width = 608 + Height = 399 + ActivePage = JvWizardWelcomePage1 + ButtonBarHeight = 42 + ButtonStart.Caption = 'To &Start Page' + ButtonStart.NumGlyphs = 1 + ButtonStart.Width = 85 + ButtonLast.Caption = 'To &Last Page' + ButtonLast.NumGlyphs = 1 + ButtonLast.Width = 85 + ButtonBack.Caption = '< &Atr'#225's' + ButtonBack.NumGlyphs = 1 + ButtonBack.Width = 75 + ButtonNext.Caption = '&Siguiente >' + ButtonNext.NumGlyphs = 1 + ButtonNext.Width = 75 + ButtonFinish.Caption = '&Finalizar' + ButtonFinish.NumGlyphs = 1 + ButtonFinish.Width = 75 + ButtonCancel.Caption = 'Cancelar' + ButtonCancel.NumGlyphs = 1 + ButtonCancel.ModalResult = 2 + ButtonCancel.Width = 75 + ButtonHelp.Caption = '&Ayuda' + ButtonHelp.NumGlyphs = 1 + ButtonHelp.Width = 75 + ShowRouteMap = False + OnFinishButtonClick = JvWizard1FinishButtonClick + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + DesignSize = ( + 608 + 399) + object JvWizardWelcomePage1: TJvWizardWelcomePage + Header.Height = 80 + Header.Title.Color = clNone + Header.Title.Text = 'Carga de datos de ficheros EDI' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -19 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = 'Bienvenido al asistente de carga de ficheros de datos EDI.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -13 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + Header.ShowDivider = False + WaterMark.Image.Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D49484452000000A400 + 0002740803000000ABCA78750000000467414D410000AFC837058AE900000019 + 74455874536F6674776172650041646F626520496D616765526561647971C965 + 3C00000300504C5445D9E6FB7AA9F36DD1FF204AE7F5E696EAF1FEB0CBF782A8 + ED2253E9F2F6FF619AF344B9FEF5F9FF306AEDACEFFF4186F02C68EC4183F128 + 5AEB5A9BF47897CF8888AC9293CAB2CDF883ADF3DDE8FC173BE3377BEE3B81EF + C4D9F9ABC9F78FAED9F0CC55D2E1FA84B1F5E5EEFD2459EA5995F295B9F5CDDE + FAEAB017E6E6E67CA3EB3838433379EE7677AF6B6CC8C9DBF9C1D7F93B79F033 + B3FF61A0F6FBFDFF9CBDF6CACAD8EDF3FE90B6F5A1C0F797E5FF1538E2DADADD + 8DB4F5679DF2BCD2F999BCF692B5E6A8C7F7224FE755C3FFB9D1F9F9FBFFEFF5 + FF1C43E6BDD5F96CA0F283DBFF73A5F3A48E6189B1F5A1A2CB4789F1D6E5FB89 + B0EE3873EEA4C2F73371F04488F11B40E674A8F4E3EDFD1C47E74C8CF1A6C4F7 + 3373EF6FA1F3CBDDFABABAD4E1EBFD306EED4B538D5190F1336FEE92B8F5D4E3 + FB6995E2285EEA5491F29EC0F75B8AD74F8EF11430DE3E7CF0183EE567A5F6A0 + BDF2488CF298BAF62B64EB2C64ED5052B32C5EEBB3B3CC739CE04C90F389B4F5 + 2C6FEB508BE72458E73074ED1C4CE8C3FBFF245EED4E68B02863EA89B0F2A7A7 + D13775F05479C81434E0F1F1F12860ED76A6F32F64EC5494F2CFB2627CAFF570 + A4F35396F51E51E9E7F1FDD4D4E11843E69191A067A1F54F91F48567384B8AF1 + 5598F5CFE1FA5792F068A0F36663968DB2F28DB4F270A5F5E0EBFB2B61EC2864 + EEA4A4B94685F166A5E480A1D474A6F5E7EFFD6BA5F53C4788CCCCE2B8D1F750 + 94F5A7C8DA94A0B9CFDFFA1DA6FEB5D0F94B8EF4FDF9C3AEA6851B3EE35E96F1 + 5094F36BA2F42F6CEF2555E92F71EC96BCF594B7F22E74EBF9F9F992B8F26BA8 + F68CB2F5E2EDFB173DE3B5D0F7AEC9F7FFFFFF1D45E5C1C1D08183C1265BE8AB + B0D68CB8F52D6BEF488CF5478AF56DA4F45391F5BF870D72A2F386B7F0E2E2EB + 9ABAF6877C86265FE8D3E5FB1836E11D45E7356FED153DE44A8AF33475EDFDFD + FFFDFFFFFFFDFFD7E5FDB6CFF9FDFDFD6DA2F55DB4F26FC0F69AD7EF9ED5FDA6 + D7EBD7E9FBE5EDFBBFC3E0A2C4EBC2DFEFEDEDEE2F6FF1C7CFD7089CFF2553E7 + 6E9EF0B6CFF7585D9F570A585C000068FF4944415478DA9C9D0B5C8EF7FFFFDF + B7269548B753C826CDD9DA8C3692685F91219643D3886DAD259A464E992C879C + 8A2CAAA51921DF9C45DF21DF8528135F5B73D85862738859091559FABFDEEFCF + 75DDDDD9BE8FDFEFF7BFEEBAEFEBBAAFEBFE5CCFCFEB7DF87CAEB3E113C71B8E + 44FBD2633AE574226A1A1EA35EC47F739B12FD414DFF200C3F77FA99FAF1C8F0 + 98707AC3A9C889F0671ACCC79F1B8A4E13EDFFB9538E5B29263685FDD162B81F + 8DA01B8E37CC1762045A9DD649D6B4FDB49F94276F6F13AD347C22F349418211 + DFFF01368529C31F4209488D91C2F1F1C6E93704B3C829DDEFBF81F217454E45 + A7B9D6FB73DCE22632646EBF9E9F8ED8378295B9510792E2F69EA59C7E58D1A2 + D32202FFD689218921F78DD857B497CE3224002014C528C0F0983F96CE6DAA69 + F973A7162882611912752D2272D24028DD4F4AFC5B462E8E4C907FB4E8F92951 + CFBA8C2410E3F78DA037BFC34CA2914EFAEFCD955C7D96EE62E1A5A49BFBF7E6 + E10A97344C40925012AA7AAB3557D6F4D2719FA764F6748AA14EC305F2E59B49 + 37E6B6E839D289CDFD1C249BFBEC3E235CEA653B40F29752F6D45FEA9161054F + EE2BA2F994D3A9E91F4DC5966A50720275AEE695CA2701F9B37F6BD8DBAFC8E9 + F9D7F3902C241C63FE7038132B59EF6B81A4B07D90D2DC2D1D95503958DF77F4 + B33FB57E8314E6E94DED693243627ED1DEB44E775948470A8B637FA1B070C730 + 50C685B1AE70CBA6B99D48ECAD0C1EB3DDE9EF193552252F7FE9EA9FC63E79B7 + 2994FC85ECFFC84B81378FE0656A2979859A9250E267624A65219A422B130D2B + 6E9C1DB10F90EC92B41948716102E67823268E4B51C62786FC594AE8F473A7E1 + 74AB3547B86E122E4EBD914E5AEB09A7616EEA440249BF2C993BFCBBE16F3829 + 48938E37D827E3D89A30E47770CA915CB2FCC75E6DCF4A72DC38B97231143E7B + 2B342CB58F9B680F56A84990935494FFA11B9C9351B8C4B7B208918952E959C7 + 59E934E7092EBD148CB42426B7DF224D4913A6A372B9BD6C6E5E45CF347F13A5 + 0609A18B4EDF3AFBE67E40B28E13ED4B3785952E99B709F60853D14E123D0C39 + 34532099F2D648D21C87CCB5D41353D1699501C686EB4A2E222819935B3D63A4 + 9306694EB94FF9249CF2682B7FAA0BD997D8DA34F62763278E9A799B26EA2FFB + 38A2894B80AD32A699923DD388DDE656DAF6E7031A7C62F322D337A7C50E2648 + 49949C60469839651D250139404929432C5D8C37ACD807CA22629F6C0A47749C + B8C471E226C2DF8D79B409A6DF2441246BFA439C52D99BA4B263FF426912571F + C6920E594A2F0B6449CA1BE4A4412A29C52711172F8867499A23AD64A70B8957 + 4718FA8EE0E01E4B3F19DD2024EA242AD22621855F120248F925522527081E8E + B6220DF3BFC0D552EE4D1346BABBD49195A4CFFDFAFDBC5D77CA1B245A2A6B17 + 6D8A8D96A4C749C82465ECE4133FB2929281D8DC80D400D5075A08D614490959 + 53ECBD2C93742979F82F42D61D4ECF18F0B366EEC93368C9DCBCCEDB9F33B74A + E64570396644784BF10AB362E608AA03D9DD5B83D4FF58D6258E5296266509DA + DD7D2334C65A4833FB3E378CDD3E9685DCD767E93C8A4DA4AE6FFA96E890266B + 93A6E42F39685FD3FD4A4608E5765DC9744E411C379DF6B1B985512454EF6C74 + 1583C2080DFBBD193182F675D6A4FC1B25FF823B966EB7EA04484E4174D3EBCD + A75E9DB793290999302557BFE91A89824B688472CABD23F752E1E41384E82681 + CC2137E270AE2DDD278341918AA4C68E612ABE9765EE1B7174C0D156B75B298B + FC2576F63EE7AA889CDB6523867EBD749EF5624AFC65890649BA5B3ACAFF3E4A + EBB337D2D86921450EA70886646BEF1D491514EA27E6E6E0469A0C77A45D19F8 + 9D7565DDD52A3563B424047377EEA442876A5DE7BF5A1B880425877E0D9F9C9C + 48C7BF9E3B3CD57FA452D22F565C4937F7DEC82CBF3B1E0BFDB00EEA8C82D3B6 + EF4DF31F44B48795E48C2B695229C98CF83743E5B47E43734A5A16047B73556F + B7BA1DFBC65EE4CA3A62EE1DA9BF99AC0DC87DC64E4BE7BD4C931301F973BF45 + 646ABD4D6AB24F368D498F5C18B9D0AF8400797B466CCE5E2A1BC34AF6E5D4AB + E2264E09094462466BA24AD2FD9229F778B0B9E770F074E6C5D8E2FF537CB347 + C2DCC490B18993136F7E36F7E7EA1CCDDCFBB41097DE2415F52B33A6AFD9432D + 293C82ECA815F997D98DDC3B8842DFD294C4FC4E4B63D099029FB5BE02A5A644 + 3957360C7DB65C7C5D622C61AFA456B73181EAFE7D46D7BF1D8BA5A064327CF2 + E557DC136FF63A9F5B52C04A7296D083477A6A88EEA904C8A37E80243B78FDED + 9CBDAC2419AEFB83716F2C208F5F17632BCA363749975269C9CE3357BA4230C6 + 887D763CA3951213990AD1C2A148DC5DDDCB891806C7E4C87E396C6E2A23403A + 2E9A7C22B545D24B2D4BEC724C4A6A06F7F30764BFD931E903DED973D40FAB88 + 4EBDCDB1B99D03E7A6A16F5A1F1407C83B271D89952485685213C3AD2C5192F6 + B05743CA1147CBECD4EC569D16D1DEB2898C279465134983952546EE2D4BC1C7 + 807D626E2879E260AF452D4B3AFBD3A750D12FDDE4917E686268F50BAEB426BC + 2F20C5DE287DE8C4B11BC91729A888AB1C6B410CE9D5DA5A23D431C5E42CA5F4 + 2DF7B4944E256CA320D9E2ADFCD38666621D584BED9036140BA4F11CF6893252 + 4ABE42EE9F31A45D2B49E7FB4628CC1B8E1823FFA2B10131E9F5E17E47397264 + 05889C41BEC479129465294A49AFD6F51AB4E1B9379FB4BFDAFEE693064FDAFF + C21194A4D2EEDCA6D3C88FC3FBCD663345AA56B755BE9454C45D2370F108F36A + A31CDB47CB92E7745A6AB3EE15A283492F1DF5B243670D1D3A90A58B5FA295F1 + 472F675353571A7092FA6A4EC922F897B55A45130DD7FB7027E0B645FA80938E + 13AD5BDF02E3CD3635218957DBD7143919E86A0371CDD546868C117B73E7F9CD + 08DDDE805063D0AECC0E72029EF9444A1A4A29627B869CF7B26F6EF38248860C + 9CE88485E095C084B5E143FEC831FD66BB52FDBE27FB1EA5A27B44CBF9878176 + 36EEFBC8D0DAA968935D592C65452E75A46098B9CD7F5EFFCFFA442C707565E2 + 4D4CDEACB4AE5C4D46C9E77BC8E3FD39CBEE35BBB71C26B4537EA720D11946CA + C844D6C08B32795CD06FB3AD29BA9928E940CD7F9C52F1347FF98C91DCEB0CF3 + 6321FDB8B9664BA0AB06C847B680642504720607456F28098F8B252394B4F9D4 + BAB5E15CCDEB6818266381C4AB0DC078D5E9167BA6E44A4809AF66B78E8E008A + E6988199102C13940C3AD42E4D90791C1F7007A1142563EFE436FF717E4A72F8 + F2196513F3C435186E84DABBD087C606B8D2BF8916092456D0F93605A68434ED + 70CAD01AF976680A827F4D384386249EEB01C2C4C941F2413545ED2584A2D9DE + 3108BD48D9C0898886D73064995D200C1A8809700DC5BB002292CAD437291236 + 50F2CEC9790F87B85DF9B1E6ABA345410B91059C3448C8284AF6419F368BEA1F + 24EFA7035A2EBB476A0581C959FBB60012943F45C7745A4ADF65B536D47C9FAC + 472830130CECA13775C883E755122A49A6202EA24CCA01276002C1247FA461F2 + 474A600A5B3F3A2219908BEF2ECAA5E29B9F3D2D0A9A816497C78C6A1F0DBFF7 + E1F0DDC9904ACA65BC06ACE2A4F7D4B580DC943934361ADE403611ADA996116A + 42557CD6186E52B45F16518A37F5250FCEE6C9284169C96EA9EB68F602A99491 + 799B2B42C904489BC04594FB4E3D635151506764E93CC9079210240FF4A14DB1 + 593A244247153F23D92AD004895C7FBD24E22E6C1C542B25586A5E3FD783954C + 2A3142C9459CC496D1BD663C8B48A30C6446DDDEA44FC888B23643BA754F6FC4 + 9009AD17AD8CE83C94CD4D7DF2B4C40521F3E093B777D29313802489EF0829FF + D9416F2B86442E8F6697F59D81E6AB6E0B1C940CEFAC79BDE6567444925212A6 + 58C6889A90CADE089EDBB039C1E8A40CAF0D626DA5E4FC9CD83B44F35F6BBDA8 + 65F8F2406E81F3A86EE06C82B9FFCDA36C6F767C1E9FBD01C93C8B1BE6D86427 + AAFF9DE7DAEF29F9843BD109F713E48E37778C51E27F7A186EB62E4416822CDE + 31D3B87F4FC6F06654ABA51E3D2988468C059A10954B927119390D989FDE6848 + 4288CFE4B7171DCD8F98814E619E7F511EDC519313E97A538A45BA828414F9C2 + 38625F73D22053CA18D271219D33249F103A88AE30AB2D089E5973AB90D28D90 + 5294449F720EEFBF6CC6522B4C81232DD053142F3372D782828CCBE6A40372DB + 1EB7F15930F7512F300292CDAD5B9C373AD8274D9054A444E85D08C8D69C0163 + 8DE9B426D2AFDFF701F8D5EFCDDDABC5124A4F2CCB90E9C61248E94D4F89436F + CEB23925C96C75E59B7682A5B2269900034D1E490C7966F11D1A7FF0CBA93D8E + 7AD10C31771FD241D9250572C07C1D92FB42189492E23950F2DFBE33DA9FA300 + 9EF13B35FF9D5F582435C01D2C3DCEF59882A66137E95292E42111D2AE4C4BEA + A601B20AA4D6B560259D684DF7338BBD88426E4FAD78CA90B235C574C83F4279 + 79A25212D31C9FE88BE7B3C137CC164814099FAC7FD0172E19C084402421645A + 2C974AF41A9DFB8A68372B398043879C202747B99ED29F83D4181524F1EE9735 + DD0F26015294D47C52995AC364259BD2CC432D761FF45E7468B06A1A41B941F9 + 643F761C86FC900C02E993615A1FE38AC96B1EA58B92E8A37057DEA9680EC738 + 27F5E4997F91B276D021E7A4D73F78C63B0A4A9E5B7CB7815F895D2043B2C5C5 + D4791C37BC797087CE0595F9B91320113AAED072408052129D147AFF50E7920F + D7070D61B0A8102E372184749F80943D7E68164DBB036F48128294E81FDC6BA6 + 49191DF1574A4D49099C7BAEE8970DB81E1C752F901E3B3D8C6F904F9C833675 + BCDC51792532395B9B62B306B87BA6DB79FBDE6525D3BDB2F29BDD3B5C180548 + F66EC4CDBF034B3E34D010A5A24FC6E60909A4287DF284F2A133628737E57529 + EF7170A34324ED7872D0DF8B598616911744F2A0C5807CAC940C5F4E428924D4 + 477F210395650D3874E2564EFA6E775692BCA2F176382035402067932B52FD41 + 97EF13296373E2E4099B1F862484B84DE6B109ACA53B47480B8A26A306C95EED + 5AC41249FB04C2B2BFFA264FCC8E90D0C614945CECD5F3C2E33ECFC21A503E20 + 798F982C2784AC2420E9490B0A2A4BBF2BF696AEAB436A40AA826CE6848E1A7A + 1CD5D031A1D1C32DE3891A25E26DCBE4096E53A7211951500BE22C5471D05B20 + FD90F9600B22363904859A7620326394FEA6163545C01C70CE6F8B37260E4E69 + 70029103A7E44EC665DDE8977941F4CC9FB4082297A9747730895752B3349392 + E8B61F6A81E0BE376173E2F8468953692DBCC7EA3135B2583B756D6E7351F2B5 + 5BD112DF02C91BEBF75C594DD28D6EE697226899C89BCCCBA133869EC32D97A8 + 9E74B6CF5D6F3439EC94BCC38E3A5EC61673C7CBB2A33185760E40E050F26E5F + 81C416503E9B9B0C7EEC3831DCE50D7A96BC6773E2D4B59CE6881ED396F15629 + B969FE6EB9087086CCC1AA14E480A37EE9454E685E9BDD6BE694AFC9A99A733B + D535D787E8882CD9450D73CF3F13E5DD930A77042F1ECC4A96CD905DA1A4103B + B292DC83B0DBED1B6452125A364B8B0FE5E88EA568519221B1E591D0E869CA78 + 181C42E21F5A5E11732355E62848096F40527ECC32D9619EDF4CEC4DA47731CB + 48EBC94543620E6DBF3B47A1E4C7803C2BED227C52B5F0DA9E50919221A1E4DA + 023889E694E9F9313143FD5849CE92A494ACCED8FCD48AEE1369886465456BA7 + FAA39D9CFC1A71FBAD20399F73875A8E35E4379B938E9454A449191D11ADFA2F + 3C615C76CF5536AF07A0FF234A9E3D3805E646BB6C27066348A8283B49885BC5 + 432DFCEC5C0A92EF9E90A611E6FE10EB3178236849F964F1C2EA8CB4FB56F046 + A26E853C424DB8BA889C3E1641AFDDC29292CE4999420681CD8777E6CB3685BC + 784CCD6DC62D53BAB2B66FD03AEF9E675775FD124A22BCCB389F6BFB3F1913DD + 1C241936A8E4FFDD1AA4AB0B5661F0432A6399397012C75810DD6FF21874ACE2 + E326F715A5BF0F7DF93D22E75E32EDAE85CC7795C321F9AEB03D6723BAF79734 + D9CC49DB4D3180E6FBAEFD582999DCE3287991F4E8A5E3A940D18350F14B4209 + A794B5F85DE266D10F0D38E2860B11C8C7886AABC73DCFF6A40B8FAD18F57E48 + DA3FB1E0647AADA00C4EE9CD7B5D3976480B7279F985BB4A46AA43889C90A5ED + 4A91F2B34B5CE96C93A6B0E151BF92E8E5A47AC81A61A0C40D0BEE52004AE473 + 05F9247E2819FE43626D2EA478012B091DADBA5DC08B2EB0BDEF37E1E30C3E30 + 77413328694C51520E10BFD6109036E17BCF536212EECAC7F1061CE5F2034BEF + F74CEFF5CFA8C568F4901996079A0885124906FD0B6273C329059257E242775B + 30248C82420EBA8454BF7B9FE08FC48CF27ED68AA7B1A5F44EF5648767ADA722 + 146E1CD4B424A526273357D2FEF363F42368A879BE944C26253FEBF11DD17B0B + BB2C9696397C79999D0993759C114B59BC1892399B0CF12D2B71697F55948C49 + 57852CAC7E172EC95143D051199C84D2872C82C8E1D93D122925BE071CAD239B + 501243B2823C5E24FD0A85A8941CB2F6AA1F157659DC83B70E90FC03636768F6 + 4EE1D1A6AEF9ACE45A224E422C258992C490CDB8D142E8374A06E4FD67362CA1 + 94CD7AC22F05124EF91A4DE5260749E8A46E70AA45454E134C043A6472C59F06 + AE18193274FA2F7EF987A794F9C98616677E6C03CD8086BC50AC9D04F709DFB5 + 052DEE5259BA6E6F0519C3C53DB1B5F1EB17C29056DD988E74CAC73D0B557873 + E0C05740E96ECBF6D682C74C50185EF28DB82A629E285DB7359DEC0BC8C479E9 + 94413BD02E121A4624AA194D75C78C25C98403C4275B3814703A473E47F54AFC + D27F8792482154FF518B20978FE95D6C57D874130114687E3D5652458EDE7A6B + 52A29E26B36BA88C99AEA74F9D906504A54D904BB6733AB58FDBB178376FFD83 + 727919FC90F768CF48411EE476EF09FA5AE8CBDC55E63ED48021C9437C92953C + E14BEC93F7ADA2B76A4652941C3AF79B306464F16B059266B9D15106D792FA80 + DA94A4483546FCE36BC5789010DD2648521BD6CBB9E354C6BE191B4D5A93429F + DD6DE1401CDE881CACC4C5837619FCA5C6B28593F86EE474AB0A5793FD1833BF + 9E64217F9F8C73C4BF25DEFCD6A414C71439C9F4F7FCA0843CF9C8D6863E1BB3 + D50C92B58C88FE23764653367B04E4FC3A9DF75FA4ABCE5432DC4A4112792848 + 2D4D72DCC4A7EA1E99EF2AB9B2A21E5193EA1D14C590B4B3C4E494FA506BF1BF + 8324457990CED4BB0425FDDECB29F0E68EB72402E9940093870863BA72496A71 + 579C5F4989EDDA6B0209466225E9DDFB3D55D9DAFEB80BACEB595AB580761059 + 44829221C9FB20B63A0F0D3669499A733E0F39409B8BB071EFBCB038AFA72879 + D75B5A130E9D3F9A42CCA6DAD26C6DF8245A1C76CADDBC3D004CF1490BA92E42 + 3FA8458FB4FBF4CC5521CAE152D931975FAF89B48C510B8354C308C847834FEA + 628ABD6B21EB709A201F9D706F11D4A28A7448DBA762EEBA03439E80B55D8A49 + 2099D2B66FF7E31EA9B59030F7C5E956DD948E02C86F01A9F9546F15FDE24319 + E78A6B7A1424ABF87E64CB8DA38954E7D4234937BD2E24AC1D387ADDBBFF1A7D + DCEFBD1D77932BFA92C7C2BF87F4E58DA9BBAA23245ED91D9B810C89820E6133 + ACB8C7CB1112367A2261CC7C64A47ACF8C843E46941639626F77B27DA4BBA64A + 32EAE3A816EC9AC23C1CC2A227E04E1F0FBA8AA90C40EE766F405AF364EAD571 + 9684D71D24A5A448C994669098CB4D7709AA93AE676149CE6C159B8AB885881C + C9E7BC65C53F47F4B09A27FB3E2787C9FCA62FC0C8ABE69EDA2FE4D1EABDAE53 + 9277CB7E14E9839A30D15271F872975793520C3E58999B4D72F2A02FADFD982E + 86D9C0DCB78F6B42C2DCEDA5A9332209717C1753BD66D13A24F4197CF211FBF6 + F3A48A50D7D1F611D9224B5260E2A0AB1E74FC97285652B6ABB97F073A644C7C + F28A9EB0B5399F9B206D1FCD504A0E385A1FE638C80D8E2889A5EFB6200D5325 + 23A334DF512A9D0B23029C68D121923421947F1555419E70B7652189CD0DC88C + AE5F4ED53B8B9A5B3222B720E29230360350999FEF6EF713EE8395B99592F6DB + E0936B152384F438AEAD430C0E7B535786147BEF26DFDDD99E889D472710E6B0 + 26374027FBFE3D25AA01BF00657AA3C4418E44ADDEDBE16082549B1DAED229D1 + 730CB5D020D3C52969066193F61F922216C5A3E9CE7839CC55B5B960E4BF56EA + E800E21B3DDF7FA2BBE6E0A0F584D4BE4B084A07B9F939D9F7D0605DCF5A561E + 43F6E1D1C094832D7A7C976EA6A4C418E0F249C9C8948780218C0E5A030CC8E6 + BC73E01FAA1F45DC2A3A4BC8A0240FF9D171E930F8F1EEADF716B2BD91CEA1A4 + 5FFA6EDE1D05460E72CE652709902795A0F27A0464E2E943B67D0F9D60D7F00D + 7A9638EF3631E414F2D6FA8A6AD0BA78AC648B6CD9D3CB90AC64B627B9370F10 + 2551D489ECBBFDBE4FBCB835FF2AF9DD8684B47334F1C771B5C31425BCB7F09F + 193E1CDED802F6F3A5D078F14C21E5E03949E054A104EB1F1A0C66E28CAF84CC + 8EDFCD6DC5770C49131CB0ED6F6BEA91EA9D4E4984E85E102D886248767E3348 + F80DFA409CCBC5DA1E267F3ACE9EA9ECED2A901C392E5383928D25BB7DA59EE2 + 35880C7AC48A3227DE8597691F0D9EEFAE3352D0B3D0ADB729B55DFBC35F62B3 + 9ACCA5D41A8001B590A45A6FDF50F2DC934A0C8924D122F46E3F05497F61E46C + 991F470B23BB6A4EE9C7BBCF2985A3472DE8CD8C9C360FF2986DEDBFED41F713 + BC50763CB1082F73D9E19423FBF60E0DD6959C89D64775E9E0751AA438E56E5F + 638ABBEC33FF07FBB62FF9F52BBE1419769563C6A30EA516E18591A08C5AF065 + B1430EC796D292C564086FE121389F883A98DB6A9156458D2F84A4B5213F6EBD + 9D1A40AD96442DE6ADAC937D39188E52E4F1A34A46511271C38C5AE464EF8EDF + FD8E32F7A113ECD74893DECF5CCD8CAD30E9B8A2CC8F5B88F88EA2E2D772D219 + 8ED74B262DB92F7042995E3F02C48780C4D69EE46B447F6BEDC7177D3C2835E0 + C6E1A8BBE34ADD4F2CE25E94B4F6F933B526EA10746CB1206A0129A71CE7191A + 1F1A3F213509908790C5B291818AC7D0567A0E52A9E9275968D5C27FAAF82EA3 + 74E32E4FEEFD42A250D69259B5833FFA603EE10BE1FD1A25023295026EA01BC4 + 5B30D243A1A391C725190D50791FE1B580B897C06D4E83780AF50C5C22E6E600 + 845F57AF1F5362E692BB469930594A6433234576E50D1DEEAE49BB9E25C75950 + 5B8ADFAD336942D602B23BC2854B90816A954C46D52455F2707480F22AA48445 + 4F685DD4828B5D45CA32699B43BB064349AB47F06D5F3F6A943C2672ABB990A9 + 019ABDA5A391AFE573A5248BC7AB36A24FBA3BF03DE4A35AB03A82926FE8562C + 939D44ACE435A280E3DC0DCA2EE56679B0F9821CBF8B387C89B40E97EC26CEFE + 8995FC1315F7357AF5A38F2FFE8DB585D2E3380C7E76958AEFD72847EB154BCC + 2061FA1AE54883C93FCD87C092D078327A0527D93D13C8A45C98DBA19BE7EEEC + E59CA79492B59050922E126F0690888142F9440B83D56C4F56D27971F5C5AD62 + 6D515053528DAB6C094A7FB5CDD8AC30984F6F114AF66D7E91CA9CD944705212 + 2FC507F90A7A36E99044ED3276204100F2D1E077F6A83589B9916217C5FBD926 + 316457A5245386761525B1B9E2EBE9475B48571264A96830E1963226947EE92F + 13ADE21F7C79AEC7ADE8EC24EEB82BF1C4F4EF793219A6F893B2D5CAB9F6BC8C + 5F7A76523F745FAE5E4BA25C6EBC15A42D6B7968C9BCC1B2B584166A916F5207 + 5A30288E2145493BF8A52879D47DD1D65D4964BBBEDABBA7A62462507F0BD021 + 39BEB9EFCA3D212A280BDE568635073307CBE7194AB4B564B746493A232BCCA9 + 3489EC5CBE1FB2D63115BF6887C6BB2C1D4D893BE74A6E4085114212432EB848 + 61712A7268DCB6719ED93F71E01CCD2686ECB020E3652D6E141B5A23734AEA5E + 514F94644B50B7243B7026FB5130240D0627B742A142154A5BDF237CEECEDE0A + 7F3496407448B9968A17CCBB9D6A5212959ABF683E25050F962E2938D13607EE + DAD602CD1EC569F6161D1038DB0C4703691749F085B9DED6119955A929F6D6B2 + 50BD2670CAEA2840524E3FBCF8F82C6A0BFB1ADF8364A34A388E8CBB46956092 + 33294F78424639EFFBFBD292AB73F0992BD97CD47B9EE81BA1A51A7C28698FC8 + 693B7BFE225F862450EE581075D705111AECE93760DB38866446F481DE7D7C5E + 33B6D9208222671E6748697428CA814F1F2928EB97234BA8E321C1ACE52E1AC5 + 84BB3C435944E44780FAD995D9B9E42075B7BA54E2E82690C8E6E3A4B3381F09 + DD7DF923624C779A7F22DBF7027720AEB637498934727BDCC3038605149F9DE4 + 685D9CF86EC955F2A86584FBE04F4039B10BA5DA6864AF442DEDC65DC891C336 + 8A335D621A72669BBC92A793ECC625A13A1081E6DDDE78914E40499A5246C1DC + D55B3E9BE60FE68D203E0E0F213DD716D398B0AB195A7CE7F4A31CBB97A9D143 + 40FA12626F213615B109528B9814544F83D4A5C45821B6C7A2E0143D72FA1534 + BA213A72415C631153814AF0C807B2463FB9D2E89C21794C090267DB38405A7C + F4084BEE569004D704E6224EFC106B0C11A4A4C3CAF78B1E96F12E1583110562 + E6424E939A9049C1CFEA25050D1E4541C9C1664A2A46920311F8B98B38262455 + 764742E24AE9A9881A3FE092A41E8E4EB7EE185849377756326E075D09D6B639 + 69397A4D8B3886163124C4FAD187DAEBA1C306EB79609840C22543A8FAA20F71 + DBEA164C5EA38292110FBBE850F2AE2C15421C3BED89EA35A21D68BFA9A68776 + C5C8ADD62868561E846593235B046B7E02530024C9EE63755E0D2BE90CC829E3 + 34C8A4E0DDBADF37FF9D2565251BE7A197C3FDC58CAE175F89BCDD838A9C7244 + 493E756E569E06C93A7AC92FAB1892284B0B1F0EF1F6AE6765F71A597CD4A388 + E83E97014A2525FE1931C914728C8869BB3267D4A3A82C19EEE4289014DE1509 + A21B287DDFFC6E375C911423F73AFF4D0B80D15EB337DDA647FD2AC4DC7EB356 + CCCA43BB2E9D1494BC2BCB4B416EB3CCF2AA3AC62B6C582EC992BB198D76A0FD + 4EFEC86087AED41DEA71EB0EB56C0DA323D8A9400B216D9098726E9DE3DCFA5C + 135A19B9C0BBA732371265708F1C32195CEB88ECE6D038D78AA31B4AAA844E95 + 4EA441D2ACB4FBEBABC794214DA249E88FCCB78D28DA6ECABA4FABC6EDAA1A27 + D1A320B1016EE43D190B836AF0CB1A835DD96BE75ADEE9C1FEDDEF56A1CE56FB + 0E81D977CF91811C16BCEBBC3C2963C509DA4E87A36EF7E8B3229846BDE76B02 + 65C8C62BFA7D4C83AEA2298757322487A8053D84B945C8853406C1CD421208D1 + 17E1A18C222C476D3BC68E16A01AF0EE1546C48E051FFEAEA156956034508DA1 + A6E513A71C472738909934B3BE74E9B382B378511996584FD558BB9BFB2C9FE0 + 000EEF1E39B31E8CDA556A2F1B2102C9B1467BD074935CD218C73B2340D92313 + C16898EC3C6A45A364AA7ED7198D22B2AD304E59C7A72B4C5937059D788E8760 + A52420EB35B2F827EF2DFC8895C48B57D0C4E95C13B9ACD474659A5DB3517939 + E478A35F91D3B956C5356448669FF7786508A94409EB3C120B8D7A8F0413428E + 42A3D2E17692EC8B819487DFEDB2906327B37C583694DC352A2FA49AE0D7B0B6 + 06C987FEA744E7BAF1FE62A654A1D32ADD8F77A1FBBF536D01483EE9D8901CE4 + 701BB808F61CC7FB78BF758FC82507747D10F17DF28AEEC32D1C167ED46A81C5 + 9E977D3CAE375CA1433669308A1E88C1D1C9933FBA3B8BF62CA04172E2B926E5 + C28FD6F3215243CC13BA812E107C01C19DB46B94FB9468BB59114D66ADA0FBF0 + 395022CC25C6DB89AFD858F19108AA0E5E1F8912226FAF8F2CAE59FF116683F0 + 1CDE1A3C9193BDFBE5D8F6E013A7CE610DDCC3AE2604E6B524F7592B24722C3E + 6AE2BF62D68A16BEC853BB8573F7A48D77397E2F8609E4716E1A89B5788C0D00 + 435AD10D47891B6E6F92685755F412DE63386FC98A59111B3ED8F0A1DDA7A310 + E6A4BC126DA33172016721B638180DC9605546A71EE79031F8523B5227B83B15 + C16731DE0AB5A9A63151803C51E2D94883247F42EC348667CA8F1BD383A45994 + 9074515D8078836417195633E1B7B6D58625280CED0DCD1397DC46D15F796D9E + D0369A41276C8EA079CE85D092BD72D7286E752E5845CA56230A828C1F899E48 + 490011CC26EADA4A94799F3DD5FA3610F91B76A7ABD756661BE720BCE3BAE66D + 82E8FE0C49242DD32C7A80D1842462B1DC72757B33247E0CC8FB28A8FADD486C + BA53D2B625F39C394D6E9EB0D9C1AB6D523094BC3F0F7E29CD233B349210F732 + F8F7910BA21612430291228B415A695D29748437BC401DF211A11EF451D2BBD5 + 6557AF9D5F36E544A3E076ED11DED4846ECC6230FC3F6021894F4BBF9F24E606 + E571EE65E0BBC99502C9A5ADF7A58E68B961EDD5AB68FA8F39D7266C56AF0814 + 3685C64923CE907E01B31F23BE05B21A4DCF7A14C1EF22692B484BCC66B01348 + 0EADF508B26A0BB8A4F73328E99859E23913902494FE0F0E0C63BA07AAA16F5C + 07925365860F053FE6C0590244AA1E13B5351DDB72BBAA9CA7D38FB4B9DD83C6 + 0F5E79119FFDE8158479C4B8A07A1A647EFC34348D633857566BFF24728A93B2 + CD5BDDA6262B31D264652492317F0FC8313BDE8D1A7AADFFB275259E3FD20DE3 + 3FE1947C9C8DA55C21828A92F709906C6EB75CB41CCA2B47633BC030930BAA7E + 97CE7070BBD32A2F3E3122E7A517335FB9FEA03127E3ACE953D69D6048A1CCA4 + D9561CABBBF90D6528A12C6A696BD3B97823CFC49263C80290E71784AF9BD3BD + 5D7B345BB00C36E487293C7575471AD132D221D929791B9A2655B2922BA14235 + B62CD0DBDBB59A664524BDA2D6F1E32B2FFEFA2367A917EDE884EA0D89BD695A + 238C4F68EE7E824F2AD418F52172A1247AA80955D74BC8F0127B36D34398FB7C + C28475AF36CABD614702C92980F1F874D9BC3E69E49FB0BE5A20D17F17256901 + ED400FF198A10933D29887BF20B8B7D1BA1F51EEAFB2BE17F9E3450EA215449F + 8E0AD6B25066EA5902E5049F3C72AFCE73E7C0355182178B21E6E5C51622417C + E7C42A7AB8064A667A1CAFD76819F5F2F7E17CAEB38990094DE8BEA8E548A2A4 + 64A1053BC6D4B3AC02A4349C51A8005B1B0E99C94A7A1CF738EE60F9ABC377FD + 14E494EC64D580B3535AD567A21D797D680C52E698DD1219E2A07BFEB55E5C93 + 234999FA449F313BF26815D1D36EE8042D9B12D31B4A92B17A377DA49DCE2396 + 16416153569237D728975AB1945DC75855910E494FCF33E4947599D75FE2651C + A8B8FCDE9BF4DD83A139FD187A0A67214E957E5BC65F202B78D974A4813E6171 + A44E22258B3D3E6471C25DC5BA202A8D51891D61F158C1C335CBDDB6B59D42EB + DC738FB3535AE894A49FB94F80F48D8292AFC054B99CEFE216FEF36294757516 + 435663C3823390D76AC44D0E203D2E17927361437A82BCBE991E5876718B9054 + D910F9FC6E28052CB8DF8826A439BCC559CA670C1699FE3B10ABC3E2CD4C2F94 + 7C466CC666B40A1614950A25B70F81B90119971C07E9676A7C3A27AD24867493 + 3E7300CD0EE5ED53584D20E13113F3D27F8FDD3568C8AC76F4124CFDCD90AC3F + E9853FF98458EE146E5E31059E9194CB3E793714A1438D4006C7DCDCE626D211 + 387684C5B1E955FE54B1BE870F57C0DBB1D8B7C5F7A7E6D1EDDB834E85D3BADF + 8EB56B1FB74029B97226032688A22B3F6AB292F67DC101FC90A5E49E8291A87E + 074A10C835D58B53D1E3F55A3D8BE61F77E848F40D0191FF861CA7EB2FBDB899 + 3C0F586625CD286F388A765268406A9FB553373D6C3471CBF86163B48BC9E0A1 + 6376F08BEDABE56F02392A6351DDE6A7A96BADBE1D9D7AFEE1374362BCD0A3B4 + A9BF839D987DB7099F78464CCB2E7900906ECCC8F696FD115DAF6411204FAC9A + B8D6EA3CFD5EDEBF21F53FED5338E4F275A23F5FC07F432A6FC821BE79C28B9F + 57714247E8EC0C4DCF9CFD78EA96FB9D8BC5EDF46147D84DDA416137594F3827 + BBA82FBE8CC3D70F3BFF6445DF86DEBE3ECCFD9B21A2247D322C2C9E66020B70 + F7D7CF5C8971BCC1F11687C2DC0F9553B6A7F850A3EC556B120A299E12C7CDB6 + E0CDFD89CA9D0B9DAF9BD6DD40E5A12C2A44378358C91630F8ECE557D672B6A4 + 878D9E5A49CB2331D2262EE3DB81C3D8C240DE5D2D8472FAE1DA35B3BBC19FEC + DA7DD3F0F4BD6301ADF23FD944D3DDD51A04144AAEE4089EF845FCD039A4A494 + F6AD7A67029518CE539FB0E2281A8AB8A90ACEA109DF0C39F9E0051DF1CF1718 + 92AEF7CB795C68C99B8E01BB6A1424CD864B4F4CA1FA168AAF564EC4FDF455E2 + A3199BDB14570B640A2D4F4DBF9664D76E78ECC179DD038E675ED9D4265EFB8D + 9251184329282C7E3994CCF6793833003939946CDEBA9F506298FFD6B7C5E353 + 2A4E8D4EEDBFEE47847639167E81BEF8E48B4F4C4A12847D5C4896A38203526D + 461FE7D021BAC2D70E9015D5EAA85FECD8C66F958CF314CF7C1A98C257A5A1E9 + EE3621EB8BFD2766924D6F764A189C74432B6B87DE849280CC30BA934A42F1A1 + EE09897E80ACB7E9C5204A5D5BDE9F8233A7B03FDAD0B24F6C96714E6D7EBD01 + 391403F2310924EFF3F6D8A920A903AB39710B211F3D9CBA65FCA689B4653C6D + A9061B42E5267211A668BC5CF002C8D4DBA95EF5E70FFFC46B914FEECED00B56 + D56DE22C42E3390DAD0CB55AA944859216433D3626A36F4CE8D2791C07644148 + C24DC3F9F48194B23C35DE10BBADE1849C370B5FF8B3B1D9365FF3DF9B131523 + C11F5BF16995962AEF86C6E703B2C3950ED50BEF376973819A8CA714ABF102B4 + A55A9DF96A513D7193054F8F97625296CFFEB6C5B5FEC197124286708F327376 + 20217478D75BA8E8395330436F2E26D7D1A92B7FE04342C101BC7D9A892881B9 + 6FD2C40E941A5F41FD1B1A5F71B8FEE70B36DC759AF5B98DA2042087F18BAF4C + A16CAA273ED9422E494C26CFF611CE4157DA7F75419684986BA782149A6A8829 + 8F09A9273A62395F0FE33A7A572F40CEE9BBC867467302E5A636C47C8F212340 + 8597686007D7D11B9333C8F86A23A4F39D2D3253BFA29BD6809C98C2C6D815BB + CDB9EA150FEEED30DE2CB9FB4D05D954BC74FDA58EC7D11DCA2AA4EC7A0DCB6D + 46EF9403FE72214E32BC60F9950EC99EFA855729ED06F2D826B2182F22A60476 + B892E2CC8B0EF5D8157BA27DE365FB1761D37B67E8634F40929089A02447846E + 4EEC80084E3A41044865B5E6CBE8A661FE40EA901C2490C1392F391436AEB0A1 + 59E8890AE4AC1515445E590DE8C54CCBE272E9A037AC614AD9498DADC0C2E557 + 52F88F24DE03539C0BAD687CB6E7169AF8A55CA2812D2472E6B37453E3C9107B + A2E317B4FF8BD73F1F05B79EDD6E206B194AF11A60BC08C96986CD4DBA94FD59 + C96364F1E5F241A5A377B9AD5EF60A95BF60B3AC0484B3F8972B584F50B2C125 + 76B2EBC98EC09D5CA4FDE16452E708AB379E9A4DCEB27FB23070CBF814721E78 + A4301052B2EAAEF6A5481F6D3B7E31A72FF72877E6CFC6224788D4E115256728 + 0D3C72319E7D32DB48AFC21358C9168FA8A41290F0B59D5C04ACED701D915D52 + 1B372B2A6C00F9E7909BE5DF5D9B9045BF6525B1117672CDED0F0F3A9C4CEA0A + 2C75195672D06CBEFE75B673D0B46E4C0A09793E5FB5B3934AEDFF91EAD5F2E0 + 1C7A70E51E52D96C42E8D01159094BC8FF18066607899295D6A09C9994BB73F4 + F147259504C8EC207225862C7BC3E1779898CC07B637B2A5F3B7802C1CB7EB50 + BD860448FB52661C749868500FF6B8D91C1B404C2E44734503BF0CCC862AF27B + F1DCF5F94AC9B757CE9965F4FE6D5CEEF1BBF9C861C46E29160F5590F03C15DD + 7C952F35CADD8506AED49A21B389210DE5FDDBD22B0C598772C5ACCFF9A3EBB7 + 774673D36899052177C92E207BA2D2FC41A3AD0292AD0268D0F8000925482BA8 + CB49F305664CDD52CA260564B3632564F4B67C2317B6F8488EF21DA95D555C18 + 430EFA07B93D3C85C94A4FB4DFA9013B1FA7CFBE640044D0A052860CDE39AEFC + BA8DCED8EE9A8214AFA4978AD9297F23E4737439788F05C4243A3C880E13CCAE + AEDE4BDE393A488E5A2ABB270B252F011DEDEF8F12256959C8B171C136D42233 + 7960B539E4CD3660CC0E824D0169596559E629F18DF6A0B20B43EE0423959FFF + 31E7ADF2EB9F9B10CD286DDA5D7C29AB71BF2C860423B4544BD97356C4AB3474 + 0B6C9F1AC0B8831874A7E286C08320388B2E6B58C04ACEFCD11D3908690C89D6 + 9C72209A802341AE2D3C1892AFB672A719E5013B1D2E7581923B697C3C8DDEF5 + 30B0D3E971176D4C3AF24B595C02BC61E175407E1E91CD9D1FA5A450F28FE171 + A0191F2FA8A0A2D1418394CBBADA031190BCACA1FC7CC27604E53BD60CD9E229 + 36A8A1A5408AFF0EE4080E72358C727BF803F7042C7E1B0745466D499F4D5012 + A1377A67C5B340AB3B3E22A4026C472CE60A3DA9230BF5CB2AB4ACCAA646E512 + DF9AC1954CF6F24FCA039047D90D985623E40A41C90FCA5EFDBC327E994FE119 + 045F3E67054F0BDDE483ABB937022547EF8ACD30CA444939324FC3922E0DCB0D + 9FB347A288871713EE747BE173331D59495193B5EC5A5EFC221A1D3EFAD148A4 + 44F0D893C6A108D5B4D009E161577B99CF8BC81A629FAD2C0164FF7BC7D0A8D9 + D368510FDD283E6C27DA1D8192C8F919C6F65718D22708B9A4B2B20B196E25C3 + 25A9C2ABCAD96AC2378014B876F8096BD92E6496406281AE8580A4DF0ED57B06 + 29B59DBCF64A24CD410557812AFDD8CAB2884096D3B68C9E28CED8FF5E763DB4 + BCF608B9D1A0AC3E22F61E7864603687071C2F403AFC1625E574AC61F9B288E8 + 64C3AD41E2D50F293D63D4B50A31B700AAE19A6EF17604A7A4AC0FB1F9578FE3 + 5B18EF3731212A8B97EAA4A5EA0B8D9E754497BFFF32399B2DA6F74C42E4404A + 6EA6807968A0C5218BEAC14706068F5ECFB5F9A08CCF87BD50E979E018359CFF + 6997204377D41B45947F40566F5DE404D4CEB45E66D5A56C7EBDEBB7E295C4F9 + 9C2949DB634EB5284A38327941ADCCBC8667E9F52F7ECE90F72CB31A528D50F2 + B9A974C8824907D3919D8034905B5B05892D55CB43F5967DBA9A00592A45787D + 509F38B8DB5D33A3E4813141F9C0E55B925479489CD2A0625CCC6E7FBF86CC81 + ED490B680D12F305D2B3FF62127373D82A974E325B11941416814C08B9606D59 + 382EA8D17C24335DC95E961D44C8E70849E54B091D4E4202A951828C6AE9F44F + 4DBF5A116B950C746CCC7679A7F2291A2E69B446C313F928DA11487964679282 + 8CDDD6B67D4248427FB22B642515A428D98BBABD59D8B8AEB5754CCEE80C494C + 890E5823D9D0D52C6EA8D1F434F1D419550752C425BDDAB6B309ED726DC58333 + 4FE132AA65454EDD2947FB82473323EB559EB4ADD9310A49F0AAA27B96879257 + ACDCDFD9D046AAF990023B395FFC7C45825EBEE9545495D1D1D1403E97F8A643 + 8DCA9FC9F6ACCA44BA739A90353A0E2AF942513E240AECFFFBAC76D7D22F155F + 183783347B1F1E2442066B87D705F2E1A96354622496327BF0BB4B3C08905CCD + 8783EBF77766B76E476A979A7632AA891206EF4ADFF6A324E7DF94BDB5414492 + 230835DAD127E5036A4481CB820F93777570B099D5EE52FC837B8F5354B2D533 + 16BBA61C7B923C3378D02939A2E95555E97998DA1C9F97A3201F92A7B3D55BD7 + 4CC6664C0FEDA43FD53CAEA8F8D385BEA56B0E94C2E776603B42625C6A58A3E4 + 348192C9CAFCA5760C84DCAA82AF7C71B3CB25EBCF2ED8FD96CBB9B649A92626 + 9176E8599A78AFFA761DD8A22117466F2ECFFE9A72FA19DA889034B86D27670D + D243CE410DFA89344E891D091D50727C2376EA91A2FCEF83494235943F23CFE0 + D03958F9A5258064A754AE615FBB0C871C20FB3704247A2221572C7E732E0CC0 + 66A1C15118A1E4DB17BF28514ACA29949DF9243165F26B7CA7A815D4AEC0E5DB + 0796C894A0AC47CFA8D1438EA0F2FF8956671C5CD5EDADB1ED6A21954FAB84A5 + B79DD24BF0AADF8B161B41E96551E2D0C5B8649E82647307D72F582C2E19F453 + 6DD9FA699E62F0072F74FDF6010DE5069C2D0EB702DE43317CB9B66BABF64DC8 + 1A965343350253550D43D3CD90F17995E5D85A3251EA2DAA8AC2F267835BB66F + 124EE97E460AB94ABFF1169F61DA2EAD9ACD2489B5336754A08AD258F219B9D0 + B696F4B8D05992A51A58CE679AA27CF45E5E0A4FC649D5E019B1433DF99C21DB + 246DA0A78754E3AA61EA42723A4DE2345952695D696DEC4FD6AF76BB4DA26479 + C35E966DAD9AD162B436D86EFAE9AF8C9A94E4C29044BF698CF59E7104917AE7 + 41D87456997C8665783930767956BEB81DBE7A1072EFDA536E5DCB6D0CE8F499 + F2AA2404047755DBD7A31912C9B1BF75C9106C1603B2BC616C90A77365D51E11 + 32D983BDB19F9C4245EC9AA63CB4427A191CE06809061FE2BE773D30C03DF920 + 4FED1B357CA8A08551BE65C8D5B3ACBB2DEE564E97ACFDAAA42D61838FDA6930 + 355A06D578266F6B66997593BA5CA236E45546532BAD0B0DF65CD4E02A67B497 + 8BDB5DEA82C006249F6E24A7D34049B9ABC025A8CF90BBEC1F943814979344CF + 60DDE8C9C1494108783E55A7AEAB603A496DF3620DC5F3BF591C9D1CF4A9F567 + 57CA3C0FF03ED986A63C50DB2E3DF31CF643FB04D93D9731D9CB27F34D6C7F1A + 1C5167AF51DB1AA29A0862B86467CDDCFD885A6D3751D2B51534EB33DE3DFDE2 + 6607829655E8ED0F1E255B6002318A829888C31ED3A0E68DC7E024C17F96CC07 + 2DBD32BACC5E8DA5AFC59C351696A3EFF050B5095053B6400D9C51CB9376D537 + 56BEEBA32091857EA7696B0C9CA7BC685076FF72786B172DB6FB694A086567DE + BC87962B00890E54CB6B0483F35C4BAA929311C7050916ED3AA4ED20E2DD31CF + 92B51D034C3B98AA9CBB385E4A288926FAF483F4E94357959E7C97FA059BD2D7 + A85D92F3910690054E758392AB3F25EBF41FE9C2876BE008F6A83AB264B1F5AB + 5F94B0B985B29FBAADDBED9CB1DBC76ED7E21BB95220AD8CA5AFD201293ADBD3 + F2109F746A398AB53C249AF2E9445095B3940042E26D2CFBB06C63FBC6A150D2 + 72520B8762327CF1C3675308A85B0376E9AD5279C0C67ACF3C69D8294BDFD97C + 59B775FA6FF9558FA6AD9966B047953DA9A17164F09C502205C9FE08C27E3963 + F98DEF0599DCB0FC1A8DA17F6CB16FD578C8A1023E29F68065D5B01990087A5A + 568DDB0516C2769AE7383EB37A9B25FFD1363E05741CED62C621D8849A475D82 + 3AEC8E77D9ECE52057DD7CFDE3CF236F6DFCC7EBC78C0D9705A4724678562FB4 + 009EF7CA6CACAF92327EA317F9B095C10EA6DC362CDB9AFA2CBBC98CC91EC2A8 + 4E91E40FBE176483CB3D7EF9795AC7C517F36A1C8A1D0AC28BE53CD972B31019 + 07B920189F52C453B46DDCB67180C35796830ED0B0030D3DB3AD8FCDD9F41E35 + 38E3FAEA08AAAC5198448B9AFC3036F4C886E5EF3DD80A974E0EEE4F6D2BFBB6 + BD111F1ADFF00CC5D7938CCC4AEEAA1A76A98CB0E15ED905F6E9705FD28FB8E5 + EF3F551A7B847B5E9CD47A6FA757DE97421D8AB35E5D71C3B298C73C0F0C83E1 + C73D84F1871DD0586BDFF11D030AE4A5E2099995C7D0E0ACFCF58E430C02E6FC + 8D6353E7CE174A3E11ACC9C1E45F6765BE4FDB060FA21F2A8F25FAF42A0F8D87 + C9DB847C274A0E3E0437C8B6EE7B1FD1DD8577E074B8D261FF58B9ADE2A1CEA5 + 4F8F6CE8B3FDD5504D2F87628335350EF74A2A54AD1DFEE44468A6546F78C71B + 1D1068FECEB90B1C9DE3CBDAB203D2E4E19DBFA76F0EA1F37263679A79C47063 + BEC2C4D0A45397969E2E2FFEF07AF44D928E6D0852654FEA9367180BEFA98257 + 571E9B136ADDAD9CC3F3A7CE2EB47D5BCEEDE4B38DBEFCF93E9F7CBB88EB6CD8 + 50D3DF115B1B093FFC76CD5AED1FF4A44BC5E4D0453819D0B970188F007198A2 + CD86D8970A9DA1BBB171695649BB208FEF6EA4DFEE483A258698AD2FFDFABEA2 + A40F9A273FCCB6E65C9EF0841A3CF9144AD6CBA33E50126EDD50EA59099F0C7D + F213DF4AB479CED24B3FDF971FCAC98D8E350379D77B0C5FEC9830C1AF1765F2 + 0D3D8DAF667B6A3A795E2A6405E95217EDCA1296B321BB04CFF6FC812AA91BCD + 5B4DCD9B6C3D1DB9B1D40C524AFDF59D197C079D359F5F286868AC06E4EA06A2 + 6406A5F4C9EB6348E773AA86FD50D92D21D10F2928083A02F3A720E70D5A118E + 2F5E7F2FDC545A77B2FFEE4851A6BA97E6AB3F949067365F23C2FB9E7E7855B2 + 5236A3AB8B36789A9DA44BB611907D9F2103797C77E95F9148444CA9614AA9DC + AF3C3FF793B719A52F4D61733FD94A6732264FCDEB132690C388E73C9B5549AB + 91EA98F2A7E191E3F91EBFB17BDE3E5FA7CA28EED3850B2DB2F8EE99FC5509A9 + 2B2014E90FAC2F3E4A64D2A8BEE60FA24A4BD7E89B1F77F658F3F4F4EEB0520D + 527BE04077E9087DD37679C33B946D7C9DDAFA75A3F71ABCF8EB8633193E3E7D + 28CF3012A10897AC76BDFF0ADA2228493FD1F0FB4DF6EF9CB7B4BB6C3CD7A932 + 2B79A493AB8DBA3DAEB54082B752411A8591ACAD4B8C64AA41A5B52C6349805C + FD53BFC3892EC7C79346A90D4AC86F324EBE7F9CE0921D5E219F0348D457B6D2 + 0523942443FA43F6F01F5E27748FD0F558CD2D5BF326F7C9A272F66F4378ABC3 + BCCA525C9CEF1B7DFE5325932DEF589758578A50EA86AF1A9D4E2835B1563756 + B5CC2AA95CDDBCE254FCAB6D49ED8139AF17A91829E1CD91EECE85D0ABAD4FAF + 0FF8EC8F5F37D099A51CB2291298A7887DB21290F2C30ED4EA850D7D7D869049 + 4B5395C97E4BFF1F16F00D78D0D258546A62127752CD6E9E6BAD70A123B57C00 + 4624F5BED125DDDE6BBEA15DBCCB05BE5396BEF3E0BCB235862DE9CF9AEF3596 + B0927EDD00F9EA0FBF3EF9D43A5283841F50B56B74229BBB617928D781AEFCB3 + FC8310ADB0F3DD6BEBCCC5FD5AB0E2867660B64ADD20D9B24ADD22192C6AC45A + 616B02C3D6840D4056F259A1435E3299536A88DF20A007A6A2835ED917240934 + FC2E3F1260835232F245FAB5D0C86E4DE8C421D13F612169E3B1D9F5FC9AD616 + 2615D6ECD27D6CFDEB1DF8E8018B59A564CAE746DC4227256923E5832B027FBC + 1FBD480EF6ADF9777CEAEB2494A4EF90B117464AAF2E29C6172257AF0FDE246A + B17FFB23CDDC9CD70432917C687572683C303B5CA1EB1F1C4132FDDB2AFFE7D5 + 252E075DEF37E1F312F25D4FF6E52B2B4F0208A44CA4BA1C96A45542AAE09219 + 7A71E729C6EC30D28DFBA743C87CF886DF8C1FA5CDFFA1D21AC14D3E09DB636F + DFEA3923FCD7101D329B8CC84062EE5EF4417C10B78B9DA9DA68E1A71756AAED + 0C55E505E58E6D134D7C63D4E8FE7DE57A58D7939672B1B648AA0F7C212FC051 + 0B8A5E67DA41D461E467C9DFCA98CEF9CD10617CEB87A10746C210581A0DCE8B + 740BDFB5FE75C328CD2719D2B24302435202846CF004F6BE1FDF7B7D093D5F67 + 292E2837AACB7099F47295CB43B52B77F56B8C495D13AD6E29239FB4FBC71BEA + 6EB3541C7B742C294A1AC27C1A226DEFB4FE80352C4A626D0D32E69106094638 + 0289B9BB5C5294D4FCC182BD835EAD5B65ADCE6F052D7675D72EC20F4908B942 + 597C03AB68108BA84C9815411A1D57213AA2ED9A2B8F4930877EC590A463EAC3 + 5BDFBE153465FD7FEE5954E3B7C840B69B7F481E66F5B875CCD83242A7F73D72 + 2E2D31562B97A45E67BA34FCE04903C21F35F9E8E7B17A5943349B709569FB80 + A8CC638993D57DA04212F8A455407A65B1AEEA3656BC60B4F80345DC470B17B1 + FB0A3685F9E4E918FBD8423925AB161380FCF186DBAC01F0644DC9E15B730139 + E4875F174EA33586506EB8D82549A520FA00AD261BFCD78A7AC6E4BFAB322087 + 3470226AFBE32B93D50D03D48DAB64604915BDBAE9164F13DDFC8740660E1548 + 52678E698342A43CEB19D7FF44F051DBC90AB235ED1C56428DCB8821B1C0EBEC + DBA264423CB68C3EA0ED233AFCFAE2905DB9A755293AA82A8EF29C5D3BF69C9C + 38595F4DE26FA8A169CAFC465BFA02933BEB4A0E195DCC672FF6A1BA431E914D + 607DA77CF13A8024BC7996FBF3C3E8704F5A4380447283B59590977A7DB0E103 + DAF039DAE9F0A991532BFB98EACA6F3282F29C87F0A58A66949313F9DE0E8993 + F52F13B509F9166F9A923C277EE401796082DC715201F6912B4D6CAEC96DDA05 + B2D7E7E78DDC6B7EF4EE9F0BA70132106D5B5FD284E414B4813E60735F69B0A1 + 6F4AC55FEACCE575726BD8681373D06445C397ED09A7C24CD4BF9EACF031AC51 + 90994313E36958F840D21F1CA1F8F8111BD7EBFDFB2C0B490269EB7D982F147F + 44836AE8EDC1869066F75CA5028A915D9287E1FB87EF1FD3FB2A99D759AB7227 + 1A66F9D04BDD73070C7EE91A08069F368942ABDE489FE143B54A9E4A7935F54A + CDFB9D4C4FE1901289DCB63FE36E75DBC937337C7A91ADBFD5CE74BFF41D742B + 6EDA1A7F03DF64D235DF77B20EA953B2ABFE63DDB2DA924C051E89C8A5A86BAF + 08910CEAB6194CA4DF0354BFA311C95728D9041933E4F8298FD8D405162903EB + 96EBE67EF4DF11686CF8170BC9B6DE24408E26BA55B3860E194224B7B525656D + F6487A3166EC8BBFA217F2ED94B1B9660F1E0120C68FDCE81030A437BD97E157 + 99C100195CAA7AD7652399AEFD22435712D1ED886DD4E3742A9F8A8F58BFD6C9 + 84B89866FB3B40C60801E9459FAFA24963E4A25A74287E377C2D0B69F3341DB7 + AB4EEE910B6D73F5527E96028F04564701F18053558C2234E36316751B50CAF0 + 317FF17726251DC98AF691EFAC8BDF50EA37D31E0FA4C5DA0A666FFDA645DBDF + 907F18C43616C1CDF7AF19BD93138C82D43239436E1F8B6ED18B7C6F9757B796 + A72DA7CF167FA6737E5F39D08180D8B1DC434848C32432618988A225696F32F4 + B2AB55D28A68DFF1C039DCC4A62E489BB5519D1B7A72CCA0193D95CB80C3D69B + 9EE6A7C785F9D1232F824F7E6D0A7B1246D0B55AFA167D7B6FECB7DD9E0DB925 + 2530E811AB35430268C8B2BD975BA003A0AD5FA8F431345754074DF0CEE0AFD7 + 993A4A02F21735F71B2A2E7AFD541E79659D4A34A469BE81E5A1E41DCAE7EBCA + 5D5FE03CF9353C81F40A3CFA1CCB6D9C44E7BD66787B759CB2BB26E01F52D898 + 492BFC61678C2D0B1CB7F04C2D435D2209BD330CA501EBA009BB9E838CAF6D68 + 6BFCC7341FF5CDAAD8B123358F564AE6AABB9928C80E14212125C6B60D8FD92C + BFDC8A3E6ECCFE56143C3FCB2BAB4FEE8E7F3968DD8C6581FBB44CC8AFB4B763 + BAFACB2899DEE4C30E33CA4C8B2552AA9E2715E40ABD4397BA20EFD36D549CBC + E997F651F7CC209BF532DEC1E69F288966B1836436F148DBB1DBC7BE396333DD + 5DBAFA2E2D5DFDE9B58BF5664C1FB2EBF71D43B4EBD251FD1F527F8AAAD528A1 + 0B5D0AA9A3E4D3FA7F3B63541D25FF35423BC453DC87EC7FF9E3CD7FB534D4DC + 49BE747DB438381A94EDCD7AB5DEE9FAD2181DF288E26747E01BD9A3D74E2D68 + 2BBA344B7BD1C27A2D73EB3939D4F8AFEE13A573BA9E325B77582CCD88AB03A9 + 85D9F333DA9B41EE7377BBBA99E402726CD87C9EB671F8B91B33A206CD0CF578 + 7DB496AC6D63B372D55DAA1E659213E990320B9BAEDE5E597AC1DEBBBA04B524 + 43F1DB9F4D7AB9B4F76A07F56D0DF5979CF51BBF3B140DA3CBBFD15F87E7675C + 378BEE3FDC7AB77E55BE1D74249332E90F3A171FE5465E04CA8BECD1A2243125 + C5E4F7098B83929CE4169E11460A376DBD1E1E547CE478FCCAC3DF8C71ECB17F + 92FFE7D8DC91BAD384F6B97E052A2AACDBCD6607AC24AA8D938D93642D7C76E3 + 5AF9C276EC06B2DD3FD2A464984FEF3EBDD3EEC8BC4F7F2EFD3C14901F905BFB + FA3FE786F6E8D82A55924CBB5E674AC8331CD6CEF662489B0C5D62BEF5A6840F + 237A6F3C729CCE5254EE82D01ED49486D2D0818765D60FB74E45A51448084B18 + 532FD338FFF64CAF3A8A622BEF03EEDC5898205F59B480E8AA827C7B9DFFE034 + FAE31CC5BB452D2040BE6995AA02B859AFC30A1279288E0492FB151B6C69F3A7 + 73B16DD64B76E178CFBC7C2EDE8DDA5FCD0DA51E4D29FE73FB4E6ABF414BFF53 + 792D572F141E333CD3DF73C307DB1FD93EB20D6F37ED1F712ABAE745B851EFB4 + F632F3FDBD9DECD2C4DC7C311356D428D98D4BC87E9F6F4C678B1C347A63265C + DB6023F996EBDB6C35DDCD3A3CE8F0BB7C7595CBADEFCEB1920B724549BA5C34 + E55F3A24E54E13559F97EEAF884A4BF8D16BEB7BD38FD2C168F80500AFCA1360 + 869EF8EDF61B69FC942568C98CFB1F7E55202ED28C4A3CD5AD2CD9DC64F0D0EC + 046BF308D6BE6A3A264F65F9F32FB9820CE95FF649966AE5AFF23A0A1AFE1DCF + 7F1BB867B87F3DC9E6A24F5CBD3BF049D997F9D9E0A6EFDF229692AF6FEC41D4 + 74EAD175BCC7D0D6FB0C9B9BE8A58DF81543AA721E811E2B06E324B4381B57B9 + 65F9EBF56321FD4F4F3FE1CE6B3975154A5E7DA3FEC5FF19ED919291EF253476 + 7B784CB37BE47DA6AAE28DA2D3EDE9EA3CBE99D81B8366DC3E91C2ADA13C1993 + 9A5655CAEE07DBFDEF83D116DB64F98F28332E2C4E41666FA6EDDE1C2F8701E8 + F9D246DB472E6ECBA482A8DFFE49E41FE8DEEA8F43D26139D09EF25A2E3C7451 + 51280CB57357769C6A7B4FB3376F7F943D9CF968BF27FB7B33BE597709D9BA5E + 79EA11D3BEF72A0A1C4BFE8DDED9439348289B429AAACABEA9BA51E9B02DF721 + B3EB2889223E3B78982FC7B71DBD93B798375A5B6EE43D00FB8737E567F26C6C + 157B987B4DDE4BA0C31B4E876DD5CD961EC9AE67E0A8E96C4FFE4EEDE8D5A600 + 69BB7F38DF0E17964233F2D5C4CB74BA7D6F5A455F9FFCEAD0C7444A4B0C5397 + F42FE05A2B4675E794491BBDC248298952F8F64970839736AABDC8F9D47EBFB5 + A5AA20B190F4CE9EB487B43D85A69FBA1ADEF8DF6BC813095011D992068789E1 + A8D47E26DC2FBB3800A8199F9544C422ADB816559247B8DBA26D8D9DD047FD98 + 26F169D469FEBF1D08CFBB28A600E467349D265D977D21E11417064894CCF7FA + EEC511CB88B2CB243DE6CAC9792A1D43C88D445D479F7C3594DC7A9FBA5AB0F7 + 72F87005C118D902F248A79119F8161FFBB1A944FBDFBF47EAC6C2D48BE5098F + A12B8EDD0ED0E962B7AEB7A775BCCC5A0679DFB70E58912926C916BDBCA70337 + 3386B26DB1211267785BCA1587F17C49C1A327E7971E133EB753CCB0B669FE14 + C8777BFA92D694F67E306E7E6E4CE3031DC3DFBFD7EC9ED85098F60F57EFA493 + 9B0D580698DC4C10DB503D0473F82AA7CB7C0CC523868AD1DA16049253F19FEB + 5031A53C5747E905EC4C56F26D5478380AE9C5F0CC17C36FBCDD4D3145F1A995 + 4D0EBE011DBFEC78794DABBEEF3BBC41C32EDC9013A64DCF01A0665FBF7F6FFF + FB7893319E1E2E5FE2359CAFDF6AA6F17EC6D212ECCD023B4F717ADA0DBD69FC + 8D5C52FCE7457114F5D7EC9EB7F774F294BD4A8F487CF26DD191B38FA7EC6D0A + 376DE9F9A577A1B71CE6057A50B8036A1C1E1048C30E742C9A2E5D1D2EDDD464 + DF031203338E102BE9E4EEFBCD78393EBEBB58529FEC7DCFA641DEBCF1F5B527 + 75BDB8E79D76F435E9FE234D3333EAA6088F0B6B0925A57084B6A7B2B306A8BD + 7719F9A06DC981C5D880584C2357144DDFCFFD456F3AA835DC4A226D630AA4F2 + 5FE74B1EEBC5B704A48302290731B2571DF45EAC2DC392D3D71271C4EABF8FA5 + A77B9A6E5CF7022B19A0EA490A3EBF768359869F37F2FBDE1FE797AC9BB23388 + 0F821570938475680B2C565B6A8B159346F6999A1463EA42AA35F0662843D220 + F25E5C5B0F457A4F730CD5DA68473C10DD4B0D9717734DA7AFD2140E3723F42B + 18497B0BF9C146B99F50943D19F9718F25C649FBB357F1B5958C5832C85B6CDF + CB5BF577172B209428C5AA72B41A9941424A679AA25FD247EBE8FD5AE93FD305 + 53A287738B7359FAD2D3FF428861EEDEC2F57BB571F5C82872A69125347DBFBA + DF12F1E5A7D3A956D63A83F9B7DC1B1075642A86866F949DC8DA411F1E5F4785 + 7AAF5EC14875A0E50B4B69AE419E0A317D15D6FB3C639742B9D89434CE9FE48A + 8B429A4125EBB42D836CCFE142B04A2E5ED3795691BA984DAE64E5799EF0B6EC + 49D74D2AC4FCC1FB44D948CEDA1D3E9C47A2D042539538992A488A7961E9DCA5 + 8661ABFED6D460EC3C924F26AA31D4C873FF3287E23DD3992F0E195972FC4305 + 29EF9EBC736BB8884582C5139E24DF406FFE8A31B515C48575195962DC2B1799 + 282C751EB07164C974552DCF3A282DD1C7350C232D6F86EBB774277EEE34331A + C879FA14754219F8D6EFE5C75BFD04316710A907BA6B724A2BCBEFC3F76BF707 + 235347C353FBAE7605884520C228782BD44E531B9AEB96EBF6D3C8496812B29F + 838C1325F55A9A18F97A8EB830CB940D95AB500CDF55640F8B38F805E9103AF3 + 0A3C3A988E36FEAF07B5829677E62A46A83834D758C27C084CB9C8377346813A + 06AD1605865272AE21365B8FF7701DFD4ECBB9619643DFA175EC5D85EDAE41CB + BD2827578E3A39B39D4636555EA33D2A5D7B00FDF3507500634CC636F9E250F8 + B96848DA9E8FDC0F9A9AC9053C6C0AB5C49821D6DC14BA8C2DEF74E9FC0EB5DB + 5C50625C058BC32B3F52D15D0BA9C5A9BE7A1993946102972F5415F0DE256AFC + 16FEC9E41685A407CC82281221D1DE9DF9F305B45F3F7DA89BBAE51D666C7987 + 5ADA54D8180C5C9AC9075ADE112197CE9D35F4169CB8640015ACA24278E54743 + 9590DAA569971463B8A4090D385C4DAAB11833F79130A4A8F0F64BE611852CA8 + 851C9A49F68A51DD90E54CA6F3255DC63B8C89E06849361580ACE38DCAD82D69 + EEAC2333576D3C3A003D67B84F0D070D8A7656CEE47CE9FFE68EFC64D870B9BF + 145D8D198F78366A714DA57CE7859174B91347E70D8294E19ACFF1FB1D70ACA9 + B081B94D4F6A6829DFB28E34979696424A0509B49ABDB954AA183977FC9F19D5 + 6E5981944B359592CE25A5DC9C8DBCE1C8377AE09B537C54A5AB2590CC63C390 + A6B3832DED456110AA05C8ED16B671EC57AEE3F62BD0DEED2795370059C5B630 + 47E029FCF3D1631ED58E229BBEE7590E1A245D2D8695C5673803C1DC23F7221F + D7AC7F1A62A8B91155A5D46209350A1BEA5E0B69B902E1A209A90D6E233FE28C + 8338DF038754994D20A9CB254B7973E6872ED325CB2AF5EA52A8CF92E7D31646 + 4754755133B768D656520EE5D68B3D07797CC1995E70C8F54FEB43C9BD7B442B + 8968E6E38EAB4DF7F3DD19B2E51DCBAA5A74332D4BED8D8D4300DA5935DB6A18 + A9AEAB93ABD47AC057CE698F8E53A7256A97D899CD9085B7924949A26240AAD2 + 3859F63A33926E4439A30DDE9B29361221A120EC5CC197CCB292623B09160D51 + 2AC0BE80CF3B7E7D7E3F36244A317EF815CFE85C6BE65E5F2EDE70B5A7B9E1BF + 7F4D7D54B7B73F6B3E23D3811917466A945A8E6048FB4FCEE496F2E802D85A31 + 2A2B57F04EAF0A56D21F9002AECD138D998EFDB5A274E89EB8BC3E79A7DB0CF9 + C2A8A2466A6FBA36A894DCEC33D5E557A5661FFCC20CD24E1FE7B7066432777B + 50362C74D65A46A97EE18253BF2857279D04EBEF7E9EF0E75FE04206074D5E13 + A3E0316AE017545AA5F577D6A48D2CD50C5E42FFF3506AFFFC17A224E7495692 + 9087B8CE97BA48FBBDFEF369790585F0B8DA9FB195CFE325E77EB8181CEAF061 + AEFEC0B78A4FA28666AE30CD5DD3BD77943291BDE610E68312FFBF42DB542B21 + 9992218B496533E742FB4F2AD2A6E511A55B9A5F60F0498A76BE1006976133EB + 423221D7203045EAD13B6A85F9AAD6047E512AD6795E270DF1932FB480ACC058 + ED1C7E733B2B942225305949E59029D3E4B98B1466696FAE230098AF80FF4B49 + 836415812FF29E0F3C251FDD7BD31736FC54A935D3D64CC31B6356B8654A2AB6 + D71C23104B54BC71FA9314B8D0698946157570955A753FF9E293280761AC8ED4 + 9524263C757AAEA2CAEB1366B920AA4D85AE23181990295D8EF53FA62079753C + A7B7B6D75E7DF63E936B336D0D8FE15DFEA6A1917A4D1AF1055F707539F84EDB + C8432AE1E381A74EBF2153D4FDF427EA998B3C8237372ABDCA2EA98537332EA0 + 948AB966D69855EB459FA0B0C00A3965349A4AFBB3B9D9474FBF71BEE20DDD07 + 0A44668C74DCFBFD737655B08C696FD3BD774A851477EABC3C06523989B2D379 + E52D4C8E77CC3D73565C92E6A926877AE147D3C442444BE7B29996F23D823EE1 + 225511F28CA1610788AF1F32F8705DB1229911C1E7901EA061D14C4A9DF67C4F + FE698706AB675C9B0D1554DA86577EEA7C20A5887F80E8947E1216D55A43B3C8 + A9174841564722657D42A75CD2B42AAB8F0A74BB96B2577CC1063D253F832FF6 + 3FB6920E1C5B1956DFE0A3C5B92EE2306D1D33FB0FBBBCB76B9AE99E4369669C + 30C51BBCEEF3DD3592DEA754B9242A4A79BD53CC995F6017E11DEDABA997E3CE + F3F4DC005C04D79F5C6F292022DA05C69E49045BB392D1A683472E0511C4B71F + 99B992A24BF179A5E646459DC79B6BB4047BBBFD59772DCF9D191211AD7D833A + F3E70B544AEF7FCDE6B61F79996FB2C437AED21FEEAB55DC6DE44EB302E46623 + 72870CA2A7061F52E7C9C8B36AE43B6D5879A5E632FD75604E9B2FDCFE7C0EEB + EF8708ED1C215A51CA425A10EC3DEB80A924D26F0CC5757FADD729D3AF606532 + A13C854FAA27E9C85D3D66AAFBF66873A38B0C3F935F3A5240423AFECC385FA3 + 59D1DAD3B1E5AC6875CA92143E6CE64A31959AC63FCA3C70EC23DE8F22F6BE56 + 437FAD7A5A7798B137BDA53FC04FE91556DF04794AD6421AD8D3FAF222AA8F79 + 21EB491E040ACA90FE7E32D29F08FF36676691660FAA1D81177339F6A572C71A + 2971A5AA3A7AB340AC5C69514D91EF538F104279EAF4792E900AF8315CC8E06F + 09DE4CD27EF394EACB1F7CB29F26DCD3FAEA5BF5B50C2109EB43F8EBF521EAD9 + AADAF355FB0FFB96BE59A96B4F725F15752B9D3A06E15B5269B36706D5384582 + 9168D2574586E4042E352104A4C7E440A59C474FC3BE75ECA879C74C75B49779 + 34485DD35A387D98F29ADC6F4E5B92D54DF8081309E597D57DDDFECB20842B95 + 6D9EC62909823654AE24B9B5D0B575F831285175BDD2702854257AB42159BBB9 + D14C9646568A379702170559CBA7D288695D7586F51A7388DCC28FFD42F711D3 + BB7297BA9FFCF5949C491BE5D1ACC490520EDB473F3C2EC347EB4DCF0EAFAB97 + 8BA1F77F13445A1E177DAAC0448FD54A594F95C6F549F7E2A7F575FBD4F98EBF + A5A075D87E6F377355B505EF61538D9AEE71BCF894D7422888EFC54A53D63D67 + 5251F2A9AE9E8BE6C1F281FF099BCD97D5BE2C509CF4FF31AC9C39A59D4A725A + 31E683C9A7D454F44CCDA8020525574D979AADDC5CF767EA011703A8F656FDDA + E7F32B501D2ABDD082BFCC2393045CED09335DCCB4206E7ECDCCA48655D3C588 + 4A17ACD5904B1B35058F9A2FA73F6A4B7BEAD600B3591366CAA3FB266D944256 + 6D54236AA540905926067D551A0E4A9B409BE9A85187D006F90557DF4589E0A2 + 7E35E14379AA96A13702EBC3E71E4BF877C300E25F4CF8102322FA84CD4AD849 + D34520AC56493D89F72888AB2877317BCA94F6C5571F9A4DA32C86E27796934B + 2E30D553332019824C4FFFAA1D7C6A4FE722B3D3CECC1E99AD8BFDD587FA23CD + B467B47CF5A1F61031ADDE58E0ABCD47CD7FA23D140D95FC6AF38499BCCF77E5 + E6098A5B7D6D32E000FD296A868E75D8F80E4FDAE970E8B2E2B3F64C344C66D0 + F3C380DA2295DC4735E7386A5A131DFDAF361A60F6E8B101B54FECFCCBF280F4 + D1A8483FD9ACF6E433391B8DB40F3391FF2AEB5F17A83B97FECBE2FFABC1D031 + 259015D4CEDB939FD6394D413BAB4FE735D9BFEE4A6001A95FED934765319934 + 3D34555DD6A98950F7C77F532D75CEA32C69D076FBA9B33D1646CA5608512F9F + 487ECBE0835E0B337C221762D933EA5C17CCE9A589A3F4D1AA4819701466C55F + 20978F8AF8F077B22699241FA9BF8F3C27193F820B05FAE828F25B2988CBF151 + 9C5873A0CF1943A19CDDCA7B587BF13B1C9D2FA2FB2746E5EDAB0FBF4A9C4C1F + E2E3439EF715EF6B4954A79D9EF9CA749AEC6475EA71A23EA5EA5D3BBF763843 + FF97B337FE5F7BD7135BE575E5CF25A9E3924A03D8F23FD088A85667516BB01C + 8F27B1149819B9C048F5826816291AA91DA116A2B240A8A29A45562CAA4491E5 + 0551612AA4D9147533A091230DA990AA26929BB11CC4547413B16061FC87E115 + 7731885801F7FCBFF7FBDE7BC62430DC48F7F8F9FBEE3DFFEEEF9CCFF8E1FBEE + B9971FC7FC68F8BBF3FC718760703A2F78A905479C03C6E0CE28E5F6FCCFE745 + 63D4EFCA7FF388ACC2E1C08E90FC08A501053F9F67B1AE10B427E3CF088DDEA4 + ACA0DAE89B404EC3DFBC180B39B9C81D62113995B95B61B95598BF08ACF2AB23 + A055F1E7DF00B02A7EFBC628467FFB223F0CFE989406E49FA2DF4AE1BCD6CFEF + 9B3FFF46B261017DA67AFEC8FFED7B93B5C9F511C94E88477E3E258A49F0702B + 6CADFC4F7969DE28254F1FE4A3E8576F3C5245408EBDF0118CCDE18BBF60EEB5 + 8FC6E085CF009B2CB0DB9C5D5EFB482E643AA717166D44AD15D89F3B6A03F2C7 + 574700D1CC3D3F82A890A80B206D6D48E7858F9E1F21D8F8922890E6E8EF6F62 + 684B87D4C990B9D8142D0A855D70E0E0BA73AF7D268EE752276A8EB7A0ABF147 + AECAFDD5DF8D204C7E5D0569881CA831425C6EBFFA19B05C6D5930F2C2EF463C + 4CE18D68DC575909D4ABDC4C789536891D011D54743F1F63C9082700C2ABF0EC + 8823BE5A635439CC7DA620374BE155DA5F953606BCA5DB02CB96ABB2EFAA7CCB + 97B678C33B9553035859376D5517A278CB9DD98EAEE6D6F4AA14997571F8A74A + 97403C8A4447E02AE8A457BD13D69DD2D24C405DC5C754AD980035DC798B41D2 + F9F6F7E32501641DBA5704CA6DE6D54C3750686DD0F271FFF3FD4EC0B13AB9A7 + 6DBEA902354C4E5E3AF9D669026177AAEC7E6734B8AF41984BC5DC190D3AEF5B + A08A2F6981A48CA120483E8867637AA48687F4085E6B7664DDD7B06A6A29C8C5 + 814518E0DB4004872C622C02303BE265EE805A313B95E35D5EAD6206374DF5DB + A723FC439D33B058EFD638A96C0052B1B7625C200DE2494D27489F4DF5E29E44 + 595B1A097122C81B3048D7416B692712F6E465CA37065395445CB553A9332B52 + 75D76C906A04AEE61E94FA1806A824ED41660CF2107211167344AEB6D6B44135 + 0231A95C457350BC38472C6F98BD04A52309C82A0DDEA8F6AAFD563AAD1815C1 + A0459FA8B57731982AE325FCA51CF4230712F9614FAFF3C93A17ED881DFE02E9 + E9A13B7C6432DB5C8CCAA2E0773DFA465D432A8F4D314F756A7AF80F87FF5FFF + FAF22C6C8EEC8CA50D997C5ED4EB175D42382F265AF13C294DCFC5D40F43BE28 + 0DE1848EBE8BB47C6896CFAD90B32BE85895F13EC63D2E8B9FB8D9B7EC3CD6E9 + 13D7E3C00D35E0BBB86337A0524902DAC88BED542B92F870C7769F0D1DA9962C + C74A1B51320BE3299FBBAE393B6E225D31D5C69BA5002423EA469CCF4A4AF845 + 682D3B94C9560FB5B27B6465E7D3F6B4FD6EBBCD27BF3869ECA1D7BC56F707B5 + 819D675BD96EBF1B453100DF6C340DC9BD256E55116A5970872DB3157AA11DDD + 957D4353CEF6EACA05D5B89B6C80AB0A77FD09D886AEB01DDCD8B6CCF5CD736D + 0B5D91DF8564F33F9255412E35865AC1A50F34E367B0E9A7B14BFDD5BEB2BE0C + B5B00F0FFB917D7D68A91FAF5DD8A643CCE80AD8C3167F72DD4577610E01ABF3 + 47B162619FCB9A07D6C30EF4F380C4663F128C749509F6ADE824193C06C2E8DC + 2EA2EB5DE17F6FBEFCC99D5180A1F7817662FEEEBFFDE87A5703F1D136C48D2E + 68743586C8423ABC816F17F31A881D1A43FF4E33C7071AF33F586A000345AF88 + 75E647D787DE7FB9FF3A747144A8CD310CD1B3BA0E4304BE313F2A4214030F72 + 7D485384E3A373491D3EDBA5F05FA3F3DD776896A9EB83B50E9A42BA79676DE0 + E5C67CF7228CCFAFC1246DC745F339071A300FDD8B938D796CCEAF75607F9676 + D31BE599B279E4F15C154F10E277374633DFBD5B2A69751AAB7B77D72777D0A0 + AB015D9FF0E6CF5DC009829B2FC3078C43A620310DB4F4E90374828ABB6F86FF + D405704CB195106D3BC6DBA721685618D83D2B1C64CD76AC7574DF610DB11E67 + E8480766487F7416263FC0E0D413EF82324060D6F8BF681DD00D8B1DE8197DE0 + EDE66E9E049D1DBF79A77B91C645C9E8EC38823C731CF89BAE726F4567808478 + 3565372256A55DF773262A40C5F2788DD126531DE13BC7B5EA06BCE1ADFADDE9 + 38574E2214854E0AA2C4BC68C3F0AC61E0D92246AD57712A9ED49F70F05FF777 + 64531ADB36871E953C147A80F43C60CDDF94D6E20E366BFA506D431BEFBB2A33 + 75539E8E542CFECCEB1A408B37BDB50A2FEC83C7A1763FB47161679356C7DAD6 + CF15A3B13B9EFF7C2DD1EA10A06B95314C8772F098209F0D857DBC16712B9F49 + 2057599E08F77499E2D67BBEF449D654BA16E84234D337DDADEE0520B185C4CA + 29EAD60D139D4005F0F7B6262CEAD802CB5A44F76CE9E5D6D894F355CC486D24 + 6E374B98A6AF2C59051907BAA72A2CD731EE41189677A5A5BFD8BA64EF63FA4E + C5D77B7F52793FC87B5AFADE2AEF6D9B20F352CB479A091554F3A50B52C33F2E + E93B2DBED097BEAFF28984F22E0E864499F2F6AED1880EEBAB1753A1B8FF04F6 + 2E6D8AFAA69E44B744A7EC6EADE7C0CCFA49DC1F7811AEBCE52E5904B155A154 + 41C2D2A68495F8F1AEE9540C95A37695612B23738A882D20332706D9E8D24B83 + 0A6DB8275DFE5F9035A291B0A2559709532572C6FEC46B4B6AB413D440D22618 + D0A5C5CB425D8D784DFAA41399FC3F36E16B6C20A01AA992A875095E6F01687C + D2933CB472ACB10AC8CC8940EED8CCAAEC670A72CF1F79134BDEFA90B7BBA43D + 23B5211B48CA3E97DA2252B128705D9F6EE3A80ABE17A56A590E521DD81117AC + 2749B2C1AA76618F60938D182BF86BDD966C898250835D4D4BFA6A61BB669A86 + E4412E604DD572535382B0E7893D947A506D63563CA9BC956E0C2CEC19BE06C3 + D7F8C2BC61C0FB705C169D345DA5221DAE2FA17EF214BE0F887058CB3F18DF30 + C41EE3E01814BDC8AE5964161F5BA18287386CDED870D8021F161D0B6CD886F4 + 4093813D0FC30852E9DAFD4ED2F8589701E2FDE3B822D0C310DEB5FBAFC4360C + 7B85CBB05F1576B4E7D860B8CA30637BA57EAE7958C3E1AFE8C8AE8F6DA93EC4 + 35FBC84DFBC00BB5057C5C40FE8AEAD8326E7989445C68ACD2162DEE9BF52B9E + 978F7514104B12800C1678972FAED805AEAA35E266D26F458F103F822CD066C1 + BEB75FD164E8CF2455565945B11C89CB70ED25CC5874CC65D053CAE1A0B40819 + A42D25CA522B2DC5CA27B5C0DA542D25C2B1D69465C9028F499A3A195E3A032B + 70FA8C578F4901D18A54CA81D61AADC4BA2855590129DB8AAC15D74ED4B46A4A + 9AF036A15C79FBA7BD277FDAAB5CB20214E8B0BD527A7D72CA13B78246E1A5B7 + 4E03433C7E66A557FEF2674E2FFF757DFC2DC4DFBB72FAAD5E1293026DEB8D4C + EAA202F2B123AA675650F7B4FC590D1C22FEE98C0CD289B1CA1FEB6FF546F85E + BBA67F71AF9C1600D461EF2BE1A52FF363D5969A6742646240E605EA8ABC19F9 + E954CF85D43DF394403E594290742261FDC2776B6917126113B5153C21902007 + D2D1797F7CDB6F17E3F159800ADABF55C4004145FBE9C840B1601590FEAF5551 + 8E1404D1F9B5BB11FBFD6059F0EC280BF687A370BBA78ABBDE7F4C8A65AE9B21 + CB06B77FF3334DD16F7EE6D9D9FFAF7F8F206FF7DC067CE1B73514E96DE2F438 + 665661AD1E15DA459521B6414462A63DB68D19483DF7F83526284D55380470EE + 28E845286956DA8F491A92775241C2D1A0C1AFB721117027C0A17347CFF51C3A + 07472F51F312457D945874BD74F4DC211252D48780788AFC12F5892E91B90649 + 7714912F56C5FE25B580A8235FA6DF94211CE55074A7994CB29C64F836C20046 + 4C8F993051483DF2F048CAEAB745431F0FA58105D411A47008158E9EE3278E4E + 88C30D16C83828E4F0E507058D743404A93F3847CF85DA4F4613297EE8A9C4D0 + D36C628AB0F1BFBBD63F88743F74AE27FEC482FEC4B324543CB4995FD99836F9 + DBC0467C5C3B4840B6C257E7B59D23BABD07257C81FAECCF239D6E06A44F38F9 + B458323D16E7C85299CC24D9F41AF8FC95735AF4A2D2526D560BACD77471DB00 + D51946FF38EDD36F01F8EC5E6DEA92189FC67A040902C03EA92342B1B34D3B9D + 374C263CFDA3BC746A94EC3D61C13126A33A6068FE3CB2955AF354AA98D612D0 + FCD9E6527FF2F162CC443A368EF769788CCF54E3A61EB677C81730FD2214FA7D + 8B12DDFCC4362DB19D55929B8DE6BC04ACECD0E23B7F34595419B68DC9BB3FA9 + 7A7307D1146FE197572E1F9CF8C9BBE9D63AD8BA7259B67D3978D9B780A1B31B + 4902973D0C60B9E81CBCAC7BDD54BE0E4E3433AD1FEF90769396E10FBFA42376 + E91C603A8693369E9A40307A82F104F899B1C4BBFCAE3401C15E998827085F26 + B4AC8E7C625EE62DCAD8E3849CEFC9E14D6024078599444CF96097B241CE1576 + 6368C57BF8173A28544FDB667C1357ECEC6D104800C76EF0F5ACDC13F4A0F827 + E08AE9AA33159A6798B0A8A2738D3F65A88904066681202BCE0831A33E76565F + DE152226543866660145A1C4343128A7528A9584893C32886A32D0B1B313F180 + E7C453F8EFEA3F2471774CDAC0A7879E6560C2D6F3444D03C4B71E8E29DF67E1 + 98A9709357F4B10733C2960044508328224CFEB0CE0A36D0167B0ADF9B1B3BC1 + BB2DD1965187C74E1CBE40CD69380156254E02EC4BBDF87454D65D9AF0FEED3F + 4807D4D068FA84DF95CF96DFFE2177542A4ED4210B349869F714BE877E75F9FE + 89C3BAB67F0E2E1CA6A5F2CC00AF128031D2BD40AEA6917D010ED3F2FF0BD368 + 7081761E39C1DB8FA0118AC5016A5394E683CC2E10146A9335793BCCE302872E + 150A6324BC30AD57EC866F4A7105F0C1501B944A48C502AB999C58FFF3C38AB2 + 9678CC893AC78BB75FE84C2D1F3DC5750F7363BFD8A35AEC11E692029139AB05 + 6129E20EDF3C29933900E99CD093A18DCA4ADA5494A42D8E892EE13D9B19EA5B + 9E82779661EA1D3A11EE944C51E904D2547D4ACB67AD40E7A26C6E4B0255ED93 + 533E61E57D100B1C496D13BF09798F35C27F2C33C2533E99A5536288F964DF32 + F4D1F61FDCB2B92FDA3073B94F2201D2C0E158935CF49DA2D1DF610932FA4EC9 + 84DB3BA4D6B72C8EF8E83D76B08C0249033581954E71D42CB059B6A9F09E5B68 + 43485AB19FB20563135B028A36D650EFDEB57CA44EAA3A1EF2B23CD7F01EFFC2 + 01FD3D30EDBF1C74A320E2309B24F22DFF8CF99FB2FC364A55ABE0D5B0C6AD2A + 5474CD736A72623A703DBDFC8E13DEB4C09CAEFDBEF3DF8D8C0D9268E26F380B + D60D78388FDC829D8EBF2535416C2F20635CFECB15C2D720334A13A6941FC816 + 8420BDE649EB9EB8B6EB6AD2E0822E80E6EAA8A4AF26D1CA9D45D564A0BA93AA + 5FD7565EF85A6448159AD59369FD1968119A94B425356EA6EC256FF265456A16 + A78568457123B1602D81222E204D892508AFE16F0DBD14BF69D19B35156C9D94 + D52415F057ADCECE83F06B745FF5EA8356D48CAB20B7AD6E5BD5865DF19B3B2A + 50B62BB6A0F6922FA38E3011A4E20258DDA65F11123249B46A70234F182CDAE6 + 0C88B14947CD2D0B6C9E283B1B9D82A6874FA35BAD24241C9061B7A995AA3312 + B657B620DDA67AE6299AAE6E4B78160C40A2E3836A2A20C62B6CF3A449D16849 + 1A0E001D780E7C343B35567FCFA7B5137DF8D76C2567B6A37475DB877B952726 + A241BEB5ABA668B1FA7BD8AB8AE458878E793003494A14C42425C384038AC168 + AF9DD1BE57CE48A68E2A300452370389CD6CF67A347ECC7B127C850731A40F5D + 4955455D2CD47BF83A3C598A21B493579BADB5532DF8F089837C1AF4D503F9DC + 837A27E15484CF0224011050F0407671328CF4453778E06A82D6EF6037B1550F + EEA24D0A12667322EA9AE1EBCFE1959C02DF9F93E603C567181F38E0282025FE + 667AC07E4C8941AB4A6C45A1E826F60F2A8FAE661DBE01EDE9C1738FF554EAEA + 8ABBCE33F603CDBFAA58A25CD152021B83CC85BE1A20F77BC91B57D169BDDDF8 + ACBE121A6F5D3638BEC96AC2CDEAB502F90D290884F1B490CF8BE7A420D0F05A + BDA05CC7B5E2CE6AE73450EE79B460117BF495E0ADC6AE92A67A54E3617F0DF5 + 2C24D57D097BBC5E2638EB005B95019A943D56AA076368522C9994024A13AC18 + 504A10B111469B1620A62B0CDBD3066BF6366DB7399AA54CA62B1865B12780AE + DBDC515D25982E83AC33E43CF4DA5A4C6BD6961AFAFA48D87895A6810954FD14 + 578D0AB23FA657E5C665A61613C8C24C90505CAAC2F4B4F6B8EE744744EFAB28 + 7D29A52C77D586ACF51446789C8D9036A41DE986CD9565C2E91AD8945B5D471B + 59555D5A89FAC4403E45FAEA826C71ACD13307E98744C9713F7CA0C6A4A19D01 + 3E22CA0E64E2038B5871261E2EE5E736252737A970867D4596CADBA6616632BD + 6913410A281E5AD8E8277C57BC1BE2196D8A9AA34409ED90BCCEB1CC88581A1E + 6CE40A6FD260730240CF699AB1B1241A9884880526C3525887B01E80AEB4DA81 + 7BD4229EB1AB3449FBACB20A7F6340A2C3576FBA1D221097FAEC24FEF7D721B1 + 9AD4B4E095E2D644908CC087653A5C469662E0EDD640E0C6E2CE5B03A07C946F + 59973BF6916F10D8FD220C30842DEB0C11D6B73C5CDC49F22D0F0387B2E52190 + 39EBD27E21A8C802E41BCAA0C2B0EEE1A0946581DC869505EEEDBCB50B9D0658 + D805EB8889F7C809DC09EB8B406DE0ED7310C5FAE200693ED4349094C3D28D84 + 7833A181104072878618059A84F55B03049CB7270A0B641414262146D12D76B4 + 850D2830CD1DEA2DAF2FEE5AD0DD89762D085A04A9C8F5119948BE772D501DAC + EF5BB40B47E77CA27B20E3B020361CE83A1BD076427843E902AA2C320B078685 + 9D14352CA2001EF263E3AADB9D9CAE051E08DBE193A7FF1B24A1647725F07D98 + DA90E5059FC6FF2FC82F46056401991B159005646E54401690B951015940E646 + 056401991B159005646E54401690B951015940E646056401991B159005646E54 + 401690B951015940E646056401991B159005646E54401690B951015940E64605 + 6401991B159005646E54401690B951015940E646056401991B159005646E5440 + 1690B951015940E646056401991B159005646E54401690B951015940E6460564 + 01991B159005646E54401690B951015940E646056401991B159005646E544016 + 90B951015940E646056401991B159005646E54401690B951015940E646056401 + 991B159005646E54401690B951015940E646056401991B159005646E54401690 + B951015940E646056401991B159005646E54401690B951015940E64605640199 + 1B159005646E54401690B951015940E646056401991B159005646E54401690B9 + 51015940E646056401991B159005646E54401690B951015940E646056401991B + 159005646E54401690B9D15702E49F01D151EA2F0513EC9F0000000049454E44 + AE426082} + WaterMark.Image.Layout = ilTile + object Label1: TLabel + Left = 168 + Top = 344 + Width = 186 + Height = 13 + Caption = 'Haga click en Siguiente para continuar.' + end + object Label3: TLabel + Left = 168 + Top = 72 + Width = 364 + Height = 32 + Caption = + 'Este asistente le ayudar'#225' a cargar datos de ventas e inventario ' + + #13#10'desde ficheros EDI.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + end + object pageRutas: TJvWizardInteriorPage + Header.Title.Color = clNone + Header.Title.Text = 'Opciones de carga' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -16 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = + 'Indique cu'#225'les son los datos que desea cargar y el nombre y la r' + + 'uta de los ficheros EDI.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.AnchorPlacement = 8 + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -11 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + EnabledButtons = [bkStart, bkLast, bkBack, bkFinish, bkCancel, bkHelp] + object cxGroupBox1: TcxGroupBox + Left = 15 + Top = 84 + 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 = 121 + Width = 585 + object Label5: TLabel + Left = 28 + Top = 84 + Width = 103 + Height = 13 + Caption = 'Fichero ARTVEN.TXT:' + end + object Label4: TLabel + Left = 29 + Top = 57 + Width = 102 + Height = 13 + Caption = 'Fichero LUGVEN.TXT:' + end + object Label2: TLabel + Left = 28 + Top = 31 + Width = 103 + Height = 13 + Caption = 'Fichero CABVEN.TXT:' + end + object edtARTVEN: TJvFilenameEdit + Left = 140 + Top = 80 + Width = 420 + Height = 21 + AddQuotes = False + Filter = 'Ficheros de texto (*.TXT)|*.TXT' + DialogTitle = 'Buscar fichero de datos' + DirectInput = False + TabOrder = 2 + OnChange = edtARTVENChange + end + object edtLUGVEN: TJvFilenameEdit + Left = 140 + Top = 53 + Width = 420 + Height = 21 + AddQuotes = False + Filter = 'Ficheros de texto (*.TXT)|*.TXT' + DialogTitle = 'Buscar fichero de datos' + DirectInput = False + TabOrder = 1 + OnChange = edtLUGVENChange + end + object edtCABVEN: TJvFilenameEdit + Left = 140 + Top = 27 + Width = 420 + Height = 21 + AddQuotes = False + Filter = 'Ficheros de texto (*.TXT)|*.TXT' + DialogTitle = 'Buscar fichero de datos' + DirectInput = False + TabOrder = 0 + OnChange = edtCABVENChange + end + end + object cbVentas: TCheckBox + Left = 28 + Top = 82 + Width = 229 + Height = 17 + Caption = 'Cargar ficheros de datos relativos a ventas' + Checked = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + State = cbChecked + TabOrder = 0 + OnClick = cbVentasClick + end + object cxGroupBox2: TcxGroupBox + Left = 15 + Top = 219 + 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 + Height = 121 + Width = 585 + object Label8: TLabel + Left = 28 + Top = 84 + Width = 103 + Height = 13 + Caption = 'Fichero ARTVEN.TXT:' + Visible = False + end + object Label9: TLabel + Left = 29 + Top = 57 + Width = 102 + Height = 13 + Caption = 'Fichero LUGVEN.TXT:' + Visible = False + end + object Label10: TLabel + Left = 28 + Top = 31 + Width = 103 + Height = 13 + Caption = 'Fichero CABVEN.TXT:' + Visible = False + end + object JvFilenameEdit1: TJvFilenameEdit + Left = 140 + Top = 80 + Width = 420 + Height = 21 + AddQuotes = False + Filter = 'Ficheros de texto (*.TXT)|*.TXT' + DialogTitle = 'Buscar fichero de datos' + TabOrder = 2 + Visible = False + end + object JvFilenameEdit2: TJvFilenameEdit + Left = 140 + Top = 53 + Width = 420 + Height = 21 + AddQuotes = False + Filter = 'Ficheros de texto (*.TXT)|*.TXT' + DialogTitle = 'Buscar fichero de datos' + TabOrder = 1 + Visible = False + end + object JvFilenameEdit3: TJvFilenameEdit + Left = 140 + Top = 27 + Width = 420 + Height = 21 + AddQuotes = False + Filter = 'Ficheros de texto (*.TXT)|*.TXT' + DialogTitle = 'Buscar fichero de datos' + TabOrder = 0 + Visible = False + end + end + object cbInventario: TCheckBox + Left = 28 + Top = 218 + Width = 243 + Height = 17 + Caption = 'Cargar ficheros de datos relativos a inventario' + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 2 + end + end + object pagFinal: TJvWizardWelcomePage + Header.Height = 80 + Header.Title.Color = clNone + Header.Title.Text = 'Fin del asistente de carga de ficheros' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -19 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = + 'A continuaci'#243'n, el asistente copiar'#225' los ficheros en el servidor' + + ' y realizar'#225' la carga de los datos.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -13 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + Header.ShowDivider = False + EnabledButtons = [bkStart, bkLast, bkBack, bkNext, bkCancel, bkHelp] + VisibleButtons = [bkBack, bkFinish, bkCancel] + OnEnterPage = pagFinalEnterPage + OnPage = pagFinalPage + WaterMark.Image.Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D49484452000000A400 + 0002740803000000ABCA78750000000467414D410000AFC837058AE900000019 + 74455874536F6674776172650041646F626520496D616765526561647971C965 + 3C00000300504C5445D9E6FB7AA9F36DD1FF204AE7F5E696EAF1FEB0CBF782A8 + ED2253E9F2F6FF619AF344B9FEF5F9FF306AEDACEFFF4186F02C68EC4183F128 + 5AEB5A9BF47897CF8888AC9293CAB2CDF883ADF3DDE8FC173BE3377BEE3B81EF + C4D9F9ABC9F78FAED9F0CC55D2E1FA84B1F5E5EEFD2459EA5995F295B9F5CDDE + FAEAB017E6E6E67CA3EB3838433379EE7677AF6B6CC8C9DBF9C1D7F93B79F033 + B3FF61A0F6FBFDFF9CBDF6CACAD8EDF3FE90B6F5A1C0F797E5FF1538E2DADADD + 8DB4F5679DF2BCD2F999BCF692B5E6A8C7F7224FE755C3FFB9D1F9F9FBFFEFF5 + FF1C43E6BDD5F96CA0F283DBFF73A5F3A48E6189B1F5A1A2CB4789F1D6E5FB89 + B0EE3873EEA4C2F73371F04488F11B40E674A8F4E3EDFD1C47E74C8CF1A6C4F7 + 3373EF6FA1F3CBDDFABABAD4E1EBFD306EED4B538D5190F1336FEE92B8F5D4E3 + FB6995E2285EEA5491F29EC0F75B8AD74F8EF11430DE3E7CF0183EE567A5F6A0 + BDF2488CF298BAF62B64EB2C64ED5052B32C5EEBB3B3CC739CE04C90F389B4F5 + 2C6FEB508BE72458E73074ED1C4CE8C3FBFF245EED4E68B02863EA89B0F2A7A7 + D13775F05479C81434E0F1F1F12860ED76A6F32F64EC5494F2CFB2627CAFF570 + A4F35396F51E51E9E7F1FDD4D4E11843E69191A067A1F54F91F48567384B8AF1 + 5598F5CFE1FA5792F068A0F36663968DB2F28DB4F270A5F5E0EBFB2B61EC2864 + EEA4A4B94685F166A5E480A1D474A6F5E7EFFD6BA5F53C4788CCCCE2B8D1F750 + 94F5A7C8DA94A0B9CFDFFA1DA6FEB5D0F94B8EF4FDF9C3AEA6851B3EE35E96F1 + 5094F36BA2F42F6CEF2555E92F71EC96BCF594B7F22E74EBF9F9F992B8F26BA8 + F68CB2F5E2EDFB173DE3B5D0F7AEC9F7FFFFFF1D45E5C1C1D08183C1265BE8AB + B0D68CB8F52D6BEF488CF5478AF56DA4F45391F5BF870D72A2F386B7F0E2E2EB + 9ABAF6877C86265FE8D3E5FB1836E11D45E7356FED153DE44A8AF33475EDFDFD + FFFDFFFFFFFDFFD7E5FDB6CFF9FDFDFD6DA2F55DB4F26FC0F69AD7EF9ED5FDA6 + D7EBD7E9FBE5EDFBBFC3E0A2C4EBC2DFEFEDEDEE2F6FF1C7CFD7089CFF2553E7 + 6E9EF0B6CFF7585D9F570A585C000068FF4944415478DA9C9D0B5C8EF7FFFFDF + B7269548B753C826CDD9DA8C3692685F91219643D3886DAD259A464E992C879C + 8A2CAAA51921DF9C45DF21DF8528135F5B73D85862738859091559FABFDEEFCF + 75DDDDD9BE8FDFEFF7BFEEBAEFEBBAAFEBFE5CCFCFEB7DF87CAEB3E113C71B8E + 44FBD2633AE574226A1A1EA35EC47F739B12FD414DFF200C3F77FA99FAF1C8F0 + 98707AC3A9C889F0671ACCC79F1B8A4E13EDFFB9538E5B29263685FDD162B81F + 8DA01B8E37CC1762045A9DD649D6B4FDB49F94276F6F13AD347C22F349418211 + DFFF01368529C31F4209488D91C2F1F1C6E93704B3C829DDEFBF81F217454E45 + A7B9D6FB73DCE22632646EBF9E9F8ED8378295B9510792E2F69EA59C7E58D1A2 + D32202FFD689218921F78DD857B497CE3224002014C528C0F0983F96CE6DAA69 + F973A7162882611912752D2272D24028DD4F4AFC5B462E8E4C907FB4E8F92951 + CFBA8C2410E3F78DA037BFC34CA2914EFAEFCD955C7D96EE62E1A5A49BFBF7E6 + E10A97344C40925012AA7AAB3557D6F4D2719FA764F6748AA14EC305F2E59B49 + 37E6B6E839D289CDFD1C249BFBEC3E235CEA653B40F29752F6D45FEA9161054F + EE2BA2F994D3A9E91F4DC5966A50720275AEE695CA2701F9B37F6BD8DBAFC8E9 + F9D7F3902C241C63FE7038132B59EF6B81A4B07D90D2DC2D1D95503958DF77F4 + B33FB57E8314E6E94DED693243627ED1DEB44E775948470A8B637FA1B070C730 + 50C685B1AE70CBA6B99D48ECAD0C1EB3DDE9EF193552252F7FE9EA9FC63E79B7 + 2994FC85ECFFC84B81378FE0656A2979859A9250E267624A65219A422B130D2B + 6E9C1DB10F90EC92B41948716102E67823268E4B51C62786FC594AE8F473A7E1 + 74AB3547B86E122E4EBD914E5AEB09A7616EEA440249BF2C993BFCBBE16F3829 + 48938E37D827E3D89A30E47770CA915CB2FCC75E6DCF4A72DC38B97231143E7B + 2B342CB58F9B680F56A84990935494FFA11B9C9351B8C4B7B208918952E959C7 + 59E934E7092EBD148CB42426B7DF224D4913A6A372B9BD6C6E5E45CF347F13A5 + 0609A18B4EDF3AFBE67E40B28E13ED4B3785952E99B709F60853D14E123D0C39 + 34532099F2D648D21C87CCB5D41353D1699501C686EB4A2E222819935B3D63A4 + 9306694EB94FF9249CF2682B7FAA0BD997D8DA34F62763278E9A799B26EA2FFB + 38A2894B80AD32A699923DD388DDE656DAF6E7031A7C62F322D337A7C50E2648 + 49949C60469839651D250139404929432C5D8C37ACD807CA22629F6C0A47749C + B8C471E226C2DF8D79B409A6DF2441246BFA439C52D99BA4B263FF426912571F + C6920E594A2F0B6449CA1BE4A4412A29C52711172F8867499A23AD64A70B8957 + 4718FA8EE0E01E4B3F19DD2024EA242AD22621855F120248F925522527081E8E + B6220DF3BFC0D552EE4D1346BABBD49195A4CFFDFAFDBC5D77CA1B245A2A6B17 + 6D8A8D96A4C749C82465ECE4133FB2929281D8DC80D400D5075A08D614490959 + 53ECBD2C93742979F82F42D61D4ECF18F0B366EEC93368C9DCBCCEDB9F33B74A + E64570396644784BF10AB362E608AA03D9DD5B83D4FF58D6258E5296266509DA + DD7D2334C65A4833FB3E378CDD3E9685DCD767E93C8A4DA4AE6FFA96E890266B + 93A6E42F39685FD3FD4A4608E5765DC9744E411C379DF6B1B985512454EF6C74 + 1583C2080DFBBD193182F675D6A4FC1B25FF823B966EB7EA04484E4174D3EBCD + A75E9DB793290999302557BFE91A89824B688472CABD23F752E1E41384E82681 + CC2137E270AE2DDD278341918AA4C68E612ABE9765EE1B7174C0D156B75B298B + FC2576F63EE7AA889CDB6523867EBD749EF5624AFC65890649BA5B3ACAFF3E4A + EBB337D2D86921450EA70886646BEF1D491514EA27E6E6E0469A0C77A45D19F8 + 9D7565DDD52A3563B424047377EEA442876A5DE7BF5A1B880425877E0D9F9C9C + 48C7BF9E3B3CD57FA452D22F565C4937F7DEC82CBF3B1E0BFDB00EEA8C82D3B6 + EF4DF31F44B48795E48C2B695229C98CF83743E5B47E43734A5A16047B73556F + B7BA1DFBC65EE4CA3A62EE1DA9BF99AC0DC87DC64E4BE7BD4C931301F973BF45 + 646ABD4D6AB24F368D498F5C18B9D0AF8400797B466CCE5E2A1BC34AF6E5D4AB + E2264E09094462466BA24AD2FD9229F778B0B9E770F074E6C5D8E2FF537CB347 + C2DCC490B18993136F7E36F7E7EA1CCDDCFBB41097DE2415F52B33A6AFD9432D + 293C82ECA815F997D98DDC3B8842DFD294C4FC4E4B63D099029FB5BE02A5A644 + 3957360C7DB65C7C5D622C61AFA456B73181EAFE7D46D7BF1D8BA5A064327CF2 + E557DC136FF63A9F5B52C04A7296D083477A6A88EEA904C8A37E80243B78FDED + 9CBDAC2419AEFB83716F2C208F5F17632BCA363749975269C9CE3357BA4230C6 + 887D763CA3951213990AD1C2A148DC5DDDCB891806C7E4C87E396C6E2A23403A + 2E9A7C22B545D24B2D4BEC724C4A6A06F7F30764BFD931E903DED973D40FAB88 + 4EBDCDB1B99D03E7A6A16F5A1F1407C83B271D89952485685213C3AD2C5192F6 + B05743CA1147CBECD4EC569D16D1DEB2898C279465134983952546EE2D4BC1C7 + 807D626E2879E260AF452D4B3AFBD3A750D12FDDE4917E686268F50BAEB426BC + 2F20C5DE287DE8C4B11BC91729A888AB1C6B410CE9D5DA5A23D431C5E42CA5F4 + 2DF7B4944E256CA320D9E2ADFCD38666621D584BED9036140BA4F11CF6893252 + 4ABE42EE9F31A45D2B49E7FB4628CC1B8E1823FFA2B10131E9F5E17E47397264 + 05889C41BEC479129465294A49AFD6F51AB4E1B9379FB4BFDAFEE693064FDAFF + C21194A4D2EEDCA6D3C88FC3FBCD663345AA56B755BE9454C45D2370F108F36A + A31CDB47CB92E7745A6AB3EE15A283492F1DF5B243670D1D3A90A58B5FA295F1 + 472F675353571A7092FA6A4EC922F897B55A45130DD7FB7027E0B645FA80938E + 13AD5BDF02E3CD3635218957DBD7143919E86A0371CDD546868C117B73E7F9CD + 08DDDE805063D0AECC0E72029EF9444A1A4A29627B869CF7B26F6EF38248860C + 9CE88485E095C084B5E143FEC831FD66BB52FDBE27FB1EA5A27B44CBF9878176 + 36EEFBC8D0DAA968935D592C65452E75A46098B9CD7F5EFFCFFA442C707565E2 + 4D4CDEACB4AE5C4D46C9E77BC8E3FD39CBEE35BBB71C26B4537EA720D11946CA + C844D6C08B32795CD06FB3AD29BA9928E940CD7F9C52F1347FF98C91DCEB0CF3 + 6321FDB8B9664BA0AB06C847B680642504720607456F28098F8B252394B4F9D4 + BAB5E15CCDEB6818266381C4AB0DC078D5E9167BA6E44A4809AF66B78E8E008A + E6988199102C13940C3AD42E4D90791C1F7007A1142563EFE436FF717E4A72F8 + F2196513F3C435186E84DABBD087C606B8D2BF8916092456D0F93605A68434ED + 70CAD01AF976680A827F4D384386249EEB01C2C4C941F2413545ED2584A2D9DE + 3108BD48D9C0898886D73064995D200C1A8809700DC5BB002292CAD437291236 + 50F2CEC9790F87B85DF9B1E6ABA345410B91059C3448C8284AF6419F368BEA1F + 24EFA7035A2EBB476A0581C959FBB60012943F45C7745A4ADF65B536D47C9FAC + 472830130CECA13775C883E755122A49A6202EA24CCA01276002C1247FA461F2 + 474A600A5B3F3A2219908BEF2ECAA5E29B9F3D2D0A9A816497C78C6A1F0DBFF7 + E1F0DDC9904ACA65BC06ACE2A4F7D4B580DC943934361ADE403611ADA996116A + 42557CD6186E52B45F16518A37F5250FCEE6C9284169C96EA9EB68F602A99491 + 799B2B42C904489BC04594FB4E3D635151506764E93CC9079210240FF4A14DB1 + 593A244247153F23D92AD004895C7FBD24E22E6C1C542B25586A5E3FD783954C + 2A3142C9459CC496D1BD663C8B48A30C6446DDDEA44FC888B23643BA754F6FC4 + 9009AD17AD8CE83C94CD4D7DF2B4C40521F3E093B777D29313802489EF0829FF + D9416F2B86442E8F6697F59D81E6AB6E0B1C940CEFAC79BDE6567444925212A6 + 58C6889A90CADE089EDBB039C1E8A40CAF0D626DA5E4FC9CD83B44F35F6BBDA8 + 65F8F2406E81F3A86EE06C82B9FFCDA36C6F767C1E9FBD01C93C8B1BE6D86427 + AAFF9DE7DAEF29F9843BD109F713E48E37778C51E27F7A186EB62E4416822CDE + 31D3B87F4FC6F06654ABA51E3D2988468C059A10954B927119390D989FDE6848 + 4288CFE4B7171DCD8F98814E619E7F511EDC519313E97A538A45BA828414F9C2 + 38625F73D22053CA18D271219D33249F103A88AE30AB2D089E5973AB90D28D90 + 5294449F720EEFBF6CC6522B4C81232DD053142F3372D782828CCBE6A40372DB + 1EB7F15930F7512F300292CDAD5B9C373AD8274D9054A444E85D08C8D69C0163 + 8DE9B426D2AFDFF701F8D5EFCDDDABC5124A4F2CCB90E9C61248E94D4F89436F + CEB23925C96C75E59B7682A5B2269900034D1E490C7966F11D1A7FF0CBA93D8E + 7AD10C31771FD241D9250572C07C1D92FB42189492E23950F2DFBE33DA9FA300 + 9EF13B35FF9D5F582435C01D2C3DCEF59882A66137E95292E42111D2AE4C4BEA + A601B20AA4D6B560259D684DF7338BBD88426E4FAD78CA90B235C574C83F4279 + 79A25212D31C9FE88BE7B3C137CC164814099FAC7FD0172E19C084402421645A + 2C974AF41A9DFB8A68372B398043879C202747B99ED29F83D4181524F1EE9735 + DD0F26015294D47C52995AC364259BD2CC432D761FF45E7468B06A1A41B941F9 + 643F761C86FC900C02E993615A1FE38AC96B1EA58B92E8A37057DEA9680EC738 + 27F5E4997F91B276D021E7A4D73F78C63B0A4A9E5B7CB7815F895D2043B2C5C5 + D4791C37BC797087CE0595F9B91320113AAED072408052129D147AFF50E7920F + D7070D61B0A8102E372184749F80943D7E68164DBB036F48128294E81FDC6BA6 + 49191DF1574A4D49099C7BAEE8970DB81E1C752F901E3B3D8C6F904F9C833675 + BCDC51792532395B9B62B306B87BA6DB79FBDE6525D3BDB2F29BDD3B5C180548 + F66EC4CDBF034B3E34D010A5A24FC6E60909A4287DF284F2A133628737E57529 + EF7170A34324ED7872D0DF8B598616911744F2A0C5807CAC940C5F4E428924D4 + 477F210395650D3874E2564EFA6E775692BCA2F176382035402067932B52FD41 + 97EF13296373E2E4099B1F862484B84DE6B109ACA53B47480B8A26A306C95EED + 5AC41249FB04C2B2BFFA264FCC8E90D0C614945CECD5F3C2E33ECFC21A503E20 + 798F982C2784AC2420E9490B0A2A4BBF2BF696AEAB436A40AA826CE6848E1A7A + 1CD5D031A1D1C32DE3891A25E26DCBE4096E53A7211951500BE22C5471D05B20 + FD90F9600B22363904859A7620326394FEA6163545C01C70CE6F8B37260E4E69 + 70029103A7E44EC665DDE8977941F4CC9FB4082297A9747730895752B3349392 + E8B61F6A81E0BE376173E2F8468953692DBCC7EA3135B2583B756D6E7351F2B5 + 5BD112DF02C91BEBF75C594DD28D6EE697226899C89BCCCBA133869EC32D97A8 + 9E74B6CF5D6F3439EC94BCC38E3A5EC61673C7CBB2A33185760E40E050F26E5F + 81C416503E9B9B0C7EEC3831DCE50D7A96BC6773E2D4B59CE6881ED396F15629 + B969FE6EB9087086CCC1AA14E480A37EE9454E685E9BDD6BE694AFC9A99A733B + D535D787E8882CD9450D73CF3F13E5DD930A77042F1ECC4A96CD905DA1A4103B + B292DC83B0DBED1B6452125A364B8B0FE5E88EA568519221B1E591D0E869CA78 + 181C42E21F5A5E11732355E62848096F40527ECC32D9619EDF4CEC4DA47731CB + 48EBC94543620E6DBF3B47A1E4C7803C2BED227C52B5F0DA9E50919221A1E4DA + 023889E694E9F9313143FD5849CE92A494ACCED8FCD48AEE1369886465456BA7 + FAA39D9CFC1A71FBAD20399F73875A8E35E4379B938E9454A449191D11ADFA2F + 3C615C76CF5536AF07A0FF234A9E3D3805E646BB6C27066348A8283B49885BC5 + 432DFCEC5C0A92EF9E90A611E6FE10EB3178236849F964F1C2EA8CB4FB56F046 + A26E853C424DB8BA889C3E1641AFDDC29292CE4999420681CD8777E6CB3685BC + 784CCD6DC62D53BAB2B66FD03AEF9E675775FD124A22BCCB389F6BFB3F1913DD + 1C241936A8E4FFDD1AA4AB0B5661F0432A6399397012C75810DD6FF21874ACE2 + E326F715A5BF0F7DF93D22E75E32EDAE85CC7795C321F9AEB03D6723BAF79734 + D9CC49DB4D3180E6FBAEFD582999DCE3287991F4E8A5E3A940D18350F14B4209 + A794B5F85DE266D10F0D38E2860B11C8C7886AABC73DCFF6A40B8FAD18F57E48 + DA3FB1E0647AADA00C4EE9CD7B5D3976480B7279F985BB4A46AA43889C90A5ED + 4A91F2B34B5CE96C93A6B0E151BF92E8E5A47AC81A61A0C40D0BEE52004AE473 + 05F9247E2819FE43626D2EA478012B091DADBA5DC08B2EB0BDEF37E1E30C3E30 + 77413328694C51520E10BFD6109036E17BCF536212EECAC7F1061CE5F2034BEF + F74CEFF5CFA8C568F4901996079A0885124906FD0B6273C329059257E242775B + 30248C82420EBA8454BF7B9FE08FC48CF27ED68AA7B1A5F44EF5648767ADA722 + 146E1CD4B424A526273357D2FEF363F42368A879BE944C26253FEBF11DD17B0B + BB2C9696397C79999D0993759C114B59BC1892399B0CF12D2B71697F55948C49 + 57852CAC7E172EC95143D051199C84D2872C82C8E1D93D122925BE071CAD239B + 501243B2823C5E24FD0A85A8941CB2F6AA1F157659DC83B70E90FC03636768F6 + 4EE1D1A6AEF9ACE45A224E422C258992C490CDB8D142E8374A06E4FD67362CA1 + 94CD7AC22F05124EF91A4DE5260749E8A46E70AA45454E134C043A6472C59F06 + AE18193274FA2F7EF987A794F9C98616677E6C03CD8086BC50AC9D04F709DFB5 + 052DEE5259BA6E6F0519C3C53DB1B5F1EB17C29056DD988E74CAC73D0B557873 + E0C05740E96ECBF6D682C74C50185EF28DB82A629E285DB7359DEC0BC8C479E9 + 94413BD02E121A4624AA194D75C78C25C98403C4275B3814703A473E47F54AFC + D27F8792482154FF518B20978FE95D6C57D874130114687E3D5652458EDE7A6B + 52A29E26B36BA88C99AEA74F9D906504A54D904BB6733AB58FDBB178376FFD83 + 727919FC90F768CF48411EE476EF09FA5AE8CBDC55E63ED48021C9437C92953C + E14BEC93F7ADA2B76A4652941C3AF79B306464F16B059266B9D15106D792FA80 + DA94A4483546FCE36BC5789010DD2648521BD6CBB9E354C6BE191B4D5A93429F + DD6DE1401CDE881CACC4C5837619FCA5C6B28593F86EE474AB0A5793FD1833BF + 9E64217F9F8C73C4BF25DEFCD6A414C71439C9F4F7FCA0843CF9C8D6863E1BB3 + D50C92B58C88FE23764653367B04E4FC3A9DF75FA4ABCE5432DC4A4112792848 + 2D4D72DCC4A7EA1E99EF2AB9B2A21E5193EA1D14C590B4B3C4E494FA506BF1BF + 8324457990CED4BB0425FDDECB29F0E68EB72402E9940093870863BA72496A71 + 579C5F4989EDDA6B0209466225E9DDFB3D55D9DAFEB80BACEB595AB580761059 + 44829221C9FB20B63A0F0D3669499A733E0F39409B8BB071EFBCB038AFA72879 + D75B5A130E9D3F9A42CCA6DAD26C6DF8245A1C76CADDBC3D004CF1490BA92E42 + 3FA8458FB4FBF4CC5521CAE152D931975FAF89B48C510B8354C308C847834FEA + 628ABD6B21EB709A201F9D706F11D4A28A7448DBA762EEBA03439E80B55D8A49 + 2099D2B66FF7E31EA9B59030F7C5E956DD948E02C86F01A9F9546F15FDE24319 + E78A6B7A1424ABF87E64CB8DA38954E7D4234937BD2E24AC1D387ADDBBFF1A7D + DCEFBD1D77932BFA92C7C2BF87F4E58DA9BBAA23245ED91D9B810C89820E6133 + ACB8C7CB1112367A2261CC7C64A47ACF8C843E46941639626F77B27DA4BBA64A + 32EAE3A816EC9AC23C1CC2A227E04E1F0FBA8AA90C40EE766F405AF364EAD571 + 9684D71D24A5A448C994669098CB4D7709AA93AE676149CE6C159B8AB885881C + C9E7BC65C53F47F4B09A27FB3E2787C9FCA62FC0C8ABE69EDA2FE4D1EABDAE53 + 9277CB7E14E9839A30D15271F872975793520C3E58999B4D72F2A02FADFD982E + 86D9C0DCB78F6B42C2DCEDA5A9332209717C1753BD66D13A24F4197CF211FBF6 + F3A48A50D7D1F611D9224B5260E2A0AB1E74FC97285652B6ABB97F073A644C7C + F28A9EB0B5399F9B206D1FCD504A0E385A1FE638C80D8E2889A5EFB6200D5325 + 23A334DF512A9D0B23029C68D121923421947F1555419E70B7652189CD0DC88C + AE5F4ED53B8B9A5B3222B720E29230360350999FEF6EF713EE8395B99592F6DB + E0936B152384F438AEAD430C0E7B535786147BEF26DFDDD99E889D472710E6B0 + 26374027FBFE3D25AA01BF00657AA3C4418E44ADDEDBE16082549B1DAED229D1 + 730CB5D020D3C52969066193F61F922216C5A3E9CE7839CC55B5B960E4BF56EA + E800E21B3DDF7FA2BBE6E0A0F584D4BE4B084A07B9F939D9F7D0605DCF5A561E + 43F6E1D1C094832D7A7C976EA6A4C418E0F249C9C8948780218C0E5A030CC8E6 + BC73E01FAA1F45DC2A3A4BC8A0240FF9D171E930F8F1EEADF716B2BD91CEA1A4 + 5FFA6EDE1D05460E72CE652709902795A0F27A0464E2E943B67D0F9D60D7F00D + 7A9638EF3631E414F2D6FA8A6AD0BA78AC648B6CD9D3CB90AC64B627B9370F10 + 2551D489ECBBFDBE4FBCB835FF2AF9DD8684B47334F1C771B5C31425BCB7F09F + 193E1CDED802F6F3A5D078F14C21E5E03949E054A104EB1F1A0C66E28CAF84CC + 8EDFCD6DC5770C49131CB0ED6F6BEA91EA9D4E4984E85E102D886248767E3348 + F80DFA409CCBC5DA1E267F3ACE9EA9ECED2A901C392E5383928D25BB7DA59EE2 + 35880C7AC48A3227DE8597691F0D9EEFAE3352D0B3D0ADB729B55DFBC35F62B3 + 9ACCA5D41A8001B590A45A6FDF50F2DC934A0C8924D122F46E3F05497F61E46C + 991F470B23BB6A4EE9C7BBCF2985A3472DE8CD8C9C360FF2986DEDBFED41F713 + BC50763CB1082F73D9E19423FBF60E0DD6959C89D64775E9E0751AA438E56E5F + 638ABBEC33FF07FBB62FF9F52BBE1419769563C6A30EA516E18591A08C5AF065 + B1430EC796D292C564086FE121389F883A98DB6A9156458D2F84A4B5213F6EBD + 9D1A40AD96442DE6ADAC937D39188E52E4F1A34A46511271C38C5AE464EF8EDF + FD8E32F7A113ECD74893DECF5CCD8CAD30E9B8A2CC8F5B88F88EA2E2D772D219 + 8ED74B262DB92F7042995E3F02C48780C4D69EE46B447F6BEDC7177D3C2835E0 + C6E1A8BBE34ADD4F2CE25E94B4F6F933B526EA10746CB1206A0129A71CE7191A + 1F1A3F213509908790C5B291818AC7D0567A0E52A9E9275968D5C27FAAF82EA3 + 74E32E4FEEFD42A250D69259B5833FFA603EE10BE1FD1A25023295026EA01BC4 + 5B30D243A1A391C725190D50791FE1B580B897C06D4E83780AF50C5C22E6E600 + 845F57AF1F5362E692BB469930594A6433234576E50D1DEEAE49BB9E25C75950 + 5B8ADFAD336942D602B23BC2854B90816A954C46D52455F2707480F22AA48445 + 4F685DD4828B5D45CA32699B43BB064349AB47F06D5F3F6A943C2672ABB990A9 + 019ABDA5A391AFE573A5248BC7AB36A24FBA3BF03DE4A35AB03A82926FE8562C + 939D44ACE435A280E3DC0DCA2EE56679B0F9821CBF8B387C89B40E97EC26CEFE + 8995FC1315F7357AF5A38F2FFE8DB585D2E3380C7E76958AEFD72847EB154BCC + 2061FA1AE54883C93FCD87C092D078327A0527D93D13C8A45C98DBA19BE7EEEC + E59CA79492B59050922E126F0690888142F9440B83D56C4F56D27971F5C5AD62 + 6D515053528DAB6C094A7FB5CDD8AC30984F6F114AF66D7E91CA9CD944705212 + 2FC507F90A7A36E99044ED3276204100F2D1E077F6A83589B9916217C5FBD926 + 316457A5245386761525B1B9E2EBE9475B48571264A96830E1963226947EE92F + 13ADE21F7C79AEC7ADE8EC24EEB82BF1C4F4EF793219A6F893B2D5CAB9F6BC8C + 5F7A76523F745FAE5E4BA25C6EBC15A42D6B7968C9BCC1B2B584166A916F5207 + 5A30288E2145493BF8A52879D47DD1D65D4964BBBEDABBA7A62462507F0BD021 + 39BEB9EFCA3D212A280BDE568635073307CBE7194AB4B564B746493A232BCCA9 + 3489EC5CBE1FB2D63115BF6887C6BB2C1D4D893BE74A6E4085114212432EB848 + 61712A7268DCB6719ED93F71E01CCD2686ECB020E3652D6E141B5A23734AEA5E + 514F94644B50B7243B7026FB5130240D0627B742A142154A5BDF237CEECEDE0A + 7F3496407448B9968A17CCBB9D6A5212959ABF683E25050F962E2938D13607EE + DAD602CD1EC569F6161D1038DB0C4703691749F085B9DED6119955A929F6D6B2 + 50BD2670CAEA2840524E3FBCF8F82C6A0BFB1ADF8364A34A388E8CBB46956092 + 33294F78424639EFFBFBD292AB73F0992BD97CD47B9EE81BA1A51A7C28698FC8 + 693B7BFE225F862450EE581075D705111AECE93760DB38866446F481DE7D7C5E + 33B6D9208222671E6748697428CA814F1F2928EB97234BA8E321C1ACE52E1AC5 + 84BB3C435944E44780FAD995D9B9E42075B7BA54E2E82690C8E6E3A4B3381F09 + DD7DF923624C779A7F22DBF7027720AEB637498934727BDCC3038605149F9DE4 + 685D9CF86EC955F2A86584FBE04F4039B10BA5DA6864AF442DEDC65DC891C336 + 8A335D621A72669BBC92A793ECC625A13A1081E6DDDE78914E40499A5246C1DC + D55B3E9BE60FE68D203E0E0F213DD716D398B0AB195A7CE7F4A31CBB97A9D143 + 40FA12626F213615B109528B9814544F83D4A5C45821B6C7A2E0143D72FA1534 + BA213A72415C631153814AF0C807B2463FB9D2E89C21794C090267DB38405A7C + F4084BEE569004D704E6224EFC106B0C11A4A4C3CAF78B1E96F12E1583110562 + E6424E939A9049C1CFEA25050D1E4541C9C1664A2A46920311F8B98B38262455 + 764742E24AE9A9881A3FE092A41E8E4EB7EE185849377756326E075D09D6B639 + 69397A4D8B3886163124C4FAD187DAEBA1C306EB79609840C22543A8FAA20F71 + DBEA164C5EA38292110FBBE850F2AE2C15421C3BED89EA35A21D68BFA9A68776 + C5C8ADD62868561E846593235B046B7E02530024C9EE63755E0D2BE90CC829E3 + 34C8A4E0DDBADF37FF9D2565251BE7A197C3FDC58CAE175F89BCDD838A9C7244 + 493E756E569E06C93A7AC92FAB1892284B0B1F0EF1F6AE6765F71A597CD4A388 + E83E97014A2525FE1931C914728C8869BB3267D4A3A82C19EEE4289014DE1509 + A21B287DDFFC6E375C911423F73AFF4D0B80D15EB337DDA647FD2AC4DC7EB356 + CCCA43BB2E9D1494BC2BCB4B416EB3CCF2AA3AC62B6C582EC992BB198D76A0FD + 4EFEC86087AED41DEA71EB0EB56C0DA323D8A9400B216D9098726E9DE3DCFA5C + 135A19B9C0BBA732371265708F1C32195CEB88ECE6D038D78AA31B4AAA844E95 + 4EA441D2ACB4FBEBABC794214DA249E88FCCB78D28DA6ECABA4FABC6EDAA1A27 + D1A320B1016EE43D190B836AF0CB1A835DD96BE75ADEE9C1FEDDEF56A1CE56FB + 0E81D977CF91811C16BCEBBC3C2963C509DA4E87A36EF7E8B3229846BDE76B02 + 65C8C62BFA7D4C83AEA2298757322487A8053D84B945C8853406C1CD421208D1 + 17E1A18C222C476D3BC68E16A01AF0EE1546C48E051FFEAEA156956034508DA1 + A6E513A71C472738909934B3BE74E9B382B378511996584FD558BB9BFB2C9FE0 + 000EEF1E39B31E8CDA556A2F1B2102C9B1467BD074935CD218C73B2340D92313 + C16898EC3C6A45A364AA7ED7198D22B2AD304E59C7A72B4C5937059D788E8760 + A52420EB35B2F827EF2DFC8895C48B57D0C4E95C13B9ACD474659A5DB3517939 + E478A35F91D3B956C5356448669FF7786508A94409EB3C120B8D7A8F0413428E + 42A3D2E17692EC8B819487DFEDB2906327B37C583694DC352A2FA49AE0D7B0B6 + 06C987FEA744E7BAF1FE62A654A1D32ADD8F77A1FBBF536D01483EE9D8901CE4 + 701BB808F61CC7FB78BF758FC82507747D10F17DF28AEEC32D1C167ED46A81C5 + 9E977D3CAE375CA1433669308A1E88C1D1C9933FBA3B8BF62CA04172E2B926E5 + C28FD6F3215243CC13BA812E107C01C19DB46B94FB9468BB59114D66ADA0FBF0 + 395022CC25C6DB89AFD858F19108AA0E5E1F8912226FAF8F2CAE59FF116683F0 + 1CDE1A3C9193BDFBE5D8F6E013A7CE610DDCC3AE2604E6B524F7592B24722C3E + 6AE2BF62D68A16BEC853BB8573F7A48D77397E2F8609E4716E1A89B5788C0D00 + 435AD10D47891B6E6F92685755F412DE63386FC98A59111B3ED8F0A1DDA7A310 + E6A4BC126DA33172016721B638180DC9605546A71EE79031F8523B5227B83B15 + C16731DE0AB5A9A63151803C51E2D94883247F42EC348667CA8F1BD383A45994 + 9074515D8078836417195633E1B7B6D58625280CED0DCD1397DC46D15F796D9E + D0369A41276C8EA079CE85D092BD72D7286E752E5845CA56230A828C1F899E48 + 490011CC26EADA4A94799F3DD5FA3610F91B76A7ABD756661BE720BCE3BAE66D + 82E8FE0C49242DD32C7A80D1842462B1DC72757B33247E0CC8FB28A8FADD486C + BA53D2B625F39C394D6E9EB0D9C1AB6D523094BC3F0F7E29CD233B349210F732 + F8F7910BA21612430291228B415A695D29748437BC401DF211A11EF451D2BBD5 + 6557AF9D5F36E544A3E076ED11DED4846ECC6230FC3F6021894F4BBF9F24E606 + E571EE65E0BBC99502C9A5ADF7A58E68B961EDD5AB68FA8F39D7266C56AF0814 + 3685C64923CE907E01B31F23BE05B21A4DCF7A14C1EF22692B484BCC66B01348 + 0EADF508B26A0BB8A4F73328E99859E23913902494FE0F0E0C63BA07AAA16F5C + 07925365860F053FE6C0590244AA1E13B5351DDB72BBAA9CA7D38FB4B9DD83C6 + 0F5E79119FFDE8158479C4B8A07A1A647EFC34348D633857566BFF24728A93B2 + CD5BDDA6262B31D264652492317F0FC8313BDE8D1A7AADFFB275259E3FD20DE3 + 3FE1947C9C8DA55C21828A92F709906C6EB75CB41CCA2B47633BC030930BAA7E + 97CE7070BBD32A2F3E3122E7A517335FB9FEA03127E3ACE953D69D6048A1CCA4 + D9561CABBBF90D6528A12C6A696BD3B97823CFC49263C80290E71784AF9BD3BD + 5D7B345BB00C36E487293C7575471AD132D221D929791B9A2655B2922BA14235 + B62CD0DBDBB59A664524BDA2D6F1E32B2FFEFA2367A917EDE884EA0D89BD695A + 238C4F68EE7E824F2AD418F52172A1247AA80955D74BC8F0127B36D34398FB7C + C28475AF36CABD614702C92980F1F874D9BC3E69E49FB0BE5A20D17F17256901 + ED400FF198A10933D29887BF20B8B7D1BA1F51EEAFB2BE17F9E3450EA215449F + 8E0AD6B25066EA5902E5049F3C72AFCE73E7C0355182178B21E6E5C51622417C + E7C42A7AB8064A667A1CAFD76819F5F2F7E17CAEB38990094DE8BEA8E548A2A4 + 64A1053BC6D4B3AC02A4349C51A8005B1B0E99C94A7A1CF738EE60F9ABC377FD + 14E494EC64D580B3535AD567A21D797D680C52E698DD1219E2A07BFEB55E5C93 + 234999FA449F313BF26815D1D36EE8042D9B12D31B4A92B17A377DA49DCE2396 + 16416153569237D728975AB1945DC75855910E494FCF33E4947599D75FE2651C + A8B8FCDE9BF4DD83A139FD187A0A67214E957E5BC65F202B78D974A4813E6171 + A44E22258B3D3E6471C25DC5BA202A8D51891D61F158C1C335CBDDB6B59D42EB + DC738FB3535AE894A49FB94F80F48D8292AFC054B99CEFE216FEF36294757516 + 435663C3823390D76AC44D0E203D2E17927361437A82BCBE991E5876718B9054 + D910F9FC6E28052CB8DF8826A439BCC559CA670C1699FE3B10ABC3E2CD4C2F94 + 7C466CC666B40A1614950A25B70F81B90119971C07E9676A7C3A27AD24867493 + 3E7300CD0EE5ED53584D20E13113F3D27F8FDD3568C8AC76F4124CFDCD90AC3F + E9853FF98458EE146E5E31059E9194CB3E793714A1438D4006C7DCDCE626D211 + 387684C5B1E955FE54B1BE870F57C0DBB1D8B7C5F7A7E6D1EDDB834E85D3BADF + 8EB56B1FB74029B97226032688A22B3F6AB292F67DC101FC90A5E49E8291A87E + 074A10C835D58B53D1E3F55A3D8BE61F77E848F40D0191FF861CA7EB2FBDB899 + 3C0F586625CD286F388A765268406A9FB553373D6C3471CBF86163B48BC9E0A1 + 6376F08BEDABE56F02392A6351DDE6A7A96BADBE1D9D7AFEE1374362BCD0A3B4 + A9BF839D987DB7099F78464CCB2E7900906ECCC8F696FD115DAF6411204FAC9A + B8D6EA3CFD5EDEBF21F53FED5338E4F275A23F5FC07F432A6FC821BE79C28B9F + 57714247E8EC0C4DCF9CFD78EA96FB9D8BC5EDF46147D84DDA416137594F3827 + BBA82FBE8CC3D70F3BFF6445DF86DEBE3ECCFD9B21A2247D322C2C9E66020B70 + F7D7CF5C8971BCC1F11687C2DC0F9553B6A7F850A3EC556B120A299E12C7CDB6 + E0CDFD89CA9D0B9DAF9BD6DD40E5A12C2A44378358C91630F8ECE557D672B6A4 + 878D9E5A49CB2331D2262EE3DB81C3D8C240DE5D2D8472FAE1DA35B3BBC19FEC + DA7DD3F0F4BD6301ADF23FD944D3DDD51A04144AAEE4089EF845FCD039A4A494 + F6AD7A67029518CE539FB0E2281A8AB8A90ACEA109DF0C39F9E0051DF1CF1718 + 92AEF7CB795C68C99B8E01BB6A1424CD864B4F4CA1FA168AAF564EC4FDF455E2 + A3199BDB14570B640A2D4F4DBF9664D76E78ECC179DD038E675ED9D4265EFB8D + 9251184329282C7E3994CCF6793833003939946CDEBA9F506298FFD6B7C5E353 + 2A4E8D4EEDBFEE47847639167E81BEF8E48B4F4C4A12847D5C4896A38203526D + 461FE7D021BAC2D70E9015D5EAA85FECD8C66F958CF314CF7C1A98C257A5A1E9 + EE3621EB8BFD2766924D6F764A189C74432B6B87DE849280CC30BA934A42F1A1 + EE09897E80ACB7E9C5204A5D5BDE9F8233A7B03FDAD0B24F6C96714E6D7EBD01 + 391403F2310924EFF3F6D8A920A903AB39710B211F3D9CBA65FCA689B4653C6D + A9061B42E5267211A668BC5CF002C8D4DBA95EF5E70FFFC46B914FEECED00B56 + D56DE22C42E3390DAD0CB55AA944859216433D3626A36F4CE8D2791C07644148 + C24DC3F9F48194B23C35DE10BBADE1849C370B5FF8B3B1D9365FF3DF9B131523 + C11F5BF16995962AEF86C6E703B2C3950ED50BEF376973819A8CA714ABF102B4 + A55A9DF96A513D7193054F8F97625296CFFEB6C5B5FEC197124286708F327376 + 20217478D75BA8E8395330436F2E26D7D1A92B7FE04342C101BC7D9A892881B9 + 6FD2C40E941A5F41FD1B1A5F71B8FEE70B36DC759AF5B98DA2042087F18BAF4C + A16CAA273ED9422E494C26CFF611CE4157DA7F75419684986BA782149A6A8829 + 8F09A9273A62395F0FE33A7A572F40CEE9BBC867467302E5A636C47C8F212340 + 8597686007D7D11B9333C8F86A23A4F39D2D3253BFA29BD6809C98C2C6D815BB + CDB9EA150FEEED30DE2CB9FB4D05D954BC74FDA58EC7D11DCA2AA4EC7A0DCB6D + 46EF9403FE72214E32BC60F9950EC99EFA855729ED06F2D826B2182F22A60476 + B892E2CC8B0EF5D8157BA27DE365FB1761D37B67E8634F40929089A02447846E + 4EEC80084E3A41044865B5E6CBE8A661FE40EA901C2490C1392F391436AEB0A1 + 59E8890AE4AC1515445E590DE8C54CCBE272E9A037AC614AD9498DADC0C2E557 + 52F88F24DE03539C0BAD687CB6E7169AF8A55CA2812D2472E6B37453E3C9107B + A2E317B4FF8BD73F1F05B79EDD6E206B194AF11A60BC08C96986CD4DBA94FD59 + C96364F1E5F241A5A377B9AD5EF60A95BF60B3AC0484B3F8972B584F50B2C125 + 76B2EBC98EC09D5CA4FDE16452E708AB379E9A4DCEB27FB23070CBF814721E78 + A4301052B2EAAEF6A5481F6D3B7E31A72FF72877E6CFC6224788D4E115256728 + 0D3C72319E7D32DB48AFC21358C9168FA8A41290F0B59D5C04ACED701D915D52 + 1B372B2A6C00F9E7909BE5DF5D9B9045BF6525B1117672CDED0F0F3A9C4CEA0A + 2C75195672D06CBEFE75B673D0B46E4C0A09793E5FB5B3934AEDFF91EAD5F2E0 + 1C7A70E51E52D96C42E8D01159094BC8FF18066607899295D6A09C9994BB73F4 + F147259504C8EC207225862C7BC3E1779898CC07B637B2A5F3B7802C1CB7EB50 + BD860448FB52661C749868500FF6B8D91C1B404C2E44734503BF0CCC862AF27B + F1DCF5F94AC9B757CE9965F4FE6D5CEEF1BBF9C861C46E29160F5590F03C15DD + 7C952F35CADD8506AED49A21B389210DE5FDDBD22B0C598772C5ACCFF9A3EBB7 + 774673D36899052177C92E207BA2D2FC41A3AD0292AD0268D0F8000925482BA8 + CB49F305664CDD52CA260564B3632564F4B67C2317B6F8488EF21DA95D555C18 + 430EFA07B93D3C85C94A4FB4DFA9013B1FA7CFBE640044D0A052860CDE39AEFC + BA8DCED8EE9A8214AFA4978AD9297F23E4737439788F05C4243A3C880E13CCAE + AEDE4BDE393A488E5A2ABB270B252F011DEDEF8F12256959C8B171C136D42233 + 7960B539E4CD3660CC0E824D0169596559E629F18DF6A0B20B43EE0423959FFF + 31E7ADF2EB9F9B10CD286DDA5D7C29AB71BF2C860423B4544BD97356C4AB3474 + 0B6C9F1AC0B8831874A7E286C08320388B2E6B58C04ACEFCD11D3908690C89D6 + 9C72209A802341AE2D3C1892AFB672A719E5013B1D2E7581923B697C3C8DDEF5 + 30B0D3E971176D4C3AF24B595C02BC61E175407E1E91CD9D1FA5A450F28FE171 + A0191F2FA8A0A2D1418394CBBADA031190BCACA1FC7CC27604E53BD60CD9E229 + 36A8A1A5408AFF0EE4080E72358C727BF803F7042C7E1B0745466D499F4D5012 + A1377A67C5B340AB3B3E22A4026C472CE60A3DA9230BF5CB2AB4ACCAA646E512 + DF9AC1954CF6F24FCA039047D90D985623E40A41C90FCA5EFDBC327E994FE119 + 045F3E67054F0BDDE483ABB937022547EF8ACD30CA444939324FC3922E0DCB0D + 9FB347A288871713EE747BE173331D59495193B5EC5A5EFC221A1D3EFAD148A4 + 44F0D893C6A108D5B4D009E161577B99CF8BC81A629FAD2C0164FF7BC7D0A8D9 + D368510FDD283E6C27DA1D8192C8F919C6F65718D22708B9A4B2B20B196E25C3 + 25A9C2ABCAD96AC2378014B876F8096BD92E6496406281AE8580A4DF0ED57B06 + 29B59DBCF64A24CD410557812AFDD8CAB2884096D3B68C9E28CED8FF5E763DB4 + BCF608B9D1A0AC3E22F61E7864603687071C2F403AFC1625E574AC61F9B288E8 + 64C3AD41E2D50F293D63D4B50A31B700AAE19A6EF17604A7A4AC0FB1F9578FE3 + 5B18EF3731212A8B97EAA4A5EA0B8D9E754497BFFF32399B2DA6F74C42E4404A + 6EA6807968A0C5218BEAC14706068F5ECFB5F9A08CCF87BD50E979E018359CFF + 6997204377D41B45947F40566F5DE404D4CEB45E66D5A56C7EBDEBB7E295C4F9 + 9C2949DB634EB5284A38327941ADCCBC8667E9F52F7ECE90F72CB31A528D50F2 + B9A974C8824907D3919D8034905B5B05892D55CB43F5967DBA9A00592A45787D + 509F38B8DB5D33A3E4813141F9C0E55B925479489CD2A0625CCC6E7FBF86CC81 + ED490B680D12F305D2B3FF62127373D82A974E325B11941416814C08B9606D59 + 382EA8D17C24335DC95E961D44C8E70849E54B091D4E4202A951828C6AE9F44F + 4DBF5A116B950C746CCC7679A7F2291A2E69B446C313F928DA11487964679282 + 8CDDD6B67D4248427FB22B642515A428D98BBABD59D8B8AEB5754CCEE80C494C + 890E5823D9D0D52C6EA8D1F434F1D419550752C425BDDAB6B309ED726DC58333 + 4FE132AA65454EDD2947FB82473323EB559EB4ADD9310A49F0AAA27B96879257 + ACDCDFD9D046AAF990023B395FFC7C45825EBEE9545495D1D1D1403E97F8A643 + 8DCA9FC9F6ACCA44BA739A90353A0E2AF942513E240AECFFFBAC76D7D22F155F + 183783347B1F1E2442066B87D705F2E1A96354622496327BF0BB4B3C08905CCD + 8783EBF77766B76E476A979A7632AA891206EF4ADFF6A324E7DF94BDB5414492 + 230835DAD127E5036A4481CB820F93777570B099D5EE52FC837B8F5354B2D533 + 16BBA61C7B923C3378D02939A2E95555E97998DA1C9F97A3201F92A7B3D55BD7 + 4CC6664C0FEDA43FD53CAEA8F8D385BEA56B0E94C2E776603B42625C6A58A3E4 + 348192C9CAFCA5760C84DCAA82AF7C71B3CB25EBCF2ED8FD96CBB9B649A92626 + 9176E8599A78AFFA761DD8A22117466F2ECFFE9A72FA19DA889034B86D27670D + D243CE410DFA89344E891D091D50727C2376EA91A2FCEF83494235943F23CFE0 + D03958F9A5258064A754AE615FBB0C871C20FB3704247A2221572C7E732E0CC0 + 66A1C15118A1E4DB17BF28514ACA29949DF9243165F26B7CA7A815D4AEC0E5DB + 0796C894A0AC47CFA8D1438EA0F2FF8956671C5CD5EDADB1ED6A21954FAB84A5 + B79DD24BF0AADF8B161B41E96551E2D0C5B8649E82647307D72F582C2E19F453 + 6DD9FA699E62F0072F74FDF6010DE5069C2D0EB702DE43317CB9B66BABF64DC8 + 1A965343350253550D43D3CD90F17995E5D85A3251EA2DAA8AC2F267835BB66F + 124EE97E460AB94ABFF1169F61DA2EAD9ACD2489B5336754A08AD258F219B9D0 + B696F4B8D05992A51A58CE679AA27CF45E5E0A4FC649D5E019B1433DF99C21DB + 246DA0A78754E3AA61EA42723A4DE2345952695D696DEC4FD6AF76BB4DA26479 + C35E966DAD9AD162B436D86EFAE9AF8C9A94E4C29044BF698CF59E7104917AE7 + 41D87456997C8665783930767956BEB81DBE7A1072EFDA536E5DCB6D0CE8F499 + F2AA2404047755DBD7A31912C9B1BF75C9106C1603B2BC616C90A77365D51E11 + 32D983BDB19F9C4245EC9AA63CB4427A191CE06809061FE2BE773D30C03DF920 + 4FED1B357CA8A08551BE65C8D5B3ACBB2DEE564E97ACFDAAA42D61838FDA6930 + 355A06D578266F6B66997593BA5CA236E45546532BAD0B0DF65CD4E02A67B497 + 8BDB5DEA82C006249F6E24A7D34049B9ABC025A8CF90BBEC1F943814979344CF + 60DDE8C9C1494108783E55A7AEAB603A496DF3620DC5F3BF591C9D1CF4A9F567 + 57CA3C0FF03ED986A63C50DB2E3DF31CF643FB04D93D9731D9CB27F34D6C7F1A + 1C5167AF51DB1AA29A0862B86467CDDCFD885A6D3751D2B51534EB33DE3DFDE2 + 6607829655E8ED0F1E255B6002318A829888C31ED3A0E68DC7E024C17F96CC07 + 2DBD32BACC5E8DA5AFC59C351696A3EFF050B5095053B6400D9C51CB9376D537 + 56BEEBA32091857EA7696B0C9CA7BC685076FF72786B172DB6FB694A086567DE + BC87962B00890E54CB6B0483F35C4BAA929311C7050916ED3AA4ED20E2DD31CF + 92B51D034C3B98AA9CBB385E4A288926FAF483F4E94357959E7C97FA059BD2D7 + A85D92F3910690054E758392AB3F25EBF41FE9C2876BE008F6A83AB264B1F5AB + 5F94B0B985B29FBAADDBED9CB1DBC76ED7E21BB95220AD8CA5AFD201293ADBD3 + F2109F746A398AB53C249AF2E9445095B3940042E26D2CFBB06C63FBC6A150D2 + 72520B8762327CF1C3675308A85B0376E9AD5279C0C67ACF3C69D8294BDFD97C + 59B775FA6FF9558FA6AD9966B047953DA9A17164F09C502205C9FE08C27E3963 + F98DEF0599DCB0FC1A8DA17F6CB16FD578C8A1023E29F68065D5B01990087A5A + 568DDB0516C2769AE7383EB37A9B25FFD1363E05741CED62C621D8849A475D82 + 3AEC8E77D9ECE52057DD7CFDE3CF236F6DFCC7EBC78C0D9705A4724678562FB4 + 009EF7CA6CACAF92327EA317F9B095C10EA6DC362CDB9AFA2CBBC98CC91EC2A8 + 4E91E40FBE176483CB3D7EF9795AC7C517F36A1C8A1D0AC28BE53CD972B31019 + 07B920189F52C453B46DDCB67180C35796830ED0B0030D3DB3AD8FCDD9F41E35 + 38E3FAEA08AAAC5198448B9AFC3036F4C886E5EF3DD80A974E0EEE4F6D2BFBB6 + BD111F1ADFF00CC5D7938CCC4AEEAA1A76A98CB0E15ED905F6E9705FD28FB8E5 + EF3F551A7B847B5E9CD47A6FA757DE97421D8AB35E5D71C3B298C73C0F0C83E1 + C73D84F1871DD0586BDFF11D030AE4A5E2099995C7D0E0ACFCF58E430C02E6FC + 8D6353E7CE174A3E11ACC9C1E45F6765BE4FDB060FA21F2A8F25FAF42A0F8D87 + C9DB847C274A0E3E0437C8B6EE7B1FD1DD8577E074B8D261FF58B9ADE2A1CEA5 + 4F8F6CE8B3FDD5504D2F87628335350EF74A2A54AD1DFEE44468A6546F78C71B + 1D1068FECEB90B1C9DE3CBDAB203D2E4E19DBFA76F0EA1F37263679A79C47063 + BEC2C4D0A45397969E2E2FFEF07AF44D928E6D0852654FEA9367180BEFA98257 + 571E9B136ADDAD9CC3F3A7CE2EB47D5BCEEDE4B38DBEFCF93E9F7CBB88EB6CD8 + 50D3DF115B1B093FFC76CD5AED1FF4A44BC5E4D0453819D0B970188F007198A2 + CD86D8970A9DA1BBB171695649BB208FEF6EA4DFEE483A258698AD2FFDFABEA2 + A40F9A273FCCB6E65C9EF0841A3CF9144AD6CBA33E50126EDD50EA59099F0C7D + F213DF4AB479CED24B3FDF971FCAC98D8E350379D77B0C5FEC9830C1AF1765F2 + 0D3D8DAF667B6A3A795E2A6405E95217EDCA1296B321BB04CFF6FC812AA91BCD + 5B4DCD9B6C3D1DB9B1D40C524AFDF59D197C079D359F5F286868AC06E4EA06A2 + 6406A5F4C9EB6348E773AA86FD50D92D21D10F2928083A02F3A720E70D5A118E + 2F5E7F2FDC545A77B2FFEE4851A6BA97E6AB3F949067365F23C2FB9E7E7855B2 + 5236A3AB8B36789A9DA44BB611907D9F2103797C77E95F9148444CA9614AA9DC + AF3C3FF793B719A52F4D61733FD94A6732264FCDEB132690C388E73C9B5549AB + 91EA98F2A7E191E3F91EBFB17BDE3E5FA7CA28EED3850B2DB2F8EE99FC5509A9 + 2B2014E90FAC2F3E4A64D2A8BEE60FA24A4BD7E89B1F77F658F3F4F4EEB0520D + 527BE04077E9087DD37679C33B946D7C9DDAFA75A3F71ABCF8EB8633193E3E7D + 28CF3012A10897AC76BDFF0ADA2228493FD1F0FB4DF6EF9CB7B4BB6C3CD7A932 + 2B79A493AB8DBA3DAEB54082B752411A8591ACAD4B8C64AA41A5B52C6349805C + FD53BFC3892EC7C79346A90D4AC86F324EBE7F9CE0921D5E219F0348D457B6D2 + 0523942443FA43F6F01F5E27748FD0F558CD2D5BF326F7C9A272F66F4378ABC3 + BCCA525C9CEF1B7DFE5325932DEF589758578A50EA86AF1A9D4E2835B1563756 + B5CC2AA95CDDBCE254FCAB6D49ED8139AF17A91829E1CD91EECE85D0ABAD4FAF + 0FF8EC8F5F37D099A51CB2291298A7887DB21290F2C30ED4EA850D7D7D869049 + 4B5395C97E4BFF1F16F00D78D0D258546A62127752CD6E9E6BAD70A123B57C00 + 4624F5BED125DDDE6BBEA15DBCCB05BE5396BEF3E0BCB235862DE9CF9AEF3596 + B0927EDD00F9EA0FBF3EF9D43A5283841F50B56B74229BBB617928D781AEFCB3 + FC8310ADB0F3DD6BEBCCC5FD5AB0E2867660B64ADD20D9B24ADD22192C6AC45A + 616B02C3D6840D4056F259A1435E3299536A88DF20A007A6A2835ED917240934 + FC2E3F1260835232F245FAB5D0C86E4DE8C421D13F612169E3B1D9F5FC9AD616 + 2615D6ECD27D6CFDEB1DF8E8018B59A564CAE746DC4227256923E5832B027FBC + 1FBD480EF6ADF9777CEAEB2494A4EF90B117464AAF2E29C6172257AF0FDE246A + B17FFB23CDDC9CD70432917C687572683C303B5CA1EB1F1C4132FDDB2AFFE7D5 + 252E075DEF37E1F312F25D4FF6E52B2B4F0208A44CA4BA1C96A45542AAE09219 + 7A71E729C6EC30D28DFBA743C87CF886DF8C1FA5CDFFA1D21AC14D3E09DB636F + DFEA3923FCD7101D329B8CC84062EE5EF4417C10B78B9DA9DA68E1A71756AAED + 0C55E505E58E6D134D7C63D4E8FE7DE57A58D7939672B1B648AA0F7C212FC051 + 0B8A5E67DA41D461E467C9DFCA98CEF9CD10617CEB87A10746C210581A0DCE8B + 740BDFB5FE75C328CD2719D2B24302435202846CF004F6BE1FDF7B7D093D5F67 + 292E2837AACB7099F47295CB43B52B77F56B8C495D13AD6E29239FB4FBC71BEA + 6EB3541C7B742C294A1AC27C1A226DEFB4FE80352C4A626D0D32E69106094638 + 0289B9BB5C5294D4FCC182BD835EAD5B65ADCE6F052D7675D72EC20F4908B942 + 597C03AB68108BA84C9815411A1D57213AA2ED9A2B8F4930877EC590A463EAC3 + 5BDFBE153465FD7FEE5954E3B7C840B69B7F481E66F5B875CCD83242A7F73D72 + 2E2D31562B97A45E67BA34FCE04903C21F35F9E8E7B17A5943349B709569FB80 + A8CC638993D57DA04212F8A455407A65B1AEEA3656BC60B4F80345DC470B17B1 + FB0A3685F9E4E918FBD8423925AB161380FCF186DBAC01F0644DC9E15B730139 + E4875F174EA33586506EB8D82549A520FA00AD261BFCD78A7AC6E4BFAB322087 + 3470226AFBE32B93D50D03D48DAB64604915BDBAE9164F13DDFC8740660E1548 + 52678E698342A43CEB19D7FF44F051DBC90AB235ED1C56428DCB8821B1C0EBEC + DBA264423CB68C3EA0ED233AFCFAE2905DB9A755293AA82A8EF29C5D3BF69C9C + 38595F4DE26FA8A169CAFC465BFA02933BEB4A0E195DCC672FF6A1BA431E914D + 607DA77CF13A8024BC7996FBF3C3E8704F5A4380447283B59590977A7DB0E103 + DAF039DAE9F0A991532BFB98EACA6F3282F29C87F0A58A66949313F9DE0E8993 + F52F13B509F9166F9A923C277EE401796082DC715201F6912B4D6CAEC96DDA05 + B2D7E7E78DDC6B7EF4EE9F0BA70132106D5B5FD284E414B4813E60735F69B0A1 + 6F4AC55FEACCE575726BD8681373D06445C397ED09A7C24CD4BF9EACF031AC51 + 90994313E36958F840D21F1CA1F8F8111BD7EBFDFB2C0B490269EB7D982F147F + 44836AE8EDC1869066F75CA5028A915D9287E1FB87EF1FD3FB2A99D759AB7227 + 1A66F9D04BDD73070C7EE91A08069F368942ABDE489FE143B54A9E4A7935F54A + CDFB9D4C4FE1901289DCB63FE36E75DBC937337C7A91ADBFD5CE74BFF41D742B + 6EDA1A7F03DF64D235DF77B20EA953B2ABFE63DDB2DA924C051E89C8A5A86BAF + 08910CEAB6194CA4DF0354BFA311C95728D9041933E4F8298FD8D405162903EB + 96EBE67EF4DF11686CF8170BC9B6DE24408E26BA55B3860E194224B7B525656D + F6487A3166EC8BBFA217F2ED94B1B9660F1E0120C68FDCE81030A437BD97E157 + 99C100195CAA7AD7652399AEFD22435712D1ED886DD4E3742A9F8A8F58BFD6C9 + 84B89866FB3B40C60801E9459FAFA24963E4A25A74287E377C2D0B69F3341DB7 + AB4EEE910B6D73F5527E96028F04564701F18053558C2234E36316751B50CAF0 + 317FF17726251DC98AF691EFAC8BDF50EA37D31E0FA4C5DA0A666FFDA645DBDF + 907F18C43616C1CDF7AF19BD93138C82D43239436E1F8B6ED18B7C6F9757B796 + A72DA7CF167FA6737E5F39D08180D8B1DC434848C32432618988A225696F32F4 + B2AB55D28A68DFF1C039DCC4A62E489BB5519D1B7A72CCA0193D95CB80C3D69B + 9EE6A7C785F9D1232F824F7E6D0A7B1246D0B55AFA167D7B6FECB7DD9E0DB925 + 2530E811AB35430268C8B2BD975BA003A0AD5FA8F431345754074DF0CEE0AFD7 + 993A4A02F21735F71B2A2E7AFD541E79659D4A34A469BE81E5A1E41DCAE7EBCA + 5D5FE03CF9353C81F40A3CFA1CCB6D9C44E7BD66787B759CB2BB26E01F52D898 + 492BFC61678C2D0B1CB7F04C2D435D2209BD330CA501EBA009BB9E838CAF6D68 + 6BFCC7341FF5CDAAD8B123358F564AE6AABB9928C80E14212125C6B60D8FD92C + BFDC8A3E6ECCFE56143C3FCB2BAB4FEE8E7F3968DD8C6581FBB44CC8AFB4B763 + BAFACB2899DEE4C30E33CA4C8B2552AA9E2715E40ABD4397BA20EFD36D549CBC + E997F651F7CC209BF532DEC1E69F288966B1836436F148DBB1DBC7BE396333DD + 5DBAFA2E2D5DFDE9B58BF5664C1FB2EBF71D43B4EBD251FD1F527F8AAAD528A1 + 0B5D0AA9A3E4D3FA7F3B63541D25FF35423BC453DC87EC7FF9E3CD7FB534D4DC + 49BE747DB438381A94EDCD7AB5DEE9FAD2181DF288E26747E01BD9A3D74E2D68 + 2BBA344B7BD1C27A2D73EB3939D4F8AFEE13A573BA9E325B77582CCD88AB03A9 + 85D9F333DA9B41EE7377BBBA99E402726CD87C9EB671F8B91B33A206CD0CF578 + 7DB496AC6D63B372D55DAA1E659213E990320B9BAEDE5E597AC1DEBBBA04B524 + 43F1DB9F4D7AB9B4F76A07F56D0DF5979CF51BBF3B140DA3CBBFD15F87E7675C + 378BEE3FDC7AB77E55BE1D74249332E90F3A171FE5465E04CA8BECD1A2243125 + C5E4F7098B83929CE4169E11460A376DBD1E1E547CE478FCCAC3DF8C71ECB17F + 92FFE7D8DC91BAD384F6B97E052A2AACDBCD6607AC24AA8D938D93642D7C76E3 + 5AF9C276EC06B2DD3FD2A464984FEF3EBDD3EEC8BC4F7F2EFD3C14901F905BFB + FA3FE786F6E8D82A55924CBB5E674AC8331CD6CEF662489B0C5D62BEF5A6840F + 237A6F3C729CCE5254EE82D01ED49486D2D0818765D60FB74E45A51448084B18 + 532FD338FFF64CAF3A8A622BEF03EEDC5898205F59B480E8AA827C7B9DFFE034 + FAE31CC5BB452D2040BE6995AA02B859AFC30A1279288E0492FB151B6C69F3A7 + 73B16DD64B76E178CFBC7C2EDE8DDA5FCD0DA51E4D29FE73FB4E6ABF414BFF53 + 792D572F141E333CD3DF73C307DB1FD93EB20D6F37ED1F712ABAE745B851EFB4 + F632F3FDBD9DECD2C4DC7C311356D428D98D4BC87E9F6F4C678B1C347A63265C + DB6023F996EBDB6C35DDCD3A3CE8F0BB7C7595CBADEFCEB1920B724549BA5C34 + E55F3A24E54E13559F97EEAF884A4BF8D16BEB7BD38FD2C168F80500AFCA1360 + 869EF8EDF61B69FC942568C98CFB1F7E55202ED28C4A3CD5AD2CD9DC64F0D0EC + 046BF308D6BE6A3A264F65F9F32FB9820CE95FF649966AE5AFF23A0A1AFE1DCF + 7F1BB867B87F3DC9E6A24F5CBD3BF049D997F9D9E0A6EFDF229692AF6FEC41D4 + 74EAD175BCC7D0D6FB0C9B9BE8A58DF81543AA721E811E2B06E324B4381B57B9 + 65F9EBF56321FD4F4F3FE1CE6B3975154A5E7DA3FEC5FF19ED919291EF253476 + 7B784CB37BE47DA6AAE28DA2D3EDE9EA3CBE99D81B8366DC3E91C2ADA13C1993 + 9A5655CAEE07DBFDEF83D116DB64F98F28332E2C4E41666FA6EDDE1C2F8701E8 + F9D246DB472E6ECBA482A8DFFE49E41FE8DEEA8F43D26139D09EF25A2E3C7451 + 51280CB57357769C6A7B4FB3376F7F943D9CF968BF27FB7B33BE597709D9BA5E + 79EA11D3BEF72A0A1C4BFE8DDED9439348289B429AAACABEA9BA51E9B02DF721 + B3EB2889223E3B78982FC7B71DBD93B798375A5B6EE43D00FB8737E567F26C6C + 157B987B4DDE4BA0C31B4E876DD5CD961EC9AE67E0A8E96C4FFE4EEDE8D5A600 + 69BB7F38DF0E17964233F2D5C4CB74BA7D6F5A455F9FFCEAD0C7444A4B0C5397 + F42FE05A2B4675E794491BBDC248298952F8F64970839736AABDC8F9D47EBFB5 + A5AA20B190F4CE9EB487B43D85A69FBA1ADEF8DF6BC813095011D992068789E1 + A8D47E26DC2FBB3800A8199F9544C422ADB816559247B8DBA26D8D9DD047FD98 + 26F169D469FEBF1D08CFBB28A600E467349D265D977D21E11417064894CCF7FA + EEC511CB88B2CB243DE6CAC9792A1D43C88D445D479F7C3594DC7A9FBA5AB0F7 + 72F87005C118D902F248A79119F8161FFBB1A944FBDFBF47EAC6C2D48BE5098F + A12B8EDD0ED0E962B7AEB7A775BCCC5A0679DFB70E58912926C916BDBCA70337 + 3386B26DB1211267785BCA1587F17C49C1A327E7971E133EB753CCB0B669FE14 + C8777BFA92D694F67E306E7E6E4CE3031DC3DFBFD7EC9ED85098F60F57EFA493 + 9B0D580698DC4C10DB503D0473F82AA7CB7C0CC523868AD1DA16049253F19FEB + 5031A53C5747E905EC4C56F26D5478380AE9C5F0CC17C36FBCDD4D3145F1A995 + 4D0EBE011DBFEC78794DABBEEF3BBC41C32EDC9013A64DCF01A0665FBF7F6FFF + FB7893319E1E2E5FE2359CAFDF6AA6F17EC6D212ECCD023B4F717ADA0DBD69FC + 8D5C52FCE7457114F5D7EC9EB7F774F294BD4A8F487CF26DD191B38FA7EC6D0A + 376DE9F9A577A1B71CE6057A50B8036A1C1E1048C30E742C9A2E5D1D2EDDD464 + DF031203338E102BE9E4EEFBCD78393EBEBB58529FEC7DCFA641DEBCF1F5B527 + 75BDB8E79D76F435E9FE234D3333EAA6088F0B6B0925A57084B6A7B2B306A8BD + 7719F9A06DC981C5D880584C2357144DDFCFFD456F3AA835DC4A226D630AA4F2 + 5FE74B1EEBC5B704A48302290731B2571DF45EAC2DC392D3D71271C4EABF8FA5 + A77B9A6E5CF7022B19A0EA490A3EBF768359869F37F2FBDE1FE797AC9BB23388 + 0F821570938475680B2C565B6A8B159346F6999A1463EA42AA35F0662843D220 + F25E5C5B0F457A4F730CD5DA68473C10DD4B0D9717734DA7AFD2140E3723F42B + 18497B0BF9C146B99F50943D19F9718F25C649FBB357F1B5958C5832C85B6CDF + CB5BF577172B209428C5AA72B41A9941424A679AA25FD247EBE8FD5AE93FD305 + 53A287738B7359FAD2D3FF428861EEDEC2F57BB571F5C82872A69125347DBFBA + DF12F1E5A7D3A956D63A83F9B7DC1B1075642A86866F949DC8DA411F1E5F4785 + 7AAF5EC14875A0E50B4B69AE419E0A317D15D6FB3C639742B9D89434CE9FE48A + 8B429A4125EBB42D836CCFE142B04A2E5ED3795691BA984DAE64E5799EF0B6EC + 49D74D2AC4FCC1FB44D948CEDA1D3E9C47A2D042539538992A488A7961E9DCA5 + 8661ABFED6D460EC3C924F26AA31D4C873FF3287E23DD3992F0E195972FC4305 + 29EF9EBC736BB8884582C5139E24DF406FFE8A31B515C48575195962DC2B1799 + 282C751EB07164C974552DCF3A282DD1C7350C232D6F86EBB774277EEE34331A + C879FA14754219F8D6EFE5C75BFD04316710A907BA6B724A2BCBEFC3F76BF707 + 235347C353FBAE7605884520C228782BD44E531B9AEB96EBF6D3C8496812B29F + 838C1325F55A9A18F97A8EB830CB940D95AB500CDF55640F8B38F805E9103AF3 + 0A3C3A988E36FEAF07B5829677E62A46A83834D758C27C084CB9C8377346813A + 06AD1605865272AE21365B8FF7701DFD4ECBB9619643DFA175EC5D85EDAE41CB + BD2827578E3A39B39D4636555EA33D2A5D7B00FDF3507500634CC636F9E250F8 + B96848DA9E8FDC0F9A9AC9053C6C0AB5C49821D6DC14BA8C2DEF74E9FC0EB5DB + 5C50625C058BC32B3F52D15D0BA9C5A9BE7A1993946102972F5415F0DE256AFC + 16FEC9E41685A407CC82281221D1DE9DF9F305B45F3F7DA89BBAE51D666C7987 + 5ADA54D8180C5C9AC9075ADE112197CE9D35F4169CB8640015ACA24278E54743 + 9590DAA569971463B8A4090D385C4DAAB11833F79130A4A8F0F64BE611852CA8 + 851C9A49F68A51DD90E54CA6F3255DC63B8C89E06849361580ACE38DCAD82D69 + EEAC2333576D3C3A003D67B84F0D070D8A7656CEE47CE9FFE68EFC64D870B9BF + 145D8D198F78366A714DA57CE7859174B91347E70D8294E19ACFF1FB1D70ACA9 + B081B94D4F6A6829DFB28E34979696424A0509B49ABDB954AA183977FC9F19D5 + 6E5981944B359592CE25A5DC9C8DBCE1C8377AE09B537C54A5AB2590CC63C390 + A6B3832DED456110AA05C8ED16B671EC57AEE3F62BD0DEED2795370059C5B630 + 47E029FCF3D1631ED58E229BBEE7590E1A245D2D8695C5673803C1DC23F7221F + D7AC7F1A62A8B91155A5D46209350A1BEA5E0B69B902E1A209A90D6E233FE28C + 8338DF038754994D20A9CB254B7973E6872ED325CB2AF5EA52A8CF92E7D31646 + 4754755133B768D656520EE5D68B3D07797CC1995E70C8F54FEB43C9BD7B442B + 8968E6E38EAB4DF7F3DD19B2E51DCBAA5A74332D4BED8D8D4300DA5935DB6A18 + A9AEAB93ABD47AC057CE698F8E53A7256A97D899CD9085B7924949A26240AAD2 + 3859F63A33926E4439A30DDE9B29361221A120EC5CC197CCB292623B09160D51 + 2AC0BE80CF3B7E7D7E3F36244A317EF815CFE85C6BE65E5F2EDE70B5A7B9E1BF + 7F4D7D54B7B73F6B3E23D3811917466A945A8E6048FB4FCEE496F2E802D85A31 + 2A2B57F04EAF0A56D21F9002AECD138D998EFDB5A274E89EB8BC3E79A7DB0CF9 + C2A8A2466A6FBA36A894DCEC33D5E557A5661FFCC20CD24E1FE7B7066432777B + 50362C74D65A46A97EE18253BF2857279D04EBEF7E9EF0E75FE04206074D5E13 + A3E0316AE017545AA5F577D6A48D2CD50C5E42FFF3506AFFFC17A224E7495692 + 9087B8CE97BA48FBBDFEF369790585F0B8DA9FB195CFE325E77EB8181CEAF061 + AEFEC0B78A4FA28666AE30CD5DD3BD77943291BDE610E68312FFBF42DB542B21 + 9992218B496533E742FB4F2AD2A6E511A55B9A5F60F0498A76BE1006976133EB + 423221D7203045EAD13B6A85F9AAD6047E512AD6795E270DF1932FB480ACC058 + ED1C7E733B2B942225305949E59029D3E4B98B1466696FAE230098AF80FF4B49 + 836415812FF29E0F3C251FDD7BD31736FC54A935D3D64CC31B6356B8654A2AB6 + D71C23104B54BC71FA9314B8D0698946157570955A753FF9E293280761AC8ED4 + 9524263C757AAEA2CAEB1366B920AA4D85AE23181990295D8EF53FA62079753C + A7B7B6D75E7DF63E936B336D0D8FE15DFEA6A1917A4D1AF1055F707539F84EDB + C8432AE1E381A74EBF2153D4FDF427EA998B3C8237372ABDCA2EA98537332EA0 + 948AB966D69855EB459FA0B0C00A3965349A4AFBB3B9D9474FBF71BEE20DDD07 + 0A44668C74DCFBFD737655B08C696FD3BD774A851477EABC3C06523989B2D379 + E52D4C8E77CC3D73565C92E6A926877AE147D3C442444BE7B29996F23D823EE1 + 225511F28CA1610788AF1F32F8705DB1229911C1E7901EA061D14C4A9DF67C4F + FE698706AB675C9B0D1554DA86577EEA7C20A5887F80E8947E1216D55A43B3C8 + A9174841564722657D42A75CD2B42AAB8F0A74BB96B2577CC1063D253F832FF6 + 3FB6920E1C5B1956DFE0A3C5B92EE2306D1D33FB0FBBBCB76B9AE99E4369669C + 30C51BBCEEF3DD3592DEA754B9242A4A79BD53CC995F6017E11DEDABA997E3CE + F3F4DC005C04D79F5C6F292022DA05C69E49045BB392D1A683472E0511C4B71F + 99B992A24BF179A5E646459DC79B6BB4047BBBFD59772DCF9D191211AD7D833A + F3E70B544AEF7FCDE6B61F79996FB2C437AED21FEEAB55DC6DE44EB302E46623 + 72870CA2A7061F52E7C9C8B36AE43B6D5879A5E632FD75604E9B2FDCFE7C0EEB + EF8708ED1C215A51CA425A10EC3DEB80A924D26F0CC5757FADD729D3AF606532 + A13C854FAA27E9C85D3D66AAFBF66873A38B0C3F935F3A5240423AFECC385FA3 + 59D1DAD3B1E5AC6875CA92143E6CE64A31959AC63FCA3C70EC23DE8F22F6BE56 + 437FAD7A5A7798B137BDA53FC04FE91556DF04794AD6421AD8D3FAF222AA8F79 + 21EB491E040ACA90FE7E32D29F08FF36676691660FAA1D81177339F6A572C71A + 2971A5AA3A7AB340AC5C69514D91EF538F104279EAF4792E900AF8315CC8E06F + 09DE4CD27EF394EACB1F7CB29F26DCD3FAEA5BF5B50C2109EB43F8EBF521EAD9 + AADAF355FB0FFB96BE59A96B4F725F15752B9D3A06E15B5269B36706D5384582 + 9168D2574586E4042E352104A4C7E440A59C474FC3BE75ECA879C74C75B49779 + 34485DD35A387D98F29ADC6F4E5B92D54DF8081309E597D57DDDFECB20842B95 + 6D9EC62909823654AE24B9B5D0B575F831285175BDD2702854257AB42159BBB9 + D14C9646568A379702170559CBA7D288695D7586F51A7388DCC28FFD42F711D3 + BB7297BA9FFCF5949C491BE5D1ACC490520EDB473F3C2EC347EB4DCF0EAFAB97 + 8BA1F77F13445A1E177DAAC0448FD54A594F95C6F549F7E2A7F575FBD4F98EBF + A5A075D87E6F377355B505EF61538D9AEE71BCF894D7422888EFC54A53D63D67 + 5251F2A9AE9E8BE6C1F281FF099BCD97D5BE2C509CF4FF31AC9C39A59D4A725A + 31E683C9A7D454F44CCDA8020525574D979AADDC5CF767EA011703A8F656FDDA + E7F32B501D2ABDD082BFCC2393045CED09335DCCB4206E7ECDCCA48655D3C588 + 4A17ACD5904B1B35058F9A2FA73F6A4B7BEAD600B3591366CAA3FB266D944256 + 6D54236AA540905926067D551A0E4A9B409BE9A85187D006F90557DF4589E0A2 + 7E35E14379AA96A13702EBC3E71E4BF877C300E25F4CF8102322FA84CD4AD849 + D34520AC56493D89F72888AB2877317BCA94F6C5571F9A4DA32C86E27796934B + 2E30D553332019824C4FFFAA1D7C6A4FE722B3D3CECC1E99AD8BFDD587FA23CD + B467B47CF5A1F61031ADDE58E0ABCD47CD7FA23D140D95FC6AF38499BCCF77E5 + E6098A5B7D6D32E000FD296A868E75D8F80E4FDAE970E8B2E2B3F64C344C66D0 + F3C380DA2295DC4735E7386A5A131DFDAF361A60F6E8B101B54FECFCCBF280F4 + D1A8483FD9ACF6E433391B8DB40F3391FF2AEB5F17A83B97FECBE2FFABC1D031 + 259015D4CEDB939FD6394D413BAB4FE735D9BFEE4A6001A95FED934765319934 + 3D34555DD6A98950F7C77F532D75CEA32C69D076FBA9B33D1646CA5608512F9F + 487ECBE0835E0B337C221762D933EA5C17CCE9A589A3F4D1AA4819701466C55F + 20978F8AF8F077B22699241FA9BF8F3C27193F820B05FAE828F25B2988CBF151 + 9C5873A0CF1943A19CDDCA7B587BF13B1C9D2FA2FB2746E5EDAB0FBF4A9C4C1F + E2E3439EF715EF6B4954A79D9EF9CA749AEC6475EA71A23EA5EA5D3BBF763843 + FF97B337FE5F7BD7135BE575E5CF25A9E3924A03D8F23FD088A85667516BB01C + 8F27B1149819B9C048F5826816291AA91DA116A2B240A8A29A45562CAA4491E5 + 0551612AA4D9147533A091230DA990AA26929BB11CC4547413B16061FC87E115 + 7731885801F7FCBFF7FBDE7BC62430DC48F7F8F9FBEE3DFFEEEF9CCFF8E1FBEE + B9971FC7FC68F8BBF3FC718760703A2F78A905479C03C6E0CE28E5F6FCCFE745 + 63D4EFCA7FF388ACC2E1C08E90FC08A501053F9F67B1AE10B427E3CF088DDEA4 + ACA0DAE89B404EC3DFBC180B39B9C81D62113995B95B61B95598BF08ACF2AB23 + A055F1E7DF00B02A7EFBC628467FFB223F0CFE989406E49FA2DF4AE1BCD6CFEF + 9B3FFF46B261017DA67AFEC8FFED7B93B5C9F511C94E88477E3E258A49F0702B + 6CADFC4F7969DE28254F1FE4A3E8576F3C5245408EBDF0118CCDE18BBF60EEB5 + 8FC6E085CF009B2CB0DB9C5D5EFB482E643AA717166D44AD15D89F3B6A03F2C7 + 574700D1CC3D3F82A890A80B206D6D48E7858F9E1F21D8F8922890E6E8EF6F62 + 684B87D4C990B9D8142D0A855D70E0E0BA73AF7D268EE752276A8EB7A0ABF147 + AECAFDD5DF8D204C7E5D0569881CA831425C6EBFFA19B05C6D5930F2C2EF463C + 4CE18D68DC575909D4ABDC4C789536891D011D54743F1F63C9082700C2ABF0EC + 8823BE5A635439CC7DA620374BE155DA5F953606BCA5DB02CB96ABB2EFAA7CCB + 97B678C33B9553035859376D5517A278CB9DD98EAEE6D6F4AA14997571F8A74A + 97403C8A4447E02AE8A457BD13D69DD2D24C405DC5C754AD980035DC798B41D2 + F9F6F7E32501641DBA5704CA6DE6D54C3750686DD0F271FFF3FD4EC0B13AB9A7 + 6DBEA902354C4E5E3AF9D669026177AAEC7E6734B8AF41984BC5DC190D3AEF5B + A08A2F6981A48CA120483E8867637AA48687F4085E6B7664DDD7B06A6A29C8C5 + 814518E0DB4004872C622C02303BE265EE805A313B95E35D5EAD6206374DF5DB + A723FC439D33B058EFD638A96C0052B1B7625C200DE2494D27489F4DF5E29E44 + 595B1A097122C81B3048D7416B692712F6E465CA37065395445CB553A9332B52 + 75D76C906A04AEE61E94FA1806A824ED41660CF2107211167344AEB6D6B44135 + 0231A95C457350BC38472C6F98BD04A52309C82A0DDEA8F6AAFD563AAD1815C1 + A0459FA8B57731982AE325FCA51CF4230712F9614FAFF3C93A17ED881DFE02E9 + E9A13B7C6432DB5C8CCAA2E0773DFA465D432A8F4D314F756A7AF80F87FF5FFF + FAF22C6C8EEC8CA50D997C5ED4EB175D42382F265AF13C294DCFC5D40F43BE28 + 0DE1848EBE8BB47C6896CFAD90B32BE85895F13EC63D2E8B9FB8D9B7EC3CD6E9 + 13D7E3C00D35E0BBB86337A0524902DAC88BED542B92F870C7769F0D1DA9962C + C74A1B51320BE3299FBBAE393B6E225D31D5C69BA5002423EA469CCF4A4AF845 + 682D3B94C9560FB5B27B6465E7D3F6B4FD6EBBCD27BF3869ECA1D7BC56F707B5 + 819D675BD96EBF1B453100DF6C340DC9BD256E55116A5970872DB3157AA11DDD + 957D4353CEF6EACA05D5B89B6C80AB0A77FD09D886AEB01DDCD8B6CCF5CD736D + 0B5D91DF8564F33F9255412E35865AC1A50F34E367B0E9A7B14BFDD5BEB2BE0C + B5B00F0FFB917D7D68A91FAF5DD8A643CCE80AD8C3167F72DD4577610E01ABF3 + 47B162619FCB9A07D6C30EF4F380C4663F128C749509F6ADE824193C06C2E8DC + 2EA2EB5DE17F6FBEFCC99D5180A1F7817662FEEEBFFDE87A5703F1D136C48D2E + 68743586C8423ABC816F17F31A881D1A43FF4E33C7071AF33F586A000345AF88 + 75E647D787DE7FB9FF3A747144A8CD310CD1B3BA0E4304BE313F2A4214030F72 + 7D485384E3A373491D3EDBA5F05FA3F3DD776896A9EB83B50E9A42BA79676DE0 + E5C67CF7228CCFAFC1246DC745F339071A300FDD8B938D796CCEAF75607F9676 + D31BE599B279E4F15C154F10E277374633DFBD5B2A69751AAB7B77D72777D0A0 + AB015D9FF0E6CF5DC009829B2FC3078C43A620310DB4F4E90374828ABB6F86FF + D405704CB195106D3BC6DBA721685618D83D2B1C64CD76AC7574DF610DB11E67 + E8480766487F7416263FC0E0D413EF82324060D6F8BF681DD00D8B1DE8197DE0 + EDE66E9E049D1DBF79A77B91C645C9E8EC38823C731CF89BAE726F4567808478 + 3565372256A55DF773262A40C5F2788DD126531DE13BC7B5EA06BCE1ADFADDE9 + 38574E2214854E0AA2C4BC68C3F0AC61E0D92246AD57712A9ED49F70F05FF777 + 64531ADB36871E953C147A80F43C60CDDF94D6E20E366BFA506D431BEFBB2A33 + 75539E8E542CFECCEB1A408B37BDB50A2FEC83C7A1763FB47161679356C7DAD6 + CF15A3B13B9EFF7C2DD1EA10A06B95314C8772F098209F0D857DBC16712B9F49 + 2057599E08F77499E2D67BBEF449D654BA16E84234D337DDADEE0520B185C4CA + 29EAD60D139D4005F0F7B6262CEAD802CB5A44F76CE9E5D6D894F355CC486D24 + 6E374B98A6AF2C59051907BAA72A2CD731EE41189677A5A5BFD8BA64EF63FA4E + C5D77B7F52793FC87B5AFADE2AEF6D9B20F352CB479A091554F3A50B52C33F2E + E93B2DBED097BEAFF28984F22E0E864499F2F6AED1880EEBAB1753A1B8FF04F6 + 2E6D8AFAA69E44B744A7EC6EADE7C0CCFA49DC1F7811AEBCE52E5904B155A154 + 41C2D2A68495F8F1AEE9540C95A37695612B23738A882D20332706D9E8D24B83 + 0A6DB8275DFE5F9035A291B0A2559709532572C6FEC46B4B6AB413D440D22618 + D0A5C5CB425D8D784DFAA41399FC3F36E16B6C20A01AA992A875095E6F01687C + D2933CB472ACB10AC8CC8940EED8CCAAEC670A72CF1F79134BDEFA90B7BBA43D + 23B5211B48CA3E97DA2252B128705D9F6EE3A80ABE17A56A590E521DD81117AC + 2749B2C1AA76618F60938D182BF86BDD966C898250835D4D4BFA6A61BB669A86 + E4412E604DD572535382B0E7893D947A506D63563CA9BC956E0C2CEC19BE06C3 + D7F8C2BC61C0FB705C169D345DA5221DAE2FA17EF214BE0F887058CB3F18DF30 + C41EE3E01814BDC8AE5964161F5BA18287386CDED870D8021F161D0B6CD886F4 + 4093813D0FC30852E9DAFD4ED2F8589701E2FDE3B822D0C310DEB5FBAFC4360C + 7B85CBB05F1576B4E7D860B8CA30637BA57EAE7958C3E1AFE8C8AE8F6DA93EC4 + 35FBC84DFBC00BB5057C5C40FE8AEAD8326E7989445C68ACD2162DEE9BF52B9E + 978F7514104B12800C1678972FAED805AEAA35E266D26F458F103F822CD066C1 + BEB75FD164E8CF2455565945B11C89CB70ED25CC5874CC65D053CAE1A0B40819 + A42D25CA522B2DC5CA27B5C0DA542D25C2B1D69465C9028F499A3A195E3A032B + 70FA8C578F4901D18A54CA81D61AADC4BA2855590129DB8AAC15D74ED4B46A4A + 9AF036A15C79FBA7BD277FDAAB5CB20214E8B0BD527A7D72CA13B78246E1A5B7 + 4E03433C7E66A557FEF2674E2FFF757DFC2DC4DFBB72FAAD5E1293026DEB8D4C + EAA202F2B123AA675650F7B4FC590D1C22FEE98C0CD289B1CA1FEB6FF546F85E + BBA67F71AF9C1600D461EF2BE1A52FF363D5969A6742646240E605EA8ABC19F9 + E954CF85D43DF394403E594290742261FDC2776B6917126113B5153C21902007 + D2D1797F7CDB6F17E3F159800ADABF55C4004145FBE9C840B1601590FEAF5551 + 8E1404D1F9B5BB11FBFD6059F0EC280BF687A370BBA78ABBDE7F4C8A65AE9B21 + CB06B77FF3334DD16F7EE6D9D9FFAF7F8F206FF7DC067CE1B73514E96DE2F438 + 665661AD1E15DA459521B6414462A63DB68D19483DF7F83526284D55380470EE + 28E845286956DA8F491A92775241C2D1A0C1AFB721117027C0A17347CFF51C3A + 07472F51F312457D945874BD74F4DC211252D48780788AFC12F5892E91B90649 + 7714912F56C5FE25B580A8235FA6DF94211CE55074A7994CB29C64F836C20046 + 4C8F993051483DF2F048CAEAB745431F0FA58105D411A47008158E9EE3278E4E + 88C30D16C83828E4F0E507058D743404A93F3847CF85DA4F4613297EE8A9C4D0 + D36C628AB0F1BFBBD63F88743F74AE27FEC482FEC4B324543CB4995FD99836F9 + DBC0467C5C3B4840B6C257E7B59D23BABD07257C81FAECCF239D6E06A44F38F9 + B458323D16E7C85299CC24D9F41AF8FC95735AF4A2D2526D560BACD77471DB00 + D51946FF38EDD36F01F8EC5E6DEA92189FC67A040902C03EA92342B1B34D3B9D + 374C263CFDA3BC746A94EC3D61C13126A33A6068FE3CB2955AF354AA98D612D0 + FCD9E6527FF2F162CC443A368EF769788CCF54E3A61EB677C81730FD2214FA7D + 8B12DDFCC4362DB19D55929B8DE6BC04ACECD0E23B7F34595419B68DC9BB3FA9 + 7A7307D1146FE197572E1F9CF8C9BBE9D63AD8BA7259B67D3978D9B780A1B31B + 4902973D0C60B9E81CBCAC7BDD54BE0E4E3433AD1FEF90769396E10FBFA42376 + E91C603A8693369E9A40307A82F104F899B1C4BBFCAE3401C15E998827085F26 + B4AC8E7C625EE62DCAD8E3849CEFC9E14D6024078599444CF96097B241CE1576 + 6368C57BF8173A28544FDB667C1357ECEC6D104800C76EF0F5ACDC13F4A0F827 + E08AE9AA33159A6798B0A8A2738D3F65A88904066681202BCE0831A33E76565F + DE152226543866660145A1C4343128A7528A9584893C32886A32D0B1B313F180 + E7C453F8EFEA3F2471774CDAC0A7879E6560C2D6F3444D03C4B71E8E29DF67E1 + 98A9709357F4B10733C2960044508328224CFEB0CE0A36D0167B0ADF9B1B3BC1 + BB2DD1965187C74E1CBE40CD69380156254E02EC4BBDF87454D65D9AF0FEED3F + 4807D4D068FA84DF95CF96DFFE2177542A4ED4210B349869F714BE877E75F9FE + 89C3BAB67F0E2E1CA6A5F2CC00AF128031D2BD40AEA6917D010ED3F2FF0BD368 + 7081761E39C1DB8FA0118AC5016A5394E683CC2E10146A9335793BCCE302872E + 150A6324BC30AD57EC866F4A7105F0C1501B944A48C502AB999C58FFF3C38AB2 + 9678CC893AC78BB75FE84C2D1F3DC5750F7363BFD8A35AEC11E692029139AB05 + 6129E20EDF3C29933900E99CD093A18DCA4ADA5494A42D8E892EE13D9B19EA5B + 9E82779661EA1D3A11EE944C51E904D2547D4ACB67AD40E7A26C6E4B0255ED93 + 533E61E57D100B1C496D13BF09798F35C27F2C33C2533E99A5536288F964DF32 + F4D1F61FDCB2B92FDA3073B94F2201D2C0E158935CF49DA2D1DF610932FA4EC9 + 84DB3BA4D6B72C8EF8E83D76B08C0249033581954E71D42CB059B6A9F09E5B68 + 43485AB19FB20563135B028A36D650EFDEB57CA44EAA3A1EF2B23CD7F01EFFC2 + 01FD3D30EDBF1C74A320E2309B24F22DFF8CF99FB2FC364A55ABE0D5B0C6AD2A + 5474CD736A72623A703DBDFC8E13DEB4C09CAEFDBEF3DF8D8C0D9268E26F380B + D60D78388FDC829D8EBF2535416C2F20635CFECB15C2D720334A13A6941FC816 + 8420BDE649EB9EB8B6EB6AD2E0822E80E6EAA8A4AF26D1CA9D45D564A0BA93AA + 5FD7565EF85A6448159AD59369FD1968119A94B425356EA6EC256FF265456A16 + A78568457123B1602D81222E204D892508AFE16F0DBD14BF69D19B35156C9D94 + D52415F057ADCECE83F06B745FF5EA8356D48CAB20B7AD6E5BD5865DF19B3B2A + 50B62BB6A0F6922FA38E3011A4E20258DDA65F11123249B46A70234F182CDAE6 + 0C88B14947CD2D0B6C9E283B1B9D82A6874FA35BAD24241C9061B7A995AA3312 + B657B620DDA67AE6299AAE6E4B78160C40A2E3836A2A20C62B6CF3A449D16849 + 1A0E001D780E7C343B35567FCFA7B5137DF8D76C2567B6A37475DB877B952726 + A241BEB5ABA668B1FA7BD8AB8AE458878E793003494A14C42425C384038AC168 + AF9DD1BE57CE48A68E2A300452370389CD6CF67A347ECC7B127C850731A40F5D + 4955455D2CD47BF83A3C598A21B493579BADB5532DF8F089837C1AF4D503F9DC + 837A27E15484CF0224011050F0407671328CF4453778E06A82D6EF6037B1550F + EEA24D0A12667322EA9AE1EBCFE1959C02DF9F93E603C567181F38E0282025FE + 667AC07E4C8941AB4A6C45A1E826F60F2A8FAE661DBE01EDE9C1738FF554EAEA + 8ABBCE33F603CDBFAA58A25CD152021B83CC85BE1A20F77BC91B57D169BDDDF8 + ACBE121A6F5D3638BEC96AC2CDEAB502F90D290884F1B490CF8BE7A420D0F05A + BDA05CC7B5E2CE6AE73450EE79B460117BF495E0ADC6AE92A67A54E3617F0DF5 + 2C24D57D097BBC5E2638EB005B95019A943D56AA076368522C9994024A13AC18 + 504A10B111469B1620A62B0CDBD3066BF6366DB7399AA54CA62B1865B12780AE + DBDC515D25982E83AC33E43CF4DA5A4C6BD6961AFAFA48D87895A6810954FD14 + 578D0AB23FA657E5C665A61613C8C24C90505CAAC2F4B4F6B8EE744744EFAB28 + 7D29A52C77D586ACF51446789C8D9036A41DE986CD9565C2E91AD8945B5D471B + 59555D5A89FAC4403E45FAEA826C71ACD13307E98744C9713F7CA0C6A4A19D01 + 3E22CA0E64E2038B5871261E2EE5E736252737A970867D4596CADBA6616632BD + 6913410A281E5AD8E8277C57BC1BE2196D8A9AA34409ED90BCCEB1CC88581A1E + 6CE40A6FD260730240CF699AB1B1241A9884880526C3525887B01E80AEB4DA81 + 7BD4229EB1AB3449FBACB20A7F6340A2C3576FBA1D221097FAEC24FEF7D721B1 + 9AD4B4E095E2D644908CC087653A5C469662E0EDD640E0C6E2CE5B03A07C946F + 59973BF6916F10D8FD220C30842DEB0C11D6B73C5CDC49F22D0F0387B2E52190 + 39EBD27E21A8C802E41BCAA0C2B0EEE1A0946581DC869505EEEDBCB50B9D0658 + D805EB8889F7C809DC09EB8B406DE0ED7310C5FAE200693ED4349094C3D28D84 + 7833A181104072878618059A84F55B03049CB7270A0B641414262146D12D76B4 + 850D2830CD1DEA2DAF2FEE5AD0DD89762D085A04A9C8F5119948BE772D501DAC + EF5BB40B47E77CA27B20E3B020361CE83A1BD076427843E902AA2C320B078685 + 9D14352CA2001EF263E3AADB9D9CAE051E08DBE193A7FF1B24A1647725F07D98 + DA90E5059FC6FF2FC82F46056401991B159005646E54401690B951015940E646 + 056401991B159005646E54401690B951015940E646056401991B159005646E54 + 401690B951015940E646056401991B159005646E54401690B951015940E64605 + 6401991B159005646E54401690B951015940E646056401991B159005646E5440 + 1690B951015940E646056401991B159005646E54401690B951015940E6460564 + 01991B159005646E54401690B951015940E646056401991B159005646E544016 + 90B951015940E646056401991B159005646E54401690B951015940E646056401 + 991B159005646E54401690B951015940E646056401991B159005646E54401690 + B951015940E646056401991B159005646E54401690B951015940E64605640199 + 1B159005646E54401690B951015940E646056401991B159005646E54401690B9 + 51015940E646056401991B159005646E54401690B951015940E646056401991B + 159005646E54401690B9D15702E49F01D151EA2F0513EC9F0000000049454E44 + AE426082} + WaterMark.Image.Layout = ilTile + object lblFinalizar: TLabel + Left = 168 + Top = 344 + Width = 219 + Height = 13 + Caption = 'Haga click en Finalizar para salir del asistente.' + Visible = False + end + object Label7: TLabel + Left = 224 + Top = 86 + Width = 254 + Height = 14 + Caption = 'Copiando fichero CABVEN en el servidor...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label11: TLabel + Left = 224 + Top = 136 + Width = 252 + Height = 14 + Caption = 'Copiando fichero LUGVEN en el servidor...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label12: TLabel + Left = 224 + Top = 185 + Width = 254 + Height = 14 + Caption = 'Copiando fichero ARTVEN en el servidor...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + end + object Label13: TLabel + Left = 224 + Top = 296 + Width = 223 + Height = 14 + Caption = 'Cargando datos desde los ficheros...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Visible = False + end + object imgOK1: TImage + Left = 200 + Top = 87 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A00000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000001DC4944415478DA63FCFFFF3F032580912C5DF3 + 8539E438B9E2DFFE78FF95640338E6F0C95B2B9BCCFAC1CB617EFEE6B170920C + 10582C68EBA86CBBF425DB5FA1B33FEF07FFB4BEB693680394D7AB04D8C89B2F + BAF1FB25F3F9FFAFC27E595CDA4A7418C8AF920DF7D7F59B73E6F32DD60BBF5F + A57EB3BEB898E840945A2E11E4ABEDBDF0DEEFD75C477EDCCBFD6E7D653A50F8 + 3F510608CE13B0F537F4D9F1E2DF67CEA35FEF767EB6BB5289AE066C00C74406 + 3E265E4E7526C6EF97BF2432FC008971CDE190F7D4F13CC8CCC126BFF3FDE5DD + 1F2F3DF065C8FFF613C300D14562FA96CA668B39F9F83577DC3FBCFAE359AE38 + 06A147CCB65A469BD5C5555D767DBAF2E6E5CF77963F9DEFDEC5E64A46D1C5A2 + 21FE7A3ED3595958440E7DBEF9F7DEFD4B61CA5C921A568A562D073E5FFB7FFF + E5DD98DF41AF96E3F226D80B7A1B7402EDD5ED563DFAF694E5F0ABAB777CC4CC + 25EFFD7AC17DFEF5CD2D5FFD9EF821071A560318EA35989CEDA5762A08CBBA3C + FFF2F23F2350F8C2AF675F5E3FBA6BFE2BFECB757C010D8F059E85BC36E106C1 + FB9F7F7ECEF298E1CBFF9B6FEF4EFFE5FF229B503423A2B15E83C5C541FAC46B + F63F46F7DEDCDBFFF9E9933886CCFF4F89370008F817F0E633B2B2C97E78F1AF + 96A1F8FD77429A410000C7D2C22769B7653D0000000049454E44AE426082} + Visible = False + end + object imgOK2: TImage + Left = 200 + Top = 137 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A00000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000001DC4944415478DA63FCFFFF3F032580912C5DF3 + 8539E438B9E2DFFE78FF95640338E6F0C95B2B9BCCFAC1CB617EFEE6B170920C + 10582C68EBA86CBBF425DB5FA1B33FEF07FFB4BEB693680394D7AB04D8C89B2F + BAF1FB25F3F9FFAFC27E595CDA4A7418C8AF920DF7D7F59B73E6F32DD60BBF5F + A57EB3BEB898E840945A2E11E4ABEDBDF0DEEFD75C477EDCCBFD6E7D653A50F8 + 3F510608CE13B0F537F4D9F1E2DF67CEA35FEF767EB6BB5289AE066C00C74406 + 3E265E4E7526C6EF97BF2432FC008971CDE190F7D4F13CC8CCC126BFF3FDE5DD + 1F2F3DF065C8FFF613C300D14562FA96CA668B39F9F83577DC3FBCFAE359AE38 + 06A147CCB65A469BD5C5555D767DBAF2E6E5CF77963F9DEFDEC5E64A46D1C5A2 + 21FE7A3ED3595958440E7DBEF9F7DEFD4B61CA5C921A568A562D073E5FFB7FFF + E5DD98DF41AF96E3F226D80B7A1B7402EDD5ED563DFAF694E5F0ABAB777CC4CC + 25EFFD7AC17DFEF5CD2D5FFD9EF821071A560318EA35989CEDA5762A08CBBA3C + FFF2F23F2350F8C2AF675F5E3FBA6BFE2BFECB757C010D8F059E85BC36E106C1 + FB9F7F7ECEF298E1CBFF9B6FEF4EFFE5FF229B503423A2B15E83C5C541FAC46B + F63F46F7DEDCDBFFF9E9933886CCFF4F89370008F817F0E633B2B2C97E78F1AF + 96A1F8FD77429A410000C7D2C22769B7653D0000000049454E44AE426082} + Visible = False + end + object imgOK3: TImage + Left = 200 + Top = 186 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A00000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000001DC4944415478DA63FCFFFF3F032580912C5DF3 + 8539E438B9E2DFFE78FF95640338E6F0C95B2B9BCCFAC1CB617EFEE6B170920C + 10582C68EBA86CBBF425DB5FA1B33FEF07FFB4BEB693680394D7AB04D8C89B2F + BAF1FB25F3F9FFAFC27E595CDA4A7418C8AF920DF7D7F59B73E6F32DD60BBF5F + A57EB3BEB898E840945A2E11E4ABEDBDF0DEEFD75C477EDCCBFD6E7D653A50F8 + 3F510608CE13B0F537F4D9F1E2DF67CEA35FEF767EB6BB5289AE066C00C74406 + 3E265E4E7526C6EF97BF2432FC008971CDE190F7D4F13CC8CCC126BFF3FDE5DD + 1F2F3DF065C8FFF613C300D14562FA96CA668B39F9F83577DC3FBCFAE359AE38 + 06A147CCB65A469BD5C5555D767DBAF2E6E5CF77963F9DEFDEC5E64A46D1C5A2 + 21FE7A3ED3595958440E7DBEF9F7DEFD4B61CA5C921A568A562D073E5FFB7FFF + E5DD98DF41AF96E3F226D80B7A1B7402EDD5ED563DFAF694E5F0ABAB777CC4CC + 25EFFD7AC17DFEF5CD2D5FFD9EF821071A560318EA35989CEDA5762A08CBBA3C + FFF2F23F2350F8C2AF675F5E3FBA6BFE2BFECB757C010D8F059E85BC36E106C1 + FB9F7F7ECEF298E1CBFF9B6FEF4EFFE5FF229B503423A2B15E83C5C541FAC46B + F63F46F7DEDCDBFFF9E9933886CCFF4F89370008F817F0E633B2B2C97E78F1AF + 96A1F8FD77429A410000C7D2C22769B7653D0000000049454E44AE426082} + Visible = False + end + object Bevel1: TBevel + Left = 200 + Top = 236 + Width = 404 + Height = 10 + Shape = bsBottomLine + end + object imgBAD1: TImage + Left = 198 + Top = 87 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A0000000467414D410000B18E7CFB5193000002854944415478DAA5935D4853 + 6118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304451021A651 + 362821B1ABA49B6EA4460961D88542055D84DD65454159921749949625CC8F9C + 329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F9FF330CE39 + FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546031A3D6E5F + F329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B81AD2066414 + 14DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA9C27A4439F + 5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E9F80C335C0 + 5BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8E3C8655BD6 + 86D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F03AD1843C15 + 125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD85A01A8A1DE + C5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC3760A7351E3D + 061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB7E5F4CB482 + 2509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF298493275A60CCA08 + 8739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04E6035AF142 + 101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148D92E7BE794 + 778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED245A0729AC6 + A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56A08C20ED94 + 76027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301EAEB507B700 + 334968A6631D019C759C5F627780822413BA194312CDFB41958C137FDB405273 + 9000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F00585538F0EAB2 + 5B380000000049454E44AE426082} + Visible = False + end + object imgBAD2: TImage + Left = 198 + Top = 137 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A0000000467414D410000B18E7CFB5193000002854944415478DAA5935D4853 + 6118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304451021A651 + 362821B1ABA49B6EA4460961D88542055D84DD65454159921749949625CC8F9C + 329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F9FF330CE39 + FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546031A3D6E5F + F329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B81AD2066414 + 14DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA9C27A4439F + 5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E9F80C335C0 + 5BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8E3C8655BD6 + 86D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F03AD1843C15 + 125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD85A01A8A1DE + C5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC3760A7351E3D + 061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB7E5F4CB482 + 2509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF298493275A60CCA08 + 8739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04E6035AF142 + 101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148D92E7BE794 + 778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED245A0729AC6 + A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56A08C20ED94 + 76027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301EAEB507B700 + 334968A6631D019C759C5F627780822413BA194312CDFB41958C137FDB405273 + 9000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F00585538F0EAB2 + 5B380000000049454E44AE426082} + Visible = False + end + object imgBAD3: TImage + Left = 198 + Top = 186 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A0000000467414D410000B18E7CFB5193000002854944415478DAA5935D4853 + 6118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304451021A651 + 362821B1ABA49B6EA4460961D88542055D84DD65454159921749949625CC8F9C + 329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F9FF330CE39 + FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546031A3D6E5F + F329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B81AD2066414 + 14DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA9C27A4439F + 5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E9F80C335C0 + 5BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8E3C8655BD6 + 86D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F03AD1843C15 + 125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD85A01A8A1DE + C5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC3760A7351E3D + 061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB7E5F4CB482 + 2509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF298493275A60CCA08 + 8739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04E6035AF142 + 101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148D92E7BE794 + 778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED245A0729AC6 + A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56A08C20ED94 + 76027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301EAEB507B700 + 334968A6631D019C759C5F627780822413BA194312CDFB41958C137FDB405273 + 9000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F00585538F0EAB2 + 5B380000000049454E44AE426082} + Visible = False + end + object imgOK4: TImage + Left = 200 + Top = 296 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A00000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000001DC4944415478DA63FCFFFF3F032580912C5DF3 + 8539E438B9E2DFFE78FF95640338E6F0C95B2B9BCCFAC1CB617EFEE6B170920C + 10582C68EBA86CBBF425DB5FA1B33FEF07FFB4BEB693680394D7AB04D8C89B2F + BAF1FB25F3F9FFAFC27E595CDA4A7418C8AF920DF7D7F59B73E6F32DD60BBF5F + A57EB3BEB898E840945A2E11E4ABEDBDF0DEEFD75C477EDCCBFD6E7D653A50F8 + 3F510608CE13B0F537F4D9F1E2DF67CEA35FEF767EB6BB5289AE066C00C74406 + 3E265E4E7526C6EF97BF2432FC008971CDE190F7D4F13CC8CCC126BFF3FDE5DD + 1F2F3DF065C8FFF613C300D14562FA96CA668B39F9F83577DC3FBCFAE359AE38 + 06A147CCB65A469BD5C5555D767DBAF2E6E5CF77963F9DEFDEC5E64A46D1C5A2 + 21FE7A3ED3595958440E7DBEF9F7DEFD4B61CA5C921A568A562D073E5FFB7FFF + E5DD98DF41AF96E3F226D80B7A1B7402EDD5ED563DFAF694E5F0ABAB777CC4CC + 25EFFD7AC17DFEF5CD2D5FFD9EF821071A560318EA35989CEDA5762A08CBBA3C + FFF2F23F2350F8C2AF675F5E3FBA6BFE2BFECB757C010D8F059E85BC36E106C1 + FB9F7F7ECEF298E1CBFF9B6FEF4EFFE5FF229B503423A2B15E83C5C541FAC46B + F63F46F7DEDCDBFFF9E9933886CCFF4F89370008F817F0E633B2B2C97E78F1AF + 96A1F8FD77429A410000C7D2C22769B7653D0000000049454E44AE426082} + Visible = False + end + object imgBAD4: TImage + Left = 198 + Top = 296 + Width = 16 + Height = 16 + AutoSize = True + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001000 + 00001008060000001FF3FF61000000097048597300000AEB00000AEB01828B0D + 5A0000000467414D410000B18E7CFB5193000002854944415478DAA5935D4853 + 6118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304451021A651 + 362821B1ABA49B6EA4460961D88542055D84DD65454159921749949625CC8F9C + 329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F9FF330CE39 + FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546031A3D6E5F + F329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B81AD2066414 + 14DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA9C27A4439F + 5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E9F80C335C0 + 5BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8E3C8655BD6 + 86D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F03AD1843C15 + 125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD85A01A8A1DE + C5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC3760A7351E3D + 061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB7E5F4CB482 + 2509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF298493275A60CCA08 + 8739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04E6035AF142 + 101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148D92E7BE794 + 778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED245A0729AC6 + A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56A08C20ED94 + 76027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301EAEB507B700 + 334968A6631D019C759C5F627780822413BA194312CDFB41958C137FDB405273 + 9000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F00585538F0EAB2 + 5B380000000049454E44AE426082} + Visible = False + end + object lblError: TLabel + Left = 225 + Top = 316 + Width = 127 + Height = 13 + Caption = 'Mensaje de error al cargar' + Font.Charset = DEFAULT_CHARSET + Font.Color = clRed + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + Transparent = True + Visible = False + end + object pbarCABVEN: TProgressBar + Left = 224 + Top = 104 + Width = 344 + Height = 17 + TabOrder = 0 + end + object pbarLUGVEN: TProgressBar + Left = 224 + Top = 154 + Width = 344 + Height = 17 + TabOrder = 1 + end + object pbarARTVEN: TProgressBar + Left = 224 + Top = 203 + Width = 344 + Height = 17 + TabOrder = 2 + end + object JvAnimate1: TJvAnimate + Left = 200 + Top = 296 + Width = 16 + Height = 16 + CommonAVI = aviFindComputer + StopFrame = 8 + Visible = False + end + object bCargar: TButton + Left = 200 + Top = 253 + Width = 97 + Height = 25 + Caption = '&Cargar ficheros' + Enabled = False + TabOrder = 4 + OnClick = bCargarClick + end + end + end + object RORemoteService: TRORemoteService + ServiceName = 'srvTransfereciaFicheros' + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + Left = 80 + Top = 256 + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.pas new file mode 100644 index 0000000..c2d2d34 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteCargaFicheros.pas @@ -0,0 +1,344 @@ +unit uAsistenteCargaFicheros; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, JvWizard, JvExControls, JvComponent, StdCtrls, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxSpinEdit, + cxGraphics, cxDropDownEdit, Mask, JvExMask, JvToolEdit, cxGroupBox, + ComCtrls, uROClient, SyncObjs, VARELA_Intf, + uROServiceComponent, uRORemoteService, uDataModuleBase, pngimage, + ExtCtrls, JvExComCtrls, JvAnimate; + +type + TfAsistenteCargaFicheros = class(TForm) + JvWizard1: TJvWizard; + JvWizardWelcomePage1: TJvWizardWelcomePage; + Label1: TLabel; + pageRutas: TJvWizardInteriorPage; + Label3: TLabel; + pagFinal: TJvWizardWelcomePage; + lblFinalizar: TLabel; + cbVentas: TCheckBox; + cbInventario: TCheckBox; + Label2: TLabel; + Label4: TLabel; + Label5: TLabel; + edtCABVEN: TJvFilenameEdit; + edtLUGVEN: TJvFilenameEdit; + edtARTVEN: TJvFilenameEdit; + cxGroupBox1: TcxGroupBox; + cxGroupBox2: TcxGroupBox; + Label8: TLabel; + Label9: TLabel; + Label10: TLabel; + JvFilenameEdit1: TJvFilenameEdit; + JvFilenameEdit2: TJvFilenameEdit; + JvFilenameEdit3: TJvFilenameEdit; + Label7: TLabel; + Label11: TLabel; + Label12: TLabel; + Label13: TLabel; + pbarCABVEN: TProgressBar; + pbarLUGVEN: TProgressBar; + pbarARTVEN: TProgressBar; + RORemoteService: TRORemoteService; + imgOK1: TImage; + imgOK2: TImage; + imgOK3: TImage; + Bevel1: TBevel; + imgBAD1: TImage; + imgBAD2: TImage; + imgBAD3: TImage; + imgOK4: TImage; + imgBAD4: TImage; + lblError: TLabel; + JvAnimate1: TJvAnimate; + bCargar: TButton; + procedure JvWizard1FinishButtonClick(Sender: TObject); + procedure cbVentasClick(Sender: TObject); + procedure edtCABVENChange(Sender: TObject); + procedure edtLUGVENChange(Sender: TObject); + procedure edtARTVENChange(Sender: TObject); + procedure pagFinalEnterPage(Sender: TObject; + const FromPage: TJvWizardCustomPage); + procedure bCargarClick(Sender: TObject); + procedure pagFinalPage(Sender: TObject); + private + { Private declarations } + FCritical: TCriticalSection; + FFileService: IsrvTransfereciaFicheros; + procedure ActualizarBotonesNav; + procedure OnUploadAborted(Sender: TObject); + procedure OnUploadError(Sender: TObject); + procedure OnUploadFinished(Sender: TObject); + procedure OnUploadProgress(Sender: TObject); + procedure OnUploadStarted(Sender: TObject); + procedure OnLoadSuccess(Sender: TObject); + procedure OnLoadError(Sender : TObject); + procedure CargarFicherosEDI; + procedure SubirFicheros; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + + procedure VerAsistenteEtiquetasMontajes; + +implementation + +uses + uSubirFicheros, uCargarFicheros; + +{$R *.dfm} + +procedure VerAsistenteEtiquetasMontajes; +var + fAsistenteCargaFicheros: TfAsistenteCargaFicheros; +begin + with TfAsistenteCargaFicheros.Create(NIL) do + try + ShowModal; + finally + Free; + end; +end; + + +procedure TfAsistenteCargaFicheros.JvWizard1FinishButtonClick( + Sender: TObject); +begin + Close; +end; + +procedure TfAsistenteCargaFicheros.cbVentasClick(Sender: TObject); +begin + edtCABVEN.Enabled := (Sender as TCheckBox).Checked; + edtLUGVEN.Enabled := (Sender as TCheckBox).Checked; + edtARTVEN.Enabled := (Sender as TCheckBox).Checked; + ActualizarBotonesNav; +end; + +procedure TfAsistenteCargaFicheros.ActualizarBotonesNav; +var + bActivarNext : Boolean; +begin + bActivarNext := True; + if JvWizard1.ActivePageIndex = 1 then // Rutas de ficheros + begin + bActivarNext := bActivarNext and (cbVentas.Checked or cbInventario.Checked); + + bActivarNext := bActivarNext and + ((Length(edtCABVEN.Text) > 0) and + (Length(edtLUGVEN.Text) > 0) and + (Length(edtARTVEN.Text) > 0)); + pageRutas.EnableButton(bkNext, bActivarNext); + end; +end; + +procedure TfAsistenteCargaFicheros.edtCABVENChange(Sender: TObject); +begin + ActualizarBotonesNav; +end; + +procedure TfAsistenteCargaFicheros.edtLUGVENChange(Sender: TObject); +begin + ActualizarBotonesNav; +end; + +procedure TfAsistenteCargaFicheros.edtARTVENChange(Sender: TObject); +begin + ActualizarBotonesNav; +end; + +procedure TfAsistenteCargaFicheros.OnUploadAborted(Sender: TObject); +begin + fCritical.Enter; + with Sender as TSubirFicheroThread do + try + if Pos(FileName, edtCABVEN.Text) > 0 then + imgBAD1.Visible := True; + if Pos(FileName, edtLUGVEN.Text) > 0 then + imgBAD2.Visible := True; + if Pos(FileName, edtARTVEN.Text) > 0 then + imgBAD3.Visible := True; + finally + fCritical.Leave; + end; +end; + +procedure TfAsistenteCargaFicheros.OnUploadError(Sender: TObject); +begin + fCritical.Enter; + with Sender as TSubirFicheroThread do + try + if Pos(FileName, edtCABVEN.Text) > 0 then + imgBAD1.Visible := True; + if Pos(FileName, edtLUGVEN.Text) > 0 then + imgBAD2.Visible := True; + if Pos(FileName, edtARTVEN.Text) > 0 then + imgBAD3.Visible := True; + finally + fCritical.Leave; + end; +end; + +procedure TfAsistenteCargaFicheros.OnUploadFinished(Sender: TObject); +begin + fCritical.Enter; + with Sender as TSubirFicheroThread do + try + if UploadOK then + begin + if Pos(FileName, edtCABVEN.Text) > 0 then + imgOK1.Visible := True; + if Pos(FileName, edtLUGVEN.Text) > 0 then + imgOK2.Visible := True; + if Pos(FileName, edtARTVEN.Text) > 0 then + imgOK3.Visible := True; + end; + finally + fCritical.Leave; + end; + if imgOK1.Visible and imgOK2.Visible and imgOK3.Visible then + bCargar.Enabled := True; +end; + +procedure TfAsistenteCargaFicheros.OnUploadProgress(Sender: TObject); +begin + FCritical.Enter; + try + with Sender as TSubirFicheroThread do + begin + if Pos(FileName, edtCABVEN.Text) > 0 then + pbarCABVEN.Position := CurrentBytePos; + if Pos(FileName, edtLUGVEN.Text) > 0 then + pbarLUGVEN.Position := CurrentBytePos; + if Pos(FileName, edtARTVEN.Text) > 0 then + pbarARTVEN.Position := CurrentBytePos; + end; + finally + fCritical.Leave; + end; +end; + +procedure TfAsistenteCargaFicheros.OnUploadStarted(Sender: TObject); +begin + FCritical.Enter; + with Sender as TSubirFicheroThread do + try + if Pos(FileName, edtCABVEN.Text) > 0 then + pbarCABVEN.Max := FileSize; + if Pos(FileName, edtLUGVEN.Text) > 0 then + pbarLUGVEN.Max := FileSize; + if Pos(FileName, edtARTVEN.Text) > 0 then + pbarARTVEN.Max := FileSize; + finally + FCritical.Leave; + end; +end; + +constructor TfAsistenteCargaFicheros.Create(AOwner: TComponent); +begin + inherited; + FCritical := TCriticalSection.create; + FFileService := RORemoteService as IsrvTransfereciaFicheros; +end; + +destructor TfAsistenteCargaFicheros.Destroy; +begin + FFileService := nil; + FCritical.Free; + inherited; +end; + +procedure TfAsistenteCargaFicheros.pagFinalEnterPage( + Sender: TObject; const FromPage: TJvWizardCustomPage); +begin + SubirFicheros; +end; + +procedure TfAsistenteCargaFicheros.CargarFicherosEDI; +begin + JvAnimate1.Visible := True; + JvAnimate1.Active := True; + Label13.Visible := True; + pagFinal.EnableButton(bkBack, False); + pagFinal.EnableButton(bkCancel, False); + imgBAD4.Visible := False; + imgOK4.Visible := False; + lblError.Visible := False; + + TCargarVentasThread.Create(ExtractFileName(edtCABVEN.Text), ExtractFileName(edtLUGVEN.Text), + ExtractFileName(edtARTVEN.Text), OnLoadSuccess, OnLoadError); + +{ TCargarInventarioThread.Create(ExtractFileName(edtCABVEN.Text), ExtractFileName(edtLUGVEN.Text), + ExtractFileName(edtARTVEN.Text), OnLoadSuccess, OnLoadError);} +end; + +procedure TfAsistenteCargaFicheros.SubirFicheros; +begin + TSubirFicheroThread.Create(edtCABVEN.Text, OnUploadStarted, OnUploadProgress, + OnUploadFinished, OnUploadAborted, OnUploadError); + + TSubirFicheroThread.Create(edtLUGVEN.Text, OnUploadStarted, OnUploadProgress, + OnUploadFinished, OnUploadAborted, OnUploadError); + + TSubirFicheroThread.Create(edtARTVEN.Text, OnUploadStarted, OnUploadProgress, + OnUploadFinished, OnUploadAborted, OnUploadError); +end; + +procedure TfAsistenteCargaFicheros.OnLoadError(Sender: TObject); +begin + JvAnimate1.Visible := False; + JvAnimate1.Active := False; + imgBAD4.Visible := True; + lblError.Caption := (Sender as TCargarFicherosThread).ErrorText; + lblError.Visible := True; + pagFinal.EnableButton(bkBack, True); + pagFinal.EnableButton(bkCancel, True); +end; + +procedure TfAsistenteCargaFicheros.OnLoadSuccess(Sender: TObject); +begin + Beep; + JvAnimate1.Visible := False; + JvAnimate1.Active := False; + imgOK4.Visible := True; + Label13.Caption := 'Ficheros cargados correctamente'; + lblFinalizar.Visible := True; + pagFinal.EnableButton(bkFinish, True); +end; + +procedure TfAsistenteCargaFicheros.bCargarClick(Sender: TObject); +begin + bCargar.Enabled := False; + CargarFicherosEDI; +end; + +procedure TfAsistenteCargaFicheros.pagFinalPage(Sender: TObject); +begin + bCargar.Enabled := False; + imgOK1.Visible := False; + imgOK2.Visible := False; + imgOK3.Visible := False; + imgOK4.Visible := False; + imgBAD1.Visible := False; + imgBAD2.Visible := False; + imgBAD3.Visible := False; + imgBAD4.Visible := False; + pbarCABVEN.Position := 0; + pbarLUGVEN.Position := 0; + pbarARTVEN.Position := 0; + JvAnimate1.Visible := False; + lblFinalizar.Visible := False; + lblError.Visible := False; + Label13.Visible := False; + Label13.Caption := 'Cargando datos desde los ficheros...'; + pagFinal.EnableButton(bkBack, True); + pagFinal.EnableButton(bkCancel, True); + pagFinal.EnableButton(bkFinish, False); +end; + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteEtiquetasMontajes.dfm b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteEtiquetasMontajes.dfm new file mode 100644 index 0000000..cd43bed --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteEtiquetasMontajes.dfm @@ -0,0 +1,6759 @@ +object fAsistenteEtiquetasMontajes: TfAsistenteEtiquetasMontajes + Left = 159 + Top = 496 + ActiveControl = bImprimir + BorderStyle = bsDialog + Caption = 'Asistente para la impresi'#243'n de etiquetas' + ClientHeight = 376 + ClientWidth = 520 + 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 JvWizard1: TJvWizard + Left = 0 + Top = 0 + Width = 520 + Height = 376 + ActivePage = JvWizardWelcomePage2 + ButtonBarHeight = 42 + ButtonStart.Caption = 'To &Start Page' + ButtonStart.NumGlyphs = 1 + ButtonStart.Width = 85 + ButtonLast.Caption = 'To &Last Page' + ButtonLast.NumGlyphs = 1 + ButtonLast.Width = 85 + ButtonBack.Caption = '< &Atr'#225's' + ButtonBack.NumGlyphs = 1 + ButtonBack.Width = 75 + ButtonNext.Caption = '&Siguiente >' + ButtonNext.NumGlyphs = 1 + ButtonNext.Width = 75 + ButtonFinish.Caption = '&Finalizar' + ButtonFinish.NumGlyphs = 1 + ButtonFinish.Width = 75 + ButtonCancel.Caption = 'Cancelar' + ButtonCancel.NumGlyphs = 1 + ButtonCancel.ModalResult = 2 + ButtonCancel.Width = 75 + ButtonHelp.Caption = '&Ayuda' + ButtonHelp.NumGlyphs = 1 + ButtonHelp.Width = 75 + ShowRouteMap = False + OnFinishButtonClick = JvWizard1FinishButtonClick + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + DesignSize = ( + 520 + 376) + object JvWizardWelcomePage1: TJvWizardWelcomePage + Header.Height = 80 + Header.Title.Color = clNone + Header.Title.Text = 'Impresi'#243'n de etiquetas' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -19 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = 'Bienvenido al asistente de impresi'#243'n de etiquetas para montajes.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -13 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + Header.ShowDivider = False + WaterMark.Image.Picture.Data = { + 07544269746D617082960100424D82960100000000003204000028000000A400 + 000074020000010008000000000050920100120B0000120B0000FF000000FF00 + 000000000000FFFFFF005320060057230800F6E7E900AD9B9C003F3838006B68 + 6800615E5E0058565600E7DEDD00483D3A0041312B0057230B00552107005321 + 07005B2509005923090057230900552309005D270B005B250B0059250B005222 + 0A0055230B004D210A005F290D005D270D0053250D004F240E0087411D007C3C + 1C009147210087411F0085411F0083411F0089432100813F1F007E3F1F008643 + 2100753B1D0082422100502A17004427180038201400623D2B005B4032004E37 + 2B0057230700552307005925090061290B0056250A005B270B00652C0D005927 + 0C00622B0E00652D0F00632D0F00683011005A290F006C331300763816005528 + 1000723616005D2C12006E3516007E3E1A007A3B190082401B00733918006431 + 150087431D007A3D1A0085411D0085431D00954B210083411D00763A1A00924A + 21008A461F007038190087431F0080411D008F4921008E47210085431F008343 + 1F00924B23008A462100793D1D0080411F0086462100804320007C411F008947 + 2300723B1D0083482600532F1C005A3623006A48360073503D007A564300825F + 4C00926E5A00652D0A006A300B00793B160085421B00924A1F008E491F009A4F + 220083431D00964D2200773D1B009E52250086451F00A255260083451F00723C + 1B00924D23008F4C2300763E1D00A5582900965025008A49220079401E00AB5D + 2C00A85B2B008D4B2400723D1D00924F2600824622006B3A1C0068381B006436 + 1A006E3B1D00965228008E4D2600A25A2C009A552A008A4D26008A4B26008649 + 2500925129007D452400AF6233008C4E2900884C280090512B0095542D00A35E + 320098583000B46839009D5B3200C2734100A05F3600A5623900AB673C007D4F + 3300CEC4BE00672F0B006D340C00AE602D00B3632F009E582A00B8693300B366 + 3200A25E2E00BB6D3600A86030009D592D00AC643300C0713A00B76D3A00BB6F + 3C00C6774200CB7A4600B16D40009276640074390E007B411500864A1C008A4F + 220097592A00B56C3600A5633100B0683500CA7A3F00C4763D00BE733C00C77A + 4000CD7E4300D1814600A76B3E007F400E0083451100884914008B4D18008146 + 18008D501C0090552300A2673800B0764700B57B4D00BC825300D3B8A100FFE0 + C600BAA390009E8B7C00826D5B00FFDBBB00EAD0B900FFE7D200B6A99D00FFED + DD00C1B6AC00FFF7F000FFF3E7004E4D4C00FBFAF900FEFBF5007E7E7D00FCFC + FB0090908F00E8E9E800D0D1D000BFC0BF00BBBCBB00B7B8B700B1B2B100DCDF + DD00CBCECC00D1D6D300D6DAD800E2E4E30072797600C6C9C800C2C5C400F0F1 + F100EDEEEE00ACADAD0097989800F9F9F900F7F7F700F5F5F500F3F3F300B4B4 + B400AFAFAF00AAAAAA00A6A6A600A2A2A2009D9D9D0087878700434343000202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020203110311110303030303030303030303030303030303030303 + 0303030303030303030303030303030303111103111111111111111111321132 + 3232321132111111111111111111111111111111111111111111111111111111 + 1111111111111111321616161616321111111103030303030E0E0E0E0E0E0E0E + 300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031111111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111031111111111111111321616161616321111111103030303030E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1111111103031111111111111111111111321616161632111111110303030303 + 0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111110111111111111 + 1111111111111111030311111103111111111111113216161616321111110303 + 030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111111111111111111111111111110303111111111111111132161616163211 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969A2C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311030311111111111111323216 + 1616321111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311110303031111111111111111 + 111132161632111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111111111111111111111111111111103110303030303031111 + 11111111113232323232111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111111111111111111111111111110303030303 + 0311031111111111111132323232111111110303030303030E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111103 + 0303030303030311111111111111113232111111111103030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111030303030303030311111111111111113232111111111103030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311111111111111111111111111111111111111111111111111111111 + 1111111111031103030303030303111111111111111111323211111111110303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303031111111111111111111111111111111111111111111111111111 + 1111111111111111110303030303030303030303111111111111111111111111 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303111111111111111111111111111111111111111111 + 1111111111111111111111111103030303030303030303031111111111111111 + 11111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031103111111111111111111111111111111 + 1111111111111111111111111111031111030303030303030303030311111111 + 111111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111103030303030303030303030303 + 111111111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111111111111111111031103030303030303 + 03030303031111111111111111111111110303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111103031103030303 + 0303030303030303031111111111111111111111110303030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111111111111110303 + 030303030303030303030303031111111111111111111111110303030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111030303030303030303030303030303031111111111111111111111030303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111103030303030303030303030303030303030311111111111111111111 + 110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303111111111111111111111111111111111111 + 1111111111111111030303030303030303030303030303030303111111111111 + 111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111110311030303030303030303030303030303030303031111 + 1111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111030303030303030303030303030303030303 + 0303111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111110303030303030303030303030303 + 03030303030303111111111111111111030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111103030303030303030303 + 03030303030303030303031111111111111111110303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303111111111111111111111111111111111111111111110303030303030303 + 0303030303030303030303030303031111111111111111110303030303030E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111110311030303 + 0303030303030303030303030303030303030311111111111111110303030303 + 0303030E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030311110303111111111111111111111111111111111103 + 0303030303030303030303030303030303030303030303031111111111110303 + 030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 0311110303030303030303030303030303030303030303030303030303111111 + 111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111111111111111111 + 1111111111111103030303030303030303030303030303030303030303030303 + 03031111111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031103111111111111 + 1111111111111111111111030303030303030303030303030303030303030303 + 030303030303111111110303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E69A1B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030311031111 + 0311111111111111031103110303030303030303030303030303030303030303 + 0303030303030303030303110303030303030303030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303110303030303 + 0303111111111111111111111111111103030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303110311110311110311111111111103110303030303030303030303 + 03030303030303030303030303030303030303030303030303030303030E0E0E + 0E0E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E696AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111030303030303030303 + 0303030303030303030303030303030303030303030311110303030303030303 + 0303030E0E0E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111110311111103110303030303 + 0303030303030303030303030303030303030303030303030311111111110303 + 030303030303030E0E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111103111103 + 0303030303030303030303030303030303030303030303030303030303031111 + 11110303030303030303030E030E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303110303031111111111 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303031111111103030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 1111031103030303030303030303030303030303030303030303030303030303 + 03030303030311111111030303030303030303030E0E0E0E0E030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0EA16AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311030303030303030303030303030303030303030303030303030303 + 03030303030303030303111103030303030303030303030E0E03030E030E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0EA16AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303110311030303030303030303030303 + 030E03300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111111111110303030303030303 + 0303030303030303030E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311030311110303030303030303 + 0303030303030303030303030303030303030303031111111111111103030303 + 03030303030303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303110303031103110303030303 + 0303030303030303030303030303030303030303030303030311111111111103 + 0303030303030303030303030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030E0E6A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111031103030303111111111111 + 0303030303030303030303030303030303030303030303030303030303031111 + 11111111030303030303030303030303030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111111110311 + 1111031103030303030303030303030303030303030303030303030303030311 + 111111111111111103030303030303030303030303030303030303030303030E + 03030E0E0E0E0E0E0E0E0E0E03030E0E030E0E0E0E030E0E03030303030E6A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031103030303030303030311110311 + 1103111111030303030303030303030303030303030303030303030303030303 + 0303031111111111111111110303030303030303030303030303030303030303 + 0303030E0303030E0E0E0E0E0E0E0E0E0E030E0E0303030E0E0E0E0E03030303 + 03036A6AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311110311110311031103031103111111030303030303030303030303030303 + 0311030303111111111111111111111111110303030303030303030303030303 + 0303030303030303030303030303030E030E0E0E0E030E0E030E0E0E0303030E + 0303030303036A6AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303110303030303111103110303031111111103030303030303030303030303 + 0303030303030303030311111111111111111111111103030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036A6AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030311110303111111111103030303030303030303 + 0303030303030303030303030303111111111111111111111103030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303036A6AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031111111111111111110303110311111111 + 0303111111030303030303030303030303110311111111111111111111110303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303036AA2B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111030311030303030303030303111111111111111111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303030303030303036A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111110303031103030303030303031111111111111111 + 1111111111030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303036A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311031111111111111111111111111111 + 1111111111111111111111111111111111111103031103030311031103111111 + 1111113211111111111111030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303036A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111111111103111103031103031111 + 1111111111111132111111111111110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03036AA2B4C40203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1103111111111111111111113211111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303036AA2B4C402030303030303030303030303030303030303030303 + 0303030303030303110303030303030303030303030303030303030303111111 + 1111111111111111111110113232111110111132111111111010111111111111 + 1111111111111111111111113232113210321011111111111111030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036AA2B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303031103111111 + 1111111111111110111111101010103210101111111010111010101032111111 + 1111111111111111111111111111111111323210101010321111111103030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303A2A2B4C40203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111110101010101010321010101010101010101010101010 + 1010101010111111111111111111111111111111113210321010101111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303031230A2A2B4C402030303030303030303 + 0303030303030303030303030303030303030303030303030303030303031111 + 1111111111111111101111111010101010101010101010101010101010101010 + 10101010101010111010101011111111111110111110113211110D1111113232 + 1011111111110311111111111103110303030303030303030303030303030303 + 03030303030303030303030303030303030303030303A2A2B4C4020303030303 + 0303030303030303030303030303030303030303030303030303111111111111 + 1111111111111111111111111010111010101010101010101010101010101010 + 1032321111113232101010101010101010101010113210323211111112121313 + 0D340D1111111111111111111111111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030311110311A2A2B4C40203 + 0303030303030303030303030303030303030303030303030303031111111111 + 1111111111111111111111111111111011111010101010101010101010101010 + 10101032101112120D0D11111111321010101010101010321010103211111213 + 0F0F0F171713130D121111111111111111111111111111111111110303030303 + 030303030303030303030303030303030303030303030303030311111111A2A2 + B4C4020303030303030303030303030303030303030303110311111111111111 + 1111111111111111111111111111111110101010101010101010101010101010 + 10101010101010160D121213130E13130D0D1111323210101010101010321111 + 12130F0F17021917191717171313121212111111111111111111111111111111 + 1103030303030303030303030303030303030303030303031103030311111111 + 1111A2B4B4C40203030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111010101010101010101010101010101010 + 1010101010101010101616121317170F1719170F0F1312121111113232101032 + 111112130F0F1919192A2A2A2A191917170F0F13121112111111111111111111 + 1111111111110311111103030303110311110303030303030311030311111111 + 111111111111A2A2B4C402030303030303030303030303030303111111111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 101010101010101010101016160D13171719192A2A1D19190F17171313120D11 + 1111111112130E0F0F19192A2A622A2A2A622A1D1919170F0F31121211113210 + 1011101011111111111111111111110303111111111111031111111111110311 + 11111111111111111132A2A2C3C4020303030303030303031103030303111111 + 1111111111111111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010160D12131719192A62626262622A1D191919 + 170F1330121212130E0F0219191D2A2A622D6565412A62622A1D191917170F13 + 1212111132101010111011111111111111111111111111111111111111111111 + 1111111111111111111111113232A2A2C3C40203030303030303030311111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 10101010101010101010101010101010161612131717191D6262622D66626262 + 62622A1D191919170F0F0F170219191D2A2A2A2D656667B3B367632A2A622A1D + 190219020F0F1312111132101010103232323211111111111111111111111111 + 111111111111111111111111111132323216A2A2C3C402030303030303030311 + 1111111111111111111111111132111010101010101010101010101010101010 + 101010101010101010101010101010101010101012121317191D6262622D67D2 + 6766666463626262622A191919191919191D2A2A2A636566666668B3B3B3B368 + 6441622A2A2A191902020F131312111132101010103211111111111111111111 + 11111111111111111111111111111111323232161616A2A2C3C4020303030303 + 0303031111111111111111321132321032101010101010101010101010101010 + 1010101010101010101010101010101014141414101532121317171962626263 + 666868686767666666652E636262622A2A19191D2A2A2A62646666656566B3B3 + B3B3B3B3B3B366632A2A2A2A1719190F0F0E120D121132321010101032321111 + 1111111111111111111111111111111111113232323216101010A2B4B4C40203 + 0303030303031111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010101010101414141010101634131717192A62 + 626265D2686868686766666666666666652D63626262622A622A6465669F6566 + 666465D2B3B3B3B3B3B3B3B3682D62622A2A1D1919170F131212321111321010 + 101032323232323232323232321132113211323232321010101010101010A2A2 + C3C4020303030303031111111111111132101010101010101010101010101010 + 101010101010101010101010101410101010141414141414101515160D131719 + 1D62636264D268686868D26867666666666666666666666563622A622D656566 + 65666565642D2D2D646768B3B3B368B3B3B36864622A2A2A1D19190F1713130D + 1611113210101010101010101010103232323211321616101010101010101010 + 1010A2A2C3C40203030303031111111111113232321010101010101010101010 + 1010101010101010101010101410101010141414141414141414141515160D13 + 17171D6262632D676868686868686868676766666666666666666666662D2D65 + 9F66669F6665642D632D2D2D2D642D66D268B3B3B368B3B3B367632A2A623F19 + 1919171713120D0D0D1610101010101010101010323216103210101010101010 + 101010101010A2B4C3C402030303031103111111113210321010101010101010 + 1010101010101010101010101014141414141414141414141414141414141516 + 0D0D17171D6262622D6668686868686868686868676666666666666666666666 + 662D2D6665666565642D632D2D2D2D2D2D2D2D642D656768B3B368B3B368B368 + 2D2A62622A1D19171717131234160D1032101010101010101010101010101010 + 10101010101010101010A2B4B5C4020303031111111111321110101010101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 151016341317172A6262636668686868686868686868D2686766666666666666 + 66666666662D2D666665642D63632D632D2D2D2D2D2D642D642D64646668B3B3 + B3B3B3B3B3686462622A2A1D1719171713120D0D161616101010101010101010 + 1010101010101010101010101515A2B4C3C40203030311111111113210101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 1414141516161317172A62626265686868686868686868686868686867676666 + 6666666666666666662D2D65642D636363632D2D2D2D2D2D2D2D642D64646464 + 646465676868B368B368B3686663622A2A1D1919171713120D16111010101010 + 101010101010101010101010151015153515B4A2C3C402030311111111321010 + 1010101010101010101010101414141414141414141414141414141414141414 + 14141414141515163417173F626263646868B368686868686868686868686868 + 676666666666666666666666652D2D2D636363632D632D632D2D2D2D642D2D64 + 2D64646464646465656768B3B3B3B3B368B3662D622A621D1919171713121616 + 10101010101010101010101010101010351414141414B4B4C3C4020311111111 + 1110101010101010101010101014141414141414141414141414141414141414 + 1414141414141414151634180F1C6262622D6768686868686868686868686868 + 68D26868666666666666666666666666652D2D636363636363632D2D2D2D2D2D + 2D2D642D6464646464646564656565666768B368B368B36867642A2A621D1919 + 1717121616101010101010101010101010101014351414141414A2B4B5C50203 + 0311111011101010101010101010101014141414141414141414141414141414 + 1A1A14141A1A1414141435153418171C62626263676868B36868686868686868 + 6868686868686868676666666666666666666666652D6363636363632D632D63 + 2D2D2D2D2D642D642D646464646465646565656565666768B3B368B368686864 + 6262622A1D17171216101010101010101010151510101414141414141414B4B4 + C3C4020311111111101010101010101010101014141414141414141414141414 + 141A1A1A1A1A1A1A1A1414141415163417182A626263666868B3686868686868 + 686868686868686868686868676666666666666666666666652D2D6363636363 + 63632D2D2D2D2D2D2D2D642D642D6464656465656565656565666666666868B3 + B3B3B3B36865622A622A17123410101510101510151415141514141414141414 + 1414B4B4C3C50211111110101010101010101010101414141414141414141414 + 141A1A1A1A1A1A1A1A1A1A1A14141415163434173F6262626568686868686868 + 68686868686868686868686868686868676666666666666666666666652D2D62 + 62626363632D632D632D632D2D2D2D6464646464646464646565656565656666 + 666666676868686868B36866636263130D151415151515101514151414141414 + 141414141414B4B4B5C502111111101010101010101010141414141414141414 + 141A141A1A1A1A1A1A1A1A1A1A1A1A14143516340D173F62626364686868B368 + 68686868686868686868686868686868686867D2666666656666666666666666 + 66652D6262622A6263636363632F2F6363632E2D2D6464646464656565656565 + 66666666666666676667D268B368B368682A62130D1015101514101515141414 + 14141414141414141414B4B4B5C5021111101010101010101010141414141414 + 14141A141A1A1A1A1A1A1A1A1A1A1A1A1A1A1414351634133F6262632D676868 + 686868686868686868686868686868686868686867D267676565646565656566 + 66666666666666666463622A2A2A2B2A6262622F2F63632D2E2D646464646465 + 6565656566656666666666666766676767686868682A2A130D10101414101414 + 141414141414141414141414141AB4B4B5C50211111010101010101010141414 + 1414141414141A1A1A1A1A1A1A1A1A1A1A3838381A1A1437370D3F6262636366 + B368B368B36868686868686868686868686868686868D2D26767666664646464 + 6464656565666666666666666666662E622B2B2C2C2C2C2B2B0C2F62632D2D2E + 64646464656565656566656666666666666766666766676868622A1316151414 + 141414141414141414141414141414141414B4B4B5C502111010101010101010 + 141414141414141A1A141A1A1A1A1A1A1A1A1A38383838381A1A14373F626362 + 636568686868686868686868686868686868686868686868D267676666656464 + 2E2E2F2E2E646464656565656666666666656564642E2F2C2C0C0C060C2C2B0C + 2F2F632D2D646464656565656566666666666667666667676767676665622A34 + 161514141414141414141414141414141414141A1A1AB4B4B5C5023210101010 + 10101014141414141414141A1A1A1A1A1A1A1A1A383838383838381A1A1A353F + 6362626468686868686868686868686868686868686868686868686767676665 + 642E2E0B06060C2F2F2F2E2E64646465656565656464642E2E2F0C0C0606060C + 06060C2C2C2B2F2F2E2D2E646464656565666566666666666667666666652D62 + 622A3F1615141414141414141414141414141414141414141A1AB4B4C4C50210 + 10101010101010141414141414141A1A1A1A1A1A1A1A38383838383838383838 + 1A1A3C3F2D64686868686868686868686868686868686868686868686867D267 + 6665652E2F0BFEFEFEFEFE060C0C2F2F632E2E6464646464642E2E2F0C0C0606 + 060705F20B0C0606062C2C2C2B2F2E2D6464646565656666666666666666652D + 62622A622A3F16151414141414141414141414141414141414141A1A1A1AB4B4 + B5C502101010101010101014141414141A1A1A1A1A1A38383838383838383838 + 383838381A143C632D6868686868686868686868686868686868686868686867 + D2676665642E2F0BFEFEFEECFBFEFEFEFEFE060C0C2F2F632E2E2E2E2E2F0C0C + 06060B070505A00101ED080C06060C0C2C2C2C2F2F2D64646465656666666664 + 2D622A626262621C131615141414141414141414141414141414141414141A1A + 1A1AB46BC4C5021010101010101014141414141A1A1A1A1A1A38383838383838 + 3838383838383838381A3C622D68686868686868686868686868686868686868 + 6867D267666664642E0B0BFEFE08EEEBE3E5FBDE09FEFEFEFE060C0C2F2F2F0C + 0C0C0C060CDBD1050505E101010101F0FD0B0606060C2C2C2C2B2F2E64646565 + 656464622A622D656763621C3416351414141414141414141414141414141A14 + 1A1A1A1A1A1AB4B4C7C50210101010101414141414141A1A1A1A1A1A38383838 + 383838383838383836363838381A3C632D686868686868686868686868686868 + 686868686767676665642E2F0BFEFE09F9E1E1EBE3F7F9F9F9FCECDBFEFEFE06 + 0C0C2B0C0C06060BFD05050505D8DF01010101010101F7DB0606060C2C2C2C2C + 2B63646464632D2D65676767672D621C0D151414141414141414141414141414 + 1414141A1A1A1A1A1A1AB46BC4C502101010101010141414141A1A1A1A1A1A38 + 38383838383838383838363836363638381A3C632D6868686868686868686868 + 686868686768D267676665642E2F0BFEFEDBFCEBE1E1E1EBE3F7F9F9F9F9F9F1 + E007DBFEFE0B0606060BDE050505050505FDF2E901010101010101010A070606 + 06062C2C2C2C2C2B2D636366676767676763621C161514141414141414141414 + 141414141414141A1A1A1A1A1A1A6BB4C4C602101010101414141414141A1A1A + 1A38383838383838383836383939393639393938381A3C638568686868686868 + 68686868686868686867676665642E2E0BFEFEFEFDEAE1E1E1E1E1E1E3E5F9F9 + F9F9F9F1F1F1F9E00806060B0705050505050505DE070707DEE5EF0101010101 + 0101F4E00B06060C0C2C2C2C2C622F65666666676763621C1635141414141414 + 14141414141414141414141A1A1A1A1A1A1AB4B5C4C602101010141014141414 + 1A1A1A383838383838383839363939393939393939393939381A3C632D686868 + 686868686868686868686767676666642E2E0B0BFEFEECE8F0E1E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F1080705050505050505DE080807080707ECEC05 + EA0101010101010101E4DB0606060C2C2C2B2E64646566666663621C34151414 + 14141414141414141414141414141A1A1A1A1A1A1A1A6BB4C4C6021010101414 + 1414141A1A1A1A3838383838383839393939393939393939393939393A1A4163 + 2D68686868686868686867686767676765652E2E2F0BFEFE08F7F0E1F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8FA07070505050505FD08080808080707 + 0707ECECDEFDE3F501010101010101EA070B06060C0C2F2E2E64646565632A1C + 3415141414141414141414141414141414141A1A1A1A1A1A1A1AB46BC4C60210 + 101414141414141A1A1A33383838383836393939393939393939393939393939 + 3A1A3C872D686868686868686868686767676565642E2F0BFEFEDBFAF0F0F0F0 + F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F1F90807050505FD0809090808 + 0807070707EC07ECECDEDEFDF1E701010101010101E1FD0B06060C0C2F2F2E2E + 64622A1902123714141414141414141414141414141A1A1A1A1A1A1A1A1A6BB5 + C7C602101010141414141A1A1A1A383838383838363939393939393939393939 + 393939393A383C638568676867686868686767676665642E2F0BFEFEFEE0E1EF + F0F0F0F0F0F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F8FA070705FD080909 + 09090808080807070707ECECDEDEDEDEFDFDF2E8F4010101010101F5F9DB0606 + 060C2F2F2E2B2C19190F1635141414141414141414141414141A1A1A1A1A1A1A + 1A38B4B5C7C602101414141414141A1A33383838383838393939393939393939 + 39393939393939393A1A41872D6868686868676767676665642E2F0BFEFEFEDE + EAEFEFEFF0F0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F9F1F1F1F1FC080708 + DB090909090808080807070707EC07DEECDEDEFDFDFDE0E0F2E4EB0101010101 + 01DFE5080606060C0C2C2C2C1919020D3714141414141414141414141A1A1A1A + 1A1A1A1A38386BB5C4C602101414141414141A1A383838383838363939393939 + 393939393939393939393B39393841632D676867686767676665642E2E2FFEFE + FE08E8F5F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F8 + E00708DB090909090809080807080707EC07ECECDEDEDEFDFDFDE0E0E0F2FCF1 + E9F3010101010101E2EC0606060C2C2C2C19191716151414141414141414141A + 1A1A1A1A1A1A1A383838B4B5C7C6021414141414141A1A1A3838383838363939 + 3939393939393939393B393939393939393841872D6868676767666564642E2F + 0BFEFE09E6F5F5F5F6EFEFEFF0F0F0E1F0E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9 + F1F1F8F8F2080809DB090909090808080807070707ECECECDEDEDEFDFDE0E0E0 + F2F2FCFCFBFAEDE10101010101010AFD0B06060C2C2C19171837141414141414 + 141414141A1A1A1A1A1A1A1A381AB5B5C7C60214141414141A1A1A1A38383838 + 383939393939393939393B3B393B3B393B393B3939381A638867676766656564 + 2E2F06FEFEDBFBEFF4F4F5F5F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9 + F9F9F9F1F1F1F1F8E00708DB0909090909090808080707070707ECECDEDEDEFD + FDFDE0E0F2F2FCFCFBFAF9F1E4E7F30101010101EFFBDB06060C2C1917161414 + 14141414141414141A1A1A1A1A1A1A3838386BB5C7C6021414141414141A3338 + 3838383836393939393939393939393B3B3B3B3B3B3B39393938416363676665 + 65642E2F0CFEFEFEFDEBF3F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F207070606FEDB090908080808070707ECECECEC + DEDEDEFDFDFDE0E0F2F2FCFCFBFAF9F1F8E6E5E2F00101010101F3F8090BDB19 + 19161414141414141414141A1A1A1A1A1A1A383838386BB5C7C6021414141414 + 1A1A383838383836363939393939393B3B3B3B3B3B3B3B3B3B3B3B3939384162 + 636564642E2F0C06FEFEECEAF3F3F4F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8F8F207FE06060606DB09080807070707 + 0707ECDEDEDEDEFDFDE0E0E0F2F2FCFBFBFAF9F1F8E6E5E5E4EDEBDC01010101 + F0060619193414141414141414141A1A1A1A1A1A1A383838383A6BB5C7C60214 + 1414141A1A1A383838383636393939393939393B3B3B3B3B3B3B3B3B3B3B3B39 + 391A3C6262642E2F2B06FEFE08E3DFDCF3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0 + E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9F1F1F1F8F8F8E6F1FDDB0606060606DB + 09070707ECECECECDEDEFDFDFDFDE0F2F2F2FCFBFBFAF9F1F8F7F7E5E4E4E3EE + EAEF0101F0060C191716141A14141414141A1A1A1A1A1A1A1A3838383838B5B5 + C7C602141414141A1A333838383836363939393939393B3B3B3B3B3B3B3B3B3B + 3B3B3B39383C3F2B2B2F0C06FEFEDBF8F3DFDFDCF3F3F4F4F4F5F5F6F6EFEFEF + F0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F1F8F8E6E6F7F7E6FD + DB06060606FEDB0807ECECDEDEDEDEFDFDE0E0E0F2FCFCFBFAFAF9F1F8F7E5E5 + E4E3E3E3EEEEE2E1E10606191716141414141414141A1A1A1A1A1A1A38383838 + 3A386BB5C7C602141414141A1A333838383636393939393939393B3B3B3B3B3B + 3B3B3B3B3B3B3B39383C1D2B2B06FEFEFEF2F6DFDFDFDFDCF3F3F3F4F4F5F5F5 + F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F1F1F1F1F8F8F8E6E6 + E6F7F7F7E5E5FD0906060606FEDB07ECDEDEFDFDFDE0E0E0F2FCFCFBFAFAF9F8 + E6F7E5E5E4E4E3E3EEEDEDEEF2060C19181514141414141A1A1A1A1A1A1A1A38 + 383838383A3AB5B5C7C8021414141A1A1A33383838363639393939393B3B3B3B + 3B3B3B3B3B3B3B3B3B3B3B39383F192BFEFEFEDEEB01DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9F1F1F1F8 + F8E6E6E6E6F7F7E5E5E5E5E4E4FD0906060606FEDBECDEFDFDE0E0F2F2F2FCFB + FAFAF1F8E6F7E5E4E4E3E3EEE3F2070B060C0C173435141A141A1A1A1A1A1A1A + 1A1A1A383838383A3A3AB5B5C7C802143314331A33333838383636393939393B + 3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1C2B0C09FDEA01DF01DFDFDFDFDCDC + F3F3F3F4F4F5F5F6F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9 + F1F1F1F8F8F8E6E6E6F7F7E5E5E5E5E4E4E4E4E3FD0906060606FE09ECE0E0F2 + F2FCFCFBFAF9F9F1E6F7E5E5E4E5F2080B0606060C2B1734351A141A1A1A1A1A + 1A1A1A1A1A38383838383A3A3939B5B5C5C8021414141A1A3333383838363939 + 3939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B393C1C2BFE070101010101DFDF + DFDFDCDCF3F3F4F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9 + F9F9F9F9F1F1F1F8F8F8E6E6E6F7F7F7E5E5E5E5E4E4E4E3E3E3E3E009060606 + 06FE09DEF2FCFCFBFAFAF1F8E6F7F1E00806060606FE062C2C1918351B1A1A1A + 1A1A1A1A1A1A1A1A1A383838383A39393939B5B5B6C802141A1A1A3338383838 + 3636393939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1D2BFE07010101 + 010101DFDFDFDFDCF3F3F3F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1E1E1EBE1 + FBFCFBFAF9F9F9F9F1F1F1F8F8F8E6E6F7F7F7E5E5E5E5E4E4E4E4E3E3E3EEEE + EEEEE00906060606FE09FDFBFAF1F1F8F1F2FD06060607FCE808FE2C19193714 + 1A1A1A1A1A1A1A1A1A1A1A1A383838383A3A39393939B5B5C5C80214331A1A33 + 3338383836393939393B3B3B3B3B3B3B3B3B3B3B3B3B3D3B3B3B3B39411C2BFE + 070101010101DFDFDFDFDFF3F3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0E1E1E1E1 + E1E7FB08FEDBFE08DEFBF9F1F1F1F8F8F8E6E6E6E6F7F7E5E5E5E4E4E4E4E3E3 + E3E3EEEEEEEDEDEDEEE00906060606FE09FDF9F1F1070707FBE8E7EAE708FE2C + 1917351A1A1A1A1A1A1A1A1A1A383838383838383A3939393939B5B5B6C80214 + 1A1A1A333338383836393939393B3B3B3B3B3B3B3B3B3D3B3D3B3B3D3B3D3B39 + 3C1C2BFE0801010101DFDFDFDFDFDFDCDCF3F4F4F4F5F5F6F6F6EFEFF0F0F0F0 + F0E1E1E8FDDBFEFEDB07FEFEFEFE08DEFBF1F1F8F8E6E6E6F7F7F7E5E5E5E5E4 + E4E4E4E3E3E3EEEEEEEEEDEDEDE8E8EDF20906060606FE08FD08ECEAEAEAE7EA + E708FE2C1934351A1A1A1A1A1A1A1A1A1A3838383838383A39393939393BB5B5 + B6C8021A1A1A33333838383636393939393B3B3B3B3B3B3B3B3B3B3B3B3D3B3D + 3B3B3B391A1D2BFE07010101010101DFDFDFDCDCF3F3F4F4F4F5F5F6F6EFEFEF + EFF0F0F0F0F7ECFEFEFE07E4E3E5F2DE08FEFEFEFE08FDFAF8F8E6E6F7F7F7F7 + E5E5E5E4E4E4E4E3E3E3EEEEEEEDEDEDE8EDE8E8E8E2EDF209060606060807EA + EAEAEAE7EA08FE2C1934141A1A1A1A1A1A1A1A383838383838383A3939393939 + 3B3BB5B5B6C8021A1A1A333338383836363939393B3B3B3B3B3B3B3B3D3D3D3D + 3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4F4F5F5F6 + F6EFEFEFF0F0EBFB09FEFEDBFDE8E1E1E3F7FCF2F2E0DE08FEFEFEFE08FDF9F7 + E6F7F7E5E5E5E4E4E4E4E4E3E3E3EEEEEEEEEDEDEDEDE8E8E8E8E2E2E9EDF208 + DBDEEEEAEAEAE7EAE708FE2B191C14381A3838383838383838383838383A3A39 + 39393B3B3B3BB5B5B6C8021A1A333333383838363939393B3B3B3B3B3B3D3B3D + 3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFE9FDDBFEFE09FBE7E1E1E1E1E3F7FCF2F2F2F2F2E0DE08FE + FEFEFE08FDF8F7F7E5E5E5E5E4E4E3E3E3E3EEEEEEEDEDEDEDE8E8E8E8E2E2E2 + E9E9E9E9EAEAEAEAEAEAEAE7E708FE2C19341B38383838383838383838383838 + 3A3A3939393B3B3B3B3BB5B5B6C8021A1A333833383836363939393B3B3B3B3B + 3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE0801010101DF01DFDFDFDCDC + F3F3F4F4F4F5F5F6F6EFE407FEFEFE07E4E1E1E1E1E1E1E1E3F7FCF2F2F2F2F2 + F2F2F2F2EC08FEFEFEFE07E0F7E5E4E4E4E4E4E3E3EEEEEEEEEDEDEDEDE8E8E8 + E8E8E2E2E9E9E9EAE9EAEAEAEAE7EAE7EA08FE2C19341A383838383838383838 + 38383A3A393939393B3B3B3B3B3BB5C7B6C8021A333333383836363939393B3B + 3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A1C2BFE070101010101DFDF + DFDFDCDCF3F3F3F4F4F5F5E1FC09FEFEDBFDE2E1E1E1E1E1E1E1E1E1E3E5FCF2 + F2F2F2F2F2F2F2F2FCF2F2EC09FEFEFEFE07E0E5E4E4E3E3E3E3EEEEEEEEEDED + EDEDE8E8E8E2E2E2E9E9E9E9E9EAEAEAEAEAEAEAE708FE2B19341A3838383838 + 383838383A3A393A3939393B3B3B3B3B3B3DB5C7C6C902333333333838363639 + 39393B3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A3F2BFE07010101 + 01DF01DFDFDFDFDCF3F3F4F4F4E9FDDBFEFE08FCE7E1E1E1E1E1E1E1E1E1E1E1 + E3F7FCF2F2F2F2F2F2F2FCF2F2FCFCFCFCF2EC09FEFEFEDB07F2E4E4E3E3EEEE + EEEDEDEDEDE8E8E8E8E8E8E2E9E9E9E9E9E9EAEAEAEAE7E7EA08FE2B19371A38 + 383A3838383A3A3A3939393939393B3B3B3B3B3D3D3DB5C7B6C8021A33333838 + 38363639393B3B3B3B3B3D3D3D3D3D3D3D3D3D423D423D423D3D3D3D3A3F2BFE + 08010101010101DFDFDFDFDCF3F3F4E407FEFEFE07E4E1E1E1E1E1E1E1E1E1E1 + E1E1E1E1E3F7FCF2F2F2F2F2F2F2F2F2FCF2FCFCFCFCFCFCF2EC09FEFEFEDBEC + F2E3E3EEEEEDEDEDEDEDE8E8E8E2E9E2E9E9E9E9EAEAEAEAEAEAE7EAE708FE2C + 19371A3A3A3A383A3A3A39393939393939393B3B3B3B3D3D3D3DC7C7B6C90233 + 3338383836363939393B3B3B3B3D3D3D3D3D3D42423D423D423D423D423D423D + 3A3F2BFE0701010101DFDFDFDFDFDCF3E1FB09FEFEDBFDE2E1E1E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E2FCFAF2F2F2F2F2F2F2FCF2FCFCFCFCFCFCFCFCFBFBFBF2 + EC09FEFEFEDBECFCEEEDEDEDE8EDE8E8E8E8E2E2E9E9E9EAE9EAEAEAEAEAE7EA + E708FE2B17371A393939393A393A3939393939393B3B3B3B3D3D3D3D4242C7C7 + C6C9023333383636363639393B3B3B3B3D3D3D3D3D3D3D3D4242424242424240 + 4242423D473C2AFE07010101010101DFDFDFEAFDDBFEFE08FBE7E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E1E1E1E1E2E5F9F2F2F2F2F2F2F2F2F2F2FCFCFCFCFCFCFB + FCFBFBFBFBFBF2EC09FEFEFEDBECFBEDEDEDE8E8E2E8E2E2E9E9E9E9EAE9EAEA + EAEAE7EAEA08FE2B1D371A3939393939393939393939393B3B3B3B3B3D3D3D42 + 4242C7C7C6C90233383836363639393B3B3B3B3B3D3D3D3D3D42424242404240 + 404040404040403D3B3F2BFE080101010101DFF4E407FEFEFEECE4E1E1E1E1E1 + E1E1E1EBE1E1E1EBE1E1E1E1E1EBE1E1E2F7E4E4F7FAF2F2F2F2FCF2FCFCFCFC + FCFCFCFCFBFBFBFBFBFAFAFAFAF2ECDBFEFEFEDBDEFAE8E8E8E8E2E2E9E9E9E9 + E9EAEAEAEAEAEAE7E708FE2B173C38393939393939393939393B3B3B3B3B3B3D + 3D3D42424242C7C7B7C90238383836363939393B3B3B3D3D3D3D3D4242424242 + 4040404040404040404040423B412AFE0701010101F0FA09FEFEDBFDE2E1EBE1 + E1EBE1EBE1EBE1E1E1EBE1E1E1E1EBE1E1E1E1E1DEDED8EBE1E7EDE6FAFCF2F2 + FCF2FCFCFCFCFCFBFCFBFBFBFBFAFBFAFAFAF9F9F2ECDBFEFEFEDBDEF1E2E2E2 + E9E9E9E9EAEAEAEAEAE7EAE7EA08FE2B1C3C3839393939393939393B3B3B3B3B + 3B3D3D3D424242425140C7C7B7C90238383836363939393B3B3D3D3D3D3D4242 + 4242404040404046404040403E4640423B412BFE070101EAFDFEFEFE08FAE7EB + E1EBE1EBEBE1EBE1EBE1EBE1EBE1EBE1EBEBE1EBE1EBEBE1EBE7E1EFEFF0E1EB + E7E8E5F9FCFCFCFCFCFCFCFCFBFBFBFBFBFAFAFAFAFAF9F9F9F9F1F2ECDBFEFE + FEDBFDE6E2E9E9E9E9E9EAEAEAEAEAE7E708FE2B1C3C38393939393939393B3B + 3B3B3B3B3B3D3D3D424242514051C7C7C8C902383836363939393B3B3B3D3D3D + 42424242404040404646464646463E3E463E3E423D412AFE08E407FEFEFEECE5 + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBF0F6EFEFF6 + F6EFF6F6EFE1EBE1E2E4F9FBFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAF9F9F9F1F1 + F1F8F2ECDBFEFEFE09FDE5E9EAEAEAEAEAEAE7EAEA08FE2B1C3C3A3939393939 + 393B3B3B3B3B3B3B3D3D3D4242514051464676B6B7C902383636393936393B3B + 3B3D3D3D3D424040464046464646463E3E3E3E3E3E3E3E403D412AFEFEFEFEDB + FDE2EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE1EB + EFF6F0E4EDE1EFEFEFF6F6F6F0EBEAEAE4F1FBFBFCFBFBFBFBFBFAFAFAFAF9F9 + F9F9F1F1F1F8F8F8E6F2ECDBFEFEFE09FDE4EAEAEAEAEAE7E708FE2B1C3C3A3B + 3B3B393B3B3B3B3B3B3B3B3D3D3D424251515146464676B6C8C9023636363936 + 3B3B3B3B3D3D3D42424040404646464646464E3E4E4E4E4E4E4E4E463D4162FE + FE08FBEAEBEBEBEBEBEBEBEBE7EBEBEBEBEBEBEBEBEBEBEBEBEBEBE7EBEBEBEB + EBEBF0F6EFF00508F2E3E2EAEBF0EFF6EFEFEFF0E1E1E7EDF8FAFBFBFBFAFAFA + FAFAF9FAF9F9F1F1F1F8F8F8F8E6E6F7F2ECDBFEFEFE09E0E3E7EAE7EA08FE2B + 1C41393B3B3B3B3B3B3B3B3B3B3B3D3D3D424242514646464E46B6B6B7B80236 + 3639363B393B3B3B3D3DA2424040404646463E4E3E4E4E444444444444444446 + 42412AFE08E7EBEBEBE7EBE7EBE7E7EBEBE7E7EBE7E7E7E7E7EBE7EBE7E7EBEB + E7EBE7EBE7E1EBEFF6EB07FCFAE5FBFAE4E2EAE7EFF6F6EFF6EFF0E1E1EBE8E6 + FAFAFAFAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F207DBFEFEFE09E0EE + E708FE2B1C1A393B3B3B3B3B3B3B3B3B3D3D3D3D3D4242514646464E4E4EB6B6 + C9C9023639393B363B3B3B3D3D3D424040403E3E4E4E4E724472494949494949 + 4943494E42472AFE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7F0F6EFF005FDFCEDDFF6EAE4FBFAF7E8E9EBF0EFF6EFEF + F6EFE1E1E8E2E5FAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7E5F7F207 + DBFEFEFE08DBFE2B1C41393B3B3B3B3B3B3B3B3B3B3D3D3D4242404646464E4E + 7272B6B6C9B802363939393B3B3BA23D3D404040403E464E4E4E72724949491F + 4949434949434349514762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E1F0EFF0E8ECFCF9F4DCDCDFF3F6EAE4FAFAF7ED + EAEBF0EFF6EFEFF6EFE1EBEAE9E4F1F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7 + E5E5E5E5E5F207DBFEFEFE2B3F41393B3B3B3B3B3B3D3B3D3D3D3D4242425146 + 464E72727272B6B6C9B8023939393B6A3B3B3D3D3D424040463E4E4E49494949 + 49431F494343435353434349464762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EBE2F6F6E1E0F2FCE7DFDFDFDCDFF3F3F3 + F4E7E4FAFAF8EEEAEBF0EFEFF6F6F6F6F0E1E7E7EEF8F1F1F1F1F8F8E6E6E6E6 + F7F7F7E5E5E5E5E5E5E4E4F7F2DBFE2B3441393B3B3B3B3D3B3D3B3D3D3D4242 + 405146464E72725A5A5AB6B7C9B802393939363B3B3D3D3D4040403E3E4E4444 + 4949491F434326535353535353535349464762FE08EAEAEAEAEAEAEAEAE7EAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E1F6F6EFA0E0FCE4DFDFDFDCDC + DCDCF3F3F3F3F3F5E7EEF9FAF1E3EAE1EFF6F6F6F6F6F6F0F0F0E7EDF7F8F8F8 + E6E6E6F7F7F7F7F7E5E5E5E5E4E5E4E4E409FE2B3F413B3D3B3D3B3B3D3D3D3D + 3D3D4242404646464E725A5A5A5A7DB7C9B80239393B3B3B6A3DA23D40403E3E + 46444949491F43432653535353535353234D53264E4762FE08EAEAEAEAEAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBE1F6EF0AE0FCFAF6DF + DFDCDCDFDCF3F3F3F3F3F3F3F4F4F4E7EEF9FBFAE4E2E1F6F6F6F6F6F6EFEFF0 + E1EBE2E5E6E6E6F7F7F7F7F7E5E5E5E5E5E5E4E4E409FE2B3F413B3D3D3B3D3B + 3D3D3D3D3D42424246464E4E727E5A5E7E7EB7B7C9B8023B3B3B6A3B3D3D3D42 + 40403E46444949491F2626535D5353234D4D5757575757264E8662FE08EAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E2F6EFEFF9F2 + FBEADCDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F5F5EBEDF9FBFBE5E8E1EFEF + EFF6F6EFF6EFF0F0EBE9E3F7F7F7F7F7E5E5E5E5E5E4E5E4E409FE2B3F3A3B3D + 3D3D3D3D3D3D3D3D4242424046464E725A5A7E7E5E5EB7B7C9B8023B3B3B3D3B + 3D3D3D40403E3E4444491F1F2653535357235757565676745674565D724262FE + 08E9E9EAEAE9E9EAE9E9E9E9EAEAE9E9E9E9EAE9EAE9E9EAEAE9EAE9E7E1F6F0 + F6EEFAFCEDDFDFDFDFDCDFDCDCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5EBEDF8 + FBFBE6E8EBEFEFF6EFEFF6F6EFF0E1EBEAEEE5E5E5E5E5E5E5E4E4E4E409FE2B + 3C3A3B3D3D3D3D3D3D3D3D424242405146464E725A5A5E5E5E5EB78AB8A8023B + 3B3B6A3D3DA242403E3E44444943435353535D29575656767474745C74567657 + 7E5162FE08E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA + E1F6EFF6E2F7FCE4F3DFDFDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5 + F6F6F6EFE1E8F7FBFBF8EEE7EFF6EFF6F6EFF6F6EFE1E1EAE8E4E5E5E5E5E4E4 + E409FE2A3C3A3B3D3D3D3D3D3D423D4242424046464E725A7E5E5E5B5B5EC9B7 + B8B8023B3B3B3D3D3D4040403E46444949435353535D57745C565C5C74745C5C + 595C50577E5163FE08EBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 + E9E9E9EBF0F6EFE1E4FBF7F3DFDFDFDFDFDFDCDCDCDCF3F3F3F3F3F3F4F4F4F4 + F5F5F5F5F6F6F6F6F6F6EFE1E8E5FBFAF1EEEAF0F6F6EFF6F6EFF6EFE1E1E7E2 + E3E5E5E4F8DBFE2A41473B3D3D3D3D3D3D42424242424046464E725A5E5E265E + 5B5EB7C9B8A8023B3B3B3D3DA23D403E3E44444953265353575676745C5C5C59 + 595F7D7D597D7D565D2887FEDBEFEBE9E9E9E9E9E2E9E9E9E9E9E9E9E9E9E9E9 + E9E9E2E9E2E9EBEAF6F6F0EEFAF7F3DFDFF3DFF3DFDCDCDCDCF3DCF3F3F3F3F4 + F4F4F4F4F5F5F5F5F6F6F6F6F6EFEFEFEFEFE1E2E5FAFAF1E3E9F0EFF6F6F6F6 + EFEFF0F0EBE9E3E4ECFE0B2A413B3D3D3D3D3D3D3D3D4242424040464E725A5A + 5E5E5E5D5D5DC995B8A8023B3B3D3D3D4040403E3E4444435353575756745C5C + 5F5F7D7D7D7D7D7D7D7D7D50577E85FEFEE2EFEBE9E9E2E9E9E9E2E9E2E2E9E8 + E9E9E9E2E2E9E9E9E7E1EBEFF6E7EEF9E5F4DFF3DFDFDFDFDFF3DFDCDCDCF3F3 + F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFEFE1E9E5FAFAF1E3 + E8F0F6F6F6F6EFF6F6F0E1E3DBFE2A3C3A3B3D3D3D3D3D3D4242424240405146 + 4E725A7E5E265D5D5D5D9595B8BA023D3D6A3D403D40403E6B44494353235774 + 5C5C5C5F5F7D7D7D7D7D817D7D7D7D5F5C5E772FFE09F0F0F0EAE2E2E2E2E2E2 + E2E9E2E9E2E2E2E9E2E9EAE1EAEFEFEFE5E6FBE3F4DFDFDFDFF3DFDFDFF3DFDC + DCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5F5F6F6F6EFF6EFEFEFEFEFF0EFF0F0 + F0EAE4FAFAF1E5E8EBEFF6F6F6EFEFE0FE063F413B3D3D3D3D3D3D423D424242 + 4040464E4E725A7E265D5D5D5D5DC9C9B8BA023B3D3D3D3DB4403E3E44444353 + 5357565C5C5F5F7D7D7D7D818181818181817D7D5C767E2DFEFE64EAF6EFE1EA + E9E2E2E2E2E2E2E2E2E2E2E2EAEBF0F0F6F6EDFCFAFCE2F3DFDFF3DFDFDFDFF3 + DFDFDFDCDCDCF3F3F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6EFF6EFEFEFEFEFEF + EFF0F0F0F0F0F0F0EAE3FAFAF1FAEEEFF6EFE709FE623C3A3B3D3D3D3D3D3D3D + 3D42424240404646725A5A5E265D5D5D5D8495B8B8A8023D3D3D403D403E3E3E + 4449435357565C5C5F5F7D81818181818A81818181817979815C5D7A2EFEFE2F + F20AF6E1F0EBE7E9E2E2E2E2E9E9E7E1F0EFF6F0E4FDECDEFD09EBDFF3F3DFF3 + DFF3DFDFDFDCDFDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F6F5F5F6F6F6F6EFEF + EFEFEFEFF0EFF0F0F0F0F0F0F0F0F0E7F2E5E7EFEFF0FAFE0B3F41473D423D42 + 3D3D4242424242425146464E725A7E5E5B5D8484295D95B89ACA023D3D3D3DB4 + 403E3E444443435357745C5F5F5F8181818A8A7979798A797979797979815C5D + 722EFEFE07FAFAE8F0F60AF0E1EBE7E7EBE1EFF6F0EDE0ECECECECEC07ECECEC + F2F8E8E1DFDFDFDFF3DFDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5F6F6F6 + EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F0E9FBE8EFF6EF0506FE2F3C473B + 3D3D3D3D3D3D3D3D424242404046464E725A5E5E5D298484848496B89ACA023D + 3D404040403E3E44444353574B5C597D7D818181798A8A838383787879837978 + 798A7D5C5D722EFEFE09F2FAFBF8E8EFF6EFE1EFEFF0EDE0ECECECECE0E40AFB + ECFDDEECECECECECDEF2E5E2EFF3F3F3DCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5 + F6F6F6F6F6EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F8E5EBF6F60A09FEFE + 2A41473D42423D3D423D3D424242425140464672725A265D5D848484848496B8 + 9CCA023D3DA23D403E3E6B6B43434D4B745C5F7D81818A8A8A838A8383838383 + 83838383787981815C5D722DFEFEFE08ECE0FAF1E5E3F7FCDEECECECECF2E50A + 040404FBECFCF7E6FAF2FDDEECECECECECFDFBE3EAF5F3F3F3F3F3F4F4F4F4F4 + F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0E9FAE8EFF6E1 + DEFEFE6241473D3D423D3D423D424242424242405146464E497E5E5D5D848484 + 8484B8B8A8CA023D3D4040403E3E6B6B4345534B5C597D81818A8A8383838383 + 838383838383838378787879545C577E880B0BFEFEFEFEDB08ECECECECECF2E4 + 0A040404040404FBECFCE6F7F7F7E5E5F7FAF2FDECECECECECECE0FAEEE7F3F3 + F4F4F5F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFF0EFEFF0F0F0F0F0F0F0F0F8EE + F0EFF0FBFEFE2F41473D424242423D423D3D42424242404246464672497E5D5D + 84845C848484B8B89CCA023D4040B4403E3E6B44434570745C7D7D818A8A8383 + 838383838990838383838383838378797981505C535A882D2F0BFEFEFE07ECF2 + E40A040404040404040404FBECFCE6F7F7E5E5E5E5E4E4E3E3E5FAF2FDECECEC + ECECECE0F1EDEBF4F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0 + F0EDF7E7F6F6E5FEFE2F41473D3D4242423D3D3D424242424240405146464E72 + 7E5E5D5D848461848484989ACACA02403D40403E3E3E6B4443534B5C5F7D8181 + 8A8383838383908390837C9083837C7C83838378787981505C56534372518762 + 2FECEC0A040404E104040404040404FBECFCF7F7F7F7E5E5E4E4E4E3E3E3EEEE + EEEDE5FAF2FDECECECECECDEF2F7E8E1EFEFF5EFEFEFEFEFEFEFEFF0EFF0F0F0 + F0F0F0F0E7F1EAF6F6E5FEFE2F41473D42424242424242424242424242424051 + 46464E5A7E5E5D84848F8F8F8F8F98B8CACA023D4040B43E3E6B4449454D4B5C + 5F7D8179798383839089908989897C9089907C7C7C838383787979795050744B + 704346473F07EC0A0A04040404040404040404FBECFCE6F7F7F7E5E5E4E4E4E3 + E3E3EEA0EDEDEDE8E8E2E8E4F9F2DEECECECECECFDFCE5E9F0EFEFEFEFEFEFEF + F0F0F0F0F0F0F0EDFAEDF0F0FDFEFE2F413B3D42424242424242424242424242 + 42404046464E725A7E265D848F8F8F8F8F849A98BACA02404040403E3E6B4443 + 454556747D818A8A83838390899089898989898989897C907C83838379585858 + 79547D50504D494241ECEC0A0404E10404040404040404FCECF2E6F7F7E5E5E5 + E5E4E4E3E3E3EEEEEDEDE8E8E8E2E2E2E9E9EAE2E4F9E0DEECECECECECFDFBEE + EBEFEFF0EFEFF0F0F0EBF7FCE5EBE208FEFE2E41473D42424042424242424242 + 4242424240404046464E727E5E5D845C8F8F8F8F8F8F9A9ACACA0240B440403E + 3E6B4443454D4B597D81818A83838989899089898989898989897C7C7C837C83 + 8378787954546E55554843514707EC0AE104040404040404E2F8FDECECECECEC + DEE0F9F7E4E4E4E3E3E3EEEEEEEDEDE8E8E2E2E9E9EAEAEAE7EAE7E7E2E4FAE0 + ECECECECE0F0EFEFF0F0F0F0E3FCFBE4EAF9DBFE096447474242404040424240 + 4242424242424240424040464E4E725A5E5D84618F8E8E8E8E8F9A9ACACA0240 + 40403E3E3E6B4443434D74507D818A8383838989898989898989898989898989 + 8989837C83787879795454505048534647ECEC0A0404040404E8FADEECECECDE + FBE0ECECECECECECECDEF2F9E4EEEEEEEDEDEDE8E8E2E2E2E9E9EAEAEAE7E7E7 + EB0AEBEBEBE2FCECECEBEFEFEFF0EBF9FBE3EAEBDEFEFEDE67473D4240404040 + 404042424242424242425140404046464E725A5E5B5D848F948D94948E8F9A9A + CAC2024040B43E3E3E6B4343454A747D7D818A83839089898989898989898989 + 89898989897C7C83838378795479545555484D4E4707EC0A040AA0F2DEECECEC + DEF9E9D9DDDDDDEBEDF1F2ECECECECECECECDEF2F1E3E8E8E8E2E2E9E9EAEAEA + EAE7E7E7E7E7EBEBEBEBE7DEECEBEFEFE7E3FBFBF8F8DEFEFEDBDE6885424046 + 3E463E40404040404242424240424040404046464E495A5E5D84848F8E8D9394 + 8E949A9CCAC2024040403E3E6B6B4343454B5C7D7D818A838389898989898C89 + 898C898989898989897C897C7C78787879546E6E505045443DECECF7F2ECECEC + B3D1D4D4D7DDDDDDDDDDDDDDDDDDDDDDEBE8E6F2DEECECECECECECDEFCE6EEE2 + E9E9EAEAEAE7E7E7EBE7EBEBEBEBEBDEECEDEAE6FCFCDEDBFEFEFEFEE0D86651 + 51463E463E46463E4040405142424240424040404640464E72495A265D848F8E + 8D9393938E8E9C9CCAC20240403E3E3E6B444443454A747D7D8A838389898989 + 898C898C8C89898C898C898989897C7C8383835858796E6E55504B4342ECECEC + ECEC0708B3D0D3D3D3D3CFCFCFD5D7DADDDDDDDDDDDDDDDDDDE1E8E5FCFDECEC + ECECECECFDF2F7EDEAEAE7E7E7EBE7EBEBEBEBDEEC09ECEC09FEFEFEFE09FAA0 + D19F604E4444443E3E46464040404040514042425140515146464E4E725A5E53 + 848F8F8D93939393938D9C9CCAC2024040403E3E6B6B4443454B507D818A8383 + 898989898C898C89898C8C898989898989897C7C7C8378787979545555504843 + 442D07ECEC07DBD2B3CED3D3D3D3D3D3D3D3D3CFCFD5D5D7DAD9D9DDDDDDDDDD + DDDDF0E9E4FCFDECECECECECECFDFCF7EDEBEBEBEBEBEBF8EC07FEFEFEFE0B2E + 8867D19F7E72491F1F49443E4E46463E46404040405151404040404046464E72 + 497E5E5D848F8E939395959593949CCACAC20240403E3E3E3E4443434D4B507D + 818A83908989898C8C898C8C898C8C898C898C898989897C838378787979546E + 6E50746C433E0707ECECECD2B3D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D5 + D7DADAD9DDDDDDDDDDDDDDF6EAE4FAE0ECECECECECECFDFCF7EDE7E4EC080B2F + 2D827E5D5D5D5D5B53532653434949443E4E4E46464646514051514051464646 + 464E4E72492653845C8F9493959595959593CA9CC2C20240403E3E3E6B44B543 + 4D4B507D818A838389898989898C8C898C8C8C8C8C898989897C898983838378 + 58796E556E50504845434642872EDBB3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3CFCFD5D7DADAD9D9DDDDDDDDDDDDF6E7E3F9E0ECECECECECECEC + EC0842725B5C5F817D8159507457234D43434949444E4E464646464651404040 + 464646464E4E4E495A5E5D848F8E8A959595969595959C9CC2C202403E3E3E3E + 6B4443434D74507D798A83898989898C8C8C8C8C8C8C8C8C8C89898989897C7C + 7C7C785858796E54505050486C4543463D4163B3D1D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9D9DDDDDDDDDDDDE72F + 08ECECEC076449748158837C8383797D50504B4D45434949444E4E3E4E464646 + 46464046464646464E4E72497E5B5D618E8D9395969696969595CACACAC20240 + 3E3E3E3E6B4443434D48507D8183838989898C8C8C8C8C8C8C8C8C8C8C8C8C89 + 8989897C838383785854546E505050481E6C4544424764B3D0D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9 + DDE1E407ECECEC07825E565458898989898378797D50744D53531F4944444E4E + 3E464E4646464646463E464E4E72721F5E5D848F8E9395969696969696959CCA + C2C20240403E3E3E6B6B43454D74507D81838389898996968C8C8C8C8C8C8C8C + 8C8C898C8989897C7C8383785879546E6E505050486C4549516265B3CED3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3CFD5D4F2ECECEC086472265255587C738C8C8C898379815974564D534349 + 4949724E4E4E4E4646464646464E4E4E72725A7E5357848E9395969698989896 + 96909CCAC2B202403E3E3E6B6B6B43454D74507D798383898989898C8C8C8C8C + 8C8C8C8C8C8C8C8C8989897C7C7C83787979546E556E5048484B45494241D2B3 + CECFD3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D4D1D264474244535055587C898C8CA58C898358817D744B + 7053431F1F4949444E4E4E464E4E46464E4E4E72725A7E535D295C8E93959698 + 989898989696CACAC2C202403E3E3E3E6B4443454548507D7983839089898C8C + 8C8C8C8C8C8C8C8C8C8C8C898989897C7C837878587954545550504848484549 + 3D41D2B3D4D3D3D3CFD3D3D3D3D3D3D3CFD3D3D3CFD3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3CFD3D3D3D3D4B3D28786444A50544F71898CA5ABAB8C8C8983 + 817D5074224D53431F1F4949444E4E4E4E4646464E4E725A725A5A265D848F8E + 95969698989A989898969DCAC2CB0240403E3E3E6B4443454D74507D79838389 + 8989898C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C8378584F6E6E55505050 + 504B454E3D63B3D1CFCFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CF + D3CFD3CFD3CFD3CFD3CFD3D3D3CFD3CFD4D2D23A465350554F58718C738B8B8B + A58C898958547D50564D4343435A1F494E4E724E4E4E4E4E4E72725A495A5E53 + 5D5C8E939596989A9A9A9A989896C2CAC2B20240403E3E3E6B6B43454D74507D + 7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C898989837C8378794F4F6E + 6E505050504B2646472EB3D1CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3D4D2D247724D5554584C6F8C + 8B8B8B8B8B8C897C78817D50744B5343431F4949724E4E4E4E4E4E4E7272725A + 5A5A265D848F8E939596989A9A9A9A9A9898CACAC2B202403E3E3E3E6B6B4343 + 4D4850548183838989898C8C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C7C78 + 7858546E6E505050484B53464765B3D6CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3CED26686491E2058 + 587C8C758B8B97978BA58C8983587D595C4B70532643261F5A5A72724E5A7272 + 72285A5A7E26535D848F8E9096989A9A9C9C9A9A9A989DC2C2CB0240403E3E3E + 6B4443434D74507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8989897C + 7C7C7C787858586E556E5050507443514167B3CED5CFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D26540 + 4350544C716F73A57BAAAAAA808B8C897C588150744B4D534326431F49497272 + 5A72727272725A1F265E5B5D5C8E8A9596989A9C9C9C9C9A9A98C2CAB2CB0240 + 403E3E3E6B4443434D4B507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C + 8C89897C7C837883785854546E505550554B5A4241D2B3D4CFCFCFCFD5CFCFCF + D5CFD5CFCFCFD5CFD5CFCFCFCFCFCFCFD5CFCFCFCFCFCFCFCFD5CFCFCFCFCFCF + D1D22D4E4D504F717173737B977FAAAA978BA5897C78817D5074705353264349 + 1F5A72725A727272725A7E7E43265D848F8E9395989A9C9C9C9D9C9C9A98C2C2 + C2CB0240403E3E3E6B6B4343454B507D81838389898C8C8C8C8C8C8C8C8C8C8C + 8C8C8C8C8C898989897C7C8378584F5854546E55594B4E8662B3B3D5D5CFD5D5 + CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFCFCFD5 + CFCFD5D4B3D286494A554F717173A57BAA92AC92AA8BA58C7C838A7D50744B23 + 53264326495A5A5A727A725A5A5A495E5E535D848F8D9596989A9C9C9D9D9C9C + 9C98C2C2B2CB0240403E3E3E6B4443434D4B507D8183838989898C8C8C8C8C8C + 8C8C8C8C8C8C8C8C8C8989897C7C7C7878585854546E6E6E4853464764B3D1D5 + D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D4D2D23D49484F4C716F737B8BAA929292AA978B8C8983797D + 7D505723535326261F1F495A5A727272725A5A5A535B84848F8D9596989A9C9D + 9D9D9D9C9A9AC2C2CBCB02403E3E3E3E6B6B43434D74507D79837C8989898C8C + 8C8C8CA58C8C8C8C8C8C8C8C897389897C7C7C837878584F5455545548435147 + D2B3A0D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D5D5D5CED266514350584C6F6F737B8092929292AC808B8C + 897C7954595C56702353261F5E1F5A7E5A725A725A5A7E535B5D845C8F8A9596 + 9A9C9D9D9D9D9D97979AC2C2CBCB0240403E3E3E6B4449434D4B507D79839089 + 89898C8C8CA58C8C8C8C8C8C8C8C8C8C8C898989897C7C7C787858584F6E6E50 + 48494241B3D2D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D7D5D5D5D5D50AD0D265464D554C716F73737B7F92999292 + ACAA8BA5897C79797D5C4B57235326267E5A5A7E5A5A5A7E5A7E5E5E5E5D845C + 8E8A96989A9C9D9D9D9D9D9D9C9AC2C2CBCB0240403E3E3E6B6B44434D48507D + 8A839089898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C7C897C897C7C7878584C + 4F546D6E48494263D2D1D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5 + D7D5D7D5D5D7D5D5D5D7D5D5D5D5D5D5D5D5CFD1D288491E204C6F6F73A57B7F + 9299999992AA8BA5898358797D5C4B56575B2626261F5A5A7E5A7E5A1F7E7E26 + 295D5C8F8D9596989A9C9D9E9D9D9D9D979ACBC2CBCC0240403E3E3E6B6B4343 + 4548507D79839089898C8C8C8C8C8C8CA58CA58C8C8C8C8C8C8C8C8989897C7C + 7C7878584F4F4F504A493D64B3D0D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D4D2D24243246D716F7C + 737580A39299999992AAA8AB8C7C83797D74744B295B26267E7E5A495A7E7A7E + 7E7E7E5E5B5D848F8D9396989C9C9D9E9E9E9D9D979AC2CBCBCC0240403E3E3E + 3E4444434D4B507D8A838389898C8C8C8C8C8C8CA5A58CA5A58C8C8C8C8C8C89 + 7389897C7C7C7178584F4F6E706B8765B3D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D5D6D266515354 + 4C716F73737580929299999992928BA5898983817D50745657535326261F5A7E + 7E7E7A7E7E7E5E265D27847D8A9596989C9D9D9E9E9E9D9D9C97CBC2CCCC0240 + 403E3E3E3E6B4443454B507D8A8390898C8C8C8C8C8C8CAB8C8C8CA58CA5A58C + 8C8C8C8C897C897C7C7C71714C4C54554D7741D2B3D4D7D7D7D7D7D7D7D7DAD7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7DAD7D7D7D70AD1D2 + 82494B6E4C716F73738B7F929999A999BB92808B8C7C838A7D597429235B2626 + 5A495E7E7E7E7E7E7E7E5E5E29295C8E8A95989A9C9D9E9E9E9E9E9D979ACBCB + CBCC0240403E3E3E3E6B43434548507D79838989898C8C8C8CAB8CABABABA5AB + A5A5A5A58CA58C8C8C8C8C89897C7C7C714C4F50534263B3D2D7DAD7DADAD7DA + D7DAD7DAD7DAD7DAD7DADAD7DAD7D7DAD7DAD7D7DAD7D7DAD7D7DAD7D7D7D7DA + D7D4D2D2421F484F4C6F7373737B7F9299AEAE999292808B8C8983797D505C56 + 575326265E5E7E5E7E7E7A7E5E7E5E5D5D848F8E9395989A9C9E9E9E9E9E9E9D + 9C9ACBCBCBCC0240403E3E3E6B6B4343457450548A839089898C8C8CAB8CABAB + A5ABABABABA5A5A5A5A58CA58C8C8C89737C7C7C7C714F74438664B3D1D9DADA + DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADAD7D6D266464D554F6F6F6F73757B7F929999AFAE9992AA8B8C898379 + 7D7D745656535B53535E7E7E7E7E7E7E7E5E5E5D5D845C8E8A96989A9D9E9E9E + 9E9E9D9D9C9ACBCBCCCC0240403E3E3E3E6B4443454B7D81798389898C8C8C8C + ABABABA5A5ABA5ABA5A5A5A5ABA5A5A58C8C8C738C8C89736F6F4F50728767B3 + D8DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADADADADADA0AD1D2827A744F4C716F737373807F9299AFAF999992AA8B + 8C89838A817D5C56575D5B2626267E7E7E7E7E7E7E5E5E5D575C8F8D9096989C + 9D9E9EB2B29E9E9D9C97CBCBCCCC0240403E3E3E3E444943454B7D7D79838989 + 8C8C8CABABA5ABABABAB8BABABABAB8BABABA58BA5A5A58C737373737C717957 + 4687D2B304D9DADAD9DADADADADADADADADAD9DADADADADADADADADADADADADA + DADADADADADADADADADADADAA0D2D25143504F71716F6F73757B7F92A9AFAFAE + 9992978B8C8983797D5F5C56575B5B26265E7E7E7E7E7E7E7E5E5E5B845C8F8A + 9596989C9D9E9EB29E9E9E9D979ACCCBCCCD024040403E3E3E6B6B434D74507D + 8A8389898C8C8CABABAB8BAB8BABAB8B8B8B8B8B8B8BA5AB8BA5A5A5A5A57389 + 7378555E8664B3D1D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9DAD9D9D9D9DAD9D9DAD9D9D705D2654E4A504F4C6F6F7373757B7FA7 + 99AFAFAE9992AAA58C89838A7D7D7474575B265E267E7E7E7E7E7E7E7E5E5E5B + 298F8F8D95969A9C9D9EB2B29E9E9E9D979ACCCBCCCC024040B43E3E3E6B4443 + 454B50818383898C8C8CA5ABABABAB8B8B8B8B8BA88B8BA88B8B8B8B8B8B8B8B + A5A573757C78745A8767D2D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D90AD2D2881F486E4F71716F7373 + 757B7FA799ADAFAF9992AA8B8C7C83797D597656575B2626267E7E7E7E7E7E7E + 7E7E5E5D5D848F8D95969A9C9D9E9EB2B29E9D9D979ACCCCCCCD0240403E3E3E + 3E6B444345745081838389898C8CA5ABAB8B8B8BA8A8A8A8A88BA8A8A88B8B8B + 8B8B8B8B8B7B75737C5453852DB3D2D9DDD9DDD9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DDDAD6D267465350204C4C + 71716F73758092A7AFAFAF999992AA8B8C8983797D505C74295B5B267E5E7E7E + 7E7E7E7E7E7E265D765C8F8A95969A9C9E9EB2B29E9E9E9D979ACCCCCDCD0240 + 40403E3E6B6B444345747D818383898C8CABABAB8BA8A8A8A897A8A89797AAAA + A8AAA8A8808B8B808B8BA58978747A47D2B3D8DDDDDDDDDDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9DDDDD9DD04D1D264494B + 55204C4C4C6F7373757BA39999AFAFAF9992978B8C8983797D595C76575B265E + 5E7E7E7E7E7E7E7E7E7E5E5D295C8F8A90989A9C9E9E9EB29E9E9E9D979ACCCC + CDCD0240403E3E3E3E6BB54370747D798389898C8CABAB8BA8A88B9797AA97AA + AAAAAAAAAAAAAAAAAAAA7F8B8BA58C7C7D7E8564D2D2D9DDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE2D2 + D251265255204C4C716F7373757BA392AFAFAFAE9992AA8B8C8983817D5C7457 + 575D265E265E7E7A7E5A7E7E7E5E5E5D848F8F9395989A9D9E9EB2B2B29E9D9D + 979ACCCCCDCD0240403E3E3E6B44434370507D798389898CABAB8B8B97979797 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA80A57C795D8863D2B3E8DDDFDFDDDFDF + DDDFDDDDDFDDDDDDDFDDDFDDDFDDDFDDDFDFDDDFDDDDDFDDDDDFDDDDDDDDDDDD + DFDAD1D2654E4D50554F4C4C716F73737580A399A9AFAFAE9992808B8C89838A + 505074575B5B26267E7E7E7E5A5A7E7E7E5E5E5D845C7D8A90989A9D9EB2B2B2 + B29E9E97979ACDCCCDCD0240403E3E6B6B6B43436C50548A7C898CABAB8BA8A8 + 97AAAAAAAAAAAAACACACACACAC92ACACACAAAAAA80A5898F7A2DD2B3F8DDDFDF + DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF + DFDFDFDDDCE9D2D2421F5255204F4F4C716F6F7375809299AFADAFAF9992AAA5 + 8C8958797D5C27575B26265E7E7E7E5A7E7E7E7E7E5E5E5D848F8E8A90989A9D + 9E9EB2B29E9E9D9D979ACCCCCDCD0240403E3E6B446B43454B50547889898CAB + 8B8B9797AAAAAAAAACACACACACACAC9292ACACACACA3A3AA8BA5838482D2B366 + DD01DF01DFDFDF01DF01DFDFDFDFDFDFDFDF01DFDFDFDFDFDFDFDF01DFDFDFDF + DFDFDFDFDFDFDF01DA05D2654E45505520204C4C6F6F7373757B92A6999BAFAF + 9992AA8B8C8978797D5C5C575353265E5E7E7E7E7E5A7E7E7E5E265B848F8E93 + 96989C9D9E9EB2B29E9E9D9D979ACDCCCDCD02403E3E3E6B446B434548507983 + 898CABAB8B97AAAABAACACACACACBBBB92BBBBBBBBBBA7929292A39280A590D2 + B3D2D1E7F0E1DFDFDFDF01010101010101010101010101010101DF010101DF01 + 01DF01DFDFDF01DFDF010101E7D2D2881F746E544F4F4F4C716F7373757BA399 + A99BADAE999280A58C8978817D505C57575B265E7E7E7E5A7E5A7E7E7E7E5E5D + 298F8E9396989C9D9EB2B2B29E9E9D979AABCCCCCDCD02403E3E3E446B6B4345 + 48557983898CAB8BA897AAAAACACACBBBBBBBBBBBB99BB99A7BBA7BB92A7AC92 + 7F8B89B3B3B3B3B3B3DED1D1D105D6D6E6A0A0A0E7EBEBEFF4F4DF0101010101 + DF0101010101010101010101010101F0D1B3655A23506E4F4F4F4C4C716F7373 + 75809299AFAD9BAE999297A58C7C78815F2456575B265E5E7E7E7E7A7E7E7E7E + 7E5E5E5D848F8E9396989C9D9EB2B2B2B29E9D979A9ACDCDCDCD02403E3E6B6B + 44434345747D797C8CA58BA8A8AAAAACACACBBBBBBBB9999B9B999B99999A6A7 + A7A7A7A7AC80A5676767D2D2D2D1B3B3D2B3B3B3B3D1B3D1D1D1D1D1050505D8 + D6D8A0E8E2EA0AEBEBEFF6EFF3DFDF0101DFD9D6D2D251534850542020204C4C + 716F6F73758092A6AFAD9BAF999297A58C7C83817D7456235B265E7E7E7E7E7E + 7A5A7E7E7E5E5B29848F8E9596989C9E9EB2B2B29E9E9D979A9ACDCCCDCD023E + 3E3E446B4343456C505478898CAB8B97AAAAACACBBBB999999B9B9AEAEB9AEB9 + B9A69999B999A7A792AA80A589898A8A8E946161619F9F9F6666666767D267D2 + D2D2B3D2D2D2B3B3B3DED1D1D10505D6D8E3A0E8EAE7E3D2D2911F4B50542020 + 204C4F4C716F6F73758092A6AD9BAFAF999280AB899083817D7474235B261F7E + 7E7E7E5A7E5A7E7E7E7E5E5D848F8E95969A9C9D9EB2B2B29E9E9D979AABCDCC + CDCD023E3E3E444443436C6C50798389A58B97AAAAACACBBBBB9B999B9AEAEAE + AEAEA9A9AEAEA9B9A6A699A6A792A37F8075A5736F71784F546E5050745C7676 + 619161919F9F66669F66666666676767D267D267D2D2D2D2D2D2D2D29F494A50 + 55544F54206D4C4C716F6F7375809299AF9B9BAF999297A58C8378815F5C5629 + 53435E7E7E5A7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B29E9E9D97 + 9A98CDCDCDCD023E3E4444434345454B5079838CA58B97AAACACBBBBB9AEAEAE + AEAEAEAEAFAFAFA9A9A9A9AEA699A6A6A6A4A4A3A37F807B757573736F6F4C6D + 6D6D6E50504848486C4D5345434326265A919191919F9F9F666666B367D2689F + 436C5050204F4F4F204F4C4C716F6F73758092A9AF9B9BAF99AC97AB897C8A7D + 7D5C56295B265E7E7A7E7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B2 + 9E9E9D979AABCDCDCDCD023E3E6B444343456C4850797C8CABA8AAACACBB9999 + AEAEAEAEAEAFAFAFBEBEAFAFAFAFA9A9A9A9A6A6A6A6A7A4A3A37F7F7B7B7575 + 73736F6F6F4C4C4C6D6D6D6E505550505050481E4B4B2370232653262649495A + 491F43534824506E204F54206D4C4C4C716F737375809299AD9BADAF999280AB + 8C83797D7D74565B5B267E7E7E7A7E7E7A7A7A7E7E5E5E5D848F8D95969A9D9E + B2B2B2B29E9E97979A98CDCDCDCD026B44441F43434548487D78898C8BAAAA92 + BB99B9AEAEAEAFAFBEBEBEAFBEBEBEBEAFADA9AFA9A9A9A6A6A6A7A4A4A3A37F + 807B75757573736F6F6F4C4C4C6D4C6D6D4C6D2020556E6E5050505050525252 + 2452484B564B48745055556E55204F204F20204C6F6F6F73758092AFAD9B9BAF + 99AC97AB89838A7D5C5C56295B5E265E7E7A7A7E7E7A7A7A7E7E5E5D848F8D95 + 969A9D9EB2B2B2B29E9E9D979A98CDCDCDCD024E44441F4345454850547C89A5 + A8AAAC929999AEAEAFAFAFBEBEBEBEBDBEBEBEADADADADA9AFA9A9A9A6A6A7A4 + A4A3A37F7F807B7575736F6F6F6F6F6F4C4C4C6D204C204C4F6D20206E205455 + 5555555555505550555059556E55556E206E4F6D4F4F4C4C716F6F737580A799 + AD9B9BAF999297A58C838A7D505C295B535E7E7E7E7A7E7A7E7A7A7E7E7E5E5D + 848F9395989A9D9EB2B2B2B29E9E9D9AABABCDCDCDCD0244441F4343456C4850 + 547C8CA5A8AAACBBB9AEAEAEBEBEBEBEBEBEBDBDBE9BBEBDADADADADADA9A9A9 + A6A6A6A7A4A4A37F7F7B75757373736F6F6F6F6F4C4C4C4C6D4F4F4C4F6D2055 + 6D6E555554542055556E5455555554555555206E206E4F20204F6D4C716F7373 + 757F9299AD9B9BAF99928BA5897C797D5C5C295B5B7E7E7E5A5A7E7A727A7A7E + 7E7E5E5D848F9390989C9D9EB2B2B2B29E9D9C9A9A98CDCDCDCD024444434343 + 454A4850797C8C8BAAACBBBBAEAEAFBEBEBEBEBDBEBD9BB0BD9BB0BD9BADBDAD + ADADA9A9A9A6A6A7A4A4A3A38080757575736F6F6F6F6F6F4C4C4C6D6D4C4F6D + 6D2020555420556E6E5520555454546E6E555555542055545420544F204F4F4C + 716F6F737B8092A99B9B9BAF999297A58983797D595C575B265E7E7E5A7A7A7A + 7A7A7A7E7E5E5E5D848F9390989C9D9EB2B2B2B29E9D9D9AAB98CDCDCDCD0249 + 441F43456C1E506E787CA58BAA92BB99B9AFBEBEBEBEBE9BBDBDB0BDB0B0BDBD + BDBDADADADADADA9A9A9A6A6A7A4A47F807B7B7573736F6F6F6F4C4C4C4C4C4C + 4F20204F204F2054556E55555520556E54545455555555555554552054546D6E + 6D4F4F4C4C6F7373757FA4AEAD9B9BAF99928BAB8983797D5074565D267E7E7E + 5A7E7A7A7A7A7A7E7E7E5E5D848F8D95989C9E9EB2B2B29E9E9D979A988CCDCD + CDCD021F1F43534D4A48506E787CA58BAABB99AEAEBEBEBEBD9B9BB0B0BFBFBF + B0B0BDBFBDBDBDBDBDADADADA9A9A6A6A6A4A3A37F80757575736F6F6F6F6F6F + 4C4C4C4C4F204C4F6D202055555454556E54555420542054545555546E205454 + 20544F4F4F6D4C4C4C6F6F73757F92A99B9B9BAF9992978C8983795F5027295B + 267E7E5A7A7A7A7A7A7A7A7E7E5E5E5D5C8F9396989C9DB2B2B2B29E9E9D9C9A + 9898CDCDCDCD021F4343454D4B48506E788CA58092BBA7AEBEBEBE9BBD9BBFBF + BFBFB1BFBFBFBFB0BDBDBDBDBDADADADADA9A9A6A4A4A47F7F7B7B7573736F6F + 6F6F6F4C4C4C6D4C4C4C20204F202020546E6E6E545455555555556E55555555 + 205454545554546D4F4F4C4C716F6F737B7FA7AEAD9B9BAF99928BAB8983797D + 5C57575B5E5E7E7E7E7A727A727A7A7E7E7E5E84848E9396989C9EB2B2B2B2B2 + 9E9D9CAB988CCDCDCDCD021F4343456C48486E6E788C8BAAAC99AEAEAFBEBD9B + B0B0B0BFBFBFBFBCBCBFB0BCBFB0BDBDBDBDADADADA9A6A6A6A4A3A380807575 + 75736F6F6F6F6F4C4C4C4C4C4C4C204F4F2054204F5455555555555554555555 + 5555555455552020556E5420206D4C4C716F6F73757F92A99B9B9BAF9992A88C + 8983817D5C57575B7E7E7E7E7E7A7A7A7E7A7A7A7E5E5E5D848E9396989C9EB2 + B2B2B2B29E97979A9896CDCDCDCD021F4345454A48506E797C738BAAACA7AEAF + BE9B9BB0BFBFBFB1BCBCBCC0B1BCBCBCBCBCB0BDBDBDADADADADA6A6A4A4A47F + 7F7B7B7573736F6F6F6F4C4C4C4C4C4C4C6D20202055546E2055555455555420 + 55555554556E5555556E555520555420204F4F4C4C6F73737B7FA7AF9B9B9BAF + 99928BA58983817D5C56295B267E5E7E7A7A7A7A7A7A7A5A7E7E5D84848E9596 + 989C9EB2B2B2B29E9E9D97AB988CCDCDCDCD021F4345457448506E58718C8BAA + BB99AEBEBEBDB0BFBFBFC0BCC0C0B1C0C0C0C0B1C0BCBCBCBCBDBDADADA9A9A6 + A6A4A3A38080757575736F6F6F6F6F4C4C4C4C4F4F6D4F204F20202055556E55 + 555555555555555555555555556E6E556E54204F6D4F4F4C4C6F6F73757FA7AF + 9BB09BAF99AC8B8C8983817D5C565B53267E7E7E7A7A7A7A7A7A7A5A7E5E5E5D + 848E93969A9D9EB2B2B2B29E9E9D9A9A9896CDCDCDCD02435345534B50506E4C + 7CA580AABB99AFAFBEBDB0BFB1B1B1C0C0C0C0C0C0C0C0C0BCC0BCBCBCBDADBD + ADA9A9A6A4A4A3A3807B757573736F6F6F6F4C4C4C4C6D4F6D4C204F6E202055 + 556E5555546E55555555555555556E55556E55555420204F206D4C4C716F7373 + 7B7FA7AF9B9B9BAF99928B8C898381595C235B535E7E7E7E7A725A7A7A7A7A7A + 7E5E5E5D8F9493969A9D9EB2B2B2B29E9D9D9AAB8C96CDCDCDCD021F43454D4B + 505054587CA580AA99AEAFBEBDB0BFBFBFC0C0C0C0C0C0C0C0C0C0C0C0BCC0BC + B0BDBDADADA9A9A6A7A4A4A37F7B7B75736F736F6F6F4C4C4C4C6D4C4F204F4F + 202054205455546E556E55555555555555556E55556E5520546E2020204F4C4C + 4C7173737B7F99AF9BB09BAF99928B8C8978815027565B267E7E7E7A7A7A7A7A + 7A7A7A7A7E5E5E848F8E95969A9D9EB2B2B2B29E9E979AAB9696CDCDCDCD0226 + 53456C48505054587CA58092A7AEAFBEBDB0BFBFC0C0C0C0C0C1C1C1C1C0C0C0 + C0C0BCBCBDBDBDADADA9A6A6A6A4A37F807B757573736F6F6F6F4C4C4C4C4C4C + 6D6D4F206D2020545455545555555555556E5555555555555555555555542020 + 54204C4C716F6F75757F99AF9BB09BAF99AC8B8C89838159742953267E7E7E7A + 727A7A7A7A7A727A7E5E5E848F8D93989A9D9EB2B2B2B29E9E9C9AAB8C96CDCD + CDCD024325534B74506E4F4C7CA5809299AEBEBEB0B0BFC0B1C0C0C1C0C1C1C1 + C1C1C0C0C0C0BCBCBCBDBDADADADA6A6A6A4A3A37F7B757573736F6F6F6F6F4C + 4C4C4C6D4F4F4F20542054542055555454555550556E6E555555555555505555 + 552020204F4F4C4C717173737B7FA7AD9BB09BAF99AC8B8C8979815F74295326 + 7E7E7E7A7A7A7A7A7A7A7A7A7E5E5E5D8F9495969A9D9EB2B2B2B29E9D979A98 + 9889CDCDCDCD0226454D4A74506E5471738B7F92A6A9ADBEBDB0BFB1C0C0C1C1 + C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDADADA9A9A6A6A4A47F8080757573736F6F + 6F6F4C4C6D4C4C4C4C20204F2020205420555455555555555555555555505555 + 55505555542020544F6D4F4C716F73737BA399AF9BB09BAF99928B8C908A7D5F + 565729265E7E727A7A7A287A7A287A7A7E5E5E848F8D90969C9DB2B2B2B2B29E + 9D979AB89696CDCDCDCD0226454D4B74506E547889A5AA9299A9ADBDB0BCBCC0 + C0C1C1C1C1C1C1C1C1C1C0C0C0B1BCBCBCBDBDADADA9A9A6A4A4A3A3807B7575 + 736F6F6F6F4C6F4C4C4C4C4F6D20204F20555455555454556E55555555505555 + 505055555555555554206E204F4F6D4C716F6F737B7F99AD9BB09BAF92AA8B8C + 898A815F565726267E7E7E7A7A7A727A7A7A7A7A7E7E5D848F9395989C9E9EB2 + B2B2B29E9D979A989690CDCCCDCD0225534A4A74506E4F71898B7F9299AFAD9B + BFBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A6A4A37F + 807B7B7573736F6F6F6F714C4C4C4C4F4F4F4F20206E6E556E20545455555555 + 55555555555055505555505454542020204F6D4C4C6F6F737BA3A6AF9BB09BAF + 99AC8B8C7C8A7D5F5629535E7E7E7A727A7A282872287A7A7E7E91848F8D9598 + 9C9DB2B2B2B29E9E9D9A9A988C90CDCDCDCD02532545707450554F7873A5AA92 + B9AFBEBDBFB0C0C0C1C1C1C1C1C1C1C1C1C1C0C1C0BCC0BCBDBCBDADADA9A6A6 + A6A4A47F7F7B7575736F6F6F6F6F6F4C4C4C4F4F204F4F20206E555554545554 + 5455555055555055555050505555555555555520206D4C4C716F6F757BA3A6AD + B0B09BAF99AA8B8C838A7D50272953537E7E5A727A7A282828287A7A7E5E5E84 + 8F9395989C9EB2B2B2B29E9E9D9C9A8C9689CDCDCDCD025353221E50506E7971 + 6F8BAA92B9AFADBDBFC0C0C1C1C0C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDAD + ADA9A9A6A4A4A3A3807B7B7573736F6F6F4C4C4C6D6D4C4C4F4F4F20206E5454 + 545554545555505055595555505550505559555554205420206D4C4C716F7375 + 7BA399ADB0B0B0AF99AA8B8983817D5C57235B5E5A7E7A7A7A7A7A28287A7A7A + 7E5E5D848F8A95989C9EB2B2B2B29E9D9DABAB969690CDCDCDCD0226234D225C + 59554F71738BAA92AEADADBDBFBCC0C0C1C1C1C1C1C1C1C1C1C1C0C1C0C0BCBC + BCBDADBDADADA9A6A6A4A3A3807B7575736F6F6F6F4C6F4C4C4C4C4C20202020 + 202054545454556E6E555055505550505055555055505555555554204F4F4F4C + 716F6F737BA3A6AD9BB09BAF99AA8B8C83815F5C5623537E7E7E7A7A7A827A28 + 2882287A5A5E5D848F93959A9C9EB2B2B2B29E9E9C9AAB969690CDCCCDCD0253 + 23234B7450545878738BAA92B9AFBEB0BCB1C0C0C0C1C1C1C1C1C1C1C1C1C1C0 + C0BCBCBCBCBCBDADADA9A9A6A6A4A37F7F7B757373736F6F6F6F4C4C4C6D4C20 + 6D4F6D20205454555454545555555550505550505055505055506E5555545420 + 204F4F4C716F73737BA399ADB0B19BAF99AA8B8983797D5C575D265E7E7E7A28 + 7A7A282828287A727E7E5D848F8D96989D9EB2B2B2B29E9D9C9A98B89090CDCC + CDCD022523234B5055545871737BAABBB9ADBEB0BFBFC0C0C1C1C1C1C1C1C1C1 + C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A7A4A3A37F80757573736F6F716F4C4C + 4C6D6D4C204F6D6E20206E2020556E5550555550505550505955555055555555 + 55545420204F6D4C4C6F6F757B92A6ADB0B09BAF99AAA58C83817D74575D267E + 7E7A7A827A7A282828287A7A7E5E5D848E9396989D9EB2B2B2B29E9D979A9896 + 8983CDCDCDCD02264D224B50506E78718CA5AAA7AEAFBEBDBFC0C0C0C1C1C1C1 + C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6A6A4A37F7F7B7575736F6F6F + 6F6F4C4C6D4C6D4C20202054546E546E6E555555555550505050505055505955 + 55505555552055544F4F4C4C716F73737B92999BB0B09BAF92AAAB8983817D74 + 575B265E7E7E7A282828287A2828827A5A5E5D848E93969A9D9EB2B2B29E9E9D + 9CAB98968990CDCCCDCD025325224B7450554F7C738BAAA7B9ADBDBDBFBFC0C0 + C0C1C1C1C1C1C1C1C1C1C0C1C0C0BCBCBCBCBDADADA9A9A6A6A4A3A3807B7575 + 736F6F6F714C4C4C4C6D4F204F4F20556E545455556E55555555505959505950 + 505050555050556E556E2055206D4F4C716F73757BA3A69BB1B19BAF9997AB89 + 83795F5C575B5E7E7E7E7A28772828282828287A7E7E5D848F93969A9D9EB2B2 + B2B29E9D97AB98969090CDCCCDCD025353231E48507D587C898BAAA7B9AFBDBD + BCC0C0C0C0C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBDBCBDBDADA9A6A6A7A4A3A3 + 807B7575736F6F6F6F4C4C6D4C4C4F4F6D2020202054555454546E5059555050 + 505050505050595950505555556E6E206D6D6D4C6F6F6F737B92A9ADB0B1B0AE + 99978B898A817D5C575B5E5A5A7A7A82727A282828287A7A7E5E5D848F93969A + 9D9EB2B2B29E9E9D9A9A8C969083CDCDCDCD025B5B23487450544F7C738BAA92 + B9AFBEBDBFB1C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6 + A6A4A37F807B7573736F6F6F6F6F4C4C4C4C4F4F4F4F6E204F20555454555555 + 555550505050505050505050555555505555546E206D4F71716F6F758092AE9B + B0B19BAF92AAAB8983817D76535B265A5A727282282828287A777A7A7E5E5D84 + 9495969A9D9EB2B2B29E9E9D97ABB8968983CDCCCDCD022623234B4850555871 + 7C7BAABBAEAFBEBDBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBCBCBDAD + ADA9A6A6A6A4A37F807B7575736F6F6F714C4C4C4C4C6D204F205454206E2055 + 6E5555555050505050505050505050505055555555555420204F4F4C716F7375 + 7BA4A99BB0B19BAEBB97A58983815976575B5E7E7E7A7272282828282877287A + 7E7E5D848D93969A9D9EB2B2B29E9D9D9AAB96909090CDCCCDCD022625234B48 + 50554F7C898BAAA7B9AFBDBDBFBCC0C0C0C1C1C1C1C1C1C1C1C0C0C0C0C0BCBC + BCBDBDADADADA9A6A4A4A4A380757573736F6F6F6F4C4C6D4C4C6D4F4F4F5454 + 4F5520555555555550505050505059505050505950555055555554546E6D4F4C + 716F737580A4999BB1B19BAF9997A589587D5F275B5B5E7E7A5A287728282828 + 4E28287A7E7E5D618E95969C9DB2B2B2B29E9D979A9896898383CDCCCDCD0253 + 254D4A52506E5471898BAAA7AEAFBEB0BCC0C0C0C0C1C1C1C1C1C1C1C1C0C0C0 + BCC0BCBCBCBDBDBDADA9A9A6A7A4A37F807B7575736F6F6F4C4C4C6D4C6D6D6D + 4F2020546E5555555455505555505950505050505050505050505550556E5554 + 20204C4C4C6F6F758092AD9BB1B19BAF9297A589837D5C74295B5E7A7A727A7A + 28284E287A28287A7E7E5D848E95989C9DB2B2B2B29E9D9CAB989690908ACDCC + CDCD0226534B4B48505479718CA5A8A7B9AFBEBDBFC0BFC0C0C1C1C1C1C1C1C1 + C0C1C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F7F7B7575736F6F6F71714C6D + 4C4C6D4C6D202020542055556E55505955505050505050505050595050505955 + 555555546E4F4C4C4C6F73758092A9BDB1B19BAFACAAAB898A7D5C765D5E5E7E + 7A727A7A287777827A287A7A7A5E5D848E95989C9DB2B2B2B29E9D9C9A989690 + 908ACDCCCDCD0226252356485055547889A5AAACB9AFBEBDBCB1C0C0C0C1C1C1 + C1C1C1C1C0C0C0C0C0C0BCBCBCBDBDADADA9A9A6A7A4A37F807B7575736F6F6F + 71714C4C6D4F4F4F4F206E202055555455555555505055505050505050505059 + 505955555555556E6D4F4F4C716F737580A4A99BB1B19BAF92978C89587D5957 + 5D267E5A7A7A2828282828288228827A7E5E5D8F8D95989C9E9EB2B29E9E9D97 + AB8C96909083CDCCCDCD022653234A74506E4F787C7B7FA7B9AFBEBDBFBCC0C0 + C0C1C0C1C1C1C1C1C1C0C0C0C0BCBCBCBDBCBDBDADA9A9A6A4A4A3A380757573 + 6F6F6F6F4C4C4C4C4C4C206D2020552054556E6E555555555050505050505074 + 5250505059595550555454204F4F4C4C716F737580A4A9B0B1B1B0AE92978C89 + 837D59575D267E7A7A28287777827A607728827A7E5E5D619495989C9E9EB2B2 + B29E9D9A98988990838ACCCDCDCD022653232348505054786FA5AAACB9BEBEBD + BFBFC0C0C1C0C1C1C1C1C1C1C1C0C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F + 807B7575736F6F6F714C4C4C4F4F206D2054546E6E5454545555595050595050 + 50505050505024505050505555556E546E4F4C4C6F6F6F7580A4AD9BB1B19BAE + 9297AB898A7D5C765D5E7E7A7A282882822882828260287A7E5E5D8F8D95989C + 9EB2B2B29E9E9D9AAB968990838ACCCCCDCD025E265322525055547889A5AAAC + B9AFADBDBFBFC0C0C0C0C1C1C1C1C1C0C0C1C0BCC0C0BCBCBDBCBDADADA9A9A6 + A4A4A37F807B7575736F6F6F714C4C4F6D4F6D20202020206E5454546E555055 + 505050595050242450595059505059555055546E204F4C716F6F73757FA4A9B0 + B1B19BAEAC978C7C7959275D5B5E7E5A7A7A2882772860828228827A7E5E848F + 9395989C9EB2B2B29E9E9D9AAB969683838ACCCCCDCD02262653224848505478 + 7C75AA92B9AFADBDBFBFC0C0C0C1C0C1C0C1C1C0C1C0C0C0C0BCBCBCBCBDBDBD + ADA9A6A6A4A4A37F807B75736F6F6F71714C4C6D4C4F4F6D545420556E545555 + 556E55505050505924502450595074505050505055555555204F4C4C6F6F7375 + 7FA7ADB0B1B19BAEAC978C838A7D7457535E7E7A7A2828607760826060287A7A + 7E5E84619395989DC2B2B29E9E9D979A98968990838ACDCCCDCD022653532348 + 24506E7889A5AAACB9AFBEBDBFC0C0C0C0C0C1C1C1C1C1C1C0C1C0C0BCBCBCBC + BCBDADADA9A9A6A6A7A4A37F807B7575736F6F6F4C4C4C4C4F4F204F20542054 + 54205455555555595059595050502450525050505050505555556E54204F6D4C + 716F737580A7ADB0B1B19BAEAC978C9081505C5B265E5A5A7A7A778282606077 + 6060827A7E5E5D8F93959A9C9EB2B2B29E9D979A968990838A8ACCCCCDCD0226 + 53534A48525054787CA58092B9AFBEBDBFBFC0C0C0C0C0C1C1C1C1C0C1C0C0C0 + C0BCBCBCBCBDBDADADA9A6A6A4A3A37F807B7573736F6F6F4C4C4C6D6D4F4F20 + 2054545455555554555050595950505052507452742448505959505055556E54 + 204F4C4C6F6F6F757FA4ADB0B1B19BAE928B8C83815F5C57267E7E7A7A282882 + 828282608282287A7E5E848F93969A9D9EB2B2B29E9D979A989690838A8ACDCC + CDCD022626534D4B485054587CA5AAACB9AFBEBDBFBFBFC0C0C0C1C1C1C1C1C0 + C0C0C0C0BCBCBCBDBCBDBDADADA9A6A6A4A4A37F807B7573736F6F714C6D4C4C + 4C2020205555545454546E555555555059505050247450272424245024595050 + 595555204F6D4C71716F737580A7ADB0B1B19B99ACA88C83817D745B5E7E5A7A + 7A282828606060606060827A7E7E848F93969A9D9EB2B29E9E9D97AB96968983 + 8A81CCCCCDCD02265B53234B745054587CA5A8ACB9AFBEBDBFBFC0C0C0C0C0C1 + C0C1C0C1C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A37F807B7573736F6F6F + 4C4C4C4C204F204F202055545454555550555050502424245974745274522450 + 5924505050556E55206D4C716F6F737B7FA7ADB0B1B19BAEAC978C83815F565B + 5E7E7E727A8277776060606060607A7A7E5E848F93969A9D9EB2B29E9E9D9AAB + 969690838A81CCCCCCCD021F265B534B485054587CA580ACB9AFBEBDBFBFC0C0 + C0C0C0C0C1C1C0C0C1C0C0BCC0BCBCBCBDBDADADADA9A6A6A4A4A37F7B7B7573 + 736F6F6F4C4C6D4F4C6D4F20546E545555555555555550555059745250747424 + 527424745950505055555454204F4C4C716F73757FA7ADB0B1B19BAE928B8C83 + 815029535E7E7A72777782778260606060287A7A7E5E848F93969A9D9EB2B29E + 9E9C97AB9689908A8A8ACCCCCDCD021F2653234B485054787CA580ACA6AFBEBD + B0BFBCC0C0C0C0C0C1C1C0C0C0C0C0C0BCBCBCBCBDBDBDADA9A9A6A6A4A3A37F + 807B75736F6F6F714C4C4C4C20204F2055205455555555555555505050595052 + 50242424242452745050505055555520204F6D4C716F73757FA6ADB0B1B19B99 + AC8B8C837D5F7653267E7E7A82287777608260606028827A7E5E848F93969A9D + 9EB2B29E9D9D9A989689908A8A81CCCCCDCD022626255B4B745055787C73A8AC + B9AFBEBDBFBFBCC0C0C0C0C1C0C1C0C1C0C0C0C0C0BCBCBCBDBDBDADADA9A6A6 + A4A4A37F80757573736F6F4C4C6D4C4C4F206E20545520556E557D5555505050 + 505050507424245252242424505050505055556E6E6D6D4C716F737B7FA6ADB1 + B1B19BAEAA8B8C837D5C565B5E7E7E7228777760607760608260827A7E5E848F + 93989A9D9EB2B29E9D9CAB98968990838A81CCCCCDCD02262653232274505478 + 71A580ACB9A9ADBDB0BFC0C0BFC0C0C0C1C0C0C0C0C0C0C0BCBCBCBCBDBDADAD + ADA9A6A6A4A4A37F7B7B7573736F6F714C4C4C6D4C2020205420205555556E55 + 505050505959502474242424247452242424505059555454204F4C4C716F7375 + A3A6ADB0B1B19B99ACAB8C8A815C7653267E5A7277777760606060828260287A + 7E5E848F95969C9D9EB2B29E9D9C9A8C9690838A8A81CCCCCCCD0226265B2322 + 52507D587CA580ACB9AFBEBDBDBFBCC0C0C0C0C0C0C1C1C0C0C0C0C0BCBCBCBC + BDBDADADADA9A6A6A7A3A37F807575736F6F6F714C6D6D6D4F4F202020205554 + 55505555505050505050245924525224242424745250505050555554204F4C4C + 6F6F737B7FA6ADB1B1B19B9992AB89837D5C5753265A5A287728607760776060 + 82827A7A7E5E619493969C9D9EB29E9E9D97AB988990838A8181CCCCCCCD0249 + 265B534B2774555871A5A8AC99A9BEBDBDBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0 + BCBCBCBCBDBDADADA9A9A6A4A4A4A37F7B7B75736F6F6F4C4C4C4F4C204F4F20 + 20205554556E5555595959502450505924245224502452522448245050505555 + 546D4F4C6F6F737BA3A6ADBCB1B1AF99AA9A89837D5C575B5E7E7A7A7A826060 + 827760606082827A7E5E849495969C9D9EB29E9E9D97988C9690838A818ECCCC + CDCD02262626234B745055797C73A8ACB9AFBEBDBDBFBCC0BFC0C0C0C1C0C0C0 + C0C0C0C0BCBCBCBCBDADADADA9A9A6A6A4A4A3807B7575736F6F71714C4C4C4F + 6D6D205420205420555455555050505024747424242424525252522424505050 + 505555554F4F4F4C716F737BA3A6BDB1B1B19B99ACAB898A7D5C57537E5A727A + 28776060827760826082825A7E5E848F95989C9E9EB29E9D9D9A98969090838A + 8181CCCCCCCD027E5E2625224B507D587C8CA8ACA7A9BEBEBDB0BCBFC0C0C0C0 + C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A3A37F7B757573736F6F71 + 4C4C4C4F4F4F5420206E55545555556E50555924592459272424241E52215224 + 522450507D555555206D6D4C6F6F757BA3A6ADB1B1B1AF99AAAB898A7D5C5753 + 7E5A7A7A28776060828260826082827A7E5E849495989C9D9EB29E9E9D9A9896 + 90908A81818ECCCCCDCC027E26535B234B507D587173A8A3B9AFADBDBDBFBCC0 + C0B1C0C0C0C0C0C0C0BCC0C0BCBCBCBDBDBDADADA9A9A6A6A4A47F7F7B7B7573 + 6F6F6F4C4C4C4F4F4F4F20202020556E6E555555505950505059242724245252 + 2121485224245050505055544F4F4C4C716F737BA3A6ADB1B1B19B9997AB8979 + 7D745B267E5A727A776060776060886077607A7A7E5E849495989C9EB29E9E9D + 9C9A988990838A8A8181CCCCCCCD025A262625234B505079718C8BACBBA9BEBE + BDBFBCBCC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADADA9A6A6A6A4A47F80 + 7B7575736F6F71714C4C4F206D206E55556E206E54505055505950505C592424 + 2452524827211E522452505050505554544F4C4C6F6F737BA3A6BDB1B1B0AF99 + AAAB89795F5C5D5E7E7A7A77286060777760608860607A7A7E5E849495989C9E + C29E9E9D979A9896908A8A817D81CCCCCDCD025A1F535B4B48507D79718C8BAC + B9AEBEBDBDBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0BCBCBCBDBDBDADA9A9A9A6A4 + A4A37F7F7B7B75736F6F71714C4C4F6D202020546E5555555055555050505074 + 7452242452525252521E52482474505050555554546D6D4C716F737BA3A69BB1 + B1B1AF99AAAB898A7D5C5D5E7E7A282877606060607760778260827A7E5E8494 + 95989C9E9E9E9E9D97AB969690838A81817DCCCCCCCD027E2653254D4B527D4F + 7C738BAAA7A9ADBEBDBFBFBFC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDBDADAD + A9A6A6A6A4A4A3807B7575736F6F4C4C4C4C6D2054546E20556E545555555550 + 505059505052522448521E214821522724242450505555544F204C4C6F6F737B + 92A9ADB1B1B0AF99AA8C898A7D5C5D267E72828277776060608860608260777A + 7E5E849395989CC2C29E9E979CAB9690908381818E7DCCCCCCCD025A5E5B5323 + 4A5C50547C8C8BAAA7AEADBEBDBFBFBCBCC0C0C0C0C0C0BCC0C0C0BCBCBCBFBD + BDADADA9A9A9A6A7A4A3A3807B7575736F6F71714C4F4F4F4F206E5520545555 + 55555055505050245024244848521E52481E48524852505050505555204F6D4C + 716F737BA3A69BB1B1B09BBB97AB89815F765B267E7A28607760828288608860 + 7782287A7E5D618D95989DCA9E9E9E9D97AB9690908A81818E7DCCCBCCCD025A + 5E26535B4B745954788C8BAABBA9ADBDBDB0BFBFBCC0C0BFC0BCC0C0BCBCC0BC + BCBCBDBDBDADADADA9A9A6A4A4A37F807B75756F6F6F714C4C4F6D4F6D20206E + 6E556E555050505050505059272424522748212752481E521E74245050555555 + 6E4F4F4C716F757BA3A6BDB1B1B0AF99978C83815C765D5E5A7A286060828288 + 6088607760607A7A7E5E618D95989DC29E9E9D9D9A989690838A8A81817DCCCC + CCCD025A5A26262356485079718C8BA3BBB9AFBDBDBDBFBFBFBCC0C0C0C0C0C0 + C0C0BCBCBCBCBDBDBDADADA9A9A6A6A7A4A3A3807B7573736F6F714C4C6D4F4F + 202054546E555555555555505050507424242427522152525221525248525C59 + 50595555204F4F4C6F6F737BA3A6BDB1B1B0AF92978C83815C295D5E7E722877 + 60606060888288608260827A7E5D6194969A9C9D9E9E9D9C9A989690838A8181 + 7D8FCCCCCCCD025A5A2653234B747D54838C8BAABBB9ADBEBDBDBFBFBFBFBFC0 + BFC0BCBCC0BCC0BCBCBCBDBDBDADADA9A9A9A6A7A4A37F807B7573736F6F4C4C + 6D4C4F4F206E545454206E555050505050507474502448482421525248485252 + 52272474505555546E4F4F4C716F737BA3A99BB1B1B1AF998B8C90815C295B26 + 5A7A827777606088828288607760827A7E91618D96989D9E9E9E9D9C9A8C9690 + 8381817D7D7DCCCCCCCC025A7E4353532274505478898BAABBB9AFBEBDBDBFBF + BFBFBFBFC0C0C0C0C0BCBCBCBCBDBDBDADADADA9A9A6A6A4A4A37F807B75736F + 6F6F4C4C6D4C4F4F205454556E545555555050505024597452524852241E5227 + 7452521E52522424505055556E4F4F4C716F757BA3A99BB1B1B0AFBB978C8381 + 5C765B5E5A82772882886088888860778860287A7E5D6193969ACAC29E9E9D9C + 9A9689908A81817D7D7DCCCCCCCD027E7E2653235674506E7C898BAABBB9BEBE + BDBDBDBFBFBFB1BCBCBCC0C0BCBCBCBFBFBCBDBDADADADA9A9A6A6A7A4A37F80 + 7B7573736F716F4C4C6D204F205554556E6E556E555050595024507424521E74 + 48525621747421485248242450595055204F4F4C6F6F737BA4A9B0B1B1B0AF92 + 978C837D5C575B7E7E7A288277608288888860778282287A7E5D8F8D969A9D9D + CA9E9D9798989090838A8E7D7D5FCCCCCCCD025A5A265323565250817873ABAA + BBB9A9BEBDBDBDBFBFBFBCBFC0BCBCBCC0BCBCBCBFBDBDBDBDADADA9A9A6A6A4 + A4A37F807B75736F6F714C4C4F4F204F55545455556E55555559595050507424 + 24521E1E242756567448214821212424505055556E4F6D4C716F757BA3A9B0B1 + B19BAFBBA88C837D5C29537E7A28827782777777888888608282827A7E918F93 + 969A9DC29E9D9D9A989690838A818E7D5F59CCCCCCCC025A5A26265323485081 + 78898BAABBB9AFBEBDBDBFBFBFBFBCB1BFBCC0BCBCBCBCBCBCBDBDBDADADA9A9 + A9A6A7A4A4A37F807B7573736F714C4C4F20206D202055545454555555595050 + 505024745252212174481E5622527452525274242450555555544F4C716F737B + 92A99BB1B1B0AE928B96837D745D267E7A28778277608888888877607782827A + 7E5D8F93969A9D9D9E9D9C9AAB9690838A817D7D7D5FCCCCCCCD025A7E262653 + 234B50818389A5AABBB9AFBEBDBDB0BFBFBFBFBCBFBFC0BCBCBCBCBCBDBDBDBD + ADADA9A9A9A6A6A4A3A37F7B7B75736F6F71714C6D4F204F2054545454555555 + 555050505274242424522121564B524852522224212124245950555554204F4C + 716F7380A4A6B0B1B19BAFAC9A8C837D765D5B7E7A2882606060888588888888 + 8877827A5E918F93969A9D9EC29D9C9A9889908A817D7D5F7D5FCCCBCCCD0272 + 5A2626535774597D7889A5AABBB9AFBEBDBDBDBDBFBFBFBFBFBCBFBFBCBFBCBD + BFBDBDBDADADADA9A9A6A7A4A4A37F80757573736F714C4C4F6D202054205520 + 205555555950502424242452245252272752487474272152521E522424505555 + 55544F4C4C6F737BA4A9BDB1B1B0AFAC8B898A5F5C5D5E7E5A82826088888888 + 888888886060777A7E848F93989A9D9D9D9D9C9A9896908A8A817D7D7D5FCCCC + CCCD02727249265B4D56596E787CA5AABBB9A9BEBEBDBFBDBDBFBFBFBFBFBFBC + BCBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A37F807B75736F6F714C4C4F6D204F + 545555545555555050505024502424521E5274564848562752212152521E5224 + 5050555555544F4C6F6F737BA4A9B0B1B1B0AEAC8B898A7D765D5E7E7A7A8277 + 77607788858888886060827A7E918F93969C9D9D9D9D9C9A9690908A81817D5F + 5F74CCCCCCCC025A7E5A26535722507D7889A5AA92B9AFBEBDBEBDBDBFBFBFBF + BFBFBFBFBFBFBFBFBDBDBDADADADA9A9A6A6A4A4A4A3807B7B75736F6F714C4C + 6D4F20206E545455555550505024245050747452747448564B744856524B5622 + 212452242450505554206D4C716F738092A9B0B1B19BAEAC9A89795F5C5B265A + 8277777777888888858888606060287A7E848F93989C9D9D9D9C9C989690838A + 817D7D5F5F5CCCCCCCCC025A497E26535D56747D7889A5AABBB9AFBEBEBDBDBF + BDBFBDBFBFBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A380807575736F + 6F4C4C4F4F204F2020545555556E505050245074742474522152522756524874 + 2227485252525224505055552054544C716F737BA4A99BB1B19BAEACAB89795C + 565B5E7E7228608288518888888888888882827A7E918F93989ACA9D9D9C9A98 + 9690838A817D8F5F5F5FCCCBCCCC027A5A7E265B235750545889A5AAACB9AEBE + BEBEBDBDBFBDBFBFBFB0BFBFBFBDBFBDBDBDADADADADA9A9A6A6A7A7A37F7F7B + 7575736F714C4C4C6D6D54545455555455555550505024592424525227527448 + 2748524852274856277452525250506E55204F4F716F738092A9B0B1B19B99AC + AB89815957535E492877777760888888515188886060827A5E919495989C9D9D + 9D9C9A989690838A8E7D5F5C595CCCCCCCCC027A5A5A2653234B527D7989A5AA + 92B9A9BEBEBDBDBDBDBDBFBFBFBFBDBFBFBDBDBDBDBDBDADADADA9A9A6A6A7A4 + A3A3807B7B756F6F714C4F4F6D4F6E2055555555555555555959485024524848 + 5221564B2227522221524822275252522459505554544F4F6F6F7580A4A9B0B1 + B19BAEAAAB89815C575E5E5A7282607788888888888888886082827A5E848F95 + 989C9D9D9D9C9A9896908A8A8E7D7D5F5C5CCBCCCCCC027A727E26532356747D + 787CA5A8ACB9AEBEBEBDBDBDBDBFBDBDBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9 + A6A6A7A4A3A3807B7B73736F6F4C4C4C20205420545455555550505050507424 + 27484821484856527452222174484B524852487424505055556D4F4C716F757B + A4A9B0B1B19B99AAAB90795C575D5E7A7A826077888888518588518888827A7A + 7E849495989C9DCA9D9C9A9890908A817D5F5F5C5C5CCCCCCCCC027A725A1F26 + 5356747D5889A5A8ACB9A9AFBEBEBDBDBDBDBDBFBDBFB0BFBDBDBDBDBDBDADAD + ADADA9A9A6A6A4A4A37F807B75736F6F714C4C4F20206E6E5555555555555050 + 50502424245227525652525248484B22224B5674522148742424505555544F4C + 716F7580A4A9B0B1B19B99AAAB90795C575B5E72827777888888888885888888 + 88607A7A5E849495989C9C9D9D9A9A98908A8A8E7D7D5F5C5C5CCCCCCCCC0228 + 5A5A1F265357747D587CA5A8ACB9AEBEBEBDBEBDBDBDBDBDBDBDBFBDBDBFBDBD + BDBDBDADADA9A9A6A6A7A4A3A37F807B75756F6F714C4C4F204F546E55556E55 + 5559505024747424525221485221214B22214A22224822275648525252505555 + 55544F4C716F7380A4A9B0B1B09B99AAAB90815C295E7E7A8277777788888888 + 888888888882827A5E848E95989C9D9D9C9A9896908A8A817D5F5F595C5CCCCC + CCCC025A725A1F2653297450797CA5A8ACB9A9AFBEBEBDBDBDBDBDBDBDBDBDBD + BFBDBDBEBDBDADADADA9A9A9A6A6A7A4A37F7B7B75736F6F714C4F4F20542055 + 55556E555555555059745024274848272148214B221E4A224B2222274B4B5224 + 2450505555204F4C716F7380A4A9B0B1B19B99AAAB907D5C76265A7228777788 + 778888858888888860827A7A7E849495989C9D9D9C9A9896908A8D8E7D5F5C59 + 5C5CCCCCCCCC0272725A7E2653577450797C8CA8ACA7A9AFBEBEBDBEBEBDBDBD + BDBDBDBDBDBDBDBDBDADBEADA9A9A9A9A6A6A7A3A37F807B75736F6F714C4C4F + 4F6E54546E6E5555555050505050242452527456274821224B1E22224A221E22 + 2752525224595050554F6D6D716F7580A7ADB0B1B1AF99AA8C837D5C5D5E7E7A + 2860888888888885858888886060827A5E849495989C9C9C9C9A9896908A8A7D + 7D5F5F595C5CCCCCCCCC027A7A5A7E2653237459797C8CA8ACBBAEAFBEBEBDBE + BDBDBDBDBDBDBDBEBDBDBDBDBEBDADADA9ADA9B9A6A4A4A3A37F807B75736F6F + 714C4F6D4F205554545555555050505052242452525274565648481E4A224B22 + 4A4A2248275252522450505555544F4C6F6F7380A4A9B0B1B09BBB978C837D5C + 5D5E7E728277778888858885858888858877827A5E619495989C9D9C9C9A9696 + 907981817D5F5F5C5C5CCCCCCCCC0228725A7E265B23567D79838C8BACBBB9AF + BEBEBEBDBDBDBEBEBDBDBDBDBDBDBEBDBDADADADA9A9A9A6A6A4A7A37F7F7B75 + 75736F714C4C6D4F205455555555555555505050242474521E521E4B561E211E + 1E4B4A2222562221214821212459505055204F4C716F7580A4A9B0B1B09B9997 + 8C835F765D5E5A7A8277888888858585858588886082607A5E619396989C9C9C + 9A9A9690838A817D5F5F5C5F5C5CCCCCCCCC02287A727E265323747D797C8CA8 + AABBB9AEAFBEBEBEBEBDBDBDBDBDBDBDBDBDBDBEADADADADADA9A6A6A6A7A4A3 + A380807575736F6F4C4C4F4F4F5454546E55555550505950502448742156481E + 4B1E2222561E1E4A22222222224848485250505555204F4F4C6F7580A4A9B0B1 + B0AF99978C8A7D745D7E7E7A7777778888858585858588888882827A5E849495 + 989C9C9C9A9896908A8A8E7D5F5F5C5F5C5CCCCCCCCC0228285A5A26264D565C + 81788C8BBABBB9AFAFBEBEBDBEBDBEBDBDBEBDBDBDBDBEADBDBEADA9A9A9A9A6 + A6A4A4A37F807B7575736F714C4F6D6D545455556E5550555050745024525252 + 52225248214A1E1E4A22524B2222224A2252275252595055556E204F716F7580 + A4ADB0B1B0AFBB978C837D765B265A7277607788858888858585858588827A7A + 5E849396989C9C9A9A9896908A8A815F5F5F5F5F5C5CCCCCCCCC022828724926 + 535B575079838C8BAABBB9AEAFBEBEBEBDBEBEBDBDBEBDBEADBEBDADBEADBEAF + ADA9B9A6A7A4A4A37F807B75756F6F714C4C4F4F545454545455505050594874 + 522452482727221E224A1E4B4822234D22224A4A225256564859505055546D4F + 4C6F7580A4ADB0BCB0AF9E97968A5F5C5B7E7A60826088888885858585858588 + 88827A7A5E619395989C9C9A989896908A817D5F7D5F5C5C5C74CCCBCCCC0228 + 827A5A26265B56597D788C8BAABBB9AFAFBEBEBEBEBEBDBEBEBDBEBDBEBEADAD + AFADA9A9A9A9B9A6A7A7A4A37F807B7573736F714F4C4F4F2054205555555055 + 5024507424525252522127524B222223224B4B22234D222222484B4852505050 + 55544F4F716F757FA4ADB0B1B0AF92978C8A5C295B7E72827760778888888586 + 858588888882827A5E619396989C9C9A989696908A817D5F5C5C5C747474CCCC + CCCC022828725A1F535B57506E838C8BAABBB9AEAFBEBEBEBEBDBEBDBEBEBDBE + BDBEAFADADAFADA9A9A9A6A6A7A4ACA37F807B75736F71714C6D6D4F4F206E55 + 5555505559505050244852485622272122221E4A575722222257222256224B1E + 482459555555544F4C6F757FA4A9BDB1B0AFBB8B89795C575E7E7A7760608885 + 858585858585858888827A7A5E8F9396989A9C9A989690938A8E7D7D5C5C5C5C + 5C5CCCCCCCCC022872285A7E265B5750817889A5AABBB9AEAFBEBEBEBEBEBEBE + BEBEBEBEBEADBEBEADADA9A9A9A9B9B9A7A7A3A37F807B7573736F714C6D4F6E + 545454555555555050502424745252524822221E22224A22224A234A4B232222 + 2256561E2450505055204F4F4C6F7580A7ADB0B19BAFACA8968A5F295E7E7A77 + 7777888885858585858585856082827A5E619396989A9C989896908A8A817D5C + 5F5C5C745C5CCCCCCCCC0228287A5A5A2625575C7D838C8BAABBB9AEAFAFBEBE + BEBEBEBEBEBEBEBEBEBEADA9AFADA9A9A9B9A6A7A7A7A3A380807B75736F6F71 + 4C4F6D206E545555505550505024505974245252521E52574A4A574B4A4A2322 + 4A23224B4A221E527450505055544F4F716F757FA7A9BCB1B0AFAC8B89795F57 + 267E7A2860888585858585858585858588827A7A91619396989C9A9A9896958A + 81817D5F5F5C5C5C5C74CCCCCCCC027728285A5A265B575C7D78B8A5AAACB9AE + AEAFAFBEBEBEBEBEBEBEBEADBEADAFA9ADA9AFA9A9B9A6A6A7A4A37F7F7B7B75 + 736F71714F4F4F545454556E50555050505274245248484B561E211E4B22224A + 4B2222224A22234D221E48271E4850505555204F4C6F757FA7ADB0B09BAFAC8B + 89815C575E7E7A6060888885858585868585858888607A7E5E8F9396989A9A98 + 9696838A8E7D5F5F5C5C5C5C7674CCCCCCCC0228287A727E265B575C7D7889A5 + AAACBBB9AEAFAFAFBEBEBEBEBEBEBEAFADAFBEBEA9A9AEA9A9A6A6A7A4ACA3A3 + 807B75A5736F714C4C4F4F545454545555505050505052525252527456222222 + 23224A4A2223234B5722574A4B4A4A5648485059552020204C6F757FA7ADB0B1 + 9BAFACAB89815C5D5E7A7A286077888586858585868585886060827A918F9396 + 989A9A9896908A8A8E8E5F5C5C5C5C5C7476CCCCCCCC027772285A7E1F5B5774 + 7D8389A5A8ACBBB9AFAEAFAFBEBEAFBEBEBEBEA9BEADA9A9A9A9A9A9A6A6B9A7 + A7A4A37F807B7B73736F6F4F4F4F4F6E55546E50555550502474505248485274 + 224A4A22225622222323226C7023232223564A48482450505555204F716F757F + A4ADB0B19BAEACAB90815C5D5E5A7A7777888585858586858686858888607A7E + 5E8F9396989A989896908A81817D5C5C5F5C5C275627CBCCCCCC024E77285A5A + 265323567D7989A5A8ACBBAEAEAFAFBEAFBEBEA9BEBEAFBEBEA9AFA9AFA9A9B9 + B9A6A7A7A7A3A3AA807B7573736F71714C4F4F4F55556E6E5055505924242452 + 484B2756221E22564A4B2270704B4B562223224A4B224B5674245050506E6E4F + 4C6F757FA7ADB0B09BAEACAB90815C575E7A8260778885858585858685858585 + 88607A7E91619398989A9A9895908A8D817D5F5C5C5C5C575657CCCBCCCC0277 + 77287A5A262623747D8A89A597ACBBB9AEAEBEAEAFAFBEAEBEAFBEA9A9AFA9A9 + A9AEB9A9A6B9A7A7A3A7AA7F808B75736F6F714F4F6D4F54556E6E5555505050 + 50525248485652486C4A4B221E4B4A2323224B5622222222234A225648522450 + 5055204F4C6F757FA7ADB0B09BAEAAAB897D5C535E7A77608288888585868686 + 858585858860827E916195969A9A989896908A8E7D5F5F5C745C5C567684CCCC + CCCC026028285A5A1F2653767D797CABA8ACBBB9B9AFAEBEAFBEAFAFBEA9AFBE + AFAFAEA9B9A9A9B9B9A7A7ACA7A3A3AA807B758C736F714C4F4F54546E555550 + 55505059505252525221524B4A23234A4A22224A222223295656574B224A4A27 + 522450505555206D4C6F757FA7ADB0B09BAEAAAB907D5C5B495A827760888585 + 858586868585858888827A7E919493989898989690838A8D8E5F5F5C5C275629 + 5657CBCCCCCC02607728285A5A265B76507989A5A8AABBB9AEAEAFA9AFB9AEBE + AEBEAEA9A9A9A9A9B9A9B9B9A6A6A7A7A3A3AA80807BA5736F6F784C4F546E6E + 545555555550505024244821221E52564A2256232222232323235723564B5723 + 23232248525224245555204F4C6F757FA7ADB0B09B99AAAB837D5C5B7E5A7A82 + 88858585858686868686858588607A7E919495969898989690958A8E8F5F5C5C + 5C7476575629CCCBCCCC0260282828725A265B565979838CA8ACBBBBB9AEAEAE + AFAFBEAEBEAEA9AEAEAEA9B9A9B9A6B9A7B9BBA7ACA37F808B7575736F71714F + 4F6D546E555555555050505250527474745222224B222222224A4D2322572223 + 232322232223221E272724505055206D4C6F757FA7ADB0B09B99AA98907D7626 + 7E7A827788888585868686868685868888607A7E918F959698989896908A8A8E + 7D5F5C5C5C5656575729CCCBCCCC026060287A5A5A265356507989A5A8ACBBBB + B9B9B9AEAFAEAFA9AFA9AFAFA9A9AEA9B9B9A6B9B9A7A7A792A3AA807B8B7373 + 6F6F4C4C4F4F5454555559505050502424485274524822564B222256234A4D23 + 22225623232323234A224B1E215224505555544F4C6F757FA7ADB0B09B99978C + 835F27267E7A777788888585858686868685868588827A7E9194959898989896 + 908A817D5F5F5C5C842757575729CCCCCCCC02606060285A1F2653575C7983A5 + A8BAACBBB9B9AEAEAEAEA9AEAEAEAEAEAEA9A9B9B9B9B9B9BBA7A7ACA3A38080 + 8B75A5736F71714C4F545455555555505050747474482756524A222222224B4D + 4A56232323222323232229574A22224A52527450555554204C6F757FA7ADB0B0 + BE99978C837D295E7E7A77608885858586868686868685858882827E848F9596 + 98989695908A8E7D5C5C5C5C5C2757222323CBCBCCCC02607777285A5A265B57 + 5C81838C8BAABBBBB9B9B9AEAEAEAEAEAEAEAEAEA9AEAEB9B9B9B9B9B9BBA4A7 + A3AA7F807B75736F7C71714F4F206E5555555550505074747448274B524B2223 + 4B2322234D23232322232323222223232222561E522774505055544F4C6F757F + A6ADBDB09B99978C838F575E7E72606051858586868686868686858560607A7E + 9194959698989696908A8E8F5F5C5C5C5C5757232329CBCCCCCC026028827A72 + 5A5E53575C797C8CA8BAACBBBBB9AEB9B9AEAEAEAEB9B9B9B9B9B9B9B9B9A7BB + A4A4ACA3AC7FAA8BA5A573736F714C4F6D4F546E555550505074247452485248 + 564A56232356564D232329232323575D572257222223221E74524850556E544F + 4C6F757FA7ADB0B0AF99978C8A5C575E5A7A6088888586868686868686868685 + 60827A7E9194959696989695908A8E5F5F5C5C5C565729232929CBCBCCCC0277 + 60777A7A5A2653575C81838CA5BAACBBBBB9B9B9B9B9B9AEAEAEB9AEB9B9B9B9 + B9B9BBA7BBA7A7ACA37F807B7B75A57C6F71714F6E54556E5550505050502452 + 52565648224A22232322222323572323232323572323292223224A224B482450 + 5555556D4C6F757FA6ADBDB0AF99978C8A5C5B5E5A7A82888885858586868686 + 8686868888827A7E84949596989696958A8A8E8F5C5C8456562729292329CBCB + CCCC0260602828725A1F26575C7D838CABBAACBBBBB9B9B9B9B9B9B9B9B9B9B9 + B9B9B9B9A7B9A7B9A7BBA3ACA3AAA880A575736F71714C4F5454545550555050 + 505252522722272221224D57574A2323235723292323235B5B29232357572222 + 4B4824505555554F4C6F757FA6ADBD9BAF999A968A5C5D5E7228775188868686 + 868686868686868588607A7E61949596969696958A8E7D5F5C5C277657562729 + 2929CBCBCCCC02606060285A7A5A26235C7D83B8ABBABAACB9BBB9B9B9B9B9B9 + B9B9B9B9B9B9B9B9B9BBBBA7ACA7ACA3AA7F808B75A56F6F6F71584F546E6E55 + 5050595950247474222152224B4A225622232223232325235323252323232329 + 23574A221E52245050556E6D4C6F757FA6ADBD9BAFBB97968A5C5D7E7E287760 + 88858686868687868686868588827A7E61949596989695958A8D8F5C5C747627 + 275657292929CBCBCCCC0260606082725A5A265B5C7D8389ABBAACBBBBBBBBB9 + B9B9B9B9B9B9B9BBB9B9BBBBA7BBA4BBA7A3ACAAAA80A87BA573897371784F4F + 6E545555505050597452485652524B2221224B22222223572323234D5B5B2325 + 2323235723232323482724595055204F4C6F75A3A6ADBD9BAFBB9789815C5B7E + 7A82828885858686868786878786868588827A5E84949596969690938A8E5F5C + 5C842956572923235B57CBCBCCCC0260606077287A5A7E535C7D838CA5A8BAAC + BBBBB9B9BBB9B9BBB9B9BBB9B9B9BBBBBBA7ACA7ACACACA37FA8807BA573736F + 7178784F5454555555505050245274275248481E4B4B222323235757235B2323 + 5B29232553235B232323224A48224850505555204C6F757FA6ADBD9BAFAC9A89 + 815C535E7A82608885858686868787868686868888827A918494959696959090 + 8A7D5F5C5C272756572929295B5BCBCBCCCC0260606077285A5A2653767D8389 + ABA8BAACBBBBBBBBB9BBB9B9BBB9B9BBBBBBBBBBA7BBA7ACA3ACAA7FBA808B7B + 758C736F7171584F545550555050597452527474524B2222704D22222357235B + 5B2323235B5B232323232329232323221E4852245055554F4C6F75A3A6ADBD9B + AFAC8B90815C5D7E7A60778885868686868687878686858888827A7E61949596 + 969695958D8E5F5C5C565656292929295B5BCBCBCBCC027760777728725A5E53 + 765F7989A5A8AAACACBBBBBBBBBBB9BBBBBBBBBBBBBBA7BBBBACA7ACACA3AAAA + 7F808BA5A573897C71784F545455555550592474745252522222222222222323 + 2323235B23235B53235B5B5B295B235B23234B224A5252245055544F4C6F75A3 + A6AD9B9BAE929A89815C5B7E8282778585868686878787868686868588827A5E + 619395969595958A8D7D5C5C5C845C57572329235B5BCBCBCCCC028877606028 + 7A5A7E535C5C8A89ABA8BABAACACBBBBBBBBBBBBBBBBBBBBBBBBBBA7ACA7ACAC + A3ACAAAA80A87BA573737C7C71784F4F6E545550507474745227524B1E212222 + 4D23234D2323232325535B53535B5B5B5B26235B29224D22222152505055544F + 4C6F75A3A6AD9B9BAEACAB898D5C5E7E28778851858686868787878787868685 + 88827A91619495959695938A8D5F5F5C27275757292929535B29CBCBCCCC0288 + 776077287A721F5B567D8189B8A8BAACBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB + A7ACACA3ACAAAA80A87B8BA5A5737C7171784F5454555550505048747456564B + 4B48224B6C4B222323292323535B5B29535B25255B5B5B5B23234D6C21524850 + 505555204C6F75A3A6ADBDBEAE9DAB907D765B7E7A7760858586868687878787 + 8786868588827A91619395959695958A8E5F5C5C8427575723295B255B5BCBCB + CCCC02886060772828724926575F8A89ABABBABABAACBBBBBBBBBBBBBBACBBBB + ACBBACACACACACACA3AAAAAA808BA5A5738C7C7C785879546E6E505050507474 + 52215222564A234B4A4D2323235B23535B5B25252525255B255B532323232323 + 225624595055546D4C6F75A3A6ADBD9BAEACAB908E765E5A8260608886868686 + 878787878786868588827A5E6194959595958A8D7D5F5C5C2756225729295B25 + 5B5BCBCBCCCC028888606028287A5A5E765C8A898CA8A8BAACACACBBACBBACBB + ACBBBBACBBACACACACACA3AAAABAAAA88B8BA5B873897C714C4F795455555550 + 7450522452521E22224A4A5757235323292525255B255B2625255B5B255B5B23 + 23232323224B525250556E4F4F6F75A3A6AD9B9B99AC98907D295E7E7A778885 + 85868687878787878687868588827A91619495959595938A8E5F5C5C27575757 + 29295B5B235BCBCBCCCB0288606077777A7A7E5E5D5C81908CA8A8BABAACACAC + BBACACACBBACACACACACACACACACAABAAA7FAAA88B8BA5A5737C7C7C78786E6E + 6E5550505074525652274A4D224A1E23232329235B2353255B535B53265B5B5B + 2626255B5B23234D4B2252745059544F4C6F75A3A6AD9BBE99AAAB837D765E72 + 7777888585868787878787878786868588827A91619395959593938D8F5F5C27 + 5757235B292925292329CBCBCBCC02886077777772725A26575C8190B8A8A8BA + BABAACACACACBBACACACACACACACBAACACAABAAAAAA8A88B8B8BA5738C7C7C78 + 714F796E6E505059747452212756224A22222223232229252353235B5B53535B + 2625255B53265B53535B2357702221245059556D4C6F75A3A6AD9BBE99AA988A + 5F575E7A286088858686878787878787878686858860825E6193939595938A8D + 5F5C5C27575D29295B23295D5B29CBCBCBCC02888860776028725A7E5D5C7D83 + B8ABA8BABAACBAACBAACACACBAACACACBAACACAAACAAAABAAAA88BA88BA5A5A5 + 6F7C6F717879546E5550505074525656225622225623235723232323535B535B + 255B5B26532626265326255B5B2323234A1E21745050546D4C6F75A3A6AD9BBE + 99978C8A5F297E7A8277888586868787878787878786868588827A9161949595 + 95938D8E5F5C5C7657292929295B25235B5BCBCBCBCC02888877608282285A5E + 5B5C8183B8ABA8BABABAACBAACACACACACACACBAACBAAABAAAAAAAAA80A88BA8 + 7BA5A5A5897C7C78584F54545059507452524B524B224B222222564D575B2325 + 53255B252626262625532626265B265B232323234A1E48745055556D4C6F75A3 + A6AD9BBE99978C8A5C5D5E7A7777888586868787878787878786868588827E91 + 6193959595938D8E5F5C5C76232929235B5B255B5B29CBCBCBCC028888606077 + 287A7A7E5B5C8190B8ABABA8BABABABABABABABAACBAACBAAAAAAAAAAABABAA8 + A8A8A88BA5A5A58C6F7C7C78784F81557D50745C52525252222222564B4D2323 + 5729235B5B5B5B53262626262626262626265326252323234B48484850555420 + 4C6F75A3A6AD9BAF99978C8A5C5D5A7A77888586868787878787878787878685 + 88827A918F939395938A8D5F5F745C272729295B5B235B295B5BCBCBCBCC0285 + 88886060287A5A7E5D847D8389ABA8A897BABABABABABABABABABABABABABABA + AABAA8A8A88B8B8BA5B873898C7C7178784F6E55505950527456525652222323 + 56234B2323235B5B5B5B5326265B2626262626265B2653255B2329234D4A7448 + 5050554F4C6F75A3A6ADBEAF99978C815C5D7E7A776085858687878787878787 + 8787868588827E918F949395938A8D5F5C5C5629292329255B295B265B5BCBCB + CCCB028588886060287A727E5D5C7D8A96B8A8A8BABABABABABABABABABABABA + BAAABAA8AAA8A8A88BA8A8A5A5A5A5B87C7C837879547D555074507456744B22 + 23224B2223235723235B5B5B5B5B5B2626262626262626262626265B25532923 + 4D4B52525055554F4C6F75A3A6ADADAF929789815C5E7E7A7751888586878787 + 874787878786868588827A9161949395938D8F8F5C2729292329295D5B255B5B + 2526CBCBCBCC0285885188606077727E5E847D8AB8ABA8A8A8BABABABABABABA + BAA8BABABABABAAAAAA8A8A8A8A88BABA5A5B8737C7C787878546E7D59244874 + 5674222223224B572357235B5B295B53535B2626262626252626262626262626 + 25232323222221527455556E4C6F75A3A6ADBEAFBB9796795C5D7E7A77888586 + 86878787878787878786868588827E9161949393938D8E5C5C27272723295B29 + 295B26252525CBCBCBCB0285858860606028725A26767D8A90B8ABA8BAA8BABA + BABABAA8BABABAA8BABAA8BAA8A8A8A88BA8A5A5A58C73897C7C785879547D7D + 50747452525222224A4B232323232323535B5B5B262626262626262626262626 + 2626262625252322704A22245050556E4C6F7BA3A6ADADAFBB9789815C5D7E82 + 7760858686878787878787878787868588827E9161939393938E7D8F5C5C2729 + 292925295B53535B265BCBCBCBCC02858885606060827A5A26765F8A90B8ABA8 + A8A89CBABABABA97BAA897BAA8A8BAA8A8A8A8A8A8A5ABA5A58C8C897C837879 + 5454505050747456564B4A226C57234D2323295B5B25255B2626262626262626 + 26262626262626265B5B232223225252485055204C6F75A3A6A9ADAE92A8898E + 765E7A827788858687878787878787878787868588827E918F949393938F8F5C + 5C7657292923235B25535B535B25CBCBCBCB0285888860606082285A5E767D8A + 90B8AB9AA8A8A8A8A8BAA8BABAA8A8A8A8A8A8A8A8A8A8AB8BABA5A58C8C8C7C + 7C837879797D55595C745656564B704A2223234D5B255B5B25255B2626262626 + 262626262626262626262626262529294D4B2152505055544F6F75A3A6ADADAE + AC8B897D765E7E827788858687878787878787878787868560827E916194938D + 8D8E8F5C84275723295B5B5B255B26535B26CBCBCBCB0285518888887782285A + 5E5D5C8D90B8B8ABA8A8A8A8A89AA8A8A8A8A8A8A89AA8A8ABA8ABA8ABABA5A5 + B88C7C897C787879545450507448485648222323235753535B5B23255B262626 + 262626262626265E262626262626262526255B5B574D1E245250554F4C6F75A3 + A6AFAFAE929A908D845E7A777785868686878787876287878787868588827E91 + 8F9494938D8F8F5C5C292929295B265B255B265B5B26CBCBCBCC028585856060 + 7728827A5E5D8F8D90B8ABA8ABA8A8A8A8A8A8A8A89CA8A8A8A8ABA8A8ABA8AB + A5ABA5B88C8C897C837878797D7D5074745648562222222223232323535B2325 + 5B5B2626262626267E26265E5E5A26262626262626532329234D565224505554 + 6D6F75A3A6A9AFAEACAB907D845E7A6060858686878787878747878787878685 + 88827E918F9494938D8F8F5C7457295B29255B5B25255B265B26CBCBCBCB0285 + 8588886060777A5A7E5D5C819096ABABA89AA89AA8A8A8A8A8A8A8A8ABA8A8AB + A8ABABABABB8A5A58C8C89897C7879796E7D5C507456565656222223235B2323 + 5B5B255B5B26262626262626265E7E2626261F261F2626262625232323221E52 + 74505554786F7BA3A6A9AF99ACAB905F5D5E7A82608586868787878787878787 + 8787868588827E91619494948E8F8F5C5629295B295B5326262526535326CBCB + CBCB0285858588606077725A7E5D848D8396B898A8A89AA8A8A89A9AA89AA8A8 + A8A8A89AABA8ABABABA5B8B88C898989837878796E505050742756271E224B23 + 2323295B5B5B255B26262626262626267E26265A267E7E2626262626265B2523 + 2322215274505554586F7BA3A6AFAF99ACAB908E295E7A776085868687878762 + 878762878787868588827E916194948D8F8F845C57295725235B5B5B5B262626 + 265ECBCBCBCB0285858888887760287A5E5D5CB79590B8ABA8AB9AABA8A8A8A8 + 9AA8ABA8ABA8ABA8ABABABABB8A5A58C8C897C83837879547D505074744B5622 + 4A5623232329235B5B535B262526262626267E26262649267E5A267E265E2626 + 2626532522572252505055544C6F7BA3A7A9AF99AAAB905F5D5E7A8288858687 + 87878787876287878787868588827E91619494948E5C5C5C2757295B5B5B265B + 26265B5B2626CBCBCBCC0285858588887760287A7E5D848D9096B8ABABA89AA8 + 9A9A9A9AA8A8A8A8A8ABA8ABABABABABABAB8C8C8C898983837879547D7D5C74 + 744B224A222223234D2323535B25262626262626262626267E5E1F5E5E7E5A26 + 26262626265B5B2323222248505055544C6F7BA3A7A9AF99AAAB908F5D5E7A60 + 8885868687878787478787878786868588827E91618F94948E8F5C5C5757295B + 5B5B5B5B2626265B2626C2CBCBCB} + WaterMark.Image.Layout = ilTile + object Label1: TLabel + Left = 176 + Top = 312 + Width = 186 + Height = 13 + Caption = 'Haga click en Siguiente para continuar.' + end + object Label3: TLabel + Left = 168 + Top = 72 + Width = 346 + Height = 32 + Caption = + 'Este asistente le ayudar'#225' a imprimir el n'#250'mero de etiquetas '#13#10'qu' + + 'e desee para el montaje de:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object lblNombreCliente: TLabel + Left = 169 + Top = 112 + Width = 353 + Height = 49 + Alignment = taCenter + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + Transparent = True + Layout = tlCenter + end + end + object JvWizardInteriorPage1: TJvWizardInteriorPage + Header.Title.Color = clNone + Header.Title.Text = 'Opciones de impresi'#243'n' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -16 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = + 'Indique el n'#250'mero de etiquetas a imprimir y la impresora a utili' + + 'zar.' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.AnchorPlacement = 8 + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -11 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + object Label2: TLabel + Left = 24 + Top = 96 + Width = 152 + Height = 13 + Caption = 'N'#250'mero de etiquetas a imprimir:' + end + object Label4: TLabel + Left = 24 + Top = 144 + Width = 146 + Height = 13 + Caption = #191'Qu'#233' impresora desea utilizar?' + end + object Label5: TLabel + Left = 248 + Top = 96 + Width = 259 + Height = 13 + Caption = '(En cada hoja se imprimir'#225'n como m'#225'ximo 4 etiquetas)' + end + object edtLabelCount: TcxSpinEdit + Left = 182 + Top = 92 + 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 + Value = 4 + Width = 57 + end + object cbImpresoras: TcxComboBox + Left = 24 + Top = 161 + 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 + Text = 'cbImpresoras' + Width = 273 + end + end + object JvWizardWelcomePage2: TJvWizardWelcomePage + Header.Height = 80 + Header.Title.Color = clNone + Header.Title.Text = 'Fin del asistente de impresi'#243'n' + Header.Title.Anchors = [akLeft, akTop, akRight] + Header.Title.Font.Charset = DEFAULT_CHARSET + Header.Title.Font.Color = clWindowText + Header.Title.Font.Height = -19 + Header.Title.Font.Name = 'Tahoma' + Header.Title.Font.Style = [fsBold] + Header.Subtitle.Color = clNone + Header.Subtitle.Text = ' ' + Header.Subtitle.Anchors = [akLeft, akTop, akRight, akBottom] + Header.Subtitle.Font.Charset = DEFAULT_CHARSET + Header.Subtitle.Font.Color = clWindowText + Header.Subtitle.Font.Height = -13 + Header.Subtitle.Font.Name = 'Tahoma' + Header.Subtitle.Font.Style = [] + Header.ShowDivider = False + VisibleButtons = [bkBack, bkFinish] + WaterMark.Image.Picture.Data = { + 07544269746D617082960100424D82960100000000003204000028000000A400 + 000074020000010008000000000050920100120B0000120B0000FF000000FF00 + 000000000000FFFFFF005320060057230800F6E7E900AD9B9C003F3838006B68 + 6800615E5E0058565600E7DEDD00483D3A0041312B0057230B00552107005321 + 07005B2509005923090057230900552309005D270B005B250B0059250B005222 + 0A0055230B004D210A005F290D005D270D0053250D004F240E0087411D007C3C + 1C009147210087411F0085411F0083411F0089432100813F1F007E3F1F008643 + 2100753B1D0082422100502A17004427180038201400623D2B005B4032004E37 + 2B0057230700552307005925090061290B0056250A005B270B00652C0D005927 + 0C00622B0E00652D0F00632D0F00683011005A290F006C331300763816005528 + 1000723616005D2C12006E3516007E3E1A007A3B190082401B00733918006431 + 150087431D007A3D1A0085411D0085431D00954B210083411D00763A1A00924A + 21008A461F007038190087431F0080411D008F4921008E47210085431F008343 + 1F00924B23008A462100793D1D0080411F0086462100804320007C411F008947 + 2300723B1D0083482600532F1C005A3623006A48360073503D007A564300825F + 4C00926E5A00652D0A006A300B00793B160085421B00924A1F008E491F009A4F + 220083431D00964D2200773D1B009E52250086451F00A255260083451F00723C + 1B00924D23008F4C2300763E1D00A5582900965025008A49220079401E00AB5D + 2C00A85B2B008D4B2400723D1D00924F2600824622006B3A1C0068381B006436 + 1A006E3B1D00965228008E4D2600A25A2C009A552A008A4D26008A4B26008649 + 2500925129007D452400AF6233008C4E2900884C280090512B0095542D00A35E + 320098583000B46839009D5B3200C2734100A05F3600A5623900AB673C007D4F + 3300CEC4BE00672F0B006D340C00AE602D00B3632F009E582A00B8693300B366 + 3200A25E2E00BB6D3600A86030009D592D00AC643300C0713A00B76D3A00BB6F + 3C00C6774200CB7A4600B16D40009276640074390E007B411500864A1C008A4F + 220097592A00B56C3600A5633100B0683500CA7A3F00C4763D00BE733C00C77A + 4000CD7E4300D1814600A76B3E007F400E0083451100884914008B4D18008146 + 18008D501C0090552300A2673800B0764700B57B4D00BC825300D3B8A100FFE0 + C600BAA390009E8B7C00826D5B00FFDBBB00EAD0B900FFE7D200B6A99D00FFED + DD00C1B6AC00FFF7F000FFF3E7004E4D4C00FBFAF900FEFBF5007E7E7D00FCFC + FB0090908F00E8E9E800D0D1D000BFC0BF00BBBCBB00B7B8B700B1B2B100DCDF + DD00CBCECC00D1D6D300D6DAD800E2E4E30072797600C6C9C800C2C5C400F0F1 + F100EDEEEE00ACADAD0097989800F9F9F900F7F7F700F5F5F500F3F3F300B4B4 + B400AFAFAF00AAAAAA00A6A6A600A2A2A2009D9D9D0087878700434343000202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020202020202020202020202020202020202020202020202020202 + 0202020202020203110311110303030303030303030303030303030303030303 + 0303030303030303030303030303030303111103111111111111111111321132 + 3232321132111111111111111111111111111111111111111111111111111111 + 1111111111111111321616161616321111111103030303030E0E0E0E0E0E0E0E + 300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031111111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111031111111111111111321616161616321111111103030303030E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1111111103031111111111111111111111321616161632111111110303030303 + 0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111110111111111111 + 1111111111111111030311111103111111111111113216161616321111110303 + 030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111111111111111111111111111110303111111111111111132161616163211 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969A2C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311030311111111111111323216 + 1616321111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111111111111111111111 + 1111111111111111111111111111111111110311110303031111111111111111 + 111132161632111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111111111111111111111111111111103110303030303031111 + 11111111113232323232111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111111111111111111111111111110303030303 + 0311031111111111111132323232111111110303030303030E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E6969A2C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111103 + 0303030303030311111111111111113232111111111103030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E6969B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111111111111111111111111 + 111111030303030303030311111111111111113232111111111103030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311111111111111111111111111111111111111111111111111111111 + 1111111111031103030303030303111111111111111111323211111111110303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303031111111111111111111111111111111111111111111111111111 + 1111111111111111110303030303030303030303111111111111111111111111 + 111103030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303111111111111111111111111111111111111111111 + 1111111111111111111111111103030303030303030303031111111111111111 + 11111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031103111111111111111111111111111111 + 1111111111111111111111111111031111030303030303030303030311111111 + 111111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111103030303030303030303030303 + 111111111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111111111111111111031103030303030303 + 03030303031111111111111111111111110303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111111111111111111111111111111111103031103030303 + 0303030303030303031111111111111111111111110303030303030E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311111111111111111111111111111111111111111111111111111111110303 + 030303030303030303030303031111111111111111111111110303030303030E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303111111111111111111111111111111111111111111111111111111 + 1111030303030303030303030303030303031111111111111111111111030303 + 0303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6969B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111111111111111 + 1111111103030303030303030303030303030303030311111111111111111111 + 110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303111111111111111111111111111111111111 + 1111111111111111030303030303030303030303030303030303111111111111 + 111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111110311030303030303030303030303030303030303031111 + 1111111111111111030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303031111111111111111111111 + 1111111111111111111111111111030303030303030303030303030303030303 + 0303111111111111111111110303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E6969B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111110303030303030303030303030303 + 03030303030303111111111111111111030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030311 + 1111111111111111111111111111111111111111111103030303030303030303 + 03030303030303030303031111111111111111110303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303111111111111111111111111111111111111111111110303030303030303 + 0303030303030303030303030303031111111111111111110303030303030E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303031111111111111111111111111111111111110311030303 + 0303030303030303030303030303030303030311111111111111110303030303 + 0303030E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030311110303111111111111111111111111111111111103 + 0303030303030303030303030303030303030303030303031111111111110303 + 030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 0311110303030303030303030303030303030303030303030303030303111111 + 111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1B4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111111111111111111 + 1111111111111103030303030303030303030303030303030303030303030303 + 03031111111103030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E69A1 + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303031103111111111111 + 1111111111111111111111030303030303030303030303030303030303030303 + 030303030303111111110303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E69A1B4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030311031111 + 0311111111111111031103110303030303030303030303030303030303030303 + 0303030303030303030303110303030303030303030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E69A1B4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303110303030303 + 0303111111111111111111111111111103030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E69A1B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303110311110311110311111111111103110303030303030303030303 + 03030303030303030303030303030303030303030303030303030303030E0E0E + 0E0E0E0E0E0E0E0E0E0E300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E696AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303031111111111111111111111030303030303030303 + 0303030303030303030303030303030303030303030311110303030303030303 + 0303030E0E0E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111110311111103110303030303 + 0303030303030303030303030303030303030303030303030311111111110303 + 030303030303030E0E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111103111103 + 0303030303030303030303030303030303030303030303030303030303031111 + 11110303030303030303030E030E0E030E0E03030E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303110303031111111111 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303031111111103030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 1111031103030303030303030303030303030303030303030303030303030303 + 03030303030311111111030303030303030303030E0E0E0E0E030E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0EA16AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030311030303030303030303030303030303030303030303030303030303 + 03030303030303030303111103030303030303030303030E0E03030E030E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0EA16AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303110311030303030303030303030303 + 030E03300E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0EA16AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311111111111111110303030303030303 + 0303030303030303030E030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0EA16AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311030311110303030303030303 + 0303030303030303030303030303030303030303031111111111111103030303 + 03030303030303030303030303030E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030EA16AB4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303110303031103110303030303 + 0303030303030303030303030303030303030303030303030311111111111103 + 0303030303030303030303030303030303030E0E030E0E0E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E030E0E6A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111031103030303111111111111 + 0303030303030303030303030303030303030303030303030303030303031111 + 11111111030303030303030303030303030303030303030E0E0E0E0E0E0E0E0E + 0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E6A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030311111103111111110311 + 1111031103030303030303030303030303030303030303030303030303030311 + 111111111111111103030303030303030303030303030303030303030303030E + 03030E0E0E0E0E0E0E0E0E0E03030E0E030E0E0E0E030E0E03030303030E6A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031103030303030303030311110311 + 1103111111030303030303030303030303030303030303030303030303030303 + 0303031111111111111111110303030303030303030303030303030303030303 + 0303030E0303030E0E0E0E0E0E0E0E0E0E030E0E0303030E0E0E0E0E03030303 + 03036A6AB4C30203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0311110311110311031103031103111111030303030303030303030303030303 + 0311030303111111111111111111111111110303030303030303030303030303 + 0303030303030303030303030303030E030E0E0E0E030E0E030E0E0E0303030E + 0303030303036A6AB4C302030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303110303030303111103110303031111111103030303030303030303030303 + 0303030303030303030311111111111111111111111103030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036A6AB4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030311110303111111111103030303030303030303 + 0303030303030303030303030303111111111111111111111103030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303036A6AB4C30203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303031111111111111111110303110311111111 + 0303111111030303030303030303030303110311111111111111111111110303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303036AA2B4C302030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303031111111111111111111111111111 + 1111111111111111030311030303030303030303111111111111111111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303030303030303036A6AB4C3020303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111110303031103030303030303031111111111111111 + 1111111111030303030303030303030303030303030303030303030303030303 + 03030303030303030303030303030303030303030303030303036A6AB4C30203 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030311031111111111111111111111111111 + 1111111111111111111111111111111111111103031103030311031103111111 + 1111113211111111111111030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303036A6A + B4C3020303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030311111111111111111111111111 + 1111111111111111111111111111111111111111111103111103031103031111 + 1111111111111132111111111111110303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 03036AA2B4C40203030303030303030303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030311111111111111 + 1111111111111111111111111111111111111111111111111111111111111111 + 1103111111111111111111113211111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303036AA2B4C402030303030303030303030303030303030303030303 + 0303030303030303110303030303030303030303030303030303030303111111 + 1111111111111111111110113232111110111132111111111010111111111111 + 1111111111111111111111113232113210321011111111111111030303030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 030303030303030303036AA2B4C3020303030303030303030303030303030303 + 0303030303030303030303030303030303030303030303030303031103111111 + 1111111111111110111111101010103210101111111010111010101032111111 + 1111111111111111111111111111111111323210101010321111111103030303 + 0303030303030303030303030303030303030303030303030303030303030303 + 0303030303030303030303030303A2A2B4C40203030303030303030303030303 + 0303030303030303030303030303030303030303030303030303030303111111 + 1111111111111111111110101010101010321010101010101010101010101010 + 1010101010111111111111111111111111111111113210321010101111111111 + 1103030303030303030303030303030303030303030303030303030303030303 + 030303030303030303030303030303031230A2A2B4C402030303030303030303 + 0303030303030303030303030303030303030303030303030303030303031111 + 1111111111111111101111111010101010101010101010101010101010101010 + 10101010101010111010101011111111111110111110113211110D1111113232 + 1011111111110311111111111103110303030303030303030303030303030303 + 03030303030303030303030303030303030303030303A2A2B4C4020303030303 + 0303030303030303030303030303030303030303030303030303111111111111 + 1111111111111111111111111010111010101010101010101010101010101010 + 1032321111113232101010101010101010101010113210323211111112121313 + 0D340D1111111111111111111111111111111103030303030303030303030303 + 0303030303030303030303030303030303030303030311110311A2A2B4C40203 + 0303030303030303030303030303030303030303030303030303031111111111 + 1111111111111111111111111111111011111010101010101010101010101010 + 10101032101112120D0D11111111321010101010101010321010103211111213 + 0F0F0F171713130D121111111111111111111111111111111111110303030303 + 030303030303030303030303030303030303030303030303030311111111A2A2 + B4C4020303030303030303030303030303030303030303110311111111111111 + 1111111111111111111111111111111110101010101010101010101010101010 + 10101010101010160D121213130E13130D0D1111323210101010101010321111 + 12130F0F17021917191717171313121212111111111111111111111111111111 + 1103030303030303030303030303030303030303030303031103030311111111 + 1111A2B4B4C40203030303030303030303030303030303111111111111111111 + 1111111111111111111111111111111010101010101010101010101010101010 + 1010101010101010101616121317170F1719170F0F1312121111113232101032 + 111112130F0F1919192A2A2A2A191917170F0F13121112111111111111111111 + 1111111111110311111103030303110311110303030303030311030311111111 + 111111111111A2A2B4C402030303030303030303030303030303111111111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 101010101010101010101016160D13171719192A2A1D19190F17171313120D11 + 1111111112130E0F0F19192A2A622A2A2A622A1D1919170F0F31121211113210 + 1011101011111111111111111111110303111111111111031111111111110311 + 11111111111111111132A2A2C3C4020303030303030303031103030303111111 + 1111111111111111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010160D12131719192A62626262622A1D191919 + 170F1330121212130E0F0219191D2A2A622D6565412A62622A1D191917170F13 + 1212111132101010111011111111111111111111111111111111111111111111 + 1111111111111111111111113232A2A2C3C40203030303030303030311111111 + 1111111111111111111111111011101010101010101010101010101010101010 + 10101010101010101010101010101010161612131717191D6262622D66626262 + 62622A1D191919170F0F0F170219191D2A2A2A2D656667B3B367632A2A622A1D + 190219020F0F1312111132101010103232323211111111111111111111111111 + 111111111111111111111111111132323216A2A2C3C402030303030303030311 + 1111111111111111111111111132111010101010101010101010101010101010 + 101010101010101010101010101010101010101012121317191D6262622D67D2 + 6766666463626262622A191919191919191D2A2A2A636566666668B3B3B3B368 + 6441622A2A2A191902020F131312111132101010103211111111111111111111 + 11111111111111111111111111111111323232161616A2A2C3C4020303030303 + 0303031111111111111111321132321032101010101010101010101010101010 + 1010101010101010101010101010101014141414101532121317171962626263 + 666868686767666666652E636262622A2A19191D2A2A2A62646666656566B3B3 + B3B3B3B3B3B366632A2A2A2A1719190F0F0E120D121132321010101032321111 + 1111111111111111111111111111111111113232323216101010A2B4B4C40203 + 0303030303031111111111111111113210101010101010101010101010101010 + 1010101010101010101010101010101010101414141010101634131717192A62 + 626265D2686868686766666666666666652D63626262622A622A6465669F6566 + 666465D2B3B3B3B3B3B3B3B3682D62622A2A1D1919170F131212321111321010 + 101032323232323232323232321132113211323232321010101010101010A2A2 + C3C4020303030303031111111111111132101010101010101010101010101010 + 101010101010101010101010101410101010141414141414101515160D131719 + 1D62636264D268686868D26867666666666666666666666563622A622D656566 + 65666565642D2D2D646768B3B3B368B3B3B36864622A2A2A1D19190F1713130D + 1611113210101010101010101010103232323211321616101010101010101010 + 1010A2A2C3C40203030303031111111111113232321010101010101010101010 + 1010101010101010101010101410101010141414141414141414141515160D13 + 17171D6262632D676868686868686868676766666666666666666666662D2D65 + 9F66669F6665642D632D2D2D2D642D66D268B3B3B368B3B3B367632A2A623F19 + 1919171713120D0D0D1610101010101010101010323216103210101010101010 + 101010101010A2B4C3C402030303031103111111113210321010101010101010 + 1010101010101010101010101014141414141414141414141414141414141516 + 0D0D17171D6262622D6668686868686868686868676666666666666666666666 + 662D2D6665666565642D632D2D2D2D2D2D2D2D642D656768B3B368B3B368B368 + 2D2A62622A1D19171717131234160D1032101010101010101010101010101010 + 10101010101010101010A2B4B5C4020303031111111111321110101010101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 151016341317172A6262636668686868686868686868D2686766666666666666 + 66666666662D2D666665642D63632D632D2D2D2D2D2D642D642D64646668B3B3 + B3B3B3B3B3686462622A2A1D1719171713120D0D161616101010101010101010 + 1010101010101010101010101515A2B4C3C40203030311111111113210101010 + 1010101010101010101010101414141414141414141414141414141414141414 + 1414141516161317172A62626265686868686868686868686868686867676666 + 6666666666666666662D2D65642D636363632D2D2D2D2D2D2D2D642D64646464 + 646465676868B368B368B3686663622A2A1D1919171713120D16111010101010 + 101010101010101010101010151015153515B4A2C3C402030311111111321010 + 1010101010101010101010101414141414141414141414141414141414141414 + 14141414141515163417173F626263646868B368686868686868686868686868 + 676666666666666666666666652D2D2D636363632D632D632D2D2D2D642D2D64 + 2D64646464646465656768B3B3B3B3B368B3662D622A621D1919171713121616 + 10101010101010101010101010101010351414141414B4B4C3C4020311111111 + 1110101010101010101010101014141414141414141414141414141414141414 + 1414141414141414151634180F1C6262622D6768686868686868686868686868 + 68D26868666666666666666666666666652D2D636363636363632D2D2D2D2D2D + 2D2D642D6464646464646564656565666768B368B368B36867642A2A621D1919 + 1717121616101010101010101010101010101014351414141414A2B4B5C50203 + 0311111011101010101010101010101014141414141414141414141414141414 + 1A1A14141A1A1414141435153418171C62626263676868B36868686868686868 + 6868686868686868676666666666666666666666652D6363636363632D632D63 + 2D2D2D2D2D642D642D646464646465646565656565666768B3B368B368686864 + 6262622A1D17171216101010101010101010151510101414141414141414B4B4 + C3C4020311111111101010101010101010101014141414141414141414141414 + 141A1A1A1A1A1A1A1A1414141415163417182A626263666868B3686868686868 + 686868686868686868686868676666666666666666666666652D2D6363636363 + 63632D2D2D2D2D2D2D2D642D642D6464656465656565656565666666666868B3 + B3B3B3B36865622A622A17123410101510101510151415141514141414141414 + 1414B4B4C3C50211111110101010101010101010101414141414141414141414 + 141A1A1A1A1A1A1A1A1A1A1A14141415163434173F6262626568686868686868 + 68686868686868686868686868686868676666666666666666666666652D2D62 + 62626363632D632D632D632D2D2D2D6464646464646464646565656565656666 + 666666676868686868B36866636263130D151415151515101514151414141414 + 141414141414B4B4B5C502111111101010101010101010141414141414141414 + 141A141A1A1A1A1A1A1A1A1A1A1A1A14143516340D173F62626364686868B368 + 68686868686868686868686868686868686867D2666666656666666666666666 + 66652D6262622A6263636363632F2F6363632E2D2D6464646464656565656565 + 66666666666666676667D268B368B368682A62130D1015101514101515141414 + 14141414141414141414B4B4B5C5021111101010101010101010141414141414 + 14141A141A1A1A1A1A1A1A1A1A1A1A1A1A1A1414351634133F6262632D676868 + 686868686868686868686868686868686868686867D267676565646565656566 + 66666666666666666463622A2A2A2B2A6262622F2F63632D2E2D646464646465 + 6565656566656666666666666766676767686868682A2A130D10101414101414 + 141414141414141414141414141AB4B4B5C50211111010101010101010141414 + 1414141414141A1A1A1A1A1A1A1A1A1A1A3838381A1A1437370D3F6262636366 + B368B368B36868686868686868686868686868686868D2D26767666664646464 + 6464656565666666666666666666662E622B2B2C2C2C2C2B2B0C2F62632D2D2E + 64646464656565656566656666666666666766666766676868622A1316151414 + 141414141414141414141414141414141414B4B4B5C502111010101010101010 + 141414141414141A1A141A1A1A1A1A1A1A1A1A38383838381A1A14373F626362 + 636568686868686868686868686868686868686868686868D267676666656464 + 2E2E2F2E2E646464656565656666666666656564642E2F2C2C0C0C060C2C2B0C + 2F2F632D2D646464656565656566666666666667666667676767676665622A34 + 161514141414141414141414141414141414141A1A1AB4B4B5C5023210101010 + 10101014141414141414141A1A1A1A1A1A1A1A1A383838383838381A1A1A353F + 6362626468686868686868686868686868686868686868686868686767676665 + 642E2E0B06060C2F2F2F2E2E64646465656565656464642E2E2F0C0C0606060C + 06060C2C2C2B2F2F2E2D2E646464656565666566666666666667666666652D62 + 622A3F1615141414141414141414141414141414141414141A1AB4B4C4C50210 + 10101010101010141414141414141A1A1A1A1A1A1A1A38383838383838383838 + 1A1A3C3F2D64686868686868686868686868686868686868686868686867D267 + 6665652E2F0BFEFEFEFEFE060C0C2F2F632E2E6464646464642E2E2F0C0C0606 + 060705F20B0C0606062C2C2C2B2F2E2D6464646565656666666666666666652D + 62622A622A3F16151414141414141414141414141414141414141A1A1A1AB4B4 + B5C502101010101010101014141414141A1A1A1A1A1A38383838383838383838 + 383838381A143C632D6868686868686868686868686868686868686868686867 + D2676665642E2F0BFEFEFEECFBFEFEFEFEFE060C0C2F2F632E2E2E2E2E2F0C0C + 06060B070505A00101ED080C06060C0C2C2C2C2F2F2D64646465656666666664 + 2D622A626262621C131615141414141414141414141414141414141414141A1A + 1A1AB46BC4C5021010101010101014141414141A1A1A1A1A1A38383838383838 + 3838383838383838381A3C622D68686868686868686868686868686868686868 + 6867D267666664642E0B0BFEFE08EEEBE3E5FBDE09FEFEFEFE060C0C2F2F2F0C + 0C0C0C060CDBD1050505E101010101F0FD0B0606060C2C2C2C2B2F2E64646565 + 656464622A622D656763621C3416351414141414141414141414141414141A14 + 1A1A1A1A1A1AB4B4C7C50210101010101414141414141A1A1A1A1A1A38383838 + 383838383838383836363838381A3C632D686868686868686868686868686868 + 686868686767676665642E2F0BFEFE09F9E1E1EBE3F7F9F9F9FCECDBFEFEFE06 + 0C0C2B0C0C06060BFD05050505D8DF01010101010101F7DB0606060C2C2C2C2C + 2B63646464632D2D65676767672D621C0D151414141414141414141414141414 + 1414141A1A1A1A1A1A1AB46BC4C502101010101010141414141A1A1A1A1A1A38 + 38383838383838383838363836363638381A3C632D6868686868686868686868 + 686868686768D267676665642E2F0BFEFEDBFCEBE1E1E1EBE3F7F9F9F9F9F9F1 + E007DBFEFE0B0606060BDE050505050505FDF2E901010101010101010A070606 + 06062C2C2C2C2C2B2D636366676767676763621C161514141414141414141414 + 141414141414141A1A1A1A1A1A1A6BB4C4C602101010101414141414141A1A1A + 1A38383838383838383836383939393639393938381A3C638568686868686868 + 68686868686868686867676665642E2E0BFEFEFEFDEAE1E1E1E1E1E1E3E5F9F9 + F9F9F9F1F1F1F9E00806060B0705050505050505DE070707DEE5EF0101010101 + 0101F4E00B06060C0C2C2C2C2C622F65666666676763621C1635141414141414 + 14141414141414141414141A1A1A1A1A1A1AB4B5C4C602101010141014141414 + 1A1A1A383838383838383839363939393939393939393939381A3C632D686868 + 686868686868686868686767676666642E2E0B0BFEFEECE8F0E1E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F1080705050505050505DE080807080707ECEC05 + EA0101010101010101E4DB0606060C2C2C2B2E64646566666663621C34151414 + 14141414141414141414141414141A1A1A1A1A1A1A1A6BB4C4C6021010101414 + 1414141A1A1A1A3838383838383839393939393939393939393939393A1A4163 + 2D68686868686868686867686767676765652E2E2F0BFEFE08F7F0E1F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8FA07070505050505FD08080808080707 + 0707ECECDEFDE3F501010101010101EA070B06060C0C2F2E2E64646565632A1C + 3415141414141414141414141414141414141A1A1A1A1A1A1A1AB46BC4C60210 + 101414141414141A1A1A33383838383836393939393939393939393939393939 + 3A1A3C872D686868686868686868686767676565642E2F0BFEFEDBFAF0F0F0F0 + F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F1F90807050505FD0809090808 + 0807070707EC07ECECDEDEFDF1E701010101010101E1FD0B06060C0C2F2F2E2E + 64622A1902123714141414141414141414141414141A1A1A1A1A1A1A1A1A6BB5 + C7C602101010141414141A1A1A1A383838383838363939393939393939393939 + 393939393A383C638568676867686868686767676665642E2F0BFEFEFEE0E1EF + F0F0F0F0F0F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F8FA070705FD080909 + 09090808080807070707ECECDEDEDEDEFDFDF2E8F4010101010101F5F9DB0606 + 060C2F2F2E2B2C19190F1635141414141414141414141414141A1A1A1A1A1A1A + 1A38B4B5C7C602101414141414141A1A33383838383838393939393939393939 + 39393939393939393A1A41872D6868686868676767676665642E2F0BFEFEFEDE + EAEFEFEFF0F0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F9F1F1F1F1FC080708 + DB090909090808080807070707EC07DEECDEDEFDFDFDE0E0F2E4EB0101010101 + 01DFE5080606060C0C2C2C2C1919020D3714141414141414141414141A1A1A1A + 1A1A1A1A38386BB5C4C602101414141414141A1A383838383838363939393939 + 393939393939393939393B39393841632D676867686767676665642E2E2FFEFE + FE08E8F5F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F1F1F1F1F8 + E00708DB090909090809080807080707EC07ECECDEDEDEFDFDFDE0E0E0F2FCF1 + E9F3010101010101E2EC0606060C2C2C2C19191716151414141414141414141A + 1A1A1A1A1A1A1A383838B4B5C7C6021414141414141A1A1A3838383838363939 + 3939393939393939393B393939393939393841872D6868676767666564642E2F + 0BFEFE09E6F5F5F5F6EFEFEFF0F0F0E1F0E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9 + F1F1F8F8F2080809DB090909090808080807070707ECECECDEDEDEFDFDE0E0E0 + F2F2FCFCFBFAEDE10101010101010AFD0B06060C2C2C19171837141414141414 + 141414141A1A1A1A1A1A1A1A381AB5B5C7C60214141414141A1A1A1A38383838 + 383939393939393939393B3B393B3B393B393B3939381A638867676766656564 + 2E2F06FEFEDBFBEFF4F4F5F5F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9 + F9F9F9F1F1F1F1F8E00708DB0909090909090808080707070707ECECDEDEDEFD + FDFDE0E0F2F2FCFCFBFAF9F1E4E7F30101010101EFFBDB06060C2C1917161414 + 14141414141414141A1A1A1A1A1A1A3838386BB5C7C6021414141414141A3338 + 3838383836393939393939393939393B3B3B3B3B3B3B39393938416363676665 + 65642E2F0CFEFEFEFDEBF3F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1EB + E3E5F9F9F9F9F9F9F1F1F1F8F207070606FEDB090908080808070707ECECECEC + DEDEDEFDFDFDE0E0F2F2FCFCFBFAF9F1F8E6E5E2F00101010101F3F8090BDB19 + 19161414141414141414141A1A1A1A1A1A1A383838386BB5C7C6021414141414 + 1A1A383838383836363939393939393B3B3B3B3B3B3B3B3B3B3B3B3939384162 + 636564642E2F0C06FEFEECEAF3F3F4F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1 + E1E1E1E1E3F7F9F9F9F9F9F1F1F1F1F8F8F207FE06060606DB09080807070707 + 0707ECDEDEDEDEFDFDE0E0E0F2F2FCFBFBFAF9F1F8E6E5E5E4EDEBDC01010101 + F0060619193414141414141414141A1A1A1A1A1A1A383838383A6BB5C7C60214 + 1414141A1A1A383838383636393939393939393B3B3B3B3B3B3B3B3B3B3B3B39 + 391A3C6262642E2F2B06FEFE08E3DFDCF3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0 + E1E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9F1F1F1F8F8F8E6F1FDDB0606060606DB + 09070707ECECECECDEDEFDFDFDFDE0F2F2F2FCFBFBFAF9F1F8F7F7E5E4E4E3EE + EAEF0101F0060C191716141A14141414141A1A1A1A1A1A1A1A3838383838B5B5 + C7C602141414141A1A333838383836363939393939393B3B3B3B3B3B3B3B3B3B + 3B3B3B39383C3F2B2B2F0C06FEFEDBF8F3DFDFDCF3F3F4F4F4F5F5F6F6EFEFEF + F0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9F9F9F9F1F1F1F1F1F8F8E6E6F7F7E6FD + DB06060606FEDB0807ECECDEDEDEDEFDFDE0E0E0F2FCFCFBFAFAF9F1F8F7E5E5 + E4E3E3E3EEEEE2E1E10606191716141414141414141A1A1A1A1A1A1A38383838 + 3A386BB5C7C602141414141A1A333838383636393939393939393B3B3B3B3B3B + 3B3B3B3B3B3B3B39383C1D2B2B06FEFEFEF2F6DFDFDFDFDCF3F3F3F4F4F5F5F5 + F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3E5F9F9F9F9F9F1F1F1F1F8F8F8E6E6 + E6F7F7F7E5E5FD0906060606FEDB07ECDEDEFDFDFDE0E0E0F2FCFCFBFAFAF9F8 + E6F7E5E5E4E4E3E3EEEDEDEEF2060C19181514141414141A1A1A1A1A1A1A1A38 + 383838383A3AB5B5C7C8021414141A1A1A33383838363639393939393B3B3B3B + 3B3B3B3B3B3B3B3B3B3B3B39383F192BFEFEFEDEEB01DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFF0F0F0F0E1E1E1E1E1E1E1E1E3F7F9F9F9F9F9F9F1F1F1F8 + F8E6E6E6E6F7F7E5E5E5E5E4E4FD0906060606FEDBECDEFDFDE0E0F2F2F2FCFB + FAFAF1F8E6F7E5E4E4E3E3EEE3F2070B060C0C173435141A141A1A1A1A1A1A1A + 1A1A1A383838383A3A3AB5B5C7C802143314331A33333838383636393939393B + 3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1C2B0C09FDEA01DF01DFDFDFDFDCDC + F3F3F3F4F4F5F5F6F6EFEFEFEFF0F0F0F0E1E1E1E1E1E1EBE3F7F9F9F9F9F9F9 + F1F1F1F8F8F8E6E6E6F7F7E5E5E5E5E4E4E4E4E3FD0906060606FE09ECE0E0F2 + F2FCFCFBFAF9F9F1E6F7E5E5E4E5F2080B0606060C2B1734351A141A1A1A1A1A + 1A1A1A1A1A38383838383A3A3939B5B5C5C8021414141A1A3333383838363939 + 3939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B393C1C2BFE070101010101DFDF + DFDFDCDCF3F3F4F4F4F5F5F6F6F6EFEFF0F0F0F0E1F0E1E1E1E1E1E1E3E5F9F9 + F9F9F9F9F1F1F1F8F8F8E6E6E6F7F7F7E5E5E5E5E4E4E4E3E3E3E3E009060606 + 06FE09DEF2FCFCFBFAFAF1F8E6F7F1E00806060606FE062C2C1918351B1A1A1A + 1A1A1A1A1A1A1A1A1A383838383A39393939B5B5B6C802141A1A1A3338383838 + 3636393939393B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B391A1D2BFE07010101 + 010101DFDFDFDFDCF3F3F3F4F4F5F5F6F6EFEFEFF0F0F0F0F0E1E1E1E1E1EBE1 + FBFCFBFAF9F9F9F9F1F1F1F8F8F8E6E6F7F7F7E5E5E5E5E4E4E4E4E3E3E3EEEE + EEEEE00906060606FE09FDFBFAF1F1F8F1F2FD06060607FCE808FE2C19193714 + 1A1A1A1A1A1A1A1A1A1A1A1A383838383A3A39393939B5B5C5C80214331A1A33 + 3338383836393939393B3B3B3B3B3B3B3B3B3B3B3B3B3D3B3B3B3B39411C2BFE + 070101010101DFDFDFDFDFF3F3F3F4F4F4F5F5F6F6F6EFEFEFF0F0F0E1E1E1E1 + E1E7FB08FEDBFE08DEFBF9F1F1F1F8F8F8E6E6E6E6F7F7E5E5E5E4E4E4E4E3E3 + E3E3EEEEEEEDEDEDEEE00906060606FE09FDF9F1F1070707FBE8E7EAE708FE2C + 1917351A1A1A1A1A1A1A1A1A1A383838383838383A3939393939B5B5B6C80214 + 1A1A1A333338383836393939393B3B3B3B3B3B3B3B3B3D3B3D3B3B3D3B3D3B39 + 3C1C2BFE0801010101DFDFDFDFDFDFDCDCF3F4F4F4F5F5F6F6F6EFEFF0F0F0F0 + F0E1E1E8FDDBFEFEDB07FEFEFEFE08DEFBF1F1F8F8E6E6E6F7F7F7E5E5E5E5E4 + E4E4E4E3E3E3EEEEEEEEEDEDEDE8E8EDF20906060606FE08FD08ECEAEAEAE7EA + E708FE2C1934351A1A1A1A1A1A1A1A1A1A3838383838383A39393939393BB5B5 + B6C8021A1A1A33333838383636393939393B3B3B3B3B3B3B3B3B3B3B3B3D3B3D + 3B3B3B391A1D2BFE07010101010101DFDFDFDCDCF3F3F4F4F4F5F5F6F6EFEFEF + EFF0F0F0F0F7ECFEFEFE07E4E3E5F2DE08FEFEFEFE08FDFAF8F8E6E6F7F7F7F7 + E5E5E5E4E4E4E4E3E3E3EEEEEEEDEDEDE8EDE8E8E8E2EDF209060606060807EA + EAEAEAE7EA08FE2C1934141A1A1A1A1A1A1A1A383838383838383A3939393939 + 3B3BB5B5B6C8021A1A1A333338383836363939393B3B3B3B3B3B3B3B3D3D3D3D + 3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4F4F5F5F6 + F6EFEFEFF0F0EBFB09FEFEDBFDE8E1E1E3F7FCF2F2E0DE08FEFEFEFE08FDF9F7 + E6F7F7E5E5E5E4E4E4E4E4E3E3E3EEEEEEEEEDEDEDEDE8E8E8E8E2E2E9EDF208 + DBDEEEEAEAEAE7EAE708FE2B191C14381A3838383838383838383838383A3A39 + 39393B3B3B3BB5B5B6C8021A1A333333383838363939393B3B3B3B3B3B3D3B3D + 3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE070101010101DFDFDFDFDCDCF3F3F3F4 + F4F5F5F6F6F6EFEFE9FDDBFEFE09FBE7E1E1E1E1E3F7FCF2F2F2F2F2E0DE08FE + FEFEFE08FDF8F7F7E5E5E5E5E4E4E3E3E3E3EEEEEEEDEDEDEDE8E8E8E8E2E2E2 + E9E9E9E9EAEAEAEAEAEAEAE7E708FE2C19341B38383838383838383838383838 + 3A3A3939393B3B3B3B3BB5B5B6C8021A1A333833383836363939393B3B3B3B3B + 3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B411C2BFE0801010101DF01DFDFDFDCDC + F3F3F4F4F4F5F5F6F6EFE407FEFEFE07E4E1E1E1E1E1E1E1E3F7FCF2F2F2F2F2 + F2F2F2F2EC08FEFEFEFE07E0F7E5E4E4E4E4E4E3E3EEEEEEEEEDEDEDEDE8E8E8 + E8E8E2E2E9E9E9EAE9EAEAEAEAE7EAE7EA08FE2C19341A383838383838383838 + 38383A3A393939393B3B3B3B3B3BB5C7B6C8021A333333383836363939393B3B + 3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A1C2BFE070101010101DFDF + DFDFDCDCF3F3F3F4F4F5F5E1FC09FEFEDBFDE2E1E1E1E1E1E1E1E1E1E3E5FCF2 + F2F2F2F2F2F2F2F2FCF2F2EC09FEFEFEFE07E0E5E4E4E3E3E3E3EEEEEEEEEDED + EDEDE8E8E8E2E2E2E9E9E9E9E9EAEAEAEAEAEAEAE708FE2B19341A3838383838 + 383838383A3A393A3939393B3B3B3B3B3B3DB5C7C6C902333333333838363639 + 39393B3B3B3B3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3B3A3F2BFE07010101 + 01DF01DFDFDFDFDCF3F3F4F4F4E9FDDBFEFE08FCE7E1E1E1E1E1E1E1E1E1E1E1 + E3F7FCF2F2F2F2F2F2F2FCF2F2FCFCFCFCF2EC09FEFEFEDB07F2E4E4E3E3EEEE + EEEDEDEDEDE8E8E8E8E8E8E2E9E9E9E9E9E9EAEAEAEAE7E7EA08FE2B19371A38 + 383A3838383A3A3A3939393939393B3B3B3B3B3D3D3DB5C7B6C8021A33333838 + 38363639393B3B3B3B3B3D3D3D3D3D3D3D3D3D423D423D423D3D3D3D3A3F2BFE + 08010101010101DFDFDFDFDCF3F3F4E407FEFEFE07E4E1E1E1E1E1E1E1E1E1E1 + E1E1E1E1E3F7FCF2F2F2F2F2F2F2F2F2FCF2FCFCFCFCFCFCF2EC09FEFEFEDBEC + F2E3E3EEEEEDEDEDEDEDE8E8E8E2E9E2E9E9E9E9EAEAEAEAEAEAE7EAE708FE2C + 19371A3A3A3A383A3A3A39393939393939393B3B3B3B3D3D3D3DC7C7B6C90233 + 3338383836363939393B3B3B3B3D3D3D3D3D3D42423D423D423D423D423D423D + 3A3F2BFE0701010101DFDFDFDFDFDCF3E1FB09FEFEDBFDE2E1E1E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E2FCFAF2F2F2F2F2F2F2FCF2FCFCFCFCFCFCFCFCFBFBFBF2 + EC09FEFEFEDBECFCEEEDEDEDE8EDE8E8E8E8E2E2E9E9E9EAE9EAEAEAEAEAE7EA + E708FE2B17371A393939393A393A3939393939393B3B3B3B3D3D3D3D4242C7C7 + C6C9023333383636363639393B3B3B3B3D3D3D3D3D3D3D3D4242424242424240 + 4242423D473C2AFE07010101010101DFDFDFEAFDDBFEFE08FBE7E1E1E1E1E1E1 + E1E1E1E1E1E1E1E1E1E1E1E1E2E5F9F2F2F2F2F2F2F2F2F2F2FCFCFCFCFCFCFB + FCFBFBFBFBFBF2EC09FEFEFEDBECFBEDEDEDE8E8E2E8E2E2E9E9E9E9EAE9EAEA + EAEAE7EAEA08FE2B1D371A3939393939393939393939393B3B3B3B3B3D3D3D42 + 4242C7C7C6C90233383836363639393B3B3B3B3B3D3D3D3D3D42424242404240 + 404040404040403D3B3F2BFE080101010101DFF4E407FEFEFEECE4E1E1E1E1E1 + E1E1E1EBE1E1E1EBE1E1E1E1E1EBE1E1E2F7E4E4F7FAF2F2F2F2FCF2FCFCFCFC + FCFCFCFCFBFBFBFBFBFAFAFAFAF2ECDBFEFEFEDBDEFAE8E8E8E8E2E2E9E9E9E9 + E9EAEAEAEAEAEAE7E708FE2B173C38393939393939393939393B3B3B3B3B3B3D + 3D3D42424242C7C7B7C90238383836363939393B3B3B3D3D3D3D3D4242424242 + 4040404040404040404040423B412AFE0701010101F0FA09FEFEDBFDE2E1EBE1 + E1EBE1EBE1EBE1E1E1EBE1E1E1E1EBE1E1E1E1E1DEDED8EBE1E7EDE6FAFCF2F2 + FCF2FCFCFCFCFCFBFCFBFBFBFBFAFBFAFAFAF9F9F2ECDBFEFEFEDBDEF1E2E2E2 + E9E9E9E9EAEAEAEAEAE7EAE7EA08FE2B1C3C3839393939393939393B3B3B3B3B + 3B3D3D3D424242425140C7C7B7C90238383836363939393B3B3D3D3D3D3D4242 + 4242404040404046404040403E4640423B412BFE070101EAFDFEFEFE08FAE7EB + E1EBE1EBEBE1EBE1EBE1EBE1EBE1EBE1EBEBE1EBE1EBEBE1EBE7E1EFEFF0E1EB + E7E8E5F9FCFCFCFCFCFCFCFCFBFBFBFBFBFAFAFAFAFAF9F9F9F9F1F2ECDBFEFE + FEDBFDE6E2E9E9E9E9E9EAEAEAEAEAE7E708FE2B1C3C38393939393939393B3B + 3B3B3B3B3B3D3D3D424242514051C7C7C8C902383836363939393B3B3B3D3D3D + 42424242404040404646464646463E3E463E3E423D412AFE08E407FEFEFEECE5 + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBF0F6EFEFF6 + F6EFF6F6EFE1EBE1E2E4F9FBFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAF9F9F9F1F1 + F1F8F2ECDBFEFEFE09FDE5E9EAEAEAEAEAEAE7EAEA08FE2B1C3C3A3939393939 + 393B3B3B3B3B3B3B3D3D3D4242514051464676B6B7C902383636393936393B3B + 3B3D3D3D3D424040464046464646463E3E3E3E3E3E3E3E403D412AFEFEFEFEDB + FDE2EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE1EB + EFF6F0E4EDE1EFEFEFF6F6F6F0EBEAEAE4F1FBFBFCFBFBFBFBFBFAFAFAFAF9F9 + F9F9F1F1F1F8F8F8E6F2ECDBFEFEFE09FDE4EAEAEAEAEAE7E708FE2B1C3C3A3B + 3B3B393B3B3B3B3B3B3B3B3D3D3D424251515146464676B6C8C9023636363936 + 3B3B3B3B3D3D3D42424040404646464646464E3E4E4E4E4E4E4E4E463D4162FE + FE08FBEAEBEBEBEBEBEBEBEBE7EBEBEBEBEBEBEBEBEBEBEBEBEBEBE7EBEBEBEB + EBEBF0F6EFF00508F2E3E2EAEBF0EFF6EFEFEFF0E1E1E7EDF8FAFBFBFBFAFAFA + FAFAF9FAF9F9F1F1F1F8F8F8F8E6E6F7F2ECDBFEFEFE09E0E3E7EAE7EA08FE2B + 1C41393B3B3B3B3B3B3B3B3B3B3B3D3D3D424242514646464E46B6B6B7B80236 + 3639363B393B3B3B3D3DA2424040404646463E4E3E4E4E444444444444444446 + 42412AFE08E7EBEBEBE7EBE7EBE7E7EBEBE7E7EBE7E7E7E7E7EBE7EBE7E7EBEB + E7EBE7EBE7E1EBEFF6EB07FCFAE5FBFAE4E2EAE7EFF6F6EFF6EFF0E1E1EBE8E6 + FAFAFAFAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F207DBFEFEFE09E0EE + E708FE2B1C1A393B3B3B3B3B3B3B3B3B3D3D3D3D3D4242514646464E4E4EB6B6 + C9C9023639393B363B3B3B3D3D3D424040403E3E4E4E4E724472494949494949 + 4943494E42472AFE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7F0F6EFF005FDFCEDDFF6EAE4FBFAF7E8E9EBF0EFF6EFEF + F6EFE1E1E8E2E5FAFAFAF9F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7E5F7F207 + DBFEFEFE08DBFE2B1C41393B3B3B3B3B3B3B3B3B3B3D3D3D4242404646464E4E + 7272B6B6C9B802363939393B3B3BA23D3D404040403E464E4E4E72724949491F + 4949434949434349514762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E1F0EFF0E8ECFCF9F4DCDCDFF3F6EAE4FAFAF7ED + EAEBF0EFF6EFEFF6EFE1EBEAE9E4F1F9F9F9F1F1F1F8F8F8E6E6E6E6F7F7F7F7 + E5E5E5E5E5F207DBFEFEFE2B3F41393B3B3B3B3B3B3D3B3D3D3D3D4242425146 + 464E72727272B6B6C9B8023939393B6A3B3B3D3D3D424040463E4E4E49494949 + 49431F494343435353434349464762FE08E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EBE2F6F6E1E0F2FCE7DFDFDFDCDFF3F3F3 + F4E7E4FAFAF8EEEAEBF0EFEFF6F6F6F6F0E1E7E7EEF8F1F1F1F1F8F8E6E6E6E6 + F7F7F7E5E5E5E5E5E5E4E4F7F2DBFE2B3441393B3B3B3B3D3B3D3B3D3D3D4242 + 405146464E72725A5A5AB6B7C9B802393939363B3B3D3D3D4040403E3E4E4444 + 4949491F434326535353535353535349464762FE08EAEAEAEAEAEAEAEAE7EAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E1F6F6EFA0E0FCE4DFDFDFDCDC + DCDCF3F3F3F3F3F5E7EEF9FAF1E3EAE1EFF6F6F6F6F6F6F0F0F0E7EDF7F8F8F8 + E6E6E6F7F7F7F7F7E5E5E5E5E4E5E4E4E409FE2B3F413B3D3B3D3B3B3D3D3D3D + 3D3D4242404646464E725A5A5A5A7DB7C9B80239393B3B3B6A3DA23D40403E3E + 46444949491F43432653535353535353234D53264E4762FE08EAEAEAEAEAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBE1F6EF0AE0FCFAF6DF + DFDCDCDFDCF3F3F3F3F3F3F3F4F4F4E7EEF9FBFAE4E2E1F6F6F6F6F6F6EFEFF0 + E1EBE2E5E6E6E6F7F7F7F7F7E5E5E5E5E5E5E4E4E409FE2B3F413B3D3D3B3D3B + 3D3D3D3D3D42424246464E4E727E5A5E7E7EB7B7C9B8023B3B3B6A3B3D3D3D42 + 40403E46444949491F2626535D5353234D4D5757575757264E8662FE08EAEAEA + EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE7E2F6EFEFF9F2 + FBEADCDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F5F5EBEDF9FBFBE5E8E1EFEF + EFF6F6EFF6EFF0F0EBE9E3F7F7F7F7F7E5E5E5E5E5E4E5E4E409FE2B3F3A3B3D + 3D3D3D3D3D3D3D3D4242424046464E725A5A7E7E5E5EB7B7C9B8023B3B3B3D3B + 3D3D3D40403E3E4444491F1F2653535357235757565676745674565D724262FE + 08E9E9EAEAE9E9EAE9E9E9E9EAEAE9E9E9E9EAE9EAE9E9EAEAE9EAE9E7E1F6F0 + F6EEFAFCEDDFDFDFDFDCDFDCDCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5EBEDF8 + FBFBE6E8EBEFEFF6EFEFF6F6EFF0E1EBEAEEE5E5E5E5E5E5E5E4E4E4E409FE2B + 3C3A3B3D3D3D3D3D3D3D3D424242405146464E725A5A5E5E5E5EB78AB8A8023B + 3B3B6A3D3DA242403E3E44444943435353535D29575656767474745C74567657 + 7E5162FE08E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA + E1F6EFF6E2F7FCE4F3DFDFDFDFDCDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5 + F6F6F6EFE1E8F7FBFBF8EEE7EFF6EFF6F6EFF6F6EFE1E1EAE8E4E5E5E5E5E4E4 + E409FE2A3C3A3B3D3D3D3D3D3D423D4242424046464E725A7E5E5E5B5B5EC9B7 + B8B8023B3B3B3D3D3D4040403E46444949435353535D57745C565C5C74745C5C + 595C50577E5163FE08EBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 + E9E9E9EBF0F6EFE1E4FBF7F3DFDFDFDFDFDFDCDCDCDCF3F3F3F3F3F3F4F4F4F4 + F5F5F5F5F6F6F6F6F6F6EFE1E8E5FBFAF1EEEAF0F6F6EFF6F6EFF6EFE1E1E7E2 + E3E5E5E4F8DBFE2A41473B3D3D3D3D3D3D42424242424046464E725A5E5E265E + 5B5EB7C9B8A8023B3B3B3D3DA23D403E3E44444953265353575676745C5C5C59 + 595F7D7D597D7D565D2887FEDBEFEBE9E9E9E9E9E2E9E9E9E9E9E9E9E9E9E9E9 + E9E9E2E9E2E9EBEAF6F6F0EEFAF7F3DFDFF3DFF3DFDCDCDCDCF3DCF3F3F3F3F4 + F4F4F4F4F5F5F5F5F6F6F6F6F6EFEFEFEFEFE1E2E5FAFAF1E3E9F0EFF6F6F6F6 + EFEFF0F0EBE9E3E4ECFE0B2A413B3D3D3D3D3D3D3D3D4242424040464E725A5A + 5E5E5E5D5D5DC995B8A8023B3B3D3D3D4040403E3E4444435353575756745C5C + 5F5F7D7D7D7D7D7D7D7D7D50577E85FEFEE2EFEBE9E9E2E9E9E9E2E9E2E2E9E8 + E9E9E9E2E2E9E9E9E7E1EBEFF6E7EEF9E5F4DFF3DFDFDFDFDFF3DFDCDCDCF3F3 + F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFEFE1E9E5FAFAF1E3 + E8F0F6F6F6F6EFF6F6F0E1E3DBFE2A3C3A3B3D3D3D3D3D3D4242424240405146 + 4E725A7E5E265D5D5D5D9595B8BA023D3D6A3D403D40403E6B44494353235774 + 5C5C5C5F5F7D7D7D7D7D817D7D7D7D5F5C5E772FFE09F0F0F0EAE2E2E2E2E2E2 + E2E9E2E9E2E2E2E9E2E9EAE1EAEFEFEFE5E6FBE3F4DFDFDFDFF3DFDFDFF3DFDC + DCDCF3F3F3F3F3F3F4F4F4F4F5F5F5F5F5F5F6F6F6EFF6EFEFEFEFEFF0EFF0F0 + F0EAE4FAFAF1E5E8EBEFF6F6F6EFEFE0FE063F413B3D3D3D3D3D3D423D424242 + 4040464E4E725A7E265D5D5D5D5DC9C9B8BA023B3D3D3D3DB4403E3E44444353 + 5357565C5C5F5F7D7D7D7D818181818181817D7D5C767E2DFEFE64EAF6EFE1EA + E9E2E2E2E2E2E2E2E2E2E2E2EAEBF0F0F6F6EDFCFAFCE2F3DFDFF3DFDFDFDFF3 + DFDFDFDCDCDCF3F3F3F3F3F3F4F4F4F4F4F5F5F5F6F6F6F6EFF6EFEFEFEFEFEF + EFF0F0F0F0F0F0F0EAE3FAFAF1FAEEEFF6EFE709FE623C3A3B3D3D3D3D3D3D3D + 3D42424240404646725A5A5E265D5D5D5D8495B8B8A8023D3D3D403D403E3E3E + 4449435357565C5C5F5F7D81818181818A81818181817979815C5D7A2EFEFE2F + F20AF6E1F0EBE7E9E2E2E2E2E9E9E7E1F0EFF6F0E4FDECDEFD09EBDFF3F3DFF3 + DFF3DFDFDFDCDFDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F6F5F5F6F6F6F6EFEF + EFEFEFEFF0EFF0F0F0F0F0F0F0F0F0E7F2E5E7EFEFF0FAFE0B3F41473D423D42 + 3D3D4242424242425146464E725A7E5E5B5D8484295D95B89ACA023D3D3D3DB4 + 403E3E444443435357745C5F5F5F8181818A8A7979798A797979797979815C5D + 722EFEFE07FAFAE8F0F60AF0E1EBE7E7EBE1EFF6F0EDE0ECECECECEC07ECECEC + F2F8E8E1DFDFDFDFF3DFDCDCDCDCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5F6F6F6 + EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F0E9FBE8EFF6EF0506FE2F3C473B + 3D3D3D3D3D3D3D3D424242404046464E725A5E5E5D298484848496B89ACA023D + 3D404040403E3E44444353574B5C597D7D818181798A8A838383787879837978 + 798A7D5C5D722EFEFE09F2FAFBF8E8EFF6EFE1EFEFF0EDE0ECECECECE0E40AFB + ECFDDEECECECECECDEF2E5E2EFF3F3F3DCDCF3F3F3F3F3F4F4F4F4F4F5F5F5F5 + F6F6F6F6F6EFEFEFEFEFEFEFF0EFF0F0F0F0F0F0F0F0F0F8E5EBF6F60A09FEFE + 2A41473D42423D3D423D3D424242425140464672725A265D5D848484848496B8 + 9CCA023D3DA23D403E3E6B6B43434D4B745C5F7D81818A8A8A838A8383838383 + 83838383787981815C5D722DFEFEFE08ECE0FAF1E5E3F7FCDEECECECECF2E50A + 040404FBECFCF7E6FAF2FDDEECECECECECFDFBE3EAF5F3F3F3F3F3F4F4F4F4F4 + F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0E9FAE8EFF6E1 + DEFEFE6241473D3D423D3D423D424242424242405146464E497E5E5D5D848484 + 8484B8B8A8CA023D3D4040403E3E6B6B4345534B5C597D81818A8A8383838383 + 838383838383838378787879545C577E880B0BFEFEFEFEDB08ECECECECECF2E4 + 0A040404040404FBECFCE6F7F7F7E5E5F7FAF2FDECECECECECECE0FAEEE7F3F3 + F4F4F5F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFF0EFEFF0F0F0F0F0F0F0F0F8EE + F0EFF0FBFEFE2F41473D424242423D423D3D42424242404246464672497E5D5D + 84845C848484B8B89CCA023D4040B4403E3E6B44434570745C7D7D818A8A8383 + 838383838990838383838383838378797981505C535A882D2F0BFEFEFE07ECF2 + E40A040404040404040404FBECFCE6F7F7E5E5E5E5E4E4E3E3E5FAF2FDECECEC + ECECECE0F1EDEBF4F5F5F5F5F5F6F6F6F6F6EFEFEFEFEFEFEFF0F0F0F0F0F0F0 + F0EDF7E7F6F6E5FEFE2F41473D3D4242423D3D3D424242424240405146464E72 + 7E5E5D5D848461848484989ACACA02403D40403E3E3E6B4443534B5C5F7D8181 + 8A8383838383908390837C9083837C7C83838378787981505C56534372518762 + 2FECEC0A040404E104040404040404FBECFCF7F7F7F7E5E5E4E4E4E3E3E3EEEE + EEEDE5FAF2FDECECECECECDEF2F7E8E1EFEFF5EFEFEFEFEFEFEFEFF0EFF0F0F0 + F0F0F0F0E7F1EAF6F6E5FEFE2F41473D42424242424242424242424242424051 + 46464E5A7E5E5D84848F8F8F8F8F98B8CACA023D4040B43E3E6B4449454D4B5C + 5F7D8179798383839089908989897C9089907C7C7C838383787979795050744B + 704346473F07EC0A0A04040404040404040404FBECFCE6F7F7F7E5E5E4E4E4E3 + E3E3EEA0EDEDEDE8E8E2E8E4F9F2DEECECECECECFDFCE5E9F0EFEFEFEFEFEFEF + F0F0F0F0F0F0F0EDFAEDF0F0FDFEFE2F413B3D42424242424242424242424242 + 42404046464E725A7E265D848F8F8F8F8F849A98BACA02404040403E3E6B4443 + 454556747D818A8A83838390899089898989898989897C907C83838379585858 + 79547D50504D494241ECEC0A0404E10404040404040404FCECF2E6F7F7E5E5E5 + E5E4E4E3E3E3EEEEEDEDE8E8E8E2E2E2E9E9EAE2E4F9E0DEECECECECECFDFBEE + EBEFEFF0EFEFF0F0F0EBF7FCE5EBE208FEFE2E41473D42424042424242424242 + 4242424240404046464E727E5E5D845C8F8F8F8F8F8F9A9ACACA0240B440403E + 3E6B4443454D4B597D81818A83838989899089898989898989897C7C7C837C83 + 8378787954546E55554843514707EC0AE104040404040404E2F8FDECECECECEC + DEE0F9F7E4E4E4E3E3E3EEEEEEEDEDE8E8E2E2E9E9EAEAEAE7EAE7E7E2E4FAE0 + ECECECECE0F0EFEFF0F0F0F0E3FCFBE4EAF9DBFE096447474242404040424240 + 4242424242424240424040464E4E725A5E5D84618F8E8E8E8E8F9A9ACACA0240 + 40403E3E3E6B4443434D74507D818A8383838989898989898989898989898989 + 8989837C83787879795454505048534647ECEC0A0404040404E8FADEECECECDE + FBE0ECECECECECECECDEF2F9E4EEEEEEEDEDEDE8E8E2E2E2E9E9EAEAEAE7E7E7 + EB0AEBEBEBE2FCECECEBEFEFEFF0EBF9FBE3EAEBDEFEFEDE67473D4240404040 + 404042424242424242425140404046464E725A5E5B5D848F948D94948E8F9A9A + CAC2024040B43E3E3E6B4343454A747D7D818A83839089898989898989898989 + 89898989897C7C83838378795479545555484D4E4707EC0A040AA0F2DEECECEC + DEF9E9D9DDDDDDEBEDF1F2ECECECECECECECDEF2F1E3E8E8E8E2E2E9E9EAEAEA + EAE7E7E7E7E7EBEBEBEBE7DEECEBEFEFE7E3FBFBF8F8DEFEFEDBDE6885424046 + 3E463E40404040404242424240424040404046464E495A5E5D84848F8E8D9394 + 8E949A9CCAC2024040403E3E6B6B4343454B5C7D7D818A838389898989898C89 + 898C898989898989897C897C7C78787879546E6E505045443DECECF7F2ECECEC + B3D1D4D4D7DDDDDDDDDDDDDDDDDDDDDDEBE8E6F2DEECECECECECECDEFCE6EEE2 + E9E9EAEAEAE7E7E7EBE7EBEBEBEBEBDEECEDEAE6FCFCDEDBFEFEFEFEE0D86651 + 51463E463E46463E4040405142424240424040404640464E72495A265D848F8E + 8D9393938E8E9C9CCAC20240403E3E3E6B444443454A747D7D8A838389898989 + 898C898C8C89898C898C898989897C7C8383835858796E6E55504B4342ECECEC + ECEC0708B3D0D3D3D3D3CFCFCFD5D7DADDDDDDDDDDDDDDDDDDE1E8E5FCFDECEC + ECECECECFDF2F7EDEAEAE7E7E7EBE7EBEBEBEBDEEC09ECEC09FEFEFEFE09FAA0 + D19F604E4444443E3E46464040404040514042425140515146464E4E725A5E53 + 848F8F8D93939393938D9C9CCAC2024040403E3E6B6B4443454B507D818A8383 + 898989898C898C89898C8C898989898989897C7C7C8378787979545555504843 + 442D07ECEC07DBD2B3CED3D3D3D3D3D3D3D3D3CFCFD5D5D7DAD9D9DDDDDDDDDD + DDDDF0E9E4FCFDECECECECECECFDFCF7EDEBEBEBEBEBEBF8EC07FEFEFEFE0B2E + 8867D19F7E72491F1F49443E4E46463E46404040405151404040404046464E72 + 497E5E5D848F8E939395959593949CCACAC20240403E3E3E3E4443434D4B507D + 818A83908989898C8C898C8C898C8C898C898C898989897C838378787979546E + 6E50746C433E0707ECECECD2B3D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D5 + D7DADAD9DDDDDDDDDDDDDDF6EAE4FAE0ECECECECECECFDFCF7EDE7E4EC080B2F + 2D827E5D5D5D5D5B53532653434949443E4E4E46464646514051514051464646 + 464E4E72492653845C8F9493959595959593CA9CC2C20240403E3E3E6B44B543 + 4D4B507D818A838389898989898C8C898C8C8C8C8C898989897C898983838378 + 58796E556E50504845434642872EDBB3B3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3CFCFD5D7DADAD9D9DDDDDDDDDDDDF6E7E3F9E0ECECECECECECEC + EC0842725B5C5F817D8159507457234D43434949444E4E464646464651404040 + 464646464E4E4E495A5E5D848F8E8A959595969595959C9CC2C202403E3E3E3E + 6B4443434D74507D798A83898989898C8C8C8C8C8C8C8C8C8C89898989897C7C + 7C7C785858796E54505050486C4543463D4163B3D1D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9D9DDDDDDDDDDDDE72F + 08ECECEC076449748158837C8383797D50504B4D45434949444E4E3E4E464646 + 46464046464646464E4E72497E5B5D618E8D9395969696969595CACACAC20240 + 3E3E3E3E6B4443434D48507D8183838989898C8C8C8C8C8C8C8C8C8C8C8C8C89 + 8989897C838383785854546E505050481E6C4544424764B3D0D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3CFD5D7DAD9D9D9 + DDE1E407ECECEC07825E565458898989898378797D50744D53531F4944444E4E + 3E464E4646464646463E464E4E72721F5E5D848F8E9395969696969696959CCA + C2C20240403E3E3E6B6B43454D74507D81838389898996968C8C8C8C8C8C8C8C + 8C8C898C8989897C7C8383785879546E6E505050486C4549516265B3CED3D3D3 + D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3CFD5D4F2ECECEC086472265255587C738C8C8C898379815974564D534349 + 4949724E4E4E4E4646464646464E4E4E72725A7E5357848E9395969698989896 + 96909CCAC2B202403E3E3E6B6B6B43454D74507D798383898989898C8C8C8C8C + 8C8C8C8C8C8C8C8C8989897C7C7C83787979546E556E5048484B45494241D2B3 + CECFD3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3D3D4D1D264474244535055587C898C8CA58C898358817D744B + 7053431F1F4949444E4E4E464E4E46464E4E4E72725A7E535D295C8E93959698 + 989898989696CACAC2C202403E3E3E3E6B4443454548507D7983839089898C8C + 8C8C8C8C8C8C8C8C8C8C8C898989897C7C837878587954545550504848484549 + 3D41D2B3D4D3D3D3CFD3D3D3D3D3D3D3CFD3D3D3CFD3D3D3D3D3D3D3D3D3D3D3 + D3D3D3D3D3D3D3CFD3D3D3D3D4B3D28786444A50544F71898CA5ABAB8C8C8983 + 817D5074224D53431F1F4949444E4E4E4E4646464E4E725A725A5A265D848F8E + 95969698989A989898969DCAC2CB0240403E3E3E6B4443454D74507D79838389 + 8989898C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C8378584F6E6E55505050 + 504B454E3D63B3D1CFCFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CFD3CF + D3CFD3CFD3CFD3CFD3CFD3D3D3CFD3CFD4D2D23A465350554F58718C738B8B8B + A58C898958547D50564D4343435A1F494E4E724E4E4E4E4E4E72725A495A5E53 + 5D5C8E939596989A9A9A9A989896C2CAC2B20240403E3E3E6B6B43454D74507D + 7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C898989837C8378794F4F6E + 6E505050504B2646472EB3D1CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3D4D2D247724D5554584C6F8C + 8B8B8B8B8B8C897C78817D50744B5343431F4949724E4E4E4E4E4E4E7272725A + 5A5A265D848F8E939596989A9A9A9A9A9898CACAC2B202403E3E3E3E6B6B4343 + 4D4850548183838989898C8C8C8C8C8C8C8C8C8C8C8C8C898989897C7C7C7C78 + 7858546E6E505050484B53464765B3D6CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD3CED26686491E2058 + 587C8C758B8B97978BA58C8983587D595C4B70532643261F5A5A72724E5A7272 + 72285A5A7E26535D848F8E9096989A9A9C9C9A9A9A989DC2C2CB0240403E3E3E + 6B4443434D74507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C8989897C + 7C7C7C787858586E556E5050507443514167B3CED5CFCFCFCFCFCFCFCFCFCFCF + CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D26540 + 4350544C716F73A57BAAAAAA808B8C897C588150744B4D534326431F49497272 + 5A72727272725A1F265E5B5D5C8E8A9596989A9C9C9C9C9A9A98C2CAB2CB0240 + 403E3E3E6B4443434D4B507D7983838989898C8C8C8C8C8C8C8C8C8C8C8C8C8C + 8C89897C7C837883785854546E505550554B5A4241D2B3D4CFCFCFCFD5CFCFCF + D5CFD5CFCFCFD5CFD5CFCFCFCFCFCFCFD5CFCFCFCFCFCFCFCFD5CFCFCFCFCFCF + D1D22D4E4D504F717173737B977FAAAA978BA5897C78817D5074705353264349 + 1F5A72725A727272725A7E7E43265D848F8E9395989A9C9C9C9D9C9C9A98C2C2 + C2CB0240403E3E3E6B6B4343454B507D81838389898C8C8C8C8C8C8C8C8C8C8C + 8C8C8C8C8C898989897C7C8378584F5854546E55594B4E8662B3B3D5D5CFD5D5 + CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFD5CFCFCFD5 + CFCFD5D4B3D286494A554F717173A57BAA92AC92AA8BA58C7C838A7D50744B23 + 53264326495A5A5A727A725A5A5A495E5E535D848F8D9596989A9C9C9D9D9C9C + 9C98C2C2B2CB0240403E3E3E6B4443434D4B507D8183838989898C8C8C8C8C8C + 8C8C8C8C8C8C8C8C8C8989897C7C7C7878585854546E6E6E4853464764B3D1D5 + D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D4D2D23D49484F4C716F737B8BAA929292AA978B8C8983797D + 7D505723535326261F1F495A5A727272725A5A5A535B84848F8D9596989A9C9D + 9D9D9D9C9A9AC2C2CBCB02403E3E3E3E6B6B43434D74507D79837C8989898C8C + 8C8C8CA58C8C8C8C8C8C8C8C897389897C7C7C837878584F5455545548435147 + D2B3A0D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D5D5D5CED266514350584C6F6F737B8092929292AC808B8C + 897C7954595C56702353261F5E1F5A7E5A725A725A5A7E535B5D845C8F8A9596 + 9A9C9D9D9D9D9D97979AC2C2CBCB0240403E3E3E6B4449434D4B507D79839089 + 89898C8C8CA58C8C8C8C8C8C8C8C8C8C8C898989897C7C7C787858584F6E6E50 + 48494241B3D2D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 + D5D5D5D5D5D5D5D5D7D5D5D5D5D50AD0D265464D554C716F73737B7F92999292 + ACAA8BA5897C79797D5C4B57235326267E5A5A7E5A5A5A7E5A7E5E5E5E5D845C + 8E8A96989A9C9D9D9D9D9D9D9C9AC2C2CBCB0240403E3E3E6B6B44434D48507D + 8A839089898C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C7C897C897C7C7878584C + 4F546D6E48494263D2D1D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5D7D5 + D7D5D7D5D5D7D5D5D5D7D5D5D5D5D5D5D5D5CFD1D288491E204C6F6F73A57B7F + 9299999992AA8BA5898358797D5C4B56575B2626261F5A5A7E5A7E5A1F7E7E26 + 295D5C8F8D9596989A9C9D9E9D9D9D9D979ACBC2CBCC0240403E3E3E6B6B4343 + 4548507D79839089898C8C8C8C8C8C8CA58CA58C8C8C8C8C8C8C8C8989897C7C + 7C7878584F4F4F504A493D64B3D0D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D4D2D24243246D716F7C + 737580A39299999992AAA8AB8C7C83797D74744B295B26267E7E5A495A7E7A7E + 7E7E7E5E5B5D848F8D9396989C9C9D9E9E9E9D9D979AC2CBCBCC0240403E3E3E + 3E4444434D4B507D8A838389898C8C8C8C8C8C8CA5A58CA5A58C8C8C8C8C8C89 + 7389897C7C7C7178584F4F6E706B8765B3D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D5D6D266515354 + 4C716F73737580929299999992928BA5898983817D50745657535326261F5A7E + 7E7E7A7E7E7E5E265D27847D8A9596989C9D9D9E9E9E9D9D9C97CBC2CCCC0240 + 403E3E3E3E6B4443454B507D8A8390898C8C8C8C8C8C8CAB8C8C8CA58CA5A58C + 8C8C8C8C897C897C7C7C71714C4C54554D7741D2B3D4D7D7D7D7D7D7D7D7DAD7 + D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7DAD7D7D7D70AD1D2 + 82494B6E4C716F73738B7F929999A999BB92808B8C7C838A7D597429235B2626 + 5A495E7E7E7E7E7E7E7E5E5E29295C8E8A95989A9C9D9E9E9E9E9E9D979ACBCB + CBCC0240403E3E3E3E6B43434548507D79838989898C8C8C8CAB8CABABABA5AB + A5A5A5A58CA58C8C8C8C8C89897C7C7C714C4F50534263B3D2D7DAD7DADAD7DA + D7DAD7DAD7DAD7DAD7DADAD7DAD7D7DAD7DAD7D7DAD7D7DAD7D7DAD7D7D7D7DA + D7D4D2D2421F484F4C6F7373737B7F9299AEAE999292808B8C8983797D505C56 + 575326265E5E7E5E7E7E7A7E5E7E5E5D5D848F8E9395989A9C9E9E9E9E9E9E9D + 9C9ACBCBCBCC0240403E3E3E6B6B4343457450548A839089898C8C8CAB8CABAB + A5ABABABABA5A5A5A5A58CA58C8C8C89737C7C7C7C714F74438664B3D1D9DADA + DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADAD7D6D266464D554F6F6F6F73757B7F929999AFAE9992AA8B8C898379 + 7D7D745656535B53535E7E7E7E7E7E7E7E5E5E5D5D845C8E8A96989A9D9E9E9E + 9E9E9D9D9C9ACBCBCCCC0240403E3E3E3E6B4443454B7D81798389898C8C8C8C + ABABABA5A5ABA5ABA5A5A5A5ABA5A5A58C8C8C738C8C89736F6F4F50728767B3 + D8DADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA + DADADADADADADADA0AD1D2827A744F4C716F737373807F9299AFAF999992AA8B + 8C89838A817D5C56575D5B2626267E7E7E7E7E7E7E5E5E5D575C8F8D9096989C + 9D9E9EB2B29E9E9D9C97CBCBCCCC0240403E3E3E3E444943454B7D7D79838989 + 8C8C8CABABA5ABABABAB8BABABABAB8BABABA58BA5A5A58C737373737C717957 + 4687D2B304D9DADAD9DADADADADADADADADAD9DADADADADADADADADADADADADA + DADADADADADADADADADADADAA0D2D25143504F71716F6F73757B7F92A9AFAFAE + 9992978B8C8983797D5F5C56575B5B26265E7E7E7E7E7E7E7E5E5E5B845C8F8A + 9596989C9D9E9EB29E9E9E9D979ACCCBCCCD024040403E3E3E6B6B434D74507D + 8A8389898C8C8CABABAB8BAB8BABAB8B8B8B8B8B8B8BA5AB8BA5A5A5A5A57389 + 7378555E8664B3D1D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9DAD9D9D9D9DAD9D9DAD9D9D705D2654E4A504F4C6F6F7373757B7FA7 + 99AFAFAE9992AAA58C89838A7D7D7474575B265E267E7E7E7E7E7E7E7E5E5E5B + 298F8F8D95969A9C9D9EB2B29E9E9E9D979ACCCBCCCC024040B43E3E3E6B4443 + 454B50818383898C8C8CA5ABABABAB8B8B8B8B8BA88B8BA88B8B8B8B8B8B8B8B + A5A573757C78745A8767D2D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D90AD2D2881F486E4F71716F7373 + 757B7FA799ADAFAF9992AA8B8C7C83797D597656575B2626267E7E7E7E7E7E7E + 7E7E5E5D5D848F8D95969A9C9D9E9EB2B29E9D9D979ACCCCCCCD0240403E3E3E + 3E6B444345745081838389898C8CA5ABAB8B8B8BA8A8A8A8A88BA8A8A88B8B8B + 8B8B8B8B8B7B75737C5453852DB3D2D9DDD9DDD9D9D9D9D9D9D9D9D9D9D9D9D9 + D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DDDAD6D267465350204C4C + 71716F73758092A7AFAFAF999992AA8B8C8983797D505C74295B5B267E5E7E7E + 7E7E7E7E7E7E265D765C8F8A95969A9C9E9EB2B29E9E9E9D979ACCCCCDCD0240 + 40403E3E6B6B444345747D818383898C8CABABAB8BA8A8A8A897A8A89797AAAA + A8AAA8A8808B8B808B8BA58978747A47D2B3D8DDDDDDDDDDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9DDDDD9DD04D1D264494B + 55204C4C4C6F7373757BA39999AFAFAF9992978B8C8983797D595C76575B265E + 5E7E7E7E7E7E7E7E7E7E5E5D295C8F8A90989A9C9E9E9EB29E9E9E9D979ACCCC + CDCD0240403E3E3E3E6BB54370747D798389898C8CABAB8BA8A88B9797AA97AA + AAAAAAAAAAAAAAAAAAAA7F8B8BA58C7C7D7E8564D2D2D9DDDDDDDDDDDDDDDDDD + DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDE2D2 + D251265255204C4C716F7373757BA392AFAFAFAE9992AA8B8C8983817D5C7457 + 575D265E265E7E7A7E5A7E7E7E5E5E5D848F8F9395989A9D9E9EB2B2B29E9D9D + 979ACCCCCDCD0240403E3E3E6B44434370507D798389898CABAB8B8B97979797 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA80A57C795D8863D2B3E8DDDFDFDDDFDF + DDDFDDDDDFDDDDDDDFDDDFDDDFDDDFDDDFDFDDDFDDDDDFDDDDDFDDDDDDDDDDDD + DFDAD1D2654E4D50554F4C4C716F73737580A399A9AFAFAE9992808B8C89838A + 505074575B5B26267E7E7E7E5A5A7E7E7E5E5E5D845C7D8A90989A9D9EB2B2B2 + B29E9E97979ACDCCCDCD0240403E3E6B6B6B43436C50548A7C898CABAB8BA8A8 + 97AAAAAAAAAAAAACACACACACAC92ACACACAAAAAA80A5898F7A2DD2B3F8DDDFDF + DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF + DFDFDFDDDCE9D2D2421F5255204F4F4C716F6F7375809299AFADAFAF9992AAA5 + 8C8958797D5C27575B26265E7E7E7E5A7E7E7E7E7E5E5E5D848F8E8A90989A9D + 9E9EB2B29E9E9D9D979ACCCCCDCD0240403E3E6B446B43454B50547889898CAB + 8B8B9797AAAAAAAAACACACACACACAC9292ACACACACA3A3AA8BA5838482D2B366 + DD01DF01DFDFDF01DF01DFDFDFDFDFDFDFDF01DFDFDFDFDFDFDFDF01DFDFDFDF + DFDFDFDFDFDFDF01DA05D2654E45505520204C4C6F6F7373757B92A6999BAFAF + 9992AA8B8C8978797D5C5C575353265E5E7E7E7E7E5A7E7E7E5E265B848F8E93 + 96989C9D9E9EB2B29E9E9D9D979ACDCCCDCD02403E3E3E6B446B434548507983 + 898CABAB8B97AAAABAACACACACACBBBB92BBBBBBBBBBA7929292A39280A590D2 + B3D2D1E7F0E1DFDFDFDF01010101010101010101010101010101DF010101DF01 + 01DF01DFDFDF01DFDF010101E7D2D2881F746E544F4F4F4C716F7373757BA399 + A99BADAE999280A58C8978817D505C57575B265E7E7E7E5A7E5A7E7E7E7E5E5D + 298F8E9396989C9D9EB2B2B29E9E9D979AABCCCCCDCD02403E3E3E446B6B4345 + 48557983898CAB8BA897AAAAACACACBBBBBBBBBBBB99BB99A7BBA7BB92A7AC92 + 7F8B89B3B3B3B3B3B3DED1D1D105D6D6E6A0A0A0E7EBEBEFF4F4DF0101010101 + DF0101010101010101010101010101F0D1B3655A23506E4F4F4F4C4C716F7373 + 75809299AFAD9BAE999297A58C7C78815F2456575B265E5E7E7E7E7A7E7E7E7E + 7E5E5E5D848F8E9396989C9D9EB2B2B2B29E9D979A9ACDCDCDCD02403E3E6B6B + 44434345747D797C8CA58BA8A8AAAAACACACBBBBBBBB9999B9B999B99999A6A7 + A7A7A7A7AC80A5676767D2D2D2D1B3B3D2B3B3B3B3D1B3D1D1D1D1D1050505D8 + D6D8A0E8E2EA0AEBEBEFF6EFF3DFDF0101DFD9D6D2D251534850542020204C4C + 716F6F73758092A6AFAD9BAF999297A58C7C83817D7456235B265E7E7E7E7E7E + 7A5A7E7E7E5E5B29848F8E9596989C9E9EB2B2B29E9E9D979A9ACDCCCDCD023E + 3E3E446B4343456C505478898CAB8B97AAAAACACBBBB999999B9B9AEAEB9AEB9 + B9A69999B999A7A792AA80A589898A8A8E946161619F9F9F6666666767D267D2 + D2D2B3D2D2D2B3B3B3DED1D1D10505D6D8E3A0E8EAE7E3D2D2911F4B50542020 + 204C4F4C716F6F73758092A6AD9BAFAF999280AB899083817D7474235B261F7E + 7E7E7E5A7E5A7E7E7E7E5E5D848F8E95969A9C9D9EB2B2B29E9E9D979AABCDCC + CDCD023E3E3E444443436C6C50798389A58B97AAAAACACBBBBB9B999B9AEAEAE + AEAEA9A9AEAEA9B9A6A699A6A792A37F8075A5736F71784F546E5050745C7676 + 619161919F9F66669F66666666676767D267D267D2D2D2D2D2D2D2D29F494A50 + 55544F54206D4C4C716F6F7375809299AF9B9BAF999297A58C8378815F5C5629 + 53435E7E7E5A7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B29E9E9D97 + 9A98CDCDCDCD023E3E4444434345454B5079838CA58B97AAACACBBBBB9AEAEAE + AEAEAEAEAFAFAFA9A9A9A9AEA699A6A6A6A4A4A3A37F807B757573736F6F4C6D + 6D6D6E50504848486C4D5345434326265A919191919F9F9F666666B367D2689F + 436C5050204F4F4F204F4C4C716F6F73758092A9AF9B9BAF99AC97AB897C8A7D + 7D5C56295B265E7E7A7E7E7E7A7A7E7E7E7E5E5D848F9495969A9C9EB2B2B2B2 + 9E9E9D979AABCDCDCDCD023E3E6B444343456C4850797C8CABA8AAACACBB9999 + AEAEAEAEAEAFAFAFBEBEAFAFAFAFA9A9A9A9A6A6A6A6A7A4A3A37F7F7B7B7575 + 73736F6F6F4C4C4C6D6D6D6E505550505050481E4B4B2370232653262649495A + 491F43534824506E204F54206D4C4C4C716F737375809299AD9BADAF999280AB + 8C83797D7D74565B5B267E7E7E7A7E7E7A7A7A7E7E5E5E5D848F8D95969A9D9E + B2B2B2B29E9E97979A98CDCDCDCD026B44441F43434548487D78898C8BAAAA92 + BB99B9AEAEAEAFAFBEBEBEAFBEBEBEBEAFADA9AFA9A9A9A6A6A6A7A4A4A3A37F + 807B75757573736F6F6F4C4C4C6D4C6D6D4C6D2020556E6E5050505050525252 + 2452484B564B48745055556E55204F204F20204C6F6F6F73758092AFAD9B9BAF + 99AC97AB89838A7D5C5C56295B5E265E7E7A7A7E7E7A7A7A7E7E5E5D848F8D95 + 969A9D9EB2B2B2B29E9E9D979A98CDCDCDCD024E44441F4345454850547C89A5 + A8AAAC929999AEAEAFAFAFBEBEBEBEBDBEBEBEADADADADA9AFA9A9A9A6A6A7A4 + A4A3A37F7F807B7575736F6F6F6F6F6F4C4C4C6D204C204C4F6D20206E205455 + 5555555555505550555059556E55556E206E4F6D4F4F4C4C716F6F737580A799 + AD9B9BAF999297A58C838A7D505C295B535E7E7E7E7A7E7A7E7A7A7E7E7E5E5D + 848F9395989A9D9EB2B2B2B29E9E9D9AABABCDCDCDCD0244441F4343456C4850 + 547C8CA5A8AAACBBB9AEAEAEBEBEBEBEBEBEBDBDBE9BBEBDADADADADADA9A9A9 + A6A6A6A7A4A4A37F7F7B75757373736F6F6F6F6F4C4C4C4C6D4F4F4C4F6D2055 + 6D6E555554542055556E5455555554555555206E206E4F20204F6D4C716F7373 + 757F9299AD9B9BAF99928BA5897C797D5C5C295B5B7E7E7E5A5A7E7A727A7A7E + 7E7E5E5D848F9390989C9D9EB2B2B2B29E9D9C9A9A98CDCDCDCD024444434343 + 454A4850797C8C8BAAACBBBBAEAEAFBEBEBEBEBDBEBD9BB0BD9BB0BD9BADBDAD + ADADA9A9A9A6A6A7A4A4A3A38080757575736F6F6F6F6F6F4C4C4C6D6D4C4F6D + 6D2020555420556E6E5520555454546E6E555555542055545420544F204F4F4C + 716F6F737B8092A99B9B9BAF999297A58983797D595C575B265E7E7E5A7A7A7A + 7A7A7A7E7E5E5E5D848F9390989C9D9EB2B2B2B29E9D9D9AAB98CDCDCDCD0249 + 441F43456C1E506E787CA58BAA92BB99B9AFBEBEBEBEBE9BBDBDB0BDB0B0BDBD + BDBDADADADADADA9A9A9A6A6A7A4A47F807B7B7573736F6F6F6F4C4C4C4C4C4C + 4F20204F204F2054556E55555520556E54545455555555555554552054546D6E + 6D4F4F4C4C6F7373757FA4AEAD9B9BAF99928BAB8983797D5074565D267E7E7E + 5A7E7A7A7A7A7A7E7E7E5E5D848F8D95989C9E9EB2B2B29E9E9D979A988CCDCD + CDCD021F1F43534D4A48506E787CA58BAABB99AEAEBEBEBEBD9B9BB0B0BFBFBF + B0B0BDBFBDBDBDBDBDADADADA9A9A6A6A6A4A3A37F80757575736F6F6F6F6F6F + 4C4C4C4C4F204C4F6D202055555454556E54555420542054545555546E205454 + 20544F4F4F6D4C4C4C6F6F73757F92A99B9B9BAF9992978C8983795F5027295B + 267E7E5A7A7A7A7A7A7A7A7E7E5E5E5D5C8F9396989C9DB2B2B2B29E9E9D9C9A + 9898CDCDCDCD021F4343454D4B48506E788CA58092BBA7AEBEBEBE9BBD9BBFBF + BFBFB1BFBFBFBFB0BDBDBDBDBDADADADADA9A9A6A4A4A47F7F7B7B7573736F6F + 6F6F6F4C4C4C6D4C4C4C20204F202020546E6E6E545455555555556E55555555 + 205454545554546D4F4F4C4C716F6F737B7FA7AEAD9B9BAF99928BAB8983797D + 5C57575B5E5E7E7E7E7A727A727A7A7E7E7E5E84848E9396989C9EB2B2B2B2B2 + 9E9D9CAB988CCDCDCDCD021F4343456C48486E6E788C8BAAAC99AEAEAFBEBD9B + B0B0B0BFBFBFBFBCBCBFB0BCBFB0BDBDBDBDADADADA9A6A6A6A4A3A380807575 + 75736F6F6F6F6F4C4C4C4C4C4C4C204F4F2054204F5455555555555554555555 + 5555555455552020556E5420206D4C4C716F6F73757F92A99B9B9BAF9992A88C + 8983817D5C57575B7E7E7E7E7E7A7A7A7E7A7A7A7E5E5E5D848E9396989C9EB2 + B2B2B2B29E97979A9896CDCDCDCD021F4345454A48506E797C738BAAACA7AEAF + BE9B9BB0BFBFBFB1BCBCBCC0B1BCBCBCBCBCB0BDBDBDADADADADA6A6A4A4A47F + 7F7B7B7573736F6F6F6F4C4C4C4C4C4C4C6D20202055546E2055555455555420 + 55555554556E5555556E555520555420204F4F4C4C6F73737B7FA7AF9B9B9BAF + 99928BA58983817D5C56295B267E5E7E7A7A7A7A7A7A7A5A7E7E5D84848E9596 + 989C9EB2B2B2B29E9E9D97AB988CCDCDCDCD021F4345457448506E58718C8BAA + BB99AEBEBEBDB0BFBFBFC0BCC0C0B1C0C0C0C0B1C0BCBCBCBCBDBDADADA9A9A6 + A6A4A3A38080757575736F6F6F6F6F4C4C4C4C4F4F6D4F204F20202055556E55 + 555555555555555555555555556E6E556E54204F6D4F4F4C4C6F6F73757FA7AF + 9BB09BAF99AC8B8C8983817D5C565B53267E7E7E7A7A7A7A7A7A7A5A7E5E5E5D + 848E93969A9D9EB2B2B2B29E9E9D9A9A9896CDCDCDCD02435345534B50506E4C + 7CA580AABB99AFAFBEBDB0BFB1B1B1C0C0C0C0C0C0C0C0C0BCC0BCBCBCBDADBD + ADA9A9A6A4A4A3A3807B757573736F6F6F6F4C4C4C4C6D4F6D4C204F6E202055 + 556E5555546E55555555555555556E55556E55555420204F206D4C4C716F7373 + 7B7FA7AF9B9B9BAF99928B8C898381595C235B535E7E7E7E7A725A7A7A7A7A7A + 7E5E5E5D8F9493969A9D9EB2B2B2B29E9D9D9AAB8C96CDCDCDCD021F43454D4B + 505054587CA580AA99AEAFBEBDB0BFBFBFC0C0C0C0C0C0C0C0C0C0C0C0BCC0BC + B0BDBDADADA9A9A6A7A4A4A37F7B7B75736F736F6F6F4C4C4C4C6D4C4F204F4F + 202054205455546E556E55555555555555556E55556E5520546E2020204F4C4C + 4C7173737B7F99AF9BB09BAF99928B8C8978815027565B267E7E7E7A7A7A7A7A + 7A7A7A7A7E5E5E848F8E95969A9D9EB2B2B2B29E9E979AAB9696CDCDCDCD0226 + 53456C48505054587CA58092A7AEAFBEBDB0BFBFC0C0C0C0C0C1C1C1C1C0C0C0 + C0C0BCBCBDBDBDADADA9A6A6A6A4A37F807B757573736F6F6F6F4C4C4C4C4C4C + 6D6D4F206D2020545455545555555555556E5555555555555555555555542020 + 54204C4C716F6F75757F99AF9BB09BAF99AC8B8C89838159742953267E7E7E7A + 727A7A7A7A7A727A7E5E5E848F8D93989A9D9EB2B2B2B29E9E9C9AAB8C96CDCD + CDCD024325534B74506E4F4C7CA5809299AEBEBEB0B0BFC0B1C0C0C1C0C1C1C1 + C1C1C0C0C0C0BCBCBCBDBDADADADA6A6A6A4A3A37F7B757573736F6F6F6F6F4C + 4C4C4C6D4F4F4F20542054542055555454555550556E6E555555555555505555 + 552020204F4F4C4C717173737B7FA7AD9BB09BAF99AC8B8C8979815F74295326 + 7E7E7E7A7A7A7A7A7A7A7A7A7E5E5E5D8F9495969A9D9EB2B2B2B29E9D979A98 + 9889CDCDCDCD0226454D4A74506E5471738B7F92A6A9ADBEBDB0BFB1C0C0C1C1 + C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDADADA9A9A6A6A4A47F8080757573736F6F + 6F6F4C4C6D4C4C4C4C20204F2020205420555455555555555555555555505555 + 55505555542020544F6D4F4C716F73737BA399AF9BB09BAF99928B8C908A7D5F + 565729265E7E727A7A7A287A7A287A7A7E5E5E848F8D90969C9DB2B2B2B2B29E + 9D979AB89696CDCDCDCD0226454D4B74506E547889A5AA9299A9ADBDB0BCBCC0 + C0C1C1C1C1C1C1C1C1C1C0C0C0B1BCBCBCBDBDADADA9A9A6A4A4A3A3807B7575 + 736F6F6F6F4C6F4C4C4C4C4F6D20204F20555455555454556E55555555505555 + 505055555555555554206E204F4F6D4C716F6F737B7F99AD9BB09BAF92AA8B8C + 898A815F565726267E7E7E7A7A7A727A7A7A7A7A7E7E5D848F9395989C9E9EB2 + B2B2B29E9D979A989690CDCCCDCD0225534A4A74506E4F71898B7F9299AFAD9B + BFBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A6A4A37F + 807B7B7573736F6F6F6F714C4C4C4C4F4F4F4F20206E6E556E20545455555555 + 55555555555055505555505454542020204F6D4C4C6F6F737BA3A6AF9BB09BAF + 99AC8B8C7C8A7D5F5629535E7E7E7A727A7A282872287A7A7E7E91848F8D9598 + 9C9DB2B2B2B29E9E9D9A9A988C90CDCDCDCD02532545707450554F7873A5AA92 + B9AFBEBDBFB0C0C0C1C1C1C1C1C1C1C1C1C1C0C1C0BCC0BCBDBCBDADADA9A6A6 + A6A4A47F7F7B7575736F6F6F6F6F6F4C4C4C4F4F204F4F20206E555554545554 + 5455555055555055555050505555555555555520206D4C4C716F6F757BA3A6AD + B0B09BAF99AA8B8C838A7D50272953537E7E5A727A7A282828287A7A7E5E5E84 + 8F9395989C9EB2B2B2B29E9E9D9C9A8C9689CDCDCDCD025353221E50506E7971 + 6F8BAA92B9AFADBDBFC0C0C1C1C0C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBDBDAD + ADA9A9A6A4A4A3A3807B7B7573736F6F6F4C4C4C6D6D4C4C4F4F4F20206E5454 + 545554545555505055595555505550505559555554205420206D4C4C716F7375 + 7BA399ADB0B0B0AF99AA8B8983817D5C57235B5E5A7E7A7A7A7A7A28287A7A7A + 7E5E5D848F8A95989C9EB2B2B2B29E9D9DABAB969690CDCDCDCD0226234D225C + 59554F71738BAA92AEADADBDBFBCC0C0C1C1C1C1C1C1C1C1C1C1C0C1C0C0BCBC + BCBDADBDADADA9A6A6A4A3A3807B7575736F6F6F6F4C6F4C4C4C4C4C20202020 + 202054545454556E6E555055505550505055555055505555555554204F4F4F4C + 716F6F737BA3A6AD9BB09BAF99AA8B8C83815F5C5623537E7E7E7A7A7A827A28 + 2882287A5A5E5D848F93959A9C9EB2B2B2B29E9E9C9AAB969690CDCCCDCD0253 + 23234B7450545878738BAA92B9AFBEB0BCB1C0C0C0C1C1C1C1C1C1C1C1C1C1C0 + C0BCBCBCBCBCBDADADA9A9A6A6A4A37F7F7B757373736F6F6F6F4C4C4C6D4C20 + 6D4F6D20205454555454545555555550505550505055505055506E5555545420 + 204F4F4C716F73737BA399ADB0B19BAF99AA8B8983797D5C575D265E7E7E7A28 + 7A7A282828287A727E7E5D848F8D96989D9EB2B2B2B29E9D9C9A98B89090CDCC + CDCD022523234B5055545871737BAABBB9ADBEB0BFBFC0C0C1C1C1C1C1C1C1C1 + C1C1C1C0C0C0BCBCBCBDBDBDADA9A9A6A7A4A3A37F80757573736F6F716F4C4C + 4C6D6D4C204F6D6E20206E2020556E5550555550505550505955555055555555 + 55545420204F6D4C4C6F6F757B92A6ADB0B09BAF99AAA58C83817D74575D267E + 7E7A7A827A7A282828287A7A7E5E5D848E9396989D9EB2B2B2B29E9D979A9896 + 8983CDCDCDCD02264D224B50506E78718CA5AAA7AEAFBEBDBFC0C0C0C1C1C1C1 + C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6A6A4A37F7F7B7575736F6F6F + 6F6F4C4C6D4C6D4C20202054546E546E6E555555555550505050505055505955 + 55505555552055544F4F4C4C716F73737B92999BB0B09BAF92AAAB8983817D74 + 575B265E7E7E7A282828287A2828827A5A5E5D848E93969A9D9EB2B2B29E9E9D + 9CAB98968990CDCCCDCD025325224B7450554F7C738BAAA7B9ADBDBDBFBFC0C0 + C0C1C1C1C1C1C1C1C1C1C0C1C0C0BCBCBCBCBDADADA9A9A6A6A4A3A3807B7575 + 736F6F6F714C4C4C4C6D4F204F4F20556E545455556E55555555505959505950 + 505050555050556E556E2055206D4F4C716F73757BA3A69BB1B19BAF9997AB89 + 83795F5C575B5E7E7E7E7A28772828282828287A7E7E5D848F93969A9D9EB2B2 + B2B29E9D97AB98969090CDCCCDCD025353231E48507D587C898BAAA7B9AFBDBD + BCC0C0C0C0C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBDBCBDBDADA9A6A6A7A4A3A3 + 807B7575736F6F6F6F4C4C6D4C4C4F4F6D2020202054555454546E5059555050 + 505050505050595950505555556E6E206D6D6D4C6F6F6F737B92A9ADB0B1B0AE + 99978B898A817D5C575B5E5A5A7A7A82727A282828287A7A7E5E5D848F93969A + 9D9EB2B2B29E9E9D9A9A8C969083CDCDCDCD025B5B23487450544F7C738BAA92 + B9AFBEBDBFB1C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0C0BCBCBCBDBDADADA9A9A6 + A6A4A37F807B7573736F6F6F6F6F4C4C4C4C4F4F4F4F6E204F20555454555555 + 555550505050505050505050555555505555546E206D4F71716F6F758092AE9B + B0B19BAF92AAAB8983817D76535B265A5A727282282828287A777A7A7E5E5D84 + 9495969A9D9EB2B2B29E9E9D97ABB8968983CDCCCDCD022623234B4850555871 + 7C7BAABBAEAFBEBDBFC0C0C0C1C1C1C1C1C1C1C1C1C1C0C0C0BCBCBCBCBCBDAD + ADA9A6A6A6A4A37F807B7575736F6F6F714C4C4C4C4C6D204F205454206E2055 + 6E5555555050505050505050505050505055555555555420204F4F4C716F7375 + 7BA4A99BB0B19BAEBB97A58983815976575B5E7E7E7A7272282828282877287A + 7E7E5D848D93969A9D9EB2B2B29E9D9D9AAB96909090CDCCCDCD022625234B48 + 50554F7C898BAAA7B9AFBDBDBFBCC0C0C0C1C1C1C1C1C1C1C1C0C0C0C0C0BCBC + BCBDBDADADADA9A6A4A4A4A380757573736F6F6F6F4C4C6D4C4C6D4F4F4F5454 + 4F5520555555555550505050505059505050505950555055555554546E6D4F4C + 716F737580A4999BB1B19BAF9997A589587D5F275B5B5E7E7A5A287728282828 + 4E28287A7E7E5D618E95969C9DB2B2B2B29E9D979A9896898383CDCCCDCD0253 + 254D4A52506E5471898BAAA7AEAFBEB0BCC0C0C0C0C1C1C1C1C1C1C1C1C0C0C0 + BCC0BCBCBCBDBDBDADA9A9A6A7A4A37F807B7575736F6F6F4C4C4C6D4C6D6D6D + 4F2020546E5555555455505555505950505050505050505050505550556E5554 + 20204C4C4C6F6F758092AD9BB1B19BAF9297A589837D5C74295B5E7A7A727A7A + 28284E287A28287A7E7E5D848E95989C9DB2B2B2B29E9D9CAB989690908ACDCC + CDCD0226534B4B48505479718CA5A8A7B9AFBEBDBFC0BFC0C0C1C1C1C1C1C1C1 + C0C1C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F7F7B7575736F6F6F71714C6D + 4C4C6D4C6D202020542055556E55505955505050505050505050595050505955 + 555555546E4F4C4C4C6F73758092A9BDB1B19BAFACAAAB898A7D5C765D5E5E7E + 7A727A7A287777827A287A7A7A5E5D848E95989C9DB2B2B2B29E9D9C9A989690 + 908ACDCCCDCD0226252356485055547889A5AAACB9AFBEBDBCB1C0C0C0C1C1C1 + C1C1C1C1C0C0C0C0C0C0BCBCBCBDBDADADA9A9A6A7A4A37F807B7575736F6F6F + 71714C4C6D4F4F4F4F206E202055555455555555505055505050505050505059 + 505955555555556E6D4F4F4C716F737580A4A99BB1B19BAF92978C89587D5957 + 5D267E5A7A7A2828282828288228827A7E5E5D8F8D95989C9E9EB2B29E9E9D97 + AB8C96909083CDCCCDCD022653234A74506E4F787C7B7FA7B9AFBEBDBFBCC0C0 + C0C1C0C1C1C1C1C1C1C0C0C0C0BCBCBCBDBCBDBDADA9A9A6A4A4A3A380757573 + 6F6F6F6F4C4C4C4C4C4C206D2020552054556E6E555555555050505050505074 + 5250505059595550555454204F4F4C4C716F737580A4A9B0B1B1B0AE92978C89 + 837D59575D267E7A7A28287777827A607728827A7E5E5D619495989C9E9EB2B2 + B29E9D9A98988990838ACCCDCDCD022653232348505054786FA5AAACB9BEBEBD + BFBFC0C0C1C0C1C1C1C1C1C1C1C0C0C0C0BCBCBCBCBDBDADADA9A6A6A7A4A37F + 807B7575736F6F6F714C4C4C4F4F206D2054546E6E5454545555595050595050 + 50505050505024505050505555556E546E4F4C4C6F6F6F7580A4AD9BB1B19BAE + 9297AB898A7D5C765D5E7E7A7A282882822882828260287A7E5E5D8F8D95989C + 9EB2B2B29E9E9D9AAB968990838ACCCCCDCD025E265322525055547889A5AAAC + B9AFADBDBFBFC0C0C0C0C1C1C1C1C1C0C0C1C0BCC0C0BCBCBDBCBDADADA9A9A6 + A4A4A37F807B7575736F6F6F714C4C4F6D4F6D20202020206E5454546E555055 + 505050595050242450595059505059555055546E204F4C716F6F73757FA4A9B0 + B1B19BAEAC978C7C7959275D5B5E7E5A7A7A2882772860828228827A7E5E848F + 9395989C9EB2B2B29E9E9D9AAB969683838ACCCCCDCD02262653224848505478 + 7C75AA92B9AFADBDBFBFC0C0C0C1C0C1C0C1C1C0C1C0C0C0C0BCBCBCBCBDBDBD + ADA9A6A6A4A4A37F807B75736F6F6F71714C4C6D4C4F4F6D545420556E545555 + 556E55505050505924502450595074505050505055555555204F4C4C6F6F7375 + 7FA7ADB0B1B19BAEAC978C838A7D7457535E7E7A7A2828607760826060287A7A + 7E5E84619395989DC2B2B29E9E9D979A98968990838ACDCCCDCD022653532348 + 24506E7889A5AAACB9AFBEBDBFC0C0C0C0C0C1C1C1C1C1C1C0C1C0C0BCBCBCBC + BCBDADADA9A9A6A6A7A4A37F807B7575736F6F6F4C4C4C4C4F4F204F20542054 + 54205455555555595059595050502450525050505050505555556E54204F6D4C + 716F737580A7ADB0B1B19BAEAC978C9081505C5B265E5A5A7A7A778282606077 + 6060827A7E5E5D8F93959A9C9EB2B2B29E9D979A968990838A8ACCCCCDCD0226 + 53534A48525054787CA58092B9AFBEBDBFBFC0C0C0C0C0C1C1C1C1C0C1C0C0C0 + C0BCBCBCBCBDBDADADA9A6A6A4A3A37F807B7573736F6F6F4C4C4C6D6D4F4F20 + 2054545455555554555050595950505052507452742448505959505055556E54 + 204F4C4C6F6F6F757FA4ADB0B1B19BAE928B8C83815F5C57267E7E7A7A282882 + 828282608282287A7E5E848F93969A9D9EB2B2B29E9D979A989690838A8ACDCC + CDCD022626534D4B485054587CA5AAACB9AFBEBDBFBFBFC0C0C0C1C1C1C1C1C0 + C0C0C0C0BCBCBCBDBCBDBDADADA9A6A6A4A4A37F807B7573736F6F714C6D4C4C + 4C2020205555545454546E555555555059505050247450272424245024595050 + 595555204F6D4C71716F737580A7ADB0B1B19B99ACA88C83817D745B5E7E5A7A + 7A282828606060606060827A7E7E848F93969A9D9EB2B29E9E9D97AB96968983 + 8A81CCCCCDCD02265B53234B745054587CA5A8ACB9AFBEBDBFBFC0C0C0C0C0C1 + C0C1C0C1C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A37F807B7573736F6F6F + 4C4C4C4C204F204F202055545454555550555050502424245974745274522450 + 5924505050556E55206D4C716F6F737B7FA7ADB0B1B19BAEAC978C83815F565B + 5E7E7E727A8277776060606060607A7A7E5E848F93969A9D9EB2B29E9E9D9AAB + 969690838A81CCCCCCCD021F265B534B485054587CA580ACB9AFBEBDBFBFC0C0 + C0C0C0C0C1C1C0C0C1C0C0BCC0BCBCBCBDBDADADADA9A6A6A4A4A37F7B7B7573 + 736F6F6F4C4C6D4F4C6D4F20546E545555555555555550555059745250747424 + 527424745950505055555454204F4C4C716F73757FA7ADB0B1B19BAE928B8C83 + 815029535E7E7A72777782778260606060287A7A7E5E848F93969A9D9EB2B29E + 9E9C97AB9689908A8A8ACCCCCDCD021F2653234B485054787CA580ACA6AFBEBD + B0BFBCC0C0C0C0C0C1C1C0C0C0C0C0C0BCBCBCBCBDBDBDADA9A9A6A6A4A3A37F + 807B75736F6F6F714C4C4C4C20204F2055205455555555555555505050595052 + 50242424242452745050505055555520204F6D4C716F73757FA6ADB0B1B19B99 + AC8B8C837D5F7653267E7E7A82287777608260606028827A7E5E848F93969A9D + 9EB2B29E9D9D9A989689908A8A81CCCCCDCD022626255B4B745055787C73A8AC + B9AFBEBDBFBFBCC0C0C0C0C1C0C1C0C1C0C0C0C0C0BCBCBCBDBDBDADADA9A6A6 + A4A4A37F80757573736F6F4C4C6D4C4C4F206E20545520556E557D5555505050 + 505050507424245252242424505050505055556E6E6D6D4C716F737B7FA6ADB1 + B1B19BAEAA8B8C837D5C565B5E7E7E7228777760607760608260827A7E5E848F + 93989A9D9EB2B29E9D9CAB98968990838A81CCCCCDCD02262653232274505478 + 71A580ACB9A9ADBDB0BFC0C0BFC0C0C0C1C0C0C0C0C0C0C0BCBCBCBCBDBDADAD + ADA9A6A6A4A4A37F7B7B7573736F6F714C4C4C6D4C2020205420205555556E55 + 505050505959502474242424247452242424505059555454204F4C4C716F7375 + A3A6ADB0B1B19B99ACAB8C8A815C7653267E5A7277777760606060828260287A + 7E5E848F95969C9D9EB2B29E9D9C9A8C9690838A8A81CCCCCCCD0226265B2322 + 52507D587CA580ACB9AFBEBDBDBFBCC0C0C0C0C0C0C1C1C0C0C0C0C0BCBCBCBC + BDBDADADADA9A6A6A7A3A37F807575736F6F6F714C6D6D6D4F4F202020205554 + 55505555505050505050245924525224242424745250505050555554204F4C4C + 6F6F737B7FA6ADB1B1B19B9992AB89837D5C5753265A5A287728607760776060 + 82827A7A7E5E619493969C9D9EB29E9E9D97AB988990838A8181CCCCCCCD0249 + 265B534B2774555871A5A8AC99A9BEBDBDBFBFC0C0C0C0C0C0C0C0C0C0C0C0C0 + BCBCBCBCBDBDADADA9A9A6A4A4A4A37F7B7B75736F6F6F4C4C4C4F4C204F4F20 + 20205554556E5555595959502450505924245224502452522448245050505555 + 546D4F4C6F6F737BA3A6ADBCB1B1AF99AA9A89837D5C575B5E7E7A7A7A826060 + 827760606082827A7E5E849495969C9D9EB29E9E9D97988C9690838A818ECCCC + CDCD02262626234B745055797C73A8ACB9AFBEBDBDBFBCC0BFC0C0C0C1C0C0C0 + C0C0C0C0BCBCBCBCBDADADADA9A9A6A6A4A4A3807B7575736F6F71714C4C4C4F + 6D6D205420205420555455555050505024747424242424525252522424505050 + 505555554F4F4F4C716F737BA3A6BDB1B1B19B99ACAB898A7D5C57537E5A727A + 28776060827760826082825A7E5E848F95989C9E9EB29E9D9D9A98969090838A + 8181CCCCCCCD027E5E2625224B507D587C8CA8ACA7A9BEBEBDB0BCBFC0C0C0C0 + C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADA9A9A6A4A4A3A37F7B757573736F6F71 + 4C4C4C4F4F4F5420206E55545555556E50555924592459272424241E52215224 + 522450507D555555206D6D4C6F6F757BA3A6ADB1B1B1AF99AAAB898A7D5C5753 + 7E5A7A7A28776060828260826082827A7E5E849495989C9D9EB29E9E9D9A9896 + 90908A81818ECCCCCDCC027E26535B234B507D587173A8A3B9AFADBDBDBFBCC0 + C0B1C0C0C0C0C0C0C0BCC0C0BCBCBCBDBDBDADADA9A9A6A6A4A47F7F7B7B7573 + 6F6F6F4C4C4C4F4F4F4F20202020556E6E555555505950505059242724245252 + 2121485224245050505055544F4F4C4C716F737BA3A6ADB1B1B19B9997AB8979 + 7D745B267E5A727A776060776060886077607A7A7E5E849495989C9EB29E9E9D + 9C9A988990838A8A8181CCCCCCCD025A262625234B505079718C8BACBBA9BEBE + BDBFBCBCC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDADADADA9A6A6A6A4A47F80 + 7B7575736F6F71714C4C4F206D206E55556E206E54505055505950505C592424 + 2452524827211E522452505050505554544F4C4C6F6F737BA3A6BDB1B1B0AF99 + AAAB89795F5C5D5E7E7A7A77286060777760608860607A7A7E5E849495989C9E + C29E9E9D979A9896908A8A817D81CCCCCDCD025A1F535B4B48507D79718C8BAC + B9AEBEBDBDBFBFBFBFC0C0C0C0C0C0C0C0C0C0C0BCBCBCBDBDBDADA9A9A9A6A4 + A4A37F7F7B7B75736F6F71714C4C4F6D202020546E5555555055555050505074 + 7452242452525252521E52482474505050555554546D6D4C716F737BA3A69BB1 + B1B1AF99AAAB898A7D5C5D5E7E7A282877606060607760778260827A7E5E8494 + 95989C9E9E9E9E9D97AB969690838A81817DCCCCCCCD027E2653254D4B527D4F + 7C738BAAA7A9ADBEBDBFBFBFC0BFC0C0C0C0C0C0C0C0C0BCBCBCBCBDBDBDADAD + A9A6A6A6A4A4A3807B7575736F6F4C4C4C4C6D2054546E20556E545555555550 + 505059505052522448521E214821522724242450505555544F204C4C6F6F737B + 92A9ADB1B1B0AF99AA8C898A7D5C5D267E72828277776060608860608260777A + 7E5E849395989CC2C29E9E979CAB9690908381818E7DCCCCCCCD025A5E5B5323 + 4A5C50547C8C8BAAA7AEADBEBDBFBFBCBCC0C0C0C0C0C0BCC0C0C0BCBCBCBFBD + BDADADA9A9A9A6A7A4A3A3807B7575736F6F71714C4F4F4F4F206E5520545555 + 55555055505050245024244848521E52481E48524852505050505555204F6D4C + 716F737BA3A69BB1B1B09BBB97AB89815F765B267E7A28607760828288608860 + 7782287A7E5D618D95989DCA9E9E9E9D97AB9690908A81818E7DCCCBCCCD025A + 5E26535B4B745954788C8BAABBA9ADBDBDB0BFBFBCC0C0BFC0BCC0C0BCBCC0BC + BCBCBDBDBDADADADA9A9A6A4A4A37F807B75756F6F6F714C4C4F6D4F6D20206E + 6E556E555050505050505059272424522748212752481E521E74245050555555 + 6E4F4F4C716F757BA3A6BDB1B1B0AF99978C83815C765D5E5A7A286060828288 + 6088607760607A7A7E5E618D95989DC29E9E9D9D9A989690838A8A81817DCCCC + CCCD025A5A26262356485079718C8BA3BBB9AFBDBDBDBFBFBFBCC0C0C0C0C0C0 + C0C0BCBCBCBCBDBDBDADADA9A9A6A6A7A4A3A3807B7573736F6F714C4C6D4F4F + 202054546E555555555555505050507424242427522152525221525248525C59 + 50595555204F4F4C6F6F737BA3A6BDB1B1B0AF92978C83815C295D5E7E722877 + 60606060888288608260827A7E5D6194969A9C9D9E9E9D9C9A989690838A8181 + 7D8FCCCCCCCD025A5A2653234B747D54838C8BAABBB9ADBEBDBDBFBFBFBFBFC0 + BFC0BCBCC0BCC0BCBCBCBDBDBDADADA9A9A9A6A7A4A37F807B7573736F6F4C4C + 6D4C4F4F206E545454206E555050505050507474502448482421525248485252 + 52272474505555546E4F4F4C716F737BA3A99BB1B1B1AF998B8C90815C295B26 + 5A7A827777606088828288607760827A7E91618D96989D9E9E9E9D9C9A8C9690 + 8381817D7D7DCCCCCCCC025A7E4353532274505478898BAABBB9AFBEBDBDBFBF + BFBFBFBFC0C0C0C0C0BCBCBCBCBDBDBDADADADA9A9A6A6A4A4A37F807B75736F + 6F6F4C4C6D4C4F4F205454556E545555555050505024597452524852241E5227 + 7452521E52522424505055556E4F4F4C716F757BA3A99BB1B1B0AFBB978C8381 + 5C765B5E5A82772882886088888860778860287A7E5D6193969ACAC29E9E9D9C + 9A9689908A81817D7D7DCCCCCCCD027E7E2653235674506E7C898BAABBB9BEBE + BDBDBDBFBFBFB1BCBCBCC0C0BCBCBCBFBFBCBDBDADADADA9A9A6A6A7A4A37F80 + 7B7573736F716F4C4C6D204F205554556E6E556E555050595024507424521E74 + 48525621747421485248242450595055204F4F4C6F6F737BA4A9B0B1B1B0AF92 + 978C837D5C575B7E7E7A288277608288888860778282287A7E5D8F8D969A9D9D + CA9E9D9798989090838A8E7D7D5FCCCCCCCD025A5A265323565250817873ABAA + BBB9A9BEBDBDBDBFBFBFBCBFC0BCBCBCC0BCBCBCBFBDBDBDBDADADA9A9A6A6A4 + A4A37F807B75736F6F714C4C4F4F204F55545455556E55555559595050507424 + 24521E1E242756567448214821212424505055556E4F6D4C716F757BA3A9B0B1 + B19BAFBBA88C837D5C29537E7A28827782777777888888608282827A7E918F93 + 969A9DC29E9D9D9A989690838A818E7D5F59CCCCCCCC025A5A26265323485081 + 78898BAABBB9AFBEBDBDBFBFBFBFBCB1BFBCC0BCBCBCBCBCBCBDBDBDADADA9A9 + A9A6A7A4A4A37F807B7573736F714C4C4F20206D202055545454555555595050 + 505024745252212174481E5622527452525274242450555555544F4C716F737B + 92A99BB1B1B0AE928B96837D745D267E7A28778277608888888877607782827A + 7E5D8F93969A9D9D9E9D9C9AAB9690838A817D7D7D5FCCCCCCCD025A7E262653 + 234B50818389A5AABBB9AFBEBDBDB0BFBFBFBFBCBFBFC0BCBCBCBCBCBDBDBDBD + ADADA9A9A9A6A6A4A3A37F7B7B75736F6F71714C6D4F204F2054545454555555 + 555050505274242424522121564B524852522224212124245950555554204F4C + 716F7380A4A6B0B1B19BAFAC9A8C837D765D5B7E7A2882606060888588888888 + 8877827A5E918F93969A9D9EC29D9C9A9889908A817D7D5F7D5FCCCBCCCD0272 + 5A2626535774597D7889A5AABBB9AFBEBDBDBDBDBFBFBFBFBFBCBFBFBCBFBCBD + BFBDBDBDADADADA9A9A6A7A4A4A37F80757573736F714C4C4F6D202054205520 + 205555555950502424242452245252272752487474272152521E522424505555 + 55544F4C4C6F737BA4A9BDB1B1B0AFAC8B898A5F5C5D5E7E5A82826088888888 + 888888886060777A7E848F93989A9D9D9D9D9C9A9896908A8A817D7D7D5FCCCC + CCCD02727249265B4D56596E787CA5AABBB9A9BEBEBDBFBDBDBFBFBFBFBFBFBC + BCBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A37F807B75736F6F714C4C4F6D204F + 545555545555555050505024502424521E5274564848562752212152521E5224 + 5050555555544F4C6F6F737BA4A9B0B1B1B0AEAC8B898A7D765D5E7E7A7A8277 + 77607788858888886060827A7E918F93969C9D9D9D9D9C9A9690908A81817D5F + 5F74CCCCCCCC025A7E5A26535722507D7889A5AA92B9AFBEBDBEBDBDBFBFBFBF + BFBFBFBFBFBFBFBFBDBDBDADADADA9A9A6A6A4A4A4A3807B7B75736F6F714C4C + 6D4F20206E545455555550505024245050747452747448564B744856524B5622 + 212452242450505554206D4C716F738092A9B0B1B19BAEAC9A89795F5C5B265A + 8277777777888888858888606060287A7E848F93989C9D9D9D9C9C989690838A + 817D7D5F5F5CCCCCCCCC025A497E26535D56747D7889A5AABBB9AFBEBEBDBDBF + BDBFBDBFBFBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9A6A6A4A3A380807575736F + 6F4C4C4F4F204F2020545555556E505050245074742474522152522756524874 + 2227485252525224505055552054544C716F737BA4A99BB1B19BAEACAB89795C + 565B5E7E7228608288518888888888888882827A7E918F93989ACA9D9D9C9A98 + 9690838A817D8F5F5F5FCCCBCCCC027A5A7E265B235750545889A5AAACB9AEBE + BEBEBDBDBFBDBFBFBFB0BFBFBFBDBFBDBDBDADADADADA9A9A6A6A7A7A37F7F7B + 7575736F714C4C4C6D6D54545455555455555550505024592424525227527448 + 2748524852274856277452525250506E55204F4F716F738092A9B0B1B19B99AC + AB89815957535E492877777760888888515188886060827A5E919495989C9D9D + 9D9C9A989690838A8E7D5F5C595CCCCCCCCC027A5A5A2653234B527D7989A5AA + 92B9A9BEBEBDBDBDBDBDBFBFBFBFBDBFBFBDBDBDBDBDBDADADADA9A9A6A6A7A4 + A3A3807B7B756F6F714C4F4F6D4F6E2055555555555555555959485024524848 + 5221564B2227522221524822275252522459505554544F4F6F6F7580A4A9B0B1 + B19BAEAAAB89815C575E5E5A7282607788888888888888886082827A5E848F95 + 989C9D9D9D9C9A9896908A8A8E7D7D5F5C5CCBCCCCCC027A727E26532356747D + 787CA5A8ACB9AEBEBEBDBDBDBDBFBDBDBFBFBFBFBFBFBFBDBDBDBDADADA9A9A9 + A6A6A7A4A3A3807B7B73736F6F4C4C4C20205420545455555550505050507424 + 27484821484856527452222174484B524852487424505055556D4F4C716F757B + A4A9B0B1B19B99AAAB90795C575D5E7A7A826077888888518588518888827A7A + 7E849495989C9DCA9D9C9A9890908A817D5F5F5C5C5CCCCCCCCC027A725A1F26 + 5356747D5889A5A8ACB9A9AFBEBEBDBDBDBDBDBFBDBFB0BFBDBDBDBDBDBDADAD + ADADA9A9A6A6A4A4A37F807B75736F6F714C4C4F20206E6E5555555555555050 + 50502424245227525652525248484B22224B5674522148742424505555544F4C + 716F7580A4A9B0B1B19B99AAAB90795C575B5E72827777888888888885888888 + 88607A7A5E849495989C9C9D9D9A9A98908A8A8E7D7D5F5C5C5CCCCCCCCC0228 + 5A5A1F265357747D587CA5A8ACB9AEBEBEBDBEBDBDBDBDBDBDBDBFBDBDBFBDBD + BDBDBDADADA9A9A6A6A7A4A3A37F807B75756F6F714C4C4F204F546E55556E55 + 5559505024747424525221485221214B22214A22224822275648525252505555 + 55544F4C716F7380A4A9B0B1B09B99AAAB90815C295E7E7A8277777788888888 + 888888888882827A5E848E95989C9D9D9C9A9896908A8A817D5F5F595C5CCCCC + CCCC025A725A1F2653297450797CA5A8ACB9A9AFBEBEBDBDBDBDBDBDBDBDBDBD + BFBDBDBEBDBDADADADA9A9A9A6A6A7A4A37F7B7B75736F6F714C4F4F20542055 + 55556E555555555059745024274848272148214B221E4A224B2222274B4B5224 + 2450505555204F4C716F7380A4A9B0B1B19B99AAAB907D5C76265A7228777788 + 778888858888888860827A7A7E849495989C9D9D9C9A9896908A8D8E7D5F5C59 + 5C5CCCCCCCCC0272725A7E2653577450797C8CA8ACA7A9AFBEBEBDBEBEBDBDBD + BDBDBDBDBDBDBDBDBDADBEADA9A9A9A9A6A6A7A3A37F807B75736F6F714C4C4F + 4F6E54546E6E5555555050505050242452527456274821224B1E22224A221E22 + 2752525224595050554F6D6D716F7580A7ADB0B1B1AF99AA8C837D5C5D5E7E7A + 2860888888888885858888886060827A5E849495989C9C9C9C9A9896908A8A7D + 7D5F5F595C5CCCCCCCCC027A7A5A7E2653237459797C8CA8ACBBAEAFBEBEBDBE + BDBDBDBDBDBDBDBEBDBDBDBDBEBDADADA9ADA9B9A6A4A4A3A37F807B75736F6F + 714C4F6D4F205554545555555050505052242452525274565648481E4A224B22 + 4A4A2248275252522450505555544F4C6F6F7380A4A9B0B1B09BBB978C837D5C + 5D5E7E728277778888858885858888858877827A5E619495989C9D9C9C9A9696 + 907981817D5F5F5C5C5CCCCCCCCC0228725A7E265B23567D79838C8BACBBB9AF + BEBEBEBDBDBDBEBEBDBDBDBDBDBDBEBDBDADADADA9A9A9A6A6A4A7A37F7F7B75 + 75736F714C4C6D4F205455555555555555505050242474521E521E4B561E211E + 1E4B4A2222562221214821212459505055204F4C716F7580A4A9B0B1B09B9997 + 8C835F765D5E5A7A8277888888858585858588886082607A5E619396989C9C9C + 9A9A9690838A817D5F5F5C5F5C5CCCCCCCCC02287A727E265323747D797C8CA8 + AABBB9AEAFBEBEBEBEBDBDBDBDBDBDBDBDBDBDBEADADADADADA9A6A6A6A7A4A3 + A380807575736F6F4C4C4F4F4F5454546E55555550505950502448742156481E + 4B1E2222561E1E4A22222222224848485250505555204F4F4C6F7580A4A9B0B1 + B0AF99978C8A7D745D7E7E7A7777778888858585858588888882827A5E849495 + 989C9C9C9A9896908A8A8E7D5F5F5C5F5C5CCCCCCCCC0228285A5A26264D565C + 81788C8BBABBB9AFAFBEBEBDBEBDBEBDBDBEBDBDBDBDBEADBDBEADA9A9A9A9A6 + A6A4A4A37F807B7575736F714C4F6D6D545455556E5550555050745024525252 + 52225248214A1E1E4A22524B2222224A2252275252595055556E204F716F7580 + A4ADB0B1B0AFBB978C837D765B265A7277607788858888858585858588827A7A + 5E849396989C9C9A9A9896908A8A815F5F5F5F5F5C5CCCCCCCCC022828724926 + 535B575079838C8BAABBB9AEAFBEBEBEBDBEBEBDBDBEBDBEADBEBDADBEADBEAF + ADA9B9A6A7A4A4A37F807B75756F6F714C4C4F4F545454545455505050594874 + 522452482727221E224A1E4B4822234D22224A4A225256564859505055546D4F + 4C6F7580A4ADB0BCB0AF9E97968A5F5C5B7E7A60826088888885858585858588 + 88827A7A5E619395989C9C9A989896908A817D5F7D5F5C5C5C74CCCBCCCC0228 + 827A5A26265B56597D788C8BAABBB9AFAFBEBEBEBEBEBDBEBEBDBEBDBEBEADAD + AFADA9A9A9A9B9A6A7A7A4A37F807B7573736F714F4C4F4F2054205555555055 + 5024507424525252522127524B222223224B4B22234D222222484B4852505050 + 55544F4F716F757FA4ADB0B1B0AF92978C8A5C295B7E72827760778888888586 + 858588888882827A5E619396989C9C9A989696908A817D5F5C5C5C747474CCCC + CCCC022828725A1F535B57506E838C8BAABBB9AEAFBEBEBEBEBDBEBDBEBEBDBE + BDBEAFADADAFADA9A9A9A6A6A7A4ACA37F807B75736F71714C6D6D4F4F206E55 + 5555505559505050244852485622272122221E4A575722222257222256224B1E + 482459555555544F4C6F757FA4A9BDB1B0AFBB8B89795C575E7E7A7760608885 + 858585858585858888827A7A5E8F9396989A9C9A989690938A8E7D7D5C5C5C5C + 5C5CCCCCCCCC022872285A7E265B5750817889A5AABBB9AEAFBEBEBEBEBEBEBE + BEBEBEBEBEADBEBEADADA9A9A9A9B9B9A7A7A3A37F807B7573736F714C6D4F6E + 545454555555555050502424745252524822221E22224A22224A234A4B232222 + 2256561E2450505055204F4F4C6F7580A7ADB0B19BAFACA8968A5F295E7E7A77 + 7777888885858585858585856082827A5E619396989A9C989896908A8A817D5C + 5F5C5C745C5CCCCCCCCC0228287A5A5A2625575C7D838C8BAABBB9AEAFAFBEBE + BEBEBEBEBEBEBEBEBEBEADA9AFADA9A9A9B9A6A7A7A7A3A380807B75736F6F71 + 4C4F6D206E545555505550505024505974245252521E52574A4A574B4A4A2322 + 4A23224B4A221E527450505055544F4F716F757FA7A9BCB1B0AFAC8B89795F57 + 267E7A2860888585858585858585858588827A7A91619396989C9A9A9896958A + 81817D5F5F5C5C5C5C74CCCCCCCC027728285A5A265B575C7D78B8A5AAACB9AE + AEAFAFBEBEBEBEBEBEBEBEADBEADAFA9ADA9AFA9A9B9A6A6A7A4A37F7F7B7B75 + 736F71714F4F4F545454556E50555050505274245248484B561E211E4B22224A + 4B2222224A22234D221E48271E4850505555204F4C6F757FA7ADB0B09BAFAC8B + 89815C575E7E7A6060888885858585868585858888607A7E5E8F9396989A9A98 + 9696838A8E7D5F5F5C5C5C5C7674CCCCCCCC0228287A727E265B575C7D7889A5 + AAACBBB9AEAFAFAFBEBEBEBEBEBEBEAFADAFBEBEA9A9AEA9A9A6A6A7A4ACA3A3 + 807B75A5736F714C4C4F4F545454545555505050505052525252527456222222 + 23224A4A2223234B5722574A4B4A4A5648485059552020204C6F757FA7ADB0B1 + 9BAFACAB89815C5D5E7A7A286077888586858585868585886060827A918F9396 + 989A9A9896908A8A8E8E5F5C5C5C5C5C7476CCCCCCCC027772285A7E1F5B5774 + 7D8389A5A8ACBBB9AFAEAFAFBEBEAFBEBEBEBEA9BEADA9A9A9A9A9A9A6A6B9A7 + A7A4A37F807B7B73736F6F4F4F4F4F6E55546E50555550502474505248485274 + 224A4A22225622222323226C7023232223564A48482450505555204F716F757F + A4ADB0B19BAEACAB90815C5D5E5A7A7777888585858586858686858888607A7E + 5E8F9396989A989896908A81817D5C5C5F5C5C275627CBCCCCCC024E77285A5A + 265323567D7989A5A8ACBBAEAEAFAFBEAFBEBEA9BEBEAFBEBEA9AFA9AFA9A9B9 + B9A6A7A7A7A3A3AA807B7573736F71714C4F4F4F55556E6E5055505924242452 + 484B2756221E22564A4B2270704B4B562223224A4B224B5674245050506E6E4F + 4C6F757FA7ADB0B09BAEACAB90815C575E7A8260778885858585858685858585 + 88607A7E91619398989A9A9895908A8D817D5F5C5C5C5C575657CCCBCCCC0277 + 77287A5A262623747D8A89A597ACBBB9AEAEBEAEAFAFBEAEBEAFBEA9A9AFA9A9 + A9AEB9A9A6B9A7A7A3A7AA7F808B75736F6F714F4F6D4F54556E6E5555505050 + 50525248485652486C4A4B221E4B4A2323224B5622222222234A225648522450 + 5055204F4C6F757FA7ADB0B09BAEAAAB897D5C535E7A77608288888585868686 + 858585858860827E916195969A9A989896908A8E7D5F5F5C745C5C567684CCCC + CCCC026028285A5A1F2653767D797CABA8ACBBB9B9AFAEBEAFBEAFAFBEA9AFBE + AFAFAEA9B9A9A9B9B9A7A7ACA7A3A3AA807B758C736F714C4F4F54546E555550 + 55505059505252525221524B4A23234A4A22224A222223295656574B224A4A27 + 522450505555206D4C6F757FA7ADB0B09BAEAAAB907D5C5B495A827760888585 + 858586868585858888827A7E919493989898989690838A8D8E5F5F5C5C275629 + 5657CBCCCCCC02607728285A5A265B76507989A5A8AABBB9AEAEAFA9AFB9AEBE + AEBEAEA9A9A9A9A9B9A9B9B9A6A6A7A7A3A3AA80807BA5736F6F784C4F546E6E + 545555555550505024244821221E52564A2256232222232323235723564B5723 + 23232248525224245555204F4C6F757FA7ADB0B09B99AAAB837D5C5B7E5A7A82 + 88858585858686868686858588607A7E919495969898989690958A8E8F5F5C5C + 5C7476575629CCCBCCCC0260282828725A265B565979838CA8ACBBBBB9AEAEAE + AFAFBEAEBEAEA9AEAEAEA9B9A9B9A6B9A7B9BBA7ACA37F808B7575736F71714F + 4F6D546E555555555050505250527474745222224B222222224A4D2322572223 + 232322232223221E272724505055206D4C6F757FA7ADB0B09B99AA98907D7626 + 7E7A827788888585868686868685868888607A7E918F959698989896908A8A8E + 7D5F5C5C5C5656575729CCCBCCCC026060287A5A5A265356507989A5A8ACBBBB + B9B9B9AEAFAEAFA9AFA9AFAFA9A9AEA9B9B9A6B9B9A7A7A792A3AA807B8B7373 + 6F6F4C4C4F4F5454555559505050502424485274524822564B222256234A4D23 + 22225623232323234A224B1E215224505555544F4C6F757FA7ADB0B09B99978C + 835F27267E7A777788888585858686868685868588827A7E9194959898989896 + 908A817D5F5F5C5C842757575729CCCCCCCC02606060285A1F2653575C7983A5 + A8BAACBBB9B9AEAEAEAEA9AEAEAEAEAEAEA9A9B9B9B9B9B9BBA7A7ACA3A38080 + 8B75A5736F71714C4F545455555555505050747474482756524A222222224B4D + 4A56232323222323232229574A22224A52527450555554204C6F757FA7ADB0B0 + BE99978C837D295E7E7A77608885858586868686868685858882827E848F9596 + 98989695908A8E7D5C5C5C5C5C2757222323CBCBCCCC02607777285A5A265B57 + 5C81838C8BAABBBBB9B9B9AEAEAEAEAEAEAEAEAEA9AEAEB9B9B9B9B9B9BBA4A7 + A3AA7F807B75736F7C71714F4F206E5555555550505074747448274B524B2223 + 4B2322234D23232322232323222223232222561E522774505055544F4C6F757F + A6ADBDB09B99978C838F575E7E72606051858586868686868686858560607A7E + 9194959698989696908A8E8F5F5C5C5C5C5757232329CBCCCCCC026028827A72 + 5A5E53575C797C8CA8BAACBBBBB9AEB9B9AEAEAEAEB9B9B9B9B9B9B9B9B9A7BB + A4A4ACA3AC7FAA8BA5A573736F714C4F6D4F546E555550505074247452485248 + 564A56232356564D232329232323575D572257222223221E74524850556E544F + 4C6F757FA7ADB0B0AF99978C8A5C575E5A7A6088888586868686868686868685 + 60827A7E9194959696989695908A8E5F5F5C5C5C565729232929CBCBCCCC0277 + 60777A7A5A2653575C81838CA5BAACBBBBB9B9B9B9B9B9AEAEAEB9AEB9B9B9B9 + B9B9BBA7BBA7A7ACA37F807B7B75A57C6F71714F6E54556E5550505050502452 + 52565648224A22232322222323572323232323572323292223224A224B482450 + 5555556D4C6F757FA6ADBDB0AF99978C8A5C5B5E5A7A82888885858586868686 + 8686868888827A7E84949596989696958A8A8E8F5C5C8456562729292329CBCB + CCCC0260602828725A1F26575C7D838CABBAACBBBBB9B9B9B9B9B9B9B9B9B9B9 + B9B9B9B9A7B9A7B9A7BBA3ACA3AAA880A575736F71714C4F5454545550555050 + 505252522722272221224D57574A2323235723292323235B5B29232357572222 + 4B4824505555554F4C6F757FA6ADBD9BAF999A968A5C5D5E7228775188868686 + 868686868686868588607A7E61949596969696958A8E7D5F5C5C277657562729 + 2929CBCBCCCC02606060285A7A5A26235C7D83B8ABBABAACB9BBB9B9B9B9B9B9 + B9B9B9B9B9B9B9B9B9BBBBA7ACA7ACA3AA7F808B75A56F6F6F71584F546E6E55 + 5050595950247474222152224B4A225622232223232325235323252323232329 + 23574A221E52245050556E6D4C6F757FA6ADBD9BAFBB97968A5C5D7E7E287760 + 88858686868687868686868588827A7E61949596989695958A8D8F5C5C747627 + 275657292929CBCBCCCC0260606082725A5A265B5C7D8389ABBAACBBBBBBBBB9 + B9B9B9B9B9B9B9BBB9B9BBBBA7BBA4BBA7A3ACAAAA80A87BA573897371784F4F + 6E545555505050597452485652524B2221224B22222223572323234D5B5B2325 + 2323235723232323482724595055204F4C6F75A3A6ADBD9BAFBB9789815C5B7E + 7A82828885858686868786878786868588827A5E84949596969690938A8E5F5C + 5C842956572923235B57CBCBCCCC0260606077287A5A7E535C7D838CA5A8BAAC + BBBBB9B9BBB9B9BBB9B9BBB9B9B9BBBBBBA7ACA7ACACACA37FA8807BA573736F + 7178784F5454555555505050245274275248481E4B4B222323235757235B2323 + 5B29232553235B232323224A48224850505555204C6F757FA6ADBD9BAFAC9A89 + 815C535E7A82608885858686868787868686868888827A918494959696959090 + 8A7D5F5C5C272756572929295B5BCBCBCCCC0260606077285A5A2653767D8389 + ABA8BAACBBBBBBBBB9BBB9B9BBB9B9BBBBBBBBBBA7BBA7ACA3ACAA7FBA808B7B + 758C736F7171584F545550555050597452527474524B2222704D22222357235B + 5B2323235B5B232323232329232323221E4852245055554F4C6F75A3A6ADBD9B + AFAC8B90815C5D7E7A60778885868686868687878686858888827A7E61949596 + 969695958D8E5F5C5C565656292929295B5BCBCBCBCC027760777728725A5E53 + 765F7989A5A8AAACACBBBBBBBBBBB9BBBBBBBBBBBBBBA7BBBBACA7ACACA3AAAA + 7F808BA5A573897C71784F545455555550592474745252522222222222222323 + 2323235B23235B53235B5B5B295B235B23234B224A5252245055544F4C6F75A3 + A6AD9B9BAE929A89815C5B7E8282778585868686878787868686868588827A5E + 619395969595958A8D7D5C5C5C845C57572329235B5BCBCBCCCC028877606028 + 7A5A7E535C5C8A89ABA8BABAACACBBBBBBBBBBBBBBBBBBBBBBBBBBA7ACA7ACAC + A3ACAAAA80A87BA573737C7C71784F4F6E545550507474745227524B1E212222 + 4D23234D2323232325535B53535B5B5B5B26235B29224D22222152505055544F + 4C6F75A3A6AD9B9BAEACAB898D5C5E7E28778851858686868787878787868685 + 88827A91619495959695938A8D5F5F5C27275757292929535B29CBCBCCCC0288 + 776077287A721F5B567D8189B8A8BAACBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB + A7ACACA3ACAAAA80A87B8BA5A5737C7171784F5454555550505048747456564B + 4B48224B6C4B222323292323535B5B29535B25255B5B5B5B23234D6C21524850 + 505555204C6F75A3A6ADBDBEAE9DAB907D765B7E7A7760858586868687878787 + 8786868588827A91619395959695958A8E5F5C5C8427575723295B255B5BCBCB + CCCC02886060772828724926575F8A89ABABBABABAACBBBBBBBBBBBBBBACBBBB + ACBBACACACACACACA3AAAAAA808BA5A5738C7C7C785879546E6E505050507474 + 52215222564A234B4A4D2323235B23535B5B25252525255B255B532323232323 + 225624595055546D4C6F75A3A6ADBD9BAEACAB908E765E5A8260608886868686 + 878787878786868588827A5E6194959595958A8D7D5F5C5C2756225729295B25 + 5B5BCBCBCCCC028888606028287A5A5E765C8A898CA8A8BAACACACBBACBBACBB + ACBBBBACBBACACACACACA3AAAABAAAA88B8BA5B873897C714C4F795455555550 + 7450522452521E22224A4A5757235323292525255B255B2625255B5B255B5B23 + 23232323224B525250556E4F4F6F75A3A6AD9B9B99AC98907D295E7E7A778885 + 85868687878787878687868588827A91619495959595938A8E5F5C5C27575757 + 29295B5B235BCBCBCCCB0288606077777A7A7E5E5D5C81908CA8A8BABAACACAC + BBACACACBBACACACACACACACACACAABAAA7FAAA88B8BA5A5737C7C7C78786E6E + 6E5550505074525652274A4D224A1E23232329235B2353255B535B53265B5B5B + 2626255B5B23234D4B2252745059544F4C6F75A3A6AD9BBE99AAAB837D765E72 + 7777888585868787878787878786868588827A91619395959593938D8F5F5C27 + 5757235B292925292329CBCBCBCC02886077777772725A26575C8190B8A8A8BA + BABAACACACACBBACACACACACACACBAACACAABAAAAAA8A88B8B8BA5738C7C7C78 + 714F796E6E505059747452212756224A22222223232229252353235B5B53535B + 2625255B53265B53535B2357702221245059556D4C6F75A3A6AD9BBE99AA988A + 5F575E7A286088858686878787878787878686858860825E6193939595938A8D + 5F5C5C27575D29295B23295D5B29CBCBCBCC02888860776028725A7E5D5C7D83 + B8ABA8BABAACBAACBAACACACBAACACACBAACACAAACAAAABAAAA88BA88BA5A5A5 + 6F7C6F717879546E5550505074525656225622225623235723232323535B535B + 255B5B26532626265326255B5B2323234A1E21745050546D4C6F75A3A6AD9BBE + 99978C8A5F297E7A8277888586868787878787878786868588827A9161949595 + 95938D8E5F5C5C7657292929295B25235B5BCBCBCBCC02888877608282285A5E + 5B5C8183B8ABA8BABABAACBAACACACACACACACBAACBAAABAAAAAAAAA80A88BA8 + 7BA5A5A5897C7C78584F54545059507452524B524B224B222222564D575B2325 + 53255B252626262625532626265B265B232323234A1E48745055556D4C6F75A3 + A6AD9BBE99978C8A5C5D5E7A7777888586868787878787878786868588827E91 + 6193959595938D8E5F5C5C76232929235B5B255B5B29CBCBCBCC028888606077 + 287A7A7E5B5C8190B8ABABA8BABABABABABABABAACBAACBAAAAAAAAAAABABAA8 + A8A8A88BA5A5A58C6F7C7C78784F81557D50745C52525252222222564B4D2323 + 5729235B5B5B5B53262626262626262626265326252323234B48484850555420 + 4C6F75A3A6AD9BAF99978C8A5C5D5A7A77888586868787878787878787878685 + 88827A918F939395938A8D5F5F745C272729295B5B235B295B5BCBCBCBCC0285 + 88886060287A5A7E5D847D8389ABA8A897BABABABABABABABABABABABABABABA + AABAA8A8A88B8B8BA5B873898C7C7178784F6E55505950527456525652222323 + 56234B2323235B5B5B5B5326265B2626262626265B2653255B2329234D4A7448 + 5050554F4C6F75A3A6ADBEAF99978C815C5D7E7A776085858687878787878787 + 8787868588827E918F949395938A8D5F5C5C5629292329255B295B265B5BCBCB + CCCB028588886060287A727E5D5C7D8A96B8A8A8BABABABABABABABABABABABA + BAAABAA8AAA8A8A88BA8A8A5A5A5A5B87C7C837879547D555074507456744B22 + 23224B2223235723235B5B5B5B5B5B2626262626262626262626265B25532923 + 4D4B52525055554F4C6F75A3A6ADADAF929789815C5E7E7A7751888586878787 + 874787878786868588827A9161949395938D8F8F5C2729292329295D5B255B5B + 2526CBCBCBCC0285885188606077727E5E847D8AB8ABA8A8A8BABABABABABABA + BAA8BABABABABAAAAAA8A8A8A8A88BABA5A5B8737C7C787878546E7D59244874 + 5674222223224B572357235B5B295B53535B2626262626252626262626262626 + 25232323222221527455556E4C6F75A3A6ADBEAFBB9796795C5D7E7A77888586 + 86878787878787878786868588827E9161949393938D8E5C5C27272723295B29 + 295B26252525CBCBCBCB0285858860606028725A26767D8A90B8ABA8BAA8BABA + BABABAA8BABABAA8BABAA8BAA8A8A8A88BA8A5A5A58C73897C7C785879547D7D + 50747452525222224A4B232323232323535B5B5B262626262626262626262626 + 2626262625252322704A22245050556E4C6F7BA3A6ADADAFBB9789815C5D7E82 + 7760858686878787878787878787868588827E9161939393938E7D8F5C5C2729 + 292925295B53535B265BCBCBCBCC02858885606060827A5A26765F8A90B8ABA8 + A8A89CBABABABA97BAA897BAA8A8BAA8A8A8A8A8A8A5ABA5A58C8C897C837879 + 5454505050747456564B4A226C57234D2323295B5B25255B2626262626262626 + 26262626262626265B5B232223225252485055204C6F75A3A6A9ADAE92A8898E + 765E7A827788858687878787878787878787868588827E918F949393938F8F5C + 5C7657292923235B25535B535B25CBCBCBCB0285888860606082285A5E767D8A + 90B8AB9AA8A8A8A8A8BAA8BABAA8A8A8A8A8A8A8A8A8A8AB8BABA5A58C8C8C7C + 7C837879797D55595C745656564B704A2223234D5B255B5B25255B2626262626 + 262626262626262626262626262529294D4B2152505055544F6F75A3A6ADADAE + AC8B897D765E7E827788858687878787878787878787868560827E916194938D + 8D8E8F5C84275723295B5B5B255B26535B26CBCBCBCB0285518888887782285A + 5E5D5C8D90B8B8ABA8A8A8A8A89AA8A8A8A8A8A8A89AA8A8ABA8ABA8ABABA5A5 + B88C7C897C787879545450507448485648222323235753535B5B23255B262626 + 262626262626265E262626262626262526255B5B574D1E245250554F4C6F75A3 + A6AFAFAE929A908D845E7A777785868686878787876287878787868588827E91 + 8F9494938D8F8F5C5C292929295B265B255B265B5B26CBCBCBCC028585856060 + 7728827A5E5D8F8D90B8ABA8ABA8A8A8A8A8A8A8A89CA8A8A8A8ABA8A8ABA8AB + A5ABA5B88C8C897C837878797D7D5074745648562222222223232323535B2325 + 5B5B2626262626267E26265E5E5A26262626262626532329234D565224505554 + 6D6F75A3A6A9AFAEACAB907D845E7A6060858686878787878747878787878685 + 88827E918F9494938D8F8F5C7457295B29255B5B25255B265B26CBCBCBCB0285 + 8588886060777A5A7E5D5C819096ABABA89AA89AA8A8A8A8A8A8A8A8ABA8A8AB + A8ABABABABB8A5A58C8C89897C7879796E7D5C507456565656222223235B2323 + 5B5B255B5B26262626262626265E7E2626261F261F2626262625232323221E52 + 74505554786F7BA3A6A9AF99ACAB905F5D5E7A82608586868787878787878787 + 8787868588827E91619494948E8F8F5C5629295B295B5326262526535326CBCB + CBCB0285858588606077725A7E5D848D8396B898A8A89AA8A8A89A9AA89AA8A8 + A8A8A89AABA8ABABABA5B8B88C898989837878796E505050742756271E224B23 + 2323295B5B5B255B26262626262626267E26265A267E7E2626262626265B2523 + 2322215274505554586F7BA3A6AFAF99ACAB908E295E7A776085868687878762 + 878762878787868588827E916194948D8F8F845C57295725235B5B5B5B262626 + 265ECBCBCBCB0285858888887760287A5E5D5CB79590B8ABA8AB9AABA8A8A8A8 + 9AA8ABA8ABA8ABA8ABABABABB8A5A58C8C897C83837879547D505074744B5622 + 4A5623232329235B5B535B262526262626267E26262649267E5A267E265E2626 + 2626532522572252505055544C6F7BA3A7A9AF99AAAB905F5D5E7A8288858687 + 87878787876287878787868588827E91619494948E5C5C5C2757295B5B5B265B + 26265B5B2626CBCBCBCC0285858588887760287A7E5D848D9096B8ABABA89AA8 + 9A9A9A9AA8A8A8A8A8ABA8ABABABABABABAB8C8C8C898983837879547D7D5C74 + 744B224A222223234D2323535B25262626262626262626267E5E1F5E5E7E5A26 + 26262626265B5B2323222248505055544C6F7BA3A7A9AF99AAAB908F5D5E7A60 + 8885868687878787478787878786868588827E91618F94948E8F5C5C5757295B + 5B5B5B5B2626265B2626C2CBCBCB} + WaterMark.Image.Layout = ilTile + object Label6: TLabel + Left = 176 + Top = 312 + Width = 219 + Height = 13 + Caption = 'Haga click en Finalizar para salir del asistente.' + end + object Label7: TLabel + Left = 168 + Top = 88 + Width = 155 + Height = 16 + Caption = 'Por favor, elija una opci'#243'n:' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + end + object bImprimir: TButton + Left = 352 + Top = 112 + Width = 150 + Height = 25 + Caption = '&Imprimir las etiquetas' + TabOrder = 0 + OnClick = bImprimirClick + end + object Button2: TButton + Left = 184 + Top = 112 + Width = 150 + Height = 25 + Caption = '&Vista previa de las etiquetas' + TabOrder = 1 + OnClick = Button2Click + end + end + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteEtiquetasMontajes.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteEtiquetasMontajes.pas new file mode 100644 index 0000000..cdd1671 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uAsistenteEtiquetasMontajes.pas @@ -0,0 +1,99 @@ +unit uAsistenteEtiquetasMontajes; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, JvWizard, JvExControls, JvComponent, StdCtrls, cxControls, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxSpinEdit, + uBizMontajes, cxGraphics, cxDropDownEdit, uCustomView, uViewBase, + uViewPreview; + +type + TfAsistenteEtiquetasMontajes = class(TForm) + JvWizard1: TJvWizard; + JvWizardWelcomePage1: TJvWizardWelcomePage; + Label1: TLabel; + JvWizardInteriorPage1: TJvWizardInteriorPage; + edtLabelCount: TcxSpinEdit; + Label2: TLabel; + Label3: TLabel; + lblNombreCliente: TLabel; + Label4: TLabel; + cbImpresoras: TcxComboBox; + Label5: TLabel; + JvWizardWelcomePage2: TJvWizardWelcomePage; + Label6: TLabel; + Label7: TLabel; + bImprimir: TButton; + Button2: TButton; + procedure FormCreate(Sender: TObject); + procedure bImprimirClick(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure JvWizard1FinishButtonClick(Sender: TObject); + private + FMontaje : IBizMontaje; + procedure SetMontaje(const Value: IBizMontaje); + public + property Montaje : IBizMontaje read FMontaje write SetMontaje; + end; + + procedure VerAsistenteEtiquetasMontajes(AMontaje : IBizMontaje); + +implementation + +uses Printers; + +{$R *.dfm} + +procedure VerAsistenteEtiquetasMontajes(AMontaje : IBizMontaje); +var + fAsistenteEtiquetasMontajes: TfAsistenteEtiquetasMontajes; +begin + if not Assigned(AMontaje) then + raise Exception.Create('Montaje no asignado (VerAsistenteEtiquetasMontajes)'); + + with TfAsistenteEtiquetasMontajes.Create(NIL) do + try + Montaje := AMontaje; + ShowModal; + finally + Free; + end; +end; + + +procedure TfAsistenteEtiquetasMontajes.FormCreate(Sender: TObject); +begin + cbImpresoras.Properties.Items := Printer.Printers; + Printer.PrinterIndex := -1; + cbImpresoras.Text := Printer.Printers.Strings[Printer.PrinterIndex]; +end; + +procedure TfAsistenteEtiquetasMontajes.bImprimirClick(Sender: TObject); +begin + FMontaje.LabelCount := edtLabelCount.Value; + FMontaje.PrintLabels; +end; + +procedure TfAsistenteEtiquetasMontajes.SetMontaje( + const Value: IBizMontaje); +begin + FMontaje := Value; + if Assigned(FMontaje) then + lblNombreCliente.Caption := FMontaje.Cliente.NOMBRE; +end; + +procedure TfAsistenteEtiquetasMontajes.Button2Click(Sender: TObject); +begin + FMontaje.LabelCount := edtLabelCount.Value; + FMontaje.PreviewLabels; +end; + +procedure TfAsistenteEtiquetasMontajes.JvWizard1FinishButtonClick( + Sender: TObject); +begin + Close; +end; + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uCargarFicheros.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uCargarFicheros.pas new file mode 100644 index 0000000..5fd37ac --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uCargarFicheros.pas @@ -0,0 +1,258 @@ +unit uCargarFicheros; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, + uROServiceComponent, uROWinInetHttpChannel, Forms, + VARELA_Intf, uROTypes, uROEventRepository; + +type + TCargarFicherosThread = class(TThread) + private + FROMessage: TROBinMessage; + fROChannel: TROWinInetHTTPChannel; + fRORemoteService: TRORemoteService; + FEventReceiver : TROEventReceiver; + + fOnSuccess: TNotifyEvent; + fOnError: TNotifyEvent; + + fLoadOK: Boolean; + fTimeStarted: TDateTime; + fErrorText: string; + fInfoStr: string; + + FMaxConnectionErrors : Integer; + FChannelErrorscount: Integer; + + procedure Run; + protected + FNombre : String; + procedure CargarFicheros; virtual; abstract; + procedure OnChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); + procedure OnLoadSuccess; virtual; + procedure OnLoadError(const ErrorMsg: String); virtual; + public + property Nombre : string read FNombre; + property LoadOK: Boolean read floadOK; + property TimeStarted: TDateTime read fTimeStarted; + property ErrorText: string read fErrortext; + property InfoStr: string read fInfoStr; + destructor Destroy; override; + procedure Execute; override; + constructor Create; + end; + + + { TCargarVentasThread } + TCargarVentasThread = class(TCargarFicherosThread) + private + fEDISalesService: IEDI_Sales; + + FFicheroCAB : String; + FFicheroLUG : String; + FFicheroART : String; + protected + procedure CargarFicheros; override; + public + destructor Destroy; override; + constructor Create(const FicheroCAB: String; const FicheroLUG: String; + const FicheroART: String; aOnLoadSuccess, aOnLoadError: TNotifyEvent); + end; + + + { TCargarInventarioThread } + TCargarInventarioThread = class(TCargarFicherosThread) + private + fEDIInventaryService: IEDI_Inventary; + + FFicheroCAB : String; + FFicheroLIN : String; + FFicheroCANT : String; + + protected + procedure CargarFicheros; override; + public + destructor Destroy; override; + constructor Create(const FicheroCAB: String; const FicheroLIN: String; + const FicheroCANT: String; aOnLoadSuccess, aOnLoadError: TNotifyEvent); + end; + + +implementation + +uses + uDataModuleBase, cxControls; + +{ TROThread } + + +destructor TCargarFicherosThread.Destroy; +begin + fROChannel.OnFailure := NIL; + + FreeAndNil(fRORemoteService); + FreeAndNil(fROChannel); + FreeAndNil(fROMessage); + inherited; +end; + +procedure TCargarFicherosThread.Run; +begin + ShowHourglassCursor; + try + CargarFicheros; + finally + HideHourglassCursor; + end; +end; + +procedure TCargarFicherosThread.Execute; +begin + try + Run; + finally + Self.Destroy; + end; +end; + +procedure TCargarFicherosThread.OnLoadError(const ErrorMsg: String); +begin + FErrorText := ErrorMsg; + if assigned(FOnError) then + FOnError(Self); +end; + +procedure TCargarFicherosThread.OnLoadSuccess; +begin + fLoadOK := True; + if assigned(FOnSuccess) then + FOnSuccess(Self); +end; + +procedure TCargarFicherosThread.OnChannelFailure( + Sender: TROTransportChannel; anException: Exception; var Retry: Boolean); +begin + if FChannelErrorsCount > FMaxConnectionErrors then + begin + FErrorText := anException.Message; + Self.Terminate; + end + else + begin + Inc(FChannelErrorsCount); + Sleep(1000); + Retry := true; + end; +end; + +constructor TCargarFicherosThread.Create; +begin + inherited Create(True); + FMaxConnectionErrors := 5; //try 5 times on channel-error + fLoadOK := False; + + fROMessage := TROBinMessage.Create(nil); + fROChannel := TROWinInetHTTPChannel.Create(NIL); + fROChannel.OnFailure := OnChannelFailure; + fROChannel.TargetURL := dmBase.Channel.TargetURL; +end; + +{ TCargarVentasThread } + +procedure TCargarVentasThread.CargarFicheros; +var + MsgError : String; +begin + try + if not fEDISalesService.CargarFicheroEDI(FFicheroCAB, FFicheroLUG, + FFicheroART, MsgError) then + OnLoadError(MsgError) + else + OnLoadSuccess; + except + on e: Exception do + OnLoadError(e.Message); + end; +end; + +constructor TCargarVentasThread.Create(const FicheroCAB, FicheroLUG, + FicheroART: String; aOnLoadSuccess, aOnLoadError: TNotifyEvent); +begin + inherited Create; + FNombre := 'SLSRPT'; + fRORemoteService := TRORemoteService.Create(nil); + fRORemoteService.Channel := fROChannel; + fRORemoteService.Message := fROMessage; + fRORemoteService.ServiceName := 'EDI_Sales'; + fEDISalesService := fRORemoteService as IEDI_Sales; + + FFicheroCAB := FicheroCAB; + FFicheroLUG := FicheroLUG; + FFicheroART := FicheroART; + + if assigned(aOnLoadSuccess) then + fOnSuccess := aOnLoadSuccess; + if assigned(aOnLoadError) then + fOnError := aOnLoadError; + Resume; +end; + +destructor TCargarVentasThread.Destroy; +begin + FEDISalesService := NIL; + inherited; +end; + +{ TCargarInventarioThread } + +procedure TCargarInventarioThread.CargarFicheros; +var + MsgError : String; +begin + inherited; + try + if not fEDIInventaryService.CargarFicheroEDI(FFicheroCAB, FFicheroLIN, + FFicheroCANT, MsgError) then + OnLoadError(MsgError) + else + OnLoadSuccess; + except + on e: Exception do + OnLoadError(e.Message); + end; +end; + +constructor TCargarInventarioThread.Create(const FicheroCAB, FicheroLIN, + FicheroCANT: String; aOnLoadSuccess, aOnLoadError: TNotifyEvent); +begin + inherited Create; + FNombre := 'INVRPT'; + fRORemoteService := TRORemoteService.Create(nil); + fRORemoteService.Channel := fROChannel; + fRORemoteService.Message := fROMessage; + fRORemoteService.ServiceName := 'EDI_Inventary'; + fEDIInventaryService := fRORemoteService as IEDI_Inventary; + + FFicheroCAB := FicheroCAB; + FFicheroLIN := FicheroLIN; + FFicheroCANT := FicheroCANT; + + if assigned(aOnLoadSuccess) then + fOnSuccess := aOnLoadSuccess; + if assigned(aOnLoadError) then + fOnError := aOnLoadError; + Resume; +end; + +destructor TCargarInventarioThread.Destroy; +begin + fEDIInventaryService := nil; + inherited; +end; + +end. + diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.ddp b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.ddp differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.dfm b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.dfm new file mode 100644 index 0000000..ad25fb4 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.dfm @@ -0,0 +1,192 @@ +object dmFicherosEDI: TdmFicherosEDI + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 186 + Width = 300 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'EDI_Log' + Left = 40 + Top = 16 + end + object tbl_EDILog: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REPORT' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OK' + DataType = datBoolean + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ERROR_MSG' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'EDILog' + IndexDefs = <> + Left = 152 + Top = 24 + end + object ds_EDILog: TDADataSource + DataSet = tbl_EDILog.Dataset + DataTable = tbl_EDILog + Left = 152 + Top = 80 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + FailureBehavior = fbBoth + Left = 40 + Top = 80 + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.dfm.cbk b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.dfm.cbk new file mode 100644 index 0000000..d10077e --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.dfm.cbk @@ -0,0 +1,193 @@ +object dmFicherosEDI: TdmFicherosEDI + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 186 + Width = 300 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'EDI_Log' + Left = 40 + Top = 16 + end + object tbl_EDILog: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REPORT' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OK' + DataType = datBoolean + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ERROR_MSG' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'EDILog' + IndexDefs = <> + Left = 152 + Top = 24 + end + object ds_EDILog: TDADataSource + DataSet = tbl_EDILog.Dataset + DataTable = tbl_EDILog + Left = 152 + Top = 80 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + FailureBehavior = fbBoth + Left = 40 + Top = 80 + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.pas new file mode 100644 index 0000000..c21f9ad --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uDataModuleFicherosEDI.pas @@ -0,0 +1,61 @@ +unit uDataModuleFicherosEDI; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, + uROClient, uROBinMessage, uROWinInetHttpChannel, uDataModuleBase, + schEDILogClient_Intf, uBizEDILog, uDARemoteDataAdapter, uDAInterfaces; + +type + TdmFicherosEDI = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_EDILog: TDACDSDataTable; + ds_EDILog: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + function GetItems : IBizEDILog; + end; + +var + dmFicherosEDI: TdmFicherosEDI; + +implementation + +{$R *.DFM} + +uses + uDataTableUtils, Forms, Controls, cxControls; + +procedure TdmFicherosEDI.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmFicherosEDI.GetItems: IBizEDILog; +var + dtLog: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLog := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_EDILog, dtLog); + dtLog.BusinessRulesID := BIZ_EDILOG; + Result := (dtLog as IBizEDILog); + finally + HideHourglassCursor; + end; +end; + +initialization + dmFicherosEDI := TdmFicherosEDI.Create(nil); + +finalization + FreeAndNil(dmFicherosEDI); + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.ddp b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.ddp differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.dfm b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.dfm new file mode 100644 index 0000000..5f3fd16 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.dfm @@ -0,0 +1,147 @@ +inherited fEditorHistorialCargasEDI: TfEditorHistorialCargasEDI + Left = 525 + Top = 313 + Caption = 'fEditorHistorialCargasEDI' + ClientHeight = 451 + ClientWidth = 660 + OnCreate = CustomEditorCreate + ExplicitWidth = 668 + ExplicitHeight = 485 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 660 + Caption = 'Historial de cargas de ficheros EDI' + ExplicitWidth = 660 + inherited Image1: TImage + Left = 633 + ExplicitLeft = 633 + end + end + inherited TBXDock: TTBXDock + Width = 660 + Visible = False + ExplicitWidth = 660 + inherited tbxMain: TTBXToolbar + Visible = False + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 660 + end + inherited tbxFiltro: TTBXToolbar + Visible = False + end + end + inherited StatusBar: TStatusBar + Top = 432 + Width = 660 + ExplicitTop = 432 + ExplicitWidth = 660 + end + inline frViewHistorialCargasEDI1: TfrViewHistorialCargasEDI [3] + Left = 0 + Top = 76 + Width = 660 + Height = 356 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 76 + ExplicitWidth = 660 + ExplicitHeight = 356 + inherited cxGrid: TcxGrid + Width = 660 + Height = 356 + ExplicitWidth = 660 + ExplicitHeight = 356 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewOK: TcxGridDBColumn + IsCaptionAssigned = True + end + inherited cxGridViewFECHA: TcxGridDBColumn + Width = 92 + end + inherited cxGridViewREPORT: TcxGridDBColumn + Width = 54 + end + inherited cxGridViewERROR_MSG: TcxGridDBColumn + Width = 492 + end + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + Enabled = False + end + inherited actModificar: TAction + Enabled = False + end + inherited actEliminar: TAction + Enabled = False + end + inherited actDeshacer: TEditUndo + Enabled = False + end + inherited actCortar: TEditCut + Enabled = False + end + inherited actCopiar: TEditCopy + Enabled = False + end + inherited actPegar: TEditPaste + Enabled = False + end + inherited actSeleccionarTodo: TEditSelectAll + Enabled = False + end + inherited actLimpiar: TEditDelete + Enabled = False + end + inherited actDuplicar: TAction + Enabled = False + end + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited GridPopupMenu: TPopupMenu + inherited Modificar1: TMenuItem + Visible = False + end + inherited Duplicar1: TMenuItem + Visible = False + end + inherited Eliminar1: TMenuItem + Visible = False + end + inherited N1: TMenuItem + Visible = False + end + inherited Nuevo1: TMenuItem + Visible = False + end + inherited N2: TMenuItem + Visible = False + end + inherited Previsualizar1: TMenuItem + Visible = False + end + inherited Imprimir1: TMenuItem + Visible = False + end + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.pas new file mode 100644 index 0000000..1daa18b --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uEditorHistorialCargasEDI.pas @@ -0,0 +1,76 @@ +unit uEditorHistorialCargasEDI; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGridBase, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uBizEDILog, uCustomView, uViewBase, + uViewHistorialCargasEDI, uViewGrid, uViewGridBase, StdCtrls, uDAInterfaces; + +type + IEditorHistorialCargasEDI = interface(IEditorGridBase) + ['{6C84E101-C4FB-48F9-A9A9-93F8606DF4FF}'] + function GetEDILog: IBizEDILog; + procedure SetEDILog(const Value: IBizEDILog); + property EDILog: IBizEDILog read GetEDILog write SetEDILog; + end; + + TfEditorHistorialCargasEDI = class(TfEditorGridBase, IEditorHistorialCargasEDI) + frViewHistorialCargasEDI1: TfrViewHistorialCargasEDI; + procedure CustomEditorCreate(Sender: TObject); + procedure FormShow(Sender: TObject); + protected + FEDILog : IBizEDILog; + function GetEDILog: IBizEDILog; + procedure SetEDILog(const Value: IBizEDILog); + public + property EDILog: IBizEDILog read GetEDILog write SetEDILog; + end; + +var + fEditorHistorialCargasEDI: TfEditorHistorialCargasEDI; + +implementation + +{$R *.dfm} + +{ TfEditorHistorialCargasEDI } + +function TfEditorHistorialCargasEDI.GetEDILog: IBizEDILog; +begin + Result := FEDILog; +end; + +procedure TfEditorHistorialCargasEDI.SetEDILog(const Value: IBizEDILog); +begin + FEDILog := Value; + dsDataTable.DataTable := FEDILog.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewHistorialCargasEDI).EDILog := FEDILog; +end; + +procedure TfEditorHistorialCargasEDI.CustomEditorCreate(Sender: TObject); +begin + inherited; + ViewGrid := frViewHistorialCargasEDI1; +end; + +procedure TfEditorHistorialCargasEDI.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(FEDILog) then + raise Exception.Create('No hay ningún control asignado'); + + FEDILog.DataTable.Active := True; + ViewGrid.GotoFirst; +end; + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.ddp b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.ddp differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.dfm b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.dfm new file mode 100644 index 0000000..b83f315 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.dfm @@ -0,0 +1,601 @@ +object ModuleFicherosEDI: TModuleFicherosEDI + OldCreateOrder = True + Description = 'Gesti'#243'n de ficheros EDI' + ModuleMenu = MainMenu + ModuleName = 'Ficheros EDI' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.4' + Left = 779 + Top = 651 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F33000003954944415478DA95967B48145114 + C6BF6D6975FB472AA2C28AA03F2203234B24437C656A98665A6996424F94A428 + 0B212289DE490F2ACB34D135B32CCB16297B10F6C4324CEDA9926CF6B0D53202 + AD7DCE76EF9DE6EE8E6EBBEB81D93B7367F6FB9DEF9CBB7747715273CB060F22 + 3B3D5641C75DF9A51E3D4F63CFB60C85820236AD8E71F9E0A9F23A9454681117 + 1544BFC4E77F1B050C18AD1830D05160D7D2DCEBE606F4FFD48303A888ABE8E9 + D17371B3D5260A19AC30596C4EC5552A2F682E5C91039C3911041BF28E699C8A + 0FB091089B44719345E0E2DEDE6A9C2BD6B80648E273E7047A54F3F79D5D5C9C + 864B80243E9C686C6A4142E2727EED14105ED8C61F08E96F9035D55504C46461 + FC586FF7009AB9C52AC04A8E03A72F3280B6FEED7F85E3C3FCD8FDBC83A71820 + 2E2109B537AA196808202B2D1A9145ED431C50012A4463E08F09BD7DFDD07DE9 + C3A11305A829CDC7ED27EF39800685284728ED808DA95128ACBC8B0D29512C73 + C9C1D1A22A0E385354ECD44145E1613C7ED1CE01E1910B59A347AA54385F5221 + 02D62447A0E4EA7DAC5D168945659D6E7B60254BD548D6BFC12CC068B6A1B1A5 + 8303E68784E1C9A37A44C72EB6FF0E562F094579CD03642C0D777060C5E9B2EB + 6E7BE0EF370DAD6F3FC84A44212AE2E052955604A4C485E052ED23AC4A084562 + 65D7B07A70FCF07EB4757472C0ACD97399383DAED5D48980A4986054D73D0505 + D1CC2DA404564140F145ADDB1E1CDAB7173A9D8E0366CCF4C7BB37AD080C0A46 + EDCDFB22207E4110B4F79E61596C3052AABB8738185C73A3E348E6BB3F7F9495 + 8842A8833BF71E8B00BA53AE498B47E2C2792C73D607B2AF9457DFC4EE2DE92E + C5E9FC4FFD270EF0F59D029517D92ED46AD43F7C0E8594ADE44412A78DAE2435 + CCC95C8515EBB773578101B3B0243199895390816C74A65F5F3860DCB8F16C99 + 524843E32B0990673BA909627BBE63D0FD3F7BDD4A51C822CF5C12A70E46FCEE + E6001F9FD1FF9AEC85A6D6763B801C8AC10DA4FF5E1B3252B17E73AECC4144CC + 522E4E416AF3370E50AB47890E0864EAE4098E00E493D15E0B32B72B7F2AD2D3 + 5638CDFCB2290CA5CDCD289DDE8BD1E8E100A552C900BACF7D68AA2B50488023 + E423470E6150BCEEDA819CDC9D320701216441BC1C03E880B3117A4C1CF95DB6 + 8AF43F0C4C9C9E3B94854378F86C4DC6AFA357F1B46D9BACE6ECDC2C9E93B580 + 495E7680A3F820C0E0101D50F1DEAF5D70171440C351DC03409E627674A647AF + 29FFDE3886E8FD050279B575ACF985ED0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000006BD4944415478DA + 8D566B5054E7197ECEEED91BBBB2ECCAB20A2C4210B0108C012A511062443183 + 522BE3C4D814C6361D4D26924B53E35012A74D676A5A6352C7A989D30495C48C + 284AA8C6A891315A85AE82B05111D95D592EBBEB72D95DF6BE67CF39FD58B4A6 + 4D4D7366BE3FDFE5799EEF7DDFE7FD0E85FFF7157FAA42249C2DA0058F49C5F4 + 0CF01C1561797F98633B11085F47E726F7F71DA71E3A5FB83F2F7161F38EC7D3 + B9B2FB939C5C11495116B27324CF72E661976BC032366CB8693BE9980C34E142 + 4DEF0F235874302136F9FA6FE4190DAF6BD385884879D82D5E78DD2168A9240C + 3A075153B6070B9237231C6278CBD078E4F2E5BEE1DBB7EDEFF95C9E83FF7DA3 + FF2428F858975274EA8850FB5561D1121D7AFBC7C058E2B1B56C2BCEE969F87B + CC5015AC4480A3A1D5C661D66C35385A8C7142DED5690A765FBBD37877C25F87 + AF7F36F65D02A23C297DF8AF91B43F56AD5A3D0FA15008174FBAB17EDE1E94E5 + 162056C663D3863AB45CFC103D662F2E748D61F8AE07293A3512E7CC86D5C5C2 + 60B0B05DFABEFDA356DF6BD0FF7CF2DB04145D72706BF9DAC33B325706A3E07D + BD362CD76CC16B4B6BC15314BC81108E1E69C3BAEAA7E10D030344A32FC0A0ED + D200B941000B0A32D06B0DA1FBAA8919E81F7EDDD6BC66F70382C2FDF9E54B52 + 1A0CF29FE656D72C46381C86BEC38C3D15A790199F15DDC4DE1B11321C7EC01F + 0204645FDBE953B007D470314A2466A4E2B63580AE8E5B76DE1F5CD9FFC9CA1E + 2A7D8736673632AE4FF1D8D08F0DCF3D112530F65971F5BC0B6A311FD5F0B72D + 67A09B990517516FF702816008FF683E80F61387F1AB37DF43BB5104914C0607 + AF80C9E4E087FA47F6591A576CA690FF617CEEAA3DA36B7E9909590C0D966511 + 669828C9D438D16A80C22343E31B1604887C3F030409785BD37EE84F1FC7BA97 + EAB0A274098CA361341C3140959602A33D08E33766BB36217E014592FBD44BD5 + 05FB9A0797A63FFF4231143324D3E084E444EBB5A96BE1E0560B9C24242C87E8 + 5A14FCCB63A8D8B40D190525982513402906FEF2D937E065E4061E1AC61B038C + 5C26FA0525283AF0EB9D75E56F597D54EC17C61C543D571A25B9D66546DF792B + 0E11E5E341A29A8960B0EF263ACFB6A2FBE259AC7DE56DCCCD2F06C70B409324 + FD58037CF6F530F4BD4E38C52A988D36DEE570FE89923ED9F8DBF77F5F59DF69 + 189446FA2EE15C423D2A2AF2D071FC163EAFB7C0E2218925CACD377A70E8775B + B0666D153A6F1A9192574AB22C8462E62CCCC95D84BE638731429498D86488D2 + 32601A98807BD87E86129736BEF9EEF6D575DD3786A4DEDE763C313F01BB076B + 71E50F160C1170D7BDD05C39FB77B4ECAA437945252EB7778092C781A204D065 + E7E3A98DDB603C7E186E5F1897C635A05333611D71223836A127F5DFF872FDCB + CBDEB1793809825EBCF26C1614B269E0B100514F6A9323041EB713AD1FBC03C7 + A00925CF6C46EA638B4978C81A25044DDCBC5C079C338C626FAB194EA99AEC73 + 20C2445A28143714D5AC2B3C96949698D0D569446DF5E388570AE063A7433305 + CEF2538327BD271CAD209154118D7D749EACC791042F4902761DBB8DAF6EFAE0 + E064181FB0F2B442B173AA4C95254F669F5B5E9E9777FE422F55B9EC112CCE56 + 212C40D4B1D3E0D340DF1EF789A7125CA005A4420EAFEEBE8A5E7F0CDC010EEE + 117B3846ABD9187572C2AAA6ED3FA95A544FC241BBC69CD8FC4C0E92E304B091 + 1005D887834F1DCE8C03B2D4408BDE8EF79B4978C471981C73211408DDE555CA + BCE9565172E047F3B3755F2C5DBE20B5A7FB0EE667C56343990E9A180A03DE07 + 89E6EE93DC539E4380E72801E35810B53BF5B0D22AF8822C3C23760894CABDFE + 8F17BFF8EF6E2A5F76A8B6B068DE9F331F4D155F69EF43FEA30958B72C05696A + 1A0C01B5139696A36DA85CFF74D45489724042F3B8629EC4DB1F1930C4CD4080 + 17C23B6C43442436314AF90AEC5D687ED0AEF39B941A1DFD6E6EFEDC8D49295A + C1AD1B83901280D282242CCA51414D87F042D5ABF8B2BD81988E43EFE0244EEB + 6D38F9CFBBF04A9488104FF8EC0E300CEB42AC6A13D350D8F4DD07A7F8238D66 + A67A876E6E6275D223B3E949B71F0EDB04782604955C0057C7296455AE87CDE1 + 81C3CD202094123FC849FB8810F0D1A9D0B978A5EAAD082DFC00FB0A98FFFD64 + 2E6C8C9D95AC7C9E9689DFD0246B340AB5920A937A0D04C3C413A4541996B46D + 0A1C511C0E45E077BA117079480F8A3151B2986D6111FDF97DF0EF7BF4915E73 + 3A9F84E2458A16AD164A242A21F9A5A0C42212020E417F908C0031121BE184A2 + 09C8E54783427A170136FDD0BF8A07A9D97E3D65D2E52B778E7B728935B288E1 + 24BC90F6B112E91D4864D742ACF04C706FEED0C3CEFF0B07FB54E0B6F6EF4600 + 00000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actCargarFicheros: TAction + Category = 'Ficheros' + Caption = 'Cargar ficheros...' + ImageIndex = 0 + OnExecute = actCargarFicherosExecute + end + object actHistorial: TAction + Category = 'Ficheros' + Caption = 'Historial de cargas' + ImageIndex = 1 + OnExecute = actHistorialExecute + end + end + object MainMenu: TMainMenu + Tag = 100 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 10 + Caption = '&Ficheros' + GroupIndex = 1 + ImageIndex = 4 + OnClick = actCargarFicherosExecute + object Ficheros1: TMenuItem + Tag = 100 + Action = actCargarFicheros + end + object Historialdecargas1: TMenuItem + Tag = 200 + Action = actHistorial + end + end + end + object SmallImages: 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 + F73EE77CFEFC2FF784F3FB25D29F33000002284944415478DA635CB2F9C47F06 + 2C20C6D7821144D7F62CC02A0F038C2003A27DCCE1024BB79C6470B2D066D877 + E22AC3CD9B37189A8AE3E1726F3EFD6178F5F13790FECBB067C75A862DBB4F22 + 0C0069440684344BC9AB33CC9AB308D500984BEA7A173298189B6275F299B3A7 + C19A41006E40889B31C39A5D67C1068034E3027FFEFC659053D682F3E106F83A + E8336C3E70116E00B2D39181914716434C5430C3EE9D5B19FC03C31006B85969 + 33EC3A769501E492D6C94BC1067CFDFE8BE1F5BB2F0C0F9EBE63D877F8284369 + 560C837D602E83B8300783ABBB3703171737C2007B13758683676E32805CD233 + 7325D80074AF64244632F844153078B8DA329C3F771A6CC892656B2106CC59BA + 832125DA8301E492C9F3D7A278E1F3F7BF60FC0988A3928BC12E30343205BB60 + DDC61D0C8C30853097CC5ABA11AB177CFD4318D2734A194C8D34191E3DBC0F36 + 64C7EEC3A806805C626BA2C050931FCBD03271318A179C3C82188A8ACBC12E90 + 935764E0E4E4623874F42C03A38147C2FF0B3B16C00D0225DDFCB468864FDF20 + CEFEF5E73FC3D79FFF18BEFCF8CB50575DC5A0A220C6C001D4CCC9C9C970FADC + 75EC0624C64430CC5FB202CCB77109041A0232E01F4357730D83B4380FD8F63B + 0F5E319CDB318D1164C077A0BA5B4043F44186F9BA3830040787426D85D81C7C + 418861B6CA2B8669DDF5602FBC7CFB03AC199C994004D4100E982BA64E980CD7 + 0CC1FFC0E273FA1BC0344C33DC001880B90094CB700164CD2000002110375C5F + 4EB13C0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000003824944415478DA + 5D530D4C94751C7EFEF70177AF1EBC753B4EA0B8148EEB0E439423CE4411B58D + 0C0DC92648AECC465B6DCD4D572BC714AA4DDB4CD7206DB38F65E55C6B358A8C + 8D558640C725C981E7D9911D1F1EDC07C7DD61F7F5BEF7FE7BA11CCCDFF66CFF + FDF67B9EFD7FBF3D0FC1BD653A9A06812D351566ADD7E76B8A922948DC13332E + F7B8BF3B7675661068E1978E93C52725283AF598A52A713AB0A2DDCCC725A09C + D8CA7E969AF20ED2E04C3CD67FD96E730DFFF53A3FF4AA6D9EB0448012B6ECEC + DE271B979D0869DB730DEB54B874D10DCD7533D4F90F034229F28ACD80428581 + 3E4768B8D7DE74A7FFC5AF16058CEF6F6C38A0BE10D0B5E63E52FCE002F99D92 + D3B08F4CA0EEB95A38A72518724531EE892023EF21F4FC3C1271D95D8FC77A9E + 1F20F33B576D2AFF9ED77FB9ADAC669ACC93DF341E87656305EED36A11E680BF + 83220607D0DF3F84045B8E884283AB97AF0D78BCCA0DC4D85A40EF5E61F77E13 + 7CBE107EEDF4201A4B8051A6E3585D1FC64647F1C3B99338FCD649F43A388CCE + 4A607706F9E098670759BDFDBD1329CB07AF556D2F40AE2E03F1781CDD5D3710 + F250EC54BD01814861EBFE0EB587DF854EB70A2C8DE3F8A776DC4E2EC7A4DD79 + 966C7BF9D2F9070A358DD6483DA9ACCE4728740743BF79B14324DFB2DB10F0FB + 51B4E909A8F30CD0EAD7823AACB8D81B46586D847BF086955434757E5EB0D6B0 + 573A7E85F429DF5E58E5A9CC2322A110DFB6B520430EC464AA857EF5A136B01E + 073EFB6516538C1E813F6F39897EE785239B9FDED2CA858392BAAD6A8CFC6183 + 82CD42B6B114419F17A19900D43A13784102B904A8CCE1D1D0DC8389F8324426 + A7BA88ACB8AD7CCF4B353F4D8EFB98832FAC8372B914B371801344889EE352FF + 4110B13E0770386FA3F9BC1BC1609426F954ABE883A3B2C2FAB26E83D9589921 + 4BE2953D060445077AFF59245351AC4403642979EC3B760537430A443D9E2861 + B31E5D30D2FC2F4AB698BBE40C9399CB02FB7719B08295E3E30FBF46E381DDD0 + 3014635311349FB986EBC13444A7BD3425959FA23FD61CBA9B05A2B07CF4CCAA + 35FA730A9655CDF9035899CDC06BEDC4E6FA06D86F06303C16434CCA20E1F7D3 + 14641D94B97F1F3A2AE6C8D26429377C6261D8CC76558E760D49534893BC8064 + 92176F419188CC21110E47693A7386A6F32DE8A89DBB278DFF57D3EF72B5D753 + CD71A95D0291AC1604CA709CE043BAD2CAA529BEC03755234BC7FF05ED0D8747 + EEB393300000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F33000003AF4944415478DABDD75B48145118 + 07F0FF28AC094550425174A1B21B1474A33B5694EC8369B1565A59D44B11F550 + BDD44377ACEC4A37CB5CCBB4B5581575B5DA4A532B53D36C230ABA41D7070D83 + C03477D6DDCE37DB9C9D19B77136A20F86B33AEEF9EDFF3B676656C1E7F3E17F + 967026E7962171738A59F867209B4CF78FCEE63A71C9E64093335D85EE3E7E25 + A4F6ECDFBE56E0204D1A4A52C2D804AA73ED6E2F3A3ABD68A7C3ED1F3B7E8FED + DF3E63EFE1B350814693C62D9A8E50B1C6270D28BB5BDF1D9C9FF1AA1B54B961 + 0CBC5E2FD26D77D0D2D2FC57D8A0616370D19A632C216161616182B68D62978F + 4F2C7A7CBA1895219030D1E345EA191BA64E9916CA1E51617F0483B5746E5B5D + 48905C0D4DCF90B074B93EA84D268A5D3872E17AB775D32B377BDF8CB8CD18D0 + BF97049614D9A591831B921721E3DA5D0E2A31D1D38593D67C097454BDEC1133 + CF198B2C7B3932738A25904A4EC9C1F5890B70A9E09E6E4B65307EDE78FEFB1F + 1D6E7CFDD6861676B4B3D769A7D261B71EC5D5A20A0E066D69CA9218E4165783 + 92CAA9A4841EFF6B6B9E8383E733ADBA09732FA421BFB4928371F11694390AD5 + 2D4D8A9B8BEB650F4049B598871DD9F61BBA6B486BD629FAD0C946371B4B9C55 + AA96121A1E1E1E002DE65928743E02255D92F751B7A53DD5847123E1ACA8E660 + CCFC58444444C0643221EBB2CD0FC62F9C0E47793D28A93299BC71ECA5770CAF + E1B143A9B8FFF0010767CE8E416D4D3562CD8B916BCBF783747F5CBF2A1E9454 + 8BD1CF45B72A0CAF61EA8103A8AFAB51B59450932902F6020704F901CCAE439E + 545BCAFB6797D7C7D68CAD971858371ADDF21AB2734F1B1F7170C2C449126662 + 6D2D76DC5683943458C94F0723181D2F5CB51C1C153D16919191127AF3765500 + D42BBA69EFD9BAC61046E7DFBEA8E7E0D06123A40D43687965AD7170E79614EC + 389881D76FDEA8CE8D8E8E46F2CA94C08761E3A7578F393870E060A99D84D6D4 + B9FCA020EC63C31E410FDCB671D51F93D1A348BE06096C7DDFC8C17EFDA2F81A + 3634BD340E6E5C978CB4D35941139A1392394629DBBE3471B077EF3E7E901D43 + 06450540F6DE448616CA13293F0481EB562705D249EBA5BEBB14FB1620DBE542 + E6A81688CD4F3948AD24ECDD87AFD2973019B4B0790B94E8EF0F0142095C99B4 + 9C5D83D94113CE8E5D8115CFFB03EF8173F39A21B4BA54D76173EB4FFE8D8F6F + 1A05CAABEFB6447C3F51805DC786C36259163459A762B3D079692E05A8C454A0 + B6B409172724A2F1714D8F3B5A2E02A9B4DF657541E5469A6CDE14F2FF045A8C + EA17B3DA9C7AF449C9A20000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 94000000097048597300000E9C00000E9C01079453DD0000091A4944415478DA + 9596097054F51DC7BFEFDA3B7B41D8DD64D71C24241009844024014492101014 + D4160A28D8B18E38C5BBD45A5B6B6BE980B6D57A0D18A8022A6D119C16396A51 + 4A0847249098262CB903B93661B3F7BEDD7DBB6FDFEB3F412A9DE2D137F36667 + 67DFFE3FEFFBFB7D7F07856F7315BFC581D158C024B3398ECA6159460159A244 + 8916E564B25D8C0B5D386B74012B93DF7414F5B5BFCED866802239CDA455DF75 + 537A8A3D3FC33C715ADE84346D8A9A91641A570271AEA7D7E7E9EE0FB5F7BA82 + 8D1E3FBF2FC1C7DA707E7DE4FF0312459C4E33236B3CFBD2F442ED6C45865321 + 1B6A21533CC4483E287E06D2B58530181DD0684DA0295A760D78C4DA339D818E + CEA18F433E614BE24C9713F895F4CDC0C2DD5A8551FEE1EC69B6B565B7C993C3 + E6AD6CFAE423308E4F201167202758F8878D387B220DDEE1A55898BB06068B1D + B4420D7F302A77760C49276B5B5B3DBED06BE17E66279C2BE35F0D243068A5C7 + EE2AB7AFBCA554C80D99DFD65A0A8F43A3F4C2EF55A2E3733BFAEAACE8DA1FC1 + D4F23B31C2EB2151139039291F45337241A934084424B886FCF267A7DB026DAD + FDCF4487B877AE8752D78751A1D33C71E7ADD9F796CE31E57746B729ED257FC2 + 04EB08DCC34AF4D69540DF3B0FE11E011F7FD488F70EBC0699D3A0F30A83F6BE + 182E76F990E130213B270D03210A235E5E3E55D3121E1A18D9E83BB4623B41C9 + FF0D9CB5AB744AAEFEE5271F2A2B68F57D96E2B5BE88ECC99F816124B83B7290 + A8A9842D3E11F69B1CE0230CEE5EB30432C3A1D74B8117806058C0917F762221 + 4AB8A52C0F1707E3E81FF4A3FEE4857642B9BBF7FD25CE2F8125EFEA53F474F5 + 0B8FCFAF12947193D3B30396791F40ABEF06CFABD15B9B0D7B77154AF3E723AF + B000A9361B18A512BC48E14A185093537CBE104E1E3B0A97604338A1417E6116 + 9C2E11BD9786E5F67F751F94786995EBE0B2C855E0BCDD6577CFCFDC5D75FBCC + 9BDABA9AB87EE64DA4CF390656338250400FD7F11C4C13EEC092797722232B1B + 0A8D0602290B170F8488BA783888E37BB6A1BEE61F58FDD4669C6AE7909AAA47 + 5869C2803B820B0D1D7105850A67F5829314A6EC558CCF4CFEFA178F2D581B94 + 54D6E68BB5943CED1528D3CE13153262211DC2A7F351422F45E582E59890E640 + 9C56C01F030411E043211CFCE31F70EE9303D8F0EC26DC726B259C8351ECDAD7 + 8CE925B96819242A7B8689B33DFBBBECF42A0A25BBB30AF2F4AF3FFD4845D5E7 + AD03DC69E7DB485D7C189C79001258C4790DF83A07D6A43E0CEBCD25D09AAD90 + 69962483418C8FE0F0CED7D17CEA532C7EE049CC2C5F821C2387404CC69E436D + 0812F5018511C39E08717847B7232BFD1E0AA55B17D92AB6FCFDFAEAC89E2342 + 65023100B963444D970AFEBE2F9B87ABFF325E5D558BD61335A83FFA572CDFF0 + 7314DE7607690C0C8C0A20470F1C6FF162CFC15618B333D1EF13D1D5D4195769 + 94EB28BAB4FAD1DB2B06B71CEAFFA526A7C24C14A8C0722C24994152A2904CD2 + 044C214678814B3C02ED839895A884CECB2274E50AEE796A1326975582A239F2 + 3CC01057CCB6006DC3023657D7C3929B81F69124FA5A7BE5444CF80DA59CBFEB + 918DEB6EDED4D45F6338D8F314B2AAD2C1EA75489252250EBF0A26D0982B025F + 53370ABD73801E2F56AC5885CEEE6E98F34BA050EBC873407ADE74D8720B51B7 + BD1AD1848C86010653AA2AD07245C6F0A5214851FE6FA3C0479F595FF64284A6 + 8C1FEEF829BAEC1FC0343B1394210549F1AA4271248C584B272A35EB90B8EC07 + 3FD08D6577DD83C686F37007A3A059EE6A752D5B87A2C56B70764735F926A3AE + 9785A9B80C83310EEECB2EB049F104C5CE7B77FD86B5337F373ED3AE3BB0FF28 + A6E5766347CB46B0459320A718207B43905A5A51A92587E55782A568D4FCA51A + 8948101367CE47C5FD3F22E164C714729A9431B5E576529791047EF25A3D026A + 33DC02992C9DFD6015CC3E8A9DBB6BFEF285793BE72C9C9579F8F0394CCD240E + 144FE295BAC781295980B307159AB5282E58848905C5305BED10222497DE1198 + D33249E9682191D027097034871AF2F70A07D0D817C6CFDE38871871F5A85BDD + ED97C11AF52F92B2A8B617163876DEF7FDF2F2E60B0354C8E7C3AA4A2B6A1B77 + E1CDBA675161BA17B3729622ABA008E36C0EF2966AE2467AEC70E90BC835E068 + 17C9310093CC32FE5C33806D1FF5206E4C4598F4BE409F4B54DB2C0F9267F632 + D665F40BDF5B39FB69558A8E3D76AC050FAF9E8A346D14EEA14B70F9C2449503 + 464B3A38029308EC1A40BA0E36FA69D59019401CEA8F8978EEAD46B48595F090 + 71161A1E21A32DD9AF48B57C77ACB571B7EE292A2C4C3B5A5955646E6EE9A38C + 5A062B1665C2AE4B22144F22282B49B17363CAA41B2893C96D20F537CB0A2849 + 48777FDA8B3D9FF462446146241A47A8CF0566FCB8036130ABA92F4693C66431 + 6DAF5C347D55BA23953E79C289B9250EAC586087554BC14F4AA49FF4CD44F2C6 + 301B5156301ED012B3360F46F0E357EBE166F4E0650EBCDB8B7854006D1AF79D + 6875F187FF194F5CE9EE9BAD0ED3DECA25C59325D068A8EFC0DC59762C2E4D43 + BE45018626A122C9BF44464E43BD13F316968D19640281D9B4408CD03F6D1AC1 + 1B7B2FC2051DA29402D14008D1E11189B658F60B81E4FDF8A02C7ADDC47F9ED6 + 2DCA7B2823D3F66271E9E494585CA49C4D3DB05B75A89A9B81E26C1DD28D0C2E + 3638F1DC93BFC7D1BA77C86BC9A4C0250C90101C3A3388FDC7FBE0A3344892C9 + 2FF0514406864869E93A6030AC4E6C2D3EFFBF2B06991C6AABF88023DBF2DBBC + A9593AA5568DCB5D2E621E1F8C7A25F2B38CD027DC38FBFE2E3CF8F216787C11 + 34B57BD0D8EE434064A11C6786C43088FA8288BA3D802EC525E9B43F486E2F39 + F2D54B14819AB2A907546AF5467B4E5AB631D5488DE62AE0E3E1F70448CB2371 + 8D8548C2CC24A724914A15D96554C4540C849880A8C70F21C84B943EA553D268 + 1F4F76463E41CD02F11BF65299CA5A77646A884FBCA45028CB8D5633674825E3 + 8365094486484071D2684781A32B85404C11F10610F387C89E437664837E1F99 + 009B13D5331BBEDD5EFAC565B9EF63AD51A32C8925A42762426206C530369A63 + 198AE32012503C1627E34BC058A5A8D46EA854E7928CE2EDB856388257CAA237 + 3AF3EB37EF6B517EBE45C10A6251C01B9C128B8A532996CE92245921D1743C41 + B37D32C7B549B4B2391C94CFE3BDE9FCD79DF56F9BAC2EA7B114766B00000000 + 49454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.pas new file mode 100644 index 0000000..5aa8a3d --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uPluginControllerFicherosEDI.pas @@ -0,0 +1,76 @@ +unit uPluginControllerFicherosEDI; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCFicherosEDI = interface(IInterface) + ['{D058419C-2EFC-41A6-99DD-76E5B7FC4361}'] + end; + + TModuleFicherosEDI = class(TModuleController, IMCFicherosEDI) + actCargarFicheros: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Ficheros1: TMenuItem; + SmallImages: TPngImageList; + actHistorial: TAction; + Historialdecargas1: TMenuItem; + procedure actCargarFicherosExecute(Sender: TObject); + procedure actHistorialExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uAsistenteCargaFicheros, + uEditorHistorialCargasEDI, uBizEDILog, uDataModuleFicherosEDI; + +function GetModule : TModuleController; +begin + Result := TModuleFicherosEDI.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TModuleFicherosEDI.actCargarFicherosExecute(Sender: TObject); +begin + VerAsistenteEtiquetasMontajes; +end; + +procedure TModuleFicherosEDI.actHistorialExecute(Sender: TObject); +var + aControl: IBizEDILog; + aObj: IEditorHistorialCargasEDI; +begin + aControl := dmFicherosEDI.GetItems; + aObj := TfEditorHistorialCargasEDI.Create(Application); + try + with aObj do + begin + EDILog := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleFicherosEDI); + +finalization + UnRegisterModuleClass(TModuleFicherosEDI); + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uSubirFicheros.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uSubirFicheros.pas new file mode 100644 index 0000000..ad5180a --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uSubirFicheros.pas @@ -0,0 +1,233 @@ +unit uSubirFicheros; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, + uROClient, uROClientIntf, uRORemoteService, uROBinMessage, + uROServiceComponent, uROWinInetHttpChannel, + VARELA_Intf, uROTypes; + +type + + { TROThread } + TSubirFicheroThread = class(TThread) + private + fROMessage: TROBinMessage; + fROChannel: TROWinInetHTTPChannel; + fRORemoteService: TRORemoteService; + fOnAbort: TNotifyEvent; + fOnFinished: TNotifyEvent; + fOnProgress: TNotifyEvent; + fOnStartUpload: TNotifyEvent; + fOnError: TNotifyEvent; + fFileName: string; + fUploadOK: Boolean; + fFileSize: Int64; + fCurrentBytePos: Int64; + fTimeStarted: TDateTime; + fFileService: IsrvTransfereciaFicheros; + fErrorText: string; + fInfoStr: string; + fMaxConnectionErrors, fChannelErrorscount: Integer; + procedure RunUpload; + function GetUploadChunk(FileMemStream: TMemoryStream; aSize: Int64; + const Sequence: Integer): Binary; + procedure OnChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); + procedure Run; + protected + public + property UploadOK: Boolean read fUploadOK; + property FileSize: Int64 read fFileSize; + property CurrentBytePos: Int64 read fCurrentBytePos; + property TimeStarted: TDateTime read fTimeStarted; + property ErrorText: string read fErrortext; + property Filename: string read fFilename; + property InfoStr: string read fInfoStr; + constructor Create(aFileName: string; aOnStartUpload, aOnProgress, + aOnFinished, aOnAbort, aOnError: TNotifyEvent); + destructor Destroy; override; + + procedure Execute; override; + end; + +implementation + +uses + uDataModuleBase; + +{ TROThread } + +constructor TSubirFicheroThread.Create(aFileName: string; aOnStartUpload, aOnProgress, + aOnFinished, aOnAbort, aOnError: TNotifyEvent); +begin + inherited Create(TRUE); + fFilename := aFilename; + fmaxconnectionerrors := 5; //try 5 times on channel-error + + fROMessage := TROBinMessage.Create(nil); + fROChannel := TROWinInetHTTPChannel.Create(NIL); + fROChannel.OnFailure := OnChannelFailure; + fROChannel.TargetURL := dmBase.Channel.TargetURL; + + fRORemoteService := TRORemoteService.Create(nil); + fRORemoteService.Channel := fROChannel; + fRORemoteService.Message := fROMessage; + fRORemoteService.ServiceName := 'srvTransfereciaFicheros'; + fFileService := fRORemoteService as IsrvTransfereciaFicheros; + + if assigned(aOnAbort) then + fOnAbort := aOnAbort; + if assigned(aOnFinished) then + fOnFinished := aOnFinished; + if assigned(aOnProgress) then + fOnProgress := aOnProgress; + if assigned(aOnStartUpload) then + fOnStartUpload := aOnStartUpload; + if assigned(aOnError) then + fOnError := aOnError; + Resume; +end; + +destructor TSubirFicheroThread.Destroy; +begin + fFileService := nil; + fROChannel.OnFailure := NIL; + + FreeAndNil(fRORemoteService); + FreeAndNil(fROChannel); + FreeAndNil(fROMessage); + inherited; +end; + +procedure TSubirFicheroThread.Run; +begin + try + RunUpload; + finally + if assigned(fOnFinished) then + fOnFinished(Self); + end; +end; + +procedure TSubirFicheroThread.Execute; +begin + try + Run; + finally + Self.Destroy; + end; +end; + +function TSubirFicheroThread.GetUploadChunk(FileMemStream: TMemoryStream; aSize: + Int64; const Sequence: Integer): Binary; +const + Block: Integer = 65536; +var + Position: Int64; +begin + Result := Binary.Create; + Position := Block * (Sequence - 1); + if Position <= aSize then + begin + FileMemStream.Position := Position; + if Position + Block > aSize then + Result.CopyFrom(FileMemStream, aSize - Position) + else + Result.CopyFrom(FileMemStream, Block); + end; +end; + +procedure TSubirFicheroThread.RunUpload; +var + FileMemStream: TMemoryStream; + Chunk: Binary; + Sequence: Int64; + isfirst: Boolean; +begin + fErrorText := ''; + fUploadOK := false; + fChannelErrorscount := 0; + fCurrentBytePos := 0; + Sequence := 1; + fTimeStarted := Now; + FileMemStream := nil; + isfirst := true; + try + if FileExists(fFilename) then + begin + try + FileMemStream := TMemoryStream.Create; + FileMemStream.LoadFromFile(fFileName); + fFileName := ExtractFileName(fFileName); + fFileSize := FileMemStream.Size; + + fInfoStr := DateTimetoStr(fTimeStarted) + ' ' + + fFileName + ' ' + + FloatToStrF(Filesize / 1024, fffixed, 15, 1) + ' KB'; + + if assigned(fOnStartUpload) then + fOnStartUpload(Self); + Chunk := GetUploadChunk(FileMemStream, fFileSize, Sequence); + try + while Chunk.Size > 0 do + begin + if Terminated then + begin + if assigned(fOnAbort) then + fOnAbort(Self); + exit; + end; + fFileService.uploadChunk(isfirst, fFileName, Chunk); + isfirst := false; + + Inc(fCurrentBytePos, Chunk.Size); + FreeAndNil(Chunk); + + Inc(Sequence); + if assigned(fOnProgress) then + fOnProgress(Self); + Chunk := GetUploadChunk(FileMemStream, fFileSize, Sequence); + end; + fUploadOK := (FileSize > 0) and (FileSize = CurrentBytePos); + finally + FreeAndNil(Chunk); + end; + finally + FileMemStream.Free; + end; + end + else begin + fErrorText := 'No existe el fichero ' + fFileName; + if assigned(fOnError) then + fOnError(Self); + end; + except + on e: Exception do + begin + fErrorText := e.Message; + if assigned(fOnError) then + fOnError(Self); + end; + end; +end; + +procedure TSubirFicheroThread.OnChannelFailure(Sender: TROTransportChannel; + anException: Exception; var Retry: Boolean); +begin + if FChannelErrorsCount > FMaxConnectionErrors then + begin + FErrorText := anException.Message; + Self.Terminate; + end + else + begin + Inc(FChannelErrorsCount); + Sleep(1000); + Retry := true; + end; +end; + +end. + diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.ddp b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.ddp differ diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.dfm b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.dfm new file mode 100644 index 0000000..0432b04 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.dfm @@ -0,0 +1,123 @@ +inherited frViewHistorialCargasEDI: TfrViewHistorialCargasEDI + Width = 736 + Height = 430 + ExplicitWidth = 736 + ExplicitHeight = 430 + inherited cxGrid: TcxGrid + Width = 736 + Height = 430 + ExplicitWidth = 736 + ExplicitHeight = 430 + inherited cxGridView: TcxGridDBTableView + OptionsCustomize.ColumnGrouping = True + OptionsView.GridLines = glHorizontal + OptionsView.GroupRowStyle = grsOffice11 + object cxGridViewOK: TcxGridDBColumn + DataBinding.FieldName = 'OK' + PropertiesClassName = 'TcxCheckBoxProperties' + Properties.Glyph.Data = { + 36090000424D3609000000000000360000002800000030000000100000000100 + 18000000000000090000120B0000120B00000000000000000000EBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEB8599CD1028908B99CAEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB70 + 88E01048FF102890EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBE1E7E09EC395B0DCADEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBADB9DD7088E0ABB5D8EBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB709F5E3F812065B259CE + E4CCEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEB92A0CAEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + D8E0D459993B65CD505CC74042AA3083C87AE0E6DFEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB4050B0EBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBD8E0D450943065CD5079EA6082E0776AD06057 + B247A2C799EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB92 + 9CC30038F0848EAEEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB4F9D3B + 6AD95079EA60A3ED96D9E7D89DED8E6AD0604CAE3BD5DED2EBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEB2040C00038F00E3395EBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBAAEB9BA7EC9090ED87EBEBEBEBEBEBE3E9E197 + E28E6AD06059A247D1EAC2EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBA7B1D850 + 70E00040FF0030D0BFC3CEEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE1EDDD + CAEBC3EBEBEBEBEBEBEBEBEBEBEBEBE3E9E182E07765CD505EB359D5EACDEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEB7688CB5078E01048FF0040F07581A5EBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBE3E9E182E0774CBE4085C177D5EACDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB5068D070 + 90FF1050FF1040F00E33A4EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE3EAE189E07F4CBE4094D0 + 86D8E5D3EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEB6078D08098FF3060FF1050FF1D43C3EBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBE3EAE1B0EDA164BE50C7DFC3EBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB7088E090 + A8F080A0FF6080F03955A9EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE4EBE2CBEA + C196CF8AEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBD4D8E37088E06078D05068D0D6DBE8EBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB} + Properties.GlyphCount = 3 + Width = 20 + IsCaptionAssigned = True + end + object cxGridViewFECHA: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHA' + PropertiesClassName = 'TcxDateEditProperties' + Properties.Alignment.Vert = taVCenter + OnGetDisplayText = cxGridViewFECHAGetDisplayText + SortIndex = 0 + SortOrder = soDescending + Width = 61 + end + object cxGridViewREPORT: TcxGridDBColumn + Caption = 'Report' + DataBinding.FieldName = 'REPORT' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Vert = taVCenter + Width = 35 + end + object cxGridViewERROR_MSG: TcxGridDBColumn + Caption = 'Error' + DataBinding.FieldName = 'ERROR_MSG' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Vert = taVCenter + Width = 323 + end + end + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.dfm.cbk b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.dfm.cbk new file mode 100644 index 0000000..0432b04 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.dfm.cbk @@ -0,0 +1,123 @@ +inherited frViewHistorialCargasEDI: TfrViewHistorialCargasEDI + Width = 736 + Height = 430 + ExplicitWidth = 736 + ExplicitHeight = 430 + inherited cxGrid: TcxGrid + Width = 736 + Height = 430 + ExplicitWidth = 736 + ExplicitHeight = 430 + inherited cxGridView: TcxGridDBTableView + OptionsCustomize.ColumnGrouping = True + OptionsView.GridLines = glHorizontal + OptionsView.GroupRowStyle = grsOffice11 + object cxGridViewOK: TcxGridDBColumn + DataBinding.FieldName = 'OK' + PropertiesClassName = 'TcxCheckBoxProperties' + Properties.Glyph.Data = { + 36090000424D3609000000000000360000002800000030000000100000000100 + 18000000000000090000120B0000120B00000000000000000000EBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEB8599CD1028908B99CAEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB70 + 88E01048FF102890EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBE1E7E09EC395B0DCADEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBADB9DD7088E0ABB5D8EBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB709F5E3F812065B259CE + E4CCEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEB92A0CAEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + D8E0D459993B65CD505CC74042AA3083C87AE0E6DFEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB4050B0EBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBD8E0D450943065CD5079EA6082E0776AD06057 + B247A2C799EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB92 + 9CC30038F0848EAEEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB4F9D3B + 6AD95079EA60A3ED96D9E7D89DED8E6AD0604CAE3BD5DED2EBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEB2040C00038F00E3395EBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBAAEB9BA7EC9090ED87EBEBEBEBEBEBE3E9E197 + E28E6AD06059A247D1EAC2EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBA7B1D850 + 70E00040FF0030D0BFC3CEEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE1EDDD + CAEBC3EBEBEBEBEBEBEBEBEBEBEBEBE3E9E182E07765CD505EB359D5EACDEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEB7688CB5078E01048FF0040F07581A5EBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBE3E9E182E0774CBE4085C177D5EACDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB5068D070 + 90FF1050FF1040F00E33A4EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE3EAE189E07F4CBE4094D0 + 86D8E5D3EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEB6078D08098FF3060FF1050FF1D43C3EBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBE3EAE1B0EDA164BE50C7DFC3EBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB7088E090 + A8F080A0FF6080F03955A9EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE4EBE2CBEA + C196CF8AEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBD4D8E37088E06078D05068D0D6DBE8EBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB + EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB} + Properties.GlyphCount = 3 + Width = 20 + IsCaptionAssigned = True + end + object cxGridViewFECHA: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHA' + PropertiesClassName = 'TcxDateEditProperties' + Properties.Alignment.Vert = taVCenter + OnGetDisplayText = cxGridViewFECHAGetDisplayText + SortIndex = 0 + SortOrder = soDescending + Width = 61 + end + object cxGridViewREPORT: TcxGridDBColumn + Caption = 'Report' + DataBinding.FieldName = 'REPORT' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Vert = taVCenter + Width = 35 + end + object cxGridViewERROR_MSG: TcxGridDBColumn + Caption = 'Error' + DataBinding.FieldName = 'ERROR_MSG' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Vert = taVCenter + Width = 323 + end + end + end +end diff --git a/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.pas b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.pas new file mode 100644 index 0000000..1324623 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Cliente/uViewHistorialCargasEDI.pas @@ -0,0 +1,72 @@ +unit uViewHistorialCargasEDI; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGridBase, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, ActnList, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, uBizEDILog, cxCheckBox, + uViewGrid, cxCalendar, cxTextEdit, uDataModuleFicherosEDI, uDAInterfaces; + +type + IViewHistorialCargasEDI = interface(IViewGrid) + ['{556EBF85-7F86-49CB-A8BF-EBF299AAF9E5}'] + function GetEDILog: IBizEDILog; + procedure SetEDILog(const Value: IBizEDILog); + property EDILog: IBizEDILog read GetEDILog write SetEDILog; + end; + + TfrViewHistorialCargasEDI = class(TfrViewGrid, IViewHistorialCargasEDI) + cxGridViewFECHA: TcxGridDBColumn; + cxGridViewOK: TcxGridDBColumn; + cxGridViewERROR_MSG: TcxGridDBColumn; + cxGridViewREPORT: TcxGridDBColumn; + procedure cxGridViewFECHAGetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + protected + FEDILog : IBizEDILog; + function GetEDILog: IBizEDILog; + procedure SetEDILog(const Value: IBizEDILog); + public + property EDILog: IBizEDILog read GetEDILog write SetEDILog; + end; + + +implementation + +uses DateUtils; + + + +{$R *.dfm} + +{ TfrViewHistorialCargasEDI } + +function TfrViewHistorialCargasEDI.GetEDILog: IBizEDILog; +begin + Result := FEDILog; +end; + +procedure TfrViewHistorialCargasEDI.SetEDILog(const Value: IBizEDILog); +begin + FEDILog := Value; + dsDataSource.DataTable := FEDILog.DataTable; +end; + +procedure TfrViewHistorialCargasEDI.cxGridViewFECHAGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + ADate : TDateTime; +begin + inherited; +{ ADate := ARecord.Values[Sender.Index]; + if DaysBetween(ADate, Now) = 0 then + AText := FormatDateTime('hh:mm', ADate)} +end; + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Reglas/schEDILogClient_Intf.pas b/2.1.0/Source/Modulos/FicherosEDI/Reglas/schEDILogClient_Intf.pas new file mode 100644 index 0000000..80f2f87 --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Reglas/schEDILogClient_Intf.pas @@ -0,0 +1,154 @@ +unit schEDILogClient_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_EDILog = '{301F7728-2A2A-465E-89CD-4D36F00E1B31}'; + + { Data table names } + nme_EDILog = 'EDILog'; + + { EDILog fields } + fld_EDILogID = 'ID'; + fld_EDILogREPORT = 'REPORT'; + fld_EDILogFECHA = 'FECHA'; + fld_EDILogOK = 'OK'; + fld_EDILogERROR_MSG = 'ERROR_MSG'; + + { EDILog field indexes } + idx_EDILogID = 0; + idx_EDILogREPORT = 1; + idx_EDILogFECHA = 2; + idx_EDILogOK = 3; + idx_EDILogERROR_MSG = 4; + +type + { IEDILog } + IEDILog = interface(IDAStronglyTypedDataTable) + ['{7B8F10CA-504A-4F10-ADA7-4B805DB211FE}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetREPORTValue: String; + procedure SetREPORTValue(const aValue: String); + function GetFECHAValue: DateTime; + procedure SetFECHAValue(const aValue: DateTime); + function GetOKValue: Boolean; + procedure SetOKValue(const aValue: Boolean); + function GetERROR_MSGValue: String; + procedure SetERROR_MSGValue(const aValue: String); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property REPORT: String read GetREPORTValue write SetREPORTValue; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property OK: Boolean read GetOKValue write SetOKValue; + property ERROR_MSG: String read GetERROR_MSGValue write SetERROR_MSGValue; + end; + + { TEDILogDataTableRules } + TEDILogDataTableRules = class(TDADataTableRules, IEDILog) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetREPORTValue: String; virtual; + procedure SetREPORTValue(const aValue: String); virtual; + function GetFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetOKValue: Boolean; virtual; + procedure SetOKValue(const aValue: Boolean); virtual; + function GetERROR_MSGValue: String; virtual; + procedure SetERROR_MSGValue(const aValue: String); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property REPORT: String read GetREPORTValue write SetREPORTValue; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property OK: Boolean read GetOKValue write SetOKValue; + property ERROR_MSG: String read GetERROR_MSGValue write SetERROR_MSGValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TEDILogDataTableRules } +constructor TEDILogDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TEDILogDataTableRules.Destroy; +begin + inherited; +end; + +function TEDILogDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_EDILogID].AsInteger; +end; + +procedure TEDILogDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_EDILogID].AsInteger := aValue; +end; + +function TEDILogDataTableRules.GetREPORTValue: String; +begin + result := DataTable.Fields[idx_EDILogREPORT].AsString; +end; + +procedure TEDILogDataTableRules.SetREPORTValue(const aValue: String); +begin + DataTable.Fields[idx_EDILogREPORT].AsString := aValue; +end; + +function TEDILogDataTableRules.GetFECHAValue: DateTime; +begin + result := DataTable.Fields[idx_EDILogFECHA].AsDateTime; +end; + +procedure TEDILogDataTableRules.SetFECHAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_EDILogFECHA].AsDateTime := aValue; +end; + +function TEDILogDataTableRules.GetOKValue: Boolean; +begin + result := DataTable.Fields[idx_EDILogOK].AsBoolean; +end; + +procedure TEDILogDataTableRules.SetOKValue(const aValue: Boolean); +begin + DataTable.Fields[idx_EDILogOK].AsBoolean := aValue; +end; + +function TEDILogDataTableRules.GetERROR_MSGValue: String; +begin + result := DataTable.Fields[idx_EDILogERROR_MSG].AsString; +end; + +procedure TEDILogDataTableRules.SetERROR_MSGValue(const aValue: String); +begin + DataTable.Fields[idx_EDILogERROR_MSG].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_EDILog, TEDILogDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Reglas/schEDILogServer_Intf.pas b/2.1.0/Source/Modulos/FicherosEDI/Reglas/schEDILogServer_Intf.pas new file mode 100644 index 0000000..e0b923b --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Reglas/schEDILogServer_Intf.pas @@ -0,0 +1,167 @@ +unit schEDILogServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schEDILogClient_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_EDILogDelta = '{6BA63DE2-08BB-4D9F-8C99-EBE412CE6FEC}'; + +type + { IEDILogDelta } + IEDILogDelta = interface(IEDILog) + ['{6BA63DE2-08BB-4D9F-8C99-EBE412CE6FEC}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldREPORTValue : String; + function GetOldFECHAValue : DateTime; + function GetOldOKValue : Boolean; + function GetOldERROR_MSGValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldREPORT : String read GetOldREPORTValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldOK : Boolean read GetOldOKValue; + property OldERROR_MSG : String read GetOldERROR_MSGValue; + end; + + { TEDILogBusinessProcessorRules } + TEDILogBusinessProcessorRules = class(TDABusinessProcessorRules, IEDILog, IEDILogDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetOldIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetREPORTValue: String; virtual; + function GetOldREPORTValue: String; virtual; + procedure SetREPORTValue(const aValue: String); virtual; + function GetFECHAValue: DateTime; virtual; + function GetOldFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetOKValue: Boolean; virtual; + function GetOldOKValue: Boolean; virtual; + procedure SetOKValue(const aValue: Boolean); virtual; + function GetERROR_MSGValue: String; virtual; + function GetOldERROR_MSGValue: String; virtual; + procedure SetERROR_MSGValue(const aValue: String); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property OldID : Integer read GetOldIDValue; + property REPORT : String read GetREPORTValue write SetREPORTValue; + property OldREPORT : String read GetOldREPORTValue; + property FECHA : DateTime read GetFECHAValue write SetFECHAValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property OK : Boolean read GetOKValue write SetOKValue; + property OldOK : Boolean read GetOldOKValue; + property ERROR_MSG : String read GetERROR_MSGValue write SetERROR_MSGValue; + property OldERROR_MSG : String read GetOldERROR_MSGValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TEDILogBusinessProcessorRules } +constructor TEDILogBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TEDILogBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TEDILogBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogID]; +end; + +function TEDILogBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EDILogID]; +end; + +procedure TEDILogBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogID] := aValue; +end; + +function TEDILogBusinessProcessorRules.GetREPORTValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogREPORT]; +end; + +function TEDILogBusinessProcessorRules.GetOldREPORTValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EDILogREPORT]; +end; + +procedure TEDILogBusinessProcessorRules.SetREPORTValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogREPORT] := aValue; +end; + +function TEDILogBusinessProcessorRules.GetFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogFECHA]; +end; + +function TEDILogBusinessProcessorRules.GetOldFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EDILogFECHA]; +end; + +procedure TEDILogBusinessProcessorRules.SetFECHAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogFECHA] := aValue; +end; + +function TEDILogBusinessProcessorRules.GetOKValue: Boolean; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogOK]; +end; + +function TEDILogBusinessProcessorRules.GetOldOKValue: Boolean; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EDILogOK]; +end; + +procedure TEDILogBusinessProcessorRules.SetOKValue(const aValue: Boolean); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogOK] := aValue; +end; + +function TEDILogBusinessProcessorRules.GetERROR_MSGValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogERROR_MSG]; +end; + +function TEDILogBusinessProcessorRules.GetOldERROR_MSGValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_EDILogERROR_MSG]; +end; + +procedure TEDILogBusinessProcessorRules.SetERROR_MSGValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_EDILogERROR_MSG] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_EDILogDelta, TEDILogBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Modulos/FicherosEDI/Reglas/uBizEDILog.pas b/2.1.0/Source/Modulos/FicherosEDI/Reglas/uBizEDILog.pas new file mode 100644 index 0000000..3c79abf --- /dev/null +++ b/2.1.0/Source/Modulos/FicherosEDI/Reglas/uBizEDILog.pas @@ -0,0 +1,30 @@ +unit uBizEDILog; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDAInterfaces, + DataAbstract3_Intf, uROTypes, schEDILogClient_Intf; + +const + BIZ_EDILOG = 'Client.EDILog'; + + +type + IBizEDILog = interface(IEDILog) + ['{EED6A5BD-DC2A-4233-8097-5D212264CA22}'] + end; + + TBizEDILogDataTableRules = class(TEDILogDataTableRules, IBizEDILog) + end; + + +implementation + +initialization + RegisterDataTableRules(BIZ_EDILOG, TBizEDILogDataTableRules); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.bdsproj b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.bdsproj new file mode 100644 index 0000000..954f701 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + Parametros.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 + rtl;vcl;vclx;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;indy;cxTreeListVCLD7;dxThemeD7;cxLibraryVCLD7;cxEditorsVCLD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;dxsbD7;dxComnD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxLayoutControlD7;dxNavBarD7;dxPSCoreD7;cxIntlPrintSys3D7;PluginSDK_D7R;PngComponentsD7;PNG_D7;tb2k_d7;tbx_d7;cxExportVCLD7;cxIntlSchedulerD7;TMSD7;CEToolsPkgd7;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;dxPSTeeChartD7;dxPScxCommonD7;dxPSLnksD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxScheduler2LnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;cxVerticalGridVCLD7;EasyListviewD7;VirtualTreesD7;cxIntl5D7;ccpack70;ccpack70dsg;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;FR7;SMImportD7;SMExportD7;FRIBX7;DataAbstract_IDE_D7;GUISDK_D7;fsTee7;fs7;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;frxTee7;fsADO7;fsBDE7;fsDB7;fsIBX7 + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.cfg b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.cfg new file mode 100644 index 0000000..53e7995 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dof b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dof new file mode 100644 index 0000000..454c088 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=rtl;vcl;vclx;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;indy;cxTreeListVCLD7;dxThemeD7;cxLibraryVCLD7;cxEditorsVCLD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;dxsbD7;dxComnD7;dxBarD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxLayoutControlD7;dxNavBarD7;dxPSCoreD7;cxIntlPrintSys3D7;PluginSDK_D7R;PngComponentsD7;PNG_D7;tb2k_d7;tbx_d7;cxExportVCLD7;cxIntlSchedulerD7;TMSD7;CEToolsPkgd7;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;dxPSTeeChartD7;dxPScxCommonD7;dxPSLnksD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxScheduler2LnkD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;cxVerticalGridVCLD7;EasyListviewD7;VirtualTreesD7;cxIntl5D7;ccpack70;ccpack70dsg;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;FR7;SMImportD7;SMExportD7;FRIBX7;DataAbstract_IDE_D7;GUISDK_D7;fsTee7;fs7;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;frxTee7;fsADO7;fsBDE7;fsDB7;fsIBX7 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Cliente +Item1=..\..\Output\Servidor +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dpk b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dpk new file mode 100644 index 0000000..dc156f8 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dpk @@ -0,0 +1,58 @@ +package Parametros; + +{$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 ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + dbrtl, + dsnap, + cxLibraryD10, + dxThemeD10, + adortl, + BaseD10, + ControlesBaseD10, + dxLayoutControlD10, + dxComnD10, + JvCoreD10R, + vcldb, + vcljpg, + vclx, + Jcl, + JclVcl, + JvStdCtrlsD10R, + JvSystemD10R, + tbx_D10, + tb2k_D10; + +contains + uDataModuleParametros in 'uDataModuleParametros.pas' {dmParametros: TDAClientDataModule}, + schParametrosClient_Intf in '..\Reglas\schParametrosClient_Intf.pas', + uBizParametros in '..\Reglas\uBizParametros.pas', + uViewParametrosCentro in 'uViewParametrosCentro.pas' {frViewParametrosCentro: TCustomView}, + uViewParametrosColeccion in 'uViewParametrosColeccion.pas' {frViewParametrosColeccion: TCustomView}; + +end. diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dproj b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dproj new file mode 100644 index 0000000..3f291b5 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.dproj @@ -0,0 +1,589 @@ + + + {6be250c1-7a66-46ce-a9aa-2c4fe6aa768e} + Parametros.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Parametros.bpl + + + 7.0 + False + False + True + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + True + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Parametros.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + +
dmParametros
+
+ +
frViewParametrosCentro
+
+ +
frViewParametrosColeccion
+
+
+
+ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.drc b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.drc new file mode 100644 index 0000000..f90135a --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.drc @@ -0,0 +1,19 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\Parametros\Cliente\uDataModuleParametros.dfm */ +/* C:\Varela_D2007\Source\Modulos\Parametros\Cliente\uViewParametrosCentro.dfm */ +/* C:\Varela_D2007\Source\Modulos\Parametros\Cliente\uViewParametrosColeccion.dfm */ +/* C:\Varela_D2007\Source\Modulos\Parametros\Cliente\Parametros.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtfE.tmp */ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.identcache b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.identcache new file mode 100644 index 0000000..cb628de Binary files /dev/null and b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.identcache differ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.rc b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.0.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.res b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/2.1.0/Source/Modulos/Parametros/Cliente/Parametros.res differ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.ddp b/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.ddp differ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.dfm b/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.dfm new file mode 100644 index 0000000..4d5c1f1 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.dfm @@ -0,0 +1,214 @@ +object dmParametros: TdmParametros + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 297 + Width = 620 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvParametros' + Left = 40 + Top = 32 + end + object tbl_ListaCentros: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODFILIAL' + DataType = datString + Size = 6 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODBARRA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = True + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ListaCentros' + IndexDefs = <> + Left = 160 + Top = 96 + end + object ds_ListaCentros: TDADataSource + DataSet = tbl_ListaCentros.Dataset + DataTable = tbl_ListaCentros + Left = 160 + Top = 32 + end + object tbl_ListaColecciones: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'COLECAO' + DataType = datString + Size = 6 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESC_COLECAO' + DataType = datString + Size = 40 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = True + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ListaColecciones' + IndexDefs = <> + Left = 296 + Top = 96 + end + object dsListaColecciones: TDADataSource + DataSet = tbl_ListaColecciones.Dataset + DataTable = tbl_ListaColecciones + Left = 296 + Top = 32 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + FailureBehavior = fbBoth + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.pas b/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.pas new file mode 100644 index 0000000..c2f730f --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/uDataModuleParametros.pas @@ -0,0 +1,78 @@ +unit uDataModuleParametros; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uDataModuleBase, uROClient, + uROServiceComponent, uRORemoteService, uBizParametros, uDARemoteDataAdapter, + uDAInterfaces; + +type + TdmParametros = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_ListaCentros: TDACDSDataTable; + ds_ListaCentros: TDADataSource; + tbl_ListaColecciones: TDACDSDataTable; + dsListaColecciones: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function GetCentros : IBizCentros; + function GetColecciones : IBizColecciones; + end; + +var + dmParametros: TdmParametros; + +implementation + +{$R *.DFM} + +uses + Forms, Windows, Controls, VARELA_Intf, uEditorPreview, + uDataTableUtils, uROTypes, cxControls; + +procedure TdmParametros.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmParametros.GetCentros: IBizCentros; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_ListaCentros, dtLista); + dtLista.BusinessRulesID := BIZ_CENTROS; + Result := (dtLista as IBizCentros); + finally + HideHourglassCursor; + end; +end; + +function TdmParametros.GetColecciones: IBizColecciones; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_ListaColecciones, dtLista); + dtLista.BusinessRulesID := BIZ_COLECCIONES; + Result := (dtLista as IBizColecciones); + finally + HideHourglassCursor; + end; +end; + +initialization + dmParametros := TdmParametros.Create(nil); + +finalization + FreeAndNil(dmParametros); + +end. diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.ddp b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.ddp differ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.dfm b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.dfm new file mode 100644 index 0000000..458c077 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.dfm @@ -0,0 +1,38 @@ +inherited frViewParametrosCentro: TfrViewParametrosCentro + Width = 587 + Height = 42 + ExplicitWidth = 587 + ExplicitHeight = 42 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 587 + Height = 42 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object ccbCentro: TJvCheckedComboBox + Left = 52 + Top = 10 + Width = 392 + Height = 21 + CapSelectAll = '&Select all' + CapDeSelectAll = '&Deselect all' + NoFocusColor = clWindow + QuoteStyle = qsSingle + DropDownLines = 20 + TabOrder = 0 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Centro:' + Control = ccbCentro + ControlOptions.ShowBorder = False + end + end + end +end diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.pas b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.pas new file mode 100644 index 0000000..5809175 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosCentro.pas @@ -0,0 +1,119 @@ +unit uViewParametrosCentro; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, dxLayoutControl, StdCtrls, Mask, JvExMask, JvToolEdit, + JvCombobox, cxControls, uViewParametrosControlGrid, TBXDkPanels, + uBizParametros; + +type + IViewParametrosCentro = interface(IViewParametrosControlGrid) + ['{AE4FC794-6D44-40A0-A138-09286870CBB0}'] + + function GetCentrosSeleccionados: TStringList; + property CentrosSeleccionados : TStringList read GetCentrosSeleccionados; + function GetCodigoCentrosSeleccionados: TStringList; + property CodigoCentrosSeleccionados : TStringList read GetCodigoCentrosSeleccionados; + end; + + TfrViewParametrosCentro = class(TfrViewParametrosControlGrid, IViewParametrosCentro) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + ccbCentro: TJvCheckedComboBox; + private + FCentros : IBizCentros; + procedure RellenarListaCentros; + function GetCentrosSeleccionados: TStringList; + function GetCodigoCentrosSeleccionados: TStringList; + public + procedure Execute; override; + procedure Refresh; override; + property CentrosSeleccionados : TStringList read GetCentrosSeleccionados; + property CodigoCentrosSeleccionados : TStringList read GetCodigoCentrosSeleccionados; + procedure LimpiarSeleccion; + end; + +implementation + +uses + uDataModuleParametros, uDADataTable; + +{$R *.dfm} + +{ TfrViewParametrosCentro } + +procedure TfrViewParametrosCentro.Execute; +begin + // inherited; <- no descomentar +end; + +function TfrViewParametrosCentro.GetCentrosSeleccionados: TStringList; +var + i : integer; +begin + Result := TStringList.Create; + + FCentros.DataTable.First; + for i := 0 to ccbCentro.Items.Count - 1 do + begin + if ccbCentro.Checked[i] then + Result.Add(FCentros.FILIAL); + FCentros.DataTable.Next; + end; +end; + +function TfrViewParametrosCentro.GetCodigoCentrosSeleccionados: TStringList; +var + i : integer; +begin + Result := TStringList.Create; + + FCentros.DataTable.First; + for i := 0 to ccbCentro.Items.Count - 1 do + begin + if ccbCentro.Checked[i] then + Result.Add(FCentros.CODBARRA); + FCentros.DataTable.Next; + end; +end; + +procedure TfrViewParametrosCentro.LimpiarSeleccion; +var + i : integer; +begin + for i := 0 to ccbCentro.Items.Count - 1 do + ccbCentro.Checked[i] := False; +end; + +procedure TfrViewParametrosCentro.Refresh; +begin + // inherited; <- no descomentar + RellenarListaCentros; +end; + +procedure TfrViewParametrosCentro.RellenarListaCentros; +var + i : Integer; +begin + FCentros := dmParametros.GetCentros; + ccbCentro.Items.BeginUpdate; + + ShowHourglassCursor; + try + ccbCentro.Items.Clear; + FCentros.DataTable.Active := True; + for i := 0 to FCentros.DataTable.RecordCount - 1 do + begin + ccbCentro.Items.Add(FCentros.FILIAL); + FCentros.DataTable.Next; + end; + finally + ccbCentro.Items.EndUpdate; + HideHourglassCursor; + end; +end; + +end. diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.ddp b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.ddp differ diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.dfm b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.dfm new file mode 100644 index 0000000..b2ca9b9 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.dfm @@ -0,0 +1,38 @@ +inherited frViewParametrosColeccion: TfrViewParametrosColeccion + Width = 587 + Height = 42 + ExplicitWidth = 587 + ExplicitHeight = 42 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 587 + Height = 42 + Align = alTop + ParentBackground = True + TabOrder = 0 + AutoContentSizes = [acsWidth, acsHeight] + object ccbColeccion: TJvCheckedComboBox + Left = 64 + Top = 10 + Width = 512 + Height = 21 + CapSelectAll = '&Select all' + CapDeSelectAll = '&Deselect all' + NoFocusColor = clWindow + QuoteStyle = qsSingle + DropDownLines = 20 + TabOrder = 0 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Colecci'#243'n:' + Control = ccbColeccion + ControlOptions.ShowBorder = False + end + end + end +end diff --git a/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.pas b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.pas new file mode 100644 index 0000000..f8ee182 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Cliente/uViewParametrosColeccion.pas @@ -0,0 +1,91 @@ +unit uViewParametrosColeccion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, dxLayoutControl, StdCtrls, Mask, JvExMask, JvToolEdit, + JvCombobox, cxControls, uViewParametrosControlGrid, TBXDkPanels, + uBizParametros; + +type + IViewParametrosColeccion = interface(IViewParametrosControlGrid) + ['{5523284E-4445-4026-AFAC-B243C19F0DA7}'] + + function GetColeccionesSeleccionadas: TStringList; + property ColeccionesSeleccionadas : TStringList read GetColeccionesSeleccionadas; + end; + + TfrViewParametrosColeccion = class(TfrViewParametrosControlGrid, IViewParametrosColeccion) + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + ccbColeccion: TJvCheckedComboBox; + dxLayoutControl1Item1: TdxLayoutItem; + private + FColecciones : IBizColecciones; + procedure RellenarListaColecciones; + function GetColeccionesSeleccionadas: TStringList; + public + procedure Execute; override; + procedure Refresh; override; + property ColeccionesSeleccionadas : TStringList read GetColeccionesSeleccionadas; + end; + +implementation + +uses + uDataModuleParametros, uDADataTable; + +{$R *.dfm} + +{ TfrViewParametrosColeccion } + +procedure TfrViewParametrosColeccion.Execute; +begin + // inherited; <- no descomentar +end; + +function TfrViewParametrosColeccion.GetColeccionesSeleccionadas: TStringList; +var + i : integer; +begin + Result := TStringList.Create; + + FColecciones.DataTable.First; + for i := 0 to ccbColeccion.Items.Count - 1 do + begin + if ccbColeccion.Checked[i] then + Result.Add(FColecciones.COLECAO); + FColecciones.DataTable.Next; + end; +end; + +procedure TfrViewParametrosColeccion.Refresh; +begin + // inherited; <- no descomentar + RellenarListaColecciones; +end; + +procedure TfrViewParametrosColeccion.RellenarListaColecciones; +var + i : Integer; +begin + FColecciones := dmParametros.GetColecciones; + ccbColeccion.Items.BeginUpdate; + + ShowHourglassCursor; + try + ccbColeccion.Items.Clear; + FColecciones.DataTable.Active := True; + for i := 0 to FColecciones.DataTable.RecordCount - 1 do + begin + ccbColeccion.Items.Add(FColecciones.DESC_COLECAO); + FColecciones.DataTable.Next; + end; + finally + ccbColeccion.Items.EndUpdate; + HideHourglassCursor; + end; +end; + +end. diff --git a/2.1.0/Source/Modulos/Parametros/Reglas/schParametrosClient_Intf.pas b/2.1.0/Source/Modulos/Parametros/Reglas/schParametrosClient_Intf.pas new file mode 100644 index 0000000..fb835f0 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Reglas/schParametrosClient_Intf.pas @@ -0,0 +1,196 @@ +unit schParametrosClient_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_ListaCentros = '{CE7EAA4D-6A5B-418E-931E-61BC59E87921}'; + RID_ListaColecciones = '{30AF285C-6577-445D-A759-78E8EC8275BF}'; + + { Data table names } + nme_ListaCentros = 'ListaCentros'; + nme_ListaColecciones = 'ListaColecciones'; + + { ListaCentros fields } + fld_ListaCentrosCODFILIAL = 'CODFILIAL'; + fld_ListaCentrosCODBARRA = 'CODBARRA'; + fld_ListaCentrosFILIAL = 'FILIAL'; + + { ListaCentros field indexes } + idx_ListaCentrosCODFILIAL = 0; + idx_ListaCentrosCODBARRA = 1; + idx_ListaCentrosFILIAL = 2; + + { ListaColecciones fields } + fld_ListaColeccionesCOLECAO = 'COLECAO'; + fld_ListaColeccionesDESC_COLECAO = 'DESC_COLECAO'; + + { ListaColecciones field indexes } + idx_ListaColeccionesCOLECAO = 0; + idx_ListaColeccionesDESC_COLECAO = 1; + +type + { IListaCentros } + IListaCentros = interface(IDAStronglyTypedDataTable) + ['{FF4F6460-CEBC-40C5-A2B9-7ED81AE90A7A}'] + { Property getters and setters } + function GetCODFILIALValue: String; + procedure SetCODFILIALValue(const aValue: String); + function GetCODBARRAValue: String; + procedure SetCODBARRAValue(const aValue: String); + function GetFILIALValue: String; + procedure SetFILIALValue(const aValue: String); + + + { Properties } + property CODFILIAL: String read GetCODFILIALValue write SetCODFILIALValue; + property CODBARRA: String read GetCODBARRAValue write SetCODBARRAValue; + property FILIAL: String read GetFILIALValue write SetFILIALValue; + end; + + { TListaCentrosDataTableRules } + TListaCentrosDataTableRules = class(TDADataTableRules, IListaCentros) + private + protected + { Property getters and setters } + function GetCODFILIALValue: String; virtual; + procedure SetCODFILIALValue(const aValue: String); virtual; + function GetCODBARRAValue: String; virtual; + procedure SetCODBARRAValue(const aValue: String); virtual; + function GetFILIALValue: String; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + + { Properties } + property CODFILIAL: String read GetCODFILIALValue write SetCODFILIALValue; + property CODBARRA: String read GetCODBARRAValue write SetCODBARRAValue; + property FILIAL: String read GetFILIALValue write SetFILIALValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IListaColecciones } + IListaColecciones = interface(IDAStronglyTypedDataTable) + ['{6EACE103-97D5-4D08-9BA5-DC24826BD4C8}'] + { Property getters and setters } + function GetCOLECAOValue: String; + procedure SetCOLECAOValue(const aValue: String); + function GetDESC_COLECAOValue: String; + procedure SetDESC_COLECAOValue(const aValue: String); + + + { Properties } + property COLECAO: String read GetCOLECAOValue write SetCOLECAOValue; + property DESC_COLECAO: String read GetDESC_COLECAOValue write SetDESC_COLECAOValue; + end; + + { TListaColeccionesDataTableRules } + TListaColeccionesDataTableRules = class(TDADataTableRules, IListaColecciones) + private + protected + { Property getters and setters } + function GetCOLECAOValue: String; virtual; + procedure SetCOLECAOValue(const aValue: String); virtual; + function GetDESC_COLECAOValue: String; virtual; + procedure SetDESC_COLECAOValue(const aValue: String); virtual; + + { Properties } + property COLECAO: String read GetCOLECAOValue write SetCOLECAOValue; + property DESC_COLECAO: String read GetDESC_COLECAOValue write SetDESC_COLECAOValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TListaCentrosDataTableRules } +constructor TListaCentrosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TListaCentrosDataTableRules.Destroy; +begin + inherited; +end; + +function TListaCentrosDataTableRules.GetCODFILIALValue: String; +begin + result := DataTable.Fields[idx_ListaCentrosCODFILIAL].AsString; +end; + +procedure TListaCentrosDataTableRules.SetCODFILIALValue(const aValue: String); +begin + DataTable.Fields[idx_ListaCentrosCODFILIAL].AsString := aValue; +end; + +function TListaCentrosDataTableRules.GetCODBARRAValue: String; +begin + result := DataTable.Fields[idx_ListaCentrosCODBARRA].AsString; +end; + +procedure TListaCentrosDataTableRules.SetCODBARRAValue(const aValue: String); +begin + DataTable.Fields[idx_ListaCentrosCODBARRA].AsString := aValue; +end; + +function TListaCentrosDataTableRules.GetFILIALValue: String; +begin + result := DataTable.Fields[idx_ListaCentrosFILIAL].AsString; +end; + +procedure TListaCentrosDataTableRules.SetFILIALValue(const aValue: String); +begin + DataTable.Fields[idx_ListaCentrosFILIAL].AsString := aValue; +end; + + +{ TListaColeccionesDataTableRules } +constructor TListaColeccionesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TListaColeccionesDataTableRules.Destroy; +begin + inherited; +end; + +function TListaColeccionesDataTableRules.GetCOLECAOValue: String; +begin + result := DataTable.Fields[idx_ListaColeccionesCOLECAO].AsString; +end; + +procedure TListaColeccionesDataTableRules.SetCOLECAOValue(const aValue: String); +begin + DataTable.Fields[idx_ListaColeccionesCOLECAO].AsString := aValue; +end; + +function TListaColeccionesDataTableRules.GetDESC_COLECAOValue: String; +begin + result := DataTable.Fields[idx_ListaColeccionesDESC_COLECAO].AsString; +end; + +procedure TListaColeccionesDataTableRules.SetDESC_COLECAOValue(const aValue: String); +begin + DataTable.Fields[idx_ListaColeccionesDESC_COLECAO].AsString := aValue; +end; + + +initialization + RegisterDataTableRules(RID_ListaCentros, TListaCentrosDataTableRules); + RegisterDataTableRules(RID_ListaColecciones, TListaColeccionesDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/Parametros/Reglas/schParametrosServer_Intf.pas b/2.1.0/Source/Modulos/Parametros/Reglas/schParametrosServer_Intf.pas new file mode 100644 index 0000000..9bd380b --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Reglas/schParametrosServer_Intf.pas @@ -0,0 +1,203 @@ +unit schParametrosServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schParametrosClient_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_ListaCentrosDelta = '{5AAFEEF2-8098-4A72-BC66-D67CF1CE1D1A}'; + RID_ListaColeccionesDelta = '{98EF7287-301A-462F-AF86-9EDE8B21DFA7}'; + +type + { IListaCentrosDelta } + IListaCentrosDelta = interface(IListaCentros) + ['{5AAFEEF2-8098-4A72-BC66-D67CF1CE1D1A}'] + { Property getters and setters } + function GetOldCODFILIALValue : String; + function GetOldCODBARRAValue : String; + function GetOldFILIALValue : String; + + { Properties } + property OldCODFILIAL : String read GetOldCODFILIALValue; + property OldCODBARRA : String read GetOldCODBARRAValue; + property OldFILIAL : String read GetOldFILIALValue; + end; + + { TListaCentrosBusinessProcessorRules } + TListaCentrosBusinessProcessorRules = class(TDABusinessProcessorRules, IListaCentros, IListaCentrosDelta) + private + protected + { Property getters and setters } + function GetCODFILIALValue: String; virtual; + function GetOldCODFILIALValue: String; virtual; + procedure SetCODFILIALValue(const aValue: String); virtual; + function GetCODBARRAValue: String; virtual; + function GetOldCODBARRAValue: String; virtual; + procedure SetCODBARRAValue(const aValue: String); virtual; + function GetFILIALValue: String; virtual; + function GetOldFILIALValue: String; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + + { Properties } + property CODFILIAL : String read GetCODFILIALValue write SetCODFILIALValue; + property OldCODFILIAL : String read GetOldCODFILIALValue; + property CODBARRA : String read GetCODBARRAValue write SetCODBARRAValue; + property OldCODBARRA : String read GetOldCODBARRAValue; + property FILIAL : String read GetFILIALValue write SetFILIALValue; + property OldFILIAL : String read GetOldFILIALValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IListaColeccionesDelta } + IListaColeccionesDelta = interface(IListaColecciones) + ['{98EF7287-301A-462F-AF86-9EDE8B21DFA7}'] + { Property getters and setters } + function GetOldCOLECAOValue : String; + function GetOldDESC_COLECAOValue : String; + + { Properties } + property OldCOLECAO : String read GetOldCOLECAOValue; + property OldDESC_COLECAO : String read GetOldDESC_COLECAOValue; + end; + + { TListaColeccionesBusinessProcessorRules } + TListaColeccionesBusinessProcessorRules = class(TDABusinessProcessorRules, IListaColecciones, IListaColeccionesDelta) + private + protected + { Property getters and setters } + function GetCOLECAOValue: String; virtual; + function GetOldCOLECAOValue: String; virtual; + procedure SetCOLECAOValue(const aValue: String); virtual; + function GetDESC_COLECAOValue: String; virtual; + function GetOldDESC_COLECAOValue: String; virtual; + procedure SetDESC_COLECAOValue(const aValue: String); virtual; + + { Properties } + property COLECAO : String read GetCOLECAOValue write SetCOLECAOValue; + property OldCOLECAO : String read GetOldCOLECAOValue; + property DESC_COLECAO : String read GetDESC_COLECAOValue write SetDESC_COLECAOValue; + property OldDESC_COLECAO : String read GetOldDESC_COLECAOValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TListaCentrosBusinessProcessorRules } +constructor TListaCentrosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TListaCentrosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TListaCentrosBusinessProcessorRules.GetCODFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaCentrosCODFILIAL]; +end; + +function TListaCentrosBusinessProcessorRules.GetOldCODFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaCentrosCODFILIAL]; +end; + +procedure TListaCentrosBusinessProcessorRules.SetCODFILIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaCentrosCODFILIAL] := aValue; +end; + +function TListaCentrosBusinessProcessorRules.GetCODBARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaCentrosCODBARRA]; +end; + +function TListaCentrosBusinessProcessorRules.GetOldCODBARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaCentrosCODBARRA]; +end; + +procedure TListaCentrosBusinessProcessorRules.SetCODBARRAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaCentrosCODBARRA] := aValue; +end; + +function TListaCentrosBusinessProcessorRules.GetFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaCentrosFILIAL]; +end; + +function TListaCentrosBusinessProcessorRules.GetOldFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaCentrosFILIAL]; +end; + +procedure TListaCentrosBusinessProcessorRules.SetFILIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaCentrosFILIAL] := aValue; +end; + + +{ TListaColeccionesBusinessProcessorRules } +constructor TListaColeccionesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TListaColeccionesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TListaColeccionesBusinessProcessorRules.GetCOLECAOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaColeccionesCOLECAO]; +end; + +function TListaColeccionesBusinessProcessorRules.GetOldCOLECAOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaColeccionesCOLECAO]; +end; + +procedure TListaColeccionesBusinessProcessorRules.SetCOLECAOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaColeccionesCOLECAO] := aValue; +end; + +function TListaColeccionesBusinessProcessorRules.GetDESC_COLECAOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ListaColeccionesDESC_COLECAO]; +end; + +function TListaColeccionesBusinessProcessorRules.GetOldDESC_COLECAOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ListaColeccionesDESC_COLECAO]; +end; + +procedure TListaColeccionesBusinessProcessorRules.SetDESC_COLECAOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ListaColeccionesDESC_COLECAO] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_ListaCentrosDelta, TListaCentrosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_ListaColeccionesDelta, TListaColeccionesBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Modulos/Parametros/Reglas/uBizParametros.pas b/2.1.0/Source/Modulos/Parametros/Reglas/uBizParametros.pas new file mode 100644 index 0000000..b7ec883 --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Reglas/uBizParametros.pas @@ -0,0 +1,49 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2007 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uBizParametros; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDBSelectionList, + schParametrosClient_Intf; + + +const + BIZ_CENTROS = 'Client.Centros'; + BIZ_COLECCIONES = 'Client.Colecciones'; + +type + IBizCentros = interface(IListaCentros) + ['{1B5A35E8-1243-4222-BB86-558574C0F2AE}'] + end; + + IBizColecciones = interface(IListaColecciones) + ['{BF62BD66-69B4-4134-954E-724C7C65CB5C}'] + end; + + TBizCentrosDataTableRules = class(TListaCentrosDataTableRules, IBizCentros) + end; + + TBizColeccionesDataTableRules = class(TListaColeccionesDataTableRules, IBizColecciones) + end; + +implementation + +uses + uDataModuleParametros; + +{ TBizCentrosDataTableRules } + +initialization + RegisterDataTableRules(BIZ_CENTROS, TBizCentrosDataTableRules); + RegisterDataTableRules(BIZ_COLECCIONES, TBizColeccionesDataTableRules); + +end. + diff --git a/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.ddp b/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.dfm b/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.dfm new file mode 100644 index 0000000..63896cc --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.dfm @@ -0,0 +1,109 @@ +object srvParametros: TsrvParametros + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schParametros + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 + object schParametros: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'SELECT'#10' RDX_FILIALES.CODFILIAL, RDX_FILIALES.CODBARRA, FILI' + + 'AIS.FILIAL'#10'FROM'#10' RDX_FILIALES INNER JOIN FILIAIS ON (RDX_FILI' + + 'ALES.CODFILIAL = FILIAIS.COD_FILIAL)'#10'WHERE'#10' RDX_FILIALES.COD' + + 'FILIAL <> '#39'000001'#39 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODFILIAL' + TableField = 'CODFILIAL' + end + item + DatasetField = 'CODBARRA' + TableField = 'CODBARRA' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end> + end> + Name = 'ListaCentros' + Fields = < + item + Name = 'CODFILIAL' + DataType = datString + Size = 6 + end + item + Name = 'CODBARRA' + DataType = datString + Size = 17 + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'SELECT'#10' COLECOES.COLECAO, COLECOES.DESC_COLECAO'#10'FROM'#10' CO' + + 'LECOES'#10'/*'#10'WHERE'#10' COLECOES.COLECAO NOT IN ('#39'IND'#39', '#39'PRI'#39', '#39'009' + + #39')'#10'*/'#10'ORDER BY COLECOES.COLECAO DESC'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'COLECAO' + TableField = 'COLECAO' + end + item + DatasetField = 'DESC_COLECAO' + TableField = 'DESC_COLECAO' + end> + end> + Name = 'ListaColecciones' + Fields = < + item + Name = 'COLECAO' + DataType = datString + Size = 6 + end + item + Name = 'DESC_COLECAO' + DataType = datString + Size = 40 + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 40 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.pas b/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.pas new file mode 100644 index 0000000..3cc706d --- /dev/null +++ b/2.1.0/Source/Modulos/Parametros/Servidor/srvParametros_Impl.pas @@ -0,0 +1,48 @@ +unit srvParametros_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAScriptingProvider, uDABusinessProcessor, + uDAClasses, uDADataTable, uDABINAdapter, uDADataStreamer; + + +type + { TsrvParametros } + TsrvParametros = class(TDARemoteService, IsrvParametros) + DABINAdapter: TDABINAdapter; + schParametros: TDASchema; + private + protected + { IsrvParametros methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer; + +procedure Create_srvParametros(out anInstance : IUnknown); +begin + anInstance := TsrvParametros.Create(NIL); +end; + +{ srvParametros } +initialization + TROClassFactory.Create('srvParametros', Create_srvParametros, TsrvParametros_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.bdsproj b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.bdsproj new file mode 100644 index 0000000..6072fed --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.bdsproj @@ -0,0 +1,679 @@ + + + + + + + + + + + + Recepciones.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 + 0 + 1 + 0 + 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 + + + + 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 + + + Intraweb 8.0 Design Package for Borland Development Studio 2006 + + + + diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.cfg b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.cfg new file mode 100644 index 0000000..a34a309 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dof b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dof new file mode 100644 index 0000000..a44450d --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Cliente +Item1=..\..\Output\Servidor +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dpk b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dpk new file mode 100644 index 0000000..ad71ba4 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dpk @@ -0,0 +1,85 @@ +package Recepciones; + +{$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 OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + dbrtl, + dsnap, + BaseD10, + vcl, + adortl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + GUISDK_D10, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + cxTreeListD10, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + JvGlobusD10R, + ControlesBaseD10, + Parametros, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + dxPSCoreD10, + dxComnD10, + JvCustomD10R, + bdertl, + VclSmp, + dxPScxGridLnkD10, + dxPScxCommonD10, + dxPSLnksD10, + designide, + vclshlctrls, + dclcxLibraryD10; + +contains + uPluginControllerRecepciones in 'uPluginControllerRecepciones.pas' {ModuleRecepciones: TModuleController}, + uDataModuleRecepciones in 'uDataModuleRecepciones.pas' {dmRecepciones: TDAClientDataModule}, + uBizRecepciones in '..\Reglas\uBizRecepciones.pas', + uViewListaRecepciones in 'uViewListaRecepciones.pas' {frViewListaRecepciones: TCustomView}, + uEditorListaRecepciones in 'uEditorListaRecepciones.pas' {fEditorListaRecepciones: TCustomEditor}, + uEditorAjustarRecepciones in 'uEditorAjustarRecepciones.pas' {fEditorAjustarRecepciones}, + uViewListaRecepcionesAlbaran in 'uViewListaRecepcionesAlbaran.pas' {frViewListaRecepcionesAlbaran: TCustomView}, + uEditorListaRecepcionesAlbaran in 'uEditorListaRecepcionesAlbaran.pas' {fEditorListaRecepcionesAlbaran: TCustomEditor}; + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dproj b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dproj new file mode 100644 index 0000000..418d2dc --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.dproj @@ -0,0 +1,627 @@ + + + {5990f68e-d16f-46ae-93db-ba7d141d4021} + Recepciones.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Recepciones.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0 + Intraweb 8.0 Design Package for Borland Development Studio 2006 + Recepciones.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmRecepciones
+
+ +
fEditorAjustarRecepciones
+
+ +
fEditorListaRecepciones
+
+ +
fEditorListaRecepcionesAlbaran
+
+ +
ModuleRecepciones
+
+ +
frViewListaRecepciones
+
+ +
frViewListaRecepcionesAlbaran
+
+
+
+ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.drc b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.drc new file mode 100644 index 0000000..a754437 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.drc @@ -0,0 +1,23 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uDataModuleRecepciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uViewListaRecepciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uEditorListaRecepciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uViewListaRecepcionesAlbaran.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uEditorListaRecepcionesAlbaran.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uPluginControllerRecepciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\uEditorAjustarRecepciones.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Cliente\Recepciones.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1C.tmp */ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.identcache b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.identcache new file mode 100644 index 0000000..ce259cd Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.identcache differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.rc b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.res b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/Recepciones.res differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/cxVerticalGridD10.drc b/2.1.0/Source/Modulos/Recepciones/Cliente/cxVerticalGridD10.drc new file mode 100644 index 0000000..e520ba1 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/cxVerticalGridD10.drc @@ -0,0 +1,23 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x52", "\x00", "\x4f", "\x00", "\x44", "\x00", /* 0020: .R.O.D. */ + "\x58", "\x00", "\x53", "\x00", "\x6f", "\x00", "\x63", "\x00", /* 0028: X.S.o.c. */ + "\x6b", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0030: k. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0038: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0040: y... */ +END + diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/cxVerticalGridVCLD7.drc b/2.1.0/Source/Modulos/Recepciones/Cliente/cxVerticalGridVCLD7.drc new file mode 100644 index 0000000..ae9acff --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/cxVerticalGridVCLD7.drc @@ -0,0 +1,22 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x43", "\x00", "\x6f", "\x00", "\x72", "\x00", /* 0020: .C.o.r. */ + "\x65", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0028: e. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0030: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0038: y... */ +END + diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/dxLayoutControlD10.drc b/2.1.0/Source/Modulos/Recepciones/Cliente/dxLayoutControlD10.drc new file mode 100644 index 0000000..e520ba1 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/dxLayoutControlD10.drc @@ -0,0 +1,23 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x52", "\x00", "\x4f", "\x00", "\x44", "\x00", /* 0020: .R.O.D. */ + "\x58", "\x00", "\x53", "\x00", "\x6f", "\x00", "\x63", "\x00", /* 0028: X.S.o.c. */ + "\x6b", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0030: k. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0038: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0040: y... */ +END + diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/rtl.drc b/2.1.0/Source/Modulos/Recepciones/Cliente/rtl.drc new file mode 100644 index 0000000..a81d7c4 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/rtl.drc @@ -0,0 +1,10 @@ +/* VER150 + 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/2.1.0/Source/Modulos/Recepciones/Cliente/uDataModuleRecepciones.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uDataModuleRecepciones.dfm new file mode 100644 index 0000000..8853e30 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uDataModuleRecepciones.dfm @@ -0,0 +1,1069 @@ +object dmRecepciones: TdmRecepciones + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 364 + Width = 620 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvRecepciones' + Left = 64 + Top = 32 + end + object tbl_Recepciones: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + ReadOnly = True + DictionaryEntry = 'Recepciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + ReadOnly = True + DictionaryEntry = 'Recepciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + ReadOnly = True + DictionaryEntry = 'Recepciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + ReadOnly = True + DictionaryEntry = 'Recepciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + ReadOnly = True + DictionaryEntry = 'Recepciones_FECHA' + InPrimaryKey = True + end + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DictionaryEntry = 'Recepciones_OBSERVACIONES_ALBARAN' + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_CONTABILIZAR_ALBARAN' + end + item + Name = 'E38' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E48' + end + item + Name = 'ENVIADO' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_ENVIADO' + end + item + Name = 'R38' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R38' + end + item + Name = 'R40' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R40' + end + item + Name = 'R42' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R42' + end + item + Name = 'R44' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R44' + end + item + Name = 'R46' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R46' + end + item + Name = 'R48' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R48' + end + item + Name = 'RECIBIDO' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RECIBIDO' + end + item + Name = 'RR38' + DataType = datFloat + DisplayLabel = 'RR38/S' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR38' + end + item + Name = 'RR40' + DataType = datFloat + DisplayLabel = 'RR40/M' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR40' + end + item + Name = 'RR42' + DataType = datFloat + DisplayLabel = 'RR42/L' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR42' + end + item + Name = 'RR44' + DataType = datFloat + DisplayLabel = 'RR44/XL' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR44' + end + item + Name = 'RR46' + DataType = datFloat + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR46' + end + item + Name = 'RR48' + DataType = datFloat + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR48' + end + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + LogChanges = False + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RECIBIDO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + LogChanges = False + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_DIFERENCIA' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Recepciones' + IndexDefs = <> + Left = 208 + Top = 32 + end + object ds_Recepciones: TDADataSource + DataSet = tbl_Recepciones.Dataset + DataTable = tbl_Recepciones + Left = 208 + Top = 88 + end + object tbl_RecepcionesAprobadas: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + ReadOnly = True + DictionaryEntry = 'Recepciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + ReadOnly = True + DictionaryEntry = 'Recepciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + ReadOnly = True + DictionaryEntry = 'Recepciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + ReadOnly = True + DictionaryEntry = 'Recepciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + ReadOnly = True + DictionaryEntry = 'Recepciones_FECHA' + InPrimaryKey = True + end + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DictionaryEntry = 'Recepciones_OBSERVACIONES_ALBARAN' + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_CONTABILIZAR_ALBARAN' + end + item + Name = 'E38' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E48' + end + item + Name = 'ENVIADO' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_ENVIADO' + end + item + Name = 'R38' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R38' + end + item + Name = 'R40' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R40' + end + item + Name = 'R42' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R42' + end + item + Name = 'R44' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R44' + end + item + Name = 'R46' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R46' + end + item + Name = 'R48' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R48' + end + item + Name = 'RECIBIDO' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RECIBIDO' + end + item + Name = 'RR38' + DataType = datFloat + DisplayLabel = 'RR38/S' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR38' + end + item + Name = 'RR40' + DataType = datFloat + DisplayLabel = 'RR40/M' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR40' + end + item + Name = 'RR42' + DataType = datFloat + DisplayLabel = 'RR42/L' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR42' + end + item + Name = 'RR44' + DataType = datFloat + DisplayLabel = 'RR44/XL' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR44' + end + item + Name = 'RR46' + DataType = datFloat + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR46' + end + item + Name = 'RR48' + DataType = datFloat + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR48' + end + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + LogChanges = False + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RECIBIDO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + LogChanges = False + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_DIFERENCIA' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'RecepcionesAprobadas' + IndexDefs = <> + Left = 352 + Top = 32 + end + object ds_RecepcionesAprobadas: TDADataSource + DataSet = tbl_RecepcionesAprobadas.Dataset + DataTable = tbl_RecepcionesAprobadas + Left = 352 + Top = 88 + end + object tbl_RecepcionesPendientes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + ReadOnly = True + DictionaryEntry = 'Recepciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + ReadOnly = True + DictionaryEntry = 'Recepciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + ReadOnly = True + DictionaryEntry = 'Recepciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + ReadOnly = True + DictionaryEntry = 'Recepciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + ReadOnly = True + DictionaryEntry = 'Recepciones_FECHA' + InPrimaryKey = True + end + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DictionaryEntry = 'Recepciones_OBSERVACIONES_ALBARAN' + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_CONTABILIZAR_ALBARAN' + end + item + Name = 'E38' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E48' + end + item + Name = 'ENVIADO' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_ENVIADO' + end + item + Name = 'R38' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R38' + end + item + Name = 'R40' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R40' + end + item + Name = 'R42' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R42' + end + item + Name = 'R44' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R44' + end + item + Name = 'R46' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R46' + end + item + Name = 'R48' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_R48' + end + item + Name = 'RECIBIDO' + DataType = datFloat + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RECIBIDO' + end + item + Name = 'RR38' + DataType = datFloat + DisplayLabel = 'RR38/S' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR38' + end + item + Name = 'RR40' + DataType = datFloat + DisplayLabel = 'RR40/M' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR40' + end + item + Name = 'RR42' + DataType = datFloat + DisplayLabel = 'RR42/L' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR42' + end + item + Name = 'RR44' + DataType = datFloat + DisplayLabel = 'RR44/XL' + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR44' + end + item + Name = 'RR46' + DataType = datFloat + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR46' + end + item + Name = 'RR48' + DataType = datFloat + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RR48' + end + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + LogChanges = False + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_RECIBIDO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + LogChanges = False + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_DIFERENCIA' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'RecepcionesPendientes' + IndexDefs = <> + Left = 488 + Top = 32 + end + object ds_RecepcionesPendientes: TDADataSource + DataSet = tbl_RecepcionesPendientes.Dataset + DataTable = tbl_RecepcionesPendientes + Left = 488 + Top = 88 + end + object tbl_RecepcionesAlbaran: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADOALBARAN' + DataType = datString + Size = 15 + DisplayLabel = 'ESTADO_ALBARAN' + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'ESTADOPRODUCTO' + DataType = datString + Size = 9 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + ReadOnly = True + DictionaryEntry = 'Recepciones_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + LogChanges = False + ReadOnly = True + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + ReadOnly = True + DictionaryEntry = 'Recepciones_COLOR' + end + item + Name = 'E38' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E38/S' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E40/M' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E42/L' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E44/XL' + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + LogChanges = False + ReadOnly = True + Alignment = taRightJustify + DictionaryEntry = 'Recepciones_E48' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'RecepcionesAlbaran' + IndexDefs = <> + Left = 208 + Top = 192 + end + object ds_RecepcionesAlbaran: TDADataSource + DataSet = tbl_RecepcionesAlbaran.Dataset + DataTable = tbl_RecepcionesAlbaran + Left = 208 + Top = 248 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'Recepciones' + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = False + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + Left = 64 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uDataModuleRecepciones.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uDataModuleRecepciones.pas new file mode 100644 index 0000000..1216728 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uDataModuleRecepciones.pas @@ -0,0 +1,131 @@ +unit uDataModuleRecepciones; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uDataModuleBase, uROClient, + uROServiceComponent, uRORemoteService, uBizRecepciones, uDARemoteDataAdapter, + uDAInterfaces; + +type + TdmRecepciones = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_Recepciones: TDACDSDataTable; + ds_Recepciones: TDADataSource; + tbl_RecepcionesAprobadas: TDACDSDataTable; + ds_RecepcionesAprobadas: TDADataSource; + tbl_RecepcionesPendientes: TDACDSDataTable; + ds_RecepcionesPendientes: TDADataSource; + tbl_RecepcionesAlbaran: TDACDSDataTable; + ds_RecepcionesAlbaran: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + function GetItems : IBizRecepciones; overload; + function GetItems(const AEstado : TInvRecepcionEstado) : IBizRecepciones; overload; + function GetItemsAlbaran : IBizRecepcionesAlbaran; overload; + function GetItemsAlbaran(const AEstado : TInvRecepcionAlbaranEstado) : IBizRecepcionesAlbaran; overload; + end; + +var + dmRecepciones: TdmRecepciones; + +implementation + +{$R *.DFM} + +uses + Forms, Windows, Controls, VARELA_Intf, uEditorPreview, + uDataTableUtils, uROTypes, cxControls; + + +procedure TdmRecepciones.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmRecepciones.GetItems: IBizRecepciones; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Recepciones, dtLista); + dtLista.BusinessRulesID := BIZ_RECEPCIONES; + Result := (dtLista as IBizRecepciones); + finally + HideHourglassCursor; + end; +end; + +function TdmRecepciones.GetItems( + const AEstado: TInvRecepcionEstado): IBizRecepciones; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + + case AEstado of + tirPendiente : CloneDataTable(tbl_RecepcionesPendientes, dtLista); + tirAprobado : CloneDataTable(tbl_RecepcionesAprobadas, dtLista); + end; + + dtLista.BusinessRulesID := BIZ_RECEPCIONES; + Result := (dtLista as IBizRecepciones); + finally + HideHourglassCursor; + end; +end; + +function TdmRecepciones.GetItemsAlbaran: IBizRecepcionesAlbaran; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_RecepcionesAlbaran, dtLista); + dtLista.BusinessRulesID := BIZ_RECEPCIONESALBARAN; + Result := (dtLista as IBizRecepcionesAlbaran); + finally + HideHourglassCursor; + end; +end; + +function TdmRecepciones.GetItemsAlbaran(const AEstado: TInvRecepcionAlbaranEstado): IBizRecepcionesAlbaran; +var + dtLista: IBizRecepcionesAlbaran; +begin + ShowHourglassCursor; + try + dtLista := GetItemsAlbaran; + + with dtLista.DataTable.Where do + begin + Clear; + case AEstado of + tiraPendiente : AddCondition('ESTADOALBARAN', cEqual, 'P'); + tiraRecibido : AddCondition('ESTADOALBARAN', cEqual, 'R'); + end; + end; + + Result := dtLista; + finally + HideHourglassCursor; + end; +end; + +initialization + dmRecepciones := TdmRecepciones.Create(nil); + +finalization + FreeAndNil(dmRecepciones); + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.ddp b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.ddp differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.dfm new file mode 100644 index 0000000..a9ae5d2 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.dfm @@ -0,0 +1,907 @@ +object fEditorAjustarRecepciones: TfEditorAjustarRecepciones + Left = 490 + Top = 337 + BorderStyle = bsDialog + Caption = 'Modificaci'#243'n de recepciones de productos' + ClientHeight = 536 + ClientWidth = 753 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 753 + Height = 73 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'MS Sans Serif' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'MS Sans Serif' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Modificaci'#243'n de recepciones de productos') + Comments.Strings = ( + '') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = True + Gradient.Orientation = fgdVertical + BufferedDraw = False + end + object Bevel1: TBevel + Left = 11 + Top = 483 + Width = 730 + Height = 4 + Shape = bsBottomLine + end + object bAceptar: TButton + Left = 572 + Top = 496 + Width = 75 + Height = 25 + Caption = '&Aceptar' + ModalResult = 1 + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 666 + Top = 496 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 73 + Width = 753 + Height = 403 + ParentBackground = True + TabOrder = 2 + AutoContentSizes = [acsWidth, acsHeight] + object Bevel2: TBevel + Left = 22 + Top = 224 + Width = 50 + Height = 10 + Shape = bsBottomLine + end + object Label1: TLabel + Left = 22 + Top = 260 + Width = 86 + Height = 13 + Caption = 'Cantidad enviada:' + end + object Label2: TLabel + Left = 22 + Top = 335 + Width = 84 + Height = 13 + Caption = 'Cantidad por EDI:' + end + object Label3: TLabel + Left = 61 + Top = 364 + Width = 45 + Height = 13 + Caption = 'Cantidad:' + end + object edtEnv40: TcxDBMaskEdit + Left = 213 + Top = 258 + DataBinding.DataField = 'E40' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 9 + Width = 25 + end + object edtEnv38: TcxDBMaskEdit + Left = 114 + Top = 258 + DataBinding.DataField = 'E38' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 8 + Width = 25 + end + object edtEnv42: TcxDBMaskEdit + Left = 319 + Top = 258 + DataBinding.DataField = 'E42' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 10 + Width = 25 + end + object edtEnv44: TcxDBMaskEdit + Left = 418 + Top = 258 + DataBinding.DataField = 'E44' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 11 + Width = 25 + end + object edtEnv46: TcxDBMaskEdit + Left = 539 + Top = 258 + DataBinding.DataField = 'E46' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 12 + Width = 25 + end + object edtEnv48: TcxDBMaskEdit + Left = 638 + Top = 258 + DataBinding.DataField = 'E48' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 13 + Width = 25 + end + object edtRec38: TcxDBMaskEdit + Left = 112 + Top = 333 + DataBinding.DataField = 'R38' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 14 + Width = 98 + end + object edtRec40: TcxDBMaskEdit + Left = 216 + Top = 333 + DataBinding.DataField = 'R40' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 16 + Width = 98 + end + object edtRec42: TcxDBMaskEdit + Left = 320 + Top = 333 + DataBinding.DataField = 'R42' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 18 + Width = 98 + end + object edtRec44: TcxDBMaskEdit + Left = 424 + Top = 333 + DataBinding.DataField = 'R44' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 20 + Width = 98 + end + object edtRec46: TcxDBMaskEdit + Left = 528 + Top = 333 + DataBinding.DataField = 'R46' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 22 + Width = 98 + end + object edtRec48: TcxDBMaskEdit + Left = 632 + Top = 333 + DataBinding.DataField = 'R48' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 24 + Width = 98 + end + object edtRecR48: TcxCurrencyEdit + Left = 632 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 25 + Width = 98 + end + object edtRecR46: TcxCurrencyEdit + Left = 528 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 23 + Width = 98 + end + object edtRecR44: TcxCurrencyEdit + Left = 424 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 21 + Width = 98 + end + object edtRecR42: TcxCurrencyEdit + Left = 320 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 19 + Width = 98 + end + object edtRecR40: TcxCurrencyEdit + Left = 216 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 17 + Width = 98 + end + object edtRecR38: TcxCurrencyEdit + Left = 112 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 15 + Width = 98 + end + object edtFecha: TcxDBLabel + Left = 133 + Top = 28 + AutoSize = True + DataBinding.DataField = 'FECHA' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + end + object edtCentro: TcxDBLabel + Left = 185 + Top = 28 + AutoSize = True + DataBinding.DataField = 'FILIAL' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + end + object edtProducto: TcxDBLabel + Left = 133 + Top = 51 + AutoSize = True + DataBinding.DataField = 'PRODUCTO' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + end + object edtColor: TcxDBLabel + Left = 613 + Top = 51 + DataBinding.DataField = 'COLOR' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 118 + end + object edtAlbaran: TcxDBLabel + Left = 133 + Top = 104 + AutoSize = True + DataBinding.DataField = 'ALBARAN' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + end + object cbEstadoAlbaran: TcxComboBox + Left = 133 + Top = 127 + Properties.Items.Strings = ( + 'Ninguna' + 'Env'#237'o perdido' + 'Env'#237'o retrasado' + 'Env'#237'o devuelto' + 'Otros') + 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 + Text = 'cbEstadoAlbaran' + Width = 156 + end + object memEstadoAlbaran: TcxMemo + Left = 22 + Top = 172 + Lines.Strings = ( + 'memEstadoAlbaran') + 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 + Height = 46 + Width = 708 + end + object cbContabilizarAlbaran: TcxCheckBox + Left = 348 + Top = 127 + Caption = 'Contabilizar este albar'#225'n' + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 'S' + Properties.ValueUnchecked = 'N' + State = cbsGrayed + 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 = 319 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Datos generales' + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item31: TdxLayoutItem + Caption = 'Fecha del movimiento:' + Control = edtFecha + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item17: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Centro:' + Control = edtCentro + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group3: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item32: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Producto:' + Control = edtProducto + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item33: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Color:' + Control = edtColor + ControlOptions.MinWidth = 50 + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group4: TdxLayoutGroup + Caption = 'Datos del albar'#225'n de env'#237'o' + object dxLayoutControl1Group8: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group7: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Albar'#225'n de env'#237'o:' + Control = edtAlbaran + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group6: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Estado del env'#237'o' + Control = cbEstadoAlbaran + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'cxCheckBox1' + ShowCaption = False + Control = cbContabilizarAlbaran + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Item6: TdxLayoutItem + Caption = 'Observaciones sobre el albar'#225'n:' + CaptionOptions.AlignVert = tavTop + CaptionOptions.Layout = clTop + Control = memEstadoAlbaran + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item9: TdxLayoutItem + Control = Bevel2 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group9: TdxLayoutGroup + Caption = 'New Group' + ShowCaption = False + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item16: TdxLayoutItem + Caption = 'Tallas:' + CaptionOptions.AlignHorz = taRightJustify + CaptionOptions.Layout = clTop + Offsets.Top = 2 + Control = Label1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item11: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '38/S' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv38 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item10: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '40/M' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv40 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item12: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '42/L' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv42 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item13: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '44/XL' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv44 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item14: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '46' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv46 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item15: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '48' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtEnv48 + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + Caption = 'Datos de recepci'#243'n del env'#237'o' + LayoutDirection = ldHorizontal + object dxLayoutControl1Group16: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item23: TdxLayoutItem + Caption = 'Tallas:' + CaptionOptions.AlignHorz = taRightJustify + CaptionOptions.Layout = clTop + Offsets.Top = 2 + Control = Label2 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item30: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + CaptionOptions.Layout = clTop + Offsets.Top = 10 + ShowCaption = False + Control = Label3 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group10: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '38/S' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec38 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item29: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR38 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group11: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '40/M' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec40 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item28: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR40 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group12: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '42/L' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec42 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item27: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR42 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group13: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item20: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '44/XL' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec44 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item26: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR44 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group14: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item21: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '46' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec46 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item25: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR46 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group15: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item22: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '48' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec48 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item24: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR48 + ControlOptions.ShowBorder = False + end + end + end + end + end + object dsDataSource: TDADataSource + Left = 200 + Top = 496 + end +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.pas new file mode 100644 index 0000000..0e063e6 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorAjustarRecepciones.pas @@ -0,0 +1,351 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorAjustarRecepciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, JvExControls, JvComponent, + JvgWizardHeader, ExtCtrls, cxStyles, cxCustomData, uBizRecepciones, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, + cxCurrencyEdit, uDADataTable, cxGridLevel, cxGridCustomTableView, + cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, dxLayoutControl, + cxContainer, cxTextEdit, cxDBEdit, cxMemo, cxMaskEdit, cxDropDownEdit, + cxCheckBox, cxCalendar, cxLabel, cxDBLabel, uDAInterfaces; + +type + IEditorAjustarRecepciones = interface + ['{549191AB-7CF0-464A-872B-ECBCD0088A25}'] + function GetItems : IBizRecepciones; + procedure SetItems (const AValue : IBizRecepciones); + property Items : IBizRecepciones read GetItems write SetItems; + end; + + TfEditorAjustarRecepciones = class(TForm, IEditorAjustarRecepciones) + bAceptar: TButton; + bCancelar: TButton; + JvgWizardHeader1: TJvgWizardHeader; + Bevel1: TBevel; + dsDataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Group4: TdxLayoutGroup; + dxLayoutControl1Group5: TdxLayoutGroup; + dxLayoutControl1Item9: TdxLayoutItem; + Bevel2: TBevel; + dxLayoutControl1Group8: TdxLayoutGroup; + dxLayoutControl1Item10: TdxLayoutItem; + edtEnv40: TcxDBMaskEdit; + dxLayoutControl1Group9: TdxLayoutGroup; + dxLayoutControl1Item11: TdxLayoutItem; + edtEnv38: TcxDBMaskEdit; + dxLayoutControl1Item12: TdxLayoutItem; + edtEnv42: TcxDBMaskEdit; + dxLayoutControl1Item13: TdxLayoutItem; + edtEnv44: TcxDBMaskEdit; + dxLayoutControl1Item14: TdxLayoutItem; + edtEnv46: TcxDBMaskEdit; + dxLayoutControl1Item15: TdxLayoutItem; + edtEnv48: TcxDBMaskEdit; + dxLayoutControl1Item16: TdxLayoutItem; + Label1: TLabel; + dxLayoutControl1Item2: TdxLayoutItem; + edtRec38: TcxDBMaskEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtRec40: TcxDBMaskEdit; + dxLayoutControl1Item4: TdxLayoutItem; + edtRec42: TcxDBMaskEdit; + dxLayoutControl1Item20: TdxLayoutItem; + edtRec44: TcxDBMaskEdit; + dxLayoutControl1Item21: TdxLayoutItem; + edtRec46: TcxDBMaskEdit; + dxLayoutControl1Item22: TdxLayoutItem; + edtRec48: TcxDBMaskEdit; + dxLayoutControl1Item23: TdxLayoutItem; + Label2: TLabel; + dxLayoutControl1Item24: TdxLayoutItem; + edtRecR48: TcxCurrencyEdit; + dxLayoutControl1Item25: TdxLayoutItem; + edtRecR46: TcxCurrencyEdit; + dxLayoutControl1Item26: TdxLayoutItem; + edtRecR44: TcxCurrencyEdit; + dxLayoutControl1Item27: TdxLayoutItem; + edtRecR42: TcxCurrencyEdit; + dxLayoutControl1Item28: TdxLayoutItem; + edtRecR40: TcxCurrencyEdit; + dxLayoutControl1Item29: TdxLayoutItem; + edtRecR38: TcxCurrencyEdit; + dxLayoutControl1Group10: TdxLayoutGroup; + dxLayoutControl1Group11: TdxLayoutGroup; + dxLayoutControl1Group12: TdxLayoutGroup; + dxLayoutControl1Group13: TdxLayoutGroup; + dxLayoutControl1Group14: TdxLayoutGroup; + dxLayoutControl1Group15: TdxLayoutGroup; + dxLayoutControl1Item30: TdxLayoutItem; + Label3: TLabel; + dxLayoutControl1Group16: TdxLayoutGroup; + edtFecha: TcxDBLabel; + dxLayoutControl1Item31: TdxLayoutItem; + edtCentro: TcxDBLabel; + dxLayoutControl1Item17: TdxLayoutItem; + edtProducto: TcxDBLabel; + dxLayoutControl1Item32: TdxLayoutItem; + edtColor: TcxDBLabel; + dxLayoutControl1Item33: TdxLayoutItem; + edtAlbaran: TcxDBLabel; + dxLayoutControl1Item1: TdxLayoutItem; + cbEstadoAlbaran: TcxComboBox; + dxLayoutControl1Item5: TdxLayoutItem; + memEstadoAlbaran: TcxMemo; + dxLayoutControl1Item6: TdxLayoutItem; + cbContabilizarAlbaran: TcxCheckBox; + dxLayoutControl1Item8: TdxLayoutItem; + dxLayoutControl1Group7: TdxLayoutGroup; + dxLayoutControl1Group6: TdxLayoutGroup; + procedure FormShow(Sender: TObject); + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure bAceptarClick(Sender: TObject); + private + FItems : IBizRecepciones; + FHayErrores : Boolean; + FAlbaranModificado : Boolean; + procedure CargarValores; + procedure SalvarValores; + procedure ModificarAlbaran; + protected + function GetItems : IBizRecepciones; + procedure SetItems (const AValue : IBizRecepciones); + public + property Items : IBizRecepciones read GetItems write SetItems; + end; + + +implementation + +uses + uEditorUtils, uDataModuleRecepciones; + +{$R *.dfm} + +function ShowEditorAjustarRecepciones (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorAjustarRecepciones; +begin + AEditor := TfEditorAjustarRecepciones.Create(Application); + try + AEditor.Items := (ABizObject as IBizRecepciones); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorCambioReferenciaGenerica } + +procedure TfEditorAjustarRecepciones.FormShow(Sender: TObject); +begin + FHayErrores := False; + FAlbaranModificado := False; + FItems.DataTable.Open; + + cbEstadoAlbaran.Enabled := Length(FItems.DataTable.FieldByName('ALBARAN').AsString) > 0; + cbContabilizarAlbaran.Enabled := cbEstadoAlbaran.Enabled; + memEstadoAlbaran.Enabled := cbEstadoAlbaran.Enabled; + + CargarValores; +end; + +function TfEditorAjustarRecepciones.GetItems: IBizRecepciones; +begin + Result := FItems; +end; + +procedure TfEditorAjustarRecepciones.SetItems(const AValue: IBizRecepciones); +begin + FItems := AValue; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfEditorAjustarRecepciones.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + if ((AViewInfo.Item as TcxGridDBBandedColumn).Position.RowIndex = 1) then + begin + ADone := True; + with AViewInfo do begin + ACanvas.FillRect(Bounds); + ACanvas.DrawTexT(Text, TextAreaBounds, 0); + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom]); + end; + end; +end; + +procedure TfEditorAjustarRecepciones.bAceptarClick(Sender: TObject); +begin + ShowHourglassCursor; + Application.ProcessMessages; + try + SalvarValores; + FItems.DataTable.ApplyUpdates; + if FAlbaranModificado then + ModificarAlbaran; + finally + HideHourglassCursor; + end; + Close; +end; + +procedure TfEditorAjustarRecepciones.CargarValores; +begin + with FItems.DataTable do + begin + if FieldByName('R38').AsInteger <> FieldByName('RR38').AsInteger then + edtRecR38.Value := FieldByName('RR38').AsInteger + else + edtRecR38.Value := FieldByName('R38').AsInteger; + + if FieldByName('R40').AsInteger <> FieldByName('RR40').AsInteger then + edtRecR40.Value := FieldByName('RR40').AsInteger + else + edtRecR40.Value := FieldByName('R40').AsInteger; + + if FieldByName('R42').AsInteger <> FieldByName('RR42').AsInteger then + edtRecR42.Value := FieldByName('RR42').AsInteger + else + edtRecR42.Value := FieldByName('R42').AsInteger; + + if FieldByName('R44').AsInteger <> FieldByName('RR44').AsInteger then + edtRecR44.Value := FieldByName('RR44').AsInteger + else + edtRecR44.Value := FieldByName('R44').AsInteger; + + if FieldByName('R46').AsInteger <> FieldByName('RR46').AsInteger then + edtRecR46.Value := FieldByName('RR46').AsInteger + else + edtRecR46.Value := FieldByName('R46').AsInteger; + + if FieldByName('R48').AsInteger <> FieldByName('RR48').AsInteger then + edtRecR48.Value := FieldByName('RR48').AsInteger + else + edtRecR48.Value := FieldByName('R48').AsInteger; + + if Length(FieldByName('ESTADO_ALBARAN').AsString) = 0 then + cbEstadoAlbaran.Text := cbEstadoAlbaran.Properties.Items[0] + else + cbEstadoAlbaran.Text := FieldByName('ESTADO_ALBARAN').AsString; + + cbContabilizarAlbaran.Checked := (FieldByName('CONTABILIZAR_ALBARAN').AsString = 'S'); + memEstadoAlbaran.Lines.Clear; + if Length(FieldByName('OBSERVACIONES_ALBARAN').AsString) > 0 then + memEstadoAlbaran.Lines.Add(FieldByName('OBSERVACIONES_ALBARAN').AsString) + end; +end; + +procedure TfEditorAjustarRecepciones.SalvarValores; +var + aux : String; +begin + FAlbaranModificado := False; + with FItems.DataTable do + begin + Edit; + FieldByName('RR38').AsVariant := edtRecR38.Value; + FieldByName('RR40').AsVariant := edtRecR40.Value; + FieldByName('RR42').AsVariant := edtRecR42.Value; + FieldByName('RR44').AsVariant := edtRecR44.Value; + FieldByName('RR46').AsVariant := edtRecR46.Value; + FieldByName('RR48').AsVariant := edtRecR48.Value; + + if cbEstadoAlbaran.Text = cbEstadoAlbaran.Properties.Items[0] then + aux := '' + else + aux := cbEstadoAlbaran.Text; + + if FieldByName('ESTADO_ALBARAN').AsString <> aux then + begin + FAlbaranModificado := True; + FieldByName('ESTADO_ALBARAN').AsString := aux; + end; + + if cbContabilizarAlbaran.Checked then + aux := 'S' + else + aux := 'N'; + + if FieldByName('CONTABILIZAR_ALBARAN').AsString <> aux then + begin + FAlbaranModificado := True; + FieldByName('CONTABILIZAR_ALBARAN').AsString := aux; + end; + + FieldByName('OBSERVACIONES_ALBARAN').AsString := memEstadoAlbaran.Lines.Text; + + Post; + end; +end; + +procedure TfEditorAjustarRecepciones.ModificarAlbaran; +var + bm : TBookMark ; + AAlbaran : String; + AEstado : String; + AContabilizar : String; +begin + { Si se ha cambiado el albarán, hay + que cambiarlo en el resto de filas en las que aparezca } + + AAlbaran := FItems.DataTable.FieldByName('ALBARAN').AsString; + AEstado := FItems.DataTable.FieldByName('ESTADO_ALBARAN').AsString; + AContabilizar := FItems.DataTable.FieldByName('CONTABILIZAR_ALBARAN').AsString; + + bm := FItems.DataTable.GetBookMark; + FItems.DataTable.DisableControls; + FItems.DataTable.DisableEventHandlers; + FItems.DataTable.LogChanges := False; + try + FItems.DataTable.Filter := 'ALBARAN = ''' + AAlbaran + ''''; + FItems.DataTable.Filtered := True; + FItems.DataTable.First; + + repeat + FItems.Edit; + FItems.DataTable.FieldByName('ESTADO_ALBARAN').AsString := AEstado; + FItems.DataTable.FieldByName('CONTABILIZAR_ALBARAN').AsString := AContabilizar; + FItems.Post; + FItems.DataTable.Next + until FItems.DataTable.EOF; + + FItems.DataTable.GotoBookMark(bm); + finally + FItems.DataTable.Filter := ''; + FItems.DataTable.Filtered := False; + FItems.DataTable.FreeBookMark(BM); + FItems.DataTable.LogChanges := True; + FItems.DataTable.EnableEventHandlers; + FItems.DataTable.EnableControls; + end; +end; + +initialization + RegisterEditor(IBizRecepciones, ShowEditorAjustarRecepciones, etItem); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.ddp b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.ddp differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.dfm new file mode 100644 index 0000000..d379974 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.dfm @@ -0,0 +1,1676 @@ +inherited fEditorListaRecepciones: TfEditorListaRecepciones + Left = 448 + Top = 221 + Caption = 'Control de recepciones' + ClientHeight = 664 + ClientWidth = 816 + ExplicitWidth = 824 + ExplicitHeight = 691 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 816 + Caption = 'Control de recepciones' + ExplicitWidth = 816 + inherited Image1: TImage + Left = 789 + ExplicitLeft = 789 + end + end + inherited TBXDock: TTBXDock + Width = 816 + ExplicitWidth = 816 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 576 + object TBXSubmenuItem2: TTBXSubmenuItem [5] + Caption = 'Cambiar el estado' + DropdownCombo = True + object TBXItem37: TTBXItem + Action = actPendiente + end + object TBXItem36: TTBXItem + Action = actAprobado + end + end + object TBXSeparatorItem16: TTBXSeparatorItem [8] + end + object tbxiExpandir: TTBXItem [16] + Action = actExpandir + end + object tbxiContraer: TTBXItem [17] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [18] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 816 + end + inherited tbxFiltro: TTBXToolbar + Left = 576 + ExplicitLeft = 576 + end + end + inherited StatusBar: TStatusBar + Top = 645 + Width = 816 + ExplicitTop = 645 + ExplicitWidth = 816 + end + object JvTabBar1: TJvTabBar [3] + Left = 0 + Top = 76 + Width = 816 + Height = 29 + Cursor = crHandPoint + CloseButton = False + Painter = JvModernTabBarPainter1 + Images = SmallImages + Tabs = < + item + Caption = 'Pendientes' + Selected = True + ImageIndex = 26 + end + item + Caption = 'Aprobados' + ImageIndex = 25 + end + item + Caption = 'Todos' + end> + OnTabSelected = JvTabBar1TabSelected + end + inline frViewListaRecepciones1: TfrViewListaRecepciones [4] + Left = 0 + Top = 105 + Width = 816 + Height = 540 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + ExplicitTop = 105 + ExplicitWidth = 816 + ExplicitHeight = 540 + inherited cxGrid: TcxGrid + Top = 60 + Width = 816 + Height = 480 + ExplicitTop = 60 + ExplicitWidth = 816 + ExplicitHeight = 480 + inherited cxGridView: TcxGridDBTableView + PopupMenu = GridPopupMenu + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = ',0;-,0' + Kind = skSum + Position = spFooter + Column = frViewListaRecepciones1.cxGridBandedViewDIFERENCIA + end + item + Format = 'Diferencia: ,0 unidades;Diferencia: -,0 unidades' + Kind = skSum + Column = frViewListaRecepciones1.cxGridBandedViewDIFERENCIA + end> + inherited cxGridBandedViewAPROBADO: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + DockedWidth = 32 + DockedHeight = 32 + FloatingHeight = 60 + ExplicitWidth = 816 + ExplicitHeight = 60 + inherited frViewParametrosCentro1: TfrViewParametrosCentro + Height = 41 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + inherited TBXLabel1: TTBXLabel + Width = 816 + ExplicitWidth = 816 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 391 + Height = 41 + ExplicitWidth = 391 + ExplicitHeight = 41 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [5] + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Caption = 'Modificar recepci'#243'n' + OnExecute = actModificarExecute + end + inherited actEliminar: TAction + Enabled = False + Visible = False + end + inherited actDuplicar: TAction + Enabled = False + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + OnUpdate = actAnchoAutoUpdate + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + OnUpdate = actAnchoAutoUpdate + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + OnUpdate = actAnchoAutoUpdate + end + object actPendiente: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Pendiente' + GroupIndex = 1 + ImageIndex = 26 + OnExecute = actPendienteExecute + OnUpdate = actPendienteUpdate + end + object actAprobado: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Aprobado' + GroupIndex = 1 + ImageIndex = 25 + OnExecute = actAprobadoExecute + OnUpdate = actAprobadoUpdate + end + end + inherited SmallImages: TPngImageList [6] + 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 + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + 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 + 61000001D94944415478DA9D9321781B310C859F59580CCB66B6B21886CDF0A0 + 61A061E19595CD6585375678B0D030D0B0D065851E2B74589827E9B26CFDF205 + 6C427767E9E9D7934FE114F5A3F5522AB0A29723D08E0DC61858A3A1B556B812 + EA77717EADF0C3E67CD0DA01F5BDA23612D21A766BA0579742F2813AF74CDDC3 + EE1BC6F1510EA6E9FB22F471E006A8B50A91DB1A7549505B8FCFB3A01B423637 + 1A4CD41A533978EFE8591AD1382011AB2E04D26B41182CD6AB350EC703E6974C + 9DAB14C518606F37C8E5A734F1EE0F85E2F9D3BE301A9B859412AC7554A02539 + E50C7281881A0A7B42E330A11F0CA6D12935CDB93B67C9209A9BC6F08397E238 + 9D9E69A4F09449A82D2D4F5BC2AA61DC39A8E92577460F63447C88D87C5DE3FE + F1C7B938BF37F8872CB561D098A35736A45EE8BBDB6AA8382521E0644922A110 + 02DCAD11FC4CDEF89D472153E3E889B8F4712A923B060B353ECD9D67276701FD + 05561F04719A9398C8778123EF67159F738FF3F23EEE2C796095E20D945208B5 + 8A89764B2B23A3E6294AA2730E4CC8AB7377A9B399DC998BCF6B5C2ECCB24A46 + AE24686804BE038BC1CB0D34C3DCD9CAB60F9FEFC1DFD18EBDD7F2263424F2E9 + 9C572E4237FABAC0B5E062332459634DFE2CF21F02F45FA4F0EF02D7E217D845 + 051D2C6D56E60000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + Left = 331 + Bitmap = {} + end + inherited LargeImages: TPngImageList [7] + 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 + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + 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 = 251 + Top = 88 + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [8] + Left = 416 + Top = 224 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + Left = 368 + Top = 168 + end + inherited dsDataTable: TDADataSource [10] + Top = 136 + end + inherited GridPopupMenu: TPopupMenu + Left = 112 + Top = 128 + object Cambiarelestado1: TMenuItem [3] + Caption = 'Cambiar el estado a...' + object Pendiente1: TMenuItem + Action = actPendiente + AutoCheck = True + GroupIndex = 1 + end + object Enespera1: TMenuItem + Action = actAprobado + AutoCheck = True + GroupIndex = 1 + end + end + end + object JvModernTabBarPainter1: TJvModernTabBarPainter + BorderColor = clWindow + ControlDivideColor = cl3DDkShadow + DividerColor = clBtnShadow + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + DisabledFont.Charset = DEFAULT_CHARSET + DisabledFont.Color = clGrayText + DisabledFont.Height = -11 + DisabledFont.Name = 'MS Sans Serif' + DisabledFont.Style = [] + SelectedFont.Charset = DEFAULT_CHARSET + SelectedFont.Color = clHighlight + SelectedFont.Height = -11 + SelectedFont.Name = 'MS Sans Serif' + SelectedFont.Style = [fsBold] + Left = 320 + Top = 128 + end +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.pas new file mode 100644 index 0000000..73cbdd1 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepciones.pas @@ -0,0 +1,319 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorListaRecepciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uBizRecepciones, uViewListaRecepciones, uEditorGridBase, + JvTabBar, uCustomView, uViewBase, uViewGridBase, uViewGrid, Menus, DB, + uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, + JvExControls, JvComponent, JvNavigationPane, StdCtrls, TBXDkPanels, + uViewParametrosCentro, uViewParametrosControlGrid, uDAInterfaces; + +const + CM_SETFOCUSEDRECORD = WM_USER + 1002; + +type + IEditorListaRecepciones = interface(IEditorGridBase) + ['{5CF9C341-A9BB-4A42-A132-0145827FBD9C}'] + function GetItems: IBizRecepciones; + procedure SetItems(const Value: IBizRecepciones); + property Items: IBizRecepciones read GetItems write SetItems; + end; + + TfEditorListaRecepciones = class(TfEditorGridBase, IEditorListaRecepciones) + JvTabBar1: TJvTabBar; + JvModernTabBarPainter1: TJvModernTabBarPainter; + actPendiente: TAction; + Cambiarelestado1: TMenuItem; + Pendiente1: TMenuItem; + Enespera1: TMenuItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem36: TTBXItem; + TBXItem37: TTBXItem; + actAprobado: TAction; + frViewListaRecepciones1: TfrViewListaRecepciones; + procedure FormShow(Sender: TObject); + procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); + procedure actModificarExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actAnchoAutoUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actPendienteExecute(Sender: TObject); + procedure actPendienteUpdate(Sender: TObject); + procedure actAprobadoExecute(Sender: TObject); + procedure actAprobadoUpdate(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + protected + FItems : IBizRecepciones; + function GetItems: IBizRecepciones; + procedure SetItems(const Value: IBizRecepciones); + procedure CambiarEstado(const NuevoEstado: TInvRecepcionEstado); + function GetModified: Boolean; override; + procedure CMSetFocusedRecord(var Msg: TMessage); message CM_SETFOCUSEDRECORD; + public + property Items: IBizRecepciones read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses uEditorBase, cxGridTableView, cxGridCustomTableView, cxControls, + uDBSelectionList, cxGridDBTableView, cxGridDBDataDefinitions, + uDataModuleRecepciones, uEditorDBBase; + + +{$R *.dfm} + +constructor TfEditorListaRecepciones.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewListaRecepciones1; +end; + +function TfEditorListaRecepciones.GetItems: IBizRecepciones; +begin + Result := FItems; +end; + +procedure TfEditorListaRecepciones.SetItems( + const Value: IBizRecepciones); +begin + FItems := Value; + if Assigned(FItems) then + begin + dsDataTable.DataTable := FItems.DataTable; + frViewListaRecepciones1.Items := FItems; + end; +end; + +procedure TfEditorListaRecepciones.FormShow(Sender: TObject); +begin + inherited; + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + //FItems.DataTable.Active := True; + + with (ViewGrid as IViewListaRecepciones) do + VerPendientes; +end; + +procedure TfEditorListaRecepciones.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); +begin + if Items.DataTable.Active then + Items.DataTable.Active := False; + frViewListaRecepciones1.frViewParametrosCentro1.LimpiarSeleccion; +end; + +procedure TfEditorListaRecepciones.actModificarExecute( + Sender: TObject); +begin + ViewGrid._FocusedView.BeginUpdate; + ViewGrid.SaveGridStatus; + try + FItems.Show; + finally + // Que salga el reloj de espera mientras el grid refresca datos y restaura la posición + ShowHourglassCursor; + Application.ProcessMessages; + try + ViewGrid._FocusedView.EndUpdate; + ViewGrid.RestoreGridStatus; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaRecepciones.actExpandirExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorListaRecepciones.actContraerExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +procedure TfEditorListaRecepciones.actAnchoAutoExecute( + Sender: TObject); +begin + inherited; + ViewGrid.AjustarAncho; +end; + +procedure TfEditorListaRecepciones.actAnchoAutoUpdate( + Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and Assigned(ViewGrid) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorListaRecepciones.actModificarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (ViewGrid._FocusedView.Controller.SelectedRecordCount < 2) and + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + not (ViewGrid._FocusedView.Controller.FocusedRow.Expandable)) +end; + +procedure TfEditorListaRecepciones.actRefrescarExecute(Sender: TObject); +begin + ShowHourglassCursor; + Items.DataTable.Active := False; + Application.ProcessMessages; + ViewGrid._FocusedView.BeginUpdate; + Application.ProcessMessages; + try + case JvTabBar1.SelectedTab.Index of + 0 : begin + Items := dmRecepciones.GetItems(tirPendiente); + (ViewGrid as IViewListaRecepciones).VerPendientes; + end; + + 1 : begin + Items := dmRecepciones.GetItems(tirAprobado); + (ViewGrid as IViewListaRecepciones).VerAprobados; + end; + + 2 : begin + Items := dmRecepciones.GetItems; + (ViewGrid as IViewListaRecepciones).VerTodos; + end; + end; + + frViewListaRecepciones1.Refresh; + inherited; + finally + ViewGrid._FocusedView.EndUpdate; + HideHourglassCursor; + ViewGrid.ExpandirTodo; + ViewGrid.GotoFirst; + end; +end; + +procedure TfEditorListaRecepciones.actPendienteExecute( + Sender: TObject); +begin + CambiarEstado(tirPendiente); +end; + +procedure TfEditorListaRecepciones.actPendienteUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + (ViewGrid._FocusedView.Controller.FocusedRow.Level <> 0)); + + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = tirPendiente); +end; + +procedure TfEditorListaRecepciones.actAprobadoExecute( + Sender: TObject); +begin + CambiarEstado(tirAprobado); +end; + +procedure TfEditorListaRecepciones.actAprobadoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + (ViewGrid._FocusedView.Controller.FocusedRow.Level <> 0)); + + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = tirAprobado); +end; + +procedure TfEditorListaRecepciones.CambiarEstado( + const NuevoEstado: TInvRecepcionEstado); +var + ARecord: TcxCustomGridRecord; + i : Integer; + bm : TBookMark ; +begin + if Assigned(FItems) and Assigned(ViewGrid) and (ViewGrid.MultiSelect) then + begin + ShowHourglassCursor; + bm := FItems.DataTable.GetBookMark; + //FItems.DataTable.DisableControls; <- No descomentar + ViewGrid._FocusedView.BeginUpdate; + try + for i := 0 to ViewGrid._FocusedView.Controller.SelectedRecordCount-1 do + begin + ARecord := ViewGrid._FocusedView.Controller.SelectedRecords[i]; + if (ARecord is TcxGridDataRow) then + begin + if (ARecord as TcxGridDataRow).CanFocus then + begin + (ARecord as TcxGridDataRow).Focused := True; + FItems.Edit; + FItems.Estado := NuevoEstado; + FItems.Post; + end; + end; + end; + FItems.DataTable.ApplyUpdates; + FItems.DataTable.GotoBookMark(bm); + finally + FItems.DataTable.FreeBookMark(BM); + //FItems.DataTable.EnableControls; <- No descomentar + ViewGrid._FocusedView.Controller.ClearSelection; + ViewGrid._FocusedView.EndUpdate; + PostMessage(Handle, CM_SETFOCUSEDRECORD, Integer(ViewGrid._FocusedView), + MakeLParam(ViewGrid._FocusedView.Controller.FocusedRowIndex, + ViewGrid._FocusedView.Controller.TopRowIndex)); + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaRecepciones.actEliminarExecute( + Sender: TObject); +begin +// inherited; +end; + + +function TfEditorListaRecepciones.GetModified: Boolean; +begin + Result := False; +end; + +procedure TfEditorListaRecepciones.CMSetFocusedRecord(var Msg: TMessage); +begin + TcxGridDBTableView(msg.WParam).Controller.FocusedRowIndex := Msg.LParamLo; + TcxGridDBTableView(msg.WParam).Controller.TopRowIndex := Msg.LParamHi; +end; + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.ddp b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.ddp differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.dfm new file mode 100644 index 0000000..ba23d72 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.dfm @@ -0,0 +1,1619 @@ +inherited fEditorListaRecepcionesAlbaran: TfEditorListaRecepcionesAlbaran + Left = 286 + Top = 168 + Caption = 'Control de '#225'lbaranes' + ClientHeight = 637 + ClientWidth = 842 + ExplicitWidth = 850 + ExplicitHeight = 671 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 842 + Caption = 'Control de albaranes' + ExplicitWidth = 842 + inherited Image1: TImage + Left = 815 + ExplicitLeft = 815 + end + end + inherited TBXDock: TTBXDock + Width = 842 + ExplicitWidth = 842 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 344 + object TBXSeparatorItem16: TTBXSeparatorItem [7] + end + object tbxiExpandir: TTBXItem [15] + Action = actExpandir + end + object tbxiContraer: TTBXItem [16] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [17] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 842 + end + inherited tbxFiltro: TTBXToolbar + Left = 344 + DockPos = 344 + ExplicitLeft = 344 + end + end + inherited StatusBar: TStatusBar + Top = 618 + Width = 842 + ExplicitTop = 618 + ExplicitWidth = 842 + end + object JvTabBar1: TJvTabBar [3] + Left = 0 + Top = 76 + Width = 842 + Height = 29 + Cursor = crHandPoint + CloseButton = False + Painter = JvModernTabBarPainter1 + Images = SmallImages + Tabs = < + item + Caption = 'Pendientes' + Selected = True + ImageIndex = 26 + end + item + Caption = 'Aprobados' + ImageIndex = 25 + end + item + Caption = 'Todos' + end> + OnTabSelected = JvTabBar1TabSelected + end + inline frViewListaRecepcionesAlbaran1: TfrViewListaRecepcionesAlbaran [4] + Left = 0 + Top = 105 + Width = 842 + Height = 513 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 4 + ReadOnly = False + ExplicitTop = 105 + ExplicitWidth = 842 + ExplicitHeight = 513 + inherited cxGrid: TcxGrid + Width = 842 + Height = 453 + ExplicitTop = 60 + ExplicitWidth = 842 + ExplicitHeight = 453 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewESTADOPRODUCTO: TcxGridDBColumn + Caption = 'Situaci'#243'n' + end + inherited cxGridViewCODIGO: TcxGridDBColumn + Caption = 'C'#243'digo' + end + inherited cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + end + inherited cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + end + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 842 + inherited frViewParametrosCentro1: TfrViewParametrosCentro + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + inherited TBXLabel1: TTBXLabel + Width = 842 + ExplicitWidth = 842 + ExplicitHeight = 19 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 417 + ExplicitWidth = 417 + ExplicitHeight = 41 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [5] + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Caption = 'Modificar recepci'#243'n' + Visible = False + end + inherited actEliminar: TAction + Enabled = False + Visible = False + end + inherited actDuplicar: TAction + Enabled = False + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + OnUpdate = actAnchoAutoUpdate + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + OnUpdate = actAnchoAutoUpdate + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + OnUpdate = actAnchoAutoUpdate + end + end + inherited SmallImages: TPngImageList [6] + 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 + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + 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 + 61000001D94944415478DA9D9321781B310C859F59580CCB66B6B21886CDF0A0 + 61A061E19595CD6585375678B0D030D0B0D065851E2B74589827E9B26CFDF205 + 6C427767E9E9D7934FE114F5A3F5522AB0A29723D08E0DC61858A3A1B556B812 + EA77717EADF0C3E67CD0DA01F5BDA23612D21A766BA0579742F2813AF74CDDC3 + EE1BC6F1510EA6E9FB22F471E006A8B50A91DB1A7549505B8FCFB3A01B423637 + 1A4CD41A533978EFE8591AD1382011AB2E04D26B41182CD6AB350EC703E6974C + 9DAB14C518606F37C8E5A734F1EE0F85E2F9D3BE301A9B859412AC7554A02539 + E50C7281881A0A7B42E330A11F0CA6D12935CDB93B67C9209A9BC6F08397E238 + 9D9E69A4F09449A82D2D4F5BC2AA61DC39A8E92577460F63447C88D87C5DE3FE + F1C7B938BF37F8872CB561D098A35736A45EE8BBDB6AA8382521E0644922A110 + 02DCAD11FC4CDEF89D472153E3E889B8F4712A923B060B353ECD9D67276701FD + 05561F04719A9398C8778123EF67159F738FF3F23EEE2C796095E20D945208B5 + 8A89764B2B23A3E6294AA2730E4CC8AB7377A9B399DC998BCF6B5C2ECCB24A46 + AE24686804BE038BC1CB0D34C3DCD9CAB60F9FEFC1DFD18EBDD7F2263424F2E9 + 9C572E4237FABAC0B5E062332459634DFE2CF21F02F45FA4F0EF02D7E217D845 + 051D2C6D56E60000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [7] + 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 + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + 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> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource [10] + Top = 136 + end + inherited GridPopupMenu: TPopupMenu + Left = 112 + Top = 128 + end + object JvModernTabBarPainter1: TJvModernTabBarPainter + BorderColor = clWindow + ControlDivideColor = cl3DDkShadow + DividerColor = clBtnShadow + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + DisabledFont.Charset = DEFAULT_CHARSET + DisabledFont.Color = clGrayText + DisabledFont.Height = -11 + DisabledFont.Name = 'MS Sans Serif' + DisabledFont.Style = [] + SelectedFont.Charset = DEFAULT_CHARSET + SelectedFont.Color = clHighlight + SelectedFont.Height = -11 + SelectedFont.Name = 'MS Sans Serif' + SelectedFont.Style = [fsBold] + Left = 320 + Top = 128 + end +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.pas new file mode 100644 index 0000000..71ce949 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uEditorListaRecepcionesAlbaran.pas @@ -0,0 +1,182 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorListaRecepcionesAlbaran; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uBizRecepciones, uEditorGridBase, JvTabBar, uCustomView, uViewBase, + uViewGridBase, uViewGrid, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, StdCtrls, + uViewListaRecepcionesAlbaran, uDAInterfaces; + + +type + IEditorListaRecepcionesAlbaran = interface(IEditorGridBase) + ['{143EEF14-E999-4570-85A6-3F06F0F22044}'] + function GetItems: IBizRecepcionesAlbaran; + procedure SetItems(const Value: IBizRecepcionesAlbaran); + property Items: IBizRecepcionesAlbaran read GetItems write SetItems; + end; + + TfEditorListaRecepcionesAlbaran = class(TfEditorGridBase, IEditorListaRecepcionesAlbaran) + JvTabBar1: TJvTabBar; + JvModernTabBarPainter1: TJvModernTabBarPainter; + TBXSeparatorItem16: TTBXSeparatorItem; + frViewListaRecepcionesAlbaran1: TfrViewListaRecepcionesAlbaran; + procedure FormShow(Sender: TObject); + procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actAnchoAutoUpdate(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + protected + FItems : IBizRecepcionesAlbaran; + function GetItems: IBizRecepcionesAlbaran; + procedure SetItems(const Value: IBizRecepcionesAlbaran); + public + property Items: IBizRecepcionesAlbaran read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses uEditorBase, cxGridTableView, cxGridCustomTableView, cxControls, + uDBSelectionList, cxGridDBTableView, cxGridDBDataDefinitions, + uDataModuleRecepciones, uEditorDBBase; + + +{$R *.dfm} + +constructor TfEditorListaRecepcionesAlbaran.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewListaRecepcionesAlbaran1; +end; + +function TfEditorListaRecepcionesAlbaran.GetItems: IBizRecepcionesAlbaran; +begin + Result := FItems; +end; + +procedure TfEditorListaRecepcionesAlbaran.SetItems(const Value: IBizRecepcionesAlbaran); +begin + FItems := Value; + if Assigned(FItems) then + begin + ShowHourglassCursor; + try + dsDataTable.DataTable := FItems.DataTable; + frViewListaRecepcionesAlbaran1.Items := FItems; + + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaRecepcionesAlbaran.FormShow(Sender: TObject); +begin + inherited; + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + with (ViewGrid as IViewListaRecepcionesAlbaran) do + begin + AjustarAncho; + ContraerTodo; + GotoFirst; + end; +end; + +procedure TfEditorListaRecepcionesAlbaran.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); +begin + inherited; + if Items.DataTable.Active then + Items.DataTable.Active := False; + frViewListaRecepcionesAlbaran1.frViewParametrosCentro1.LimpiarSeleccion; +end; + +procedure TfEditorListaRecepcionesAlbaran.actExpandirExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorListaRecepcionesAlbaran.actContraerExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +procedure TfEditorListaRecepcionesAlbaran.actAnchoAutoExecute( + Sender: TObject); +begin + inherited; + ViewGrid.AjustarAncho; +end; + +procedure TfEditorListaRecepcionesAlbaran.actAnchoAutoUpdate( + Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and Assigned(ViewGrid) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorListaRecepcionesAlbaran.actRefrescarExecute(Sender: TObject); +begin + ShowHourglassCursor; + Items.DataTable.Active := False; + Application.ProcessMessages; + ViewGrid._FocusedView.BeginUpdate; + Application.ProcessMessages; + try + case JvTabBar1.SelectedTab.Index of + 0 : begin + Items := dmRecepciones.GetItemsAlbaran(tiraPendiente); + end; + + 1 : begin + Items := dmRecepciones.GetItemsAlbaran(tiraRecibido); + end; + + 2 : begin + Items := dmRecepciones.GetItemsAlbaran; + end; + end; + + frViewListaRecepcionesAlbaran1.Refresh; + inherited; + finally + with (ViewGrid as IViewListaRecepcionesAlbaran) do + begin + ExpandirTodo; + AjustarAncho; + ContraerTodo; + _FocusedView.EndUpdate; + GotoFirst; + end; + HideHourglassCursor; + end; +end; + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.ddp b/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.ddp differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.dfm new file mode 100644 index 0000000..f7f43f4 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.dfm @@ -0,0 +1,756 @@ +object ModuleRecepciones: TModuleRecepciones + OldCreateOrder = True + DefaultAction = actRecepcion + Description = 'Control de recepci'#243'n de prendas' + ModuleMenu = MainMenu + ModuleName = 'Control de recepci'#243'n de prendas' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.3' + Left = 701 + Top = 547 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F33000001CC4944415478DA63FCFFFF3F032D + 0123C8826B95B2CE40F61E3CEA5C08C96B773CD98B2E08321B66C17FE5861A06 + 76F6740C9D3F7FCE649897D8C290341FBF7CD6F2278C782DD06A7F0C560C073F + 7E00F17786D9BB0C1898B7A732642EC32F4F9A0520CD1FDE410C38E584690116 + 79E22D8069061BF09361F6AD20540B70C81367C1C78908CD1F3E405CF82A0561 + 011E79E22C78588FD00C0B825F65080BF0C813B400948A66AF92C79A06410680 + 52113E794216381F7C883B9DDBCB33B81092A7381F6073212140523E0059805C + AC1093FB8166EE253A1FA05B303D4AF63FBEDC7DB7A18501682623D1F9009B05 + 59D76B187EEC78CFC0C0C109C41C703990A54033B15840209D235BC06838F3BF + B1B93DC3D1C279100B0484E096E0B680403A87590032BCBC328061CFBEF72841 + 73B47327D812AC1610CA07300B40865BDA6932648459A1A899B4F80EC3D1CAE5 + 609FB0F3E7635840301F80D3B9C10CB0E1C24A926071111E5606715E4E062D69 + 61880599532116C837A25AC0C8485C1247F601B2258E1A32600B12AC1F80C552 + C31EA2A622522C80C501C892E387AEC3E540119EFCC915C5D7F07C40AC052800 + 185C60FA4206238AE54866C173325916C02C41B200DD1CB805B40434B7000019 + B523EF6A240B860000000049454E44AE426082} + Name = 'PngImage0' + 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 + F73EE77CFEFC2FF784F3FB25D29F33000004FB4944415478DA9D957B50547514 + C7BFF7B54F6079DC85856569C1911115F101E1F8C8473435E334D51F65FED38C + 4EE6A4A533CDD41F0565A6D230E39868F218922173CAD2EC9D35D604BE928780 + 4248C28ABB8AC0E2021BCBB2F7D9EFAE3BC60CF888737FBFFB9BFD3DCEE777CE + D97B0EA5AA2A2EECA30015064541148850E467681CB872955D6C309BAA199A02 + CDD0100591ACA9E8EB0FFCA93361FDAA3C20184258281A32280CE56F533151A8 + 08C048069B2C228380C2807102E8E98DCA4B74A617732C039D9E41E09F20B988 + 80AEBFBA3A141AAFAF5A44F60911450C42A43711407012A0BE942B63B8D825D1 + C973E6317A725B42181B95D0D6E4C2DA9D1FC2D5D886AEBF6F63E59AA5A083D7 + F0C5EE1DF0B34EAC7D310BBE811168E60B237E84463BCB176E165F9D04683C18 + 25C424E7729905AF01EC28409B517BB80A09BC01B37373B0BFF8083CAD2EBCB9 + 6F0B0C7A16DD4DB53877DE8B27376EC6CC2C2BA4E101B4FF7214AE8E0EF1B912 + 513709D05C69F65AD317F0E319DBD1E93142A9DF86B414E091393990C5107A3D + 5E58628DB024392004FCE038153DCD75A8FDC30BE7332588776441AE7D1C9DED + 18DC54A35A27015A2A4D04309FEF892B069FB4180D75C7106CD80A451234EBC1 + 720C28D6005992C85C8804940123CBE406EB70D29D8D817E0FB6E77E048F4B1C + 7CA9E23E80EBF1BB90E6588C14AB11474EFC0685FCADEE6EA4EEC4868AF490A8 + 6059DE5C74B86EA2A4F413BC9F5F819B3DF28301A9F67CA4D94CB89FC83209AA + 2811E3289CAC6B4169C5A728CA3D387DC048F7598C36550192198A4A6BC7A02A + 01283A1DDC010BDEFD690C458B3E9E3EA0EDE712E8E93ED81CCB8962ED90161A + 15FE2BDFC0773B80ADA752A70FD0D67F3DB411E3FC7CAC591D073ADA00853C2C + 66C377F60C86AF3660C30FE6E901C8122449C67B7B8E2323DE8B975734039638 + 4831D1A04DCB31547B053ED765BCF22387C2E900044146E9E71DA8AE65F0EC5C + 370A52CE21A48B8573C63866E5CCC7EDBAEBF0756B00F67F00520920C91476CD + DE9A669CEE12B172590E3ADD21083207DF0885998693D8B98DC6687D3F863B1B + B1E17B230A173E0C206117EC291AC0881DE54D38D13484ECEC34F0B106449938 + E8F51C4CC482D6DFBFC3BA471BE110AF41F04B78E394FD01808A0880DF85A4C4 + 5C3888055B8A4FE352BF8A34270F867CB92623516E36C2694B45DFD92A2CCBE8 + 039F988E5E3F8BF2E3E7F1CEC203F706345718BD7C5A36EFE17723C19A17FE92 + 87FD41EC3ED4827AB704DE1A0D2924C36864614B4A874DB88835AB66123752E8 + 76DF44F5675F3D1890E0981D06C426E4C36ED5933C2F223826E18343AD3876CA + 8DA7972491E09B21CA34B266A5223399D4179AC635CFC300CA0D0490C5BB490C + AC29CB11635010088A90640523A321ECA969C3534B529035C342E66492A3D470 + 67190637FA07505573146F2FD87F3F80DE1B6FCFE46FD8F6A2BBCF8EE6D6168C + 9152459152A93D5AD35E5464BCD3282DD18263599C397F01254B4B09409A1A70 + B1CCE0B52467F2BA394538FC6D3B7C837DE4204DD2824CFC2CDF19235DCB15AA + ACCD2BE14AA689D9C0A280FF1AAE2E69707DE51480C6B298718B7D9E3E2ED10E + 65A81D2C4B45942BFF298F80886F48D34679422A27F5DB3D844B9795D0A66AD5 + 301970802BD499A256F4DE100A6EB9C74881892CDE7D4D3C31750A67751013E2 + B1E3892275E72440C37EFA059663575EEF919FBFD5AB10F7DC5BD154202D67E9 + F518723A51F8D85BEA9713B7FD0B5B96F1EFAB7DEF880000000049454E44AE42 + 6082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actRecepcion: TAction + Category = 'Inventario' + Caption = 'Control de recepci'#243'n' + ImageIndex = 0 + OnExecute = actRecepcionExecute + end + object actRecepcionAlbaranes: TAction + Category = 'Inventario' + Caption = 'Control de albaranes' + ImageIndex = 1 + OnExecute = actRecepcionAlbaranesExecute + end + end + object MainMenu: TMainMenu + Tag = 500 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Inventario' + GroupIndex = 1 + ImageIndex = 4 + object Controldeventasenproceso1: TMenuItem + Tag = 110 + Action = actRecepcion + end + object Controldealbaranes1: TMenuItem + Tag = 600 + Action = actRecepcionAlbaranes + end + end + end + object SmallImages: 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 + F73EE77CFEFC2FF784F3FB25D29F330000013A4944415478DA63BC5A21F39F81 + 48A0DDF1841199FFFFFF7F06469001CA0D3510911F3F18181EDC6198D7B98121 + 693EA658D6727C064015CEBEE4CDC0BC3D1562009A186E032A4AC00A196E5C65 + 98FDAB0C62C0744C31DC064404806D8101B001E59862380D38F890B840C41F06 + 04020C1BC01B882003400A40E05AA52CD6A8D66A7FCC883310910D981E25FB1F + 14260C0A2A0C0C1C1C60B1BB0D2D480644600F3098018C8633FF4F2E926748D5 + DB0A3704C5006C81083300A4D9D8DC9E21C1FA01432A5B1703838636D890BB1D + 3D1003F08692C18CFFFDAD910C42FC5C0C9316DF810B1FCD9CCA7077C5060206 + 00354747D980352BC908836910001994FCC995C15E9E81381778F9183128CB8A + 304C9EBE0B2C04F2CE99191A707D04E31A640898BE90C1088B7BB046A0DDE030 + 226800CC10240318A10E07B101D716EAE1AF47BD0C0000000049454E44AE4260 + 82} + Name = 'PngImage0' + 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 + F73EE77CFEFC2FF784F3FB25D29F330000030F4944415478DA85D35F6C53551C + C0F1EFBDB7F7AEAEAD5BB775CA836E14D6CE2CCCCA26B39B1A9CBEB820E3C168 + 4C7C20C1277DF0C527252EFA26181CC14C08983461C4E1BF88C1180631FC892B + 0ECB4A906D256066270E57D6F5CFD6BBDDF6DEE35D595089915F72929393733E + F99DFC7E3FE97C3F080BA554C4AB4858A939C9359B711FAAAE713F61168DE54C + 66512FE84BAF758618312D5CB24A4192D13BDE14267648E7FB95EDB2A37293A7 + AE31A4B99CD6AF13B30E5FCB932D8B8B92BBBAA686627A8273277EBCD2D3BB21 + 5DD273CE4266EE8659CC9D6C7B431F2803B10157DCED0B3E5AFFD44EF2A94932 + 89B3F85B9BF9EEB333843A36D0B0D6CDE96F86A96D798EE0C676E247DFE3CFE4 + F4A517F7885019B8F269C588B32E10CE068698BE7C81A5F1F7512B34244942D1 + EEC3B2FF26F479AEEACF30AD3D4E77F12D8C8C117D794074DE01546F53B8D07C + 187F63888B1747595A365014194950866487466DFD43ECFE783FCF3BFAA81444 + 7BF7DC052C06223437B5E1D428C7ADB12F2195C0141E8459A0602C707C3449BD + 3188B324A2DBFAEF01C43E7F9D86D62EDC2E3796A930FFD35724A6F3CCDEFCFA + DE80690A3ED8DDCF8E2D0B3C10B0ABA585499D1CE7DAB5297EBBBEEF7F80800D + A8B02B32C985A493CD6BE2B8DC697A7BAA90E34926C6934C5DDFFBDFC04230C2 + 23EBDBF8301223362308B5FA592879C8DE9CA7DB374858BB4462CA20FDC7D1BB + 80432BC0FA70DECEC0DFB891BE4FA28C671CF8EA3C786BAAA82C59B4F3050F3E + 1CE4D8F0393AD84545F11FC0E583DA885ABD369C6F8AB0CEBF895251A7EFC018 + 3F8CA5E80856D9908FAD9D6EBB9432834347D86CEEFC7706BF1C54CAC09CFF08 + 866820974B93CA189C199DA1EB311FAAA6A0C81292E2E0C4F071B6686FDB8015 + DDF6D12A103FA0FEECF135B5A5D6BCCBB1530996F51CF67D8428816595274D58 + A6DD503624F27469432C658DD84BFB44FBED59D85FF56DC5FDF5DD8A5AED2AA4 + 7F2F77E0CA83DBAB74676F8BA8AACC8D9902D9ACF5FD2B7B45CFEA30C92F80FC + F4D549F3D5F95B4272A80824FE0E6975514EC8595BCB88D7CBD0B3EF88C32B67 + 7F01C53983F0FCEC7FE90000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F33000002334944415478DABDD4CD4B14611C + 07F0EF20CCBAA38B422042E5128BA2D641F3105628A4F50F04DEC4378636A14B + 88B8D0C18390872EBD1CD6160A111204CF42E42141BC847852B084243D0641AE + B08B31CDEF7166765E9E99791E151F186661BEF3FB3C0CFB7D14C33070994B21 + 703B77BDCFFCFD2526DB2F92B9397BB01AF6902C1B3432D32F90483CE1064BA5 + 397C1899C1E8C7F8CCF8E2812204B6BFFCC55EF2ACA3BFEC2AAC75A36A45C7D3 + 4FF199B383D620366CF3111FE464CE06BA06B161BB8F836048461EF40D42F108 + 85C3212F189191037FBF0A0C42B188C29FF10A18939103BF4F01E5B267108ECD + DD97272B604C4618A45A1496D26159368C6A11971105FBBEEE4797BA378D7E91 + CC85163F6AF7224BBAF804F2CE5ED1A3D13456A58A1F06BE1E518C6C3E1FF985 + F6A667601A8A54F1A3C0AA072BD07B3680DAD4E9E55AB411D30801634A1D09DE + FE5C015D683828506A1EA874CE196F9FA7A1B72C7B410B0D07054AED0709EBBA + D38BE17B3FA15F9D076A6A0328171429BE1F246CFEDD18DE2CFCE0BEB39E5B3C + 05AF4C0440A1E253A96D90B0EE9E366407EE72F3B489F567EF015545A279D60B + 2A8A789F59DEC232371A7072F20FA954923D4B265576EFCA3432903E332D7D60 + DF5B0B19101D7986D5D769D03415C96A3580DAE060A9CD79ED61E3B54AF1A540 + 01F4FEAD26067ECBB73A83C9708E3669D0851258A325A0599F93503F68CF3F1F + E84237D676028FA82A04BA679F1FB45076DFCA3A439C7FB26FEEC58036EA0379 + 331DF032D77F05B2A7E7C969F3360000000049454E44AE426082} + 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 + F73EE77CFEFC2FF784F3FB25D29F33000003C64944415478DABD967B4C53571C + C7BFF7D25ADAF14644C40EB48A0614182A746ADC5466073EC77CA3A6262693A8 + 2B3A3715A73173260CFD07B486A9F3B5B06C3EA395971A256AA2F808C5075A10 + 6696A8640E1519D0C77D78EFA1B71115466BE73739F99D73EEEF9ECFF99D9CDF + 2F87E2791EEF539404A428AA4BA7423DBADCD5D2FDE8F2C7B705E30256E6533A + C19439A75D0E66330F7DAEF1AD0B56FFBE0245260E9953E93761E03E4F31F0E5 + DD01F9E8919B103428AC93C3FEB5CB3033FB6BD2FFE19B0262F38A8CF8B7D182 + FA8A1D04987B301F3CEB00C732E039079EDDAD45E3FD22241B58AA5B60E25C63 + 9730092846A3F974B96B4E826ED9934B609C00B694FC882A3387AFF6F1FF0D3C + 76631419BF389C8CC90BA7BD7154CAD06862DB9B1EB8E61EDD3A45A0DA5557C9 + 5853A7750F382F7D1476FC5A06F65C1A7A2ABFF4F330FE7288F40BD37E761F28 + 4A847672166EB2D868C9D294738EC6AC342D0E1EAFC0DEA2939E03BB13C7F160 + 580E0CC33A2D87DF4C17FE1FE0AB30BBD50EBB737CACFCB21781825F63453E98 + BA6238986011DB314D3E35818E4E43F1D378EF01198715BB7334F862DD11F40D + 11735549703C58A14C38505FB008A5C11BBD07B459DB51F85D1234BA0D989270 + 0556FF7E80AF52C8BD5628957A34EC5C8912FFC5DE018A17A2B9A50D9F2DDE0B + 63961C1F4709F9E61F013E301436B90CBE8A2FD160CC4649C09277078AB0C74F + 5A31677D25DA646A18922F604448356CAA300485FBE1438D1D8A804502D0E01D + E08387CD98BBE61C3217A4C2F2A71DCF5A85B2CCF9A0A51D50D86A71D4B00708 + FF1EF53BD7A0D45FEF39508CACA9D98A8CD567E11BDE071FC546A277B08A24BB + 0F4D23C82F00C565379135D68C786D0CEC7FE4E0C4076B3D03CE9A3442C82B16 + 63F42628FA8441DD3FD8556554AA5EF091C91017ADC619D369A4B2ABA10CB022 + 297E212A19AD7BC084D9DB71BC2A05D3C72790E4BE76E76F2CCDBB0AF5E04804 + 06AAE0A752402EF7412F851C4943A270B1FC1296658493D3E02839CC35B5EE01 + 87676CC3895BE33079DC70B28818E58D9A2758995F85BE0322D0D2DC468E5326 + A331B05F081E3F0FC596F98E8EAA23B4DB96FBEE01E3A6E7C2543301BAD17104 + 26D5C8AA7BFF202BEF3A6C2FDA60C88C15A2E7C00A2D521D81615134F113E536 + 3076EA669CBAA7C3C494A12E98B4FB6A4B137E3A701BBBD66B5D9B916AAA24B7 + 8143D337A2A46E0A3E1919430AB127720B38449783D28619D85AB0CF2398A41E + 036352BF256F129E633AEC6BFD0EFBCA37675F70EAB4E8D3BFAEF70C38687C36 + EACF17BC5374927A0224EF52B3D92B3C2426A2FB77E9FBD24BF00815F6456737 + F30000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.pas new file mode 100644 index 0000000..808042e --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uPluginControllerRecepciones.pas @@ -0,0 +1,94 @@ +unit uPluginControllerRecepciones; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList, uBizRecepciones; + +type + IMCRecepciones = interface(IInterface) + ['{3BA48DD2-A9D3-4168-9507-84065E8F839B}'] + end; + + TModuleRecepciones = class(TModuleController, IMCRecepciones) + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + actRecepcion: TAction; + Controldeventasenproceso1: TMenuItem; + actRecepcionAlbaranes: TAction; + Controldealbaranes1: TMenuItem; + procedure actRecepcionExecute(Sender: TObject); + procedure actRecepcionAlbaranesExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleRecepciones, + uEditorListaRecepciones, uEditorListaRecepcionesAlbaran; + +function GetModule : TModuleController; +begin + Result := TModuleRecepciones.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleRecepciones.actRecepcionExecute(Sender: TObject); +var + aControl: IBizRecepciones; + aObj: IEditorListaRecepciones; +begin + aControl := dmRecepciones.GetItems(tirPendiente); + aObj := TfEditorListaRecepciones.Create(Application); + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +procedure TModuleRecepciones.actRecepcionAlbaranesExecute(Sender: TObject); +var + aControl: IBizRecepcionesAlbaran; + aObj: IEditorListaRecepcionesAlbaran; +begin + aControl := dmRecepciones.GetItemsAlbaran(tiraPendiente); + aObj := TfEditorListaRecepcionesAlbaran.Create(Application); + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleRecepciones); + +finalization + UnRegisterModuleClass(TModuleRecepciones); + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.ddp b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.ddp differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.dfm new file mode 100644 index 0000000..5ca9829 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.dfm @@ -0,0 +1,591 @@ +inherited frViewListaRecepciones: TfrViewListaRecepciones + Width = 695 + Height = 477 + ExplicitWidth = 695 + ExplicitHeight = 477 + inherited cxGrid: TcxGrid + Top = 128 + Width = 695 + Height = 349 + ExplicitTop = 128 + ExplicitWidth = 695 + ExplicitHeight = 349 + inherited cxGridView: TcxGridDBTableView + OnMouseDown = cxGridViewMouseDown + FilterBox.Visible = fvNever + OnCellDblClick = cxGridViewCellDblClick + DataController.KeyFieldNames = 'RecID' + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = ',0;-,0' + Kind = skSum + Position = spFooter + Column = cxGridBandedViewDIFERENCIA + end + item + Format = 'Diferencia: ,0 unidades;Diferencia: -,0 unidades' + Kind = skSum + Column = cxGridBandedViewDIFERENCIA + end> + OptionsCustomize.ColumnGrouping = True + OptionsSelection.MultiSelect = True + OptionsView.Footer = False + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfVisibleWhenExpanded + OptionsView.GroupRowStyle = grsOffice11 + Preview.Column = cxGridViewColumnOBSERVACIONES + Preview.Visible = True + Styles.Footer = cxStyleFooter + OnCustomDrawGroupCell = cxGridViewCustomDrawGroupCell + object cxGridBandedViewAPROBADO: TcxGridDBColumn + DataBinding.FieldName = 'APROBADO' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Alignment.Horz = taLeftJustify + Properties.Images = SmallImages + Properties.Items = < + item + Description = 'Aprobado' + ImageIndex = 0 + Value = 'S' + end + item + Description = 'Pendiente' + ImageIndex = 1 + Value = 'N' + end> + Properties.ReadOnly = True + Properties.ShowDescriptions = False + MinWidth = 15 + Width = 15 + IsCaptionAssigned = True + end + object cxGridBandedViewCENTRO: TcxGridDBColumn + DataBinding.FieldName = 'CENTRO' + Visible = False + Width = 44 + end + object cxGridBandedViewFILIAL: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'FILIAL' + Visible = False + GroupIndex = 0 + SortIndex = 0 + SortOrder = soAscending + Width = 64 + end + object cxGridBandedViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + OnGetDataText = cxGridBandedViewCODIGOGetDataText + OnGetDisplayText = cxGridBandedViewCODIGOGetDisplayText + GroupIndex = 1 + SortIndex = 1 + SortOrder = soAscending + Width = 32 + end + object cxGridBandedViewPRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'PRODUCTO' + Visible = False + Width = 76 + end + object cxGridBandedViewCOLOR: TcxGridDBColumn + DataBinding.FieldName = 'COLOR' + Visible = False + Width = 49 + end + object cxGridBandedViewFECHA: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHA' + PropertiesClassName = 'TcxDateEditProperties' + SortIndex = 2 + SortOrder = soAscending + Width = 49 + end + object cxGridBandedViewESTADO_ALBARAN: TcxGridDBColumn + DataBinding.FieldName = 'ESTADO_ALBARAN' + Visible = False + Width = 94 + end + object cxGridBandedViewALBARAN: TcxGridDBColumn + Caption = 'Albar'#225'n' + DataBinding.FieldName = 'ALBARAN' + OnGetDisplayText = cxGridBandedViewALBARANGetDisplayText + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 71 + end + object cxGridBandedViewCONTABILIZAR_ALBARAN: TcxGridDBColumn + DataBinding.FieldName = 'CONTABILIZAR_ALBARAN' + Visible = False + Width = 20 + end + object cxGridBandedViewE38: TcxGridDBColumn + Caption = 'E38/S' + DataBinding.FieldName = 'E38' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 36 + end + object cxGridBandedViewE40: TcxGridDBColumn + Caption = 'E40/M' + DataBinding.FieldName = 'E40' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 35 + end + object cxGridBandedViewE42: TcxGridDBColumn + Caption = 'E42/L' + DataBinding.FieldName = 'E42' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 34 + end + object cxGridBandedViewE44: TcxGridDBColumn + Caption = 'E44/XL' + DataBinding.FieldName = 'E44' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 35 + end + object cxGridBandedViewE46: TcxGridDBColumn + DataBinding.FieldName = 'E46' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 35 + end + object cxGridBandedViewE48: TcxGridDBColumn + DataBinding.FieldName = 'E48' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEnviado + Styles.OnGetContentStyle = cxGridBandedViewALBARANStylesGetContentStyle + Width = 36 + end + object cxGridBandedViewENVIADO: TcxGridDBColumn + Caption = 'Enviado' + DataBinding.FieldName = 'ENVIADO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSubtotal + Width = 36 + end + object cxGridBandedViewR38: TcxGridDBColumn + Caption = 'R38/S' + DataBinding.FieldName = 'R38' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewR40: TcxGridDBColumn + Caption = 'R40/M' + DataBinding.FieldName = 'R40' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewR42: TcxGridDBColumn + Caption = 'R42/L' + DataBinding.FieldName = 'R42' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewR44: TcxGridDBColumn + Caption = 'R44/XL' + DataBinding.FieldName = 'R44' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewR46: TcxGridDBColumn + DataBinding.FieldName = 'R46' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewR48: TcxGridDBColumn + DataBinding.FieldName = 'R48' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewRECIBIDO: TcxGridDBColumn + DataBinding.FieldName = 'RECIBIDO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Visible = False + HeaderAlignmentHorz = taRightJustify + Width = 25 + end + object cxGridBandedViewRR38: TcxGridDBColumn + Caption = 'RR38/S' + DataBinding.FieldName = 'RR38' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR38GetDisplayText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR38StylesGetContentStyle + Width = 34 + end + object cxGridBandedViewRR40: TcxGridDBColumn + Caption = 'RR40/M' + DataBinding.FieldName = 'RR40' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR40GetDisplayText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR40StylesGetContentStyle + Width = 35 + end + object cxGridBandedViewRR42: TcxGridDBColumn + Caption = 'RR42/L' + DataBinding.FieldName = 'RR42' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR42GetDisplayText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR42StylesGetContentStyle + Width = 35 + end + object cxGridBandedViewRR44: TcxGridDBColumn + Caption = 'RR44/XL' + DataBinding.FieldName = 'RR44' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR44GetDisplayText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR44StylesGetContentStyle + Width = 35 + end + object cxGridBandedViewRR46: TcxGridDBColumn + DataBinding.FieldName = 'RR46' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR46GetDisplayText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR46StylesGetContentStyle + Width = 35 + end + object cxGridBandedViewRR48: TcxGridDBColumn + DataBinding.FieldName = 'RR48' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + OnGetDisplayText = cxGridBandedViewRR48GetDisplayText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleRecibido + Styles.OnGetContentStyle = cxGridBandedViewRR48StylesGetContentStyle + Width = 35 + end + object cxGridBandedViewRECIBIDO_RECT: TcxGridDBColumn + Caption = 'Recibido' + DataBinding.FieldName = 'RECIBIDO_RECT' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridBandedViewRECIBIDO_RECTGetDataText + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleSubtotal + Width = 20 + end + object cxGridBandedViewDIFERENCIA: TcxGridDBColumn + Caption = 'Diferencia' + DataBinding.FieldName = 'DIFERENCIA' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridBandedViewDIFERENCIAGetDataText + HeaderAlignmentHorz = taRightJustify + HeaderGlyphAlignmentHorz = taRightJustify + Width = 50 + end + object cxGridViewColumnOBSERVACIONES: TcxGridDBColumn + Caption = 'OBSERVACIONES' + DataBinding.FieldName = 'OBSERVACIONES_ALBARAN' + PropertiesClassName = 'TcxMemoProperties' + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + MaxClientHeight = 61 + Align = alTop + Caption = 'TBXDockablePanel1' + FloatingWidth = 128 + FloatingHeight = 128 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 0 + Top = 19 + Width = 425 + Height = 109 + Align = alLeft + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 425 + ExplicitHeight = 109 + inherited dxLayoutControl1: TdxLayoutControl + Width = 425 + ExplicitWidth = 425 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 695 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 425 + Top = 19 + Width = 270 + Height = 109 + Align = alClient + AutoSize = True + TabOrder = 2 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + end + inherited dsDataSource: TDADataSource + Top = 120 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: 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.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 = ( + 'VARELA IMAGEN Y DISE'#209'O 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 = ( + 'CONTROL DE RECEPCI'#211'N') + PrinterPage.PageHeader.RightTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage.ScaleMode = smFit + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 38877.461868113420000000 + ShrinkToPageWidth = True + OptionsCards.Shadow.Depth = 0 + OptionsExpanding.ExpandGroupRows = 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 + OnInitializeCell = dxComponentPrinterLink1InitializeCell + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleEnviado: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleRecibido: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleSubtotal: TcxStyle + AssignedValues = [svColor] + Color = 14803425 + end + object cxStyleCantidadRectificada: TcxStyle + AssignedValues = [svTextColor] + TextColor = 2129152 + end + object cxStyle1: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsStrikeOut] + TextColor = clGray + end + object cxStyleFooter: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 395 + Top = 80 + Bitmap = {} + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 112 + Top = 48 + 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 +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.pas new file mode 100644 index 0000000..b91a2be --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepciones.pas @@ -0,0 +1,690 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewListaRecepciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, DBTables, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, uBizRecepciones, dxPSGlbl, + dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxCalendar, cxTextEdit, + cxCurrencyEdit, dxPSCore, uDADataTable, StdCtrls, cxGridBandedTableView, + cxGridDBBandedTableView, cxImageComboBox, ImgList, PngImageList, + dxPScxCommon, dxPScxGridLnk, cxMemo, uDAInterfaces, TBXDkPanels, uCustomView, + uViewBase, uViewParametrosControlGrid, uViewParametrosCentro, TB2Dock; + +type + TvRecepcionVistaActiva = (trvaPendiente, trvaAprobado, trvaTodos); + + IViewListaRecepciones = interface(IViewGrid) + ['{E4401ABB-E95D-43AC-9155-BA57DC2B88C2}'] + procedure VerPendientes; + procedure VerAprobados; + procedure VerTodos; + + function GetVistaActiva : TvRecepcionVistaActiva; + property VistaActiva : TvRecepcionVistaActiva read GetVistaActiva; + + function GetItems: IBizRecepciones; + procedure SetItems(const Value: IBizRecepciones); + property Items: IBizRecepciones read GetItems write SetItems; + end; + + TfrViewListaRecepciones = class(TfrViewGrid, IViewListaRecepciones) + cxGridBandedViewCENTRO: TcxGridDBColumn; + cxGridBandedViewFILIAL: TcxGridDBColumn; + cxGridBandedViewCODIGO: TcxGridDBColumn; + cxGridBandedViewPRODUCTO: TcxGridDBColumn; + cxGridBandedViewCOLOR: TcxGridDBColumn; + cxGridBandedViewFECHA: TcxGridDBColumn; + cxGridBandedViewALBARAN: TcxGridDBColumn; + cxGridBandedViewE38: TcxGridDBColumn; + cxGridBandedViewE40: TcxGridDBColumn; + cxGridBandedViewE42: TcxGridDBColumn; + cxGridBandedViewE44: TcxGridDBColumn; + cxGridBandedViewE46: TcxGridDBColumn; + cxGridBandedViewE48: TcxGridDBColumn; + cxGridBandedViewENVIADO: TcxGridDBColumn; + cxGridBandedViewR38: TcxGridDBColumn; + cxGridBandedViewR40: TcxGridDBColumn; + cxGridBandedViewR42: TcxGridDBColumn; + cxGridBandedViewR44: TcxGridDBColumn; + cxGridBandedViewR46: TcxGridDBColumn; + cxGridBandedViewR48: TcxGridDBColumn; + cxGridBandedViewRECIBIDO: TcxGridDBColumn; + cxGridBandedViewDIFERENCIA: TcxGridDBColumn; + cxGridBandedViewESTADO_ALBARAN: TcxGridDBColumn; + cxGridBandedViewCONTABILIZAR_ALBARAN: TcxGridDBColumn; + cxGridBandedViewRR38: TcxGridDBColumn; + cxGridBandedViewRR40: TcxGridDBColumn; + cxGridBandedViewRR42: TcxGridDBColumn; + cxGridBandedViewRR44: TcxGridDBColumn; + cxGridBandedViewRR46: TcxGridDBColumn; + cxGridBandedViewRR48: TcxGridDBColumn; + cxGridBandedViewRECIBIDO_RECT: TcxGridDBColumn; + cxGridBandedViewAPROBADO: TcxGridDBColumn; + cxStyleEnviado: TcxStyle; + cxStyleRecibido: TcxStyle; + cxStyleSubtotal: TcxStyle; + SmallImages: TPngImageList; + cxStyleCantidadRectificada: TcxStyle; + cxStyle1: TcxStyle; + cxStyleFooter: TcxStyle; + dxComponentPrinterLink1: TdxGridReportLink; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxGridViewColumnOBSERVACIONES: TcxGridDBColumn; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosCentro1: TfrViewParametrosCentro; + TBXLabel1: TTBXLabel; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + procedure cxGridViewMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure cxGridBandedViewRR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewALBARANGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR40GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR42GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR44GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR46GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR48GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRR38StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR40StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR42StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR44StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR46StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewRR48StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridBandedViewALBARANStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewCustomDrawGroupCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableCellViewInfo; + var ADone: Boolean); + procedure cxGridViewCellDblClick(Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); + procedure cxGridBandedViewCODIGOGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure cxGridBandedViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridBandedViewRECIBIDO_RECTGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure cxGridBandedViewDIFERENCIAGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure dxComponentPrinterLink1InitializeCell( + Sender: TdxGridReportLink; AView: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AColumn: TcxGridColumn; + AnItem: TAbstractdxReportCellData); + protected + FItems : IBizRecepciones; + FTipo : String; + FNivelFiltrado : TcxFilterCriteriaItemList; + procedure FilterChanged(Sender: TObject); override; + function GetVistaActiva : TvRecepcionVistaActiva; + function GetItems: IBizRecepciones; + procedure SetItems(const Value: IBizRecepciones); + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + property Items: IBizRecepciones read GetItems write SetItems; + property VistaActiva : TvRecepcionVistaActiva read GetVistaActiva; + procedure Refresh; + procedure Preview; override; + procedure Print; override; + procedure PrintSetup; override; + procedure VerPendientes; + procedure VerAprobados; + procedure VerTodos; + end; + + +implementation + +uses + uDataModuleRecepciones, DateUtils, cxGridDBDataDefinitions, + uViewGridBase, cxGridRows; + +{$R *.dfm} + +procedure TfrViewListaRecepciones.cxGridViewMouseDown( + Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, + Y: Integer); +var + HT: TcxCustomGridHitTest; + ALevelIndex, AGroupIndex, I, AIndex: Integer; + AList: TList; + DC: TcxGridDBDataController; +begin + inherited; + HT := TcxGridSite(Sender).GridView.ViewInfo.GetHitTest(X, Y); + if (HT is TcxGridRecordHitTest) and not (HT is TcxGridRecordCellHitTest) + and not (HT is TcxGridExpandButtonHitTest) then + begin + DC := TcxGridDBTableView(TcxGridSite(Sender).GridView).DataController; + AList := TList.Create; + ALevelIndex := TcxGridRecordHitTest(HT).GridRecord.Level; + if ALevelIndex > 0 then + begin + ShowHourglassCursor; + TcxGridDBTableView(TcxGridSite(Sender).GridView).BeginUpdate; + try + AGroupIndex := DC.Groups.DataGroupIndexByRowIndex[TcxGridRecordHitTest(HT).GridRecord.Index]; + DC.Groups.LoadRecordIndexes(AList, AGroupIndex); + for I := 0 to AList.Count - 1 do + begin + AIndex := DC.GetRowIndexByRecordIndex(Integer(AList[I]), True); + DC.SelectRows(AIndex, AIndex); + end; + finally + FreeAndNil(AList); + TcxGridDBTableView(TcxGridSite(Sender).GridView).EndUpdate; + HideHourglassCursor; + end; + end; + end; +end; + +destructor TfrViewListaRecepciones.Destroy; +begin + FItems := Nil; + inherited; +end; + +procedure TfrViewListaRecepciones.VerAprobados; +begin + FTipo := 'S'; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); +end; + +procedure TfrViewListaRecepciones.VerPendientes; +begin + FTipo := 'N'; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); +end; + +procedure TfrViewListaRecepciones.VerTodos; +begin + FTipo := ''; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); + cxGridBandedViewAPROBADO.Visible := True; +end; + +constructor TfrViewListaRecepciones.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewALBARANGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +begin + inherited; + if Length(VarToStr(ARecord.Values[cxGridBandedViewESTADO_ALBARAN.Index])) > 0 then + AText := AText + ' (' + VarToStr(ARecord.Values[cxGridBandedViewESTADO_ALBARAN.Index]) + ')'; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridBandedViewR38.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR40GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridBandedViewR40.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR42GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridBandedViewR42.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR44GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridBandedViewR44.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR46GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridBandedViewR46.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR48GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridBandedViewR48.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR38StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridBandedViewR38.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR40StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridBandedViewR40.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR42StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridBandedViewR42.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR44StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridBandedViewR44.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR46StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridBandedViewR46.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRR48StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridBandedViewR48.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewALBARANStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + + if VarToStr(ARecord.Values[cxGridBandedViewCONTABILIZAR_ALBARAN.Index]) = 'N' then + AStyle := cxStyle1; +end; + +procedure TfrViewListaRecepciones.cxGridViewCustomDrawGroupCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableCellViewInfo; var ADone: Boolean); +var + ARecIndex: Integer; + Val1: string; +begin + inherited; + + if TcxGridGroupCellViewInfo(AViewInfo).GridRecord.GroupedColumn = cxGridBandedViewFILIAL then + begin + ARecIndex := AViewInfo.GridRecord.RecordIndex; + Val1 := Sender.DataController.DisplayTexts[ARecIndex, cxGridBandedViewFILIAL.Index]; + AViewInfo.Text := 'Centro: ' + Val1; + end; +end; + + +procedure TfrViewListaRecepciones.cxGridViewCellDblClick( + Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewCODIGOGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Val1, Val2: string; +begin + inherited; + + Val1 := AText + ' ' + Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridBandedViewPRODUCTO.Index]; + Val2 := Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridBandedViewCOLOR.Index]; + AText := 'Producto: ' + Val1 + ' - Color: ' + Val2; +end; + +procedure TfrViewListaRecepciones.Preview; +begin + inherited; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewListaRecepciones.Print; +begin + inherited; + dxComponentPrinterLink1.Print(True, nil); +end; + +procedure TfrViewListaRecepciones.PrintSetup; +begin + inherited; + dxComponentPrinterLink1.PageSetup; +end; + +procedure TfrViewListaRecepciones.Refresh; +var + ACentrosList : TStringList; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + ACentrosList := frViewParametrosCentro1.CentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' FILIAL in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + AWhereCentro := AWhereCentro + ', '; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + end; + end; + + AWhere := ''; + if AWhereCentro <> '' then + begin + AWhere := AWhere + AWhereCentro; + end; + + Items.DataTable.Where.Clear; + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(ACentrosList); + end; +end; + +procedure TfrViewListaRecepciones.SetItems(const Value: IBizRecepciones); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +begin + inherited; + AText := StringReplace(AText, 'CODIGO : ', '', [rfReplaceAll, rfIgnoreCase]) +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewRECIBIDO_RECTGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Total : Double; +begin + inherited; + + Total := 0; + with Sender.GridView.DataController do + begin + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRR38.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRR40.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRR42.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRR44.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRR46.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRR48.Index], 0); + end; + AText := FloatToStr(Total); +end; + +procedure TfrViewListaRecepciones.cxGridBandedViewDIFERENCIAGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Total : Double; +begin + inherited; + with Sender.GridView.DataController do + begin + Total := StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewRECIBIDO_RECT.Index], 0); + Total := Total - StrToFloatDef(DisplayTexts[ARecordIndex, cxGridBandedViewENVIADO.Index], 0); + end; + AText := FloatToStr(Total); +end; + +procedure TfrViewListaRecepciones.dxComponentPrinterLink1InitializeCell( + Sender: TdxGridReportLink; AView: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AColumn: TcxGridColumn; + AnItem: TAbstractdxReportCellData); +var + aux : string; +begin + inherited; + if Assigned(ARecord) then + begin + aux := ARecord.Values[cxGridBandedViewCONTABILIZAR_ALBARAN.Index]; + if aux = 'N' then + begin + AnItem.Font.Style := cxStyle1.Font.Style; + AnItem.Font.Color := cxStyle1.Font.Color; + end; + end; +end; + +procedure TfrViewListaRecepciones.FilterChanged(Sender: TObject); +var + AItemList: TcxFilterCriteriaItemList; +begin + inherited; + + cxGridView.DataController.Filter.BeginUpdate; + AItemList := cxGridView.DataController.Filter.Root; + + if (Length(FTIPO) > 0) then + begin + FNivelFiltrado := AItemList.AddItemList(fboAnd); + FNivelFiltrado.AddItem(cxGridBandedViewAPROBADO, foEqual, FTIPO, FTIPO); + end; + + if cxGridView.DataController.Filter.IsEmpty + then cxGridView.DataController.Filter.Active := False + else cxGridView.DataController.Filter.Active := True; + + cxGridView.DataController.Filter.EndUpdate; +end; + +function TfrViewListaRecepciones.GetItems: IBizRecepciones; +begin + Result := FItems; +end; + +function TfrViewListaRecepciones.GetVistaActiva: TvRecepcionVistaActiva; +begin + if FTipo = 'N' then + Result := trvaPendiente + else if FTipo = 'S' then + Result := trvaAprobado + else + Result := trvaTodos; +end; + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.ddp b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.ddp differ diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.dfm b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.dfm new file mode 100644 index 0000000..a1f98bc --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.dfm @@ -0,0 +1,344 @@ +inherited frViewListaRecepcionesAlbaran: TfrViewListaRecepcionesAlbaran + Width = 695 + Height = 477 + ExplicitWidth = 695 + ExplicitHeight = 477 + inherited cxGrid: TcxGrid + Top = 60 + Width = 695 + Height = 417 + ExplicitTop = 60 + ExplicitWidth = 695 + ExplicitHeight = 417 + inherited cxGridView: TcxGridDBTableView + FilterBox.Visible = fvNever + DataController.KeyFieldNames = 'Albaran;Codigo;Color' + OptionsCustomize.ColumnGrouping = True + OptionsSelection.MultiSelect = True + OptionsView.Footer = False + OptionsView.GridLines = glHorizontal + OptionsView.GroupRowStyle = grsOffice11 + Preview.Visible = True + Styles.Footer = cxStyleFooter + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewALBARAN: TcxGridDBColumn + DataBinding.FieldName = 'ALBARAN' + Visible = False + OnGetDataText = cxGridViewALBARANGetDataText + GroupIndex = 0 + Width = 63 + end + object cxGridViewESTADOALBARAN: TcxGridDBColumn + DataBinding.FieldName = 'ESTADOALBARAN' + Visible = False + Width = 21 + end + object cxGridViewFILIAL: TcxGridDBColumn + DataBinding.FieldName = 'FILIAL' + Visible = False + Width = 111 + end + object cxGridViewESTADOPRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'ESTADOPRODUCTO' + Width = 35 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Width = 43 + end + object cxGridViewPRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'PRODUCTO' + Width = 143 + end + object cxGridViewCOLOR: TcxGridDBColumn + DataBinding.FieldName = 'COLOR' + Width = 35 + end + object cxGridViewE38: TcxGridDBColumn + Caption = 'E38/S' + DataBinding.FieldName = 'E38' + Width = 38 + end + object cxGridViewE40: TcxGridDBColumn + Caption = 'E40/M' + DataBinding.FieldName = 'E40' + Width = 38 + end + object cxGridViewE42: TcxGridDBColumn + Caption = 'E42/L' + DataBinding.FieldName = 'E42' + Width = 36 + end + object cxGridViewE44: TcxGridDBColumn + Caption = 'E44/XL' + DataBinding.FieldName = 'E44' + Width = 39 + end + object cxGridViewE46: TcxGridDBColumn + DataBinding.FieldName = 'E46' + Width = 37 + end + object cxGridViewE48: TcxGridDBColumn + DataBinding.FieldName = 'E48' + Width = 37 + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + MaxClientHeight = 61 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 0 + Top = 19 + Width = 425 + Height = 41 + Align = alLeft + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 425 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 425 + ExplicitWidth = 425 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 695 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 425 + Top = 19 + Width = 270 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 2 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + end + inherited dsDataSource: TDADataSource + Top = 120 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: 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.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 = ( + 'VARELA IMAGEN Y DISE'#209'O 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 = ( + 'CONTROL DE ALBARANES') + PrinterPage.PageHeader.RightTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage.ScaleMode = smFit + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.Caption = 'Informe nuevo' + ReportDocument.CreationDate = 38877.461868113420000000 + ShrinkToPageWidth = True + OptionsCards.Shadow.Depth = 0 + OptionsExpanding.ExpandGroupRows = 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 + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleEnviado: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleRecibido: TcxStyle + AssignedValues = [svColor] + Color = 16119285 + end + object cxStyleSubtotal: TcxStyle + AssignedValues = [svColor] + Color = 14803425 + end + object cxStyleCantidadRectificada: TcxStyle + AssignedValues = [svTextColor] + TextColor = 2129152 + end + object cxStyle1: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsStrikeOut] + TextColor = clGray + end + object cxStyleFooter: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 395 + Top = 80 + Bitmap = {} + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 112 + Top = 48 + 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 +end diff --git a/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.pas b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.pas new file mode 100644 index 0000000..685931c --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Cliente/uViewListaRecepcionesAlbaran.pas @@ -0,0 +1,210 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewListaRecepcionesAlbaran; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, DBTables, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, uBizRecepciones, dxPSGlbl, + dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxCalendar, cxTextEdit, + cxCurrencyEdit, dxPSCore, uDADataTable, StdCtrls, cxGridBandedTableView, + cxGridDBBandedTableView, cxImageComboBox, ImgList, PngImageList, + dxPScxCommon, dxPScxGridLnk, cxMemo, uDAInterfaces, TBXDkPanels, uCustomView, + uViewBase, uViewParametrosControlGrid, uViewParametrosCentro, TB2Dock; + +type + IViewListaRecepcionesAlbaran = interface(IViewGrid) + ['{F0B4B97B-158B-4FD8-B3F1-8ECAC7AE40D5}'] + function GetItems: IBizRecepcionesAlbaran; + procedure SetItems(const Value: IBizRecepcionesAlbaran); + property Items: IBizRecepcionesAlbaran read GetItems write SetItems; + end; + + TfrViewListaRecepcionesAlbaran = class(TfrViewGrid, IViewListaRecepcionesAlbaran) + cxStyleEnviado: TcxStyle; + cxStyleRecibido: TcxStyle; + cxStyleSubtotal: TcxStyle; + SmallImages: TPngImageList; + cxStyleCantidadRectificada: TcxStyle; + cxStyle1: TcxStyle; + cxStyleFooter: TcxStyle; + dxComponentPrinterLink1: TdxGridReportLink; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewALBARAN: TcxGridDBColumn; + cxGridViewESTADOALBARAN: TcxGridDBColumn; + cxGridViewFILIAL: TcxGridDBColumn; + cxGridViewESTADOPRODUCTO: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewE38: TcxGridDBColumn; + cxGridViewE40: TcxGridDBColumn; + cxGridViewE42: TcxGridDBColumn; + cxGridViewE44: TcxGridDBColumn; + cxGridViewE46: TcxGridDBColumn; + cxGridViewE48: TcxGridDBColumn; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosCentro1: TfrViewParametrosCentro; + TBXLabel1: TTBXLabel; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + procedure cxGridViewALBARANGetDataText(Sender: TcxCustomGridTableItem; + ARecordIndex: Integer; var AText: String); + protected + FItems: IBizRecepcionesAlbaran; + function GetItems: IBizRecepcionesAlbaran; + procedure SetItems(const Value: IBizRecepcionesAlbaran); + + public + property Items: IBizRecepcionesAlbaran read GetItems write SetItems; + + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Preview; override; + procedure Print; override; + procedure PrintSetup; override; + procedure Refresh; + end; + + +implementation + +uses + uDataModuleRecepciones, DateUtils, cxGridDBDataDefinitions, + uViewGridBase, cxGridRows; + +{$R *.dfm} +function TfrViewListaRecepcionesAlbaran.GetItems: IBizRecepcionesAlbaran; +begin + Result := FItems; +end; + +procedure TfrViewListaRecepcionesAlbaran.Preview; +begin + inherited; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewListaRecepcionesAlbaran.Print; +begin + inherited; + dxComponentPrinterLink1.Print(True, nil); +end; + +procedure TfrViewListaRecepcionesAlbaran.PrintSetup; +begin + inherited; + dxComponentPrinterLink1.PageSetup; +end; + +procedure TfrViewListaRecepcionesAlbaran.Refresh; +var + ACentrosList : TStringList; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + ACentrosList := frViewParametrosCentro1.CentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' FILIAL in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + AWhereCentro := AWhereCentro + ', '; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + end; + end; + + AWhere := ''; + if AWhereCentro <> '' then + begin + AWhere := AWhere + AWhereCentro; + end; + +//No hacemos clear porque en este caso la aprobación o no del albaran no viene dado por la where desde el editor +// Items.DataTable.Where.Clear; + if not Items.DataTable.Where.Empty then + AWhere := 'AND ' + AWhere; + + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(ACentrosList); + end; +end; + +procedure TfrViewListaRecepcionesAlbaran.SetItems(const Value: IBizRecepcionesAlbaran); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +constructor TfrViewListaRecepcionesAlbaran.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewListaRecepcionesAlbaran.cxGridViewALBARANGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + ARecIndex: Integer; + Val1: string; +begin + inherited; + + if Assigned(Sender) then + begin + Val1 := cxGridView.DataController.Values[ARecordIndex, cxGridViewALBARAN.Index]; + AText := Val1; + Val1 := cxGridView.DataController.Values[ARecordIndex, cxGridViewFILIAL.Index]; + AText := AText + ' - Destino: ' + Val1; + end; +end; + +destructor TfrViewListaRecepcionesAlbaran.Destroy; +begin + FItems := Nil; + inherited; +end; + +end. diff --git a/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.bdsgroup b/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.bdsgroup new file mode 100644 index 0000000..bb8123f --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.bdsgroup @@ -0,0 +1,24 @@ + + + + + + + + + + + ..\..\Base\BaseD10.bdsproj + ..\..\ControlesBase\ControlesBaseD10.bdsproj + ..\Parametros\Cliente\Parametros.bdsproj + ..\..\Usuarios\Usuarios.bdsproj + ..\..\Configuracion\Configuracion.bdsproj + Cliente\Recepciones.bdsproj + ..\..\Cliente\AdminPV.bdsproj + ..\..\Servidor\AdminPV_Server.bdsproj + BaseD10.bpl ControlesBaseD10.bpl Parametros.bpl Usuarios.bpl Configuracion.bpl Recepciones.bpl AdminPV.exe AdminPV_Server.exe + + + + diff --git a/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.bdsgroup.local b/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.bdsgroup.local new file mode 100644 index 0000000..b451b7b --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.bdsgroup.local @@ -0,0 +1,6 @@ + + + + + + diff --git a/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.groupproj b/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.groupproj new file mode 100644 index 0000000..fba189e --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/RecepcionesGroup.groupproj @@ -0,0 +1,94 @@ + + + {e9d3639b-dfb7-4c2f-ba29-fe3dcbc4498e} + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/2.1.0/Source/Modulos/Recepciones/Reglas/uBizRecepciones.pas b/2.1.0/Source/Modulos/Recepciones/Reglas/uBizRecepciones.pas new file mode 100644 index 0000000..b9531a4 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Reglas/uBizRecepciones.pas @@ -0,0 +1,85 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uBizRecepciones; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDBSelectionList; + + +const + BIZ_RECEPCIONES = 'Client.Recepciones'; + BIZ_RECEPCIONESALBARAN = 'Client.RecepcionesAlbaran'; + +type + TInvRecepcionEstado = (tirPendiente, tirAprobado); + TInvRecepcionAlbaranEstado = (tiraPendiente, tiraRecibido); + + IBizRecepciones = interface(IDAStronglyTypedDataTable) //IRecepciones) + ['{51AA574C-78B9-43B7-B278-CDD95B729F60}'] + procedure Show; + procedure SetEstado(const AValue : TInvRecepcionEstado); + function GetEstado : TInvRecepcionEstado ; + property Estado : TInvRecepcionEstado read GetEstado write SetEstado; + end; + + IBizRecepcionesAlbaran = interface(IDAStronglyTypedDataTable) //IRecepcionesAlbaran) + ['{167478EB-ECE5-48D6-A0F2-66F07B62CA3F}'] + end; + + TBizRecepcionesDataTableRules = class(TDADataTableRules, IBizRecepciones) //TRecepcionesDataTableRules, IBizRecepciones, + protected + procedure SetEstado(const AValue : TInvRecepcionEstado); + function GetEstado : TInvRecepcionEstado ; + public + procedure Show; + property Estado : TInvRecepcionEstado read GetEstado write SetEstado; + end; + + TBizRecepcionesAlbaranDataTableRules = class(TDADataTableRules, IBizRecepcionesAlbaran) //TRecepcionesAlbaranDataTableRules, IBizRecepcionesAlbaran, + end; + +implementation + +uses + uEditorUtils, uDataModuleRecepciones; + +{ TBizRecepcionDataTableRules } + +function TBizRecepcionesDataTableRules.GetEstado: TInvRecepcionEstado; +begin + if DataTable.FieldByName('APROBADO').AsString = 'S' then + Result := tirAprobado + else + Result := tirPendiente +end; + +procedure TBizRecepcionesDataTableRules.SetEstado( + const AValue: TInvRecepcionEstado); +begin + case AValue of + tirPendiente : DataTable.FieldByName('APROBADO').AsString := 'N'; + tirAprobado : DataTable.FieldByName('APROBADO').AsString := 'S'; + else + DataTable.FieldByName('APROBADO').AsString := 'N'; + end; +end; + +procedure TBizRecepcionesDataTableRules.Show; +begin + ShowEditor(IBizRecepciones, Self, etItem); +end; + +initialization + RegisterDataTableRules(BIZ_RECEPCIONES, TBizRecepcionesDataTableRules); + RegisterDataTableRules(BIZ_RECEPCIONESALBARAN, TBizRecepcionesAlbaranDataTableRules); + +end. + diff --git a/2.1.0/Source/Modulos/Recepciones/Servidor/srvRecepciones_Impl.dfm b/2.1.0/Source/Modulos/Recepciones/Servidor/srvRecepciones_Impl.dfm new file mode 100644 index 0000000..585cfcd --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Servidor/srvRecepciones_Impl.dfm @@ -0,0 +1,1678 @@ +object srvRecepciones: TsrvRecepciones + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schRecepciones + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 + object schRecepciones: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DADataDictionary1 + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_RECEPCION_ALBARANES' + SQL = + 'SELECT ALBARAN, ESTADOALBARAN, FILIAL, ESTADOPRODUCTO, CODIGO, P' + + 'RODUCTO, COLOR, E38,'#10'E40, E42, E44, E46, E48'#10'FROM RDX_V_CONTROL_' + + 'RECEPCION_ALBARANES' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end + item + DatasetField = 'ESTADOALBARAN' + TableField = 'ESTADOALBARAN' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'ESTADOPRODUCTO' + TableField = 'ESTADOPRODUCTO' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end> + end> + Name = 'RecepcionesAlbaran' + Fields = < + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADOALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'ESTADOPRODUCTO' + DataType = datString + Size = 9 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Recepciones_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Recepciones_COLOR' + end + item + Name = 'E38' + DataType = datInteger + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + DictionaryEntry = 'Recepciones_E48' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_RECEPCION' + SQL = 'SELECT '#10' *'#10' FROM'#10' RDX_V_CONTROL_RECEPCION' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'ENVIADO' + TableField = 'ENVIADO' + end + item + DatasetField = 'R38' + TableField = 'R38' + end + item + DatasetField = 'R40' + TableField = 'R40' + end + item + DatasetField = 'R42' + TableField = 'R42' + end + item + DatasetField = 'R44' + TableField = 'R44' + end + item + DatasetField = 'R46' + TableField = 'R46' + end + item + DatasetField = 'R48' + TableField = 'R48' + end + item + DatasetField = 'RECIBIDO' + TableField = 'RECIBIDO' + end + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'ESTADO_ALBARAN' + TableField = 'ESTADO_ALBARAN' + end + item + DatasetField = 'OBSERVACIONES_ALBARAN' + TableField = 'OBSERVACIONES_ALBARAN' + end + item + DatasetField = 'CONTABILIZAR_ALBARAN' + TableField = 'CONTABILIZAR_ALBARAN' + end + item + DatasetField = 'RR38' + TableField = 'RR38' + end + item + DatasetField = 'RR40' + TableField = 'RR40' + end + item + DatasetField = 'RR42' + TableField = 'RR42' + end + item + DatasetField = 'RR44' + TableField = 'RR44' + end + item + DatasetField = 'RR46' + TableField = 'RR46' + end + item + DatasetField = 'RR48' + TableField = 'RR48' + end + item + DatasetField = 'RECIBIDO_RECT' + TableField = 'RECIBIDO_RECT' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end> + end> + Name = 'Recepciones' + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Recepciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Recepciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Recepciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Recepciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Recepciones_FECHA' + InPrimaryKey = True + end + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DictionaryEntry = 'Recepciones_OBSERVACIONES_ALBARAN' + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_CONTABILIZAR_ALBARAN' + end + item + Name = 'E38' + DataType = datInteger + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + DictionaryEntry = 'Recepciones_E48' + end + item + Name = 'ENVIADO' + DataType = datInteger + DictionaryEntry = 'Recepciones_ENVIADO' + end + item + Name = 'R38' + DataType = datFloat + DictionaryEntry = 'Recepciones_R38' + end + item + Name = 'R40' + DataType = datFloat + DictionaryEntry = 'Recepciones_R40' + end + item + Name = 'R42' + DataType = datFloat + DictionaryEntry = 'Recepciones_R42' + end + item + Name = 'R44' + DataType = datFloat + DictionaryEntry = 'Recepciones_R44' + end + item + Name = 'R46' + DataType = datFloat + DictionaryEntry = 'Recepciones_R46' + end + item + Name = 'R48' + DataType = datFloat + DictionaryEntry = 'Recepciones_R48' + end + item + Name = 'RECIBIDO' + DataType = datFloat + DictionaryEntry = 'Recepciones_RECIBIDO' + end + item + Name = 'RR38' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR38' + end + item + Name = 'RR40' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR40' + end + item + Name = 'RR42' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR42' + end + item + Name = 'RR44' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR44' + end + item + Name = 'RR46' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR46' + end + item + Name = 'RR48' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR48' + end + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + DictionaryEntry = 'Recepciones_RECIBIDO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + DictionaryEntry = 'Recepciones_DIFERENCIA' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_RECEPCION' + SQL = + 'SELECT'#10' *'#10' FROM'#10' RDX_V_CONTROL_RECEPCION'#10'WHERE (APROBADO ' + + '= '#39'N'#39')' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end + item + DatasetField = 'ESTADO_ALBARAN' + TableField = 'ESTADO_ALBARAN' + end + item + DatasetField = 'OBSERVACIONES_ALBARAN' + TableField = 'OBSERVACIONES_ALBARAN' + end + item + DatasetField = 'CONTABILIZAR_ALBARAN' + TableField = 'CONTABILIZAR_ALBARAN' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'ENVIADO' + TableField = 'ENVIADO' + end + item + DatasetField = 'R38' + TableField = 'R38' + end + item + DatasetField = 'R40' + TableField = 'R40' + end + item + DatasetField = 'R42' + TableField = 'R42' + end + item + DatasetField = 'R44' + TableField = 'R44' + end + item + DatasetField = 'R46' + TableField = 'R46' + end + item + DatasetField = 'R48' + TableField = 'R48' + end + item + DatasetField = 'RECIBIDO' + TableField = 'RECIBIDO' + end + item + DatasetField = 'RR38' + TableField = 'RR38' + end + item + DatasetField = 'RR40' + TableField = 'RR40' + end + item + DatasetField = 'RR42' + TableField = 'RR42' + end + item + DatasetField = 'RR44' + TableField = 'RR44' + end + item + DatasetField = 'RR46' + TableField = 'RR46' + end + item + DatasetField = 'RR48' + TableField = 'RR48' + end + item + DatasetField = 'RECIBIDO_RECT' + TableField = 'RECIBIDO_RECT' + end + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end> + end> + Name = 'RecepcionesPendientes' + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Recepciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Recepciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Recepciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Recepciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Recepciones_FECHA' + InPrimaryKey = True + end + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DictionaryEntry = 'Recepciones_OBSERVACIONES_ALBARAN' + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_CONTABILIZAR_ALBARAN' + end + item + Name = 'E38' + DataType = datInteger + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + DictionaryEntry = 'Recepciones_E48' + end + item + Name = 'ENVIADO' + DataType = datInteger + DictionaryEntry = 'Recepciones_ENVIADO' + end + item + Name = 'R38' + DataType = datFloat + DictionaryEntry = 'Recepciones_R38' + end + item + Name = 'R40' + DataType = datFloat + DictionaryEntry = 'Recepciones_R40' + end + item + Name = 'R42' + DataType = datFloat + DictionaryEntry = 'Recepciones_R42' + end + item + Name = 'R44' + DataType = datFloat + DictionaryEntry = 'Recepciones_R44' + end + item + Name = 'R46' + DataType = datFloat + DictionaryEntry = 'Recepciones_R46' + end + item + Name = 'R48' + DataType = datFloat + DictionaryEntry = 'Recepciones_R48' + end + item + Name = 'RECIBIDO' + DataType = datFloat + DictionaryEntry = 'Recepciones_RECIBIDO' + end + item + Name = 'RR38' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR38' + end + item + Name = 'RR40' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR40' + end + item + Name = 'RR42' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR42' + end + item + Name = 'RR44' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR44' + end + item + Name = 'RR46' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR46' + end + item + Name = 'RR48' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR48' + end + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + DictionaryEntry = 'Recepciones_RECIBIDO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + DictionaryEntry = 'Recepciones_DIFERENCIA' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_RECEPCION' + SQL = + 'SELECT '#10' *'#10' FROM'#10' RDX_V_CONTROL_RECEPCION'#10'WHERE (APROBADO' + + ' = '#39'S'#39')' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'ALBARAN' + TableField = 'ALBARAN' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'ENVIADO' + TableField = 'ENVIADO' + end + item + DatasetField = 'R38' + TableField = 'R38' + end + item + DatasetField = 'R40' + TableField = 'R40' + end + item + DatasetField = 'R42' + TableField = 'R42' + end + item + DatasetField = 'R44' + TableField = 'R44' + end + item + DatasetField = 'R46' + TableField = 'R46' + end + item + DatasetField = 'R48' + TableField = 'R48' + end + item + DatasetField = 'RECIBIDO' + TableField = 'RECIBIDO' + end + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'ESTADO_ALBARAN' + TableField = 'ESTADO_ALBARAN' + end + item + DatasetField = 'OBSERVACIONES_ALBARAN' + TableField = 'OBSERVACIONES_ALBARAN' + end + item + DatasetField = 'CONTABILIZAR_ALBARAN' + TableField = 'CONTABILIZAR_ALBARAN' + end + item + DatasetField = 'RR38' + TableField = 'RR38' + end + item + DatasetField = 'RR40' + TableField = 'RR40' + end + item + DatasetField = 'RR42' + TableField = 'RR42' + end + item + DatasetField = 'RR44' + TableField = 'RR44' + end + item + DatasetField = 'RR46' + TableField = 'RR46' + end + item + DatasetField = 'RR48' + TableField = 'RR48' + end + item + DatasetField = 'RECIBIDO_RECT' + TableField = 'RECIBIDO_RECT' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end> + end> + Name = 'RecepcionesAprobadas' + Fields = < + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_APROBADO' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Recepciones_FECHACAMBIO' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Recepciones_CENTRO' + InPrimaryKey = True + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Recepciones_FILIAL' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Recepciones_CODIGO' + InPrimaryKey = True + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Recepciones_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Recepciones_COLOR' + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Recepciones_FECHA' + InPrimaryKey = True + end + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + DictionaryEntry = 'Recepciones_ALBARAN' + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + DictionaryEntry = 'Recepciones_ESTADO_ALBARAN' + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DictionaryEntry = 'Recepciones_OBSERVACIONES_ALBARAN' + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DictionaryEntry = 'Recepciones_CONTABILIZAR_ALBARAN' + end + item + Name = 'E38' + DataType = datInteger + DictionaryEntry = 'Recepciones_E38' + end + item + Name = 'E40' + DataType = datInteger + DictionaryEntry = 'Recepciones_E40' + end + item + Name = 'E42' + DataType = datInteger + DictionaryEntry = 'Recepciones_E42' + end + item + Name = 'E44' + DataType = datInteger + DictionaryEntry = 'Recepciones_E44' + end + item + Name = 'E46' + DataType = datInteger + DictionaryEntry = 'Recepciones_E46' + end + item + Name = 'E48' + DataType = datInteger + DictionaryEntry = 'Recepciones_E48' + end + item + Name = 'ENVIADO' + DataType = datInteger + DictionaryEntry = 'Recepciones_ENVIADO' + end + item + Name = 'R38' + DataType = datFloat + DictionaryEntry = 'Recepciones_R38' + end + item + Name = 'R40' + DataType = datFloat + DictionaryEntry = 'Recepciones_R40' + end + item + Name = 'R42' + DataType = datFloat + DictionaryEntry = 'Recepciones_R42' + end + item + Name = 'R44' + DataType = datFloat + DictionaryEntry = 'Recepciones_R44' + end + item + Name = 'R46' + DataType = datFloat + DictionaryEntry = 'Recepciones_R46' + end + item + Name = 'R48' + DataType = datFloat + DictionaryEntry = 'Recepciones_R48' + end + item + Name = 'RECIBIDO' + DataType = datFloat + DictionaryEntry = 'Recepciones_RECIBIDO' + end + item + Name = 'RR38' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR38' + end + item + Name = 'RR40' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR40' + end + item + Name = 'RR42' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR42' + end + item + Name = 'RR44' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR44' + end + item + Name = 'RR46' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR46' + end + item + Name = 'RR48' + DataType = datFloat + DictionaryEntry = 'Recepciones_RR48' + end + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + DictionaryEntry = 'Recepciones_RECIBIDO_RECT' + end + item + Name = 'DIFERENCIA' + DataType = datFloat + DictionaryEntry = 'Recepciones_DIFERENCIA' + end> + end + item + Params = < + item + Name = 'FECHA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_RECEPCION' + SQL = + 'SELECT '#10' RECIBIDO_RECT, DIFERENCIA'#10' FROM'#10' RDX_V_CONTROL_R' + + 'ECEPCION'#10' WHERE'#10' FECHA = :FECHA AND'#10' CENTRO = :CENT' + + 'RO AND'#10' CODIGO = :CODIGO AND'#10' COLOR = :COLOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'DIFERENCIA' + TableField = 'DIFERENCIA' + end + item + DatasetField = 'RECIBIDO_RECT' + TableField = 'RECIBIDO_RECT' + end> + end> + Name = 'RefreshRecepciones' + Fields = < + item + Name = 'RECIBIDO_RECT' + DataType = datFloat + end + item + Name = 'DIFERENCIA' + DataType = datFloat + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ALBARAN' + DataType = datString + Size = 7 + Value = '' + ParamType = daptInput + end + item + Name = 'ESTADO_ALBARAN' + DataType = datString + Size = 15 + Value = '' + ParamType = daptInput + end + item + Name = 'OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'RR38' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RR40' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RR42' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RR44' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RR46' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'RR48' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_RECEPCION' + SQL = + 'begin'#10' declare @rowcount_var int'#10' declare @ALBARAN char(7)' + + #10' declare @ESTADO_ALBARAN varchar(20)'#10' declare @OBSERVACIO' + + 'NES_ALBARAN varchar(255)'#10' declare @CONTABILIZAR_ALBARAN char(' + + '1)'#10#10' declare @RR38 numeric(15,0)'#10' declare @RR40 numeric(15' + + ',0)'#10' declare @RR42 numeric(15,0)'#10' declare @RR44 numeric(15' + + ',0)'#10' declare @RR46 numeric(15,0)'#10' declare @RR48 numeric(15' + + ',0)'#10' declare @RR_S numeric(15,0)'#10' declare @RR_M numeric(15' + + ',0)'#10' declare @RR_L numeric(15,0)'#10' declare @RR_XL numeric(1' + + '5,0)'#10#10' declare @APROBADO char(1)'#10' declare @FECHA datetime'#10 + + ' declare @CENTRO varchar(17)'#10' declare @CODIGO varchar(12)'#10 + + ' declare @COLOR varchar(10)'#10' '#10' declare @TIPO_TALLAJE sm' + + 'allint'#10#10' set @ALBARAN = :ALBARAN'#10' set @ESTADO_ALBARAN = :E' + + 'STADO_ALBARAN'#10' set @OBSERVACIONES_ALBARAN = :OBSERVACIONES_AL' + + 'BARAN'#10' set @CONTABILIZAR_ALBARAN = :CONTABILIZAR_ALBARAN'#10#10' ' + + ' set @RR38 = :RR38'#10' set @RR40 = :RR40'#10' set @RR42 = :RR42'#10' ' + + ' set @RR44 = :RR44'#10' set @RR46 = :RR46'#10' set @RR48 = :RR48' + + #10' set @RR_S = :RR38'#10' set @RR_M = :RR40'#10' set @RR_L = :RR' + + '42'#10' set @RR_XL = :RR44'#10#10' set @APROBADO = :APROBADO'#10' set' + + ' @FECHA = :FECHA'#10' set @CENTRO = :CENTRO'#10' set @CODIGO = :CO' + + 'DIGO'#10' set @COLOR = :COLOR'#10#10#10' /* **************************' + + '********* */'#10' if @ALBARAN <> '#39#39#10' begin'#10' update RDX' + + '_AJUSTES_ALBARAN set'#10#9' ESTADO = @ESTADO_ALBARAN,'#10#9' O' + + 'BSERVACIONES = @OBSERVACIONES_ALBARAN,'#10#9' CONTABILIZAR = @C' + + 'ONTABILIZAR_ALBARAN'#10' where RDX_AJUSTES_ALBARAN.ALBARAN =' + + ' @ALBARAN'#10#10#9' select @ROWCOUNT_VAR = @@ROWCOUNT'#10#10' if @ROW' + + 'COUNT_VAR = 0'#10#9' begin'#10' insert into RDX_AJUSTES_ALBAR' + + 'AN'#10' (ALBARAN, ESTADO, OBSERVACIONES, CONTABIL' + + 'IZAR)'#10' values (@ALBARAN, @ESTADO_ALBARAN,'#10' ' + + ' @OBSERVACIONES_ALBARAN, @CONTABILIZAR_ALBARAN)'#10#10' ' + + ' select @ROWCOUNT_VAR = @@ROWCOUNT'#10' end'#10' end'#10 + + #10#10' /* ARREGLO PARA QUE SOPORTE LOS NUEVOS TALLAJES*** */'#10' ' + + #10' execute RDX_P_TIPO_TALLAJE @CODIGO, @TIPO_TALLAJE OUTPUT'#10#10' ' + + ' if @TIPO_TALLAJE = 1'#10' begin'#10' set @RR_S = NULL'#10' ' + + ' set @RR_M = NULL'#10' set @RR_L = NULL'#10' set @RR_XL = NU' + + 'LL'#10' end'#10#10' if @TIPO_TALLAJE = 2'#10' begin'#10' set @RR38 ' + + '= NULL'#10' set @RR40 = NULL'#10' set @RR42 = NULL'#10' se' + + 't @RR44 = NULL'#10' set @RR46 = NULL'#10' set @RR48 = NULL'#10' ' + + ' end'#10#10' '#10' /* *********************************** */'#10#9'upda' + + 'te RDX_RECEPCION_AJUSTES set'#10#9' CANT38 = @RR38,'#10#9' ' + + ' CANT40 = @RR40,'#10#9' CANT42 = @RR42,'#10#9' CAN' + + 'T44 = @RR44,'#10#9' CANT46 = @RR46,'#10#9' CANT48 = @R' + + 'R48,'#10#9' CANT_S = @RR_S,'#10#9' CANT_M = @RR_M,'#10#9' ' + + ' CANT_L = @RR_L,'#10#9' CANT_XL = @RR_XL,'#10' ' + + ' APROBADO = @APROBADO,'#10' FECHACAMBIO = CURRENT' + + '_TIMESTAMP'#10#9'where'#10' (RDX_RECEPCION_AJUSTES.CENTRO = @' + + 'CENTRO and'#10#9' RDX_RECEPCION_AJUSTES.CODIGO = @CODIGO and'#10#9' ' + + ' RDX_RECEPCION_AJUSTES.COLOR = @COLOR and'#10#9' RDX_RECEPCIO' + + 'N_AJUSTES.FECHA = @FECHA)'#10#10#9'select @ROWCOUNT_VAR = @@ROWCOUNT'#10#10#9 + + 'if @ROWCOUNT_VAR = 0'#10' begin'#10' insert into RDX_RECE' + + 'PCION_AJUSTES'#10' (FECHA, CENTRO, CODIGO, COLOR,'#10' ' + + ' APROBADO, FECHACAMBIO,'#10' CANT38, CA' + + 'NT40, CANT42,'#10' CANT44, CANT46, CANT48,'#10' ' + + ' CANT_S, CANT_M, CANT_L, CANT_XL)'#10' values ('#10' ' + + ' @FECHA, @CENTRO, @CODIGO,'#10' @COLOR, @' + + 'APROBADO, CURRENT_TIMESTAMP,'#10' @RR38, @RR40, @RR4' + + '2,'#10' @RR44, @RR46, @RR48,'#10' @RR_S,' + + ' @RR_M, @RR_L, @RR_XL)'#10#10' select @ROWCOUNT_VAR = @@ROWCOU' + + 'NT'#10' end'#10'end'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Estado_Recepciones' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 48 + Top = 32 + end + object bpRecepciones: TDABusinessProcessor + Schema = schRecepciones + UpdateCommandName = 'Update_Estado_Recepciones' + RefreshDatasetName = 'RefreshRecepciones' + ReferencedDataset = 'Recepciones' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 32 + end + object bpRecepcionesAprobadas: TDABusinessProcessor + Schema = schRecepciones + UpdateCommandName = 'Update_Estado_Recepciones' + RefreshDatasetName = 'RefreshRecepciones' + ReferencedDataset = 'RecepcionesAprobadas' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 88 + end + object bpRecepcionesPendientes: TDABusinessProcessor + Schema = schRecepciones + UpdateCommandName = 'Update_Estado_Recepciones' + RefreshDatasetName = 'RefreshRecepciones' + ReferencedDataset = 'RecepcionesPendientes' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 152 + end + object DADataDictionary1: TDADataDictionary + Fields = < + item + Name = 'Recepciones_APROBADO' + DataType = datString + Size = 1 + DisplayLabel = 'APROBADO' + end + item + Name = 'Recepciones_FECHACAMBIO' + DataType = datDateTime + DisplayLabel = 'FECHACAMBIO' + ReadOnly = True + end + item + Name = 'Recepciones_CENTRO' + DataType = datString + Size = 17 + DisplayLabel = 'CENTRO' + ReadOnly = True + end + item + Name = 'Recepciones_FILIAL' + DataType = datString + Size = 25 + LogChanges = False + DisplayLabel = 'FILIAL' + ReadOnly = True + end + item + Name = 'Recepciones_CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'CODIGO' + ReadOnly = True + end + item + Name = 'Recepciones_PRODUCTO' + DataType = datString + Size = 40 + LogChanges = False + DisplayLabel = 'PRODUCTO' + ReadOnly = True + end + item + Name = 'Recepciones_COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'COLOR' + ReadOnly = True + end + item + Name = 'Recepciones_FECHA' + DataType = datDateTime + DisplayLabel = 'FECHA' + ReadOnly = True + end + item + Name = 'Recepciones_ALBARAN' + DataType = datString + Size = 7 + LogChanges = False + DisplayLabel = 'ALBARAN' + ReadOnly = True + end + item + Name = 'Recepciones_ESTADO_ALBARAN' + DataType = datString + Size = 15 + DisplayLabel = 'ESTADO_ALBARAN' + end + item + Name = 'Recepciones_OBSERVACIONES_ALBARAN' + DataType = datString + Size = 255 + DisplayLabel = 'OBSERVACIONES_ALBARAN' + end + item + Name = 'Recepciones_CONTABILIZAR_ALBARAN' + DataType = datString + Size = 1 + DisplayLabel = 'CONTABILIZAR_ALBARAN' + end + item + Name = 'Recepciones_E38' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E38/S' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_E40' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E40/M' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_E42' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E42/L' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_E44' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E44/XL' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_E46' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E46' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_E48' + DataType = datInteger + LogChanges = False + DisplayLabel = 'E48' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_ENVIADO' + DataType = datInteger + LogChanges = False + DisplayLabel = 'ENVIADO' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_R38' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R38/S' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_R40' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R40/M' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_R42' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R42/L' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_R44' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R44/XL' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_R46' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R46' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_R48' + DataType = datFloat + LogChanges = False + DisplayLabel = 'R48' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_RECIBIDO' + DataType = datFloat + LogChanges = False + DisplayLabel = 'RECIBIDO' + ReadOnly = True + Alignment = taRightJustify + end + item + Name = 'Recepciones_RR38' + DataType = datFloat + DisplayLabel = 'RR38/S' + Alignment = taRightJustify + end + item + Name = 'Recepciones_RR40' + DataType = datFloat + DisplayLabel = 'RR40/M' + Alignment = taRightJustify + end + item + Name = 'Recepciones_RR42' + DataType = datFloat + DisplayLabel = 'RR42/L' + Alignment = taRightJustify + end + item + Name = 'Recepciones_RR44' + DataType = datFloat + DisplayLabel = 'RR44/XL' + Alignment = taRightJustify + end + item + Name = 'Recepciones_RR46' + DataType = datFloat + DisplayLabel = 'RR46' + Alignment = taRightJustify + end + item + Name = 'Recepciones_RR48' + DataType = datFloat + DisplayLabel = 'RR48' + Alignment = taRightJustify + end + item + Name = 'Recepciones_RECIBIDO_RECT' + DataType = datFloat + LogChanges = False + DisplayLabel = 'RECIBIDO_RECT' + Alignment = taRightJustify + end + item + Name = 'Recepciones_DIFERENCIA' + DataType = datFloat + LogChanges = False + DisplayLabel = 'DIFERENCIA' + Alignment = taRightJustify + end> + Left = 48 + Top = 104 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 168 + end +end diff --git a/2.1.0/Source/Modulos/Recepciones/Servidor/srvRecepciones_Impl.pas b/2.1.0/Source/Modulos/Recepciones/Servidor/srvRecepciones_Impl.pas new file mode 100644 index 0000000..0e9d902 --- /dev/null +++ b/2.1.0/Source/Modulos/Recepciones/Servidor/srvRecepciones_Impl.pas @@ -0,0 +1,52 @@ +unit srvRecepciones_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:} DataAbstract3_Intf, + uDAScriptingProvider, uDABusinessProcessor, + {Generated:} VARELA_Intf, uDAClasses, + uDAInterfaces, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TsrvRecepciones } + TsrvRecepciones = class(TDARemoteService, IsrvRecepciones) + bpRecepciones: TDABusinessProcessor; + bpRecepcionesAprobadas: TDABusinessProcessor; + bpRecepcionesPendientes: TDABusinessProcessor; + DABINAdapter: TDABINAdapter; + schRecepciones: TDASchema; + DADataDictionary1: TDADataDictionary; + private + protected + { IsrvRecepciones methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, Variants; + +procedure Create_srvRecepciones(out anInstance : IUnknown); +begin + anInstance := TsrvRecepciones.Create(NIL); +end; + +{ srvRecepciones } +initialization + TROClassFactory.Create('srvRecepciones', Create_srvRecepciones, TsrvRecepciones_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.bdsproj b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.bdsproj new file mode 100644 index 0000000..d5c0d3d --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + ReferenciaGenerica.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 + 0 + 1 + 0 + 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 + 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/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.cfg b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.cfg new file mode 100644 index 0000000..a34a309 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dof b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dof new file mode 100644 index 0000000..f5bd34e --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Servidor +Item1=..\..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dpk b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dpk new file mode 100644 index 0000000..1861207 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dpk @@ -0,0 +1,77 @@ +package ReferenciaGenerica; + +{$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 OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + dbrtl, + dsnap, + BaseD10, + vcl, + adortl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + GUISDK_D10, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + cxTreeListD10, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + JvGlobusD10R, + ControlesBaseD10, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + dxPSCoreD10, + dxComnD10, + JvCustomD10R, + Parametros; + +contains + uPluginControllerReferenciaGenerica in 'uPluginControllerReferenciaGenerica.pas' {ModuleReferenciaGenerica: TModuleController}, + uDataModuleReferenciaGenerica in 'uDataModuleReferenciaGenerica.pas' {dmReferenciaGenerica: TDAClientDataModule}, + uBizReferenciaGenerica in '..\Reglas\uBizReferenciaGenerica.pas', + schReferenciaGenericaClient_Intf in '..\Reglas\schReferenciaGenericaClient_Intf.pas', + uEditorListaReferenciaGenerica in 'uEditorListaReferenciaGenerica.pas' {fEditorListaReferenciaGenerica: TCustomEditor}, + uViewListaReferenciaGenerica in 'uViewListaReferenciaGenerica.pas' {frViewListaReferenciaGenerica: TCustomView}, + uEditorCambioReferenciaGenerica in 'uEditorCambioReferenciaGenerica.pas' {fEditorCambioReferenciaGenerica}, + schReferenciaGenericaServer_Intf in '..\Reglas\schReferenciaGenericaServer_Intf.pas'; + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dproj b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dproj new file mode 100644 index 0000000..4a2e3ff --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.dproj @@ -0,0 +1,614 @@ + + + + {d34ce1e7-d660-436d-a982-7683ff67eecd} + ReferenciaGenerica.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\ReferenciaGenerica.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0ReferenciaGenerica.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmReferenciaGenerica
+
+ +
fEditorCambioReferenciaGenerica
+
+ +
fEditorListaReferenciaGenerica
+
+ +
ModuleReferenciaGenerica
+
+ +
frViewListaReferenciaGenerica
+
+
+
+ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.drc b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.drc new file mode 100644 index 0000000..3e17c50 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.drc @@ -0,0 +1,21 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Cliente\uDataModuleReferenciaGenerica.dfm */ +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Cliente\uViewListaReferenciaGenerica.dfm */ +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Cliente\uEditorListaReferenciaGenerica.dfm */ +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Cliente\uPluginControllerReferenciaGenerica.dfm */ +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Cliente\uEditorCambioReferenciaGenerica.dfm */ +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Cliente\ReferenciaGenerica.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf1A.tmp */ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.identcache b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.identcache new file mode 100644 index 0000000..5cbf90e Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.identcache differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.rc b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.res b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/ReferenciaGenerica.res differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.ddp b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.ddp differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.dfm b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.dfm new file mode 100644 index 0000000..5945136 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.dfm @@ -0,0 +1,229 @@ +object dmReferenciaGenerica: TdmReferenciaGenerica + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 297 + Width = 298 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvReferenciaGenerica' + Left = 40 + Top = 32 + end + object ds_ReferenciaGenerica: TDADataSource + Left = 192 + Top = 96 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetData' + GetDataCall.Params = < + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'ReferenciaGenerica' + end + item + Name = 'Params' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = False + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = DABinDataStreamer1 + Left = 40 + Top = 96 + end + object DABinDataStreamer1: TDABinDataStreamer + IsCompatibleV4 = False + Left = 40 + Top = 160 + end + object tbl_ReferenciaGenerica: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + InPrimaryKey = True + end + item + Name = 'CLAVE1' + DataType = datFloat + InPrimaryKey = True + end + item + Name = 'CLAVE2' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'CLAVE3' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'NUMCON' + DataType = datInteger + end + item + Name = 'FECHA' + DataType = datDateTime + end + item + Name = 'CODCENTRO' + DataType = datString + Size = 17 + end + item + Name = 'CENTRO' + DataType = datString + Size = 45 + end + item + Name = 'CODVENDEDOR' + DataType = datString + Size = 17 + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 86 + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CODIGO_BARRA' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'TALLA' + DataType = datString + Size = 8 + end + item + Name = 'VTAPROCESO' + DataType = datFloat + end + item + Name = 'VTAFINAL' + DataType = datFloat + end + item + Name = 'VTATERM' + DataType = datFloat + end + item + Name = 'VALTOT' + DataType = datFloat + end + item + Name = 'ESTADO' + DataType = datString + Size = 1 + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'ReferenciaGenerica' + IndexDefs = <> + Left = 192 + Top = 40 + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.pas new file mode 100644 index 0000000..2615ede --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uDataModuleReferenciaGenerica.pas @@ -0,0 +1,139 @@ +unit uDataModuleReferenciaGenerica; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uROServiceComponent, uRORemoteService, + uROClient, uROBinMessage, uROWinInetHttpChannel, uDataModuleBase, + uBizReferenciaGenerica, uDARemoteDataAdapter, uDAInterfaces, uDADataStreamer; + +type + TdmReferenciaGenerica = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + ds_ReferenciaGenerica: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + DABinDataStreamer1: TDABinDataStreamer; + tbl_ReferenciaGenerica: TDACDSDataTable; + procedure DAClientDataModuleCreate(Sender: TObject); + private + { Private declarations } + public + procedure Print(const Centro: string; const Vendedor : String; const Estado : String; const AFiltro : string = ''); + procedure Preview(const Centro: string; const Vendedor : String; const Estado : String; const AFiltro : string = ''); + function GetItems : IBizReferenciaGenerica; + function GetProducto(const Codigo: String; const Talla: String; + const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; + function GetSelectedItems(const AItems : IBizReferenciaGenerica): IBizReferenciaGenerica; + end; + +var + dmReferenciaGenerica: TdmReferenciaGenerica; + +implementation + +{$R *.DFM} + +uses + Forms, Windows, Controls, VARELA_Intf, uEditorPreview, + uDataTableUtils, uROTypes, cxControls; + +procedure TdmReferenciaGenerica.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmReferenciaGenerica.GetItems: IBizReferenciaGenerica; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_ReferenciaGenerica, dtLista); + dtLista.BusinessRulesID := BIZ_REFERENCIAGENERICA; + Result := (dtLista as IBizReferenciaGenerica); + finally + HideHourglassCursor; + end; +end; + +function TdmReferenciaGenerica.GetProducto(const Codigo, Talla, + Color: String; out CodigoBarras, Descripcion: String): Boolean; +begin + Result := (RORemoteService as IsrvReferenciaGenerica).GetProducto(Codigo, + Talla, Color, CodigoBarras, Descripcion); +end; + +function TdmReferenciaGenerica.GetSelectedItems( + const AItems: IBizReferenciaGenerica): IBizReferenciaGenerica; +var + dtLista : TDACDSDataTable; + ATarget : TDADataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_ReferenciaGenerica, dtLista, False); + CopyDataTable(AItems.DataTable, dtLista, True); + dtLista.BusinessRulesID := BIZ_REFERENCIAGENERICA; + dtLista.LogChanges := True; // Para guardar los cambios + dtLista.RemoteFetchEnabled := True; // Para guardar los cambios + Result := (dtLista as IBizReferenciaGenerica); + finally + HideHourglassCursor; + end; +end; + +procedure TdmReferenciaGenerica.Preview(const Centro, Vendedor: String; const Estado : String; + const AFiltro : String); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + ShowHourglassCursor; + try + AStream := (RORemoteService as IsrvReferenciaGenerica).GenerateReport(Centro, Vendedor, Estado, AFiltro); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + finally + HideHourglassCursor; + end; + AEditorPreview.ShowModal; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +procedure TdmReferenciaGenerica.Print(const Centro, Vendedor: String; const Estado : String; + const AFiltro : String); +var + AStream: TROBinaryMemoryStream; + AEditorPreview : TfEditorPreview; +begin + AEditorPreview := TfEditorPreview.Create(Application); + try + ShowHourglassCursor; + try + AStream := (RORemoteService as IsrvReferenciaGenerica).GenerateReport(Centro, Vendedor, Estado, AFiltro); + AEditorPreview.Report.PreviewPages.LoadFromStream(AStream); + finally + HideHourglassCursor; + end; + AEditorPreview.Print; + finally + AEditorPreview.Release; + AStream.Free; + end; +end; + +initialization + dmReferenciaGenerica := TdmReferenciaGenerica.Create(nil); + +finalization + FreeAndNil(dmReferenciaGenerica); + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.ddp b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.ddp differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.dfm b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.dfm new file mode 100644 index 0000000..9562cb5 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.dfm @@ -0,0 +1,574 @@ +object fEditorCambioReferenciaGenerica: TfEditorCambioReferenciaGenerica + Left = 418 + Top = 278 + BorderIcons = [biSystemMenu, biMaximize] + Caption = 'Rectificar referencia gen'#233'rica de producto' + ClientHeight = 535 + ClientWidth = 759 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnShow = FormShow + DesignSize = ( + 759 + 535) + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 759 + Height = 73 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'MS Sans Serif' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'MS Sans Serif' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Rectificar referencia gen'#233'rica de producto') + Comments.Strings = ( + + 'Indique el c'#243'digo de producto, el color y la talla que correspon' + + 'de a la referencia gen'#233'rica.') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = True + Gradient.Orientation = fgdVertical + BufferedDraw = False + end + object Bevel1: TBevel + Left = 16 + Top = 483 + Width = 730 + Height = 4 + Anchors = [akLeft, akRight, akBottom] + Shape = bsBottomLine + end + object lblImporteTotal: TLabel + Left = 85 + Top = 460 + Width = 5 + Height = 13 + Anchors = [akLeft, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object bAceptar: TButton + Left = 577 + Top = 496 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Caption = '&Aceptar' + ModalResult = 1 + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 671 + Top = 496 + Width = 75 + Height = 25 + Anchors = [akRight, akBottom] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object bComprobar: TButton + Left = 17 + Top = 496 + Width = 152 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = 'Comprobar todos los c'#243'digos' + TabOrder = 2 + OnClick = bComprobarClick + end + object cxGrid: TcxGrid + Left = 16 + Top = 88 + Width = 729 + Height = 385 + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 3 + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBBandedTableView + NavigatorButtons.ConfirmDelete = False + OnCustomDrawCell = cxGridViewCustomDrawCell + DataController.DataSource = dsDataSource + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = < + item + Format = '#,##0.##' + Kind = skSum + Column = cxGridViewVALTOT + end> + DataController.Summary.SummaryGroups = <> + OptionsBehavior.AlwaysShowEditor = True + OptionsBehavior.FocusCellOnTab = True + OptionsBehavior.GoToNextCellOnEnter = True + OptionsBehavior.FocusCellOnCycle = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsData.Deleting = False + OptionsData.Inserting = False + OptionsSelection.InvertSelect = False + OptionsSelection.UnselectFocusedRecordOnExit = False + OptionsView.Navigator = True + OptionsView.ScrollBars = ssVertical + OptionsView.ShowEditButtons = gsebAlways + OptionsView.CellAutoHeight = True + OptionsView.ColumnAutoWidth = True + OptionsView.GridLines = glNone + OptionsView.GroupByBox = False + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + OptionsView.BandHeaders = False + Bands = < + item + Width = 667 + end> + object cxGridViewRecID: TcxGridDBBandedColumn + DataBinding.FieldName = 'RecID' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewOperacion: TcxGridDBBandedColumn + OnGetProperties = cxGridViewOperacionGetProperties + Options.ShowEditButtons = isebAlways + Options.Grouping = False + Options.Moving = False + Styles.Content = cxStyleNoEditable + Width = 26 + Position.BandIndex = 0 + Position.ColIndex = 0 + Position.RowIndex = 0 + end + object cxGridViewNUMINF: TcxGridDBBandedColumn + DataBinding.FieldName = 'NUMINF' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + SortIndex = 1 + SortOrder = soAscending + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewCLAVE1: TcxGridDBBandedColumn + DataBinding.FieldName = 'CLAVE1' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + SortIndex = 2 + SortOrder = soAscending + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewCLAVE2: TcxGridDBBandedColumn + DataBinding.FieldName = 'CLAVE2' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + SortIndex = 3 + SortOrder = soAscending + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewCLAVE3: TcxGridDBBandedColumn + DataBinding.FieldName = 'CLAVE3' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + SortIndex = 4 + SortOrder = soAscending + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewNUMCON: TcxGridDBBandedColumn + DataBinding.FieldName = 'NUMCON' + Visible = False + SortIndex = 5 + SortOrder = soAscending + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewFECHA: TcxGridDBBandedColumn + Caption = 'Fecha venta' + DataBinding.FieldName = 'FECHA' + PropertiesClassName = 'TcxTextEditProperties' + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + SortIndex = 0 + SortOrder = soAscending + Styles.Content = cxStyleNoEditable + Width = 73 + Position.BandIndex = 0 + Position.ColIndex = 1 + Position.RowIndex = 0 + end + object cxGridViewCODCENTRO: TcxGridDBBandedColumn + DataBinding.FieldName = 'CODCENTRO' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewCENTRO: TcxGridDBBandedColumn + Caption = 'Centro' + DataBinding.FieldName = 'CENTRO' + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Styles.Content = cxStyleNoEditable + Width = 304 + Position.BandIndex = 0 + Position.ColIndex = 2 + Position.RowIndex = 0 + end + object cxGridViewCODVENDEDOR: TcxGridDBBandedColumn + DataBinding.FieldName = 'CODVENDEDOR' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Width = 348 + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewVENDEDOR: TcxGridDBBandedColumn + Caption = 'Vendedor' + DataBinding.FieldName = 'VENDEDOR' + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Styles.Content = cxStyleNoEditable + Width = 173 + Position.BandIndex = 0 + Position.ColIndex = 3 + Position.RowIndex = 0 + end + object cxGridViewNUMTALON: TcxGridDBBandedColumn + Caption = 'Tal'#243'n' + DataBinding.FieldName = 'NUMTALON' + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Styles.Content = cxStyleNoEditable + Width = 87 + Position.BandIndex = 0 + Position.ColIndex = 0 + Position.RowIndex = 1 + end + object cxGridViewCODIGO_BARRA: TcxGridDBBandedColumn + DataBinding.FieldName = 'CODIGO_BARRA' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewCODIGO: TcxGridDBBandedColumn + Caption = 'C'#243'digo' + DataBinding.FieldName = 'CODIGO' + Styles.Content = cxStyleEditable + Width = 114 + Position.BandIndex = 0 + Position.ColIndex = 1 + Position.RowIndex = 1 + end + object cxGridViewPRODUCTO: TcxGridDBBandedColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Styles.Content = cxStyleProductor + Styles.OnGetContentStyle = cxGridViewPRODUCTOStylesGetContentStyle + Width = 300 + Position.BandIndex = 0 + Position.ColIndex = 4 + Position.RowIndex = 1 + end + object cxGridViewCOLOR: TcxGridDBBandedColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + Styles.Content = cxStyleEditable + Width = 60 + Position.BandIndex = 0 + Position.ColIndex = 2 + Position.RowIndex = 1 + end + object cxGridViewTALLA: TcxGridDBBandedColumn + Caption = 'Talla' + DataBinding.FieldName = 'TALLA' + Styles.Content = cxStyleEditable + Width = 59 + Position.BandIndex = 0 + Position.ColIndex = 3 + Position.RowIndex = 1 + end + object cxGridViewVTAPROCESO: TcxGridDBBandedColumn + Caption = 'Proceso' + DataBinding.FieldName = 'VTAPROCESO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Properties.UseLeftAlignmentOnEditing = False + FooterAlignmentHorz = taRightJustify + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleEditable + Width = 49 + Position.BandIndex = 0 + Position.ColIndex = 4 + Position.RowIndex = 0 + end + object cxGridViewVTAFINAL: TcxGridDBBandedColumn + Caption = 'Final/Resc.' + DataBinding.FieldName = 'VTAFINAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Properties.UseLeftAlignmentOnEditing = False + FooterAlignmentHorz = taRightJustify + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleEditable + Width = 51 + Position.BandIndex = 0 + Position.ColIndex = 5 + Position.RowIndex = 0 + end + object cxGridViewVTATERM: TcxGridDBBandedColumn + Caption = 'Term./Dev.' + DataBinding.FieldName = 'VTATERM' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taCenter + Properties.UseLeftAlignmentOnEditing = False + FooterAlignmentHorz = taRightJustify + HeaderGlyphAlignmentHorz = taRightJustify + Styles.Content = cxStyleEditable + Width = 51 + Position.BandIndex = 0 + Position.ColIndex = 6 + Position.RowIndex = 0 + end + object cxGridViewVALTOT: TcxGridDBBandedColumn + Caption = 'Importe' + DataBinding.FieldName = 'VALTOT' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.UseLeftAlignmentOnEditing = False + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + HeaderGlyphAlignmentHorz = taRightJustify + Options.Moving = False + Styles.Content = cxStyleEditable + Width = 90 + Position.BandIndex = 0 + Position.ColIndex = 5 + Position.RowIndex = 1 + end + object cxGridViewESTADO: TcxGridDBBandedColumn + DataBinding.FieldName = 'ESTADO' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Width = 144 + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + object cxGridViewFECHACAMBIO: TcxGridDBBandedColumn + DataBinding.FieldName = 'FECHACAMBIO' + Visible = False + Options.Editing = False + Options.Focusing = False + Options.Grouping = False + Options.Moving = False + Position.BandIndex = -1 + Position.ColIndex = -1 + Position.RowIndex = -1 + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + object dsDataSource: TDADataSource + Left = 200 + Top = 496 + end + object cxStyleRepository1: TcxStyleRepository + Left = 368 + Top = 272 + object cxStyleEditable: TcxStyle + AssignedValues = [svFont] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + object cxStyleNoEditable: TcxStyle + AssignedValues = [svTextColor] + TextColor = 6250335 + end + object cxStyleProductor: TcxStyle + AssignedValues = [svTextColor] + TextColor = 14898176 + end + object cxStyleNoEncontrado: TcxStyle + AssignedValues = [svTextColor] + TextColor = clRed + end + end + object cxEditRepository1: TcxEditRepository + Left = 240 + Top = 272 + object cxEditButtonDesglosar: TcxEditRepositoryButtonItem + Properties.Buttons = < + item + Caption = '+' + Default = True + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000000000000AF4F1F00A9471700A33F0F000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000000000000B5572600FDA66A00A94717000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000000000000BA5F2D00FCB07600AF4F1F000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00CE794700C9724000C46C3A00BF653300FBB98200B5572600AF4F + 1F00A9471700A33F0F00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D3804E00F8DAA900F9D29F00F9C99500FAC18B00FBB98200FCB0 + 7600FDA66A00A9471700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D8865400D3804E00CE794700C9724000F9C99500BF653300BA5F + 2D00B5572600AF4F1F00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000000000000CE794700F9D29F00C46C3A000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000000000000D3804E00F8DAA900C97240000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00000000000000000000000000D8865400D3804E00CE7947000000 + 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00} + Kind = bkText + Stretchable = False + end> + Properties.ViewStyle = vsButtonsOnly + Properties.OnButtonClick = cxEditButtonDesglosarPropertiesButtonClick + end + object cxEditButtonEliminarDesglose: TcxEditRepositoryButtonItem + Properties.Buttons = < + item + Caption = '-' + Default = True + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D7855300CF7A4800C7703E00BF653300B85B2A00AE4E1D00A441 + 10009B34040098300000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D8865400F8E0B000F8E0B000F8E0B000F9D3A100FAC18B00FCAE + 7300FE9859009B340400FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00D8865400D8865400D7855300CF7A4800C7703E00BF653300B85B + 2A00AE4E1D00A4411000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00} + Kind = bkText + Stretchable = False + end> + Properties.ViewStyle = vsButtonsOnly + Properties.OnButtonClick = cxEditButtonEliminarDesglosePropertiesButtonClick + end + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.dfm_ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.dfm_ new file mode 100644 index 0000000..d9923d1 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.dfm_ @@ -0,0 +1,144 @@ +object fEditorCambioReferenciaGenerica: TfEditorCambioReferenciaGenerica + Left = 421 + Top = 281 + Width = 767 + Height = 569 + BorderIcons = [biSystemMenu, biMaximize] + Caption = 'Rectificar referencia gen'#233'rica de producto' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnShow = FormShow + DesignSize = ( + 759 + 535) + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 759 + Height = 73 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'MS Sans Serif' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'MS Sans Serif' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Rectificar referencia gen'#233'rica de producto') + Comments.Strings = ( + + 'Indique el c'#243'digo de producto, el color y la talla que correspon' + + 'de a la referencia gen'#233'rica.') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = True + Gradient.Orientation = fgdVertical + BufferedDraw = False + end + object Bevel1: TBevel + Left = 16 + Top = 483 + Width = 730 + Height = 4 + Anchors = [akLeft, akBottom] + Shape = bsBottomLine + end + object Label1: TLabel + Left = 16 + Top = 460 + Width = 61 + Height = 13 + Anchors = [akLeft, akBottom] + Caption = 'Importe total:' + end + object lblImporteTotal: TLabel + Left = 85 + Top = 460 + Width = 5 + Height = 13 + Anchors = [akLeft, akBottom] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + end + object bAceptar: TButton + Left = 577 + Top = 496 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = '&Aceptar' + ModalResult = 1 + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 671 + Top = 496 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object bComprobar: TButton + Left = 17 + Top = 496 + Width = 152 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = 'Comprobar todos los c'#243'digos' + TabOrder = 2 + OnClick = bComprobarClick + end + object dsDataSource: TDADataSource + DataTable = dmReferenciaGenerica.tbl_ReferenciaGenerica + Left = 200 + Top = 496 + end + object cxStyleRepository1: TcxStyleRepository + Left = 368 + Top = 272 + object cxStyleEditable: TcxStyle + AssignedValues = [svFont] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + object cxStyleNoEditable: TcxStyle + AssignedValues = [svTextColor] + TextColor = 6250335 + end + object cxStyleProductor: TcxStyle + AssignedValues = [svTextColor] + TextColor = 14898176 + end + object cxStyleNoEncontrado: TcxStyle + AssignedValues = [svTextColor] + TextColor = clRed + end + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.pas new file mode 100644 index 0000000..3740253 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.pas @@ -0,0 +1,314 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorCambioReferenciaGenerica; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uBizReferenciaGenerica, StdCtrls, JvExControls, JvComponent, + JvgWizardHeader, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, cxGridBandedTableView, + cxGridDBBandedTableView, cxCurrencyEdit, cxSpinEdit, cxButtonEdit, + cxTextEdit, cxEditRepositoryItems, uDAInterfaces; + +type + IEditorCambioReferenciaGenerica = interface + ['{11A66FAC-E782-43DE-A3E6-68473F351F43}'] + function GetItems : IBizReferenciaGenerica; + procedure SetItems (const AValue : IBizReferenciaGenerica); + property Items : IBizReferenciaGenerica read GetItems write SetItems; + end; + + TfEditorCambioReferenciaGenerica = class(TForm, IEditorCambioReferenciaGenerica) + bAceptar: TButton; + bCancelar: TButton; + JvgWizardHeader1: TJvgWizardHeader; + Bevel1: TBevel; + bComprobar: TButton; + dsDataSource: TDADataSource; + cxStyleRepository1: TcxStyleRepository; + cxStyleEditable: TcxStyle; + cxStyleNoEditable: TcxStyle; + cxStyleProductor: TcxStyle; + cxStyleNoEncontrado: TcxStyle; + cxGrid: TcxGrid; + cxGridView: TcxGridDBBandedTableView; + cxGridViewRecID: TcxGridDBBandedColumn; + cxGridViewNUMINF: TcxGridDBBandedColumn; + cxGridViewCLAVE1: TcxGridDBBandedColumn; + cxGridViewCLAVE2: TcxGridDBBandedColumn; + cxGridViewCLAVE3: TcxGridDBBandedColumn; + cxGridViewFECHA: TcxGridDBBandedColumn; + cxGridViewCODCENTRO: TcxGridDBBandedColumn; + cxGridViewCENTRO: TcxGridDBBandedColumn; + cxGridViewCODVENDEDOR: TcxGridDBBandedColumn; + cxGridViewVENDEDOR: TcxGridDBBandedColumn; + cxGridViewNUMTALON: TcxGridDBBandedColumn; + cxGridViewCODIGO_BARRA: TcxGridDBBandedColumn; + cxGridViewCODIGO: TcxGridDBBandedColumn; + cxGridViewPRODUCTO: TcxGridDBBandedColumn; + cxGridViewCOLOR: TcxGridDBBandedColumn; + cxGridViewTALLA: TcxGridDBBandedColumn; + cxGridViewVTAPROCESO: TcxGridDBBandedColumn; + cxGridViewVTAFINAL: TcxGridDBBandedColumn; + cxGridViewVTATERM: TcxGridDBBandedColumn; + cxGridViewVALTOT: TcxGridDBBandedColumn; + cxGridViewESTADO: TcxGridDBBandedColumn; + cxGridViewFECHACAMBIO: TcxGridDBBandedColumn; + cxGridLevel: TcxGridLevel; + lblImporteTotal: TLabel; + cxGridViewOperacion: TcxGridDBBandedColumn; + cxEditRepository1: TcxEditRepository; + cxEditButtonDesglosar: TcxEditRepositoryButtonItem; + cxEditButtonEliminarDesglose: TcxEditRepositoryButtonItem; + cxGridViewNUMCON: TcxGridDBBandedColumn; + procedure FormShow(Sender: TObject); + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure bComprobarClick(Sender: TObject); + procedure cxGridViewPRODUCTOStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure bAceptarClick(Sender: TObject); + procedure cxGridViewOperacionGetProperties( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AProperties: TcxCustomEditProperties); + procedure cxEditButtonDesglosarPropertiesButtonClick(Sender: TObject; + AButtonIndex: Integer); + procedure cxEditButtonEliminarDesglosePropertiesButtonClick( + Sender: TObject; AButtonIndex: Integer); + private + FItems : IBizReferenciaGenerica; + FCodigoBarras : String; + FHayErrores : Boolean; + FItemsErroneos : Integer; + procedure DesglosarReferencia; + protected + function GetItems : IBizReferenciaGenerica; + procedure SetItems (const AValue : IBizReferenciaGenerica); + public + property Items : IBizReferenciaGenerica read GetItems write SetItems; + end; + + +implementation + +uses + uEditorUtils, uDataModuleReferenciaGenerica, + schReferenciaGenericaClient_Intf, Math; + +{$R *.dfm} + +function ShowEditorCambioReferenciaGenerica (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorCambioReferenciaGenerica; +begin + AEditor := TfEditorCambioReferenciaGenerica.Create(Application); + try + AEditor.Items := (ABizObject as IBizReferenciaGenerica); + Result := AEditor.ShowModal; + if Result = mrOk then + begin + {(ABizObject as IBizReferenciaGenerica).Edit; + (ABizObject as IBizReferenciaGenerica).CODIGO := AEditor.Codigo; + (ABizObject as IBizReferenciaGenerica).TALLA := AEditor.Talla; + (ABizObject as IBizReferenciaGenerica).COLOR := AEditor.Color; + (ABizObject as IBizReferenciaGenerica).CODIGO_BARRA := AEditor.CodigoBarras; + (ABizObject as IBizReferenciaGenerica).PRODUCTO := AEditor.Label3.Caption; + (ABizObject as IBizReferenciaGenerica).FECHACAMBIO := Now; + (ABizObject as IBizReferenciaGenerica).ESTADO := rgResuelto; + (ABizObject as IBizReferenciaGenerica).Post; + (ABizObject as IBizReferenciaGenerica).DataTable.ApplyUpdates;} + end; + +{ if Result = mrIgnore then + begin + (ABizObject as IBizReferenciaGenerica).Delete; + (ABizObject as IBizReferenciaGenerica).DataTable.ApplyUpdates; + end;} + + finally + AEditor.Release; + end; +end; + + +{ TfEditorCambioReferenciaGenerica } + +procedure TfEditorCambioReferenciaGenerica.FormShow(Sender: TObject); +begin + FCodigoBarras := ''; + FHayErrores := False; + FItemsErroneos := 0; + FItems.DataTable.Open; + cxGridView.DataController.GotoFirst; +end; + +function TfEditorCambioReferenciaGenerica.GetItems: IBizReferenciaGenerica; +begin + Result := FItems; +end; + +procedure TfEditorCambioReferenciaGenerica.SetItems( + const AValue: IBizReferenciaGenerica); +begin + FItems := AValue; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfEditorCambioReferenciaGenerica.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + if VarToStrDef(AViewInfo.GridRecord.Values[cxGridViewNUMCON.Index], '0') <> '0' then + ACanvas.Brush.Color := clInfoBk; + + if ((AViewInfo.Item as TcxGridDBBandedColumn).Position.RowIndex = 1) then + begin + ADone := True; + with AViewInfo do begin + ACanvas.FillRect(Bounds); + ACanvas.DrawTexT(Text, TextAreaBounds, 0); + + if (AViewInfo.Item.Index = cxGridViewCOLOR.Index) or + (AViewInfo.Item.Index = cxGridViewTALLA.Index) or + (AViewInfo.Item.Index = cxGridViewCODIGO.Index) or + (AViewInfo.Item.Index = cxGridViewVALTOT.Index) then + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom, bTop, bLeft, bRight]) + else + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom]); + end; + end + else + if (AViewInfo.Item.Index = cxGridViewVTAPROCESO.Index) or + (AViewInfo.Item.Index = cxGridViewVTAFINAL.Index) or + (AViewInfo.Item.Index = cxGridViewVTATERM.Index) then + begin + ADone := True; + with AViewInfo do + begin + ACanvas.FillRect(Bounds); + ACanvas.DrawTexT(Text, TextAreaBounds, 0); + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom, bTop, bLeft, bRight]); + end; + end; +end; + +procedure TfEditorCambioReferenciaGenerica.bComprobarClick( + Sender: TObject); +var + Descripcion : String; + CodigoBarras : String; + bEncontrado : Boolean; + i : Integer; + ABookmark : Pointer; +begin + FHayErrores := False; + FItemsErroneos := 0; + FItems.DataTable.DisableControls; + ABookmark := FItems.DataTable.GetBookMark; + try + FItems.First; + for i := 0 to FItems.RecordCount - 1 do + begin + bEncontrado := dmReferenciaGenerica.GetProducto(FItems.CODIGO, FItems.TALLA, + FItems.COLOR, CodigoBarras, Descripcion); + FItems.Edit; + if bEncontrado and (Pos('ERROR REFERENCIA', Descripcion) = 0) then + begin + FItems.PRODUCTO := Descripcion; + FItems.CODIGO_BARRA := CodigoBarras; + FItems.Estado := rgResuelto; + FItems.FECHACAMBIO := Now; + end + else begin + FHayErrores := True; + FItemsErroneos := FItemsErroneos + 1; + FItems.PRODUCTO := '*** PRODUCTO NO ENCONTRADO ***'; + end; + FItems.Post; + FItems.Next; + end; + finally + FItems.DataTable.EnableControls; + FItems.DataTable.GotoBookmark(ABookmark); + FItems.DataTable.FreeBookmark(ABookmark); + end; +end; + +procedure TfEditorCambioReferenciaGenerica.cxGridViewPRODUCTOStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + if ARecord.Values[AItem.Index] = '*** PRODUCTO NO ENCONTRADO ***' then + AStyle := cxStyleNoEncontrado; +end; + +procedure TfEditorCambioReferenciaGenerica.bAceptarClick(Sender: TObject); +begin + bComprobar.Click; + if FHayErrores then + if (Application.MessageBox('Hay códigos de producto que no se han encontrado o son incorrectos.' + #10#13 + + '¿Desea guardar los cambios de solamente aquellos que están bien?', 'Atención', MB_YESNO) = IDNO) then + Exit; + + // Adaptación a DA5 + // Sólo guardar en el caso de que haya algún item correcto. Si todos están mal da una excepción el servidor + // porque no hay filas a actualizar. + if FItemsErroneos < FItems.DataTable.RecordCount then + FItems.DataTable.ApplyUpdates; + Close; +end; + +procedure TfEditorCambioReferenciaGenerica.cxGridViewOperacionGetProperties( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AProperties: TcxCustomEditProperties); +begin + if Assigned(ARecord) then + begin + // Sólo aparecerá el botón '+' si alguna cantidad es mayor que 1 + if (Abs(StrToIntDef(ARecord.DisplayTexts[cxGridViewVTAPROCESO.Index], 0)) > 1) or + (Abs(StrToIntDef(ARecord.DisplayTexts[cxGridViewVTAFINAL.Index], 0)) > 1) or + (Abs(StrToIntDef(ARecord.DisplayTexts[cxGridViewVTATERM.Index], 0)) > 1) then + AProperties := cxEditButtonDesglosar.Properties + else + if (StrToIntDef(ARecord.DisplayTexts[cxGridViewNUMCON.Index], 0) > 0) then + AProperties := cxEditButtonEliminarDesglose.Properties + end; +end; + +procedure TfEditorCambioReferenciaGenerica.DesglosarReferencia; +begin + FItems.DesglosarReferencia; +end; + +procedure TfEditorCambioReferenciaGenerica.cxEditButtonDesglosarPropertiesButtonClick( + Sender: TObject; AButtonIndex: Integer); +begin + DesglosarReferencia; +end; + +procedure TfEditorCambioReferenciaGenerica.cxEditButtonEliminarDesglosePropertiesButtonClick( + Sender: TObject; AButtonIndex: Integer); +begin + FItems.Delete; +end; + +initialization + RegisterEditor(IBizReferenciaGenerica, ShowEditorCambioReferenciaGenerica, etItem); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.pas_ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.pas_ new file mode 100644 index 0000000..833fcb5 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorCambioReferenciaGenerica.pas_ @@ -0,0 +1,210 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorCambioReferenciaGenerica; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uBizReferenciaGenerica, StdCtrls, JvExControls, JvComponent, + JvgWizardHeader, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, uDADataTable, cxGridLevel, + cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, + cxGridTableView, cxGridDBTableView, cxGrid, cxGridBandedTableView, + cxGridDBBandedTableView, cxCurrencyEdit, cxSpinEdit; + +type + IEditorCambioReferenciaGenerica = interface + ['{11A66FAC-E782-43DE-A3E6-68473F351F43}'] + function GetItems : IBizReferenciaGenerica; + procedure SetItems (const AValue : IBizReferenciaGenerica); + property Items : IBizReferenciaGenerica read GetItems write SetItems; + end; + + TfEditorCambioReferenciaGenerica = class(TForm, IEditorCambioReferenciaGenerica) + bAceptar: TButton; + bCancelar: TButton; + JvgWizardHeader1: TJvgWizardHeader; + Bevel1: TBevel; + bComprobar: TButton; + dsDataSource: TDADataSource; + cxStyleRepository1: TcxStyleRepository; + cxStyleEditable: TcxStyle; + cxStyleNoEditable: TcxStyle; + cxStyleProductor: TcxStyle; + cxStyleNoEncontrado: TcxStyle; + Label1: TLabel; + lblImporteTotal: TLabel; + procedure FormShow(Sender: TObject); + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure bComprobarClick(Sender: TObject); + procedure cxGridViewPRODUCTOStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure bAceptarClick(Sender: TObject); + private + FItems : IBizReferenciaGenerica; + FCodigoBarras : String; + FHayErrores : Boolean; + protected + function GetItems : IBizReferenciaGenerica; + procedure SetItems (const AValue : IBizReferenciaGenerica); + public + property Items : IBizReferenciaGenerica read GetItems write SetItems; + end; + + +implementation + +uses + uEditorUtils, uDataModuleReferenciaGenerica, + schReferenciaGenericaClient_Intf; + +{$R *.dfm} + +function ShowEditorCambioReferenciaGenerica (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorCambioReferenciaGenerica; +begin + AEditor := TfEditorCambioReferenciaGenerica.Create(Application); + try + AEditor.Items := (ABizObject as IBizReferenciaGenerica); + Result := AEditor.ShowModal; + if Result = mrOk then + begin + {(ABizObject as IBizReferenciaGenerica).Edit; + (ABizObject as IBizReferenciaGenerica).CODIGO := AEditor.Codigo; + (ABizObject as IBizReferenciaGenerica).TALLA := AEditor.Talla; + (ABizObject as IBizReferenciaGenerica).COLOR := AEditor.Color; + (ABizObject as IBizReferenciaGenerica).CODIGO_BARRA := AEditor.CodigoBarras; + (ABizObject as IBizReferenciaGenerica).PRODUCTO := AEditor.Label3.Caption; + (ABizObject as IBizReferenciaGenerica).FECHACAMBIO := Now; + (ABizObject as IBizReferenciaGenerica).ESTADO := rgResuelto; + (ABizObject as IBizReferenciaGenerica).Post; + (ABizObject as IBizReferenciaGenerica).DataTable.ApplyUpdates;} + end; + +{ if Result = mrIgnore then + begin + (ABizObject as IBizReferenciaGenerica).Delete; + (ABizObject as IBizReferenciaGenerica).DataTable.ApplyUpdates; + end;} + + finally + AEditor.Release; + end; +end; + + +{ TfEditorCambioReferenciaGenerica } + +procedure TfEditorCambioReferenciaGenerica.FormShow(Sender: TObject); +begin + FCodigoBarras := ''; + FHayErrores := False; + FItems.DataTable.Open; + cxGridView.DataController.GotoFirst; +end; + +function TfEditorCambioReferenciaGenerica.GetItems: IBizReferenciaGenerica; +begin + Result := FItems; +end; + +procedure TfEditorCambioReferenciaGenerica.SetItems( + const AValue: IBizReferenciaGenerica); +begin + FItems := AValue; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfEditorCambioReferenciaGenerica.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + if ((AViewInfo.Item as TcxGridDBBandedColumn).Position.RowIndex = 1) then + begin + ADone := True; + with AViewInfo do begin + ACanvas.FillRect(Bounds); + ACanvas.DrawTexT(Text, TextAreaBounds, 0); + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom]); + end; + end; +end; + +procedure TfEditorCambioReferenciaGenerica.bComprobarClick( + Sender: TObject); +var + Descripcion : String; + CodigoBarras : String; + bEncontrado : Boolean; + i : Integer; + ABookmark : Pointer; +begin + FHayErrores := False; + FItems.DataTable.DisableControls; + ABookmark := FItems.DataTable.GetBookMark; + try + FItems.First; + for i := 0 to FItems.RecordCount - 1 do + begin + bEncontrado := dmReferenciaGenerica.GetProducto(FItems.CODIGO, FItems.TALLA, + FItems.COLOR, CodigoBarras, Descripcion); + FItems.Edit; + if bEncontrado and (Pos('ERROR REFERENCIA', Descripcion) = 0) then + begin + FItems.PRODUCTO := Descripcion; + FItems.CODIGO_BARRA := CodigoBarras; + FItems.Estado := rgResuelto; + FItems.FECHACAMBIO := Now; + end + else begin + FHayErrores := True; + FItems.PRODUCTO := '*** PRODUCTO NO ENCONTRADO ***'; + end; + FItems.Post; + FItems.Next; + end; + finally + FItems.DataTable.EnableControls; + FItems.DataTable.GotoBookmark(ABookmark); + FItems.DataTable.FreeBookmark(ABookmark); + end; +end; + +procedure TfEditorCambioReferenciaGenerica.cxGridViewPRODUCTOStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + if ARecord.Values[AItem.Index] = '*** PRODUCTO NO ENCONTRADO ***' then + AStyle := cxStyleNoEncontrado; +end; + +procedure TfEditorCambioReferenciaGenerica.bAceptarClick(Sender: TObject); +begin + bComprobar.Click; + if FHayErrores then + if (Application.MessageBox('Hay códigos de producto que no se han encontrado o son incorrectos.' + #10#13 + + '¿Desea guardar los cambios de aquellos que están bien?', 'Atención', MB_YESNO) = IDNO) then + Exit; + FItems.DataTable.ApplyUpdates; + Close; +end; + +initialization + RegisterEditor(IBizReferenciaGenerica, ShowEditorCambioReferenciaGenerica, etItem); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.ddp b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.ddp differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.dfm b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.dfm new file mode 100644 index 0000000..72e53c3 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.dfm @@ -0,0 +1,1674 @@ +inherited fEditorListaReferenciaGenerica: TfEditorListaReferenciaGenerica + Left = 301 + Top = 227 + Caption = 'Control de referencias gen'#233'ricas' + ClientHeight = 637 + ClientWidth = 901 + ExplicitWidth = 909 + ExplicitHeight = 671 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 901 + Caption = 'Control de referencias gen'#233'ricas' + ExplicitWidth = 901 + inherited Image1: TImage + Left = 874 + ExplicitLeft = 874 + end + end + inherited TBXDock: TTBXDock + Width = 901 + ExplicitWidth = 901 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 691 + object TBXSubmenuItem2: TTBXSubmenuItem [7] + Caption = 'Cambiar el estado' + DropdownCombo = True + object TBXItem37: TTBXItem + Action = actPendiente + end + object TBXItem36: TTBXItem + Action = actEspera + end + object TBXItem35: TTBXItem + Action = actResuelto + end + end + object TBXSeparatorItem16: TTBXSeparatorItem [8] + end + object tbxiExpandir: TTBXItem [16] + Action = actExpandir + end + object tbxiContraer: TTBXItem [17] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [18] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 901 + end + inherited tbxFiltro: TTBXToolbar + Left = 691 + ExplicitLeft = 691 + end + end + inherited StatusBar: TStatusBar + Top = 618 + Width = 901 + ExplicitTop = 618 + ExplicitWidth = 901 + end + inline frViewListaReferenciaGenerica1: TfrViewListaReferenciaGenerica [3] + Left = 0 + Top = 105 + Width = 901 + Height = 513 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 105 + ExplicitWidth = 901 + ExplicitHeight = 513 + inherited cxGrid: TcxGrid + Width = 901 + Height = 453 + ExplicitWidth = 901 + ExplicitHeight = 453 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = 'N'#186' de ventas: 0' + Kind = skCount + FieldName = 'NUMTALON' + Column = frViewListaReferenciaGenerica1.cxGridViewNUMTALON + end> + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitWidth = 901 + inherited frViewParametrosCentro1: TfrViewParametrosCentro + inherited dxLayoutControl1: TdxLayoutControl + inherited ccbCentro: TJvCheckedComboBox + Width = 525 + ExplicitWidth = 525 + end + end + end + inherited TBXLabel1: TTBXLabel + Width = 901 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 476 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + end + end + object JvTabBar1: TJvTabBar [4] + Left = 0 + Top = 76 + Width = 901 + Height = 29 + Cursor = crHandPoint + CloseButton = False + Painter = JvModernTabBarPainter1 + Images = SmallImages + Tabs = < + item + Caption = 'Pendientes' + Selected = True + ImageIndex = 26 + end + item + Caption = 'En espera' + ImageIndex = 24 + end + item + Caption = 'Resueltos' + ImageIndex = 25 + end> + OnTabSelected = JvTabBar1TabSelected + end + inherited EditorActionList: TActionList [5] + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Caption = 'Rectificar referencia' + Hint = 'Asocia un producto con'#13#10'la venta de referencia gen'#233'rica' + OnExecute = actModificarExecute + end + inherited actEliminar: TAction + Caption = 'Eliminar rectificaci'#243'n' + Hint = + 'Elimina la asociaci'#243'n de un producto'#13#10'con esta venta con referen' + + 'cia gen'#233'rica' + end + inherited actPrevisualizar: TAction + Caption = '&Previsualizar formulario' + Hint = 'Previsualizar el formulario '#13#10'para indicar los productos' + end + inherited actImprimir: TAction + Caption = 'Imprimir formulario' + Hint = 'Imprimir el formulario'#13#10'para indicar los productos' + end + inherited actDuplicar: TAction + Enabled = False + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + OnUpdate = actAnchoAutoUpdate + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + OnUpdate = actAnchoAutoUpdate + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + OnUpdate = actAnchoAutoUpdate + end + object actPendiente: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Pendiente' + GroupIndex = 1 + ImageIndex = 26 + OnExecute = actPendienteExecute + OnUpdate = actPendienteUpdate + end + object actEspera: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'En espera' + GroupIndex = 1 + ImageIndex = 24 + OnExecute = actEsperaExecute + OnUpdate = actEsperaUpdate + end + object actResuelto: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Resuelto' + GroupIndex = 1 + ImageIndex = 25 + OnExecute = actResueltoExecute + OnUpdate = actResueltoUpdate + end + end + inherited SmallImages: TPngImageList [6] + 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 + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + 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 + 61000001D94944415478DA9D9321781B310C859F59580CCB66B6B21886CDF0A0 + 61A061E19595CD6585375678B0D030D0B0D065851E2B74589827E9B26CFDF205 + 6C427767E9E9D7934FE114F5A3F5522AB0A29723D08E0DC61858A3A1B556B812 + EA77717EADF0C3E67CD0DA01F5BDA23612D21A766BA0579742F2813AF74CDDC3 + EE1BC6F1510EA6E9FB22F471E006A8B50A91DB1A7549505B8FCFB3A01B423637 + 1A4CD41A533978EFE8591AD1382011AB2E04D26B41182CD6AB350EC703E6974C + 9DAB14C518606F37C8E5A734F1EE0F85E2F9D3BE301A9B859412AC7554A02539 + E50C7281881A0A7B42E330A11F0CA6D12935CDB93B67C9209A9BC6F08397E238 + 9D9E69A4F09449A82D2D4F5BC2AA61DC39A8E92577460F63447C88D87C5DE3FE + F1C7B938BF37F8872CB561D098A35736A45EE8BBDB6AA8382521E0644922A110 + 02DCAD11FC4CDEF89D472153E3E889B8F4712A923B060B353ECD9D67276701FD + 05561F04719A9398C8778123EF67159F738FF3F23EEE2C796095E20D945208B5 + 8A89764B2B23A3E6294AA2730E4CC8AB7377A9B399DC998BCF6B5C2ECCB24A46 + AE24686804BE038BC1CB0D34C3DCD9CAB60F9FEFC1DFD18EBDD7F2263424F2E9 + 9C572E4237FABAC0B5E062332459634DFE2CF21F02F45FA4F0EF02D7E217D845 + 051D2C6D56E60000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [7] + 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 + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + 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> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource [10] + Top = 136 + end + inherited GridPopupMenu: TPopupMenu + Left = 112 + Top = 128 + object Cambiarelestado1: TMenuItem [3] + Caption = 'Cambiar el estado a...' + object Pendiente1: TMenuItem + Action = actPendiente + AutoCheck = True + GroupIndex = 1 + end + object Enespera1: TMenuItem + Action = actEspera + AutoCheck = True + GroupIndex = 1 + end + object Resuelto1: TMenuItem + Action = actResuelto + AutoCheck = True + GroupIndex = 1 + end + end + end + object JvModernTabBarPainter1: TJvModernTabBarPainter + BorderColor = clWindow + ControlDivideColor = cl3DDkShadow + DividerColor = clBtnShadow + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + DisabledFont.Charset = DEFAULT_CHARSET + DisabledFont.Color = clGrayText + DisabledFont.Height = -11 + DisabledFont.Name = 'MS Sans Serif' + DisabledFont.Style = [] + SelectedFont.Charset = DEFAULT_CHARSET + SelectedFont.Color = clHighlight + SelectedFont.Height = -11 + SelectedFont.Name = 'MS Sans Serif' + SelectedFont.Style = [fsBold] + Left = 320 + Top = 128 + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.pas new file mode 100644 index 0000000..214be64 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uEditorListaReferenciaGenerica.pas @@ -0,0 +1,457 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorListaReferenciaGenerica; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGridBase, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uBizReferenciaGenerica, uCustomView, uViewBase, + uViewControlGrid, uViewListaReferenciaGenerica, uViewGridBase, uViewGrid, + JvTabBar, Grids, DBGrids, StdCtrls, Buttons, uDAInterfaces; + +type + IEditorListaReferenciaGenerica = interface(IEditorGridBase) + ['{875E6A40-3243-4325-A28B-D415BEC291BF}'] + function GetItems: IBizReferenciaGenerica; + procedure SetItems(const Value: IBizReferenciaGenerica); + property Items: IBizReferenciaGenerica read GetItems + write SetItems; + end; + + TfEditorListaReferenciaGenerica = class(TfEditorGridBase, IEditorListaReferenciaGenerica) + frViewListaReferenciaGenerica1: TfrViewListaReferenciaGenerica; + JvTabBar1: TJvTabBar; + JvModernTabBarPainter1: TJvModernTabBarPainter; + actPendiente: TAction; + Cambiarelestado1: TMenuItem; + Pendiente1: TMenuItem; + Enespera1: TMenuItem; + Resuelto1: TMenuItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem35: TTBXItem; + TBXItem36: TTBXItem; + TBXItem37: TTBXItem; + actEspera: TAction; + actResuelto: TAction; + procedure FormShow(Sender: TObject); + procedure actModificarExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actAnchoAutoUpdate(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actPrevisualizarUpdate(Sender: TObject); + procedure actImprimirUpdate(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actPendienteExecute(Sender: TObject); + procedure actPendienteUpdate(Sender: TObject); + procedure actEsperaExecute(Sender: TObject); + procedure actEsperaUpdate(Sender: TObject); + procedure actResueltoUpdate(Sender: TObject); + procedure actResueltoExecute(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); + protected + FItems : IBizReferenciaGenerica; + function GetItems: IBizReferenciaGenerica; + procedure SetItems(const Value: IBizReferenciaGenerica); + procedure CambiarEstado (const NuevoEstado : TRefGenEstado); + public + property Items: IBizReferenciaGenerica read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses uEditorBase, cxGridTableView, cxGridCustomTableView, cxControls, + uDBSelectionList, uDataModuleReferenciaGenerica, cxGridDBTableView, + cxGridDBDataDefinitions; + + +{$R *.dfm} + +{ TfEditorListaReferenciaGenerica } + +constructor TfEditorListaReferenciaGenerica.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewListaReferenciaGenerica1; +end; + +function TfEditorListaReferenciaGenerica.GetItems: IBizReferenciaGenerica; +begin + Result := FItems; +end; + +procedure TfEditorListaReferenciaGenerica.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); +begin + if Items.DataTable.Active then + Items.DataTable.Active := False; + frViewListaReferenciaGenerica1.frViewParametrosCentro1.LimpiarSeleccion; +end; + +procedure TfEditorListaReferenciaGenerica.SetItems(const Value: IBizReferenciaGenerica); +begin + FItems := Value; + if Assigned(FItems) then + begin + dsDataTable.DataTable := FItems.DataTable; + frViewListaReferenciaGenerica1.Items := FItems; + end; +end; + +procedure TfEditorListaReferenciaGenerica.FormShow(Sender: TObject); +begin + inherited; + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + with (ViewGrid as IViewListaReferenciaGenerica) do + begin + VerPendientes; + ExpandirTodo; + GotoFirst; + end; +end; + +procedure TfEditorListaReferenciaGenerica.actModificarExecute( + Sender: TObject); +var + AObj : IBizReferenciaGenerica; + ASelectedRowList : ISelectedRowList; +begin + inherited; + if Supports(FItems, ISelectedRowList, ASelectedRowList) then + begin + ShowHourglassCursor; + try + ViewGrid._FocusedView.BeginUpdate; + try + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, ASelectedRowList); + AObj := dmReferenciaGenerica.GetSelectedItems(Items); + finally + ViewGrid._FocusedView.EndUpdate; + end; + AObj.Show; + finally + AObj := nil; + ASelectedRowList := nil; + actRefrescar.Execute; + HideHourglassCursor + end; + end; +end; + +procedure TfEditorListaReferenciaGenerica.actExpandirExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorListaReferenciaGenerica.actContraerExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +procedure TfEditorListaReferenciaGenerica.actAnchoAutoExecute( + Sender: TObject); +begin + inherited; + ViewGrid.AjustarAncho; +end; + +procedure TfEditorListaReferenciaGenerica.actAnchoAutoUpdate( + Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and Assigned(ViewGrid) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorListaReferenciaGenerica.actEliminarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (JvTabBar1.SelectedTab.Index = 2); + +end; + +procedure TfEditorListaReferenciaGenerica.actPrevisualizarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (JvTabBar1.SelectedTab.Index < 2) and + (ViewGrid._FocusedView.Controller.FocusedRecord is TcxGridGroupRow) +end; + +procedure TfEditorListaReferenciaGenerica.actImprimirUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (JvTabBar1.SelectedTab.Index < 2) and + (ViewGrid._FocusedView.Controller.FocusedRecord is TcxGridGroupRow) +end; + +procedure TfEditorListaReferenciaGenerica.actPrevisualizarExecute( + Sender: TObject); +var + ACentro : String; + AVendedor : String; + AGroupIndexInicial : Integer; + AEstado : TRefGenEstado; + AFiltro : String; +begin + // inherited; + AGroupIndexInicial := 0; + + while (ViewGrid._FocusedView.Controller.FocusedRecord is TcxGridGroupRow) do + begin + (ViewGrid._FocusedView.Controller.FocusedRecord as TcxGridGroupRow).Expand(True); + ViewGrid._FocusedView.Controller.GoToNext(True); + AGroupIndexInicial := AGroupIndexInicial + 1; + end; + + ACentro := ViewGrid._FocusedView.Controller.FocusedRecord.Values[ViewGrid._FocusedView.GetColumnByFieldName('CODCENTRO').Index]; + if AGroupIndexInicial < 2 then + AVendedor := ViewGrid._FocusedView.Controller.FocusedRecord.Values[ViewGrid._FocusedView.GetColumnByFieldName('CODVENDEDOR').Index]; + + case JvTabBar1.SelectedTab.Index of + 0 : AEstado := rgPendiente; + 1 : AEstado := rgEnEspera; + 2 : AEstado := rgResuelto; + else + AEstado := rgPendiente; + end; + + AFiltro := ViewGrid.GetFilterAsSQL; + + Items.Preview(ACentro, AVendedor, AEstado, AFiltro); +end; + +procedure TfEditorListaReferenciaGenerica.actImprimirExecute( + Sender: TObject); +var + ACentro : String; + AVendedor : String; + AGroupIndexInicial : Integer; + AString : String; + AEstado : TRefGenEstado; + AFiltro : String; +begin + // inherited; + AGroupIndexInicial := 0; + + while (ViewGrid._FocusedView.Controller.FocusedRecord is TcxGridGroupRow) do + begin + (ViewGrid._FocusedView.Controller.FocusedRecord as TcxGridGroupRow).Expand(True); + ViewGrid._FocusedView.Controller.GoToNext(True); + AGroupIndexInicial := AGroupIndexInicial + 1; + end; + + ACentro := ViewGrid._FocusedView.Controller.FocusedRecord.Values[ViewGrid._FocusedView.GetColumnByFieldName('CODCENTRO').Index]; + if AGroupIndexInicial < 2 then + AVendedor := ViewGrid._FocusedView.Controller.FocusedRecord.Values[ViewGrid._FocusedView.GetColumnByFieldName('CODVENDEDOR').Index]; + + case JvTabBar1.SelectedTab.Index of + 0 : AEstado := rgPendiente; + 1 : AEstado := rgEnEspera; + 2 : AEstado := rgResuelto; + else + AEstado := rgPendiente; + end; + + AFiltro := ViewGrid.GetFilterAsSQL; + + Items.Print(ACentro, AVendedor, AEstado, AFiltro); + + AString := '¿Desea que las ventas del centro ' + ViewGrid._FocusedView.Controller.FocusedRecord.Values[ViewGrid._FocusedView.GetColumnByFieldName('CENTRO').Index]; + if Length(AVendedor) > 0 then + AString := AString + #10#13 + 'y del vendedor ' + ViewGrid._FocusedView.Controller.FocusedRecord.Values[ViewGrid._FocusedView.GetColumnByFieldName('VENDEDOR').Index]; + + AString := AString + #10#13 + 'pasen a espera de la rectificación?'; + + if (Application.MessageBox(PAnsiChar(AString), 'Atención', MB_YESNO) = IDYES) then + CambiarEstado(rgEnEspera); +end; + +procedure TfEditorListaReferenciaGenerica.actModificarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (ViewGrid._FocusedView.Controller.SelectedRecordCount > 0) +end; + +procedure TfEditorListaReferenciaGenerica.actRefrescarExecute(Sender: TObject); +begin + ShowHourglassCursor; + Items.DataTable.Active := False; + Application.ProcessMessages; + ViewGrid._FocusedView.BeginUpdate; + Application.ProcessMessages; + try + case JvTabBar1.SelectedTab.Index of + 0 : begin + Items.VerPendientes; + (ViewGrid as IViewListaReferenciaGenerica).VerPendientes; + end; + + 1 : begin + Items.VerEnEspera; + (ViewGrid as IViewListaReferenciaGenerica).VerEnEspera; + end; + + 2 : begin + Items.VerResueltos; + (ViewGrid as IViewListaReferenciaGenerica).VerResueltos + end; + end; + + frViewListaReferenciaGenerica1.Refresh; + inherited; + + finally + dsDataTable.DataTable := Items.DataTable; + ViewGrid._FocusedView.EndUpdate; + Items.DataTable.Active := True; + ViewGrid.ContraerTodo; + ViewGrid.GotoFirst; + HideHourglassCursor; + end; +end; + +procedure TfEditorListaReferenciaGenerica.actPendienteExecute( + Sender: TObject); +begin + CambiarEstado(rgPendiente); +end; + +procedure TfEditorListaReferenciaGenerica.actPendienteUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = rgPendiente); +end; + +procedure TfEditorListaReferenciaGenerica.actEsperaExecute( + Sender: TObject); +begin + CambiarEstado(rgEnEspera); +end; + +procedure TfEditorListaReferenciaGenerica.actEsperaUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = rgEnEspera); +end; + +procedure TfEditorListaReferenciaGenerica.actResueltoUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = rgResuelto); +end; + +procedure TfEditorListaReferenciaGenerica.actResueltoExecute( + Sender: TObject); +begin + CambiarEstado(rgResuelto); +end; + +procedure TfEditorListaReferenciaGenerica.CambiarEstado( + const NuevoEstado: TRefGenEstado); +var + ASelectedRowList : ISelectedRowList; + i : Integer; +begin + inherited; + if Assigned(FItems) and Assigned(ViewGrid) and (ViewGrid.MultiSelect) then + if Supports(FItems, ISelectedRowList, ASelectedRowList) then + begin + ShowHourglassCursor; + FItems.DataTable.DisableControls; + + try + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, ASelectedRowList); + try + for i := 0 to ASelectedRowList.SelectedRows.Count - 1 do + begin + FItems.First; + if FItems.Locate('RecID', ASelectedRowList.SelectedRows[i]) then + begin + FItems.Edit; + FItems.FECHACAMBIO := Now; + FItems.Estado := NuevoEstado; + FItems.Post; + end; + end; + FItems.DataTable.ApplyUpdates; + ViewGrid._FocusedView.Controller.ClearSelection; + except + FItems.DataTable.CancelUpdates; + end; + finally + FItems.DataTable.EnableControls; + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaReferenciaGenerica.actEliminarExecute( + Sender: TObject); +var + AObj : IBizReferenciaGenerica; + ASelectedRowList : ISelectedRowList; + i : integer; +begin +// inherited; + if Supports(FItems, ISelectedRowList, ASelectedRowList) then + begin + ShowHourglassCursor; + try + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, ASelectedRowList); + AObj := dmReferenciaGenerica.GetSelectedItems(Items); + while not AObj.DataTable.EOF do + AObj.Delete; + AObj.DataTable.ApplyUpdates; + finally + AObj := nil; + ASelectedRowList := nil; + HideHourglassCursor; + actRefrescar.Execute; + end; + end; +end; + + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.ddp b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.ddp differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.dfm b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.dfm new file mode 100644 index 0000000..872b578 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.dfm @@ -0,0 +1,132 @@ +object ModuleReferenciaGenerica: TModuleReferenciaGenerica + OldCreateOrder = True + DefaultAction = actRefGenericas + Description = 'Control de referencia gen'#233'rica' + ModuleMenu = MainMenu + ModuleName = 'Control de referencia gen'#233'rica' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.3' + Left = 779 + Top = 651 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002024944415478DA + 63FCFFFF3F0323232303B5C04603C6FF40AAC2FFC2FF4E109F919A16800CF789 + CA61607AB89861D3D18F604BA866C19A1533FFB3766430F859F333301CFBC0B0 + E93FD8CC16AA580032DCC6C19FE1C58B170CEB162D6430DE3781E1F985FF0C19 + C010A2D882030B32FEDFF861C0606161C1F0E0C103B0252B96AF603870F00023 + C5710032DCCC458781E9C9198605172CC062C88613B4A063FABAFF7FFFFD63F8 + FBF71FC33F28FDF7DF5F867F40DA43E23803CCF0E7DF5E31BCBCB58D21A44586 + C12BBA9C01A667415F21EE2002195E9E110834F83F54C37FB8C6F36B0BB11A7E + E8F805B0BA3F403551590D0CE7774EC76E01A586EF397A8E61DED24DD82DA0D4 + 7090BAFD272E60B7009FE1A797A432EC7FE2C750EBBB0DAFE17F80EA0F9FBA84 + 6901BAE1E63EB90C87D74F8046F07F86964C6D869A684B869E63010CBEB26138 + 0D07D1C7CE5E41B5A073C67AAC86CF5FB38F21C6DF9E61E7E22C86D3C70E3264 + 1B2932F46EBDC7B0F1F61F9C8683F8A72E5CC3F481A17BE6FFBEA622060B7D05 + B02530C341ECE4E424867BB7AF33B8E97E61C8EB3E0B0F3E6C8683E8B3976F60 + 8F039825465A3248F1F08FC1C5D19A4149559361D2E419040D07E10BD76EE14E + 45304B74D524A1190B622072C4E3331CC4BE72F30E6E0B902D51571425D97010 + 206801B22520C5E4008216C02C21CB7428805B404B306AC1C05B000079BE9B8D + E3C07E050000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actRefGenericas: TAction + Category = 'Ventas' + Caption = 'Control de referencias gen'#233'ricas' + ImageIndex = 0 + OnExecute = actRefGenericasExecute + end + end + object MainMenu: TMainMenu + Tag = 1000 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 4 + object Controldeventasenproceso1: TMenuItem + Tag = 110 + Action = actRefGenericas + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63642011FC3060F80FA2392E30308268465235B346E532FC5E369961D1050686 + 34A07EA20D383183E1FF13A54B0C6F2E2D65602AE9048B116D0048B39ECF1486 + 97B7B6312C3C64C620D5D000D68CD50B7D7337FFFFF3E72FC39F3F7F1840B41B + 7B38034C330887B4C830F8C65781E5FEFEFD8B6A00487361920FC3BFFFFF810A + FE319C9FC782A1F9C8C94B60CDBF81B86DD2128401A46ABEFFE41DC3A2959B20 + 06A06B9EBF783983C1EF580671352FAC9A7F01F1D3171F19E62E5DC7C008D2EC + E960CAA0A628C6E01A59C1B0797E33C3E2E5AB18126223192E005D814DF39FDF + FF185EBEFDCC3063E12A880BDAA6AEF91FE861C3202729C8F0E7EF3F066D4D55 + 78B860D30CA2DF7FFCC63079CE324418D4F52DFB1FE9EFC4202AC403F6C61F60 + 08FFF9FB1FAB6610FFCBD79F0C7D3316A1C64269DBFCFF49E19EE0002206744E + 9E87990E72EB66FE07DB0E8DE7DFBFFF40F01F28FE8D4A33FEFFFF9F94EC8001 + 06DE00000C3C25BBC192F80F0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD2520000020F4944415478DA + 63FCFFFF3F033D01E3C8B09091919126866F346004FBC6FFC27FB00560BB6865 + 21C8329FA81C06A6878B19361DFD08B6946616AE5931F33F6B4706839F353F03 + C3B10F0C9B201E64F03BFF8F91EA16822CB371F06778F1E205C3BA450B198CF7 + 4D6080052BD57D786041C6FF1B3F0C182C2C2C181E3C7800B674C5F2150C070E + 1EA07E1C822C3373D161607A728661C1050BB018B26544593879D176A2F28CEE + BF8D0C30CB9E7F7BC5F0F2D6368690161986F2B6D928EA72623D70C721C832A0 + 02BC16FDF9FB9FE1E8922CAC961D3B7599E1EFBF7F4035FF18FE0271646603C3 + B91DD3B05B486DCB761F39C7306FE926EC1652DB3210BDFFF805EC16D2C2B2DF + BFFF321C397319D34264CB2E5C7FCA9054D8CA30AFBF9AC140531AC5B28A3865 + 060EC54E865ADF6D445906A24F9CBF8A6AE194C53B507C66E4910592048933C0 + C44196810CAA4E5465A889B664E83916C0E02B1B46D03210FFF4A5EB983E3474 + CFFCDFD754C4E060A602F62128186C4C74C13E8459B661760AC3E9630719B28D + 14197AB7DE63D878FB0F41CB40F4F9AB37B1C721B2A5C8C108D3181D13C370EF + F6750637DD2F0C45FD17C0E2842C03E1CB376EE34EA5C896225B06A26DAC4C19 + 94543519A64D9F4DB46520F3AFDCBC83DB42644B2D0D14E106FCFEF317C57262 + 2D03018216225B6AA4254B9165445B886C294803A580280B6196526C1B14C02D + A42718B570E85B0800B34ACDE7425C769D0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.pas new file mode 100644 index 0000000..6a7c6fc --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uPluginControllerReferenciaGenerica.pas @@ -0,0 +1,72 @@ +unit uPluginControllerReferenciaGenerica; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCReferenciaGenerica = interface(IInterface) + ['{11391827-E14C-449B-AA0A-56193B945226}'] + end; + + TModuleReferenciaGenerica = class(TModuleController, IMCReferenciaGenerica) + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + actRefGenericas: TAction; + Controldeventasenproceso1: TMenuItem; + procedure actRefGenericasExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uEditorListaReferenciaGenerica, + uBizReferenciaGenerica, uDataModuleReferenciaGenerica; + +function GetModule : TModuleController; +begin + Result := TModuleReferenciaGenerica.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleReferenciaGenerica.actRefGenericasExecute(Sender: TObject); +var + aControl: IBizReferenciaGenerica; + aObj: IEditorListaReferenciaGenerica; +begin + aControl := dmReferenciaGenerica.GetItems; + aObj := TfEditorListaReferenciaGenerica.Create(Application); + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleReferenciaGenerica); + +finalization + UnRegisterModuleClass(TModuleReferenciaGenerica); + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.ddp b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.ddp differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.dfm b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.dfm new file mode 100644 index 0000000..885dcb5 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.dfm @@ -0,0 +1,220 @@ +inherited frViewListaReferenciaGenerica: TfrViewListaReferenciaGenerica + Width = 504 + ExplicitWidth = 504 + inherited cxGrid: TcxGrid + Top = 60 + Width = 504 + Height = 208 + ExplicitWidth = 504 + inherited cxGridView: TcxGridDBTableView + OnMouseDown = cxGridViewMouseDown + FilterBox.Visible = fvNever + OnCellDblClick = cxGridViewCellDblClick + DataController.Filter.Options = [] + DataController.KeyFieldNames = 'RecID' + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = 'N'#186' de ventas: 0' + Kind = skCount + FieldName = 'NUMTALON' + Column = cxGridViewNUMTALON + end> + OptionsSelection.MultiSelect = True + OptionsSelection.UnselectFocusedRecordOnExit = True + OptionsView.GridLines = glVertical + OptionsView.GroupRowStyle = grsOffice11 + object cxGridViewColumn1: TcxGridDBColumn + DataBinding.FieldName = 'RECID' + Visible = False + end + object cxGridViewFECHACAMBIO: TcxGridDBColumn + Caption = 'Cambiado' + DataBinding.FieldName = 'FECHACAMBIO' + Visible = False + end + object cxGridViewFECHA: TcxGridDBColumn + Caption = 'Fecha venta' + DataBinding.FieldName = 'FECHA' + PropertiesClassName = 'TcxDateEditProperties' + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewCODCENTRO: TcxGridDBColumn + DataBinding.FieldName = 'CODCENTRO' + Visible = False + end + object cxGridViewCENTRO: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'CENTRO' + PropertiesClassName = 'TcxTextEditProperties' + Visible = False + GroupIndex = 0 + end + object cxGridViewCODVENDEDOR: TcxGridDBColumn + DataBinding.FieldName = 'CODVENDEDOR' + Visible = False + end + object cxGridViewVENDEDOR: TcxGridDBColumn + Caption = 'Vendedor' + DataBinding.FieldName = 'VENDEDOR' + PropertiesClassName = 'TcxTextEditProperties' + Visible = False + GroupIndex = 1 + end + object cxGridViewNUMTALON: TcxGridDBColumn + Caption = 'Tal'#243'n' + DataBinding.FieldName = 'NUMTALON' + PropertiesClassName = 'TcxTextEditProperties' + end + object cxGridViewCODIGO: TcxGridDBColumn + Caption = 'C'#243'digo' + DataBinding.FieldName = 'CODIGO' + PropertiesClassName = 'TcxTextEditProperties' + end + object cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + PropertiesClassName = 'TcxTextEditProperties' + end + object cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + PropertiesClassName = 'TcxTextEditProperties' + end + object cxGridViewTALLA: TcxGridDBColumn + Caption = 'Talla' + DataBinding.FieldName = 'TALLA' + PropertiesClassName = 'TcxTextEditProperties' + end + object cxGridViewVTAPROCESO: TcxGridDBColumn + Caption = 'Proceso' + DataBinding.FieldName = 'VTAPROCESO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVTAFINAL: TcxGridDBColumn + Caption = 'Final/Resc' + DataBinding.FieldName = 'VTAFINAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVTATERM: TcxGridDBColumn + Caption = 'Term/Dev' + DataBinding.FieldName = 'VTATERM' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVALTOT: TcxGridDBColumn + Caption = 'Importe' + DataBinding.FieldName = 'VALTOT' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + MaxClientHeight = 61 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + ExplicitLeft = 8 + ExplicitTop = 8 + ExplicitWidth = 128 + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 0 + Top = 19 + Width = 425 + Height = 41 + Align = alLeft + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 425 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 425 + ExplicitWidth = 425 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 504 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + ExplicitWidth = 128 + ExplicitHeight = 32 + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 425 + Top = 19 + Width = 79 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 2 + ExplicitWidth = 251 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleResuelto: TcxStyle + AssignedValues = [svTextColor] + TextColor = 5921370 + end + object cxStyleEnEspera1semana: TcxStyle + AssignedValues = [svTextColor] + TextColor = clRed + end + object cxStyleResueltoRectificado: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + TextColor = clBlack + end + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.pas new file mode 100644 index 0000000..5a29f52 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Cliente/uViewListaReferenciaGenerica.pas @@ -0,0 +1,277 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewListaReferenciaGenerica; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, DBTables, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, uBizReferenciaGenerica, dxPSGlbl, + dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxCalendar, cxTextEdit, + cxCurrencyEdit, dxPSCore, uDADataTable, StdCtrls, uDAInterfaces, TBXDkPanels, + uCustomView, uViewBase, uViewParametrosControlGrid, uViewParametrosCentro, + TB2Dock; + +type + IViewListaReferenciaGenerica = interface(IViewGrid) + ['{2D43B302-DAA6-45FE-BC72-BAD3591CCE67}'] + procedure VerPendientes; + procedure VerEnEspera; + procedure VerResueltos; + + function GetItems: IBizReferenciaGenerica; + procedure SetItems(const Value: IBizReferenciaGenerica); + property Items: IBizReferenciaGenerica read GetItems write SetItems; + end; + + TfrViewListaReferenciaGenerica = class(TfrViewGrid, IViewListaReferenciaGenerica) + cxGridViewFECHA: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewVENDEDOR: TcxGridDBColumn; + cxGridViewNUMTALON: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewTALLA: TcxGridDBColumn; + cxGridViewVTAPROCESO: TcxGridDBColumn; + cxGridViewVTAFINAL: TcxGridDBColumn; + cxGridViewVTATERM: TcxGridDBColumn; + cxGridViewVALTOT: TcxGridDBColumn; + cxGridViewCODCENTRO: TcxGridDBColumn; + cxGridViewCODVENDEDOR: TcxGridDBColumn; + cxGridViewFECHACAMBIO: TcxGridDBColumn; + cxStyleResuelto: TcxStyle; + cxStyleEnEspera1semana: TcxStyle; + cxStyleResueltoRectificado: TcxStyle; + cxGridViewColumn1: TcxGridDBColumn; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosCentro1: TfrViewParametrosCentro; + TBXLabel1: TTBXLabel; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + procedure cxGridViewCellDblClick(Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + private + FEstado : TRefGenEstado; + protected + FItems: IBizReferenciaGenerica; + function GetItems: IBizReferenciaGenerica; + procedure SetItems(const Value: IBizReferenciaGenerica); + + public + property Items: IBizReferenciaGenerica read GetItems write SetItems; + + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure VerPendientes; + procedure VerEnEspera; + procedure VerResueltos; + procedure Refresh; + end; + + +implementation + +uses uDataModuleReferenciaGenerica, DateUtils, cxGridDBDataDefinitions; + +{$R *.dfm} + +constructor TfrViewListaReferenciaGenerica.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewListaReferenciaGenerica.cxGridViewCellDblClick( + Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +procedure TfrViewListaReferenciaGenerica.VerEnEspera; +begin + cxGridViewFECHACAMBIO.Visible := True; + cxGridViewFECHACAMBIO.Caption := 'En espera desde'; + FEstado := rgEnEspera; +end; + +procedure TfrViewListaReferenciaGenerica.VerPendientes; +begin + cxGridViewFECHACAMBIO.Visible := False; + FEstado := rgPendiente; +end; + +procedure TfrViewListaReferenciaGenerica.VerResueltos; +begin + cxGridViewFECHACAMBIO.Visible := True; + cxGridViewFECHACAMBIO.Caption := 'Fecha de rectificación'; + FEstado := rgResuelto; +end; + +procedure TfrViewListaReferenciaGenerica.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + AColumn : TcxGridDBColumn; + AFecha : TDateTime; +begin + inherited; + + // La fila es la cabecera de un grupo + if ARecord.Expandable then + Exit; + + if FEstado = rgResuelto then + begin + if AItem.Index in [cxGridViewPRODUCTO.Index, cxGridViewCOLOR.Index, + cxGridViewTALLA.Index] then + AStyle := cxStyleResueltoRectificado + else + AStyle := cxStyleResuelto; + Exit; + end; + + if FEstado = rgEnEspera then + begin + AColumn := cxGridViewFECHACAMBIO; + if Assigned(AColumn) and (AColumn.Visible) then + begin + try + AFecha := VarToDateTime(ARecord.Values[AColumn.Index]); + except + on Exception do + AFecha := Now; + end; + + if DaysBetween(Now, AFecha) > 7 then + AStyle := cxStyleEnEspera1semana + end; + end; +end; + +destructor TfrViewListaReferenciaGenerica.Destroy; +begin + FItems := Nil; + inherited; +end; + +function TfrViewListaReferenciaGenerica.GetItems: IBizReferenciaGenerica; +begin + Result := FItems; +end; + +procedure TfrViewListaReferenciaGenerica.Refresh; +var + ACentrosList : TStringList; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + ACentrosList := frViewParametrosCentro1.CentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' FILIAL in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + AWhereCentro := AWhereCentro + ', '; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + end; + end; + + AWhere := ''; + if AWhereCentro <> '' then + begin + AWhere := AWhere + AWhereCentro; + end; + +// Items.DataTable.Where.Clear; +// Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(ACentrosList); + end; +end; + +procedure TfrViewListaReferenciaGenerica.SetItems(const Value: IBizReferenciaGenerica); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewListaReferenciaGenerica.cxGridViewMouseDown( + Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, + Y: Integer); +var + HT: TcxCustomGridHitTest; + ARecord: TcxCustomGridRecord; + AGroupIndex, I, AIndex: Integer; + AList: TList; + DC: TcxGridDBDataController; +begin + inherited; + HT := TcxGridSite(Sender).GridView.ViewInfo.GetHitTest(X, Y); + if (HT is TcxGridRecordHitTest) and not (HT is TcxGridRecordCellHitTest) + and not (HT is TcxGridExpandButtonHitTest) then + begin + DC := TcxGridDBTableView(TcxGridSite(Sender).GridView).DataController; + AList := TList.Create; + ShowHourglassCursor; + TcxGridDBTableView(TcxGridSite(Sender).GridView).BeginUpdate; + try + AGroupIndex := DC.Groups.DataGroupIndexByRowIndex[TcxGridRecordHitTest(HT).GridRecord.Index]; + DC.Groups.LoadRecordIndexes(AList, AGroupIndex); + for I := 0 to AList.Count - 1 do + begin + AIndex := DC.GetRowIndexByRecordIndex(Integer(AList[I]), True); + DC.SelectRows(AIndex, AIndex); + end; + finally + FreeAndNil(AList); + TcxGridDBTableView(TcxGridSite(Sender).GridView).EndUpdate; + HideHourglassCursor; + end; + end; +end; + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/schReferenciaGenericaClient_Intf.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/schReferenciaGenericaClient_Intf.pas new file mode 100644 index 0000000..7f0a794 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/schReferenciaGenericaClient_Intf.pas @@ -0,0 +1,1593 @@ +unit schReferenciaGenericaClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID__ExisteFilaReferenciaGenerica = '{EBF53A68-5E57-4EAC-997E-C030A9D77BE9}'; + RID_InformeRefGenerica = '{8EAF0E0E-4FDA-4C79-9EB8-B881C24D98BA}'; + RID_GetProducto = '{D81DBABF-987E-4988-BA1F-34E8CC1A6EF0}'; + RID_ReferenciaGenerica = '{F940A3EC-CB4C-4F81-8207-BF0A31ED6C0D}'; + + { Data table names } + nme__ExisteFilaReferenciaGenerica = '_ExisteFilaReferenciaGenerica'; + nme_InformeRefGenerica = 'InformeRefGenerica'; + nme_GetProducto = 'GetProducto'; + nme_ReferenciaGenerica = 'ReferenciaGenerica'; + + { _ExisteFilaReferenciaGenerica fields } + fld__ExisteFilaReferenciaGenericaNUMINF = 'NUMINF'; + fld__ExisteFilaReferenciaGenericaCLAVE1 = 'CLAVE1'; + fld__ExisteFilaReferenciaGenericaCLAVE2 = 'CLAVE2'; + fld__ExisteFilaReferenciaGenericaCLAVE3 = 'CLAVE3'; + fld__ExisteFilaReferenciaGenericaNUMCON = 'NUMCON'; + + { _ExisteFilaReferenciaGenerica field indexes } + idx__ExisteFilaReferenciaGenericaNUMINF = 0; + idx__ExisteFilaReferenciaGenericaCLAVE1 = 1; + idx__ExisteFilaReferenciaGenericaCLAVE2 = 2; + idx__ExisteFilaReferenciaGenericaCLAVE3 = 3; + idx__ExisteFilaReferenciaGenericaNUMCON = 4; + + { InformeRefGenerica fields } + fld_InformeRefGenericaCODCENTRO = 'CODCENTRO'; + fld_InformeRefGenericaCENTRO = 'CENTRO'; + fld_InformeRefGenericaCODVENDEDOR = 'CODVENDEDOR'; + fld_InformeRefGenericaVENDEDOR = 'VENDEDOR'; + fld_InformeRefGenericaFECHA = 'FECHA'; + fld_InformeRefGenericaNUMTALON = 'NUMTALON'; + fld_InformeRefGenericaCANTIDAD = 'CANTIDAD'; + fld_InformeRefGenericaVALTOT = 'VALTOT'; + + { InformeRefGenerica field indexes } + idx_InformeRefGenericaCODCENTRO = 0; + idx_InformeRefGenericaCENTRO = 1; + idx_InformeRefGenericaCODVENDEDOR = 2; + idx_InformeRefGenericaVENDEDOR = 3; + idx_InformeRefGenericaFECHA = 4; + idx_InformeRefGenericaNUMTALON = 5; + idx_InformeRefGenericaCANTIDAD = 6; + idx_InformeRefGenericaVALTOT = 7; + + { GetProducto fields } + fld_GetProductoCODIGO_BARRA = 'CODIGO_BARRA'; + fld_GetProductoCOR_PRODUTO = 'COR_PRODUTO'; + fld_GetProductoDESC_PRODUTO = 'DESC_PRODUTO'; + fld_GetProductoPRODUTO = 'PRODUTO'; + fld_GetProductoGRADE = 'GRADE'; + + { GetProducto field indexes } + idx_GetProductoCODIGO_BARRA = 0; + idx_GetProductoCOR_PRODUTO = 1; + idx_GetProductoDESC_PRODUTO = 2; + idx_GetProductoPRODUTO = 3; + idx_GetProductoGRADE = 4; + + { ReferenciaGenerica fields } + fld_ReferenciaGenericaNUMINF = 'NUMINF'; + fld_ReferenciaGenericaCLAVE1 = 'CLAVE1'; + fld_ReferenciaGenericaCLAVE2 = 'CLAVE2'; + fld_ReferenciaGenericaCLAVE3 = 'CLAVE3'; + fld_ReferenciaGenericaNUMCON = 'NUMCON'; + fld_ReferenciaGenericaFECHA = 'FECHA'; + fld_ReferenciaGenericaCODCENTRO = 'CODCENTRO'; + fld_ReferenciaGenericaCENTRO = 'CENTRO'; + fld_ReferenciaGenericaCODVENDEDOR = 'CODVENDEDOR'; + fld_ReferenciaGenericaVENDEDOR = 'VENDEDOR'; + fld_ReferenciaGenericaNUMTALON = 'NUMTALON'; + fld_ReferenciaGenericaCODIGO_BARRA = 'CODIGO_BARRA'; + fld_ReferenciaGenericaCODIGO = 'CODIGO'; + fld_ReferenciaGenericaPRODUCTO = 'PRODUCTO'; + fld_ReferenciaGenericaCOLOR = 'COLOR'; + fld_ReferenciaGenericaTALLA = 'TALLA'; + fld_ReferenciaGenericaVTAPROCESO = 'VTAPROCESO'; + fld_ReferenciaGenericaVTAFINAL = 'VTAFINAL'; + fld_ReferenciaGenericaVTATERM = 'VTATERM'; + fld_ReferenciaGenericaVALTOT = 'VALTOT'; + fld_ReferenciaGenericaESTADO = 'ESTADO'; + fld_ReferenciaGenericaFECHACAMBIO = 'FECHACAMBIO'; + + { ReferenciaGenerica field indexes } + idx_ReferenciaGenericaNUMINF = 0; + idx_ReferenciaGenericaCLAVE1 = 1; + idx_ReferenciaGenericaCLAVE2 = 2; + idx_ReferenciaGenericaCLAVE3 = 3; + idx_ReferenciaGenericaNUMCON = 4; + idx_ReferenciaGenericaFECHA = 5; + idx_ReferenciaGenericaCODCENTRO = 6; + idx_ReferenciaGenericaCENTRO = 7; + idx_ReferenciaGenericaCODVENDEDOR = 8; + idx_ReferenciaGenericaVENDEDOR = 9; + idx_ReferenciaGenericaNUMTALON = 10; + idx_ReferenciaGenericaCODIGO_BARRA = 11; + idx_ReferenciaGenericaCODIGO = 12; + idx_ReferenciaGenericaPRODUCTO = 13; + idx_ReferenciaGenericaCOLOR = 14; + idx_ReferenciaGenericaTALLA = 15; + idx_ReferenciaGenericaVTAPROCESO = 16; + idx_ReferenciaGenericaVTAFINAL = 17; + idx_ReferenciaGenericaVTATERM = 18; + idx_ReferenciaGenericaVALTOT = 19; + idx_ReferenciaGenericaESTADO = 20; + idx_ReferenciaGenericaFECHACAMBIO = 21; + +type + { I_ExisteFilaReferenciaGenerica } + I_ExisteFilaReferenciaGenerica = interface(IDAStronglyTypedDataTable) + ['{91F75EF4-A2FB-4C6C-9423-D193C95D7DF6}'] + { Property getters and setters } + function GetNUMINFValue: String; + procedure SetNUMINFValue(const aValue: String); + function GetNUMINFIsNull: Boolean; + procedure SetNUMINFIsNull(const aValue: Boolean); + function GetCLAVE1Value: Float; + procedure SetCLAVE1Value(const aValue: Float); + function GetCLAVE1IsNull: Boolean; + procedure SetCLAVE1IsNull(const aValue: Boolean); + function GetCLAVE2Value: Integer; + procedure SetCLAVE2Value(const aValue: Integer); + function GetCLAVE2IsNull: Boolean; + procedure SetCLAVE2IsNull(const aValue: Boolean); + function GetCLAVE3Value: Integer; + procedure SetCLAVE3Value(const aValue: Integer); + function GetCLAVE3IsNull: Boolean; + procedure SetCLAVE3IsNull(const aValue: Boolean); + function GetNUMCONValue: Integer; + procedure SetNUMCONValue(const aValue: Integer); + function GetNUMCONIsNull: Boolean; + procedure SetNUMCONIsNull(const aValue: Boolean); + + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull: Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull: Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull: Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull: Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property NUMCON: Integer read GetNUMCONValue write SetNUMCONValue; + property NUMCONIsNull: Boolean read GetNUMCONIsNull write SetNUMCONIsNull; + end; + + { T_ExisteFilaReferenciaGenericaDataTableRules } + T_ExisteFilaReferenciaGenericaDataTableRules = class(TDADataTableRules, I_ExisteFilaReferenciaGenerica) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetNUMINFIsNull: Boolean; virtual; + procedure SetNUMINFIsNull(const aValue: Boolean); virtual; + function GetCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE1IsNull: Boolean; virtual; + procedure SetCLAVE1IsNull(const aValue: Boolean); virtual; + function GetCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetCLAVE2IsNull: Boolean; virtual; + procedure SetCLAVE2IsNull(const aValue: Boolean); virtual; + function GetCLAVE3Value: Integer; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + function GetCLAVE3IsNull: Boolean; virtual; + procedure SetCLAVE3IsNull(const aValue: Boolean); virtual; + function GetNUMCONValue: Integer; virtual; + procedure SetNUMCONValue(const aValue: Integer); virtual; + function GetNUMCONIsNull: Boolean; virtual; + procedure SetNUMCONIsNull(const aValue: Boolean); virtual; + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull: Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull: Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull: Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull: Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property NUMCON: Integer read GetNUMCONValue write SetNUMCONValue; + property NUMCONIsNull: Boolean read GetNUMCONIsNull write SetNUMCONIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IInformeRefGenerica } + IInformeRefGenerica = interface(IDAStronglyTypedDataTable) + ['{0E01B29A-669B-45CC-9DDA-BC262E989813}'] + { Property getters and setters } + function GetCODCENTROValue: String; + procedure SetCODCENTROValue(const aValue: String); + function GetCODCENTROIsNull: Boolean; + procedure SetCODCENTROIsNull(const aValue: Boolean); + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetCENTROIsNull: Boolean; + procedure SetCENTROIsNull(const aValue: Boolean); + function GetCODVENDEDORValue: String; + procedure SetCODVENDEDORValue(const aValue: String); + function GetCODVENDEDORIsNull: Boolean; + procedure SetCODVENDEDORIsNull(const aValue: Boolean); + function GetVENDEDORValue: String; + procedure SetVENDEDORValue(const aValue: String); + function GetVENDEDORIsNull: Boolean; + procedure SetVENDEDORIsNull(const aValue: Boolean); + function GetFECHAValue: DateTime; + procedure SetFECHAValue(const aValue: DateTime); + function GetFECHAIsNull: Boolean; + procedure SetFECHAIsNull(const aValue: Boolean); + function GetNUMTALONValue: String; + procedure SetNUMTALONValue(const aValue: String); + function GetNUMTALONIsNull: Boolean; + procedure SetNUMTALONIsNull(const aValue: Boolean); + function GetCANTIDADValue: String; + procedure SetCANTIDADValue(const aValue: String); + function GetCANTIDADIsNull: Boolean; + procedure SetCANTIDADIsNull(const aValue: Boolean); + function GetVALTOTValue: Float; + procedure SetVALTOTValue(const aValue: Float); + function GetVALTOTIsNull: Boolean; + procedure SetVALTOTIsNull(const aValue: Boolean); + + + { Properties } + property CODCENTRO: String read GetCODCENTROValue write SetCODCENTROValue; + property CODCENTROIsNull: Boolean read GetCODCENTROIsNull write SetCODCENTROIsNull; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property CODVENDEDOR: String read GetCODVENDEDORValue write SetCODVENDEDORValue; + property CODVENDEDORIsNull: Boolean read GetCODVENDEDORIsNull write SetCODVENDEDORIsNull; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull: Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull: Boolean read GetFECHAIsNull write SetFECHAIsNull; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull: Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property CANTIDAD: String read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; + property VALTOT: Float read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull: Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + end; + + { TInformeRefGenericaDataTableRules } + TInformeRefGenericaDataTableRules = class(TDADataTableRules, IInformeRefGenerica) + private + protected + { Property getters and setters } + function GetCODCENTROValue: String; virtual; + procedure SetCODCENTROValue(const aValue: String); virtual; + function GetCODCENTROIsNull: Boolean; virtual; + procedure SetCODCENTROIsNull(const aValue: Boolean); virtual; + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetCENTROIsNull: Boolean; virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetCODVENDEDORValue: String; virtual; + procedure SetCODVENDEDORValue(const aValue: String); virtual; + function GetCODVENDEDORIsNull: Boolean; virtual; + procedure SetCODVENDEDORIsNull(const aValue: Boolean); virtual; + function GetVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetVENDEDORIsNull: Boolean; virtual; + procedure SetVENDEDORIsNull(const aValue: Boolean); virtual; + function GetFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetFECHAIsNull: Boolean; virtual; + procedure SetFECHAIsNull(const aValue: Boolean); virtual; + function GetNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetNUMTALONIsNull: Boolean; virtual; + procedure SetNUMTALONIsNull(const aValue: Boolean); virtual; + function GetCANTIDADValue: String; virtual; + procedure SetCANTIDADValue(const aValue: String); virtual; + function GetCANTIDADIsNull: Boolean; virtual; + procedure SetCANTIDADIsNull(const aValue: Boolean); virtual; + function GetVALTOTValue: Float; virtual; + procedure SetVALTOTValue(const aValue: Float); virtual; + function GetVALTOTIsNull: Boolean; virtual; + procedure SetVALTOTIsNull(const aValue: Boolean); virtual; + + { Properties } + property CODCENTRO: String read GetCODCENTROValue write SetCODCENTROValue; + property CODCENTROIsNull: Boolean read GetCODCENTROIsNull write SetCODCENTROIsNull; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property CODVENDEDOR: String read GetCODVENDEDORValue write SetCODVENDEDORValue; + property CODVENDEDORIsNull: Boolean read GetCODVENDEDORIsNull write SetCODVENDEDORIsNull; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull: Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull: Boolean read GetFECHAIsNull write SetFECHAIsNull; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull: Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property CANTIDAD: String read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; + property VALTOT: Float read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull: Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { + Datos de una prenda + } + { IGetProducto } + IGetProducto = interface(IDAStronglyTypedDataTable) + ['{59B0B7BE-94F9-4EB1-B5FA-3E5C8F4A151A}'] + { Property getters and setters } + function GetCODIGO_BARRAValue: String; + procedure SetCODIGO_BARRAValue(const aValue: String); + function GetCODIGO_BARRAIsNull: Boolean; + procedure SetCODIGO_BARRAIsNull(const aValue: Boolean); + function GetCOR_PRODUTOValue: String; + procedure SetCOR_PRODUTOValue(const aValue: String); + function GetCOR_PRODUTOIsNull: Boolean; + procedure SetCOR_PRODUTOIsNull(const aValue: Boolean); + function GetDESC_PRODUTOValue: String; + procedure SetDESC_PRODUTOValue(const aValue: String); + function GetDESC_PRODUTOIsNull: Boolean; + procedure SetDESC_PRODUTOIsNull(const aValue: Boolean); + function GetPRODUTOValue: String; + procedure SetPRODUTOValue(const aValue: String); + function GetPRODUTOIsNull: Boolean; + procedure SetPRODUTOIsNull(const aValue: Boolean); + function GetGRADEValue: String; + procedure SetGRADEValue(const aValue: String); + function GetGRADEIsNull: Boolean; + procedure SetGRADEIsNull(const aValue: Boolean); + + + { Properties } + property CODIGO_BARRA: String read GetCODIGO_BARRAValue write SetCODIGO_BARRAValue; + property CODIGO_BARRAIsNull: Boolean read GetCODIGO_BARRAIsNull write SetCODIGO_BARRAIsNull; + property COR_PRODUTO: String read GetCOR_PRODUTOValue write SetCOR_PRODUTOValue; + property COR_PRODUTOIsNull: Boolean read GetCOR_PRODUTOIsNull write SetCOR_PRODUTOIsNull; + property DESC_PRODUTO: String read GetDESC_PRODUTOValue write SetDESC_PRODUTOValue; + property DESC_PRODUTOIsNull: Boolean read GetDESC_PRODUTOIsNull write SetDESC_PRODUTOIsNull; + property PRODUTO: String read GetPRODUTOValue write SetPRODUTOValue; + property PRODUTOIsNull: Boolean read GetPRODUTOIsNull write SetPRODUTOIsNull; + property GRADE: String read GetGRADEValue write SetGRADEValue; + property GRADEIsNull: Boolean read GetGRADEIsNull write SetGRADEIsNull; + end; + + { TGetProductoDataTableRules } + TGetProductoDataTableRules = class(TDADataTableRules, IGetProducto) + private + protected + { Property getters and setters } + function GetCODIGO_BARRAValue: String; virtual; + procedure SetCODIGO_BARRAValue(const aValue: String); virtual; + function GetCODIGO_BARRAIsNull: Boolean; virtual; + procedure SetCODIGO_BARRAIsNull(const aValue: Boolean); virtual; + function GetCOR_PRODUTOValue: String; virtual; + procedure SetCOR_PRODUTOValue(const aValue: String); virtual; + function GetCOR_PRODUTOIsNull: Boolean; virtual; + procedure SetCOR_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetDESC_PRODUTOValue: String; virtual; + procedure SetDESC_PRODUTOValue(const aValue: String); virtual; + function GetDESC_PRODUTOIsNull: Boolean; virtual; + procedure SetDESC_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetPRODUTOValue: String; virtual; + procedure SetPRODUTOValue(const aValue: String); virtual; + function GetPRODUTOIsNull: Boolean; virtual; + procedure SetPRODUTOIsNull(const aValue: Boolean); virtual; + function GetGRADEValue: String; virtual; + procedure SetGRADEValue(const aValue: String); virtual; + function GetGRADEIsNull: Boolean; virtual; + procedure SetGRADEIsNull(const aValue: Boolean); virtual; + + { Properties } + property CODIGO_BARRA: String read GetCODIGO_BARRAValue write SetCODIGO_BARRAValue; + property CODIGO_BARRAIsNull: Boolean read GetCODIGO_BARRAIsNull write SetCODIGO_BARRAIsNull; + property COR_PRODUTO: String read GetCOR_PRODUTOValue write SetCOR_PRODUTOValue; + property COR_PRODUTOIsNull: Boolean read GetCOR_PRODUTOIsNull write SetCOR_PRODUTOIsNull; + property DESC_PRODUTO: String read GetDESC_PRODUTOValue write SetDESC_PRODUTOValue; + property DESC_PRODUTOIsNull: Boolean read GetDESC_PRODUTOIsNull write SetDESC_PRODUTOIsNull; + property PRODUTO: String read GetPRODUTOValue write SetPRODUTOValue; + property PRODUTOIsNull: Boolean read GetPRODUTOIsNull write SetPRODUTOIsNull; + property GRADE: String read GetGRADEValue write SetGRADEValue; + property GRADEIsNull: Boolean read GetGRADEIsNull write SetGRADEIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IReferenciaGenerica } + IReferenciaGenerica = interface(IDAStronglyTypedDataTable) + ['{BD898F5A-34C8-48CF-97F4-AC215575085C}'] + { Property getters and setters } + function GetNUMINFValue: String; + procedure SetNUMINFValue(const aValue: String); + function GetNUMINFIsNull: Boolean; + procedure SetNUMINFIsNull(const aValue: Boolean); + function GetCLAVE1Value: Float; + procedure SetCLAVE1Value(const aValue: Float); + function GetCLAVE1IsNull: Boolean; + procedure SetCLAVE1IsNull(const aValue: Boolean); + function GetCLAVE2Value: Integer; + procedure SetCLAVE2Value(const aValue: Integer); + function GetCLAVE2IsNull: Boolean; + procedure SetCLAVE2IsNull(const aValue: Boolean); + function GetCLAVE3Value: Integer; + procedure SetCLAVE3Value(const aValue: Integer); + function GetCLAVE3IsNull: Boolean; + procedure SetCLAVE3IsNull(const aValue: Boolean); + function GetNUMCONValue: Integer; + procedure SetNUMCONValue(const aValue: Integer); + function GetNUMCONIsNull: Boolean; + procedure SetNUMCONIsNull(const aValue: Boolean); + function GetFECHAValue: DateTime; + procedure SetFECHAValue(const aValue: DateTime); + function GetFECHAIsNull: Boolean; + procedure SetFECHAIsNull(const aValue: Boolean); + function GetCODCENTROValue: String; + procedure SetCODCENTROValue(const aValue: String); + function GetCODCENTROIsNull: Boolean; + procedure SetCODCENTROIsNull(const aValue: Boolean); + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetCENTROIsNull: Boolean; + procedure SetCENTROIsNull(const aValue: Boolean); + function GetCODVENDEDORValue: String; + procedure SetCODVENDEDORValue(const aValue: String); + function GetCODVENDEDORIsNull: Boolean; + procedure SetCODVENDEDORIsNull(const aValue: Boolean); + function GetVENDEDORValue: String; + procedure SetVENDEDORValue(const aValue: String); + function GetVENDEDORIsNull: Boolean; + procedure SetVENDEDORIsNull(const aValue: Boolean); + function GetNUMTALONValue: String; + procedure SetNUMTALONValue(const aValue: String); + function GetNUMTALONIsNull: Boolean; + procedure SetNUMTALONIsNull(const aValue: Boolean); + function GetCODIGO_BARRAValue: String; + procedure SetCODIGO_BARRAValue(const aValue: String); + function GetCODIGO_BARRAIsNull: Boolean; + procedure SetCODIGO_BARRAIsNull(const aValue: Boolean); + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetCODIGOIsNull: Boolean; + procedure SetCODIGOIsNull(const aValue: Boolean); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetPRODUCTOIsNull: Boolean; + procedure SetPRODUCTOIsNull(const aValue: Boolean); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetCOLORIsNull: Boolean; + procedure SetCOLORIsNull(const aValue: Boolean); + function GetTALLAValue: String; + procedure SetTALLAValue(const aValue: String); + function GetTALLAIsNull: Boolean; + procedure SetTALLAIsNull(const aValue: Boolean); + function GetVTAPROCESOValue: Float; + procedure SetVTAPROCESOValue(const aValue: Float); + function GetVTAPROCESOIsNull: Boolean; + procedure SetVTAPROCESOIsNull(const aValue: Boolean); + function GetVTAFINALValue: Float; + procedure SetVTAFINALValue(const aValue: Float); + function GetVTAFINALIsNull: Boolean; + procedure SetVTAFINALIsNull(const aValue: Boolean); + function GetVTATERMValue: Float; + procedure SetVTATERMValue(const aValue: Float); + function GetVTATERMIsNull: Boolean; + procedure SetVTATERMIsNull(const aValue: Boolean); + function GetVALTOTValue: Float; + procedure SetVALTOTValue(const aValue: Float); + function GetVALTOTIsNull: Boolean; + procedure SetVALTOTIsNull(const aValue: Boolean); + function GetESTADOValue: String; + procedure SetESTADOValue(const aValue: String); + function GetESTADOIsNull: Boolean; + procedure SetESTADOIsNull(const aValue: Boolean); + function GetFECHACAMBIOValue: DateTime; + procedure SetFECHACAMBIOValue(const aValue: DateTime); + function GetFECHACAMBIOIsNull: Boolean; + procedure SetFECHACAMBIOIsNull(const aValue: Boolean); + + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull: Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull: Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull: Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull: Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property NUMCON: Integer read GetNUMCONValue write SetNUMCONValue; + property NUMCONIsNull: Boolean read GetNUMCONIsNull write SetNUMCONIsNull; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull: Boolean read GetFECHAIsNull write SetFECHAIsNull; + property CODCENTRO: String read GetCODCENTROValue write SetCODCENTROValue; + property CODCENTROIsNull: Boolean read GetCODCENTROIsNull write SetCODCENTROIsNull; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property CODVENDEDOR: String read GetCODVENDEDORValue write SetCODVENDEDORValue; + property CODVENDEDORIsNull: Boolean read GetCODVENDEDORIsNull write SetCODVENDEDORIsNull; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull: Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull: Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property CODIGO_BARRA: String read GetCODIGO_BARRAValue write SetCODIGO_BARRAValue; + property CODIGO_BARRAIsNull: Boolean read GetCODIGO_BARRAIsNull write SetCODIGO_BARRAIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property TALLAIsNull: Boolean read GetTALLAIsNull write SetTALLAIsNull; + property VTAPROCESO: Float read GetVTAPROCESOValue write SetVTAPROCESOValue; + property VTAPROCESOIsNull: Boolean read GetVTAPROCESOIsNull write SetVTAPROCESOIsNull; + property VTAFINAL: Float read GetVTAFINALValue write SetVTAFINALValue; + property VTAFINALIsNull: Boolean read GetVTAFINALIsNull write SetVTAFINALIsNull; + property VTATERM: Float read GetVTATERMValue write SetVTATERMValue; + property VTATERMIsNull: Boolean read GetVTATERMIsNull write SetVTATERMIsNull; + property VALTOT: Float read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull: Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + property ESTADO: String read GetESTADOValue write SetESTADOValue; + property ESTADOIsNull: Boolean read GetESTADOIsNull write SetESTADOIsNull; + property FECHACAMBIO: DateTime read GetFECHACAMBIOValue write SetFECHACAMBIOValue; + property FECHACAMBIOIsNull: Boolean read GetFECHACAMBIOIsNull write SetFECHACAMBIOIsNull; + end; + + { TReferenciaGenericaDataTableRules } + TReferenciaGenericaDataTableRules = class(TDADataTableRules, IReferenciaGenerica) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetNUMINFIsNull: Boolean; virtual; + procedure SetNUMINFIsNull(const aValue: Boolean); virtual; + function GetCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE1IsNull: Boolean; virtual; + procedure SetCLAVE1IsNull(const aValue: Boolean); virtual; + function GetCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetCLAVE2IsNull: Boolean; virtual; + procedure SetCLAVE2IsNull(const aValue: Boolean); virtual; + function GetCLAVE3Value: Integer; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + function GetCLAVE3IsNull: Boolean; virtual; + procedure SetCLAVE3IsNull(const aValue: Boolean); virtual; + function GetNUMCONValue: Integer; virtual; + procedure SetNUMCONValue(const aValue: Integer); virtual; + function GetNUMCONIsNull: Boolean; virtual; + procedure SetNUMCONIsNull(const aValue: Boolean); virtual; + function GetFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetFECHAIsNull: Boolean; virtual; + procedure SetFECHAIsNull(const aValue: Boolean); virtual; + function GetCODCENTROValue: String; virtual; + procedure SetCODCENTROValue(const aValue: String); virtual; + function GetCODCENTROIsNull: Boolean; virtual; + procedure SetCODCENTROIsNull(const aValue: Boolean); virtual; + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetCENTROIsNull: Boolean; virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetCODVENDEDORValue: String; virtual; + procedure SetCODVENDEDORValue(const aValue: String); virtual; + function GetCODVENDEDORIsNull: Boolean; virtual; + procedure SetCODVENDEDORIsNull(const aValue: Boolean); virtual; + function GetVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetVENDEDORIsNull: Boolean; virtual; + procedure SetVENDEDORIsNull(const aValue: Boolean); virtual; + function GetNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetNUMTALONIsNull: Boolean; virtual; + procedure SetNUMTALONIsNull(const aValue: Boolean); virtual; + function GetCODIGO_BARRAValue: String; virtual; + procedure SetCODIGO_BARRAValue(const aValue: String); virtual; + function GetCODIGO_BARRAIsNull: Boolean; virtual; + procedure SetCODIGO_BARRAIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetCOLORIsNull: Boolean; virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetTALLAValue: String; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + function GetTALLAIsNull: Boolean; virtual; + procedure SetTALLAIsNull(const aValue: Boolean); virtual; + function GetVTAPROCESOValue: Float; virtual; + procedure SetVTAPROCESOValue(const aValue: Float); virtual; + function GetVTAPROCESOIsNull: Boolean; virtual; + procedure SetVTAPROCESOIsNull(const aValue: Boolean); virtual; + function GetVTAFINALValue: Float; virtual; + procedure SetVTAFINALValue(const aValue: Float); virtual; + function GetVTAFINALIsNull: Boolean; virtual; + procedure SetVTAFINALIsNull(const aValue: Boolean); virtual; + function GetVTATERMValue: Float; virtual; + procedure SetVTATERMValue(const aValue: Float); virtual; + function GetVTATERMIsNull: Boolean; virtual; + procedure SetVTATERMIsNull(const aValue: Boolean); virtual; + function GetVALTOTValue: Float; virtual; + procedure SetVALTOTValue(const aValue: Float); virtual; + function GetVALTOTIsNull: Boolean; virtual; + procedure SetVALTOTIsNull(const aValue: Boolean); virtual; + function GetESTADOValue: String; virtual; + procedure SetESTADOValue(const aValue: String); virtual; + function GetESTADOIsNull: Boolean; virtual; + procedure SetESTADOIsNull(const aValue: Boolean); virtual; + function GetFECHACAMBIOValue: DateTime; virtual; + procedure SetFECHACAMBIOValue(const aValue: DateTime); virtual; + function GetFECHACAMBIOIsNull: Boolean; virtual; + procedure SetFECHACAMBIOIsNull(const aValue: Boolean); virtual; + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull: Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull: Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull: Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull: Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property NUMCON: Integer read GetNUMCONValue write SetNUMCONValue; + property NUMCONIsNull: Boolean read GetNUMCONIsNull write SetNUMCONIsNull; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull: Boolean read GetFECHAIsNull write SetFECHAIsNull; + property CODCENTRO: String read GetCODCENTROValue write SetCODCENTROValue; + property CODCENTROIsNull: Boolean read GetCODCENTROIsNull write SetCODCENTROIsNull; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property CODVENDEDOR: String read GetCODVENDEDORValue write SetCODVENDEDORValue; + property CODVENDEDORIsNull: Boolean read GetCODVENDEDORIsNull write SetCODVENDEDORIsNull; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull: Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull: Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property CODIGO_BARRA: String read GetCODIGO_BARRAValue write SetCODIGO_BARRAValue; + property CODIGO_BARRAIsNull: Boolean read GetCODIGO_BARRAIsNull write SetCODIGO_BARRAIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property TALLAIsNull: Boolean read GetTALLAIsNull write SetTALLAIsNull; + property VTAPROCESO: Float read GetVTAPROCESOValue write SetVTAPROCESOValue; + property VTAPROCESOIsNull: Boolean read GetVTAPROCESOIsNull write SetVTAPROCESOIsNull; + property VTAFINAL: Float read GetVTAFINALValue write SetVTAFINALValue; + property VTAFINALIsNull: Boolean read GetVTAFINALIsNull write SetVTAFINALIsNull; + property VTATERM: Float read GetVTATERMValue write SetVTATERMValue; + property VTATERMIsNull: Boolean read GetVTATERMIsNull write SetVTATERMIsNull; + property VALTOT: Float read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull: Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + property ESTADO: String read GetESTADOValue write SetESTADOValue; + property ESTADOIsNull: Boolean read GetESTADOIsNull write SetESTADOIsNull; + property FECHACAMBIO: DateTime read GetFECHACAMBIOValue write SetFECHACAMBIOValue; + property FECHACAMBIOIsNull: Boolean read GetFECHACAMBIOIsNull write SetFECHACAMBIOIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants, uROBinaryHelpers; + +{ T_ExisteFilaReferenciaGenericaDataTableRules } +constructor T_ExisteFilaReferenciaGenericaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor T_ExisteFilaReferenciaGenericaDataTableRules.Destroy; +begin + inherited; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetNUMINFValue: String; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMINF].AsString; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetNUMINFValue(const aValue: String); +begin + DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMINF].AsString := aValue; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetNUMINFIsNull: boolean; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMINF].IsNull; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetNUMINFIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMINF].AsVariant := Null; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetCLAVE1Value: Float; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE1].AsFloat; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetCLAVE1Value(const aValue: Float); +begin + DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE1].AsFloat := aValue; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetCLAVE1IsNull: boolean; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE1].IsNull; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetCLAVE1IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE1].AsVariant := Null; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetCLAVE2Value: Integer; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE2].AsInteger; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetCLAVE2Value(const aValue: Integer); +begin + DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE2].AsInteger := aValue; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetCLAVE2IsNull: boolean; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE2].IsNull; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetCLAVE2IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE2].AsVariant := Null; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetCLAVE3Value: Integer; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE3].AsInteger; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetCLAVE3Value(const aValue: Integer); +begin + DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE3].AsInteger := aValue; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetCLAVE3IsNull: boolean; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE3].IsNull; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetCLAVE3IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx__ExisteFilaReferenciaGenericaCLAVE3].AsVariant := Null; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetNUMCONValue: Integer; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMCON].AsInteger; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetNUMCONValue(const aValue: Integer); +begin + DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMCON].AsInteger := aValue; +end; + +function T_ExisteFilaReferenciaGenericaDataTableRules.GetNUMCONIsNull: boolean; +begin + result := DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMCON].IsNull; +end; + +procedure T_ExisteFilaReferenciaGenericaDataTableRules.SetNUMCONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx__ExisteFilaReferenciaGenericaNUMCON].AsVariant := Null; +end; + + +{ TInformeRefGenericaDataTableRules } +constructor TInformeRefGenericaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TInformeRefGenericaDataTableRules.Destroy; +begin + inherited; +end; + +function TInformeRefGenericaDataTableRules.GetCODCENTROValue: String; +begin + result := DataTable.Fields[idx_InformeRefGenericaCODCENTRO].AsString; +end; + +procedure TInformeRefGenericaDataTableRules.SetCODCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_InformeRefGenericaCODCENTRO].AsString := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetCODCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaCODCENTRO].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetCODCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaCODCENTRO].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_InformeRefGenericaCENTRO].AsString; +end; + +procedure TInformeRefGenericaDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_InformeRefGenericaCENTRO].AsString := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaCENTRO].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaCENTRO].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetCODVENDEDORValue: String; +begin + result := DataTable.Fields[idx_InformeRefGenericaCODVENDEDOR].AsString; +end; + +procedure TInformeRefGenericaDataTableRules.SetCODVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_InformeRefGenericaCODVENDEDOR].AsString := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetCODVENDEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaCODVENDEDOR].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetCODVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaCODVENDEDOR].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetVENDEDORValue: String; +begin + result := DataTable.Fields[idx_InformeRefGenericaVENDEDOR].AsString; +end; + +procedure TInformeRefGenericaDataTableRules.SetVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_InformeRefGenericaVENDEDOR].AsString := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetVENDEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaVENDEDOR].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaVENDEDOR].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetFECHAValue: DateTime; +begin + result := DataTable.Fields[idx_InformeRefGenericaFECHA].AsDateTime; +end; + +procedure TInformeRefGenericaDataTableRules.SetFECHAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_InformeRefGenericaFECHA].AsDateTime := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetFECHAIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaFECHA].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetFECHAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaFECHA].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetNUMTALONValue: String; +begin + result := DataTable.Fields[idx_InformeRefGenericaNUMTALON].AsString; +end; + +procedure TInformeRefGenericaDataTableRules.SetNUMTALONValue(const aValue: String); +begin + DataTable.Fields[idx_InformeRefGenericaNUMTALON].AsString := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetNUMTALONIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaNUMTALON].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetNUMTALONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaNUMTALON].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetCANTIDADValue: String; +begin + result := DataTable.Fields[idx_InformeRefGenericaCANTIDAD].AsString; +end; + +procedure TInformeRefGenericaDataTableRules.SetCANTIDADValue(const aValue: String); +begin + DataTable.Fields[idx_InformeRefGenericaCANTIDAD].AsString := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetCANTIDADIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaCANTIDAD].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetCANTIDADIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaCANTIDAD].AsVariant := Null; +end; + +function TInformeRefGenericaDataTableRules.GetVALTOTValue: Float; +begin + result := DataTable.Fields[idx_InformeRefGenericaVALTOT].AsFloat; +end; + +procedure TInformeRefGenericaDataTableRules.SetVALTOTValue(const aValue: Float); +begin + DataTable.Fields[idx_InformeRefGenericaVALTOT].AsFloat := aValue; +end; + +function TInformeRefGenericaDataTableRules.GetVALTOTIsNull: boolean; +begin + result := DataTable.Fields[idx_InformeRefGenericaVALTOT].IsNull; +end; + +procedure TInformeRefGenericaDataTableRules.SetVALTOTIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_InformeRefGenericaVALTOT].AsVariant := Null; +end; + + +{ TGetProductoDataTableRules } +constructor TGetProductoDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TGetProductoDataTableRules.Destroy; +begin + inherited; +end; + +function TGetProductoDataTableRules.GetCODIGO_BARRAValue: String; +begin + result := DataTable.Fields[idx_GetProductoCODIGO_BARRA].AsString; +end; + +procedure TGetProductoDataTableRules.SetCODIGO_BARRAValue(const aValue: String); +begin + DataTable.Fields[idx_GetProductoCODIGO_BARRA].AsString := aValue; +end; + +function TGetProductoDataTableRules.GetCODIGO_BARRAIsNull: boolean; +begin + result := DataTable.Fields[idx_GetProductoCODIGO_BARRA].IsNull; +end; + +procedure TGetProductoDataTableRules.SetCODIGO_BARRAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_GetProductoCODIGO_BARRA].AsVariant := Null; +end; + +function TGetProductoDataTableRules.GetCOR_PRODUTOValue: String; +begin + result := DataTable.Fields[idx_GetProductoCOR_PRODUTO].AsString; +end; + +procedure TGetProductoDataTableRules.SetCOR_PRODUTOValue(const aValue: String); +begin + DataTable.Fields[idx_GetProductoCOR_PRODUTO].AsString := aValue; +end; + +function TGetProductoDataTableRules.GetCOR_PRODUTOIsNull: boolean; +begin + result := DataTable.Fields[idx_GetProductoCOR_PRODUTO].IsNull; +end; + +procedure TGetProductoDataTableRules.SetCOR_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_GetProductoCOR_PRODUTO].AsVariant := Null; +end; + +function TGetProductoDataTableRules.GetDESC_PRODUTOValue: String; +begin + result := DataTable.Fields[idx_GetProductoDESC_PRODUTO].AsString; +end; + +procedure TGetProductoDataTableRules.SetDESC_PRODUTOValue(const aValue: String); +begin + DataTable.Fields[idx_GetProductoDESC_PRODUTO].AsString := aValue; +end; + +function TGetProductoDataTableRules.GetDESC_PRODUTOIsNull: boolean; +begin + result := DataTable.Fields[idx_GetProductoDESC_PRODUTO].IsNull; +end; + +procedure TGetProductoDataTableRules.SetDESC_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_GetProductoDESC_PRODUTO].AsVariant := Null; +end; + +function TGetProductoDataTableRules.GetPRODUTOValue: String; +begin + result := DataTable.Fields[idx_GetProductoPRODUTO].AsString; +end; + +procedure TGetProductoDataTableRules.SetPRODUTOValue(const aValue: String); +begin + DataTable.Fields[idx_GetProductoPRODUTO].AsString := aValue; +end; + +function TGetProductoDataTableRules.GetPRODUTOIsNull: boolean; +begin + result := DataTable.Fields[idx_GetProductoPRODUTO].IsNull; +end; + +procedure TGetProductoDataTableRules.SetPRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_GetProductoPRODUTO].AsVariant := Null; +end; + +function TGetProductoDataTableRules.GetGRADEValue: String; +begin + result := DataTable.Fields[idx_GetProductoGRADE].AsString; +end; + +procedure TGetProductoDataTableRules.SetGRADEValue(const aValue: String); +begin + DataTable.Fields[idx_GetProductoGRADE].AsString := aValue; +end; + +function TGetProductoDataTableRules.GetGRADEIsNull: boolean; +begin + result := DataTable.Fields[idx_GetProductoGRADE].IsNull; +end; + +procedure TGetProductoDataTableRules.SetGRADEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_GetProductoGRADE].AsVariant := Null; +end; + + +{ TReferenciaGenericaDataTableRules } +constructor TReferenciaGenericaDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TReferenciaGenericaDataTableRules.Destroy; +begin + inherited; +end; + +function TReferenciaGenericaDataTableRules.GetNUMINFValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaNUMINF].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetNUMINFValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaNUMINF].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetNUMINFIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaNUMINF].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetNUMINFIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaNUMINF].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCLAVE1Value: Float; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCLAVE1].AsFloat; +end; + +procedure TReferenciaGenericaDataTableRules.SetCLAVE1Value(const aValue: Float); +begin + DataTable.Fields[idx_ReferenciaGenericaCLAVE1].AsFloat := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCLAVE1IsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCLAVE1].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCLAVE1IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCLAVE1].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCLAVE2Value: Integer; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCLAVE2].AsInteger; +end; + +procedure TReferenciaGenericaDataTableRules.SetCLAVE2Value(const aValue: Integer); +begin + DataTable.Fields[idx_ReferenciaGenericaCLAVE2].AsInteger := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCLAVE2IsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCLAVE2].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCLAVE2IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCLAVE2].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCLAVE3Value: Integer; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCLAVE3].AsInteger; +end; + +procedure TReferenciaGenericaDataTableRules.SetCLAVE3Value(const aValue: Integer); +begin + DataTable.Fields[idx_ReferenciaGenericaCLAVE3].AsInteger := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCLAVE3IsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCLAVE3].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCLAVE3IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCLAVE3].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetNUMCONValue: Integer; +begin + result := DataTable.Fields[idx_ReferenciaGenericaNUMCON].AsInteger; +end; + +procedure TReferenciaGenericaDataTableRules.SetNUMCONValue(const aValue: Integer); +begin + DataTable.Fields[idx_ReferenciaGenericaNUMCON].AsInteger := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetNUMCONIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaNUMCON].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetNUMCONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaNUMCON].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetFECHAValue: DateTime; +begin + result := DataTable.Fields[idx_ReferenciaGenericaFECHA].AsDateTime; +end; + +procedure TReferenciaGenericaDataTableRules.SetFECHAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_ReferenciaGenericaFECHA].AsDateTime := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetFECHAIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaFECHA].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetFECHAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaFECHA].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCODCENTROValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODCENTRO].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaCODCENTRO].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCODCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODCENTRO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCODCENTRO].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCENTRO].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaCENTRO].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCENTRO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCENTRO].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCODVENDEDORValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODVENDEDOR].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaCODVENDEDOR].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCODVENDEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODVENDEDOR].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCODVENDEDOR].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetVENDEDORValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVENDEDOR].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaVENDEDOR].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetVENDEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVENDEDOR].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaVENDEDOR].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetNUMTALONValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaNUMTALON].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetNUMTALONValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaNUMTALON].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetNUMTALONIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaNUMTALON].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetNUMTALONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaNUMTALON].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCODIGO_BARRAValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODIGO_BARRA].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODIGO_BARRAValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaCODIGO_BARRA].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCODIGO_BARRAIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODIGO_BARRA].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODIGO_BARRAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCODIGO_BARRA].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODIGO].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaCODIGO].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCODIGOIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCODIGO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCODIGO].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaPRODUCTO].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaPRODUCTO].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaPRODUCTO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaPRODUCTO].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCOLOR].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaCOLOR].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetCOLORIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaCOLOR].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaCOLOR].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetTALLAValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaTALLA].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetTALLAValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaTALLA].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetTALLAIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaTALLA].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetTALLAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaTALLA].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetVTAPROCESOValue: Float; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVTAPROCESO].AsFloat; +end; + +procedure TReferenciaGenericaDataTableRules.SetVTAPROCESOValue(const aValue: Float); +begin + DataTable.Fields[idx_ReferenciaGenericaVTAPROCESO].AsFloat := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetVTAPROCESOIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVTAPROCESO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetVTAPROCESOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaVTAPROCESO].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetVTAFINALValue: Float; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVTAFINAL].AsFloat; +end; + +procedure TReferenciaGenericaDataTableRules.SetVTAFINALValue(const aValue: Float); +begin + DataTable.Fields[idx_ReferenciaGenericaVTAFINAL].AsFloat := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetVTAFINALIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVTAFINAL].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetVTAFINALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaVTAFINAL].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetVTATERMValue: Float; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVTATERM].AsFloat; +end; + +procedure TReferenciaGenericaDataTableRules.SetVTATERMValue(const aValue: Float); +begin + DataTable.Fields[idx_ReferenciaGenericaVTATERM].AsFloat := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetVTATERMIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVTATERM].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetVTATERMIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaVTATERM].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetVALTOTValue: Float; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVALTOT].AsFloat; +end; + +procedure TReferenciaGenericaDataTableRules.SetVALTOTValue(const aValue: Float); +begin + DataTable.Fields[idx_ReferenciaGenericaVALTOT].AsFloat := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetVALTOTIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaVALTOT].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetVALTOTIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaVALTOT].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetESTADOValue: String; +begin + result := DataTable.Fields[idx_ReferenciaGenericaESTADO].AsString; +end; + +procedure TReferenciaGenericaDataTableRules.SetESTADOValue(const aValue: String); +begin + DataTable.Fields[idx_ReferenciaGenericaESTADO].AsString := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetESTADOIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaESTADO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetESTADOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaESTADO].AsVariant := Null; +end; + +function TReferenciaGenericaDataTableRules.GetFECHACAMBIOValue: DateTime; +begin + result := DataTable.Fields[idx_ReferenciaGenericaFECHACAMBIO].AsDateTime; +end; + +procedure TReferenciaGenericaDataTableRules.SetFECHACAMBIOValue(const aValue: DateTime); +begin + DataTable.Fields[idx_ReferenciaGenericaFECHACAMBIO].AsDateTime := aValue; +end; + +function TReferenciaGenericaDataTableRules.GetFECHACAMBIOIsNull: boolean; +begin + result := DataTable.Fields[idx_ReferenciaGenericaFECHACAMBIO].IsNull; +end; + +procedure TReferenciaGenericaDataTableRules.SetFECHACAMBIOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_ReferenciaGenericaFECHACAMBIO].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID__ExisteFilaReferenciaGenerica, T_ExisteFilaReferenciaGenericaDataTableRules); + RegisterDataTableRules(RID_InformeRefGenerica, TInformeRefGenericaDataTableRules); + RegisterDataTableRules(RID_GetProducto, TGetProductoDataTableRules); + RegisterDataTableRules(RID_ReferenciaGenerica, TReferenciaGenericaDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/schReferenciaGenericaServer_Intf.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/schReferenciaGenericaServer_Intf.pas new file mode 100644 index 0000000..76ab070 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/schReferenciaGenericaServer_Intf.pas @@ -0,0 +1,1885 @@ +unit schReferenciaGenericaServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schReferenciaGenericaClient_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__ExisteFilaReferenciaGenericaDelta = '{451243CC-27EC-4D24-BCCF-4A6529D13DAB}'; + RID_InformeRefGenericaDelta = '{2C849E6E-A572-4480-8371-0767BFC76D53}'; + RID_GetProductoDelta = '{1E633156-754C-4296-B146-EB2952CA6084}'; + RID_ReferenciaGenericaDelta = '{E5A5D9F4-735D-4217-A484-35A87F318EAE}'; + +type + { I_ExisteFilaReferenciaGenericaDelta } + I_ExisteFilaReferenciaGenericaDelta = interface(I_ExisteFilaReferenciaGenerica) + ['{451243CC-27EC-4D24-BCCF-4A6529D13DAB}'] + { Property getters and setters } + function GetOldNUMINFValue : String; + function GetOldCLAVE1Value : Float; + function GetOldCLAVE2Value : Integer; + function GetOldCLAVE3Value : Integer; + function GetOldNUMCONValue : Integer; + + { Properties } + property OldNUMINF : String read GetOldNUMINFValue; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldNUMCON : Integer read GetOldNUMCONValue; + end; + + { T_ExisteFilaReferenciaGenericaBusinessProcessorRules } + T_ExisteFilaReferenciaGenericaBusinessProcessorRules = class(TDABusinessProcessorRules, I_ExisteFilaReferenciaGenerica, I_ExisteFilaReferenciaGenericaDelta) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + function GetNUMINFIsNull: Boolean; virtual; + function GetOldNUMINFValue: String; virtual; + function GetOldNUMINFIsNull: Boolean; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + procedure SetNUMINFIsNull(const aValue: Boolean); virtual; + function GetCLAVE1Value: Float; virtual; + function GetCLAVE1IsNull: Boolean; virtual; + function GetOldCLAVE1Value: Float; virtual; + function GetOldCLAVE1IsNull: Boolean; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + procedure SetCLAVE1IsNull(const aValue: Boolean); virtual; + function GetCLAVE2Value: Integer; virtual; + function GetCLAVE2IsNull: Boolean; virtual; + function GetOldCLAVE2Value: Integer; virtual; + function GetOldCLAVE2IsNull: Boolean; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + procedure SetCLAVE2IsNull(const aValue: Boolean); virtual; + function GetCLAVE3Value: Integer; virtual; + function GetCLAVE3IsNull: Boolean; virtual; + function GetOldCLAVE3Value: Integer; virtual; + function GetOldCLAVE3IsNull: Boolean; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + procedure SetCLAVE3IsNull(const aValue: Boolean); virtual; + function GetNUMCONValue: Integer; virtual; + function GetNUMCONIsNull: Boolean; virtual; + function GetOldNUMCONValue: Integer; virtual; + function GetOldNUMCONIsNull: Boolean; virtual; + procedure SetNUMCONValue(const aValue: Integer); virtual; + procedure SetNUMCONIsNull(const aValue: Boolean); virtual; + + { Properties } + property NUMINF : String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull : Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property OldNUMINF : String read GetOldNUMINFValue; + property OldNUMINFIsNull : Boolean read GetOldNUMINFIsNull; + property CLAVE1 : Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull : Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE1IsNull : Boolean read GetOldCLAVE1IsNull; + property CLAVE2 : Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull : Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE2IsNull : Boolean read GetOldCLAVE2IsNull; + property CLAVE3 : Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull : Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldCLAVE3IsNull : Boolean read GetOldCLAVE3IsNull; + property NUMCON : Integer read GetNUMCONValue write SetNUMCONValue; + property NUMCONIsNull : Boolean read GetNUMCONIsNull write SetNUMCONIsNull; + property OldNUMCON : Integer read GetOldNUMCONValue; + property OldNUMCONIsNull : Boolean read GetOldNUMCONIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IInformeRefGenericaDelta } + IInformeRefGenericaDelta = interface(IInformeRefGenerica) + ['{2C849E6E-A572-4480-8371-0767BFC76D53}'] + { Property getters and setters } + function GetOldCODCENTROValue : String; + function GetOldCENTROValue : String; + function GetOldCODVENDEDORValue : String; + function GetOldVENDEDORValue : String; + function GetOldFECHAValue : DateTime; + function GetOldNUMTALONValue : String; + function GetOldCANTIDADValue : String; + function GetOldVALTOTValue : Float; + + { Properties } + property OldCODCENTRO : String read GetOldCODCENTROValue; + property OldCENTRO : String read GetOldCENTROValue; + property OldCODVENDEDOR : String read GetOldCODVENDEDORValue; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldCANTIDAD : String read GetOldCANTIDADValue; + property OldVALTOT : Float read GetOldVALTOTValue; + end; + + { TInformeRefGenericaBusinessProcessorRules } + TInformeRefGenericaBusinessProcessorRules = class(TDABusinessProcessorRules, IInformeRefGenerica, IInformeRefGenericaDelta) + private + protected + { Property getters and setters } + function GetCODCENTROValue: String; virtual; + function GetCODCENTROIsNull: Boolean; virtual; + function GetOldCODCENTROValue: String; virtual; + function GetOldCODCENTROIsNull: Boolean; virtual; + procedure SetCODCENTROValue(const aValue: String); virtual; + procedure SetCODCENTROIsNull(const aValue: Boolean); virtual; + function GetCENTROValue: String; virtual; + function GetCENTROIsNull: Boolean; virtual; + function GetOldCENTROValue: String; virtual; + function GetOldCENTROIsNull: Boolean; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetCODVENDEDORValue: String; virtual; + function GetCODVENDEDORIsNull: Boolean; virtual; + function GetOldCODVENDEDORValue: String; virtual; + function GetOldCODVENDEDORIsNull: Boolean; virtual; + procedure SetCODVENDEDORValue(const aValue: String); virtual; + procedure SetCODVENDEDORIsNull(const aValue: Boolean); virtual; + function GetVENDEDORValue: String; virtual; + function GetVENDEDORIsNull: Boolean; virtual; + function GetOldVENDEDORValue: String; virtual; + function GetOldVENDEDORIsNull: Boolean; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + procedure SetVENDEDORIsNull(const aValue: Boolean); virtual; + function GetFECHAValue: DateTime; virtual; + function GetFECHAIsNull: Boolean; virtual; + function GetOldFECHAValue: DateTime; virtual; + function GetOldFECHAIsNull: Boolean; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + procedure SetFECHAIsNull(const aValue: Boolean); virtual; + function GetNUMTALONValue: String; virtual; + function GetNUMTALONIsNull: Boolean; virtual; + function GetOldNUMTALONValue: String; virtual; + function GetOldNUMTALONIsNull: Boolean; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + procedure SetNUMTALONIsNull(const aValue: Boolean); virtual; + function GetCANTIDADValue: String; virtual; + function GetCANTIDADIsNull: Boolean; virtual; + function GetOldCANTIDADValue: String; virtual; + function GetOldCANTIDADIsNull: Boolean; virtual; + procedure SetCANTIDADValue(const aValue: String); virtual; + procedure SetCANTIDADIsNull(const aValue: Boolean); virtual; + function GetVALTOTValue: Float; virtual; + function GetVALTOTIsNull: Boolean; virtual; + function GetOldVALTOTValue: Float; virtual; + function GetOldVALTOTIsNull: Boolean; virtual; + procedure SetVALTOTValue(const aValue: Float); virtual; + procedure SetVALTOTIsNull(const aValue: Boolean); virtual; + + { Properties } + property CODCENTRO : String read GetCODCENTROValue write SetCODCENTROValue; + property CODCENTROIsNull : Boolean read GetCODCENTROIsNull write SetCODCENTROIsNull; + property OldCODCENTRO : String read GetOldCODCENTROValue; + property OldCODCENTROIsNull : Boolean read GetOldCODCENTROIsNull; + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull : Boolean read GetCENTROIsNull write SetCENTROIsNull; + property OldCENTRO : String read GetOldCENTROValue; + property OldCENTROIsNull : Boolean read GetOldCENTROIsNull; + property CODVENDEDOR : String read GetCODVENDEDORValue write SetCODVENDEDORValue; + property CODVENDEDORIsNull : Boolean read GetCODVENDEDORIsNull write SetCODVENDEDORIsNull; + property OldCODVENDEDOR : String read GetOldCODVENDEDORValue; + property OldCODVENDEDORIsNull : Boolean read GetOldCODVENDEDORIsNull; + property VENDEDOR : String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull : Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldVENDEDORIsNull : Boolean read GetOldVENDEDORIsNull; + property FECHA : DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull : Boolean read GetFECHAIsNull write SetFECHAIsNull; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldFECHAIsNull : Boolean read GetOldFECHAIsNull; + property NUMTALON : String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull : Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldNUMTALONIsNull : Boolean read GetOldNUMTALONIsNull; + property CANTIDAD : String read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDADIsNull : Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; + property OldCANTIDAD : String read GetOldCANTIDADValue; + property OldCANTIDADIsNull : Boolean read GetOldCANTIDADIsNull; + property VALTOT : Float read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull : Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + property OldVALTOT : Float read GetOldVALTOTValue; + property OldVALTOTIsNull : Boolean read GetOldVALTOTIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IGetProductoDelta } + IGetProductoDelta = interface(IGetProducto) + ['{1E633156-754C-4296-B146-EB2952CA6084}'] + { Property getters and setters } + function GetOldCODIGO_BARRAValue : String; + function GetOldCOR_PRODUTOValue : String; + function GetOldDESC_PRODUTOValue : String; + function GetOldPRODUTOValue : String; + function GetOldGRADEValue : String; + + { Properties } + property OldCODIGO_BARRA : String read GetOldCODIGO_BARRAValue; + property OldCOR_PRODUTO : String read GetOldCOR_PRODUTOValue; + property OldDESC_PRODUTO : String read GetOldDESC_PRODUTOValue; + property OldPRODUTO : String read GetOldPRODUTOValue; + property OldGRADE : String read GetOldGRADEValue; + end; + + { TGetProductoBusinessProcessorRules } + TGetProductoBusinessProcessorRules = class(TDABusinessProcessorRules, IGetProducto, IGetProductoDelta) + private + protected + { Property getters and setters } + function GetCODIGO_BARRAValue: String; virtual; + function GetCODIGO_BARRAIsNull: Boolean; virtual; + function GetOldCODIGO_BARRAValue: String; virtual; + function GetOldCODIGO_BARRAIsNull: Boolean; virtual; + procedure SetCODIGO_BARRAValue(const aValue: String); virtual; + procedure SetCODIGO_BARRAIsNull(const aValue: Boolean); virtual; + function GetCOR_PRODUTOValue: String; virtual; + function GetCOR_PRODUTOIsNull: Boolean; virtual; + function GetOldCOR_PRODUTOValue: String; virtual; + function GetOldCOR_PRODUTOIsNull: Boolean; virtual; + procedure SetCOR_PRODUTOValue(const aValue: String); virtual; + procedure SetCOR_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetDESC_PRODUTOValue: String; virtual; + function GetDESC_PRODUTOIsNull: Boolean; virtual; + function GetOldDESC_PRODUTOValue: String; virtual; + function GetOldDESC_PRODUTOIsNull: Boolean; virtual; + procedure SetDESC_PRODUTOValue(const aValue: String); virtual; + procedure SetDESC_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetPRODUTOValue: String; virtual; + function GetPRODUTOIsNull: Boolean; virtual; + function GetOldPRODUTOValue: String; virtual; + function GetOldPRODUTOIsNull: Boolean; virtual; + procedure SetPRODUTOValue(const aValue: String); virtual; + procedure SetPRODUTOIsNull(const aValue: Boolean); virtual; + function GetGRADEValue: String; virtual; + function GetGRADEIsNull: Boolean; virtual; + function GetOldGRADEValue: String; virtual; + function GetOldGRADEIsNull: Boolean; virtual; + procedure SetGRADEValue(const aValue: String); virtual; + procedure SetGRADEIsNull(const aValue: Boolean); virtual; + + { Properties } + property CODIGO_BARRA : String read GetCODIGO_BARRAValue write SetCODIGO_BARRAValue; + property CODIGO_BARRAIsNull : Boolean read GetCODIGO_BARRAIsNull write SetCODIGO_BARRAIsNull; + property OldCODIGO_BARRA : String read GetOldCODIGO_BARRAValue; + property OldCODIGO_BARRAIsNull : Boolean read GetOldCODIGO_BARRAIsNull; + property COR_PRODUTO : String read GetCOR_PRODUTOValue write SetCOR_PRODUTOValue; + property COR_PRODUTOIsNull : Boolean read GetCOR_PRODUTOIsNull write SetCOR_PRODUTOIsNull; + property OldCOR_PRODUTO : String read GetOldCOR_PRODUTOValue; + property OldCOR_PRODUTOIsNull : Boolean read GetOldCOR_PRODUTOIsNull; + property DESC_PRODUTO : String read GetDESC_PRODUTOValue write SetDESC_PRODUTOValue; + property DESC_PRODUTOIsNull : Boolean read GetDESC_PRODUTOIsNull write SetDESC_PRODUTOIsNull; + property OldDESC_PRODUTO : String read GetOldDESC_PRODUTOValue; + property OldDESC_PRODUTOIsNull : Boolean read GetOldDESC_PRODUTOIsNull; + property PRODUTO : String read GetPRODUTOValue write SetPRODUTOValue; + property PRODUTOIsNull : Boolean read GetPRODUTOIsNull write SetPRODUTOIsNull; + property OldPRODUTO : String read GetOldPRODUTOValue; + property OldPRODUTOIsNull : Boolean read GetOldPRODUTOIsNull; + property GRADE : String read GetGRADEValue write SetGRADEValue; + property GRADEIsNull : Boolean read GetGRADEIsNull write SetGRADEIsNull; + property OldGRADE : String read GetOldGRADEValue; + property OldGRADEIsNull : Boolean read GetOldGRADEIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IReferenciaGenericaDelta } + IReferenciaGenericaDelta = interface(IReferenciaGenerica) + ['{E5A5D9F4-735D-4217-A484-35A87F318EAE}'] + { Property getters and setters } + function GetOldNUMINFValue : String; + function GetOldCLAVE1Value : Float; + function GetOldCLAVE2Value : Integer; + function GetOldCLAVE3Value : Integer; + function GetOldNUMCONValue : Integer; + function GetOldFECHAValue : DateTime; + function GetOldCODCENTROValue : String; + function GetOldCENTROValue : String; + function GetOldCODVENDEDORValue : String; + function GetOldVENDEDORValue : String; + function GetOldNUMTALONValue : String; + function GetOldCODIGO_BARRAValue : String; + function GetOldCODIGOValue : String; + function GetOldPRODUCTOValue : String; + function GetOldCOLORValue : String; + function GetOldTALLAValue : String; + function GetOldVTAPROCESOValue : Float; + function GetOldVTAFINALValue : Float; + function GetOldVTATERMValue : Float; + function GetOldVALTOTValue : Float; + function GetOldESTADOValue : String; + function GetOldFECHACAMBIOValue : DateTime; + + { Properties } + property OldNUMINF : String read GetOldNUMINFValue; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldNUMCON : Integer read GetOldNUMCONValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldCODCENTRO : String read GetOldCODCENTROValue; + property OldCENTRO : String read GetOldCENTROValue; + property OldCODVENDEDOR : String read GetOldCODVENDEDORValue; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldCODIGO_BARRA : String read GetOldCODIGO_BARRAValue; + property OldCODIGO : String read GetOldCODIGOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldTALLA : String read GetOldTALLAValue; + property OldVTAPROCESO : Float read GetOldVTAPROCESOValue; + property OldVTAFINAL : Float read GetOldVTAFINALValue; + property OldVTATERM : Float read GetOldVTATERMValue; + property OldVALTOT : Float read GetOldVALTOTValue; + property OldESTADO : String read GetOldESTADOValue; + property OldFECHACAMBIO : DateTime read GetOldFECHACAMBIOValue; + end; + + { TReferenciaGenericaBusinessProcessorRules } + TReferenciaGenericaBusinessProcessorRules = class(TDABusinessProcessorRules, IReferenciaGenerica, IReferenciaGenericaDelta) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + function GetNUMINFIsNull: Boolean; virtual; + function GetOldNUMINFValue: String; virtual; + function GetOldNUMINFIsNull: Boolean; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + procedure SetNUMINFIsNull(const aValue: Boolean); virtual; + function GetCLAVE1Value: Float; virtual; + function GetCLAVE1IsNull: Boolean; virtual; + function GetOldCLAVE1Value: Float; virtual; + function GetOldCLAVE1IsNull: Boolean; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + procedure SetCLAVE1IsNull(const aValue: Boolean); virtual; + function GetCLAVE2Value: Integer; virtual; + function GetCLAVE2IsNull: Boolean; virtual; + function GetOldCLAVE2Value: Integer; virtual; + function GetOldCLAVE2IsNull: Boolean; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + procedure SetCLAVE2IsNull(const aValue: Boolean); virtual; + function GetCLAVE3Value: Integer; virtual; + function GetCLAVE3IsNull: Boolean; virtual; + function GetOldCLAVE3Value: Integer; virtual; + function GetOldCLAVE3IsNull: Boolean; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + procedure SetCLAVE3IsNull(const aValue: Boolean); virtual; + function GetNUMCONValue: Integer; virtual; + function GetNUMCONIsNull: Boolean; virtual; + function GetOldNUMCONValue: Integer; virtual; + function GetOldNUMCONIsNull: Boolean; virtual; + procedure SetNUMCONValue(const aValue: Integer); virtual; + procedure SetNUMCONIsNull(const aValue: Boolean); virtual; + function GetFECHAValue: DateTime; virtual; + function GetFECHAIsNull: Boolean; virtual; + function GetOldFECHAValue: DateTime; virtual; + function GetOldFECHAIsNull: Boolean; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + procedure SetFECHAIsNull(const aValue: Boolean); virtual; + function GetCODCENTROValue: String; virtual; + function GetCODCENTROIsNull: Boolean; virtual; + function GetOldCODCENTROValue: String; virtual; + function GetOldCODCENTROIsNull: Boolean; virtual; + procedure SetCODCENTROValue(const aValue: String); virtual; + procedure SetCODCENTROIsNull(const aValue: Boolean); virtual; + function GetCENTROValue: String; virtual; + function GetCENTROIsNull: Boolean; virtual; + function GetOldCENTROValue: String; virtual; + function GetOldCENTROIsNull: Boolean; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetCODVENDEDORValue: String; virtual; + function GetCODVENDEDORIsNull: Boolean; virtual; + function GetOldCODVENDEDORValue: String; virtual; + function GetOldCODVENDEDORIsNull: Boolean; virtual; + procedure SetCODVENDEDORValue(const aValue: String); virtual; + procedure SetCODVENDEDORIsNull(const aValue: Boolean); virtual; + function GetVENDEDORValue: String; virtual; + function GetVENDEDORIsNull: Boolean; virtual; + function GetOldVENDEDORValue: String; virtual; + function GetOldVENDEDORIsNull: Boolean; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + procedure SetVENDEDORIsNull(const aValue: Boolean); virtual; + function GetNUMTALONValue: String; virtual; + function GetNUMTALONIsNull: Boolean; virtual; + function GetOldNUMTALONValue: String; virtual; + function GetOldNUMTALONIsNull: Boolean; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + procedure SetNUMTALONIsNull(const aValue: Boolean); virtual; + function GetCODIGO_BARRAValue: String; virtual; + function GetCODIGO_BARRAIsNull: Boolean; virtual; + function GetOldCODIGO_BARRAValue: String; virtual; + function GetOldCODIGO_BARRAIsNull: Boolean; virtual; + procedure SetCODIGO_BARRAValue(const aValue: String); virtual; + procedure SetCODIGO_BARRAIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + function GetCODIGOIsNull: Boolean; virtual; + function GetOldCODIGOValue: String; virtual; + function GetOldCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + function GetOldPRODUCTOValue: String; virtual; + function GetOldPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + function GetCOLORIsNull: Boolean; virtual; + function GetOldCOLORValue: String; virtual; + function GetOldCOLORIsNull: Boolean; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetTALLAValue: String; virtual; + function GetTALLAIsNull: Boolean; virtual; + function GetOldTALLAValue: String; virtual; + function GetOldTALLAIsNull: Boolean; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + procedure SetTALLAIsNull(const aValue: Boolean); virtual; + function GetVTAPROCESOValue: Float; virtual; + function GetVTAPROCESOIsNull: Boolean; virtual; + function GetOldVTAPROCESOValue: Float; virtual; + function GetOldVTAPROCESOIsNull: Boolean; virtual; + procedure SetVTAPROCESOValue(const aValue: Float); virtual; + procedure SetVTAPROCESOIsNull(const aValue: Boolean); virtual; + function GetVTAFINALValue: Float; virtual; + function GetVTAFINALIsNull: Boolean; virtual; + function GetOldVTAFINALValue: Float; virtual; + function GetOldVTAFINALIsNull: Boolean; virtual; + procedure SetVTAFINALValue(const aValue: Float); virtual; + procedure SetVTAFINALIsNull(const aValue: Boolean); virtual; + function GetVTATERMValue: Float; virtual; + function GetVTATERMIsNull: Boolean; virtual; + function GetOldVTATERMValue: Float; virtual; + function GetOldVTATERMIsNull: Boolean; virtual; + procedure SetVTATERMValue(const aValue: Float); virtual; + procedure SetVTATERMIsNull(const aValue: Boolean); virtual; + function GetVALTOTValue: Float; virtual; + function GetVALTOTIsNull: Boolean; virtual; + function GetOldVALTOTValue: Float; virtual; + function GetOldVALTOTIsNull: Boolean; virtual; + procedure SetVALTOTValue(const aValue: Float); virtual; + procedure SetVALTOTIsNull(const aValue: Boolean); virtual; + function GetESTADOValue: String; virtual; + function GetESTADOIsNull: Boolean; virtual; + function GetOldESTADOValue: String; virtual; + function GetOldESTADOIsNull: Boolean; virtual; + procedure SetESTADOValue(const aValue: String); virtual; + procedure SetESTADOIsNull(const aValue: Boolean); virtual; + function GetFECHACAMBIOValue: DateTime; virtual; + function GetFECHACAMBIOIsNull: Boolean; virtual; + function GetOldFECHACAMBIOValue: DateTime; virtual; + function GetOldFECHACAMBIOIsNull: Boolean; virtual; + procedure SetFECHACAMBIOValue(const aValue: DateTime); virtual; + procedure SetFECHACAMBIOIsNull(const aValue: Boolean); virtual; + + { Properties } + property NUMINF : String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull : Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property OldNUMINF : String read GetOldNUMINFValue; + property OldNUMINFIsNull : Boolean read GetOldNUMINFIsNull; + property CLAVE1 : Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull : Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE1IsNull : Boolean read GetOldCLAVE1IsNull; + property CLAVE2 : Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull : Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE2IsNull : Boolean read GetOldCLAVE2IsNull; + property CLAVE3 : Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull : Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldCLAVE3IsNull : Boolean read GetOldCLAVE3IsNull; + property NUMCON : Integer read GetNUMCONValue write SetNUMCONValue; + property NUMCONIsNull : Boolean read GetNUMCONIsNull write SetNUMCONIsNull; + property OldNUMCON : Integer read GetOldNUMCONValue; + property OldNUMCONIsNull : Boolean read GetOldNUMCONIsNull; + property FECHA : DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull : Boolean read GetFECHAIsNull write SetFECHAIsNull; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldFECHAIsNull : Boolean read GetOldFECHAIsNull; + property CODCENTRO : String read GetCODCENTROValue write SetCODCENTROValue; + property CODCENTROIsNull : Boolean read GetCODCENTROIsNull write SetCODCENTROIsNull; + property OldCODCENTRO : String read GetOldCODCENTROValue; + property OldCODCENTROIsNull : Boolean read GetOldCODCENTROIsNull; + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull : Boolean read GetCENTROIsNull write SetCENTROIsNull; + property OldCENTRO : String read GetOldCENTROValue; + property OldCENTROIsNull : Boolean read GetOldCENTROIsNull; + property CODVENDEDOR : String read GetCODVENDEDORValue write SetCODVENDEDORValue; + property CODVENDEDORIsNull : Boolean read GetCODVENDEDORIsNull write SetCODVENDEDORIsNull; + property OldCODVENDEDOR : String read GetOldCODVENDEDORValue; + property OldCODVENDEDORIsNull : Boolean read GetOldCODVENDEDORIsNull; + property VENDEDOR : String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull : Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldVENDEDORIsNull : Boolean read GetOldVENDEDORIsNull; + property NUMTALON : String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull : Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldNUMTALONIsNull : Boolean read GetOldNUMTALONIsNull; + property CODIGO_BARRA : String read GetCODIGO_BARRAValue write SetCODIGO_BARRAValue; + property CODIGO_BARRAIsNull : Boolean read GetCODIGO_BARRAIsNull write SetCODIGO_BARRAIsNull; + property OldCODIGO_BARRA : String read GetOldCODIGO_BARRAValue; + property OldCODIGO_BARRAIsNull : Boolean read GetOldCODIGO_BARRAIsNull; + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull : Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCODIGOIsNull : Boolean read GetOldCODIGOIsNull; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull : Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldPRODUCTOIsNull : Boolean read GetOldPRODUCTOIsNull; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property COLORIsNull : Boolean read GetCOLORIsNull write SetCOLORIsNull; + property OldCOLOR : String read GetOldCOLORValue; + property OldCOLORIsNull : Boolean read GetOldCOLORIsNull; + property TALLA : String read GetTALLAValue write SetTALLAValue; + property TALLAIsNull : Boolean read GetTALLAIsNull write SetTALLAIsNull; + property OldTALLA : String read GetOldTALLAValue; + property OldTALLAIsNull : Boolean read GetOldTALLAIsNull; + property VTAPROCESO : Float read GetVTAPROCESOValue write SetVTAPROCESOValue; + property VTAPROCESOIsNull : Boolean read GetVTAPROCESOIsNull write SetVTAPROCESOIsNull; + property OldVTAPROCESO : Float read GetOldVTAPROCESOValue; + property OldVTAPROCESOIsNull : Boolean read GetOldVTAPROCESOIsNull; + property VTAFINAL : Float read GetVTAFINALValue write SetVTAFINALValue; + property VTAFINALIsNull : Boolean read GetVTAFINALIsNull write SetVTAFINALIsNull; + property OldVTAFINAL : Float read GetOldVTAFINALValue; + property OldVTAFINALIsNull : Boolean read GetOldVTAFINALIsNull; + property VTATERM : Float read GetVTATERMValue write SetVTATERMValue; + property VTATERMIsNull : Boolean read GetVTATERMIsNull write SetVTATERMIsNull; + property OldVTATERM : Float read GetOldVTATERMValue; + property OldVTATERMIsNull : Boolean read GetOldVTATERMIsNull; + property VALTOT : Float read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull : Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + property OldVALTOT : Float read GetOldVALTOTValue; + property OldVALTOTIsNull : Boolean read GetOldVALTOTIsNull; + property ESTADO : String read GetESTADOValue write SetESTADOValue; + property ESTADOIsNull : Boolean read GetESTADOIsNull write SetESTADOIsNull; + property OldESTADO : String read GetOldESTADOValue; + property OldESTADOIsNull : Boolean read GetOldESTADOIsNull; + property FECHACAMBIO : DateTime read GetFECHACAMBIOValue write SetFECHACAMBIOValue; + property FECHACAMBIOIsNull : Boolean read GetFECHACAMBIOIsNull write SetFECHACAMBIOIsNull; + property OldFECHACAMBIO : DateTime read GetOldFECHACAMBIOValue; + property OldFECHACAMBIOIsNull : Boolean read GetOldFECHACAMBIOIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers, uDAInterfaces; + +{ T_ExisteFilaReferenciaGenericaBusinessProcessorRules } +constructor T_ExisteFilaReferenciaGenericaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor T_ExisteFilaReferenciaGenericaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMINF]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetNUMINFIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMINF]); +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaNUMINF]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldNUMINFIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaNUMINF]); +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetNUMINFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMINF] := aValue; +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetNUMINFIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMINF] := Null; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE1]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetCLAVE1IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE1]); +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaCLAVE1]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldCLAVE1IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaCLAVE1]); +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetCLAVE1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE1] := aValue; +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetCLAVE1IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE1] := Null; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE2]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetCLAVE2IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE2]); +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaCLAVE2]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldCLAVE2IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaCLAVE2]); +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetCLAVE2Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE2] := aValue; +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetCLAVE2IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE2] := Null; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE3]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetCLAVE3IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE3]); +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaCLAVE3]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldCLAVE3IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaCLAVE3]); +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetCLAVE3Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE3] := aValue; +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetCLAVE3IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaCLAVE3] := Null; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetNUMCONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMCON]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetNUMCONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMCON]); +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldNUMCONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaNUMCON]; +end; + +function T_ExisteFilaReferenciaGenericaBusinessProcessorRules.GetOldNUMCONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld__ExisteFilaReferenciaGenericaNUMCON]); +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetNUMCONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMCON] := aValue; +end; + +procedure T_ExisteFilaReferenciaGenericaBusinessProcessorRules.SetNUMCONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld__ExisteFilaReferenciaGenericaNUMCON] := Null; +end; + + +{ TInformeRefGenericaBusinessProcessorRules } +constructor TInformeRefGenericaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TInformeRefGenericaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCODCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODCENTRO]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCODCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODCENTRO]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCODCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCODCENTRO]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCODCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCODCENTRO]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCODCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODCENTRO] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCODCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODCENTRO] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCENTRO]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCENTRO]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCENTRO]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCENTRO]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCENTRO] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCENTRO] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCODVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODVENDEDOR]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCODVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODVENDEDOR]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCODVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCODVENDEDOR]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCODVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCODVENDEDOR]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCODVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODVENDEDOR] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCODVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCODVENDEDOR] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVENDEDOR]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVENDEDOR]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaVENDEDOR]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaVENDEDOR]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVENDEDOR] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVENDEDOR] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaFECHA]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetFECHAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaFECHA]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaFECHA]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldFECHAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaFECHA]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetFECHAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaFECHA] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetFECHAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaFECHA] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaNUMTALON]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetNUMTALONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaNUMTALON]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaNUMTALON]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldNUMTALONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaNUMTALON]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetNUMTALONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaNUMTALON] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetNUMTALONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaNUMTALON] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCANTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCANTIDAD]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetCANTIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCANTIDAD]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCANTIDADValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCANTIDAD]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldCANTIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaCANTIDAD]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCANTIDADValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCANTIDAD] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetCANTIDADIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaCANTIDAD] := Null; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetVALTOTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVALTOT]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetVALTOTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVALTOT]); +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldVALTOTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaVALTOT]; +end; + +function TInformeRefGenericaBusinessProcessorRules.GetOldVALTOTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_InformeRefGenericaVALTOT]); +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetVALTOTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVALTOT] := aValue; +end; + +procedure TInformeRefGenericaBusinessProcessorRules.SetVALTOTIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_InformeRefGenericaVALTOT] := Null; +end; + + +{ TGetProductoBusinessProcessorRules } +constructor TGetProductoBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TGetProductoBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TGetProductoBusinessProcessorRules.GetCODIGO_BARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCODIGO_BARRA]; +end; + +function TGetProductoBusinessProcessorRules.GetCODIGO_BARRAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCODIGO_BARRA]); +end; + +function TGetProductoBusinessProcessorRules.GetOldCODIGO_BARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoCODIGO_BARRA]; +end; + +function TGetProductoBusinessProcessorRules.GetOldCODIGO_BARRAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoCODIGO_BARRA]); +end; + +procedure TGetProductoBusinessProcessorRules.SetCODIGO_BARRAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCODIGO_BARRA] := aValue; +end; + +procedure TGetProductoBusinessProcessorRules.SetCODIGO_BARRAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCODIGO_BARRA] := Null; +end; + +function TGetProductoBusinessProcessorRules.GetCOR_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCOR_PRODUTO]; +end; + +function TGetProductoBusinessProcessorRules.GetCOR_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCOR_PRODUTO]); +end; + +function TGetProductoBusinessProcessorRules.GetOldCOR_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoCOR_PRODUTO]; +end; + +function TGetProductoBusinessProcessorRules.GetOldCOR_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoCOR_PRODUTO]); +end; + +procedure TGetProductoBusinessProcessorRules.SetCOR_PRODUTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCOR_PRODUTO] := aValue; +end; + +procedure TGetProductoBusinessProcessorRules.SetCOR_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoCOR_PRODUTO] := Null; +end; + +function TGetProductoBusinessProcessorRules.GetDESC_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoDESC_PRODUTO]; +end; + +function TGetProductoBusinessProcessorRules.GetDESC_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoDESC_PRODUTO]); +end; + +function TGetProductoBusinessProcessorRules.GetOldDESC_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoDESC_PRODUTO]; +end; + +function TGetProductoBusinessProcessorRules.GetOldDESC_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoDESC_PRODUTO]); +end; + +procedure TGetProductoBusinessProcessorRules.SetDESC_PRODUTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoDESC_PRODUTO] := aValue; +end; + +procedure TGetProductoBusinessProcessorRules.SetDESC_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoDESC_PRODUTO] := Null; +end; + +function TGetProductoBusinessProcessorRules.GetPRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoPRODUTO]; +end; + +function TGetProductoBusinessProcessorRules.GetPRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoPRODUTO]); +end; + +function TGetProductoBusinessProcessorRules.GetOldPRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoPRODUTO]; +end; + +function TGetProductoBusinessProcessorRules.GetOldPRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoPRODUTO]); +end; + +procedure TGetProductoBusinessProcessorRules.SetPRODUTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoPRODUTO] := aValue; +end; + +procedure TGetProductoBusinessProcessorRules.SetPRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoPRODUTO] := Null; +end; + +function TGetProductoBusinessProcessorRules.GetGRADEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoGRADE]; +end; + +function TGetProductoBusinessProcessorRules.GetGRADEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoGRADE]); +end; + +function TGetProductoBusinessProcessorRules.GetOldGRADEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoGRADE]; +end; + +function TGetProductoBusinessProcessorRules.GetOldGRADEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_GetProductoGRADE]); +end; + +procedure TGetProductoBusinessProcessorRules.SetGRADEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoGRADE] := aValue; +end; + +procedure TGetProductoBusinessProcessorRules.SetGRADEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_GetProductoGRADE] := Null; +end; + + +{ TReferenciaGenericaBusinessProcessorRules } +constructor TReferenciaGenericaBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TReferenciaGenericaBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMINF]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetNUMINFIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMINF]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaNUMINF]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldNUMINFIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaNUMINF]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetNUMINFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMINF] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetNUMINFIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMINF] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE1]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCLAVE1IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE1]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCLAVE1]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCLAVE1IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCLAVE1]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCLAVE1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE1] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCLAVE1IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE1] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE2]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCLAVE2IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE2]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCLAVE2]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCLAVE2IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCLAVE2]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCLAVE2Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE2] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCLAVE2IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE2] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE3]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCLAVE3IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE3]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCLAVE3]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCLAVE3IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCLAVE3]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCLAVE3Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE3] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCLAVE3IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCLAVE3] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetNUMCONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMCON]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetNUMCONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMCON]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldNUMCONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaNUMCON]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldNUMCONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaNUMCON]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetNUMCONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMCON] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetNUMCONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMCON] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHA]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetFECHAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHA]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaFECHA]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldFECHAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaFECHA]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetFECHAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHA] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetFECHAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHA] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODCENTRO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODCENTRO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODCENTRO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODCENTRO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODCENTRO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODCENTRO] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCENTRO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCENTRO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCENTRO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCENTRO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCENTRO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCENTRO] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODVENDEDOR]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODVENDEDOR]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODVENDEDOR]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODVENDEDOR]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODVENDEDOR] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODVENDEDOR] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVENDEDOR]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVENDEDOR]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVENDEDOR]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVENDEDOR]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVENDEDOR] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVENDEDOR] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMTALON]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetNUMTALONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMTALON]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaNUMTALON]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldNUMTALONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaNUMTALON]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetNUMTALONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMTALON] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetNUMTALONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaNUMTALON] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODIGO_BARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO_BARRA]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODIGO_BARRAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO_BARRA]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODIGO_BARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODIGO_BARRA]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODIGO_BARRAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODIGO_BARRA]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODIGO_BARRAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO_BARRA] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODIGO_BARRAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO_BARRA] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODIGO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCODIGO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCODIGO] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaPRODUCTO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaPRODUCTO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaPRODUCTO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaPRODUCTO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaPRODUCTO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaPRODUCTO] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCOLOR]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCOLOR]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCOLOR]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaCOLOR]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCOLOR] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaCOLOR] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaTALLA]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetTALLAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaTALLA]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaTALLA]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldTALLAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaTALLA]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetTALLAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaTALLA] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetTALLAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaTALLA] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVTAPROCESOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAPROCESO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVTAPROCESOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAPROCESO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVTAPROCESOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVTAPROCESO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVTAPROCESOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVTAPROCESO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVTAPROCESOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAPROCESO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVTAPROCESOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAPROCESO] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVTAFINALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAFINAL]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVTAFINALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAFINAL]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVTAFINALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVTAFINAL]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVTAFINALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVTAFINAL]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVTAFINALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAFINAL] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVTAFINALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTAFINAL] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVTATERMValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTATERM]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVTATERMIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTATERM]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVTATERMValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVTATERM]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVTATERMIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVTATERM]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVTATERMValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTATERM] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVTATERMIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVTATERM] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVALTOTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVALTOT]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetVALTOTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVALTOT]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVALTOTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVALTOT]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldVALTOTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaVALTOT]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVALTOTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVALTOT] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetVALTOTIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaVALTOT] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetESTADOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaESTADO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetESTADOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaESTADO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldESTADOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaESTADO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldESTADOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaESTADO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetESTADOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaESTADO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetESTADOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaESTADO] := Null; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetFECHACAMBIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHACAMBIO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetFECHACAMBIOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHACAMBIO]); +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldFECHACAMBIOValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaFECHACAMBIO]; +end; + +function TReferenciaGenericaBusinessProcessorRules.GetOldFECHACAMBIOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_ReferenciaGenericaFECHACAMBIO]); +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetFECHACAMBIOValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHACAMBIO] := aValue; +end; + +procedure TReferenciaGenericaBusinessProcessorRules.SetFECHACAMBIOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_ReferenciaGenericaFECHACAMBIO] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID__ExisteFilaReferenciaGenericaDelta, T_ExisteFilaReferenciaGenericaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_InformeRefGenericaDelta, TInformeRefGenericaBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_GetProductoDelta, TGetProductoBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_ReferenciaGenericaDelta, TReferenciaGenericaBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenerica.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenerica.pas new file mode 100644 index 0000000..811e49d --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenerica.pas @@ -0,0 +1,317 @@ +unit uBizReferenciaGenerica; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDBSelectionList, + schReferenciaGenericaClient_Intf; + +const + BIZ_REFERENCIAGENERICA = 'Client.ReferenciaGenerica'; + +type + TRefGenEstado = (rgPendiente, rgEnEspera, rgResuelto); + + IBizReferenciaGenerica = interface(IReferenciaGenerica) + ['{31C0DE0B-9B92-43A6-810D-7E94F5FF12FE}'] + procedure VerTodos; + procedure VerPendientes; + procedure VerEnEspera; + procedure VerResueltos; + procedure DesglosarReferencia; + procedure Show; + procedure Print (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = ''); + procedure Preview (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = ''); + procedure SetEstado(const AValue : TRefGenEstado); + function GetEstado : TRefGenEstado ; + property Estado : TRefGenEstado read GetEstado write SetEstado; + end; + + TBizReferenciaGenericaDataTableRules = class(TReferenciaGenericaDataTableRules, + IBizReferenciaGenerica, ISelectedRowList) + private + FSelectedRows : TSelectedRowList; + protected + procedure SetEstado(const AValue : TRefGenEstado); + function GetEstado : TRefGenEstado ; + function GetSelectedRows : TSelectedRowList; + procedure OnNewRecord(Sender: TDADataTable); override; + public + procedure VerTodos; + procedure VerPendientes; + procedure VerEnEspera; + procedure VerResueltos; + procedure DesglosarReferencia; + procedure Show; + procedure Print (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = ''); + procedure Preview (const Centro, Vendedor : string; const Estado : TRefGenEstado; const AFiltro : String = ''); + property Estado : TRefGenEstado read GetEstado write SetEstado; + property SelectedRows : TSelectedRowList read GetSelectedRows; + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + end; + +implementation + +uses + uEditorUtils, uDataModuleReferenciaGenerica, uDataTableUtils, uDACDSDataTable; + + +{ TBizReferenciaGenericaDataTableRules } + +constructor TBizReferenciaGenericaDataTableRules.Create( + aDataTable: TDADataTable); +begin + inherited; + FSelectedRows := TSelectedRowList.Create(aDataTable); +end; + +procedure TBizReferenciaGenericaDataTableRules.DesglosarReferencia; +var + ADataTable : TDACDSDataTable; + AEstado : TRefGenEstado; + i : integer; +begin + + if (Abs(VTAPROCESO) < 2) and + (Abs(VTAFINAL) < 2) and + (Abs(VTATERM) < 2) then + Exit; // No se puede desglosar si la cantidad es menor que 2. + + AEstado := Estado; + DataTable.Edit; + try + if (VTAPROCESO <> 0) then + begin + if (VTAPROCESO > 0) then + VTAPROCESO := VTAPROCESO - 1 + else + VTAPROCESO := VTAPROCESO + 1 + end + else begin + if (VTAFINAL <> 0) then + begin + if (VTAFINAL > 0) then + VTAFINAL := VTAFINAL - 1 + else + VTAFINAL := VTAFINAL + 1 + end + else begin + if (VTATERM <> 0) then + begin + if (VTATERM > 0) then + VTATERM := VTATERM - 1 + else + VTATERM := VTATERM + 1 + end + end; + end; + finally + DataTable.Post; + end; + + SelectedRows.Clear; + SelectedRows.CurrentRowSelected := True; + ADataTable := TDACDSDataTable.Create(nil); + try + ADataTable.RemoteFetchEnabled := False; + ADataTable.LogChanges := False; + CopyDataTable(DataTable, ADataTable, True); + + // Duplicar el registro + DataTable.Next; + if not DataTable.EOF then + DataTable.Insert + else + DataTable.Append; + for i := 0 to DataTable.FieldCount - 1 do + DataTable.Fields[i].Value := ADataTable.Fields[i].Value; + DataTable.Post; + + finally + ADataTable.Free; + end; + + DataTable.Edit; + Estado := AEstado; + FECHACAMBIO := Now; + + { Todavía no sé el valor que va a tener asi que le asigno uno cualquiera para + que en el cliente pueda diferenciar la fila nueva } + NUMCON := 99; + + + try + if (VTAPROCESO <> 0) then + begin + if (VTAPROCESO > 0) then + VTAPROCESO := 1 + else + VTAPROCESO := -1 + end + else begin + if (VTAFINAL <> 0) then + begin + if (VTAFINAL > 0) then + VTAFINAL := 1 + else + VTAFINAL := -1 + end + else begin + if (VTATERM <> 0) then + begin + if (VTATERM > 0) then + VTATERM := 1 + else + VTATERM := -1 + end + end; + end; + finally + DataTable.Post; + end; +end; + +destructor TBizReferenciaGenericaDataTableRules.Destroy; +begin + FreeAndNil(FSelectedRows); + inherited; +end; + +function TBizReferenciaGenericaDataTableRules.GetEstado: TRefGenEstado; +var + aux : String; +begin + aux := GetESTADOValue; + Result := rgPendiente; + if aux = 'E' then + Result := rgEnEspera + else + if aux = 'R' then + Result := rgResuelto; +end; + +function TBizReferenciaGenericaDataTableRules.GetSelectedRows: TSelectedRowList; +begin + Result := FSelectedRows; +end; + +procedure TBizReferenciaGenericaDataTableRules.OnNewRecord( + Sender: TDADataTable); +begin + inherited; + ESTADO := rgPendiente; + FECHACAMBIO := Now; +end; + +procedure TBizReferenciaGenericaDataTableRules.Preview(const Centro, + Vendedor: string; const Estado : TRefGenEstado; const AFiltro : String); +var + AEstado : String; +begin + case Estado of + rgPendiente : AEstado := 'P'; + rgEnEspera : AEstado := 'E'; + rgResuelto : AEstado := 'R'; + else + AEstado := ''; + end; + + dmReferenciaGenerica.Preview(Centro, Vendedor, AEstado, AFiltro); +end; + +procedure TBizReferenciaGenericaDataTableRules.Print(const Centro, + Vendedor: string; const Estado : TRefGenEstado; const AFiltro : String); +var + AEstado : String; +begin + case Estado of + rgPendiente : AEstado := 'P'; + rgEnEspera : AEstado := 'E'; + rgResuelto : AEstado := 'R'; + else + AEstado := ''; + end; + + dmReferenciaGenerica.Print(Centro, Vendedor, AEstado, AFiltro); +end; + +procedure TBizReferenciaGenericaDataTableRules.SetEstado( + const AValue: TRefGenEstado); +begin + case AValue of + rgPendiente : SetESTADOValue('P'); + rgEnEspera : SetESTADOValue('E'); + rgResuelto : SetESTADOValue('R'); + else + SetESTADOValue('P'); + end; +end; + +procedure TBizReferenciaGenericaDataTableRules.Show; +begin + ShowEditor(IBizReferenciaGenerica, Self, etItem); +end; + +procedure TBizReferenciaGenericaDataTableRules.VerEnEspera; +begin + with Self.DataTable do + begin + DisableControls; + DisableEventHandlers; + try + Filtered := False; + Filter := '(' + fld_ReferenciaGenericaESTADO + ' = ''E'')'; + Filtered := True; + finally + EnableEventHandlers; + EnableControls; + end; + end; +end; + +procedure TBizReferenciaGenericaDataTableRules.VerPendientes; +begin + with Self.DataTable do + begin + DisableControls; + DisableEventHandlers; + try + Filtered := False; + Filter := '(' + fld_ReferenciaGenericaESTADO + ' = ''P'') OR ' + + '(' + fld_ReferenciaGenericaESTADO + ' IS NULL)'; + Filtered := True; + finally + EnableEventHandlers; + EnableControls; + end; + end; +end; + +procedure TBizReferenciaGenericaDataTableRules.VerResueltos; +begin + with Self.DataTable do + begin + DisableControls; + DisableEventHandlers; + try + Filtered := False; + Filter := '(' + fld_ReferenciaGenericaESTADO + ' = ''R'')'; + Filtered := True; + finally + EnableEventHandlers; + EnableControls; + end; + end; +end; + +procedure TBizReferenciaGenericaDataTableRules.VerTodos; +begin + Self.DataTable.Filtered := False; +end; + +initialization + RegisterDataTableRules(BIZ_REFERENCIAGENERICA, TBizReferenciaGenericaDataTableRules); + +end. + diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenericaServer.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenericaServer.pas new file mode 100644 index 0000000..0604d66 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Reglas/uBizReferenciaGenericaServer.pas @@ -0,0 +1,145 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uBizReferenciaGenericaServer; + +interface + +uses + Classes, SysUtils, + uDADataTable, + uDAInterfaces, schReferenciaGenericaServer_Intf, + uDABusinessProcessor, uDADelta; + +const + BIZ_SERVER_REFERENCIA_GENERICA = 'Server.ReferenciaGenerica'; + +type + { TBizReferenciaGenericaServerRules } + TBizReferenciaGenericaServerRules = class(TReferenciaGenericaBusinessProcessorRules) + private + function GetConnection: IDAConnection; + function GetSchema: IDASchema; + function GetDataSet(const AName : String) : IDADataset; + function GetCommand(const AName : String) : IDASQLCommand; + protected + function ExisteFila: Boolean; + function InsertarFila: Boolean; + procedure BeforeProcessChange(Sender: TDABusinessProcessor; + aChangeType: TDAChangeType; aChange: TDADeltaChange; + var ProcessChange: Boolean); override; + end; + +implementation + +uses + Dialogs, Variants, uDAClasses; + + +{ TBizReferenciaGenericaServerRules } + +procedure TBizReferenciaGenericaServerRules.BeforeProcessChange( + Sender: TDABusinessProcessor; aChangeType: TDAChangeType; + aChange: TDADeltaChange; var ProcessChange: Boolean); +begin + inherited; + if aChangeType = ctUpdate then + begin + if not ExisteFila then + InsertarFila; + end; +end; + +function TBizReferenciaGenericaServerRules.ExisteFila: Boolean; +var + Connection : IDAConnection; + ADataSet: IDADataSet; +begin + Result := True; + Connection := GetConnection; + ADataSet := GetDataSet('_ExisteFilaReferenciaGenerica'); + with ADataSet do + begin + ParamByName('NUMINF').AsString := NUMINF; + ParamByName('CLAVE1').AsFloat := CLAVE1; + ParamByName('CLAVE2').AsInteger := CLAVE2; + ParamByName('CLAVE3').AsInteger := CLAVE3; + ParamByName('NUMCON').AsInteger := NUMCON; + end; + Connection.BeginTransaction; + try + ADataSet.Open; + Result := not ADataSet.IsEmpty; + ADataSet.Close; + finally + Connection.RollbackTransaction; + ADataSet := nil; + Connection := nil; + end; +end; + +function TBizReferenciaGenericaServerRules.GetCommand( + const AName: String): IDASQLCommand; +begin + Result := GetSchema.NewCommand(GetConnection, AName); +end; + +function TBizReferenciaGenericaServerRules.GetConnection: IDAConnection; +begin + Result := BusinessProcessor.Schema.ConnectionManager.NewConnection(BusinessProcessor.Schema.ConnectionManager.GetDefaultConnectionName); +end; + +function TBizReferenciaGenericaServerRules.GetDataSet( + const AName: String): IDADataset; +begin + Result := GetSchema.NewDataset(GetConnection, AName); +end; + +function TBizReferenciaGenericaServerRules.GetSchema: IDASchema; +begin + Result := BusinessProcessor.Schema; +end; + +function TBizReferenciaGenericaServerRules.InsertarFila: Boolean; +var + Connection : IDAConnection; + ACommand: IDASQLCommand; +begin + Result := False; + Connection := GetConnection; + ACommand := GetCommand(BusinessProcessor.InsertCommandName); + with ACommand do + begin + ParamByName('NUMINF').AsString := NUMINF; + ParamByName('CLAVE1').AsFloat := CLAVE1; + ParamByName('CLAVE2').AsInteger := CLAVE2; + ParamByName('CLAVE3').AsInteger := CLAVE3; + ParamByName('FECHACAMBIO').AsDateTime := Now; + ParamByName('ESTADO').AsString := 'P'; // Pendiente por defecto + ParamByName('VTATERM').AsVariant := Null; + ParamByName('VTAPROCESO').AsVariant := Null; + ParamByName('VTAFINAL').AsVariant := Null; + ParamByName('VALTOT').AsVariant := Null; + ParamByName('CODIGO_BARRA').AsVariant := Null; + end; + + Connection.BeginTransaction; + try + ACommand.Execute; + Connection.CommitTransaction; + Result := True; + except + Connection.RollbackTransaction; + end; +end; + +initialization + RegisterBusinessProcessorRules(BIZ_SERVER_REFERENCIA_GENERICA, TBizReferenciaGenericaServerRules); + +end. + diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.ddp b/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.dfm b/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.dfm new file mode 100644 index 0000000..66cdd08 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.dfm @@ -0,0 +1,938 @@ +object srvReferenciaGenerica: TsrvReferenciaGenerica + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schReferenciaGenerica + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 362 + Width = 469 + object schReferenciaGenerica: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'NUMINF' + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE1' + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE2' + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE3' + Value = '' + ParamType = daptInput + end + item + Name = 'NUMCON' + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT NUMINF, CLAVE1, CLAVE2, CLAVE3, NUMCON'#10'FROM RDX_REFERENCI' + + 'A_GENERICA'#10'WHERE NUMINF = :NUMINF AND'#10' CLAVE1 = :CLAVE1 AND' + + #10' CLAVE2 = :CLAVE2 AND'#10' CLAVE3 = :CLAVE3 AND'#10' NUM' + + 'CON = :NUMCON' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMINF' + TableField = 'NUMINF' + end + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'CLAVE2' + TableField = 'CLAVE2' + end + item + DatasetField = 'CLAVE3' + TableField = 'CLAVE3' + end + item + DatasetField = 'NUMCON' + TableField = 'NUMCON' + end> + end> + Name = '_ExisteFilaReferenciaGenerica' + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + end + item + Name = 'CLAVE1' + DataType = datFloat + end + item + Name = 'CLAVE2' + DataType = datInteger + end + item + Name = 'CLAVE3' + DataType = datInteger + end + item + Name = 'NUMCON' + DataType = datInteger + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT'#10' CODCENTRO,'#10' CENTRO = CASE WHEN (CODCENTRO = ' + + 'CENTRO) THEN'#10' CENTRO'#10' ELS' + + 'E'#10' CODCENTRO + '#39' - '#39' + CENTRO'#10' ' + + ' END,'#10' CODVENDEDOR,'#10' VENDEDOR = CASE WHEN (CODVE' + + 'NDEDOR = VENDEDOR) THEN'#10' VENDEDOR'#10' ' + + ' ELSE'#10' CODVENDEDOR + '#39' - '#39' + VENDE' + + 'DOR'#10' END,'#10' FECHA,'#10' NUMTALON,'#10' ' + + ' CANTIDAD ='#10' CASE WHEN (VTAPROCESO <> 0) THEN'#10' ' + + ' REPLACE(CAST(VTAPROCESO AS VARCHAR), '#39'.000'#39', '#39#39') + '#39' (ve' + + 'nta proceso)'#39#10' ELSE'#10' CASE WHEN (VTAFINAL' + + ' <> 0) THEN'#10' REPLACE(CAST(VTAFINAL AS VARCHAR' + + '), '#39'.000'#39', '#39#39') + '#39' (venta final/resc.)'#39#10' ELSE'#10' ' + + ' CASE WHEN (VTATERM <> 0) THEN'#10' ' + + ' REPLACE(CAST(VTATERM AS VARCHAR), '#39'.000'#39', '#39#39') + '#39' (venta te' + + 'rm./dev.)'#39#10' ELSE'#10' '#39'0'#39#10' ' + + ' END'#10' END'#10' END,'#10' VALTOT' + + #10'FROM RDX_V_REFERENCIA_GENERICA'#10'ORDER BY CENTRO, VENDEDOR, FECHA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'VENDEDOR' + TableField = 'VENDEDOR' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'NUMTALON' + TableField = 'NUMTALON' + end + item + DatasetField = 'VALTOT' + TableField = 'VALTOT' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'CODCENTRO' + TableField = 'CODCENTRO' + end + item + DatasetField = 'CODVENDEDOR' + TableField = 'CODVENDEDOR' + end> + end> + Name = 'InformeRefGenerica' + Fields = < + item + Name = 'CODCENTRO' + DataType = datString + Size = 17 + end + item + Name = 'CENTRO' + DataType = datString + Size = 255 + end + item + Name = 'CODVENDEDOR' + DataType = datString + Size = 17 + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 255 + end + item + Name = 'FECHA' + DataType = datDateTime + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CANTIDAD' + DataType = datString + Size = 8000 + end + item + Name = 'VALTOT' + DataType = datFloat + end> + end + item + Params = < + item + Name = 'CODIGO' + Value = '' + ParamType = daptInput + end + item + Name = 'TALLA' + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT'#10' PRODUTOS_BARRA.CODIGO_BARRA,'#10' PRODUTOS_BARRA.COR_PRODU' + + 'TO,'#10' PRODUTOS.DESC_PRODUTO,'#10' PRODUTOS.PRODUTO,'#10' PRODUTOS_BARR' + + 'A.GRADE'#10'FROM'#10' PRODUTOS'#10' INNER JOIN PRODUTOS_BARRA ON (PRODUTOS' + + '.PRODUTO = PRODUTOS_BARRA.PRODUTO)'#10'WHERE PRODUTOS_BARRA.PRODUTO ' + + '= :CODIGO'#10'AND PRODUTOS_BARRA.GRADE = :TALLA'#10'AND PRODUTOS_BARRA.C' + + 'OR_PRODUTO = :COLOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO_BARRA' + TableField = 'CODIGO_BARRA' + end + item + DatasetField = 'COR_PRODUTO' + TableField = 'COR_PRODUTO' + end + item + DatasetField = 'DESC_PRODUTO' + TableField = 'DESC_PRODUTO' + end + item + DatasetField = 'PRODUTO' + TableField = 'PRODUTO' + end + item + DatasetField = 'GRADE' + TableField = 'GRADE' + end> + end> + Name = 'GetProducto' + Description = 'Datos de una prenda' + Fields = < + item + Name = 'CODIGO_BARRA' + DataType = datString + Size = 25 + end + item + Name = 'COR_PRODUTO' + DataType = datString + Size = 10 + end + item + Name = 'DESC_PRODUTO' + DataType = datString + Size = 40 + end + item + Name = 'PRODUTO' + DataType = datString + Size = 12 + end + item + Name = 'GRADE' + DataType = datString + Size = 8 + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_REFERENCIA_GENERICA' + SQL = + 'SELECT '#10' NUMINF, CLAVE1, CLAVE2, CLAVE3, NUMCON, FECHA,'#10' C' + + 'ODCENTRO,'#10' CENTRO = CASE WHEN (CODCENTRO = CENTRO) THEN'#10' ' + + ' CENTRO'#10' ELSE'#10' ' + + ' CODCENTRO + '#39' - '#39' + CENTRO'#10' END,'#10' C' + + 'ODVENDEDOR,'#10' VENDEDOR = CASE WHEN (CODVENDEDOR = VENDEDOR)' + + ' THEN'#10' VENDEDOR'#10' ELSE'#10' ' + + ' CODVENDEDOR + '#39' - '#39' + VENDEDOR'#10' ' + + ' END,'#10' NUMTALON, CODIGO_BARRA, CODIGO, PRODUCTO, COLOR, TA' + + 'LLA, VTAPROCESO,'#10' VTAFINAL, VTATERM, VALTOT, ESTADO, FECHACAM' + + 'BIO'#10' FROM'#10' RDX_V_REFERENCIA_GENERICA'#10'ORDER BY CENTRO, VENDED' + + 'OR, FECHA'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMINF' + TableField = 'NUMINF' + end + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'CLAVE2' + TableField = 'CLAVE2' + end + item + DatasetField = 'CLAVE3' + TableField = 'CLAVE3' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'CODCENTRO' + TableField = 'CODCENTRO' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'CODVENDEDOR' + TableField = 'CODVENDEDOR' + end + item + DatasetField = 'VENDEDOR' + TableField = 'VENDEDOR' + end + item + DatasetField = 'NUMTALON' + TableField = 'NUMTALON' + end + item + DatasetField = 'CODIGO_BARRA' + TableField = 'CODIGO_BARRA' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'TALLA' + TableField = 'TALLA' + end + item + DatasetField = 'VTAPROCESO' + TableField = 'VTAPROCESO' + end + item + DatasetField = 'VTAFINAL' + TableField = 'VTAFINAL' + end + item + DatasetField = 'VTATERM' + TableField = 'VTATERM' + end + item + DatasetField = 'VALTOT' + TableField = 'VALTOT' + end + item + DatasetField = 'ESTADO' + TableField = 'ESTADO' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end + item + DatasetField = 'NUMCON' + TableField = 'NUMCON' + end> + end> + Name = 'ReferenciaGenerica' + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + InPrimaryKey = True + end + item + Name = 'CLAVE1' + DataType = datFloat + InPrimaryKey = True + end + item + Name = 'CLAVE2' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'CLAVE3' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'NUMCON' + DataType = datInteger + end + item + Name = 'FECHA' + DataType = datDateTime + end + item + Name = 'CODCENTRO' + DataType = datString + Size = 17 + end + item + Name = 'CENTRO' + DataType = datString + Size = 45 + end + item + Name = 'CODVENDEDOR' + DataType = datString + Size = 17 + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 86 + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CODIGO_BARRA' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'TALLA' + DataType = datString + Size = 8 + end + item + Name = 'VTAPROCESO' + DataType = datFloat + end + item + Name = 'VTAFINAL' + DataType = datFloat + end + item + Name = 'VTATERM' + DataType = datFloat + end + item + Name = 'VALTOT' + DataType = datFloat + end + item + Name = 'ESTADO' + DataType = datString + Size = 1 + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ESTADO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_BARRA' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'VTAPROCESO' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'VTAFINAL' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'VTATERM' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'VALTOT' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_NUMINF' + DataType = datString + Size = 35 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CLAVE1' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CLAVE2' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CLAVE3' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_NUMCON' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_REFERENCIA_GENERICA' + SQL = + 'UPDATE RDX_REFERENCIA_GENERICA'#10' SET '#10' ESTADO = :ESTADO,'#10' ' + + 'FECHACAMBIO = :FECHACAMBIO,'#10' CODIGO_BARRA = :CODIGO_BARRA,'#10' ' + + ' CANESP = :VTAPROCESO,'#10' CANVENNET = :VTAFINAL,'#10' CANVEN = ' + + ':VTATERM,'#10' VALVEN = :VALTOT'#10' WHERE'#10' (NUMINF = :OLD_NUMINF' + + ') AND'#10' (CLAVE1 = :OLD_CLAVE1) AND'#10' (CLAVE2 = :OLD_CLAVE2) ' + + 'AND'#10' (CLAVE3 = :OLD_CLAVE3) AND'#10' (NUMCON = :OLD_NUMCON)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ReferenciaGenerica' + end + item + Params = < + item + Name = 'ESTADO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_REFERENCIA_GENERICA' + SQL = + 'INSERT INTO RDX_REFERENCIA_GENERICA'#10'(NUMINF, CLAVE1, CLAVE2, CLA' + + 'VE3, ENESPERA, FECHACAMBIO)'#10'SELECT V.NUMINF, V.CLAVE1, V.CLAVE2,' + + ' V.CLAVE3, :ESTADO, CURRENT_TIMESTAMP'#10'FROM RDX_V_REFERENCIA_GENE' + + 'RICA V' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'CambiarEstado' + end + item + Params = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE1' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE2' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE3' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'ESTADO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO_BARRA' + DataType = datString + Size = 25 + Value = '' + ParamType = daptInput + end + item + Name = 'VTATERM' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'VTAPROCESO' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'VTAFINAL' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'VALTOT' + DataType = datFloat + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_REFERENCIA_GENERICA' + SQL = + 'begin'#10' declare @NUMINF varchar(35)'#10' declare @CLAVE1 nume' + + 'ric(10, 0)'#10' declare @CLAVE2 numeric(5, 0)'#10' declare @CLAV' + + 'E3 numeric(5, 0)'#10' declare @ESTADO char(1)'#10' declare @FECH' + + 'ACAMBIO datetime'#10' declare @CODIGO_BARRA varchar(25)'#10' dec' + + 'lare @VTATERM numeric(15, 3)'#10' declare @VTAPROCESO numeric(15' + + ', 3)'#10' declare @VTAFINAL numeric(15, 3)'#10' declare @NUMCON ' + + 'smallint'#10' declare @VALTOT numeric(15, 3)'#10#10' set @NUMINF =' + + ' :NUMINF'#10' set @CLAVE1 = :CLAVE1'#10' set @CLAVE2 = :CLAVE2'#10' ' + + ' set @CLAVE3 = :CLAVE3'#10' set @ESTADO = :ESTADO'#10' set @F' + + 'ECHACAMBIO = :FECHACAMBIO'#10' set @CODIGO_BARRA = :CODIGO_BARRA' + + #10' set @VTATERM = :VTATERM'#10' set @VTAPROCESO = :VTAPROCESO' + + #10' set @VTAFINAL = :VTAFINAL'#10' set @VALTOT = :VALTOT'#10#10' ' + + ' set @NUMCON = 0'#10#10' select @NUMCON = isnull(max(NUMCON) + 1, ' + + '0)'#10' from RDX_REFERENCIA_GENERICA'#10' where (NUMINF = @NUMIN' + + 'F) and'#10' (CLAVE1 = @CLAVE1) and'#10' (CLAVE2 = @C' + + 'LAVE2) and'#10' (CLAVE3 = @CLAVE3)'#10#10' INSERT INTO RDX_R' + + 'EFERENCIA_GENERICA'#10' (NUMINF, CLAVE1, CLAVE2, CLAVE3,'#10' ' + + ' ESTADO, FECHACAMBIO, CODIGO_BARRA,'#10' CANVEN, CANESP, CANV' + + 'ENNET, VALVEN, NUMCON)'#10' VALUES'#10' (@NUMINF, @CLAVE1, @CLA' + + 'VE2, @CLAVE3,'#10' @ESTADO, @FECHACAMBIO, @CODIGO_BARRA,'#10' ' + + '@VTATERM, @VTAPROCESO, @VTAFINAL, @VALTOT, @NUMCON)'#10#10'end' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ReferenciaGenerica' + end + item + Params = < + item + Name = 'OLD_NUMINF' + DataType = datString + Size = 35 + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CLAVE1' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CLAVE2' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_CLAVE3' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_NUMCON' + DataType = datInteger + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_REFERENCIA_GENERICA' + SQL = + 'DELETE '#10' FROM'#10' RDX_REFERENCIA_GENERICA'#10' WHERE'#10' (NUMINF =' + + ' :OLD_NUMINF) AND '#10' (CLAVE1 = :OLD_CLAVE1) AND '#10' (CLAVE2 =' + + ' :OLD_CLAVE2) AND '#10' (CLAVE3 = :OLD_CLAVE3) AND'#10' (NUMCON = ' + + ':OLD_NUMCON)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_ReferenciaGenerica' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 56 + Top = 32 + end + object bpReferenciaGenerica: TDABusinessProcessor + Schema = schReferenciaGenerica + InsertCommandName = 'Insert_ReferenciaGenerica' + DeleteCommandName = 'Delete_ReferenciaGenerica' + UpdateCommandName = 'Update_ReferenciaGenerica' + ReferencedDataset = 'ReferenciaGenerica' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 208 + Top = 32 + end + object frxDBCabecera: TfrxDBDataset + UserName = 'frxReferenciasGenericas' + CloseDataSource = False + DataSource = dsReferenciasGenericas + Left = 120 + Top = 128 + end + object dsReferenciasGenericas: TDADataSource + DataSet = tbl_ReferenciasGenericas.Dataset + DataTable = tbl_ReferenciasGenericas + Left = 120 + Top = 176 + 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.OutlineWidth = 180 + PreviewOptions.Zoom = 1.000000000000000000 + PrintOptions.Printer = 'Default' + ReportOptions.CreateDate = 37871.995398692100000000 + ReportOptions.Description.Strings = ( + 'Demonstrates how to create simple list report.') + ReportOptions.LastChange = 38902.414757476900000000 + ReportOptions.VersionBuild = '1' + ReportOptions.VersionMajor = '12' + ReportOptions.VersionMinor = '13' + ReportOptions.VersionRelease = '1' + ScriptLanguage = 'PascalScript' + ScriptText.Strings = ( + 'begin' + '' + 'end.') + StoreInDFM = False + Left = 40 + Top = 128 + Datasets = < + item + DataSet = frxDBCabecera + DataSetName = 'frxReferenciasGenericas' + end> + Variables = <> + Style = < + item + Name = 'Concepto normal' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [] + end + item + Name = 'Concepto subtotal' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end + item + Name = 'Cabecera de columna' + Color = 15790320 + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + Frame.Typ = [ftLeft, ftRight, ftTop, ftBottom] + end + item + Name = 'Concepto titulo' + Color = clNone + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + end> + end + object tbl_ReferenciasGenericas: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteFetchEnabled = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + IndexDefs = <> + Left = 120 + Top = 232 + end + object ADOConnection1: TADOConnection + ConnectionString = + 'Provider=SQLNCLI.1;Password=123456;Persist Security Info=True;Us' + + 'er ID=usuario_gft;Initial Catalog=gft_varela;Data Source=localho' + + 'st' + Provider = 'SQLNCLI.1' + Left = 344 + Top = 136 + end + object ADOQuery1: TADOQuery + Connection = ADOConnection1 + CursorType = ctStatic + Parameters = <> + SQL.Strings = ( + 'SELECT' + ' CENTRO = CASE WHEN (CODCENTRO = CENTRO) THEN' + ' CENTRO' + ' ELSE' + ' CODCENTRO + '#39' - '#39' + CENTRO' + ' END,' + ' VENDEDOR = CASE WHEN (CODVENDEDOR = VENDEDOR) THEN' + ' VENDEDOR' + ' ELSE' + ' CODVENDEDOR + '#39' - '#39' + VENDEDOR' + ' END,' + ' FECHA,' + ' NUMTALON,' + ' CANTIDAD =' + ' CASE WHEN (VTAPROCESO <> 0) THEN' + + ' REPLACE(CAST(VTAPROCESO AS VARCHAR), '#39'.000'#39', '#39#39')' + + ' + '#39' (venta proceso)'#39 + ' ELSE' + ' CASE WHEN (VTAFINAL <> 0) THEN' + + ' REPLACE(CAST(VTAFINAL AS VARCHAR), '#39'.000'#39', '#39 + + #39') + '#39' (venta final/resc.)'#39 + ' ELSE' + ' CASE WHEN (VTATERM <> 0) THEN' + + ' REPLACE(CAST(VTATERM AS VARCHAR), '#39'.000'#39 + + ', '#39#39') + '#39' (venta term./dev.)'#39 + ' ELSE' + ' '#39'0'#39 + ' END' + ' END' + ' END,' + ' VALTOT' + 'FROM RDX_V_REFERENCIA_GENERICA' + 'ORDER BY CENTRO, VENDEDOR, FECHA') + Left = 344 + Top = 200 + end + object DataSource1: TDataSource + DataSet = ADOQuery1 + Left = 240 + Top = 144 + end + object DABINAdapter: TDABINAdapter + Left = 336 + Top = 32 + end +end diff --git a/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.pas b/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.pas new file mode 100644 index 0000000..47b0d33 --- /dev/null +++ b/2.1.0/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.pas @@ -0,0 +1,178 @@ +unit srvReferenciaGenerica_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDACDSDataTable, frxClass, DB, + frxDBSet, ADODB, uDAInterfaces, uROClient, uROEventRepository, + uDABINAdapter, uDADataStreamer; + +type + { TsrvReferenciaGenerica } + TsrvReferenciaGenerica = class(TDARemoteService, IsrvReferenciaGenerica) + bpReferenciaGenerica: TDABusinessProcessor; + frxDBCabecera: TfrxDBDataset; + dsReferenciasGenericas: TDADataSource; + tbl_ReferenciasGenericas: TDACDSDataTable; + ADOConnection1: TADOConnection; + ADOQuery1: TADOQuery; + DataSource1: TDataSource; + frxReport1: TfrxReport; + DABINAdapter: TDABINAdapter; + schReferenciaGenerica: TDASchema; + procedure DARemoteServiceCreate(Sender: TObject); + private + protected + function GetProducto(const Codigo: String; const Talla: String; + const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; + function GenerateReport(const Centro: String; const Vendedor: String; + const Estado: String; const FiltroUsuario: String): Binary; + procedure PasarProductosAEspera(const Centro: String; const Vendedor: String); + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, + schReferenciaGenericaClient_Intf, uBizReferenciaGenericaServer, Dialogs; + +procedure Create_srvReferenciaGenerica(out anInstance : IUnknown); +begin + anInstance := TsrvReferenciaGenerica.Create(NIL); +end; + +{ srvReferenciaGenerica } +{ TsrvReferenciaGenerica } + +function TsrvReferenciaGenerica.GenerateReport(const Centro, + Vendedor: String; const Estado: String; const FiltroUsuario: String): Binary; +var + ds: IDADataset; + AStream: TMemoryStream; + AWhere : String; +begin + AStream := TMemoryStream.Create; + Result := Binary.Create; + AWhere := ''; + try + ds := schReferenciaGenerica.NewDataset(Connection, 'InformeRefGenerica'); + + if Length(Centro) > 0 then + begin + AWhere := 'CODCENTRO = ''' + Centro + ''''; + end; + + if Length(Vendedor) > 0 then + begin + if Length(AWhere) > 0 then + AWhere := AWhere + ' AND '; + AWhere := AWhere + 'CODVENDEDOR = ''' + Vendedor + ''''; + end; + + if Length(Estado) > 0 then + begin + if Length(AWhere) > 0 then + AWhere := AWhere + ' AND '; + AWhere := AWhere + '((ESTADO = ''' + Estado + ''') '; + if Estado = 'P' then + AWhere := AWhere + 'OR (ESTADO is null)'; + AWhere := AWhere + ')'; + end; + + if Length(FiltroUsuario) > 0 then + begin + if Length(AWhere) > 0 then + AWhere := AWhere + ' AND '; + AWhere := AWhere + '(' + FiltroUsuario + ')'; + end; + + ds.Where.AddText(AWhere); + + AStream.Clear; + ServiceAdapter.WriteDataset(AStream, ds, [woRows, woSchema], -1); + ServiceAdapter.ReadDataset(AStream, tbl_ReferenciasGenericas, TRUE, '', TRUE, TRUE); + + frxReport1.LoadFromFile(DarRutaInformes + 'InformeReferenciaGenerica.fr3', True); + frxReport1.PrepareReport; + frxReport1.PreviewPages.SaveToStream(Result); + finally + AStream.Free; + end; +end; + + +function TsrvReferenciaGenerica.GetProducto(const Codigo: String; const Talla: String; + const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; +var + ds : IDADataset; + conn : IDAConnection; +begin + conn := dmServer.ConnectionManager.NewConnection(ConnectionName); + ds := schReferenciaGenerica.NewDataset(conn, nme_GetProducto); + + ds.ParamByName('CODIGO').AsString := Codigo; + ds.ParamByName('TALLA').AsString := Talla; + ds.ParamByName('COLOR').AsString := Color; + try + ds.Open; + Result := not ds.IsEmpty; + if Result then + begin + Descripcion := ds.FieldValues[idx_GetProductoDESC_PRODUTO]; + CodigoBarras := ds.FieldValues[idx_GetProductoCODIGO_BARRA]; + end; + finally + ds.Close; + ds := nil; + conn := nil; + end; +end; + +procedure TsrvReferenciaGenerica.PasarProductosAEspera(const Centro, + Vendedor: String); +var + cmd : IDASQLCommand; + conn : IDAConnection; +begin + conn := dmServer.ConnectionManager.NewConnection(ConnectionName); + conn.BeginTransaction; + + cmd := schReferenciaGenerica.NewCommand(conn, 'CambiarEstado'); + try + if Length(Centro) > 0 then + begin + cmd.Where.AddText('V.CODCENTRO = ''' + Centro + ''''); + if Length(Vendedor) > 0 then + cmd.Where.AddText('AND V.CODVENDEDOR = ''' + Vendedor + ''''); + end; + cmd.Execute; + conn.CommitTransaction; + except + conn.RollbackTransaction; + end; +end; + +procedure TsrvReferenciaGenerica.DARemoteServiceCreate(Sender: TObject); +begin + bpReferenciaGenerica.BusinessRulesID := BIZ_SERVER_REFERENCIA_GENERICA; +end; + +initialization + TROClassFactory.Create('srvReferenciaGenerica', Create_srvReferenciaGenerica, TsrvReferenciaGenerica_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.bdsproj b/2.1.0/Source/Modulos/Stock/Cliente/Stock.bdsproj new file mode 100644 index 0000000..3e22257 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + Stock.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 + 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;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7;dxPScxScheduler2LnkD7;ComparerD7;dxPSdxLCLnkD7;dxLayoutControlcxEditAdaptersD7;cxVerticalGridVCLD7;vclShX_Generic_V3D7.bpl;vclShX_Namespace_V3D7.bpl + + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 0 + 2 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.2.0 + + + + + + 1.0.0.0 + + + + + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.cfg b/2.1.0/Source/Modulos/Stock/Cliente/Stock.cfg new file mode 100644 index 0000000..53e7995 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.dof b/2.1.0/Source/Modulos/Stock/Cliente/Stock.dof new file mode 100644 index 0000000..326e1c7 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;PluginSDK_D7R;DJcl;JvStdCtrlsD7R;JvAppFrmD7R;JvCoreD7R;JvBandsD7R;JvBDED7R;JvDBD7R;JvDlgsD7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;qrpt;JvGlobusD7R;JvHMID7R;JvInspectorD7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvSystemD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;GUISDK_D7;RemObjects_WebBroker_D7;RemObjects_Indy_D7;RemObjects_RODX_D7;RemObjects_BPDX_D7;PascalScript_RO_D7;DataAbstract_Core_D7;DataAbstract_IDE_D7;DataAbstract_DBXDriver_D7;DataAbstract_Scripting_D7;dxBarD7;dxComnD7;cxLibraryVCLD7;cxEditorsVCLD7;dxThemeD7;cxDataD7;cxExtEditorsVCLD7;cxGridVCLD7;cxPageControlVCLD7;cxSchedulerVCLD7;cxTreeListVCLD7;dxBarDBNavD7;dxBarExtDBItemsD7;dxBarExtItemsD7;dxDockingD7;dxNavBarD7;dxPSCoreD7;dxsbD7;dxPSLnksD7;dxPSTeeChartD7;EPCOTAUtils70;PNG_D7;PngComponentsD7;tb2k_d7;tbx_d7;UserControlD7_RT;fqb70;frx7;frxADO7;frxBDE7;frxcs7;frxDB7;frxDBX7;frxe7;frxIBX7;fs7;fsADO7;fsBDE7;fsDB7;fsIBX7;cxExportVCLD7;cxIntl5D7;cxIntlPrintSys3D7;dxPScxCommonD7;dxPScxExtCommonD7;dxPScxGridLnkD7;dxPScxPCProdD7;dxPScxTLLnkD7;dxPSDBTeeChartD7;dxPsPrVwAdvD7;TMSD7;FR7;FRIBX7;cxIntlSchedulerD7;dxLayoutControlD7;dxPScxScheduler2LnkD7;ComparerD7;dxPSdxLCLnkD7;dxLayoutControlcxEditAdaptersD7;cxVerticalGridVCLD7;vclShX_Generic_V3D7.bpl;vclShX_Namespace_V3D7.bpl +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=2 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.2.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Cliente +Item1=..\..\Output\Servidor +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.dpk b/2.1.0/Source/Modulos/Stock/Cliente/Stock.dpk new file mode 100644 index 0000000..1e68b17 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.dpk @@ -0,0 +1,82 @@ +package Stock; + +{$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 ON} +{$DEFINE DEBUG} + +requires + rtl, + vcl, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + PluginSDK_D10R, + GUISDK_D10, + BaseD10, + ControlesBaseD10, + dbrtl, + dsnap, + adortl, + cxLibraryD10, + dxThemeD10, + cxEditorsD10, + cxDataD10, + vcljpg, + vcldb, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + cxExportD10, + dxPSCoreD10, + dxComnD10, + dxPScxGridLnkD10, + dxPScxCommonD10, + dxPSLnksD10, + designide, + vclshlctrls, + dclcxLibraryD10, + tb2k_D10, + tbx_D10, + JvCoreD10R, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + Parametros, + JvCustomD10R; + +contains + uPluginControllerStock in 'uPluginControllerStock.pas' {ModuleStock: TModuleController}, + uDataModuleStock in 'uDataModuleStock.pas' {dmStock: TDAClientDataModule}, + uBizStock in '..\Reglas\uBizStock.pas', + uViewControGridStockPrendasCentros in 'uViewControGridStockPrendasCentros.pas' {frViewControlGridStockPrendasCentros: TCustomView}, + uViewControGridStockEDI in 'uViewControGridStockEDI.pas' {frViewControlGridStockEDI: TCustomView}, + uEditorControlStockEDI in 'uEditorControlStockEDI.pas' {fEditorControlStockEDI: TCustomEditor}, + uEditorControlStockVARELA in 'uEditorControlStockVARELA.pas' {fEditorControlStockVARELA: TCustomEditor}, + uViewControGridStockVARELA in 'uViewControGridStockVARELA.pas' {frViewControlGridStockVARELA: TCustomView}, + uViewControGridStockEDIInventario in 'uViewControGridStockEDIInventario.pas' {frViewControlGridStockEDIInventario: TCustomView}; + +end. diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.dproj b/2.1.0/Source/Modulos/Stock/Cliente/Stock.dproj new file mode 100644 index 0000000..07e8e43 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.dproj @@ -0,0 +1,621 @@ + + + {4380a611-ee0c-4a44-ba5c-1ae341efa141} + Stock.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Stock.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1020FalseFalseFalseFalseFalse308212521.0.2.01.0.0.0Stock.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmStock
+
+ +
fEditorControlStockEDI
+
+ +
fEditorControlStockVARELA
+
+ +
ModuleStock
+
+ +
frViewControlGridStockEDI
+
+ +
frViewControlGridStockEDIInventario
+
+ +
frViewControlGridStockPrendasCentros
+
+ +
frViewControlGridStockVARELA
+
+ + + + + + +
+
+ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.drc b/2.1.0/Source/Modulos/Stock/Cliente/Stock.drc new file mode 100644 index 0000000..64eae50 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.drc @@ -0,0 +1,24 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uDataModuleStock.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uViewControGridStockEDI.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uViewControGridStockPrendasCentros.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uViewControGridStockEDIInventario.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uEditorControlStockEDI.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uViewControGridStockVARELA.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uEditorControlStockVARELA.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\uPluginControllerStock.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Cliente\Stock.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf22.tmp */ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.identcache b/2.1.0/Source/Modulos/Stock/Cliente/Stock.identcache new file mode 100644 index 0000000..b248b7d Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Cliente/Stock.identcache differ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.rc b/2.1.0/Source/Modulos/Stock/Cliente/Stock.rc new file mode 100644 index 0000000..f4e84f6 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/Stock.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,2,0 +PRODUCTVERSION 1,0,2,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.2.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/Stock/Cliente/Stock.res b/2.1.0/Source/Modulos/Stock/Cliente/Stock.res new file mode 100644 index 0000000..cabcb66 Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Cliente/Stock.res differ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/cxVerticalGridD10.drc b/2.1.0/Source/Modulos/Stock/Cliente/cxVerticalGridD10.drc new file mode 100644 index 0000000..ae9acff --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/cxVerticalGridD10.drc @@ -0,0 +1,22 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x43", "\x00", "\x6f", "\x00", "\x72", "\x00", /* 0020: .C.o.r. */ + "\x65", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0028: e. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0030: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0038: y... */ +END + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/teedb.drc b/2.1.0/Source/Modulos/Stock/Cliente/teedb.drc new file mode 100644 index 0000000..ae9acff --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/teedb.drc @@ -0,0 +1,22 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x43", "\x00", "\x6f", "\x00", "\x72", "\x00", /* 0020: .C.o.r. */ + "\x65", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0028: e. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0030: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0038: y... */ +END + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.ddp b/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.ddp differ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.dfm new file mode 100644 index 0000000..50d9092 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.dfm @@ -0,0 +1,589 @@ +object dmStock: TdmStock + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 322 + Width = 267 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvStock' + Left = 48 + Top = 20 + end + object tbl_StockEDI: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CENTRO' + DataType = datString + Size = 25 + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'TIPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'GRUPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 40 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'E38' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E40' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E42' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E44' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E46' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E48' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'TE' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S38' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S40' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S42' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S44' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S46' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S48' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'TS' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K38' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K40' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K42' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K44' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K46' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K48' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'KT' + DataType = datFloat + Alignment = taRightJustify + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'StockEDI' + IndexDefs = <> + Left = 184 + Top = 16 + end + object tbl_StockVARELA: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'TIPO_PRODUTO' + DataType = datString + Size = 25 + end + item + Name = 'GRUPO_PRODUTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 40 + end + item + Name = 'K38' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K40' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K42' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K44' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K46' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K48' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'KT' + DataType = datInteger + Alignment = taRightJustify + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'StockVARELA' + IndexDefs = <> + Left = 184 + Top = 72 + end + object tbl_StockPrendasCentros: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DisplayLabel = 'Producto' + end + item + Name = 'TIPO_PRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Tipo' + end + item + Name = 'GRUPO_PRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Grupo' + end + item + Name = 'COLECCION' + DataType = datString + Size = 40 + DisplayLabel = 'Colecci'#243'n' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + end + item + Name = 'T38' + DataType = datFloat + DisplayLabel = '38' + Alignment = taRightJustify + end + item + Name = 'T40' + DataType = datFloat + DisplayLabel = '40' + Alignment = taRightJustify + end + item + Name = 'T42' + DataType = datFloat + DisplayLabel = '42' + Alignment = taRightJustify + end + item + Name = 'T44' + DataType = datFloat + DisplayLabel = '44' + Alignment = taRightJustify + end + item + Name = 'T46' + DataType = datFloat + DisplayLabel = '46' + Alignment = taRightJustify + end + item + Name = 'T48' + DataType = datFloat + DisplayLabel = '48' + Alignment = taRightJustify + end + item + Name = 'TOTAL' + DataType = datFloat + DisplayLabel = 'Total' + Alignment = taRightJustify + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'StockPrendasCentros' + IndexDefs = <> + Left = 48 + Top = 176 + end + object ds_StockPrendasCentros: TDADataSource + DataSet = tbl_StockPrendasCentros.Dataset + DataTable = tbl_StockPrendasCentros + Left = 48 + Top = 232 + end + object tbl_StockEDIInventario: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'CENTRO' + DataType = datString + Size = 25 + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'TIPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'GRUPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + end + item + Name = 'I38' + DataType = datFloat + end + item + Name = 'I40' + DataType = datFloat + end + item + Name = 'I42' + DataType = datFloat + end + item + Name = 'I44' + DataType = datFloat + end + item + Name = 'I46' + DataType = datFloat + end + item + Name = 'I48' + DataType = datFloat + end + item + Name = 'TI' + DataType = datFloat + end + item + Name = 'K38' + DataType = datFloat + end + item + Name = 'K40' + DataType = datFloat + end + item + Name = 'K42' + DataType = datFloat + end + item + Name = 'K44' + DataType = datFloat + end + item + Name = 'K46' + DataType = datFloat + end + item + Name = 'K48' + DataType = datFloat + end + item + Name = 'TK' + DataType = datFloat + end + item + Name = 'D38' + DataType = datFloat + end + item + Name = 'D40' + DataType = datFloat + end + item + Name = 'D42' + DataType = datFloat + end + item + Name = 'D44' + DataType = datFloat + end + item + Name = 'D46' + DataType = datFloat + end + item + Name = 'D48' + DataType = datFloat + end + item + Name = 'DT' + DataType = datFloat + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'StockEDIInventario' + IndexDefs = <> + Left = 185 + Top = 128 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'StockEDIInventario' + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = False + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + Left = 48 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.pas b/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.pas new file mode 100644 index 0000000..0e5ed7c --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uDataModuleStock.pas @@ -0,0 +1,112 @@ +unit uDataModuleStock; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizStock, uDARemoteDataAdapter, uDAInterfaces; + +type + TdmStock = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_StockEDI: TDACDSDataTable; + tbl_StockVARELA: TDACDSDataTable; + tbl_StockPrendasCentros: TDACDSDataTable; + ds_StockPrendasCentros: TDADataSource; + tbl_StockEDIInventario: TDACDSDataTable; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function GetItemsStockVarela : IBizStockVARELA; + function GetItemsStockEDI : IBizStockEDI; + function GetItemsStockEDIInventario : IBizStockEDIInventario; + function GetItemsStockPrendasCentros : IBizStockPrendasCentros; + end; + +var + dmStock: TdmStock; + +implementation + +{$R *.DFM} + +uses + uDataModuleBase, Controls, Forms, cxControls, uDataTableUtils; + + +procedure TdmStock.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmStock.GetItemsStockEDI: IBizStockEDI; +var + dtItemsStockEDI: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtItemsStockEDI := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_StockEDI, dtItemsStockEDI); + dtItemsStockEDI.BusinessRulesID := BIZ_STOCK_EDI; + Result := (dtItemsStockEDI as IBizStockEDI); + finally + HideHourglassCursor; + end; +end; + +function TdmStock.GetItemsStockEDIInventario: IBizStockEDIInventario; +var + dtItemsStockEDIInventario: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtItemsStockEDIInventario := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_StockEDIInventario, dtItemsStockEDIInventario); + dtItemsStockEDIInventario.BusinessRulesID := BIZ_STOCK_EDIINVENTARIO; + Result := (dtItemsStockEDIInventario as IBizStockEDIInventario); + finally + HideHourglassCursor; + end; +end; + +function TdmStock.GetItemsStockPrendasCentros: IBizStockPrendasCentros; +var + dtItemsStock: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtItemsStock := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_StockPrendasCentros, dtItemsStock); + dtItemsStock.BusinessRulesID := BIZ_STOCK_PRENDAS_CENTROS; + Result := (dtItemsStock as IBizStockPrendasCentros); + finally + HideHourglassCursor; + end; +end; + +function TdmStock.GetItemsStockVarela: IBizStockVARELA; +var + dtItemsStockVARELA: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtItemsStockVARELA := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_StockVARELA, dtItemsStockVARELA); + dtItemsStockVARELA.BusinessRulesID := BIZ_STOCK_VARELA; + Result := (dtItemsStockVARELA as IBizStockVARELA); + finally + HideHourglassCursor; + end; +end; + +initialization + dmStock := TdmStock.Create(nil); + +finalization + FreeAndNil(dmStock); + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.ddp b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.ddp differ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.dfm new file mode 100644 index 0000000..3b24867 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.dfm @@ -0,0 +1,2319 @@ +inherited fEditorControlStockEDI: TfEditorControlStockEDI + Left = 467 + Top = 265 + Caption = 'Control de stock de centros' + ClientHeight = 573 + ClientWidth = 864 + ExplicitWidth = 872 + ExplicitHeight = 607 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 864 + ExplicitWidth = 864 + inherited Image1: TImage + Left = 837 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000002944944415478DAD5955F4853511CC7BFD7CD9C + 9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D582441B58782 + 0A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C9B685A5EEF + EEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB85C361A4D3 + B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C4A8AC2221B + 13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C579518CCCA9 + 1388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED592808E32AF + 06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B6B19E48C7C + 3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E098FB3026B2 + C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583DE0DB096837 + 30573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF91E44014E02 + 682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF814FF2A1E4 + 5B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB30BE711CD6 + FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D7847164A22 + 7BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6B9F2F30CA2 + B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED1149741F46C139F + 5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF38720B23877 + A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C9242B6A23A39F + E201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B8183CD4BDF45 + B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB431DBA95582 + F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F00A95ADA01 + 3F01A44422D9EF203E7B0000000049454E44AE426082} + ExplicitLeft = 652 + end + end + inherited TBXDock: TTBXDock + Width = 864 + ExplicitWidth = 864 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 350 + inherited TBXItem33: TTBXItem + Visible = False + end + object TBXSeparatorItem16: TTBXSeparatorItem [13] + end + object TBXItem39: TTBXItem [14] + Action = actExpandir + end + object TBXItem38: TTBXItem [15] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [16] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 864 + inherited TBXSubmenuItem6: TTBXSubmenuItem + object TBXItem37: TTBXItem [0] + Action = actExpandir + end + object TBXItem36: TTBXItem [1] + Action = actContraer + end + object TBXItem35: TTBXItem [2] + Action = actAnchoAuto + end + object TBXSeparatorItem17: TTBXSeparatorItem [3] + end + end + end + inherited tbxFiltro: TTBXToolbar + Left = 350 + DockPos = 304 + ExplicitLeft = 350 + end + end + inherited StatusBar: TStatusBar + Top = 554 + Width = 864 + ExplicitTop = 554 + ExplicitWidth = 864 + end + object PageControl1: TPageControl [3] + Left = 0 + Top = 105 + Width = 864 + Height = 449 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + ActivePage = tabResumen + Align = alClient + MultiLine = True + TabHeight = 10 + TabOrder = 3 + TabPosition = tpLeft + object tabResumen: TTabSheet + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Caption = 'Resumido por prendas' + inline frViewControlGridStockPrendasCentros1: TfrViewControlGridStockPrendasCentros + Left = 0 + Top = 0 + Width = 846 + Height = 441 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 846 + ExplicitHeight = 441 + inherited cxGrid: TcxGrid + Width = 846 + Height = 381 + ExplicitWidth = 846 + ExplicitHeight = 381 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.FooterSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Column = frViewControlGridStockPrendasCentros1.cxGridViewPRODUCTO + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridView38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridView40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridView42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridView44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridView46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridView48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockPrendasCentros1.cxGridViewTOTAL + end> + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 846 + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 525 + ExplicitWidth = 525 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + inherited TBXLabel1: TTBXLabel + Width = 846 + ExplicitWidth = 846 + end + end + inherited dsDataSource: TDADataSource + Left = 16 + Top = 152 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + ReportDocument.CreationDate = 38966.445252812500000000 + ReportDocument.IsCaptionAssigned = True + BuiltInReportLink = True + end + end + end + end + object tabDesglose: TTabSheet + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Caption = 'Detallado por centros' + ImageIndex = 1 + inline frViewControlGridStockEDI1: TfrViewControlGridStockEDI + Left = 0 + Top = 0 + Width = 846 + Height = 441 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 846 + ExplicitHeight = 441 + inherited cxGrid: TcxGrid + Width = 846 + Height = 381 + ExplicitWidth = 846 + ExplicitHeight = 381 + inherited cxGridView: TcxGridDBTableView + PopupMenu = GridPopupMenu + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewE38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewE40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewE42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewE44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewE46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewE48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewTE + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewS38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewS40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewS42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewS44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewS46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewS48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewTS + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDI1.cxGridViewKT + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewE38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewE40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewE42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewE44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewE46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewE48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewTE + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewS38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewS40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewS42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewS44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewS46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewS48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewTS + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDI1.cxGridViewKT + end> + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 846 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 125 + ExplicitWidth = 125 + inherited TBXButton1: TTBXButton + Action = actRefrescar + end + end + inherited TBXLabel2: TTBXLabel + Width = 846 + ExplicitWidth = 846 + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + ReportDocument.CreationDate = 38965.499016562500000000 + BuiltInReportLink = True + end + end + end + end + object tabInventario: TTabSheet + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Caption = 'Diferencias con '#250'ltimo inventario' + ImageIndex = 2 + inline frViewControlGridStockEDIInventario1: TfrViewControlGridStockEDIInventario + Left = 0 + Top = 0 + Width = 846 + Height = 441 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 846 + ExplicitHeight = 441 + inherited cxGrid: TcxGrid + Width = 846 + Height = 381 + ExplicitWidth = 846 + ExplicitHeight = 381 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewI38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewI40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewI42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewI44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewI46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewI48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewTI + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewTK + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewD38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewD40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewD42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewD44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewD46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewD48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockEDIInventario1.cxGridViewDT + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewI38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewI40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewI42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewI44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewI46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewI48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewTI + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewTK + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewD38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewD40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewD42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewD44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewD46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewD48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockEDIInventario1.cxGridViewDT + end> + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 846 + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 125 + ExplicitWidth = 125 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + inherited TBXLabel1: TTBXLabel + Width = 846 + ExplicitWidth = 846 + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + ReportDocument.CreationDate = 38993.574718599530000000 + BuiltInReportLink = True + end + end + end + end + end + object JvTabBar1: TJvTabBar [4] + Left = 0 + Top = 76 + Width = 864 + Height = 29 + Cursor = crHandPoint + CloseButton = False + Painter = JvModernTabBarPainter1 + Images = SmallImages + Tabs = < + item + Caption = 'Resumido por prendas' + Selected = True + end + item + Caption = 'Detallado por centros' + Tag = 1 + end + item + Caption = 'Diferencias con '#250'ltimo inventario' + Tag = 2 + end> + OnTabSelected = JvTabBar1TabSelected + end + inherited EditorActionList: TActionList + Top = 208 + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited dsDataTable: TDADataSource [9] + Left = 8 + Top = 208 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [10] + end + inherited GridPopupMenu: TPopupMenu + Left = 40 + Top = 208 + inherited Duplicar1: TMenuItem + Visible = False + end + end + object dsVentasTerminadas: TDADataSource + Left = 320 + Top = 232 + end + object JvModernTabBarPainter1: TJvModernTabBarPainter + BorderColor = clWindow + ControlDivideColor = cl3DDkShadow + DividerColor = clBtnShadow + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + DisabledFont.Charset = DEFAULT_CHARSET + DisabledFont.Color = clGrayText + DisabledFont.Height = -11 + DisabledFont.Name = 'MS Sans Serif' + DisabledFont.Style = [] + SelectedFont.Charset = DEFAULT_CHARSET + SelectedFont.Color = clHighlight + SelectedFont.Height = -11 + SelectedFont.Name = 'MS Sans Serif' + SelectedFont.Style = [fsBold] + Left = 320 + Top = 128 + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.pas b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.pas new file mode 100644 index 0000000..0171d2c --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockEDI.pas @@ -0,0 +1,282 @@ +unit uEditorControlStockEDI; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlBase, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, + uCustomView, uViewBase, uViewControlBase, Grids, DBGrids, pngimage, StdCtrls, + uEditorGridBase, uViewGridBase, uViewGrid, Menus, TB2ExtItems, TBXExtItems, + + uBizStock,uViewControGridStockEDI, uViewControGridStockPrendasCentros, + uViewControGridStockEDIInventario, uDAInterfaces, JvTabBar; + +type + IEditorControlStockEDI = interface(IEditorGridBase) + ['{8CDABF14-FD43-48BF-8B33-B6B5A9B03CEB}'] +{ function GetItems: IBizStockEDI; + procedure SetItems(const Value: IBizStockEDI); + property Items: IBizStockEDI read GetItems write SetItems;} + end; + + TfEditorControlStockEDI = class(TfEditorGridBase, IEditorControlStockEDI) + dsVentasTerminadas: TDADataSource; + TBXSeparatorItem16: TTBXSeparatorItem; + tbxiAnchoAuto: TTBXItem; + actExpandir: TAction; + actContraer: TAction; + actAnchoAuto: TAction; + TBXItem37: TTBXItem; + TBXItem36: TTBXItem; + TBXItem35: TTBXItem; + TBXSeparatorItem17: TTBXSeparatorItem; + TBXItem38: TTBXItem; + TBXItem39: TTBXItem; + frViewControlGridStockEDI1: TfrViewControlGridStockEDI; + PageControl1: TPageControl; + tabResumen: TTabSheet; + tabDesglose: TTabSheet; + frViewControlGridStockPrendasCentros1: TfrViewControlGridStockPrendasCentros; + tabInventario: TTabSheet; + frViewControlGridStockEDIInventario1: TfrViewControlGridStockEDIInventario; + JvTabBar1: TJvTabBar; + JvModernTabBarPainter1: TJvModernTabBarPainter; + procedure actAnchoAutoExecute(Sender: TObject); + procedure FormShow(Sender: TObject); override; + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); + private + procedure AsignarItems; + protected + FDesglose : IBizStockEDI; + FInventario : IBizStockEDIInventario; + FResumen : IBizStockPrendasCentros; + + function GetItemsDesglose: IBizStockEDI; + procedure SetItemsDesglose(const Value: IBizStockEDI); + + function GetItemsInventario: IBizStockEDIInventario; + procedure SetItemsInventario(const Value: IBizStockEDIInventario); + + function GetItemsResumen: IBizStockPrendasCentros; + procedure SetItemsResumen(const Value: IBizStockPrendasCentros); + public + property ItemsDesglose: IBizStockEDI read GetItemsDesglose write SetItemsDesglose; + property ItemsInventario: IBizStockEDIInventario read GetItemsInventario write SetItemsInventario; + property ItemsResumen: IBizStockPrendasCentros read GetItemsResumen write SetItemsResumen; + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + cxControls, uEditorUtils, DateUtils, uCustomEditor, uEditorBase, + uDataModuleStock; + +{$R *.dfm} + +{ TfEditorControlStockEDI } + +procedure TfEditorControlStockEDI.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + case PageControl1.ActivePageIndex of + 0 : frViewControlGridStockPrendasCentros1.AjustarAncho; + 1 : frViewControlGridStockEDI1.AjustarAncho; + 2 : frViewControlGridStockEDIInventario1.AjustarAncho; + end; +end; + +procedure TfEditorControlStockEDI.FormShow(Sender: TObject); +begin +// inherited; <- No descomentar + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + case PageControl1.ActivePageIndex of + 0 : ViewGrid.ShowEmbedded(tabResumen); + 1 : ViewGrid.ShowEmbedded(tabDesglose); + 2 : ViewGrid.ShowEmbedded(tabInventario); + end; + + ViewGrid.ExpandirTodo; +end; + +constructor TfEditorControlStockEDI.Create(AOwner: TComponent); +var + i:Integer; + +begin + inherited; + FResumen := nil; + FDesglose := nil; + FInventario := nil; + + Self.Caption := 'Control de stock en centros'; + JvNavPanelHeader.Caption := Self.Caption; + + //Para ocultar las pestañas y dejar que se encargue del cambio el componente de jv + for i := 0 to PageControl1.PageCount - 1 do + begin + PageControl1.Pages[i].TabVisible := false; + end; + PageControl1.ActivePageIndex := 0; + + if not Assigned(FResumen) then + ItemsResumen := dmStock.GetItemsStockPrendasCentros; + + ViewGrid := frViewControlGridStockPrendasCentros1; +end; + +procedure TfEditorControlStockEDI.actExpandirExecute(Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorControlStockEDI.actRefrescarExecute(Sender: TObject); +begin + case PageControl1.ActivePageIndex of + 0 : begin + frViewControlGridStockPrendasCentros1.Refresh; + end; + 1 : begin + frViewControlGridStockEDI1.Refresh; + end; + 2 : begin + frViewControlGridStockEDIInventario1.Refresh + end; + end; + + inherited; + + ViewGrid.ExpandirTodo; + ViewGrid.GotoFirst; +end; + +procedure TfEditorControlStockEDI.actContraerExecute(Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +function TfEditorControlStockEDI.GetItemsDesglose: IBizStockEDI; +begin + Result := FDesglose; +end; + +function TfEditorControlStockEDI.GetItemsResumen: IBizStockPrendasCentros; +begin + Result := FResumen; +end; + +procedure TfEditorControlStockEDI.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); +begin + inherited; + PageControl1.ActivePageIndex := Item.Index; + AsignarItems; +end; + +procedure TfEditorControlStockEDI.SetItemsDesglose(const Value: IBizStockEDI); +begin + FDesglose := Value; + if Assigned(FDesglose) then + begin + ShowHourglassCursor; + try + dsDataTable.DataTable := FDesglose.DataTable; + frViewControlGridStockEDI1.Items := FDesglose; + +// if not FDesglose.DataTable.Active then +// FDesglose.DataTable.Active := True; + + actAnchoAuto.Execute; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorControlStockEDI.SetItemsResumen(const Value: IBizStockPrendasCentros); +begin + FResumen := Value; + if Assigned(FResumen) then + begin + ShowHourglassCursor; + try + dsDataTable.DataTable := FResumen.DataTable; + frViewControlGridStockPrendasCentros1.Items := FResumen; + +// if not FResumen.DataTable.Active then +// FResumen.DataTable.Active := True; + + actAnchoAuto.Execute; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorControlStockEDI.AsignarItems; +begin + inherited; + Self.Update; + + //Quitamos el filtro que hubiera + actQuitarFiltro.Execute; + + case PageControl1.ActivePageIndex of + 0 : begin + ViewGrid := frViewControlGridStockPrendasCentros1; + if not Assigned(FResumen) then + ItemsResumen := dmStock.GetItemsStockPrendasCentros; + end; + 1 : begin + ViewGrid := frViewControlGridStockEDI1; + if not Assigned(FDesglose) then + ItemsDesglose := dmStock.GetItemsStockEDI; + end; + 2 : begin + ViewGrid := frViewControlGridStockEDIInventario1; + if not Assigned(FInventario) then + ItemsInventario := dmStock.GetItemsStockEDIInventario; + end; + end; + + ViewGrid.Refresh; +end; + +function TfEditorControlStockEDI.GetItemsInventario: IBizStockEDIInventario; +begin + Result := FInventario; +end; + +procedure TfEditorControlStockEDI.SetItemsInventario(const Value: IBizStockEDIInventario); +begin + FInventario := Value; + if Assigned(FInventario) then + begin + ShowHourglassCursor; + try + dsDataTable.DataTable := FInventario.DataTable; + frViewControlGridStockEDIInventario1.Items := FInventario; + +// if not FInventario.DataTable.Active then +// FInventario.DataTable.Active := True; + + actAnchoAuto.Execute; + finally + HideHourglassCursor; + end; + end; +end; + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.ddp b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.ddp differ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.dfm new file mode 100644 index 0000000..ba48fa0 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.dfm @@ -0,0 +1,1719 @@ +inherited fEditorControlStockVARELA: TfEditorControlStockVARELA + Left = 408 + Top = 342 + Caption = 'Stock VARELA' + ClientHeight = 573 + ClientWidth = 720 + ExplicitWidth = 728 + ExplicitHeight = 607 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 720 + Caption = 'Control de stock de almac'#233'n' + ExplicitWidth = 720 + inherited Image1: TImage + Left = 693 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000002944944415478DAD5955F4853511CC7BFD7CD9C + 9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D582441B58782 + 0A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C9B685A5EEF + EEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB85C361A4D3 + B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C4A8AC2221B + 13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C579518CCCA9 + 1388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED592808E32AF + 06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B6B19E48C7C + 3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E098FB3026B2 + C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583DE0DB096837 + 30573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF91E44014E02 + 682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF814FF2A1E4 + 5B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB30BE711CD6 + FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D7847164A22 + 7BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6B9F2F30CA2 + B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED1149741F46C139F + 5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF38720B23877 + A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C9242B6A23A39F + E201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B8183CD4BDF45 + B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB431DBA95582 + F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F00A95ADA01 + 3F01A44422D9EF203E7B0000000049454E44AE426082} + ExplicitLeft = 652 + end + end + inherited TBXDock: TTBXDock + Width = 720 + ExplicitWidth = 720 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 331 + object TBXSeparatorItem16: TTBXSeparatorItem [13] + end + object TBXItem35: TTBXItem [14] + Action = actExpandir + end + object TBXItem36: TTBXItem [15] + Action = actContraer + end + object TBXItem37: TTBXItem [16] + Action = actAnchoAuto + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 720 + end + inherited tbxFiltro: TTBXToolbar + Left = 337 + DockPos = 337 + ExplicitLeft = 337 + end + end + inherited StatusBar: TStatusBar + Top = 554 + Width = 720 + ExplicitTop = 554 + ExplicitWidth = 720 + end + inline frViewControlGridStockVARELA1: TfrViewControlGridStockVARELA [3] + Left = 0 + Top = 76 + Width = 720 + Height = 478 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 76 + ExplicitWidth = 720 + ExplicitHeight = 478 + inherited cxGrid: TcxGrid + Width = 720 + Height = 418 + ExplicitWidth = 720 + ExplicitHeight = 418 + inherited cxGridView: TcxGridDBTableView + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewPRODUCTO + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = frViewControlGridStockVARELA1.cxGridViewKT + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Column = frViewControlGridStockVARELA1.cxGridViewPRODUCTO + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Column = frViewControlGridStockVARELA1.cxGridViewKT + end> + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 720 + inherited frViewParametrosColeccion1: TfrViewParametrosColeccion + inherited dxLayoutControl1: TdxLayoutControl + inherited ccbColeccion: TJvCheckedComboBox + Width = 513 + ExplicitWidth = 513 + end + end + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 399 + ExplicitWidth = 399 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + inherited TBXLabel1: TTBXLabel + Width = 720 + ExplicitWidth = 720 + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + ReportDocument.CreationDate = 39343.822301423610000000 + ReportDocument.IsCaptionAssigned = True + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited dsDataTable: TDADataSource + Left = 32 + Top = 136 + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited GridPopupMenu: TPopupMenu + Left = 64 + Top = 152 + inherited Duplicar1: TMenuItem + Visible = False + end + inherited N2: TMenuItem + Visible = False + end + end + object dsVentasTerminadas: TDADataSource + Left = 320 + Top = 232 + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.pas b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.pas new file mode 100644 index 0000000..662a600 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uEditorControlStockVARELA.pas @@ -0,0 +1,142 @@ +unit uEditorControlStockVARELA; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlBase, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, + uCustomView, uViewBase, uViewControlBase, Grids, DBGrids, pngimage, StdCtrls, + uEditorGridBase, uViewGridBase, uViewGrid, Menus, TB2ExtItems, TBXExtItems, + uBizStock, uViewControGridStockVARELA, uViewControlGrid, uDAInterfaces, + uViewParametrosCentro, uViewParametrosControlGrid, uViewParametrosColeccion, + TBXDkPanels; + +type + IEditorControlStockVARELA = interface(IEditorGridBase) + ['{E73FFD61-E345-43EF-A3D1-56B8A5D3DA8B}'] + function GetItems: IBizStockVARELA; + procedure SetItems(const Value: IBizStockVARELA); + property Items: IBizStockVARELA read GetItems write SetItems; + end; + + TfEditorControlStockVARELA = class(TfEditorGridBase, IEditorControlStockVARELA) + dsVentasTerminadas: TDADataSource; + actExpandir: TAction; + actContraer: TAction; + actAnchoAuto: TAction; + frViewControlGridStockVARELA1: TfrViewControlGridStockVARELA; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem35: TTBXItem; + TBXItem36: TTBXItem; + TBXItem37: TTBXItem; + procedure actAnchoAutoExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + private + property ViewGrid; + protected + FItems : IBizStockVARELA; + function GetItems: IBizStockVARELA; + procedure SetItems(const Value: IBizStockVARELA); + public + property Items: IBizStockVARELA read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + cxControls, uEditorUtils, DateUtils, uCustomEditor, uEditorBase; + +{$R *.dfm} + +{ TfEditorControlStockEDI } + +procedure TfEditorControlStockVARELA.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + frViewControlGridStockVARELA1.AjustarAncho; +end; + +procedure TfEditorControlStockVARELA.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); +end; + +procedure TfEditorControlStockVARELA.actImprimirExecute(Sender: TObject); +begin + frViewControlGridStockVARELA1.Print; +end; + +constructor TfEditorControlStockVARELA.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewControlGridStockVARELA1; + Self.Caption := 'Control de stock de almacén'; + JvNavPanelHeader.Caption := Self.Caption; +end; + +function TfEditorControlStockVARELA.GetItems: IBizStockVARELA; +begin + Result := FItems; +end; + +procedure TfEditorControlStockVARELA.SetItems(const Value: IBizStockVARELA); +begin + FItems := Value; + if Assigned(FItems) then + begin + dsDataTable.DataTable := FItems.DataTable; + frViewControlGridStockVARELA1.Items := FItems; + +// Se pasa a realizar la consulta bajo demanda +// if not FItems.DataTable.Active then +// FItems.DataTable.Active := True; + + actAnchoAuto.Execute; + end; +end; + +procedure TfEditorControlStockVARELA.actPrevisualizarExecute(Sender: TObject); +begin + frViewControlGridStockVARELA1.Preview; +end; + +procedure TfEditorControlStockVARELA.actRefrescarExecute(Sender: TObject); +begin + frViewControlGridStockVARELA1.Refresh; + + inherited; + + ViewGrid.ExpandirTodo; + ViewGrid.GotoFirst; +end; + +procedure TfEditorControlStockVARELA.actExpandirExecute(Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorControlStockVARELA.actContraerExecute(Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uPluginControllerStock.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uPluginControllerStock.dfm new file mode 100644 index 0000000..467f3e3 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uPluginControllerStock.dfm @@ -0,0 +1,126 @@ +object ModuleStock: TModuleStock + OldCreateOrder = True + Description = 'Control de stock' + ModuleMenu = MainMenu + ModuleName = 'Control de stock' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.6' + Left = 701 + Top = 547 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000002B14944415478DA + B5955B48145118C7FFB30B65F89219452F1148588AB60F5A5B123E58ED6E6896 + 1015DB4314515426B8043E54A25DB044D844CB2EB6661962B5586EE9166B6D58 + A829AE6D7941B3EC8658544850BA33679A736C366FEBCEAAFDE1F0CDF966CEEF + 370387399C288AA0E1380EBE52B40BE2D8DEFE12F85C203319579E349CE37452 + A919FB70BD4B82E5148EEAB596A7A2AC8AC098A41A0F07D1AF4A13ED130944CD + F6D1A0A28C830CFEB3AF13D9A67C6FFF78DE61BC7952C02439A566888207441A + B4DE3C99897D1691F329B036C7B279FFAD950CFEE5B51DBEF2D96D63126D7A23 + 9B877569D1E222FE053B36C6A2E07A0D845A03FC25D8E08031792DE292D35064 + B8A85C404325234337828A0E956AF85AC5317871850357CBEE052E982C3C4FE0 + 110456AF591FCFAC40860F3C7762C061833D5C3F7382218F00CFE010FACCD918 + ECEEC0BCB316DCB6D74F5F4088085E200CFE21D50822ADA370E96350F9689A82 + 91F0773BF510D56ACCBF606570DAB7D5364E5D30F6CD7FB7B76241F95390A060 + D6A7A3C6D914B8A0DF52888F678E62C9652B66C7C4A12F2F13DF8BCD5878C301 + 2E2CC20BF7F0021CCF5AA62028BB82DE237B1114B102A1A613F8B46713E69A4E + 618EF180173E38C43341DD0BB73241F456332A5D6BB04D1FC300BDE9BBF1E34E + 29D421A1502F5A8C909287E0A59F28DBA612581E0D2D6DCA045129B9B8EB8EC7 + E6040D83FCEAE942AF2E8ADD0FB954059566F538389D37BB3B940922934FA3AA + 6D1D12E3A3A5851240FA8AAF596998B57E8B4F38AD2FDBBB94092212B360EB34 + 401F17C9E0FC5F084F884F38DD65AF3ABB950996198EE141771212B4CB5171BF + CEEFFF68641409C23764A0FA6D0A72F32D01C1E5F8152C4D30FD3B9D08EF3DA5 + 862B3FEA5ABE479F93F3ED7DD3E482B0F843E8719E9FD2DBCB994CA073B9C61F + FA8146A3C1C487FEFFCA1F9AC3C3EF68FFCFAC0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actStockEdi: TAction + Category = 'Stock' + Caption = 'Control de stock de centros' + ImageIndex = 0 + OnExecute = actStockEdiExecute + end + object actStockVarela: TAction + Category = 'Stock' + Caption = 'Control de stock de almac'#233'n' + ImageIndex = 0 + OnExecute = actStockVarelaExecute + end + end + object MainMenu: TMainMenu + Tag = 1000 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 8000 + Caption = '&Stock' + GroupIndex = 1 + ImageIndex = 4 + OnClick = actStockEdiExecute + object Stock1: TMenuItem + Tag = 100 + Action = actStockEdi + end + object Stock2: TMenuItem + Tag = 500 + Action = actStockVarela + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001D34944415478DA + 63FCFFFF3F03232323033A9891C0F01F999FB180014311582F889835B92D58FF + 5FF51A64C90B171818123AA682D965D1D90C51BEA89A2F32B586A4E556AD051B + 707222E37F8388A970C90515D960CD208D2050D79BC7D0543C89A16BE954867F + 7F7E30FCFDFD93A13AA58A61E29EFF8C7003EEA99E022BFEB4DA0CACF9CB8B9B + 604D20CDDFDF3E607879632FC3A2755F192C8A4E3128DFB66058BAF91FA60191 + 5EA60C33131919AE3D66C00A84BF33306CE0CD6498E13913B701D8C0CF5F7F18 + 9E4DEF65F8F1E23943F4F95FA41900D2FCB0BE90E1F7E7CF0C7C351318FC13AA + 883700A6F9FB8DAB0C42535733FCFAF39F2134AD0EBB010FD44E33847B9A30DC + 2D4E65F87CF20883C68E330C2F96CC66783DBD87416CD521863F9C7C60036372 + 9AB01BF050FD0C43988731C3E7534719AE0639300804C5327C58BB984178F20A + 0626137BB0E61F409C52D486DD80479A671942DD8CC00AEF1526813573798731 + F0D44F856B06D1D9155DD80D78A2758EC1C75E17ACE8F3CDEB0CAF2734327097 + 7531FC063A1DA619848BEAFAB01BF054FB3C8383A91A5C21320619F0F7EF3F70 + C0E234E0B9CE0586A6EE990CC400AC06A8BB9533DCDAD54D9401208062002837 + 5EDD889A1B09016D7F486E0400CE5079F0BCD676180000000049454E44AE4260 + 82} + 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/2.1.0/Source/Modulos/Stock/Cliente/uPluginControllerStock.pas b/2.1.0/Source/Modulos/Stock/Cliente/uPluginControllerStock.pas new file mode 100644 index 0000000..17b42d8 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uPluginControllerStock.pas @@ -0,0 +1,97 @@ +unit uPluginControllerStock; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCStock = interface(IInterface) + ['{52C5C467-6FBE-476C-BE2A-A97D2752526C}'] + end; + + TModuleStock = class(TModuleController, IMCStock) + actStockEdi: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Stock1: TMenuItem; + SmallImages: TPngImageList; + actStockVarela: TAction; + Stock2: TMenuItem; + procedure actStockEdiExecute(Sender: TObject); + procedure actStockVarelaExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uEditorControlesBase, + uDataModuleStock, uEditorControlStockEDI, uBizStock, cxControls, + uEditorControlStockVARELA; + +function GetModule : TModuleController; +begin + Result := TModuleStock.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleStock.actStockEdiExecute(Sender: TObject); +var + aControl: IBizStockEDI; + aObj: IEditorControlStockEDI; +begin + //aControl := dmStock.GetItemsStockEDI; + aObj := TfEditorControlStockEDI.Create(Application); + + try + with aObj do + begin + //Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +procedure TModuleStock.actStockVarelaExecute(Sender: TObject); +var + aControl: IBizStockVARELA; + aObj: IEditorControlStockVARELA; +begin + aControl := dmStock.GetItemsStockVARELA; + aObj := TfEditorControlStockVARELA.Create(Application); + + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleStock); + +finalization + UnRegisterModuleClass(TModuleStock); + +end. diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDI.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDI.dfm new file mode 100644 index 0000000..2edfe08 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDI.dfm @@ -0,0 +1,694 @@ +inherited frViewControlGridStockEDI: TfrViewControlGridStockEDI + Width = 553 + Height = 477 + ExplicitWidth = 553 + ExplicitHeight = 477 + inherited cxGrid: TcxGrid + Top = 60 + Width = 553 + Height = 417 + ExplicitTop = 60 + ExplicitWidth = 553 + ExplicitHeight = 417 + inherited cxGridView: TcxGridDBTableView + FilterBox.Visible = fvNever + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewE38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewE40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewE42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewE44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewE46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewE48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewTE + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewS38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewS40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewS42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewS44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewS46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewS48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewTS + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewKT + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewE38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewE40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewE42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewE44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewE46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewE48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewTE + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewS38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewS40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewS42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewS44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewS46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewS48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewTS + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewKT + end> + OptionsView.CellAutoHeight = False + OptionsView.FooterAutoHeight = False + OptionsView.GridLineColor = clDefault + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfAlwaysVisible + OptionsView.GroupRowStyle = grsOffice11 + Preview.AutoHeight = False + Styles.Footer = cxStyleEven + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCENTRO: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'FILIAL' + Visible = False + GroupIndex = 1 + end + object cxGridViewCOLECCION: TcxGridDBColumn + Caption = 'Colecci'#243'n' + DataBinding.FieldName = 'COLECCION' + Visible = False + GroupIndex = 0 + end + object cxGridViewCODIGO: TcxGridDBColumn + Caption = 'C'#243'digo' + DataBinding.FieldName = 'CODIGO' + end + object cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + end + object cxGridViewTIPO_PRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO_PRODUCTO' + Visible = False + end + object cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'GRUPO_PRODUCTO' + Visible = False + end + object cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + end + object cxGridViewE38: TcxGridDBColumn + Caption = 'E38/S' + DataBinding.FieldName = 'E38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewE40: TcxGridDBColumn + Caption = 'E40/M' + DataBinding.FieldName = 'E40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewE42: TcxGridDBColumn + Caption = 'E42/L' + DataBinding.FieldName = 'E42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewE44: TcxGridDBColumn + Caption = 'E44/XL' + DataBinding.FieldName = 'E44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewE46: TcxGridDBColumn + DataBinding.FieldName = 'E46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewE48: TcxGridDBColumn + DataBinding.FieldName = 'E48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewTE: TcxGridDBColumn + DataBinding.FieldName = 'TE' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.OnGetContentStyle = cxGridViewTEStylesGetContentStyle + end + object cxGridViewS38: TcxGridDBColumn + Caption = 'S38/S' + DataBinding.FieldName = 'S38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewS40: TcxGridDBColumn + Caption = 'S40/M' + DataBinding.FieldName = 'S40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewS42: TcxGridDBColumn + Caption = 'S42/L' + DataBinding.FieldName = 'S42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewS44: TcxGridDBColumn + Caption = 'S44/XL' + DataBinding.FieldName = 'S44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewS46: TcxGridDBColumn + DataBinding.FieldName = 'S46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewS48: TcxGridDBColumn + DataBinding.FieldName = 'S48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewTS: TcxGridDBColumn + DataBinding.FieldName = 'TS' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK38: TcxGridDBColumn + Caption = 'K38/S' + DataBinding.FieldName = 'K38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK40: TcxGridDBColumn + Caption = 'K40/M' + DataBinding.FieldName = 'K40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK42: TcxGridDBColumn + Caption = 'K42/L' + DataBinding.FieldName = 'K42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK44: TcxGridDBColumn + Caption = 'K44/XL' + DataBinding.FieldName = 'K44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK46: TcxGridDBColumn + DataBinding.FieldName = 'K46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK48: TcxGridDBColumn + DataBinding.FieldName = 'K48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewKT: TcxGridDBColumn + DataBinding.FieldName = 'KT' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridViewE38GetDataText + HeaderAlignmentHorz = taRightJustify + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosColeccion1: TfrViewParametrosColeccion + Left = 0 + Top = 19 + Width = 321 + Height = 41 + Align = alLeft + AutoSize = True + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 321 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 321 + ExplicitWidth = 321 + inherited ccbColeccion: TJvCheckedComboBox + Width = 512 + ExplicitWidth = 512 + end + end + end + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 321 + Top = 19 + Width = 400 + Height = 41 + Align = alLeft + AutoSize = True + TabOrder = 1 + ReadOnly = False + ExplicitLeft = 321 + ExplicitTop = 19 + ExplicitWidth = 400 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 400 + ExplicitWidth = 400 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object TBXAlignmentPanel1: TTBXAlignmentPanel + Left = 721 + Top = 19 + Width = 350 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 2 + object TBXButton1: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + object TBXLabel2: TTBXLabel + Left = 0 + Top = 0 + Width = 553 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + end + inherited dsDataSource: TDADataSource + Left = 72 + Top = 88 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + 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.PageFooter.RightTitle.Strings = ( + '[Page #] de [Total Pages]') + PrinterPage.PageHeader.LeftTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.Caption = 'Venta mensual' + ReportDocument.CreationDate = 39361.439008969910000000 + ReportTitle.Text = 'Venta mensual' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = 10 + Font.Name = 'Tahoma' + Font.Style = [] + OptionsOnEveryPage.Footers = False + OptionsSize.AutoWidth = True + OptionsView.Caption = False + OptionsView.FilterBar = False + Styles.Content = cxStyleContentInforme + Styles.Footer = cxStyleFooterInforme + Styles.Group = cxStyleGroupInforme + Styles.Header = cxStyleHeaderInforme + Styles.Selection = cxStyleSelectionInforme + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + inherited cxStyleEven: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + object cxStyleEntrada: TcxStyle + AssignedValues = [svTextColor] + TextColor = clNavy + end + object cxStyleSalida: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGreen + end + object cxStyleTotales: TcxStyle + AssignedValues = [svColor, svFont] + Color = 13619151 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + end + object cxEditRepository1: TcxEditRepository + Left = 32 + Top = 88 + object cxEditDia: TcxEditRepositoryTextItem + Properties.Alignment.Horz = taRightJustify + end + object cxEditImporte: TcxEditRepositoryCurrencyItem + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = ',0.## '#8364';-,0.## '#8364 + Properties.UseThousandSeparator = True + end + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 296 + Top = 168 + object cxStyleContentInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + 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 = -9 + 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 = -11 + 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 = -9 + 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 = -9 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDI.pas b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDI.pas new file mode 100644 index 0000000..3cdbade --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDI.pas @@ -0,0 +1,270 @@ +unit uViewControGridStockEDI; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls, cxSpinEdit, uViewGrid, cxMemo, + cxEditRepositoryItems, uDataModuleStock, uDAInterfaces, TBXDkPanels, + uViewParametrosCentro, uCustomView, uViewBase, uViewParametrosControlGrid, + uViewParametrosColeccion, TB2Dock, uBizStock; + +type + IViewControlGridStockEDI = interface(IViewGrid) + ['{9342442A-28CD-4EA9-95C3-79B1B5302BCE}'] + function GetItems: IBizStockEDI; + procedure SetItems(const Value: IBizStockEDI); + property Items: IBizStockEDI read GetItems write SetItems; + end; + + TfrViewControlGridStockEDI = class(TfrViewGrid, IViewControlGridStockEDI) + dxComponentPrinterLink1: TdxGridReportLink; + cxEditRepository1: TcxEditRepository; + cxEditDia: TcxEditRepositoryTextItem; + cxEditImporte: TcxEditRepositoryCurrencyItem; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewTIPO_PRODUCTO: TcxGridDBColumn; + cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn; + cxGridViewCOLECCION: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewE38: TcxGridDBColumn; + cxGridViewE40: TcxGridDBColumn; + cxGridViewE42: TcxGridDBColumn; + cxGridViewE44: TcxGridDBColumn; + cxGridViewE46: TcxGridDBColumn; + cxGridViewE48: TcxGridDBColumn; + cxGridViewTE: TcxGridDBColumn; + cxGridViewS38: TcxGridDBColumn; + cxGridViewS40: TcxGridDBColumn; + cxGridViewS42: TcxGridDBColumn; + cxGridViewS44: TcxGridDBColumn; + cxGridViewS46: TcxGridDBColumn; + cxGridViewS48: TcxGridDBColumn; + cxGridViewTS: TcxGridDBColumn; + cxGridViewK38: TcxGridDBColumn; + cxGridViewK40: TcxGridDBColumn; + cxGridViewK42: TcxGridDBColumn; + cxGridViewK44: TcxGridDBColumn; + cxGridViewK46: TcxGridDBColumn; + cxGridViewK48: TcxGridDBColumn; + cxGridViewKT: TcxGridDBColumn; + cxStyleEntrada: TcxStyle; + cxStyleSalida: TcxStyle; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxStyleTotales: TcxStyle; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosColeccion1: TfrViewParametrosColeccion; + frViewParametrosCentro1: TfrViewParametrosCentro; + TBXAlignmentPanel1: TTBXAlignmentPanel; + TBXButton1: TTBXButton; + TBXLabel2: TTBXLabel; + procedure cxGridViewKTCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewE38GetDataText(Sender: TcxCustomGridTableItem; + ARecordIndex: Integer; var AText: String); + procedure cxGridViewTEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + protected + FItems : IBizStockEDI; + function GetItems: IBizStockEDI; + procedure SetItems(const Value: IBizStockEDI); + + public + property Items: IBizStockEDI read GetItems write SetItems; + procedure Preview; override; + procedure Print; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Refresh; + + end; + +implementation +{$R *.dfm} + +uses uViewGridBase; + +{ TfrViewControlGridResumenVentas } + +procedure TfrViewControlGridStockEDI.Preview; +begin + inherited; + dxComponentPrinterLink1.ReportTitle.Text := 'Control de stock de colección ' + frViewParametrosColeccion1.ccbColeccion.Text + ' en centro(s) ' + frViewParametrosCentro1.ccbCentro.Text; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewControlGridStockEDI.Print; +begin + inherited; + dxComponentPrinterLink1.ReportTitle.Text := 'Control de stock de colección ' + frViewParametrosColeccion1.ccbColeccion.Text + ' en centro(s) ' + frViewParametrosCentro1.ccbCentro.Text; + dxComponentPrinterLink1.Print(True, Nil); +end; + +procedure TfrViewControlGridStockEDI.cxGridViewKTCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + inherited; + if not VarIsNull(AViewInfo.Value) then + if Pos('-', AViewInfo.Value) > 0 then + ACanvas.Canvas.Font.Color := $000000CC; +end; + +constructor TfrViewControlGridStockEDI.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosColeccion1.Refresh; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewControlGridStockEDI.SetItems(const Value: IBizStockEDI); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewControlGridStockEDI.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + // + if Assigned(AItem) then + if (AItem.Index = cxGridViewTE.Index) or + (AItem.Index = cxGridViewTS.Index) or + (AItem.Index = cxGridViewKT.Index) then + AStyle := cxStyleTotales; +end; + +procedure TfrViewControlGridStockEDI.cxGridViewE38GetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +begin + inherited; + if AText = '0' then + AText := ''; +end; + +procedure TfrViewControlGridStockEDI.cxGridViewTEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + AStyle := cxStyleTotales; +end; + +destructor TfrViewControlGridStockEDI.Destroy; +begin + FItems := Nil; + inherited; +end; + +procedure TfrViewControlGridStockEDI.Refresh; +var + AColeccionesList : TStringList; + ACentrosList : TStringList; + AWhereColeccion : String; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + AColeccionesList := Nil; + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + AColeccionesList := frViewParametrosColeccion1.ColeccionesSeleccionadas; + ACentrosList := frViewParametrosCentro1.CodigoCentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(AColeccionesList) then + begin + AWhereColeccion := ''; + if AColeccionesList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos una colección en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereColeccion := AWhereColeccion + ' COLECCION in ('; + for i := 0 to AColeccionesList.Count - 1 do + begin + if i > 0 then + AWhereColeccion := AWhereColeccion + ', '; + AWhereColeccion := AWhereColeccion + '''' + AColeccionesList[i] + ''''; + end; + AWhereColeccion := AWhereColeccion + ')'; + end; + end; + + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' CENTRO in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + AWhereCentro := AWhereCentro + ', '; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + end; + end; + + AWhere := ''; + if AWhereColeccion <> '' then + AWhere := AWhere + AWhereColeccion; + + if AWhereCentro <> '' then + begin + if AWhere <> '' then + AWhere := AWhere + ' AND '; + AWhere := AWhere + AWhereCentro; + end; + + Items.DataTable.Where.Clear; + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(AColeccionesList); + FreeAndNIL(ACentrosList); + end; +end; + +function TfrViewControlGridStockEDI.GetItems: IBizStockEDI; +begin + Result := FItems; +end; + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDIInventario.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDIInventario.dfm new file mode 100644 index 0000000..459541b --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDIInventario.dfm @@ -0,0 +1,694 @@ +inherited frViewControlGridStockEDIInventario: TfrViewControlGridStockEDIInventario + Width = 553 + Height = 477 + ExplicitWidth = 553 + ExplicitHeight = 477 + inherited cxGrid: TcxGrid + Top = 60 + Width = 553 + Height = 417 + ExplicitTop = 60 + ExplicitWidth = 553 + ExplicitHeight = 417 + inherited cxGridView: TcxGridDBTableView + FilterBox.Visible = fvNever + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewI38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewI40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewI42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewI44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewI46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewI48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewTI + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewTK + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewD38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewD40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewD42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewD44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewD46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewD48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewDT + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewI38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewI40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewI42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewI44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewI46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewI48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewTI + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewTK + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewD38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewD40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewD42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewD44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewD46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewD48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewDT + end> + OptionsView.CellAutoHeight = False + OptionsView.FooterAutoHeight = False + OptionsView.GridLineColor = clDefault + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfAlwaysVisible + OptionsView.GroupRowStyle = grsOffice11 + Preview.AutoHeight = False + Styles.Footer = cxStyleEven + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewCENTRO: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'FILIAL' + Visible = False + GroupIndex = 1 + end + object cxGridViewCOLECCION: TcxGridDBColumn + Caption = 'Colecci'#243'n' + DataBinding.FieldName = 'COLECCION' + Visible = False + GroupIndex = 0 + end + object cxGridViewCODIGO: TcxGridDBColumn + Caption = 'C'#243'digo' + DataBinding.FieldName = 'CODIGO' + end + object cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + end + object cxGridViewTIPO_PRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO_PRODUCTO' + Visible = False + end + object cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'GRUPO_PRODUCTO' + Visible = False + end + object cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + end + object cxGridViewI38: TcxGridDBColumn + Caption = 'I38/S' + DataBinding.FieldName = 'I38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewI40: TcxGridDBColumn + Caption = 'I40/M' + DataBinding.FieldName = 'I40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewI42: TcxGridDBColumn + Caption = 'I42/L' + DataBinding.FieldName = 'I42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewI44: TcxGridDBColumn + Caption = 'I44/XL' + DataBinding.FieldName = 'I44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewI46: TcxGridDBColumn + DataBinding.FieldName = 'I46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewI48: TcxGridDBColumn + DataBinding.FieldName = 'I48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleEntrada + end + object cxGridViewTI: TcxGridDBColumn + DataBinding.FieldName = 'TI' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.OnGetContentStyle = cxGridViewTEStylesGetContentStyle + end + object cxGridViewK38: TcxGridDBColumn + Caption = 'K38/S' + DataBinding.FieldName = 'K38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewK40: TcxGridDBColumn + Caption = 'K40/M' + DataBinding.FieldName = 'K40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewK42: TcxGridDBColumn + Caption = 'K42/L' + DataBinding.FieldName = 'K42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewK44: TcxGridDBColumn + Caption = 'K44/XL' + DataBinding.FieldName = 'K44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewK46: TcxGridDBColumn + DataBinding.FieldName = 'K46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewK48: TcxGridDBColumn + DataBinding.FieldName = 'K48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.Content = cxStyleSalida + end + object cxGridViewTK: TcxGridDBColumn + DataBinding.FieldName = 'TK' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewD38: TcxGridDBColumn + Caption = 'D38/S' + DataBinding.FieldName = 'D38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewD40: TcxGridDBColumn + Caption = 'D40/M' + DataBinding.FieldName = 'D40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewD42: TcxGridDBColumn + Caption = 'D42/L' + DataBinding.FieldName = 'D42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewD44: TcxGridDBColumn + Caption = 'D44/XL' + DataBinding.FieldName = 'D44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewD46: TcxGridDBColumn + DataBinding.FieldName = 'D46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewD48: TcxGridDBColumn + DataBinding.FieldName = 'D48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewDT: TcxGridDBColumn + DataBinding.FieldName = 'DT' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + OnCustomDrawCell = cxGridViewDTCustomDrawCell + OnGetDataText = cxGridViewI38GetDataText + HeaderAlignmentHorz = taRightJustify + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosColeccion1: TfrViewParametrosColeccion + Left = 0 + Top = 19 + Width = 321 + Height = 41 + Align = alLeft + AutoSize = True + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 321 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 321 + ExplicitWidth = 321 + inherited ccbColeccion: TJvCheckedComboBox + Width = 512 + ExplicitWidth = 512 + end + end + end + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 321 + Top = 19 + Width = 400 + Height = 41 + Align = alLeft + AutoSize = True + TabOrder = 1 + ReadOnly = False + ExplicitLeft = 321 + ExplicitTop = 19 + ExplicitWidth = 400 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 400 + ExplicitWidth = 400 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 721 + Top = 19 + Width = 350 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 2 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 553 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + end + inherited dsDataSource: TDADataSource + Left = 72 + Top = 88 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + 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.PageFooter.RightTitle.Strings = ( + '[Page #] de [Total Pages]') + PrinterPage.PageHeader.LeftTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.Caption = 'Venta mensual' + ReportDocument.CreationDate = 39361.438243449080000000 + ReportTitle.Text = 'Venta mensual' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = 10 + Font.Name = 'Tahoma' + Font.Style = [] + OptionsOnEveryPage.Footers = False + OptionsSize.AutoWidth = True + OptionsView.Caption = False + OptionsView.FilterBar = False + Styles.Content = cxStyleContentInforme + Styles.Footer = cxStyleFooterInforme + Styles.Group = cxStyleGroupInforme + Styles.Header = cxStyleHeaderInforme + Styles.Selection = cxStyleSelectionInforme + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + inherited cxStyleEven: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + object cxStyleEntrada: TcxStyle + AssignedValues = [svTextColor] + TextColor = clNavy + end + object cxStyleSalida: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGreen + end + object cxStyleTotales: TcxStyle + AssignedValues = [svColor, svFont] + Color = 13619151 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + end + object cxEditRepository1: TcxEditRepository + Left = 32 + Top = 88 + object cxEditDia: TcxEditRepositoryTextItem + Properties.Alignment.Horz = taRightJustify + end + object cxEditImporte: TcxEditRepositoryCurrencyItem + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = ',0.## '#8364';-,0.## '#8364 + Properties.UseThousandSeparator = True + end + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 296 + Top = 168 + object cxStyleContentInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + 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 = -9 + 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 = -11 + 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 = -9 + 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 = -9 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDIInventario.pas b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDIInventario.pas new file mode 100644 index 0000000..7ed488e --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockEDIInventario.pas @@ -0,0 +1,271 @@ +unit uViewControGridStockEDIInventario; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls, cxSpinEdit, uViewGrid, cxMemo, + cxEditRepositoryItems, uDataModuleStock, uDAInterfaces, TBXDkPanels, + uViewParametrosCentro, uCustomView, uViewBase, uViewParametrosControlGrid, + uViewParametrosColeccion, TB2Dock, uBizStock; + +type + IViewControlGridStockEDIInventario = interface(IViewGrid) + ['{38BB8BB9-E15D-4D49-970E-14418C4EB1E4}'] + function GetItems: IBizStockEDIInventario; + procedure SetItems(const Value: IBizStockEDIInventario); + property Items: IBizStockEDIInventario read GetItems write SetItems; + end; + + TfrViewControlGridStockEDIInventario = class(TfrViewGrid, IViewControlGridStockEDIInventario) + dxComponentPrinterLink1: TdxGridReportLink; + cxEditRepository1: TcxEditRepository; + cxEditDia: TcxEditRepositoryTextItem; + cxEditImporte: TcxEditRepositoryCurrencyItem; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewTIPO_PRODUCTO: TcxGridDBColumn; + cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn; + cxGridViewCOLECCION: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewI38: TcxGridDBColumn; + cxGridViewI40: TcxGridDBColumn; + cxGridViewI42: TcxGridDBColumn; + cxGridViewI44: TcxGridDBColumn; + cxGridViewI46: TcxGridDBColumn; + cxGridViewI48: TcxGridDBColumn; + cxGridViewTI: TcxGridDBColumn; + cxGridViewK38: TcxGridDBColumn; + cxGridViewK40: TcxGridDBColumn; + cxGridViewK42: TcxGridDBColumn; + cxGridViewK44: TcxGridDBColumn; + cxGridViewK46: TcxGridDBColumn; + cxGridViewK48: TcxGridDBColumn; + cxGridViewTK: TcxGridDBColumn; + cxGridViewD38: TcxGridDBColumn; + cxGridViewD40: TcxGridDBColumn; + cxGridViewD42: TcxGridDBColumn; + cxGridViewD44: TcxGridDBColumn; + cxGridViewD46: TcxGridDBColumn; + cxGridViewD48: TcxGridDBColumn; + cxGridViewDT: TcxGridDBColumn; + cxStyleEntrada: TcxStyle; + cxStyleSalida: TcxStyle; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxStyleTotales: TcxStyle; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosColeccion1: TfrViewParametrosColeccion; + frViewParametrosCentro1: TfrViewParametrosCentro; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + TBXLabel1: TTBXLabel; + procedure cxGridViewDTCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewI38GetDataText(Sender: TcxCustomGridTableItem; + ARecordIndex: Integer; var AText: String); + procedure cxGridViewTEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + protected + FItems : IBizStockEDIInventario; + function GetItems: IBizStockEDIInventario; + procedure SetItems(const Value: IBizStockEDIInventario); + + public + property Items: IBizStockEDIInventario read GetItems write SetItems; + procedure Preview; override; + procedure Print; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Refresh; + end; + +implementation +{$R *.dfm} + +uses + uViewGridBase; + +{ TfrViewControlGridResumenVentas } + +procedure TfrViewControlGridStockEDIInventario.Preview; +begin + inherited; + dxComponentPrinterLink1.ReportTitle.Text := 'Diferencias con último inventario de colección ' + frViewParametrosColeccion1.ccbColeccion.Text + ' en centro(s) ' + frViewParametrosCentro1.ccbCentro.Text; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewControlGridStockEDIInventario.Print; +begin + inherited; + dxComponentPrinterLink1.ReportTitle.Text := 'Diferencias con último inventario de colección ' + frViewParametrosColeccion1.ccbColeccion.Text + ' en centro(s) ' + frViewParametrosCentro1.ccbCentro.Text; + dxComponentPrinterLink1.Print(True, Nil); +end; + +procedure TfrViewControlGridStockEDIInventario.cxGridViewDTCustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + inherited; + if not VarIsNull(AViewInfo.Value) then + if Pos('-', AViewInfo.Value) > 0 then + ACanvas.Canvas.Font.Color := $000000CC; +end; + +constructor TfrViewControlGridStockEDIInventario.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosColeccion1.Refresh; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewControlGridStockEDIInventario.SetItems(const Value: IBizStockEDIInventario); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewControlGridStockEDIInventario.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + // + if Assigned(AItem) then + if (AItem.Index = cxGridViewTI.Index) or + (AItem.Index = cxGridViewTK.Index) or + (AItem.Index = cxGridViewDT.Index) then + AStyle := cxStyleTotales; +end; + +procedure TfrViewControlGridStockEDIInventario.cxGridViewI38GetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +begin + inherited; + if AText = '0' then + AText := ''; +end; + +procedure TfrViewControlGridStockEDIInventario.cxGridViewTEStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + AStyle := cxStyleTotales; +end; + +destructor TfrViewControlGridStockEDIInventario.Destroy; +begin + FItems := Nil; + inherited; +end; + +procedure TfrViewControlGridStockEDIInventario.Refresh; +var + AColeccionesList : TStringList; + ACentrosList : TStringList; + AWhereColeccion : String; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + AColeccionesList := Nil; + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + AColeccionesList := frViewParametrosColeccion1.ColeccionesSeleccionadas; + ACentrosList := frViewParametrosCentro1.CodigoCentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(AColeccionesList) then + begin + AWhereColeccion := ''; + if AColeccionesList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos una colección en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereColeccion := AWhereColeccion + ' COLECCION in ('; + for i := 0 to AColeccionesList.Count - 1 do + begin + if i > 0 then + AWhereColeccion := AWhereColeccion + ', '; + AWhereColeccion := AWhereColeccion + '''' + AColeccionesList[i] + ''''; + end; + AWhereColeccion := AWhereColeccion + ')'; + end; + end; + + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' CENTRO in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + AWhereCentro := AWhereCentro + ', '; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + end; + end; + + AWhere := ''; + if AWhereColeccion <> '' then + AWhere := AWhere + AWhereColeccion; + + if AWhereCentro <> '' then + begin + if AWhere <> '' then + AWhere := AWhere + ' AND '; + AWhere := AWhere + AWhereCentro; + end; + + + Items.DataTable.Where.Clear; + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(AColeccionesList); + FreeAndNIL(ACentrosList); + end; +end; + +function TfrViewControlGridStockEDIInventario.GetItems: IBizStockEDIInventario; +begin + Result := FItems; +end; + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockPrendasCentros.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockPrendasCentros.dfm new file mode 100644 index 0000000..06277a7 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockPrendasCentros.dfm @@ -0,0 +1,404 @@ +inherited frViewControlGridStockPrendasCentros: TfrViewControlGridStockPrendasCentros + Width = 621 + Height = 459 + ExplicitWidth = 621 + ExplicitHeight = 459 + inherited cxGrid: TcxGrid + Top = 60 + Width = 621 + Height = 399 + ExplicitTop = 60 + ExplicitWidth = 621 + ExplicitHeight = 399 + inherited cxGridView: TcxGridDBTableView + FilterBox.Visible = fvNever + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Column = cxGridViewPRODUCTO + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridView38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridView40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridView42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridView44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridView46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridView48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewTOTAL + end> + OptionsView.GridLineColor = clDefault + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfAlwaysVisible + OptionsView.GroupRowStyle = grsOffice11 + Preview.AutoHeight = False + Styles.Footer = cxStyleEven + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewPRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'PRODUCTO' + end + object cxGridViewTIPO_PRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO_PRODUCTO' + Visible = False + end + object cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'GRUPO_PRODUCTO' + Visible = False + end + object cxGridViewCOLECCION: TcxGridDBColumn + DataBinding.FieldName = 'COLECCION' + Visible = False + end + object cxGridViewCOLOR: TcxGridDBColumn + DataBinding.FieldName = 'COLOR' + end + object cxGridView38: TcxGridDBColumn + Caption = 'T38/S' + DataBinding.FieldName = 'T38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridView40: TcxGridDBColumn + Caption = 'T40/M' + DataBinding.FieldName = 'T40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridView42: TcxGridDBColumn + Caption = 'T42/L' + DataBinding.FieldName = 'T42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridView44: TcxGridDBColumn + Caption = 'T44/XL' + DataBinding.FieldName = 'T44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridView46: TcxGridDBColumn + DataBinding.FieldName = 'T46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridView48: TcxGridDBColumn + DataBinding.FieldName = 'T48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTOTAL: TcxGridDBColumn + DataBinding.FieldName = 'TOTAL' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,###' + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridView38GetDataText + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + Styles.OnGetContentStyle = cxGridViewCOLUMN7StylesGetContentStyle + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [] + TabOrder = 1 + inline frViewParametrosColeccion1: TfrViewParametrosColeccion + Left = 0 + Top = 19 + Width = 321 + Height = 41 + Align = alLeft + AutoSize = True + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 321 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 321 + ExplicitWidth = 321 + inherited ccbColeccion: TJvCheckedComboBox + Width = 512 + ExplicitWidth = 512 + end + end + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 321 + Top = 19 + Width = 300 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 1 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 621 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + end + inherited dsDataSource: TDADataSource + Left = 24 + Top = 120 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint, peoReportDesign] + Left = 184 + Top = 120 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + 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.PageFooter.RightTitle.Strings = ( + '[Page #] de [Total Pages]') + PrinterPage.PageHeader.LeftTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39361.401792893520000000 + ReportDocument.IsCaptionAssigned = True + ReportTitle.AdjustOnReportScale = True + ReportTitle.Text = 'Venta mensual' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = 10 + Font.Name = 'Tahoma' + Font.Style = [] + OptionsFormatting.UseNativeStyles = True + OptionsSize.AutoWidth = True + OptionsView.Caption = False + OptionsView.FilterBar = False + Styles.Content = cxStyleContentInforme + Styles.Footer = cxStyleFooterInforme + Styles.Group = cxStyleGroupInforme + Styles.Header = cxStyleHeaderInforme + SupportedCustomDraw = True + BuiltInReportLink = True + end + end + inherited dxPSEngineController1: TdxPSEngineController + Left = 96 + Top = 104 + end + inherited cxStyleRepository1: TcxStyleRepository + inherited cxStyleEven: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + object cxStyleEntrada: TcxStyle + AssignedValues = [svTextColor] + TextColor = clNavy + end + object cxStyleSalida: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGreen + end + object cxStyleTotales: TcxStyle + AssignedValues = [svColor, svFont] + Color = 13619151 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 296 + Top = 168 + object cxStyleContentInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + 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 = -9 + 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 = -11 + 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 = -9 + 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 = -9 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockPrendasCentros.pas b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockPrendasCentros.pas new file mode 100644 index 0000000..a5b131f --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockPrendasCentros.pas @@ -0,0 +1,208 @@ +unit uViewControGridStockPrendasCentros; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls, cxSpinEdit, uViewGrid, cxMemo, + cxEditRepositoryItems, uDataModuleStock, uCustomView, uViewBase, + uViewParametrosControlGrid, Grids, DBGrids, uDAInterfaces, TBXDkPanels, + uViewParametrosCentro, uViewParametrosColeccion, TB2Dock, uBizStock; + +type + IViewControlGridStockPrendasCentros = interface(IViewGrid) + ['{E6251B25-10FE-4D0C-94CD-0E554F88B54D}'] + function GetItems: IBizStockPrendasCentros; + procedure SetItems(const Value: IBizStockPrendasCentros); + property Items: IBizStockPrendasCentros read GetItems write SetItems; + end; + + TfrViewControlGridStockPrendasCentros = class(TfrViewGrid, IViewControlGridStockPrendasCentros) + dxComponentPrinterLink1: TdxGridReportLink; + cxStyleEntrada: TcxStyle; + cxStyleSalida: TcxStyle; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxStyleTotales: TcxStyle; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewTIPO_PRODUCTO: TcxGridDBColumn; + cxGridViewGRUPO_PRODUCTO: TcxGridDBColumn; + cxGridViewCOLECCION: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridView38: TcxGridDBColumn; + cxGridView40: TcxGridDBColumn; + cxGridView42: TcxGridDBColumn; + cxGridView44: TcxGridDBColumn; + cxGridView46: TcxGridDBColumn; + cxGridView48: TcxGridDBColumn; + cxGridViewTOTAL: TcxGridDBColumn; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosColeccion1: TfrViewParametrosColeccion; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + TBXLabel1: TTBXLabel; + procedure cxGridViewKTCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure cxGridViewCOLUMN7StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridView38GetDataText(Sender: TcxCustomGridTableItem; ARecordIndex: Integer; var AText: String); + protected + FItems : IBizStockPrendasCentros; + function GetFocusedView : TcxGridDBTableView; override; + function GetItems: IBizStockPrendasCentros; + procedure SetItems(const Value: IBizStockPrendasCentros); + + public + property Items: IBizStockPrendasCentros read GetItems write SetItems; + procedure Preview; override; + procedure Print; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Refresh; + end; + +implementation +{$R *.dfm} + +uses uViewGridBase; + +{ TfrViewControlGridResumenVentas } + +procedure TfrViewControlGridStockPrendasCentros.Preview; +begin + inherited; +// dxComponentPrinterLink1.ReportTitle.Text := 'Resumen de stock por centros de colección: ' + frViewFiltrosStock1.cbColeccion.Text; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewControlGridStockPrendasCentros.Print; +begin + inherited; +// dxComponentPrinterLink1.ReportTitle.Text := 'Resumen de stock por centros de colección: ' + frViewFiltrosStock1.cbColeccion.Text; + dxComponentPrinterLink1.Print(True, Nil); +end; + +procedure TfrViewControlGridStockPrendasCentros.cxGridViewKTCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + inherited; + if not VarIsNull(AViewInfo.Value) then + if Pos('-', AViewInfo.Value) > 0 then + ACanvas.Canvas.Font.Color := $000000CC; +end; + +destructor TfrViewControlGridStockPrendasCentros.Destroy; +begin + FItems := Nil; + inherited; +end; + +constructor TfrViewControlGridStockPrendasCentros.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosColeccion1.Refresh; +end; + +function TfrViewControlGridStockPrendasCentros.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +function TfrViewControlGridStockPrendasCentros.GetItems: IBizStockPrendasCentros; +begin + Result := FItems; +end; + +procedure TfrViewControlGridStockPrendasCentros.SetItems(const Value: IBizStockPrendasCentros); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewControlGridStockPrendasCentros.cxGridViewCOLUMN7StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + AStyle := cxStyleTotales; +end; + +procedure TfrViewControlGridStockPrendasCentros.Refresh; +var + AColeccionesList : TStringList; + ACentrosList : TStringList; + AWhereColeccion : String; + AWhereCentro : String; + AWhere : String; + i : integer; +begin + AColeccionesList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + AColeccionesList := frViewParametrosColeccion1.ColeccionesSeleccionadas; + + ShowHourglassCursor; + try + if Assigned(AColeccionesList) then + begin + AWhereColeccion := ''; + if AColeccionesList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos una colección en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereColeccion := AWhereColeccion + ' COLECCION in ('; + for i := 0 to AColeccionesList.Count - 1 do + begin + if i > 0 then + AWhereColeccion := AWhereColeccion + ', '; + AWhereColeccion := AWhereColeccion + '''' + AColeccionesList[i] + ''''; + end; + AWhereColeccion := AWhereColeccion + ')'; + end; + end; + + AWhere := ''; + if AWhereColeccion <> '' then + AWhere := AWhere + AWhereColeccion; + + Items.DataTable.Where.Clear; + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(AColeccionesList); + end; +end; + +procedure TfrViewControlGridStockPrendasCentros.cxGridView38GetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +begin + inherited; + if AText = '0' then + AText := ''; +end; + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.ddp b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.ddp differ diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.dfm b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.dfm new file mode 100644 index 0000000..8057572 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.dfm @@ -0,0 +1,417 @@ +inherited frViewControlGridStockVARELA: TfrViewControlGridStockVARELA + Width = 831 + Height = 350 + ExplicitWidth = 831 + ExplicitHeight = 350 + inherited cxGrid: TcxGrid + Top = 60 + Width = 831 + Height = 290 + ExplicitTop = 60 + ExplicitWidth = 831 + ExplicitHeight = 290 + inherited cxGridView: TcxGridDBTableView + FilterBox.Visible = fvNever + DataController.Summary.DefaultGroupSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Position = spFooter + Column = cxGridViewPRODUCTO + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Position = spFooter + Column = cxGridViewKT + end> + DataController.Summary.FooterSummaryItems = < + item + Format = '0 referencias' + Kind = skCount + Column = cxGridViewPRODUCTO + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK38 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK40 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK42 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK44 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK46 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewK48 + end + item + Format = '#,##0' + Kind = skSum + Column = cxGridViewKT + end> + OptionsView.GridLineColor = clDefault + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfAlwaysVisible + OptionsView.GroupRowStyle = grsOffice11 + Preview.AutoHeight = False + Styles.Footer = cxStyleEven + object cxGridViewRecID: TcxGridDBColumn + DataBinding.FieldName = 'RecID' + Visible = False + end + object cxGridViewFILIAL: TcxGridDBColumn + DataBinding.FieldName = 'FILIAL' + Visible = False + end + object cxGridViewCODIGO: TcxGridDBColumn + Caption = 'C'#243'digo' + DataBinding.FieldName = 'CODIGO' + end + object cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + end + object cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewTIPO_PRODUTO: TcxGridDBColumn + DataBinding.FieldName = 'TIPO_PRODUTO' + Visible = False + end + object cxGridViewGRUPO_PRODUTO: TcxGridDBColumn + DataBinding.FieldName = 'GRUPO_PRODUTO' + Visible = False + end + object cxGridViewCOLECCION: TcxGridDBColumn + Caption = 'Colecci'#243'n' + DataBinding.FieldName = 'COLECCION' + Visible = False + GroupIndex = 0 + end + object cxGridViewK38: TcxGridDBColumn + Caption = 'K38/S' + DataBinding.FieldName = 'K38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK40: TcxGridDBColumn + Caption = 'K40/M' + DataBinding.FieldName = 'K40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK42: TcxGridDBColumn + Caption = 'K42/L' + DataBinding.FieldName = 'K42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK44: TcxGridDBColumn + Caption = 'K44/XL' + DataBinding.FieldName = 'K44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK46: TcxGridDBColumn + DataBinding.FieldName = 'K46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewK48: TcxGridDBColumn + DataBinding.FieldName = 'K48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewKT: TcxGridDBColumn + DataBinding.FieldName = 'KT' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = '#,##0' + Properties.ValueType = vtInt + OnCustomDrawCell = cxGridViewKTCustomDrawCell + OnGetDataText = cxGridViewK38GetDataText + HeaderAlignmentHorz = taRightJustify + Styles.OnGetContentStyle = cxGridViewKTStylesGetContentStyle + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosColeccion1: TfrViewParametrosColeccion + Left = 0 + Top = 19 + Width = 321 + Height = 41 + Align = alLeft + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 321 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 321 + Height = 41 + Align = alClient + AutoContentSizes = [acsWidth] + ExplicitWidth = 321 + ExplicitHeight = 41 + inherited ccbColeccion: TJvCheckedComboBox + Width = 512 + ExplicitWidth = 512 + end + end + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 321 + Top = 19 + Width = 510 + Height = 41 + Align = alClient + TabOrder = 1 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 831 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint, peoReportDesign] + Left = 184 + Top = 120 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + 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.PageFooter.RightTitle.Strings = ( + '[Page #] de [Total Pages]') + PrinterPage.PageHeader.LeftTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 39361.401457418980000000 + ReportDocument.IsCaptionAssigned = True + ReportTitle.AdjustOnReportScale = True + ReportTitle.Text = 'Venta mensual' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = 10 + Font.Name = 'Tahoma' + Font.Style = [] + OptionsFormatting.UseNativeStyles = True + OptionsSize.AutoWidth = True + OptionsView.Caption = False + OptionsView.FilterBar = False + Styles.Content = cxStyleContentInforme + Styles.Footer = cxStyleFooterInforme + Styles.Group = cxStyleGroupInforme + Styles.Header = cxStyleHeaderInforme + SupportedCustomDraw = True + BuiltInReportLink = True + end + end + inherited dxPSEngineController1: TdxPSEngineController + Left = 96 + Top = 104 + end + inherited cxStyleRepository1: TcxStyleRepository + inherited cxStyleEven: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + object cxStyleEntrada: TcxStyle + AssignedValues = [svTextColor] + TextColor = clNavy + end + object cxStyleSalida: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGreen + end + object cxStyleTotales: TcxStyle + AssignedValues = [svColor, svFont] + Color = 13619151 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 296 + Top = 168 + object cxStyleContentInforme: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = clWhite + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + 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 = -9 + 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 = -11 + 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 = -9 + 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 = -9 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + end +end diff --git a/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.pas b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.pas new file mode 100644 index 0000000..2f30a49 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Cliente/uViewControGridStockVARELA.pas @@ -0,0 +1,198 @@ +unit uViewControGridStockVARELA; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls, cxSpinEdit, uViewGrid, cxMemo, + cxEditRepositoryItems, uDataModuleStock, uCustomView, uViewBase, + uViewParametrosControlGrid, uDAInterfaces, TBXDkPanels, + uViewParametrosColeccion, TB2Dock, uBizStock; + +type + IViewControlGridStockVARELA = interface(IViewGrid) + ['{19831B1A-1D3B-4352-A848-52B00BFEF4EF}'] + function GetItems: IBizStockVARELA; + procedure SetItems(const Value: IBizStockVARELA); + property Items: IBizStockVARELA read GetItems write SetItems; + end; + + TfrViewControlGridStockVARELA = class(TfrViewGrid, IViewControlGridStockVARELA) + dxComponentPrinterLink1: TdxGridReportLink; + cxGridViewRecID: TcxGridDBColumn; + cxGridViewFILIAL: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewTIPO_PRODUTO: TcxGridDBColumn; + cxGridViewGRUPO_PRODUTO: TcxGridDBColumn; + cxGridViewCOLECCION: TcxGridDBColumn; + cxGridViewK38: TcxGridDBColumn; + cxGridViewK40: TcxGridDBColumn; + cxGridViewK42: TcxGridDBColumn; + cxGridViewK44: TcxGridDBColumn; + cxGridViewK46: TcxGridDBColumn; + cxGridViewK48: TcxGridDBColumn; + cxGridViewKT: TcxGridDBColumn; + cxStyleEntrada: TcxStyle; + cxStyleSalida: TcxStyle; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxStyleTotales: TcxStyle; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosColeccion1: TfrViewParametrosColeccion; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + TBXLabel1: TTBXLabel; + procedure cxGridViewKTCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure cxGridViewK38GetDataText(Sender: TcxCustomGridTableItem; + ARecordIndex: Integer; var AText: String); + procedure cxGridViewKTStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + protected + FItems : IBizStockVARELA; + function GetFocusedView : TcxGridDBTableView; override; + function GetItems: IBizStockVARELA; + procedure SetItems(const Value: IBizStockVARELA); + + public + procedure Refresh; + property Items: IBizStockVARELA read GetItems write SetItems; + procedure Preview; override; + procedure Print; override; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation +{$R *.dfm} + +uses uViewGridBase; + +{ TfrViewControlGridResumenVentas } + +procedure TfrViewControlGridStockVARELA.Preview; +begin + inherited; + dxComponentPrinterLink1.ReportTitle.Text := 'Control de stock en almacén'; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewControlGridStockVARELA.Print; +begin + inherited; + dxComponentPrinterLink1.ReportTitle.Text := 'Control de stock en almacén'; + dxComponentPrinterLink1.Print(True, Nil); +end; + +procedure TfrViewControlGridStockVARELA.Refresh; +var + AColeccionesList : TStringList; + AWhere : String; + i : integer; +begin + AWhere := ''; + AWhere := AWhere + ' COLECCION in ('; + + Items.DataTable.Active := False; + AColeccionesList := frViewParametrosColeccion1.ColeccionesSeleccionadas; + + ShowHourglassCursor; + try + if AColeccionesList.Count = 0 then + ShowMessage('Debe seleccionar al menos una colección en los parámetros de la consulta.') + else begin + with Items.DataTable.Where do + begin + Clear; + for i := 0 to AColeccionesList.Count - 1 do + begin + if i > 0 then + AWhere := AWhere + ', '; + AWhere := AWhere + '''' + AColeccionesList[i] + ''''; + end; + AWhere := AWhere + ')'; + AddText(AWhere, False); + end; + Items.DataTable.Active := True; + end; + finally + HideHourglassCursor; + FreeAndNIL(AColeccionesList); + end; +end; + +procedure TfrViewControlGridStockVARELA.cxGridViewKTCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + inherited; + if not VarIsNull(AViewInfo.Value) then + if Pos('-', AViewInfo.Value) > 0 then + ACanvas.Canvas.Font.Color := $000000CC; +end; + +constructor TfrViewControlGridStockVARELA.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosColeccion1.Refresh; +end; + +function TfrViewControlGridStockVARELA.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +function TfrViewControlGridStockVARELA.GetItems: IBizStockVARELA; +begin + Result := FItems; +end; + +procedure TfrViewControlGridStockVARELA.SetItems(const Value: IBizStockVARELA); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewControlGridStockVARELA.cxGridViewK38GetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +begin + inherited; + ShowMessage(AText); + if AText = '0' then + AText := ''; +end; + +procedure TfrViewControlGridStockVARELA.cxGridViewKTStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + AStyle := cxStyleTotales; +end; + +destructor TfrViewControlGridStockVARELA.Destroy; +begin + FItems := Nil; + inherited; +end; + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Reglas/schStockClient_Intf.pas b/2.1.0/Source/Modulos/Stock/Reglas/schStockClient_Intf.pas new file mode 100644 index 0000000..c5b3a6a --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Reglas/schStockClient_Intf.pas @@ -0,0 +1,3165 @@ +unit schStockClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_StockPrendasCentros = '{A8012514-80BD-45B0-9270-F3C4AE5877F8}'; + RID_StockEDI = '{4E97650E-1103-4506-97A1-FDD43A81590A}'; + RID_StockVARELA = '{756C613D-6C51-4E60-B82C-5363636B0DAB}'; + RID_StockEDIInventario = '{E6A81993-C6F8-456A-B88E-08481D29019E}'; + + { Data table names } + nme_StockPrendasCentros = 'StockPrendasCentros'; + nme_StockEDI = 'StockEDI'; + nme_StockVARELA = 'StockVARELA'; + nme_StockEDIInventario = 'StockEDIInventario'; + + { StockPrendasCentros fields } + fld_StockPrendasCentrosCODIGO = 'CODIGO'; + fld_StockPrendasCentrosPRODUCTO = 'PRODUCTO'; + fld_StockPrendasCentrosTIPO_PRODUCTO = 'TIPO_PRODUCTO'; + fld_StockPrendasCentrosGRUPO_PRODUCTO = 'GRUPO_PRODUCTO'; + fld_StockPrendasCentrosCOLECCION = 'COLECCION'; + fld_StockPrendasCentrosCOLOR = 'COLOR'; + fld_StockPrendasCentrosT38 = 'T38'; + fld_StockPrendasCentrosT40 = 'T40'; + fld_StockPrendasCentrosT42 = 'T42'; + fld_StockPrendasCentrosT44 = 'T44'; + fld_StockPrendasCentrosT46 = 'T46'; + fld_StockPrendasCentrosT48 = 'T48'; + fld_StockPrendasCentrosTOTAL = 'TOTAL'; + + { StockPrendasCentros field indexes } + idx_StockPrendasCentrosCODIGO = 0; + idx_StockPrendasCentrosPRODUCTO = 1; + idx_StockPrendasCentrosTIPO_PRODUCTO = 2; + idx_StockPrendasCentrosGRUPO_PRODUCTO = 3; + idx_StockPrendasCentrosCOLECCION = 4; + idx_StockPrendasCentrosCOLOR = 5; + idx_StockPrendasCentrosT38 = 6; + idx_StockPrendasCentrosT40 = 7; + idx_StockPrendasCentrosT42 = 8; + idx_StockPrendasCentrosT44 = 9; + idx_StockPrendasCentrosT46 = 10; + idx_StockPrendasCentrosT48 = 11; + idx_StockPrendasCentrosTOTAL = 12; + + { StockEDI fields } + fld_StockEDICENTRO = 'CENTRO'; + fld_StockEDIFILIAL = 'FILIAL'; + fld_StockEDICODIGO = 'CODIGO'; + fld_StockEDIPRODUCTO = 'PRODUCTO'; + fld_StockEDITIPO_PRODUCTO = 'TIPO_PRODUCTO'; + fld_StockEDIGRUPO_PRODUCTO = 'GRUPO_PRODUCTO'; + fld_StockEDICOLECCION = 'COLECCION'; + fld_StockEDICOLOR = 'COLOR'; + fld_StockEDIE38 = 'E38'; + fld_StockEDIE40 = 'E40'; + fld_StockEDIE42 = 'E42'; + fld_StockEDIE44 = 'E44'; + fld_StockEDIE46 = 'E46'; + fld_StockEDIE48 = 'E48'; + fld_StockEDITE = 'TE'; + fld_StockEDIS38 = 'S38'; + fld_StockEDIS40 = 'S40'; + fld_StockEDIS42 = 'S42'; + fld_StockEDIS44 = 'S44'; + fld_StockEDIS46 = 'S46'; + fld_StockEDIS48 = 'S48'; + fld_StockEDITS = 'TS'; + fld_StockEDIK38 = 'K38'; + fld_StockEDIK40 = 'K40'; + fld_StockEDIK42 = 'K42'; + fld_StockEDIK44 = 'K44'; + fld_StockEDIK46 = 'K46'; + fld_StockEDIK48 = 'K48'; + fld_StockEDIKT = 'KT'; + + { StockEDI field indexes } + idx_StockEDICENTRO = 0; + idx_StockEDIFILIAL = 1; + idx_StockEDICODIGO = 2; + idx_StockEDIPRODUCTO = 3; + idx_StockEDITIPO_PRODUCTO = 4; + idx_StockEDIGRUPO_PRODUCTO = 5; + idx_StockEDICOLECCION = 6; + idx_StockEDICOLOR = 7; + idx_StockEDIE38 = 8; + idx_StockEDIE40 = 9; + idx_StockEDIE42 = 10; + idx_StockEDIE44 = 11; + idx_StockEDIE46 = 12; + idx_StockEDIE48 = 13; + idx_StockEDITE = 14; + idx_StockEDIS38 = 15; + idx_StockEDIS40 = 16; + idx_StockEDIS42 = 17; + idx_StockEDIS44 = 18; + idx_StockEDIS46 = 19; + idx_StockEDIS48 = 20; + idx_StockEDITS = 21; + idx_StockEDIK38 = 22; + idx_StockEDIK40 = 23; + idx_StockEDIK42 = 24; + idx_StockEDIK44 = 25; + idx_StockEDIK46 = 26; + idx_StockEDIK48 = 27; + idx_StockEDIKT = 28; + + { StockVARELA fields } + fld_StockVARELAFILIAL = 'FILIAL'; + fld_StockVARELACODIGO = 'CODIGO'; + fld_StockVARELACOLOR = 'COLOR'; + fld_StockVARELAPRODUCTO = 'PRODUCTO'; + fld_StockVARELATIPO_PRODUTO = 'TIPO_PRODUTO'; + fld_StockVARELAGRUPO_PRODUTO = 'GRUPO_PRODUTO'; + fld_StockVARELACOLECCION = 'COLECCION'; + fld_StockVARELAK38 = 'K38'; + fld_StockVARELAK40 = 'K40'; + fld_StockVARELAK42 = 'K42'; + fld_StockVARELAK44 = 'K44'; + fld_StockVARELAK46 = 'K46'; + fld_StockVARELAK48 = 'K48'; + fld_StockVARELAKT = 'KT'; + + { StockVARELA field indexes } + idx_StockVARELAFILIAL = 0; + idx_StockVARELACODIGO = 1; + idx_StockVARELACOLOR = 2; + idx_StockVARELAPRODUCTO = 3; + idx_StockVARELATIPO_PRODUTO = 4; + idx_StockVARELAGRUPO_PRODUTO = 5; + idx_StockVARELACOLECCION = 6; + idx_StockVARELAK38 = 7; + idx_StockVARELAK40 = 8; + idx_StockVARELAK42 = 9; + idx_StockVARELAK44 = 10; + idx_StockVARELAK46 = 11; + idx_StockVARELAK48 = 12; + idx_StockVARELAKT = 13; + + { StockEDIInventario fields } + fld_StockEDIInventarioCENTRO = 'CENTRO'; + fld_StockEDIInventarioFILIAL = 'FILIAL'; + fld_StockEDIInventarioCODIGO = 'CODIGO'; + fld_StockEDIInventarioPRODUCTO = 'PRODUCTO'; + fld_StockEDIInventarioCOLOR = 'COLOR'; + fld_StockEDIInventarioTIPO_PRODUCTO = 'TIPO_PRODUCTO'; + fld_StockEDIInventarioGRUPO_PRODUCTO = 'GRUPO_PRODUCTO'; + fld_StockEDIInventarioCOLECCION = 'COLECCION'; + fld_StockEDIInventarioI38 = 'I38'; + fld_StockEDIInventarioI40 = 'I40'; + fld_StockEDIInventarioI42 = 'I42'; + fld_StockEDIInventarioI44 = 'I44'; + fld_StockEDIInventarioI46 = 'I46'; + fld_StockEDIInventarioI48 = 'I48'; + fld_StockEDIInventarioTI = 'TI'; + fld_StockEDIInventarioK38 = 'K38'; + fld_StockEDIInventarioK40 = 'K40'; + fld_StockEDIInventarioK42 = 'K42'; + fld_StockEDIInventarioK44 = 'K44'; + fld_StockEDIInventarioK46 = 'K46'; + fld_StockEDIInventarioK48 = 'K48'; + fld_StockEDIInventarioTK = 'TK'; + fld_StockEDIInventarioD38 = 'D38'; + fld_StockEDIInventarioD40 = 'D40'; + fld_StockEDIInventarioD42 = 'D42'; + fld_StockEDIInventarioD44 = 'D44'; + fld_StockEDIInventarioD46 = 'D46'; + fld_StockEDIInventarioD48 = 'D48'; + fld_StockEDIInventarioDT = 'DT'; + + { StockEDIInventario field indexes } + idx_StockEDIInventarioCENTRO = 0; + idx_StockEDIInventarioFILIAL = 1; + idx_StockEDIInventarioCODIGO = 2; + idx_StockEDIInventarioPRODUCTO = 3; + idx_StockEDIInventarioCOLOR = 4; + idx_StockEDIInventarioTIPO_PRODUCTO = 5; + idx_StockEDIInventarioGRUPO_PRODUCTO = 6; + idx_StockEDIInventarioCOLECCION = 7; + idx_StockEDIInventarioI38 = 8; + idx_StockEDIInventarioI40 = 9; + idx_StockEDIInventarioI42 = 10; + idx_StockEDIInventarioI44 = 11; + idx_StockEDIInventarioI46 = 12; + idx_StockEDIInventarioI48 = 13; + idx_StockEDIInventarioTI = 14; + idx_StockEDIInventarioK38 = 15; + idx_StockEDIInventarioK40 = 16; + idx_StockEDIInventarioK42 = 17; + idx_StockEDIInventarioK44 = 18; + idx_StockEDIInventarioK46 = 19; + idx_StockEDIInventarioK48 = 20; + idx_StockEDIInventarioTK = 21; + idx_StockEDIInventarioD38 = 22; + idx_StockEDIInventarioD40 = 23; + idx_StockEDIInventarioD42 = 24; + idx_StockEDIInventarioD44 = 25; + idx_StockEDIInventarioD46 = 26; + idx_StockEDIInventarioD48 = 27; + idx_StockEDIInventarioDT = 28; + +type + { IStockPrendasCentros } + IStockPrendasCentros = interface(IDAStronglyTypedDataTable) + ['{A49DB067-BF73-4963-B765-92DA5C47C377}'] + { Property getters and setters } + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetCODIGOIsNull: Boolean; + procedure SetCODIGOIsNull(const aValue: Boolean); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetPRODUCTOIsNull: Boolean; + procedure SetPRODUCTOIsNull(const aValue: Boolean); + function GetTIPO_PRODUCTOValue: String; + procedure SetTIPO_PRODUCTOValue(const aValue: String); + function GetTIPO_PRODUCTOIsNull: Boolean; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); + function GetGRUPO_PRODUCTOValue: String; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); + function GetGRUPO_PRODUCTOIsNull: Boolean; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); + function GetCOLECCIONValue: String; + procedure SetCOLECCIONValue(const aValue: String); + function GetCOLECCIONIsNull: Boolean; + procedure SetCOLECCIONIsNull(const aValue: Boolean); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetCOLORIsNull: Boolean; + procedure SetCOLORIsNull(const aValue: Boolean); + function GetT38Value: Float; + procedure SetT38Value(const aValue: Float); + function GetT38IsNull: Boolean; + procedure SetT38IsNull(const aValue: Boolean); + function GetT40Value: Float; + procedure SetT40Value(const aValue: Float); + function GetT40IsNull: Boolean; + procedure SetT40IsNull(const aValue: Boolean); + function GetT42Value: Float; + procedure SetT42Value(const aValue: Float); + function GetT42IsNull: Boolean; + procedure SetT42IsNull(const aValue: Boolean); + function GetT44Value: Float; + procedure SetT44Value(const aValue: Float); + function GetT44IsNull: Boolean; + procedure SetT44IsNull(const aValue: Boolean); + function GetT46Value: Float; + procedure SetT46Value(const aValue: Float); + function GetT46IsNull: Boolean; + procedure SetT46IsNull(const aValue: Boolean); + function GetT48Value: Float; + procedure SetT48Value(const aValue: Float); + function GetT48IsNull: Boolean; + procedure SetT48IsNull(const aValue: Boolean); + function GetTOTALValue: Float; + procedure SetTOTALValue(const aValue: Float); + function GetTOTALIsNull: Boolean; + procedure SetTOTALIsNull(const aValue: Boolean); + + + { Properties } + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property TIPO_PRODUCTO: String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull: Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO: String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull: Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property T38: Float read GetT38Value write SetT38Value; + property T38IsNull: Boolean read GetT38IsNull write SetT38IsNull; + property T40: Float read GetT40Value write SetT40Value; + property T40IsNull: Boolean read GetT40IsNull write SetT40IsNull; + property T42: Float read GetT42Value write SetT42Value; + property T42IsNull: Boolean read GetT42IsNull write SetT42IsNull; + property T44: Float read GetT44Value write SetT44Value; + property T44IsNull: Boolean read GetT44IsNull write SetT44IsNull; + property T46: Float read GetT46Value write SetT46Value; + property T46IsNull: Boolean read GetT46IsNull write SetT46IsNull; + property T48: Float read GetT48Value write SetT48Value; + property T48IsNull: Boolean read GetT48IsNull write SetT48IsNull; + property TOTAL: Float read GetTOTALValue write SetTOTALValue; + property TOTALIsNull: Boolean read GetTOTALIsNull write SetTOTALIsNull; + end; + + { TStockPrendasCentrosDataTableRules } + TStockPrendasCentrosDataTableRules = class(TDADataTableRules, IStockPrendasCentros) + private + protected + { Property getters and setters } + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUCTOValue: String; virtual; + procedure SetTIPO_PRODUCTOValue(const aValue: String); virtual; + function GetTIPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUCTOValue: String; virtual; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); virtual; + function GetGRUPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetCOLORIsNull: Boolean; virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetT38Value: Float; virtual; + procedure SetT38Value(const aValue: Float); virtual; + function GetT38IsNull: Boolean; virtual; + procedure SetT38IsNull(const aValue: Boolean); virtual; + function GetT40Value: Float; virtual; + procedure SetT40Value(const aValue: Float); virtual; + function GetT40IsNull: Boolean; virtual; + procedure SetT40IsNull(const aValue: Boolean); virtual; + function GetT42Value: Float; virtual; + procedure SetT42Value(const aValue: Float); virtual; + function GetT42IsNull: Boolean; virtual; + procedure SetT42IsNull(const aValue: Boolean); virtual; + function GetT44Value: Float; virtual; + procedure SetT44Value(const aValue: Float); virtual; + function GetT44IsNull: Boolean; virtual; + procedure SetT44IsNull(const aValue: Boolean); virtual; + function GetT46Value: Float; virtual; + procedure SetT46Value(const aValue: Float); virtual; + function GetT46IsNull: Boolean; virtual; + procedure SetT46IsNull(const aValue: Boolean); virtual; + function GetT48Value: Float; virtual; + procedure SetT48Value(const aValue: Float); virtual; + function GetT48IsNull: Boolean; virtual; + procedure SetT48IsNull(const aValue: Boolean); virtual; + function GetTOTALValue: Float; virtual; + procedure SetTOTALValue(const aValue: Float); virtual; + function GetTOTALIsNull: Boolean; virtual; + procedure SetTOTALIsNull(const aValue: Boolean); virtual; + + { Properties } + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property TIPO_PRODUCTO: String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull: Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO: String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull: Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property T38: Float read GetT38Value write SetT38Value; + property T38IsNull: Boolean read GetT38IsNull write SetT38IsNull; + property T40: Float read GetT40Value write SetT40Value; + property T40IsNull: Boolean read GetT40IsNull write SetT40IsNull; + property T42: Float read GetT42Value write SetT42Value; + property T42IsNull: Boolean read GetT42IsNull write SetT42IsNull; + property T44: Float read GetT44Value write SetT44Value; + property T44IsNull: Boolean read GetT44IsNull write SetT44IsNull; + property T46: Float read GetT46Value write SetT46Value; + property T46IsNull: Boolean read GetT46IsNull write SetT46IsNull; + property T48: Float read GetT48Value write SetT48Value; + property T48IsNull: Boolean read GetT48IsNull write SetT48IsNull; + property TOTAL: Float read GetTOTALValue write SetTOTALValue; + property TOTALIsNull: Boolean read GetTOTALIsNull write SetTOTALIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IStockEDI } + IStockEDI = interface(IDAStronglyTypedDataTable) + ['{BDE048F6-D199-4C45-BEA4-E85EBA47C934}'] + { Property getters and setters } + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetCENTROIsNull: Boolean; + procedure SetCENTROIsNull(const aValue: Boolean); + function GetFILIALValue: String; + procedure SetFILIALValue(const aValue: String); + function GetFILIALIsNull: Boolean; + procedure SetFILIALIsNull(const aValue: Boolean); + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetCODIGOIsNull: Boolean; + procedure SetCODIGOIsNull(const aValue: Boolean); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetPRODUCTOIsNull: Boolean; + procedure SetPRODUCTOIsNull(const aValue: Boolean); + function GetTIPO_PRODUCTOValue: String; + procedure SetTIPO_PRODUCTOValue(const aValue: String); + function GetTIPO_PRODUCTOIsNull: Boolean; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); + function GetGRUPO_PRODUCTOValue: String; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); + function GetGRUPO_PRODUCTOIsNull: Boolean; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); + function GetCOLECCIONValue: String; + procedure SetCOLECCIONValue(const aValue: String); + function GetCOLECCIONIsNull: Boolean; + procedure SetCOLECCIONIsNull(const aValue: Boolean); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetCOLORIsNull: Boolean; + procedure SetCOLORIsNull(const aValue: Boolean); + function GetE38Value: Float; + procedure SetE38Value(const aValue: Float); + function GetE38IsNull: Boolean; + procedure SetE38IsNull(const aValue: Boolean); + function GetE40Value: Float; + procedure SetE40Value(const aValue: Float); + function GetE40IsNull: Boolean; + procedure SetE40IsNull(const aValue: Boolean); + function GetE42Value: Float; + procedure SetE42Value(const aValue: Float); + function GetE42IsNull: Boolean; + procedure SetE42IsNull(const aValue: Boolean); + function GetE44Value: Float; + procedure SetE44Value(const aValue: Float); + function GetE44IsNull: Boolean; + procedure SetE44IsNull(const aValue: Boolean); + function GetE46Value: Float; + procedure SetE46Value(const aValue: Float); + function GetE46IsNull: Boolean; + procedure SetE46IsNull(const aValue: Boolean); + function GetE48Value: Float; + procedure SetE48Value(const aValue: Float); + function GetE48IsNull: Boolean; + procedure SetE48IsNull(const aValue: Boolean); + function GetTEValue: Float; + procedure SetTEValue(const aValue: Float); + function GetTEIsNull: Boolean; + procedure SetTEIsNull(const aValue: Boolean); + function GetS38Value: Float; + procedure SetS38Value(const aValue: Float); + function GetS38IsNull: Boolean; + procedure SetS38IsNull(const aValue: Boolean); + function GetS40Value: Float; + procedure SetS40Value(const aValue: Float); + function GetS40IsNull: Boolean; + procedure SetS40IsNull(const aValue: Boolean); + function GetS42Value: Float; + procedure SetS42Value(const aValue: Float); + function GetS42IsNull: Boolean; + procedure SetS42IsNull(const aValue: Boolean); + function GetS44Value: Float; + procedure SetS44Value(const aValue: Float); + function GetS44IsNull: Boolean; + procedure SetS44IsNull(const aValue: Boolean); + function GetS46Value: Float; + procedure SetS46Value(const aValue: Float); + function GetS46IsNull: Boolean; + procedure SetS46IsNull(const aValue: Boolean); + function GetS48Value: Float; + procedure SetS48Value(const aValue: Float); + function GetS48IsNull: Boolean; + procedure SetS48IsNull(const aValue: Boolean); + function GetTSValue: Float; + procedure SetTSValue(const aValue: Float); + function GetTSIsNull: Boolean; + procedure SetTSIsNull(const aValue: Boolean); + function GetK38Value: Float; + procedure SetK38Value(const aValue: Float); + function GetK38IsNull: Boolean; + procedure SetK38IsNull(const aValue: Boolean); + function GetK40Value: Float; + procedure SetK40Value(const aValue: Float); + function GetK40IsNull: Boolean; + procedure SetK40IsNull(const aValue: Boolean); + function GetK42Value: Float; + procedure SetK42Value(const aValue: Float); + function GetK42IsNull: Boolean; + procedure SetK42IsNull(const aValue: Boolean); + function GetK44Value: Float; + procedure SetK44Value(const aValue: Float); + function GetK44IsNull: Boolean; + procedure SetK44IsNull(const aValue: Boolean); + function GetK46Value: Float; + procedure SetK46Value(const aValue: Float); + function GetK46IsNull: Boolean; + procedure SetK46IsNull(const aValue: Boolean); + function GetK48Value: Float; + procedure SetK48Value(const aValue: Float); + function GetK48IsNull: Boolean; + procedure SetK48IsNull(const aValue: Boolean); + function GetKTValue: Float; + procedure SetKTValue(const aValue: Float); + function GetKTIsNull: Boolean; + procedure SetKTIsNull(const aValue: Boolean); + + + { Properties } + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property FILIAL: String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull: Boolean read GetFILIALIsNull write SetFILIALIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property TIPO_PRODUCTO: String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull: Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO: String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull: Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property E38: Float read GetE38Value write SetE38Value; + property E38IsNull: Boolean read GetE38IsNull write SetE38IsNull; + property E40: Float read GetE40Value write SetE40Value; + property E40IsNull: Boolean read GetE40IsNull write SetE40IsNull; + property E42: Float read GetE42Value write SetE42Value; + property E42IsNull: Boolean read GetE42IsNull write SetE42IsNull; + property E44: Float read GetE44Value write SetE44Value; + property E44IsNull: Boolean read GetE44IsNull write SetE44IsNull; + property E46: Float read GetE46Value write SetE46Value; + property E46IsNull: Boolean read GetE46IsNull write SetE46IsNull; + property E48: Float read GetE48Value write SetE48Value; + property E48IsNull: Boolean read GetE48IsNull write SetE48IsNull; + property TE: Float read GetTEValue write SetTEValue; + property TEIsNull: Boolean read GetTEIsNull write SetTEIsNull; + property S38: Float read GetS38Value write SetS38Value; + property S38IsNull: Boolean read GetS38IsNull write SetS38IsNull; + property S40: Float read GetS40Value write SetS40Value; + property S40IsNull: Boolean read GetS40IsNull write SetS40IsNull; + property S42: Float read GetS42Value write SetS42Value; + property S42IsNull: Boolean read GetS42IsNull write SetS42IsNull; + property S44: Float read GetS44Value write SetS44Value; + property S44IsNull: Boolean read GetS44IsNull write SetS44IsNull; + property S46: Float read GetS46Value write SetS46Value; + property S46IsNull: Boolean read GetS46IsNull write SetS46IsNull; + property S48: Float read GetS48Value write SetS48Value; + property S48IsNull: Boolean read GetS48IsNull write SetS48IsNull; + property TS: Float read GetTSValue write SetTSValue; + property TSIsNull: Boolean read GetTSIsNull write SetTSIsNull; + property K38: Float read GetK38Value write SetK38Value; + property K38IsNull: Boolean read GetK38IsNull write SetK38IsNull; + property K40: Float read GetK40Value write SetK40Value; + property K40IsNull: Boolean read GetK40IsNull write SetK40IsNull; + property K42: Float read GetK42Value write SetK42Value; + property K42IsNull: Boolean read GetK42IsNull write SetK42IsNull; + property K44: Float read GetK44Value write SetK44Value; + property K44IsNull: Boolean read GetK44IsNull write SetK44IsNull; + property K46: Float read GetK46Value write SetK46Value; + property K46IsNull: Boolean read GetK46IsNull write SetK46IsNull; + property K48: Float read GetK48Value write SetK48Value; + property K48IsNull: Boolean read GetK48IsNull write SetK48IsNull; + property KT: Float read GetKTValue write SetKTValue; + property KTIsNull: Boolean read GetKTIsNull write SetKTIsNull; + end; + + { TStockEDIDataTableRules } + TStockEDIDataTableRules = class(TDADataTableRules, IStockEDI) + private + protected + { Property getters and setters } + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetCENTROIsNull: Boolean; virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetFILIALValue: String; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + function GetFILIALIsNull: Boolean; virtual; + procedure SetFILIALIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUCTOValue: String; virtual; + procedure SetTIPO_PRODUCTOValue(const aValue: String); virtual; + function GetTIPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUCTOValue: String; virtual; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); virtual; + function GetGRUPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetCOLORIsNull: Boolean; virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetE38Value: Float; virtual; + procedure SetE38Value(const aValue: Float); virtual; + function GetE38IsNull: Boolean; virtual; + procedure SetE38IsNull(const aValue: Boolean); virtual; + function GetE40Value: Float; virtual; + procedure SetE40Value(const aValue: Float); virtual; + function GetE40IsNull: Boolean; virtual; + procedure SetE40IsNull(const aValue: Boolean); virtual; + function GetE42Value: Float; virtual; + procedure SetE42Value(const aValue: Float); virtual; + function GetE42IsNull: Boolean; virtual; + procedure SetE42IsNull(const aValue: Boolean); virtual; + function GetE44Value: Float; virtual; + procedure SetE44Value(const aValue: Float); virtual; + function GetE44IsNull: Boolean; virtual; + procedure SetE44IsNull(const aValue: Boolean); virtual; + function GetE46Value: Float; virtual; + procedure SetE46Value(const aValue: Float); virtual; + function GetE46IsNull: Boolean; virtual; + procedure SetE46IsNull(const aValue: Boolean); virtual; + function GetE48Value: Float; virtual; + procedure SetE48Value(const aValue: Float); virtual; + function GetE48IsNull: Boolean; virtual; + procedure SetE48IsNull(const aValue: Boolean); virtual; + function GetTEValue: Float; virtual; + procedure SetTEValue(const aValue: Float); virtual; + function GetTEIsNull: Boolean; virtual; + procedure SetTEIsNull(const aValue: Boolean); virtual; + function GetS38Value: Float; virtual; + procedure SetS38Value(const aValue: Float); virtual; + function GetS38IsNull: Boolean; virtual; + procedure SetS38IsNull(const aValue: Boolean); virtual; + function GetS40Value: Float; virtual; + procedure SetS40Value(const aValue: Float); virtual; + function GetS40IsNull: Boolean; virtual; + procedure SetS40IsNull(const aValue: Boolean); virtual; + function GetS42Value: Float; virtual; + procedure SetS42Value(const aValue: Float); virtual; + function GetS42IsNull: Boolean; virtual; + procedure SetS42IsNull(const aValue: Boolean); virtual; + function GetS44Value: Float; virtual; + procedure SetS44Value(const aValue: Float); virtual; + function GetS44IsNull: Boolean; virtual; + procedure SetS44IsNull(const aValue: Boolean); virtual; + function GetS46Value: Float; virtual; + procedure SetS46Value(const aValue: Float); virtual; + function GetS46IsNull: Boolean; virtual; + procedure SetS46IsNull(const aValue: Boolean); virtual; + function GetS48Value: Float; virtual; + procedure SetS48Value(const aValue: Float); virtual; + function GetS48IsNull: Boolean; virtual; + procedure SetS48IsNull(const aValue: Boolean); virtual; + function GetTSValue: Float; virtual; + procedure SetTSValue(const aValue: Float); virtual; + function GetTSIsNull: Boolean; virtual; + procedure SetTSIsNull(const aValue: Boolean); virtual; + function GetK38Value: Float; virtual; + procedure SetK38Value(const aValue: Float); virtual; + function GetK38IsNull: Boolean; virtual; + procedure SetK38IsNull(const aValue: Boolean); virtual; + function GetK40Value: Float; virtual; + procedure SetK40Value(const aValue: Float); virtual; + function GetK40IsNull: Boolean; virtual; + procedure SetK40IsNull(const aValue: Boolean); virtual; + function GetK42Value: Float; virtual; + procedure SetK42Value(const aValue: Float); virtual; + function GetK42IsNull: Boolean; virtual; + procedure SetK42IsNull(const aValue: Boolean); virtual; + function GetK44Value: Float; virtual; + procedure SetK44Value(const aValue: Float); virtual; + function GetK44IsNull: Boolean; virtual; + procedure SetK44IsNull(const aValue: Boolean); virtual; + function GetK46Value: Float; virtual; + procedure SetK46Value(const aValue: Float); virtual; + function GetK46IsNull: Boolean; virtual; + procedure SetK46IsNull(const aValue: Boolean); virtual; + function GetK48Value: Float; virtual; + procedure SetK48Value(const aValue: Float); virtual; + function GetK48IsNull: Boolean; virtual; + procedure SetK48IsNull(const aValue: Boolean); virtual; + function GetKTValue: Float; virtual; + procedure SetKTValue(const aValue: Float); virtual; + function GetKTIsNull: Boolean; virtual; + procedure SetKTIsNull(const aValue: Boolean); virtual; + + { Properties } + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property FILIAL: String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull: Boolean read GetFILIALIsNull write SetFILIALIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property TIPO_PRODUCTO: String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull: Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO: String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull: Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property E38: Float read GetE38Value write SetE38Value; + property E38IsNull: Boolean read GetE38IsNull write SetE38IsNull; + property E40: Float read GetE40Value write SetE40Value; + property E40IsNull: Boolean read GetE40IsNull write SetE40IsNull; + property E42: Float read GetE42Value write SetE42Value; + property E42IsNull: Boolean read GetE42IsNull write SetE42IsNull; + property E44: Float read GetE44Value write SetE44Value; + property E44IsNull: Boolean read GetE44IsNull write SetE44IsNull; + property E46: Float read GetE46Value write SetE46Value; + property E46IsNull: Boolean read GetE46IsNull write SetE46IsNull; + property E48: Float read GetE48Value write SetE48Value; + property E48IsNull: Boolean read GetE48IsNull write SetE48IsNull; + property TE: Float read GetTEValue write SetTEValue; + property TEIsNull: Boolean read GetTEIsNull write SetTEIsNull; + property S38: Float read GetS38Value write SetS38Value; + property S38IsNull: Boolean read GetS38IsNull write SetS38IsNull; + property S40: Float read GetS40Value write SetS40Value; + property S40IsNull: Boolean read GetS40IsNull write SetS40IsNull; + property S42: Float read GetS42Value write SetS42Value; + property S42IsNull: Boolean read GetS42IsNull write SetS42IsNull; + property S44: Float read GetS44Value write SetS44Value; + property S44IsNull: Boolean read GetS44IsNull write SetS44IsNull; + property S46: Float read GetS46Value write SetS46Value; + property S46IsNull: Boolean read GetS46IsNull write SetS46IsNull; + property S48: Float read GetS48Value write SetS48Value; + property S48IsNull: Boolean read GetS48IsNull write SetS48IsNull; + property TS: Float read GetTSValue write SetTSValue; + property TSIsNull: Boolean read GetTSIsNull write SetTSIsNull; + property K38: Float read GetK38Value write SetK38Value; + property K38IsNull: Boolean read GetK38IsNull write SetK38IsNull; + property K40: Float read GetK40Value write SetK40Value; + property K40IsNull: Boolean read GetK40IsNull write SetK40IsNull; + property K42: Float read GetK42Value write SetK42Value; + property K42IsNull: Boolean read GetK42IsNull write SetK42IsNull; + property K44: Float read GetK44Value write SetK44Value; + property K44IsNull: Boolean read GetK44IsNull write SetK44IsNull; + property K46: Float read GetK46Value write SetK46Value; + property K46IsNull: Boolean read GetK46IsNull write SetK46IsNull; + property K48: Float read GetK48Value write SetK48Value; + property K48IsNull: Boolean read GetK48IsNull write SetK48IsNull; + property KT: Float read GetKTValue write SetKTValue; + property KTIsNull: Boolean read GetKTIsNull write SetKTIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IStockVARELA } + IStockVARELA = interface(IDAStronglyTypedDataTable) + ['{FA5D0F0E-C711-4EB6-BB53-A0CF15BC31D5}'] + { Property getters and setters } + function GetFILIALValue: String; + procedure SetFILIALValue(const aValue: String); + function GetFILIALIsNull: Boolean; + procedure SetFILIALIsNull(const aValue: Boolean); + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetCODIGOIsNull: Boolean; + procedure SetCODIGOIsNull(const aValue: Boolean); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetCOLORIsNull: Boolean; + procedure SetCOLORIsNull(const aValue: Boolean); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetPRODUCTOIsNull: Boolean; + procedure SetPRODUCTOIsNull(const aValue: Boolean); + function GetTIPO_PRODUTOValue: String; + procedure SetTIPO_PRODUTOValue(const aValue: String); + function GetTIPO_PRODUTOIsNull: Boolean; + procedure SetTIPO_PRODUTOIsNull(const aValue: Boolean); + function GetGRUPO_PRODUTOValue: String; + procedure SetGRUPO_PRODUTOValue(const aValue: String); + function GetGRUPO_PRODUTOIsNull: Boolean; + procedure SetGRUPO_PRODUTOIsNull(const aValue: Boolean); + function GetCOLECCIONValue: String; + procedure SetCOLECCIONValue(const aValue: String); + function GetCOLECCIONIsNull: Boolean; + procedure SetCOLECCIONIsNull(const aValue: Boolean); + function GetK38Value: Integer; + procedure SetK38Value(const aValue: Integer); + function GetK38IsNull: Boolean; + procedure SetK38IsNull(const aValue: Boolean); + function GetK40Value: Integer; + procedure SetK40Value(const aValue: Integer); + function GetK40IsNull: Boolean; + procedure SetK40IsNull(const aValue: Boolean); + function GetK42Value: Integer; + procedure SetK42Value(const aValue: Integer); + function GetK42IsNull: Boolean; + procedure SetK42IsNull(const aValue: Boolean); + function GetK44Value: Integer; + procedure SetK44Value(const aValue: Integer); + function GetK44IsNull: Boolean; + procedure SetK44IsNull(const aValue: Boolean); + function GetK46Value: Integer; + procedure SetK46Value(const aValue: Integer); + function GetK46IsNull: Boolean; + procedure SetK46IsNull(const aValue: Boolean); + function GetK48Value: Integer; + procedure SetK48Value(const aValue: Integer); + function GetK48IsNull: Boolean; + procedure SetK48IsNull(const aValue: Boolean); + function GetKTValue: Integer; + procedure SetKTValue(const aValue: Integer); + function GetKTIsNull: Boolean; + procedure SetKTIsNull(const aValue: Boolean); + + + { Properties } + property FILIAL: String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull: Boolean read GetFILIALIsNull write SetFILIALIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property TIPO_PRODUTO: String read GetTIPO_PRODUTOValue write SetTIPO_PRODUTOValue; + property TIPO_PRODUTOIsNull: Boolean read GetTIPO_PRODUTOIsNull write SetTIPO_PRODUTOIsNull; + property GRUPO_PRODUTO: String read GetGRUPO_PRODUTOValue write SetGRUPO_PRODUTOValue; + property GRUPO_PRODUTOIsNull: Boolean read GetGRUPO_PRODUTOIsNull write SetGRUPO_PRODUTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property K38: Integer read GetK38Value write SetK38Value; + property K38IsNull: Boolean read GetK38IsNull write SetK38IsNull; + property K40: Integer read GetK40Value write SetK40Value; + property K40IsNull: Boolean read GetK40IsNull write SetK40IsNull; + property K42: Integer read GetK42Value write SetK42Value; + property K42IsNull: Boolean read GetK42IsNull write SetK42IsNull; + property K44: Integer read GetK44Value write SetK44Value; + property K44IsNull: Boolean read GetK44IsNull write SetK44IsNull; + property K46: Integer read GetK46Value write SetK46Value; + property K46IsNull: Boolean read GetK46IsNull write SetK46IsNull; + property K48: Integer read GetK48Value write SetK48Value; + property K48IsNull: Boolean read GetK48IsNull write SetK48IsNull; + property KT: Integer read GetKTValue write SetKTValue; + property KTIsNull: Boolean read GetKTIsNull write SetKTIsNull; + end; + + { TStockVARELADataTableRules } + TStockVARELADataTableRules = class(TDADataTableRules, IStockVARELA) + private + protected + { Property getters and setters } + function GetFILIALValue: String; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + function GetFILIALIsNull: Boolean; virtual; + procedure SetFILIALIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetCOLORIsNull: Boolean; virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUTOValue: String; virtual; + procedure SetTIPO_PRODUTOValue(const aValue: String); virtual; + function GetTIPO_PRODUTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUTOValue: String; virtual; + procedure SetGRUPO_PRODUTOValue(const aValue: String); virtual; + function GetGRUPO_PRODUTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetK38Value: Integer; virtual; + procedure SetK38Value(const aValue: Integer); virtual; + function GetK38IsNull: Boolean; virtual; + procedure SetK38IsNull(const aValue: Boolean); virtual; + function GetK40Value: Integer; virtual; + procedure SetK40Value(const aValue: Integer); virtual; + function GetK40IsNull: Boolean; virtual; + procedure SetK40IsNull(const aValue: Boolean); virtual; + function GetK42Value: Integer; virtual; + procedure SetK42Value(const aValue: Integer); virtual; + function GetK42IsNull: Boolean; virtual; + procedure SetK42IsNull(const aValue: Boolean); virtual; + function GetK44Value: Integer; virtual; + procedure SetK44Value(const aValue: Integer); virtual; + function GetK44IsNull: Boolean; virtual; + procedure SetK44IsNull(const aValue: Boolean); virtual; + function GetK46Value: Integer; virtual; + procedure SetK46Value(const aValue: Integer); virtual; + function GetK46IsNull: Boolean; virtual; + procedure SetK46IsNull(const aValue: Boolean); virtual; + function GetK48Value: Integer; virtual; + procedure SetK48Value(const aValue: Integer); virtual; + function GetK48IsNull: Boolean; virtual; + procedure SetK48IsNull(const aValue: Boolean); virtual; + function GetKTValue: Integer; virtual; + procedure SetKTValue(const aValue: Integer); virtual; + function GetKTIsNull: Boolean; virtual; + procedure SetKTIsNull(const aValue: Boolean); virtual; + + { Properties } + property FILIAL: String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull: Boolean read GetFILIALIsNull write SetFILIALIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property TIPO_PRODUTO: String read GetTIPO_PRODUTOValue write SetTIPO_PRODUTOValue; + property TIPO_PRODUTOIsNull: Boolean read GetTIPO_PRODUTOIsNull write SetTIPO_PRODUTOIsNull; + property GRUPO_PRODUTO: String read GetGRUPO_PRODUTOValue write SetGRUPO_PRODUTOValue; + property GRUPO_PRODUTOIsNull: Boolean read GetGRUPO_PRODUTOIsNull write SetGRUPO_PRODUTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property K38: Integer read GetK38Value write SetK38Value; + property K38IsNull: Boolean read GetK38IsNull write SetK38IsNull; + property K40: Integer read GetK40Value write SetK40Value; + property K40IsNull: Boolean read GetK40IsNull write SetK40IsNull; + property K42: Integer read GetK42Value write SetK42Value; + property K42IsNull: Boolean read GetK42IsNull write SetK42IsNull; + property K44: Integer read GetK44Value write SetK44Value; + property K44IsNull: Boolean read GetK44IsNull write SetK44IsNull; + property K46: Integer read GetK46Value write SetK46Value; + property K46IsNull: Boolean read GetK46IsNull write SetK46IsNull; + property K48: Integer read GetK48Value write SetK48Value; + property K48IsNull: Boolean read GetK48IsNull write SetK48IsNull; + property KT: Integer read GetKTValue write SetKTValue; + property KTIsNull: Boolean read GetKTIsNull write SetKTIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IStockEDIInventario } + IStockEDIInventario = interface(IDAStronglyTypedDataTable) + ['{82E00C37-44A9-4184-9514-510BDA32EAC6}'] + { Property getters and setters } + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetCENTROIsNull: Boolean; + procedure SetCENTROIsNull(const aValue: Boolean); + function GetFILIALValue: String; + procedure SetFILIALValue(const aValue: String); + function GetFILIALIsNull: Boolean; + procedure SetFILIALIsNull(const aValue: Boolean); + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetCODIGOIsNull: Boolean; + procedure SetCODIGOIsNull(const aValue: Boolean); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetPRODUCTOIsNull: Boolean; + procedure SetPRODUCTOIsNull(const aValue: Boolean); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetCOLORIsNull: Boolean; + procedure SetCOLORIsNull(const aValue: Boolean); + function GetTIPO_PRODUCTOValue: String; + procedure SetTIPO_PRODUCTOValue(const aValue: String); + function GetTIPO_PRODUCTOIsNull: Boolean; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); + function GetGRUPO_PRODUCTOValue: String; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); + function GetGRUPO_PRODUCTOIsNull: Boolean; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); + function GetCOLECCIONValue: String; + procedure SetCOLECCIONValue(const aValue: String); + function GetCOLECCIONIsNull: Boolean; + procedure SetCOLECCIONIsNull(const aValue: Boolean); + function GetI38Value: Float; + procedure SetI38Value(const aValue: Float); + function GetI38IsNull: Boolean; + procedure SetI38IsNull(const aValue: Boolean); + function GetI40Value: Float; + procedure SetI40Value(const aValue: Float); + function GetI40IsNull: Boolean; + procedure SetI40IsNull(const aValue: Boolean); + function GetI42Value: Float; + procedure SetI42Value(const aValue: Float); + function GetI42IsNull: Boolean; + procedure SetI42IsNull(const aValue: Boolean); + function GetI44Value: Float; + procedure SetI44Value(const aValue: Float); + function GetI44IsNull: Boolean; + procedure SetI44IsNull(const aValue: Boolean); + function GetI46Value: Float; + procedure SetI46Value(const aValue: Float); + function GetI46IsNull: Boolean; + procedure SetI46IsNull(const aValue: Boolean); + function GetI48Value: Float; + procedure SetI48Value(const aValue: Float); + function GetI48IsNull: Boolean; + procedure SetI48IsNull(const aValue: Boolean); + function GetTIValue: Float; + procedure SetTIValue(const aValue: Float); + function GetTIIsNull: Boolean; + procedure SetTIIsNull(const aValue: Boolean); + function GetK38Value: Float; + procedure SetK38Value(const aValue: Float); + function GetK38IsNull: Boolean; + procedure SetK38IsNull(const aValue: Boolean); + function GetK40Value: Float; + procedure SetK40Value(const aValue: Float); + function GetK40IsNull: Boolean; + procedure SetK40IsNull(const aValue: Boolean); + function GetK42Value: Float; + procedure SetK42Value(const aValue: Float); + function GetK42IsNull: Boolean; + procedure SetK42IsNull(const aValue: Boolean); + function GetK44Value: Float; + procedure SetK44Value(const aValue: Float); + function GetK44IsNull: Boolean; + procedure SetK44IsNull(const aValue: Boolean); + function GetK46Value: Float; + procedure SetK46Value(const aValue: Float); + function GetK46IsNull: Boolean; + procedure SetK46IsNull(const aValue: Boolean); + function GetK48Value: Float; + procedure SetK48Value(const aValue: Float); + function GetK48IsNull: Boolean; + procedure SetK48IsNull(const aValue: Boolean); + function GetTKValue: Float; + procedure SetTKValue(const aValue: Float); + function GetTKIsNull: Boolean; + procedure SetTKIsNull(const aValue: Boolean); + function GetD38Value: Float; + procedure SetD38Value(const aValue: Float); + function GetD38IsNull: Boolean; + procedure SetD38IsNull(const aValue: Boolean); + function GetD40Value: Float; + procedure SetD40Value(const aValue: Float); + function GetD40IsNull: Boolean; + procedure SetD40IsNull(const aValue: Boolean); + function GetD42Value: Float; + procedure SetD42Value(const aValue: Float); + function GetD42IsNull: Boolean; + procedure SetD42IsNull(const aValue: Boolean); + function GetD44Value: Float; + procedure SetD44Value(const aValue: Float); + function GetD44IsNull: Boolean; + procedure SetD44IsNull(const aValue: Boolean); + function GetD46Value: Float; + procedure SetD46Value(const aValue: Float); + function GetD46IsNull: Boolean; + procedure SetD46IsNull(const aValue: Boolean); + function GetD48Value: Float; + procedure SetD48Value(const aValue: Float); + function GetD48IsNull: Boolean; + procedure SetD48IsNull(const aValue: Boolean); + function GetDTValue: Float; + procedure SetDTValue(const aValue: Float); + function GetDTIsNull: Boolean; + procedure SetDTIsNull(const aValue: Boolean); + + + { Properties } + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property FILIAL: String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull: Boolean read GetFILIALIsNull write SetFILIALIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property TIPO_PRODUCTO: String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull: Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO: String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull: Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property I38: Float read GetI38Value write SetI38Value; + property I38IsNull: Boolean read GetI38IsNull write SetI38IsNull; + property I40: Float read GetI40Value write SetI40Value; + property I40IsNull: Boolean read GetI40IsNull write SetI40IsNull; + property I42: Float read GetI42Value write SetI42Value; + property I42IsNull: Boolean read GetI42IsNull write SetI42IsNull; + property I44: Float read GetI44Value write SetI44Value; + property I44IsNull: Boolean read GetI44IsNull write SetI44IsNull; + property I46: Float read GetI46Value write SetI46Value; + property I46IsNull: Boolean read GetI46IsNull write SetI46IsNull; + property I48: Float read GetI48Value write SetI48Value; + property I48IsNull: Boolean read GetI48IsNull write SetI48IsNull; + property TI: Float read GetTIValue write SetTIValue; + property TIIsNull: Boolean read GetTIIsNull write SetTIIsNull; + property K38: Float read GetK38Value write SetK38Value; + property K38IsNull: Boolean read GetK38IsNull write SetK38IsNull; + property K40: Float read GetK40Value write SetK40Value; + property K40IsNull: Boolean read GetK40IsNull write SetK40IsNull; + property K42: Float read GetK42Value write SetK42Value; + property K42IsNull: Boolean read GetK42IsNull write SetK42IsNull; + property K44: Float read GetK44Value write SetK44Value; + property K44IsNull: Boolean read GetK44IsNull write SetK44IsNull; + property K46: Float read GetK46Value write SetK46Value; + property K46IsNull: Boolean read GetK46IsNull write SetK46IsNull; + property K48: Float read GetK48Value write SetK48Value; + property K48IsNull: Boolean read GetK48IsNull write SetK48IsNull; + property TK: Float read GetTKValue write SetTKValue; + property TKIsNull: Boolean read GetTKIsNull write SetTKIsNull; + property D38: Float read GetD38Value write SetD38Value; + property D38IsNull: Boolean read GetD38IsNull write SetD38IsNull; + property D40: Float read GetD40Value write SetD40Value; + property D40IsNull: Boolean read GetD40IsNull write SetD40IsNull; + property D42: Float read GetD42Value write SetD42Value; + property D42IsNull: Boolean read GetD42IsNull write SetD42IsNull; + property D44: Float read GetD44Value write SetD44Value; + property D44IsNull: Boolean read GetD44IsNull write SetD44IsNull; + property D46: Float read GetD46Value write SetD46Value; + property D46IsNull: Boolean read GetD46IsNull write SetD46IsNull; + property D48: Float read GetD48Value write SetD48Value; + property D48IsNull: Boolean read GetD48IsNull write SetD48IsNull; + property DT: Float read GetDTValue write SetDTValue; + property DTIsNull: Boolean read GetDTIsNull write SetDTIsNull; + end; + + { TStockEDIInventarioDataTableRules } + TStockEDIInventarioDataTableRules = class(TDADataTableRules, IStockEDIInventario) + private + protected + { Property getters and setters } + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetCENTROIsNull: Boolean; virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetFILIALValue: String; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + function GetFILIALIsNull: Boolean; virtual; + procedure SetFILIALIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetCOLORIsNull: Boolean; virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUCTOValue: String; virtual; + procedure SetTIPO_PRODUCTOValue(const aValue: String); virtual; + function GetTIPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUCTOValue: String; virtual; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); virtual; + function GetGRUPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetI38Value: Float; virtual; + procedure SetI38Value(const aValue: Float); virtual; + function GetI38IsNull: Boolean; virtual; + procedure SetI38IsNull(const aValue: Boolean); virtual; + function GetI40Value: Float; virtual; + procedure SetI40Value(const aValue: Float); virtual; + function GetI40IsNull: Boolean; virtual; + procedure SetI40IsNull(const aValue: Boolean); virtual; + function GetI42Value: Float; virtual; + procedure SetI42Value(const aValue: Float); virtual; + function GetI42IsNull: Boolean; virtual; + procedure SetI42IsNull(const aValue: Boolean); virtual; + function GetI44Value: Float; virtual; + procedure SetI44Value(const aValue: Float); virtual; + function GetI44IsNull: Boolean; virtual; + procedure SetI44IsNull(const aValue: Boolean); virtual; + function GetI46Value: Float; virtual; + procedure SetI46Value(const aValue: Float); virtual; + function GetI46IsNull: Boolean; virtual; + procedure SetI46IsNull(const aValue: Boolean); virtual; + function GetI48Value: Float; virtual; + procedure SetI48Value(const aValue: Float); virtual; + function GetI48IsNull: Boolean; virtual; + procedure SetI48IsNull(const aValue: Boolean); virtual; + function GetTIValue: Float; virtual; + procedure SetTIValue(const aValue: Float); virtual; + function GetTIIsNull: Boolean; virtual; + procedure SetTIIsNull(const aValue: Boolean); virtual; + function GetK38Value: Float; virtual; + procedure SetK38Value(const aValue: Float); virtual; + function GetK38IsNull: Boolean; virtual; + procedure SetK38IsNull(const aValue: Boolean); virtual; + function GetK40Value: Float; virtual; + procedure SetK40Value(const aValue: Float); virtual; + function GetK40IsNull: Boolean; virtual; + procedure SetK40IsNull(const aValue: Boolean); virtual; + function GetK42Value: Float; virtual; + procedure SetK42Value(const aValue: Float); virtual; + function GetK42IsNull: Boolean; virtual; + procedure SetK42IsNull(const aValue: Boolean); virtual; + function GetK44Value: Float; virtual; + procedure SetK44Value(const aValue: Float); virtual; + function GetK44IsNull: Boolean; virtual; + procedure SetK44IsNull(const aValue: Boolean); virtual; + function GetK46Value: Float; virtual; + procedure SetK46Value(const aValue: Float); virtual; + function GetK46IsNull: Boolean; virtual; + procedure SetK46IsNull(const aValue: Boolean); virtual; + function GetK48Value: Float; virtual; + procedure SetK48Value(const aValue: Float); virtual; + function GetK48IsNull: Boolean; virtual; + procedure SetK48IsNull(const aValue: Boolean); virtual; + function GetTKValue: Float; virtual; + procedure SetTKValue(const aValue: Float); virtual; + function GetTKIsNull: Boolean; virtual; + procedure SetTKIsNull(const aValue: Boolean); virtual; + function GetD38Value: Float; virtual; + procedure SetD38Value(const aValue: Float); virtual; + function GetD38IsNull: Boolean; virtual; + procedure SetD38IsNull(const aValue: Boolean); virtual; + function GetD40Value: Float; virtual; + procedure SetD40Value(const aValue: Float); virtual; + function GetD40IsNull: Boolean; virtual; + procedure SetD40IsNull(const aValue: Boolean); virtual; + function GetD42Value: Float; virtual; + procedure SetD42Value(const aValue: Float); virtual; + function GetD42IsNull: Boolean; virtual; + procedure SetD42IsNull(const aValue: Boolean); virtual; + function GetD44Value: Float; virtual; + procedure SetD44Value(const aValue: Float); virtual; + function GetD44IsNull: Boolean; virtual; + procedure SetD44IsNull(const aValue: Boolean); virtual; + function GetD46Value: Float; virtual; + procedure SetD46Value(const aValue: Float); virtual; + function GetD46IsNull: Boolean; virtual; + procedure SetD46IsNull(const aValue: Boolean); virtual; + function GetD48Value: Float; virtual; + procedure SetD48Value(const aValue: Float); virtual; + function GetD48IsNull: Boolean; virtual; + procedure SetD48IsNull(const aValue: Boolean); virtual; + function GetDTValue: Float; virtual; + procedure SetDTValue(const aValue: Float); virtual; + function GetDTIsNull: Boolean; virtual; + procedure SetDTIsNull(const aValue: Boolean); virtual; + + { Properties } + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property FILIAL: String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull: Boolean read GetFILIALIsNull write SetFILIALIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property TIPO_PRODUCTO: String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull: Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO: String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull: Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property I38: Float read GetI38Value write SetI38Value; + property I38IsNull: Boolean read GetI38IsNull write SetI38IsNull; + property I40: Float read GetI40Value write SetI40Value; + property I40IsNull: Boolean read GetI40IsNull write SetI40IsNull; + property I42: Float read GetI42Value write SetI42Value; + property I42IsNull: Boolean read GetI42IsNull write SetI42IsNull; + property I44: Float read GetI44Value write SetI44Value; + property I44IsNull: Boolean read GetI44IsNull write SetI44IsNull; + property I46: Float read GetI46Value write SetI46Value; + property I46IsNull: Boolean read GetI46IsNull write SetI46IsNull; + property I48: Float read GetI48Value write SetI48Value; + property I48IsNull: Boolean read GetI48IsNull write SetI48IsNull; + property TI: Float read GetTIValue write SetTIValue; + property TIIsNull: Boolean read GetTIIsNull write SetTIIsNull; + property K38: Float read GetK38Value write SetK38Value; + property K38IsNull: Boolean read GetK38IsNull write SetK38IsNull; + property K40: Float read GetK40Value write SetK40Value; + property K40IsNull: Boolean read GetK40IsNull write SetK40IsNull; + property K42: Float read GetK42Value write SetK42Value; + property K42IsNull: Boolean read GetK42IsNull write SetK42IsNull; + property K44: Float read GetK44Value write SetK44Value; + property K44IsNull: Boolean read GetK44IsNull write SetK44IsNull; + property K46: Float read GetK46Value write SetK46Value; + property K46IsNull: Boolean read GetK46IsNull write SetK46IsNull; + property K48: Float read GetK48Value write SetK48Value; + property K48IsNull: Boolean read GetK48IsNull write SetK48IsNull; + property TK: Float read GetTKValue write SetTKValue; + property TKIsNull: Boolean read GetTKIsNull write SetTKIsNull; + property D38: Float read GetD38Value write SetD38Value; + property D38IsNull: Boolean read GetD38IsNull write SetD38IsNull; + property D40: Float read GetD40Value write SetD40Value; + property D40IsNull: Boolean read GetD40IsNull write SetD40IsNull; + property D42: Float read GetD42Value write SetD42Value; + property D42IsNull: Boolean read GetD42IsNull write SetD42IsNull; + property D44: Float read GetD44Value write SetD44Value; + property D44IsNull: Boolean read GetD44IsNull write SetD44IsNull; + property D46: Float read GetD46Value write SetD46Value; + property D46IsNull: Boolean read GetD46IsNull write SetD46IsNull; + property D48: Float read GetD48Value write SetD48Value; + property D48IsNull: Boolean read GetD48IsNull write SetD48IsNull; + property DT: Float read GetDTValue write SetDTValue; + property DTIsNull: Boolean read GetDTIsNull write SetDTIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants, uROBinaryHelpers; + +{ TStockPrendasCentrosDataTableRules } +constructor TStockPrendasCentrosDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TStockPrendasCentrosDataTableRules.Destroy; +begin + inherited; +end; + +function TStockPrendasCentrosDataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_StockPrendasCentrosCODIGO].AsString; +end; + +procedure TStockPrendasCentrosDataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_StockPrendasCentrosCODIGO].AsString := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetCODIGOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosCODIGO].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosCODIGO].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockPrendasCentrosPRODUCTO].AsString; +end; + +procedure TStockPrendasCentrosDataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockPrendasCentrosPRODUCTO].AsString := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosPRODUCTO].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosPRODUCTO].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetTIPO_PRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockPrendasCentrosTIPO_PRODUCTO].AsString; +end; + +procedure TStockPrendasCentrosDataTableRules.SetTIPO_PRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockPrendasCentrosTIPO_PRODUCTO].AsString := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetTIPO_PRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosTIPO_PRODUCTO].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetTIPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosTIPO_PRODUCTO].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetGRUPO_PRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockPrendasCentrosGRUPO_PRODUCTO].AsString; +end; + +procedure TStockPrendasCentrosDataTableRules.SetGRUPO_PRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockPrendasCentrosGRUPO_PRODUCTO].AsString := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetGRUPO_PRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosGRUPO_PRODUCTO].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosGRUPO_PRODUCTO].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetCOLECCIONValue: String; +begin + result := DataTable.Fields[idx_StockPrendasCentrosCOLECCION].AsString; +end; + +procedure TStockPrendasCentrosDataTableRules.SetCOLECCIONValue(const aValue: String); +begin + DataTable.Fields[idx_StockPrendasCentrosCOLECCION].AsString := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetCOLECCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosCOLECCION].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosCOLECCION].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_StockPrendasCentrosCOLOR].AsString; +end; + +procedure TStockPrendasCentrosDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_StockPrendasCentrosCOLOR].AsString := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetCOLORIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosCOLOR].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosCOLOR].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetT38Value: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT38].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosT38].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetT38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT38].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosT38].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetT40Value: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT40].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosT40].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetT40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT40].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosT40].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetT42Value: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT42].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosT42].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetT42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT42].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosT42].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetT44Value: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT44].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosT44].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetT44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT44].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosT44].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetT46Value: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT46].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosT46].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetT46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT46].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosT46].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetT48Value: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT48].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosT48].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetT48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosT48].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetT48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosT48].AsVariant := Null; +end; + +function TStockPrendasCentrosDataTableRules.GetTOTALValue: Float; +begin + result := DataTable.Fields[idx_StockPrendasCentrosTOTAL].AsFloat; +end; + +procedure TStockPrendasCentrosDataTableRules.SetTOTALValue(const aValue: Float); +begin + DataTable.Fields[idx_StockPrendasCentrosTOTAL].AsFloat := aValue; +end; + +function TStockPrendasCentrosDataTableRules.GetTOTALIsNull: boolean; +begin + result := DataTable.Fields[idx_StockPrendasCentrosTOTAL].IsNull; +end; + +procedure TStockPrendasCentrosDataTableRules.SetTOTALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockPrendasCentrosTOTAL].AsVariant := Null; +end; + + +{ TStockEDIDataTableRules } +constructor TStockEDIDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TStockEDIDataTableRules.Destroy; +begin + inherited; +end; + +function TStockEDIDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_StockEDICENTRO].AsString; +end; + +procedure TStockEDIDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDICENTRO].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDICENTRO].IsNull; +end; + +procedure TStockEDIDataTableRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDICENTRO].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetFILIALValue: String; +begin + result := DataTable.Fields[idx_StockEDIFILIAL].AsString; +end; + +procedure TStockEDIDataTableRules.SetFILIALValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIFILIAL].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetFILIALIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIFILIAL].IsNull; +end; + +procedure TStockEDIDataTableRules.SetFILIALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIFILIAL].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_StockEDICODIGO].AsString; +end; + +procedure TStockEDIDataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDICODIGO].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetCODIGOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDICODIGO].IsNull; +end; + +procedure TStockEDIDataTableRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDICODIGO].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockEDIPRODUCTO].AsString; +end; + +procedure TStockEDIDataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIPRODUCTO].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIPRODUCTO].IsNull; +end; + +procedure TStockEDIDataTableRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIPRODUCTO].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetTIPO_PRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockEDITIPO_PRODUCTO].AsString; +end; + +procedure TStockEDIDataTableRules.SetTIPO_PRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDITIPO_PRODUCTO].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetTIPO_PRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDITIPO_PRODUCTO].IsNull; +end; + +procedure TStockEDIDataTableRules.SetTIPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDITIPO_PRODUCTO].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetGRUPO_PRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockEDIGRUPO_PRODUCTO].AsString; +end; + +procedure TStockEDIDataTableRules.SetGRUPO_PRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIGRUPO_PRODUCTO].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetGRUPO_PRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIGRUPO_PRODUCTO].IsNull; +end; + +procedure TStockEDIDataTableRules.SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIGRUPO_PRODUCTO].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetCOLECCIONValue: String; +begin + result := DataTable.Fields[idx_StockEDICOLECCION].AsString; +end; + +procedure TStockEDIDataTableRules.SetCOLECCIONValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDICOLECCION].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetCOLECCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDICOLECCION].IsNull; +end; + +procedure TStockEDIDataTableRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDICOLECCION].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_StockEDICOLOR].AsString; +end; + +procedure TStockEDIDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDICOLOR].AsString := aValue; +end; + +function TStockEDIDataTableRules.GetCOLORIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDICOLOR].IsNull; +end; + +procedure TStockEDIDataTableRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDICOLOR].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetE38Value: Float; +begin + result := DataTable.Fields[idx_StockEDIE38].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetE38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIE38].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetE38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIE38].IsNull; +end; + +procedure TStockEDIDataTableRules.SetE38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIE38].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetE40Value: Float; +begin + result := DataTable.Fields[idx_StockEDIE40].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetE40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIE40].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetE40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIE40].IsNull; +end; + +procedure TStockEDIDataTableRules.SetE40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIE40].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetE42Value: Float; +begin + result := DataTable.Fields[idx_StockEDIE42].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetE42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIE42].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetE42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIE42].IsNull; +end; + +procedure TStockEDIDataTableRules.SetE42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIE42].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetE44Value: Float; +begin + result := DataTable.Fields[idx_StockEDIE44].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetE44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIE44].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetE44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIE44].IsNull; +end; + +procedure TStockEDIDataTableRules.SetE44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIE44].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetE46Value: Float; +begin + result := DataTable.Fields[idx_StockEDIE46].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetE46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIE46].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetE46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIE46].IsNull; +end; + +procedure TStockEDIDataTableRules.SetE46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIE46].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetE48Value: Float; +begin + result := DataTable.Fields[idx_StockEDIE48].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetE48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIE48].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetE48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIE48].IsNull; +end; + +procedure TStockEDIDataTableRules.SetE48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIE48].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetTEValue: Float; +begin + result := DataTable.Fields[idx_StockEDITE].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetTEValue(const aValue: Float); +begin + DataTable.Fields[idx_StockEDITE].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetTEIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDITE].IsNull; +end; + +procedure TStockEDIDataTableRules.SetTEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDITE].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetS38Value: Float; +begin + result := DataTable.Fields[idx_StockEDIS38].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetS38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIS38].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetS38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIS38].IsNull; +end; + +procedure TStockEDIDataTableRules.SetS38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIS38].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetS40Value: Float; +begin + result := DataTable.Fields[idx_StockEDIS40].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetS40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIS40].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetS40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIS40].IsNull; +end; + +procedure TStockEDIDataTableRules.SetS40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIS40].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetS42Value: Float; +begin + result := DataTable.Fields[idx_StockEDIS42].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetS42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIS42].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetS42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIS42].IsNull; +end; + +procedure TStockEDIDataTableRules.SetS42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIS42].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetS44Value: Float; +begin + result := DataTable.Fields[idx_StockEDIS44].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetS44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIS44].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetS44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIS44].IsNull; +end; + +procedure TStockEDIDataTableRules.SetS44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIS44].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetS46Value: Float; +begin + result := DataTable.Fields[idx_StockEDIS46].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetS46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIS46].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetS46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIS46].IsNull; +end; + +procedure TStockEDIDataTableRules.SetS46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIS46].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetS48Value: Float; +begin + result := DataTable.Fields[idx_StockEDIS48].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetS48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIS48].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetS48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIS48].IsNull; +end; + +procedure TStockEDIDataTableRules.SetS48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIS48].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetTSValue: Float; +begin + result := DataTable.Fields[idx_StockEDITS].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetTSValue(const aValue: Float); +begin + DataTable.Fields[idx_StockEDITS].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetTSIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDITS].IsNull; +end; + +procedure TStockEDIDataTableRules.SetTSIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDITS].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetK38Value: Float; +begin + result := DataTable.Fields[idx_StockEDIK38].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetK38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIK38].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetK38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIK38].IsNull; +end; + +procedure TStockEDIDataTableRules.SetK38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIK38].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetK40Value: Float; +begin + result := DataTable.Fields[idx_StockEDIK40].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetK40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIK40].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetK40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIK40].IsNull; +end; + +procedure TStockEDIDataTableRules.SetK40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIK40].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetK42Value: Float; +begin + result := DataTable.Fields[idx_StockEDIK42].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetK42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIK42].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetK42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIK42].IsNull; +end; + +procedure TStockEDIDataTableRules.SetK42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIK42].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetK44Value: Float; +begin + result := DataTable.Fields[idx_StockEDIK44].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetK44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIK44].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetK44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIK44].IsNull; +end; + +procedure TStockEDIDataTableRules.SetK44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIK44].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetK46Value: Float; +begin + result := DataTable.Fields[idx_StockEDIK46].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetK46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIK46].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetK46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIK46].IsNull; +end; + +procedure TStockEDIDataTableRules.SetK46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIK46].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetK48Value: Float; +begin + result := DataTable.Fields[idx_StockEDIK48].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetK48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIK48].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetK48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIK48].IsNull; +end; + +procedure TStockEDIDataTableRules.SetK48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIK48].AsVariant := Null; +end; + +function TStockEDIDataTableRules.GetKTValue: Float; +begin + result := DataTable.Fields[idx_StockEDIKT].AsFloat; +end; + +procedure TStockEDIDataTableRules.SetKTValue(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIKT].AsFloat := aValue; +end; + +function TStockEDIDataTableRules.GetKTIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIKT].IsNull; +end; + +procedure TStockEDIDataTableRules.SetKTIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIKT].AsVariant := Null; +end; + + +{ TStockVARELADataTableRules } +constructor TStockVARELADataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TStockVARELADataTableRules.Destroy; +begin + inherited; +end; + +function TStockVARELADataTableRules.GetFILIALValue: String; +begin + result := DataTable.Fields[idx_StockVARELAFILIAL].AsString; +end; + +procedure TStockVARELADataTableRules.SetFILIALValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELAFILIAL].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetFILIALIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAFILIAL].IsNull; +end; + +procedure TStockVARELADataTableRules.SetFILIALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAFILIAL].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_StockVARELACODIGO].AsString; +end; + +procedure TStockVARELADataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELACODIGO].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetCODIGOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELACODIGO].IsNull; +end; + +procedure TStockVARELADataTableRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELACODIGO].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_StockVARELACOLOR].AsString; +end; + +procedure TStockVARELADataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELACOLOR].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetCOLORIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELACOLOR].IsNull; +end; + +procedure TStockVARELADataTableRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELACOLOR].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockVARELAPRODUCTO].AsString; +end; + +procedure TStockVARELADataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELAPRODUCTO].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAPRODUCTO].IsNull; +end; + +procedure TStockVARELADataTableRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAPRODUCTO].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetTIPO_PRODUTOValue: String; +begin + result := DataTable.Fields[idx_StockVARELATIPO_PRODUTO].AsString; +end; + +procedure TStockVARELADataTableRules.SetTIPO_PRODUTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELATIPO_PRODUTO].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetTIPO_PRODUTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELATIPO_PRODUTO].IsNull; +end; + +procedure TStockVARELADataTableRules.SetTIPO_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELATIPO_PRODUTO].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetGRUPO_PRODUTOValue: String; +begin + result := DataTable.Fields[idx_StockVARELAGRUPO_PRODUTO].AsString; +end; + +procedure TStockVARELADataTableRules.SetGRUPO_PRODUTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELAGRUPO_PRODUTO].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetGRUPO_PRODUTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAGRUPO_PRODUTO].IsNull; +end; + +procedure TStockVARELADataTableRules.SetGRUPO_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAGRUPO_PRODUTO].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetCOLECCIONValue: String; +begin + result := DataTable.Fields[idx_StockVARELACOLECCION].AsString; +end; + +procedure TStockVARELADataTableRules.SetCOLECCIONValue(const aValue: String); +begin + DataTable.Fields[idx_StockVARELACOLECCION].AsString := aValue; +end; + +function TStockVARELADataTableRules.GetCOLECCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELACOLECCION].IsNull; +end; + +procedure TStockVARELADataTableRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELACOLECCION].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetK38Value: Integer; +begin + result := DataTable.Fields[idx_StockVARELAK38].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetK38Value(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAK38].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetK38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAK38].IsNull; +end; + +procedure TStockVARELADataTableRules.SetK38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAK38].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetK40Value: Integer; +begin + result := DataTable.Fields[idx_StockVARELAK40].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetK40Value(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAK40].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetK40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAK40].IsNull; +end; + +procedure TStockVARELADataTableRules.SetK40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAK40].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetK42Value: Integer; +begin + result := DataTable.Fields[idx_StockVARELAK42].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetK42Value(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAK42].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetK42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAK42].IsNull; +end; + +procedure TStockVARELADataTableRules.SetK42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAK42].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetK44Value: Integer; +begin + result := DataTable.Fields[idx_StockVARELAK44].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetK44Value(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAK44].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetK44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAK44].IsNull; +end; + +procedure TStockVARELADataTableRules.SetK44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAK44].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetK46Value: Integer; +begin + result := DataTable.Fields[idx_StockVARELAK46].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetK46Value(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAK46].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetK46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAK46].IsNull; +end; + +procedure TStockVARELADataTableRules.SetK46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAK46].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetK48Value: Integer; +begin + result := DataTable.Fields[idx_StockVARELAK48].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetK48Value(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAK48].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetK48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAK48].IsNull; +end; + +procedure TStockVARELADataTableRules.SetK48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAK48].AsVariant := Null; +end; + +function TStockVARELADataTableRules.GetKTValue: Integer; +begin + result := DataTable.Fields[idx_StockVARELAKT].AsInteger; +end; + +procedure TStockVARELADataTableRules.SetKTValue(const aValue: Integer); +begin + DataTable.Fields[idx_StockVARELAKT].AsInteger := aValue; +end; + +function TStockVARELADataTableRules.GetKTIsNull: boolean; +begin + result := DataTable.Fields[idx_StockVARELAKT].IsNull; +end; + +procedure TStockVARELADataTableRules.SetKTIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockVARELAKT].AsVariant := Null; +end; + + +{ TStockEDIInventarioDataTableRules } +constructor TStockEDIInventarioDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TStockEDIInventarioDataTableRules.Destroy; +begin + inherited; +end; + +function TStockEDIInventarioDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioCENTRO].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioCENTRO].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioCENTRO].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioCENTRO].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetFILIALValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioFILIAL].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetFILIALValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioFILIAL].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetFILIALIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioFILIAL].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetFILIALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioFILIAL].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioCODIGO].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioCODIGO].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetCODIGOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioCODIGO].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioCODIGO].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioPRODUCTO].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioPRODUCTO].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioPRODUCTO].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioPRODUCTO].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioCOLOR].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioCOLOR].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetCOLORIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioCOLOR].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioCOLOR].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetTIPO_PRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioTIPO_PRODUCTO].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetTIPO_PRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioTIPO_PRODUCTO].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetTIPO_PRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioTIPO_PRODUCTO].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetTIPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioTIPO_PRODUCTO].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetGRUPO_PRODUCTOValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioGRUPO_PRODUCTO].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetGRUPO_PRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioGRUPO_PRODUCTO].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetGRUPO_PRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioGRUPO_PRODUCTO].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioGRUPO_PRODUCTO].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetCOLECCIONValue: String; +begin + result := DataTable.Fields[idx_StockEDIInventarioCOLECCION].AsString; +end; + +procedure TStockEDIInventarioDataTableRules.SetCOLECCIONValue(const aValue: String); +begin + DataTable.Fields[idx_StockEDIInventarioCOLECCION].AsString := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetCOLECCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioCOLECCION].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioCOLECCION].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetI38Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioI38].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetI38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioI38].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetI38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioI38].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetI38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioI38].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetI40Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioI40].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetI40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioI40].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetI40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioI40].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetI40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioI40].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetI42Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioI42].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetI42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioI42].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetI42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioI42].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetI42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioI42].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetI44Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioI44].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetI44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioI44].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetI44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioI44].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetI44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioI44].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetI46Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioI46].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetI46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioI46].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetI46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioI46].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetI46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioI46].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetI48Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioI48].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetI48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioI48].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetI48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioI48].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetI48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioI48].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetTIValue: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioTI].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetTIValue(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioTI].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetTIIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioTI].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetTIIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioTI].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetK38Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioK38].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetK38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioK38].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetK38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioK38].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetK38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioK38].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetK40Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioK40].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetK40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioK40].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetK40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioK40].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetK40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioK40].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetK42Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioK42].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetK42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioK42].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetK42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioK42].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetK42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioK42].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetK44Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioK44].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetK44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioK44].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetK44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioK44].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetK44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioK44].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetK46Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioK46].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetK46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioK46].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetK46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioK46].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetK46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioK46].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetK48Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioK48].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetK48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioK48].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetK48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioK48].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetK48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioK48].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetTKValue: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioTK].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetTKValue(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioTK].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetTKIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioTK].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetTKIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioTK].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetD38Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioD38].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetD38Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioD38].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetD38IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioD38].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetD38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioD38].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetD40Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioD40].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetD40Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioD40].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetD40IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioD40].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetD40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioD40].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetD42Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioD42].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetD42Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioD42].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetD42IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioD42].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetD42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioD42].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetD44Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioD44].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetD44Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioD44].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetD44IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioD44].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetD44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioD44].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetD46Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioD46].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetD46Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioD46].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetD46IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioD46].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetD46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioD46].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetD48Value: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioD48].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetD48Value(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioD48].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetD48IsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioD48].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetD48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioD48].AsVariant := Null; +end; + +function TStockEDIInventarioDataTableRules.GetDTValue: Float; +begin + result := DataTable.Fields[idx_StockEDIInventarioDT].AsFloat; +end; + +procedure TStockEDIInventarioDataTableRules.SetDTValue(const aValue: Float); +begin + DataTable.Fields[idx_StockEDIInventarioDT].AsFloat := aValue; +end; + +function TStockEDIInventarioDataTableRules.GetDTIsNull: boolean; +begin + result := DataTable.Fields[idx_StockEDIInventarioDT].IsNull; +end; + +procedure TStockEDIInventarioDataTableRules.SetDTIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_StockEDIInventarioDT].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID_StockPrendasCentros, TStockPrendasCentrosDataTableRules); + RegisterDataTableRules(RID_StockEDI, TStockEDIDataTableRules); + RegisterDataTableRules(RID_StockVARELA, TStockVARELADataTableRules); + RegisterDataTableRules(RID_StockEDIInventario, TStockEDIInventarioDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/Stock/Reglas/schStockServer_Intf.pas b/2.1.0/Source/Modulos/Stock/Reglas/schStockServer_Intf.pas new file mode 100644 index 0000000..80589f2 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Reglas/schStockServer_Intf.pas @@ -0,0 +1,3820 @@ +unit schStockServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schStockClient_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_StockPrendasCentrosDelta = '{94925BB7-FFD2-475A-A052-E01FC8FC1395}'; + RID_StockEDIDelta = '{DDCD4C21-842E-4BDF-8C1A-02A88AFC71A0}'; + RID_StockVARELADelta = '{4450D642-A9B5-48E4-8D11-D7950511CBA8}'; + RID_StockEDIInventarioDelta = '{4800774F-6C4A-4699-94ED-9BCAA7E34704}'; + +type + { IStockPrendasCentrosDelta } + IStockPrendasCentrosDelta = interface(IStockPrendasCentros) + ['{94925BB7-FFD2-475A-A052-E01FC8FC1395}'] + { Property getters and setters } + function GetOldCODIGOValue : String; + function GetOldPRODUCTOValue : String; + function GetOldTIPO_PRODUCTOValue : String; + function GetOldGRUPO_PRODUCTOValue : String; + function GetOldCOLECCIONValue : String; + function GetOldCOLORValue : String; + function GetOldT38Value : Float; + function GetOldT40Value : Float; + function GetOldT42Value : Float; + function GetOldT44Value : Float; + function GetOldT46Value : Float; + function GetOldT48Value : Float; + function GetOldTOTALValue : Float; + + { Properties } + property OldCODIGO : String read GetOldCODIGOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldTIPO_PRODUCTO : String read GetOldTIPO_PRODUCTOValue; + property OldGRUPO_PRODUCTO : String read GetOldGRUPO_PRODUCTOValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldT38 : Float read GetOldT38Value; + property OldT40 : Float read GetOldT40Value; + property OldT42 : Float read GetOldT42Value; + property OldT44 : Float read GetOldT44Value; + property OldT46 : Float read GetOldT46Value; + property OldT48 : Float read GetOldT48Value; + property OldTOTAL : Float read GetOldTOTALValue; + end; + + { TStockPrendasCentrosBusinessProcessorRules } + TStockPrendasCentrosBusinessProcessorRules = class(TDABusinessProcessorRules, IStockPrendasCentros, IStockPrendasCentrosDelta) + private + protected + { Property getters and setters } + function GetCODIGOValue: String; virtual; + function GetCODIGOIsNull: Boolean; virtual; + function GetOldCODIGOValue: String; virtual; + function GetOldCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + function GetOldPRODUCTOValue: String; virtual; + function GetOldPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUCTOValue: String; virtual; + function GetTIPO_PRODUCTOIsNull: Boolean; virtual; + function GetOldTIPO_PRODUCTOValue: String; virtual; + function GetOldTIPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUCTOValue(const aValue: String); virtual; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUCTOValue: String; virtual; + function GetGRUPO_PRODUCTOIsNull: Boolean; virtual; + function GetOldGRUPO_PRODUCTOValue: String; virtual; + function GetOldGRUPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); virtual; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + function GetOldCOLECCIONValue: String; virtual; + function GetOldCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + function GetCOLORIsNull: Boolean; virtual; + function GetOldCOLORValue: String; virtual; + function GetOldCOLORIsNull: Boolean; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetT38Value: Float; virtual; + function GetT38IsNull: Boolean; virtual; + function GetOldT38Value: Float; virtual; + function GetOldT38IsNull: Boolean; virtual; + procedure SetT38Value(const aValue: Float); virtual; + procedure SetT38IsNull(const aValue: Boolean); virtual; + function GetT40Value: Float; virtual; + function GetT40IsNull: Boolean; virtual; + function GetOldT40Value: Float; virtual; + function GetOldT40IsNull: Boolean; virtual; + procedure SetT40Value(const aValue: Float); virtual; + procedure SetT40IsNull(const aValue: Boolean); virtual; + function GetT42Value: Float; virtual; + function GetT42IsNull: Boolean; virtual; + function GetOldT42Value: Float; virtual; + function GetOldT42IsNull: Boolean; virtual; + procedure SetT42Value(const aValue: Float); virtual; + procedure SetT42IsNull(const aValue: Boolean); virtual; + function GetT44Value: Float; virtual; + function GetT44IsNull: Boolean; virtual; + function GetOldT44Value: Float; virtual; + function GetOldT44IsNull: Boolean; virtual; + procedure SetT44Value(const aValue: Float); virtual; + procedure SetT44IsNull(const aValue: Boolean); virtual; + function GetT46Value: Float; virtual; + function GetT46IsNull: Boolean; virtual; + function GetOldT46Value: Float; virtual; + function GetOldT46IsNull: Boolean; virtual; + procedure SetT46Value(const aValue: Float); virtual; + procedure SetT46IsNull(const aValue: Boolean); virtual; + function GetT48Value: Float; virtual; + function GetT48IsNull: Boolean; virtual; + function GetOldT48Value: Float; virtual; + function GetOldT48IsNull: Boolean; virtual; + procedure SetT48Value(const aValue: Float); virtual; + procedure SetT48IsNull(const aValue: Boolean); virtual; + function GetTOTALValue: Float; virtual; + function GetTOTALIsNull: Boolean; virtual; + function GetOldTOTALValue: Float; virtual; + function GetOldTOTALIsNull: Boolean; virtual; + procedure SetTOTALValue(const aValue: Float); virtual; + procedure SetTOTALIsNull(const aValue: Boolean); virtual; + + { Properties } + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull : Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCODIGOIsNull : Boolean read GetOldCODIGOIsNull; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull : Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldPRODUCTOIsNull : Boolean read GetOldPRODUCTOIsNull; + property TIPO_PRODUCTO : String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull : Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property OldTIPO_PRODUCTO : String read GetOldTIPO_PRODUCTOValue; + property OldTIPO_PRODUCTOIsNull : Boolean read GetOldTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO : String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull : Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property OldGRUPO_PRODUCTO : String read GetOldGRUPO_PRODUCTOValue; + property OldGRUPO_PRODUCTOIsNull : Boolean read GetOldGRUPO_PRODUCTOIsNull; + property COLECCION : String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull : Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLECCIONIsNull : Boolean read GetOldCOLECCIONIsNull; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property COLORIsNull : Boolean read GetCOLORIsNull write SetCOLORIsNull; + property OldCOLOR : String read GetOldCOLORValue; + property OldCOLORIsNull : Boolean read GetOldCOLORIsNull; + property T38 : Float read GetT38Value write SetT38Value; + property T38IsNull : Boolean read GetT38IsNull write SetT38IsNull; + property OldT38 : Float read GetOldT38Value; + property OldT38IsNull : Boolean read GetOldT38IsNull; + property T40 : Float read GetT40Value write SetT40Value; + property T40IsNull : Boolean read GetT40IsNull write SetT40IsNull; + property OldT40 : Float read GetOldT40Value; + property OldT40IsNull : Boolean read GetOldT40IsNull; + property T42 : Float read GetT42Value write SetT42Value; + property T42IsNull : Boolean read GetT42IsNull write SetT42IsNull; + property OldT42 : Float read GetOldT42Value; + property OldT42IsNull : Boolean read GetOldT42IsNull; + property T44 : Float read GetT44Value write SetT44Value; + property T44IsNull : Boolean read GetT44IsNull write SetT44IsNull; + property OldT44 : Float read GetOldT44Value; + property OldT44IsNull : Boolean read GetOldT44IsNull; + property T46 : Float read GetT46Value write SetT46Value; + property T46IsNull : Boolean read GetT46IsNull write SetT46IsNull; + property OldT46 : Float read GetOldT46Value; + property OldT46IsNull : Boolean read GetOldT46IsNull; + property T48 : Float read GetT48Value write SetT48Value; + property T48IsNull : Boolean read GetT48IsNull write SetT48IsNull; + property OldT48 : Float read GetOldT48Value; + property OldT48IsNull : Boolean read GetOldT48IsNull; + property TOTAL : Float read GetTOTALValue write SetTOTALValue; + property TOTALIsNull : Boolean read GetTOTALIsNull write SetTOTALIsNull; + property OldTOTAL : Float read GetOldTOTALValue; + property OldTOTALIsNull : Boolean read GetOldTOTALIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IStockEDIDelta } + IStockEDIDelta = interface(IStockEDI) + ['{DDCD4C21-842E-4BDF-8C1A-02A88AFC71A0}'] + { Property getters and setters } + function GetOldCENTROValue : String; + function GetOldFILIALValue : String; + function GetOldCODIGOValue : String; + function GetOldPRODUCTOValue : String; + function GetOldTIPO_PRODUCTOValue : String; + function GetOldGRUPO_PRODUCTOValue : String; + function GetOldCOLECCIONValue : String; + function GetOldCOLORValue : String; + function GetOldE38Value : Float; + function GetOldE40Value : Float; + function GetOldE42Value : Float; + function GetOldE44Value : Float; + function GetOldE46Value : Float; + function GetOldE48Value : Float; + function GetOldTEValue : Float; + function GetOldS38Value : Float; + function GetOldS40Value : Float; + function GetOldS42Value : Float; + function GetOldS44Value : Float; + function GetOldS46Value : Float; + function GetOldS48Value : Float; + function GetOldTSValue : Float; + function GetOldK38Value : Float; + function GetOldK40Value : Float; + function GetOldK42Value : Float; + function GetOldK44Value : Float; + function GetOldK46Value : Float; + function GetOldK48Value : Float; + function GetOldKTValue : Float; + + { Properties } + property OldCENTRO : String read GetOldCENTROValue; + property OldFILIAL : String read GetOldFILIALValue; + property OldCODIGO : String read GetOldCODIGOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldTIPO_PRODUCTO : String read GetOldTIPO_PRODUCTOValue; + property OldGRUPO_PRODUCTO : String read GetOldGRUPO_PRODUCTOValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldE38 : Float read GetOldE38Value; + property OldE40 : Float read GetOldE40Value; + property OldE42 : Float read GetOldE42Value; + property OldE44 : Float read GetOldE44Value; + property OldE46 : Float read GetOldE46Value; + property OldE48 : Float read GetOldE48Value; + property OldTE : Float read GetOldTEValue; + property OldS38 : Float read GetOldS38Value; + property OldS40 : Float read GetOldS40Value; + property OldS42 : Float read GetOldS42Value; + property OldS44 : Float read GetOldS44Value; + property OldS46 : Float read GetOldS46Value; + property OldS48 : Float read GetOldS48Value; + property OldTS : Float read GetOldTSValue; + property OldK38 : Float read GetOldK38Value; + property OldK40 : Float read GetOldK40Value; + property OldK42 : Float read GetOldK42Value; + property OldK44 : Float read GetOldK44Value; + property OldK46 : Float read GetOldK46Value; + property OldK48 : Float read GetOldK48Value; + property OldKT : Float read GetOldKTValue; + end; + + { TStockEDIBusinessProcessorRules } + TStockEDIBusinessProcessorRules = class(TDABusinessProcessorRules, IStockEDI, IStockEDIDelta) + private + protected + { Property getters and setters } + function GetCENTROValue: String; virtual; + function GetCENTROIsNull: Boolean; virtual; + function GetOldCENTROValue: String; virtual; + function GetOldCENTROIsNull: Boolean; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetFILIALValue: String; virtual; + function GetFILIALIsNull: Boolean; virtual; + function GetOldFILIALValue: String; virtual; + function GetOldFILIALIsNull: Boolean; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + procedure SetFILIALIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + function GetCODIGOIsNull: Boolean; virtual; + function GetOldCODIGOValue: String; virtual; + function GetOldCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + function GetOldPRODUCTOValue: String; virtual; + function GetOldPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUCTOValue: String; virtual; + function GetTIPO_PRODUCTOIsNull: Boolean; virtual; + function GetOldTIPO_PRODUCTOValue: String; virtual; + function GetOldTIPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUCTOValue(const aValue: String); virtual; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUCTOValue: String; virtual; + function GetGRUPO_PRODUCTOIsNull: Boolean; virtual; + function GetOldGRUPO_PRODUCTOValue: String; virtual; + function GetOldGRUPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); virtual; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + function GetOldCOLECCIONValue: String; virtual; + function GetOldCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + function GetCOLORIsNull: Boolean; virtual; + function GetOldCOLORValue: String; virtual; + function GetOldCOLORIsNull: Boolean; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetE38Value: Float; virtual; + function GetE38IsNull: Boolean; virtual; + function GetOldE38Value: Float; virtual; + function GetOldE38IsNull: Boolean; virtual; + procedure SetE38Value(const aValue: Float); virtual; + procedure SetE38IsNull(const aValue: Boolean); virtual; + function GetE40Value: Float; virtual; + function GetE40IsNull: Boolean; virtual; + function GetOldE40Value: Float; virtual; + function GetOldE40IsNull: Boolean; virtual; + procedure SetE40Value(const aValue: Float); virtual; + procedure SetE40IsNull(const aValue: Boolean); virtual; + function GetE42Value: Float; virtual; + function GetE42IsNull: Boolean; virtual; + function GetOldE42Value: Float; virtual; + function GetOldE42IsNull: Boolean; virtual; + procedure SetE42Value(const aValue: Float); virtual; + procedure SetE42IsNull(const aValue: Boolean); virtual; + function GetE44Value: Float; virtual; + function GetE44IsNull: Boolean; virtual; + function GetOldE44Value: Float; virtual; + function GetOldE44IsNull: Boolean; virtual; + procedure SetE44Value(const aValue: Float); virtual; + procedure SetE44IsNull(const aValue: Boolean); virtual; + function GetE46Value: Float; virtual; + function GetE46IsNull: Boolean; virtual; + function GetOldE46Value: Float; virtual; + function GetOldE46IsNull: Boolean; virtual; + procedure SetE46Value(const aValue: Float); virtual; + procedure SetE46IsNull(const aValue: Boolean); virtual; + function GetE48Value: Float; virtual; + function GetE48IsNull: Boolean; virtual; + function GetOldE48Value: Float; virtual; + function GetOldE48IsNull: Boolean; virtual; + procedure SetE48Value(const aValue: Float); virtual; + procedure SetE48IsNull(const aValue: Boolean); virtual; + function GetTEValue: Float; virtual; + function GetTEIsNull: Boolean; virtual; + function GetOldTEValue: Float; virtual; + function GetOldTEIsNull: Boolean; virtual; + procedure SetTEValue(const aValue: Float); virtual; + procedure SetTEIsNull(const aValue: Boolean); virtual; + function GetS38Value: Float; virtual; + function GetS38IsNull: Boolean; virtual; + function GetOldS38Value: Float; virtual; + function GetOldS38IsNull: Boolean; virtual; + procedure SetS38Value(const aValue: Float); virtual; + procedure SetS38IsNull(const aValue: Boolean); virtual; + function GetS40Value: Float; virtual; + function GetS40IsNull: Boolean; virtual; + function GetOldS40Value: Float; virtual; + function GetOldS40IsNull: Boolean; virtual; + procedure SetS40Value(const aValue: Float); virtual; + procedure SetS40IsNull(const aValue: Boolean); virtual; + function GetS42Value: Float; virtual; + function GetS42IsNull: Boolean; virtual; + function GetOldS42Value: Float; virtual; + function GetOldS42IsNull: Boolean; virtual; + procedure SetS42Value(const aValue: Float); virtual; + procedure SetS42IsNull(const aValue: Boolean); virtual; + function GetS44Value: Float; virtual; + function GetS44IsNull: Boolean; virtual; + function GetOldS44Value: Float; virtual; + function GetOldS44IsNull: Boolean; virtual; + procedure SetS44Value(const aValue: Float); virtual; + procedure SetS44IsNull(const aValue: Boolean); virtual; + function GetS46Value: Float; virtual; + function GetS46IsNull: Boolean; virtual; + function GetOldS46Value: Float; virtual; + function GetOldS46IsNull: Boolean; virtual; + procedure SetS46Value(const aValue: Float); virtual; + procedure SetS46IsNull(const aValue: Boolean); virtual; + function GetS48Value: Float; virtual; + function GetS48IsNull: Boolean; virtual; + function GetOldS48Value: Float; virtual; + function GetOldS48IsNull: Boolean; virtual; + procedure SetS48Value(const aValue: Float); virtual; + procedure SetS48IsNull(const aValue: Boolean); virtual; + function GetTSValue: Float; virtual; + function GetTSIsNull: Boolean; virtual; + function GetOldTSValue: Float; virtual; + function GetOldTSIsNull: Boolean; virtual; + procedure SetTSValue(const aValue: Float); virtual; + procedure SetTSIsNull(const aValue: Boolean); virtual; + function GetK38Value: Float; virtual; + function GetK38IsNull: Boolean; virtual; + function GetOldK38Value: Float; virtual; + function GetOldK38IsNull: Boolean; virtual; + procedure SetK38Value(const aValue: Float); virtual; + procedure SetK38IsNull(const aValue: Boolean); virtual; + function GetK40Value: Float; virtual; + function GetK40IsNull: Boolean; virtual; + function GetOldK40Value: Float; virtual; + function GetOldK40IsNull: Boolean; virtual; + procedure SetK40Value(const aValue: Float); virtual; + procedure SetK40IsNull(const aValue: Boolean); virtual; + function GetK42Value: Float; virtual; + function GetK42IsNull: Boolean; virtual; + function GetOldK42Value: Float; virtual; + function GetOldK42IsNull: Boolean; virtual; + procedure SetK42Value(const aValue: Float); virtual; + procedure SetK42IsNull(const aValue: Boolean); virtual; + function GetK44Value: Float; virtual; + function GetK44IsNull: Boolean; virtual; + function GetOldK44Value: Float; virtual; + function GetOldK44IsNull: Boolean; virtual; + procedure SetK44Value(const aValue: Float); virtual; + procedure SetK44IsNull(const aValue: Boolean); virtual; + function GetK46Value: Float; virtual; + function GetK46IsNull: Boolean; virtual; + function GetOldK46Value: Float; virtual; + function GetOldK46IsNull: Boolean; virtual; + procedure SetK46Value(const aValue: Float); virtual; + procedure SetK46IsNull(const aValue: Boolean); virtual; + function GetK48Value: Float; virtual; + function GetK48IsNull: Boolean; virtual; + function GetOldK48Value: Float; virtual; + function GetOldK48IsNull: Boolean; virtual; + procedure SetK48Value(const aValue: Float); virtual; + procedure SetK48IsNull(const aValue: Boolean); virtual; + function GetKTValue: Float; virtual; + function GetKTIsNull: Boolean; virtual; + function GetOldKTValue: Float; virtual; + function GetOldKTIsNull: Boolean; virtual; + procedure SetKTValue(const aValue: Float); virtual; + procedure SetKTIsNull(const aValue: Boolean); virtual; + + { Properties } + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull : Boolean read GetCENTROIsNull write SetCENTROIsNull; + property OldCENTRO : String read GetOldCENTROValue; + property OldCENTROIsNull : Boolean read GetOldCENTROIsNull; + property FILIAL : String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull : Boolean read GetFILIALIsNull write SetFILIALIsNull; + property OldFILIAL : String read GetOldFILIALValue; + property OldFILIALIsNull : Boolean read GetOldFILIALIsNull; + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull : Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCODIGOIsNull : Boolean read GetOldCODIGOIsNull; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull : Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldPRODUCTOIsNull : Boolean read GetOldPRODUCTOIsNull; + property TIPO_PRODUCTO : String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull : Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property OldTIPO_PRODUCTO : String read GetOldTIPO_PRODUCTOValue; + property OldTIPO_PRODUCTOIsNull : Boolean read GetOldTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO : String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull : Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property OldGRUPO_PRODUCTO : String read GetOldGRUPO_PRODUCTOValue; + property OldGRUPO_PRODUCTOIsNull : Boolean read GetOldGRUPO_PRODUCTOIsNull; + property COLECCION : String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull : Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLECCIONIsNull : Boolean read GetOldCOLECCIONIsNull; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property COLORIsNull : Boolean read GetCOLORIsNull write SetCOLORIsNull; + property OldCOLOR : String read GetOldCOLORValue; + property OldCOLORIsNull : Boolean read GetOldCOLORIsNull; + property E38 : Float read GetE38Value write SetE38Value; + property E38IsNull : Boolean read GetE38IsNull write SetE38IsNull; + property OldE38 : Float read GetOldE38Value; + property OldE38IsNull : Boolean read GetOldE38IsNull; + property E40 : Float read GetE40Value write SetE40Value; + property E40IsNull : Boolean read GetE40IsNull write SetE40IsNull; + property OldE40 : Float read GetOldE40Value; + property OldE40IsNull : Boolean read GetOldE40IsNull; + property E42 : Float read GetE42Value write SetE42Value; + property E42IsNull : Boolean read GetE42IsNull write SetE42IsNull; + property OldE42 : Float read GetOldE42Value; + property OldE42IsNull : Boolean read GetOldE42IsNull; + property E44 : Float read GetE44Value write SetE44Value; + property E44IsNull : Boolean read GetE44IsNull write SetE44IsNull; + property OldE44 : Float read GetOldE44Value; + property OldE44IsNull : Boolean read GetOldE44IsNull; + property E46 : Float read GetE46Value write SetE46Value; + property E46IsNull : Boolean read GetE46IsNull write SetE46IsNull; + property OldE46 : Float read GetOldE46Value; + property OldE46IsNull : Boolean read GetOldE46IsNull; + property E48 : Float read GetE48Value write SetE48Value; + property E48IsNull : Boolean read GetE48IsNull write SetE48IsNull; + property OldE48 : Float read GetOldE48Value; + property OldE48IsNull : Boolean read GetOldE48IsNull; + property TE : Float read GetTEValue write SetTEValue; + property TEIsNull : Boolean read GetTEIsNull write SetTEIsNull; + property OldTE : Float read GetOldTEValue; + property OldTEIsNull : Boolean read GetOldTEIsNull; + property S38 : Float read GetS38Value write SetS38Value; + property S38IsNull : Boolean read GetS38IsNull write SetS38IsNull; + property OldS38 : Float read GetOldS38Value; + property OldS38IsNull : Boolean read GetOldS38IsNull; + property S40 : Float read GetS40Value write SetS40Value; + property S40IsNull : Boolean read GetS40IsNull write SetS40IsNull; + property OldS40 : Float read GetOldS40Value; + property OldS40IsNull : Boolean read GetOldS40IsNull; + property S42 : Float read GetS42Value write SetS42Value; + property S42IsNull : Boolean read GetS42IsNull write SetS42IsNull; + property OldS42 : Float read GetOldS42Value; + property OldS42IsNull : Boolean read GetOldS42IsNull; + property S44 : Float read GetS44Value write SetS44Value; + property S44IsNull : Boolean read GetS44IsNull write SetS44IsNull; + property OldS44 : Float read GetOldS44Value; + property OldS44IsNull : Boolean read GetOldS44IsNull; + property S46 : Float read GetS46Value write SetS46Value; + property S46IsNull : Boolean read GetS46IsNull write SetS46IsNull; + property OldS46 : Float read GetOldS46Value; + property OldS46IsNull : Boolean read GetOldS46IsNull; + property S48 : Float read GetS48Value write SetS48Value; + property S48IsNull : Boolean read GetS48IsNull write SetS48IsNull; + property OldS48 : Float read GetOldS48Value; + property OldS48IsNull : Boolean read GetOldS48IsNull; + property TS : Float read GetTSValue write SetTSValue; + property TSIsNull : Boolean read GetTSIsNull write SetTSIsNull; + property OldTS : Float read GetOldTSValue; + property OldTSIsNull : Boolean read GetOldTSIsNull; + property K38 : Float read GetK38Value write SetK38Value; + property K38IsNull : Boolean read GetK38IsNull write SetK38IsNull; + property OldK38 : Float read GetOldK38Value; + property OldK38IsNull : Boolean read GetOldK38IsNull; + property K40 : Float read GetK40Value write SetK40Value; + property K40IsNull : Boolean read GetK40IsNull write SetK40IsNull; + property OldK40 : Float read GetOldK40Value; + property OldK40IsNull : Boolean read GetOldK40IsNull; + property K42 : Float read GetK42Value write SetK42Value; + property K42IsNull : Boolean read GetK42IsNull write SetK42IsNull; + property OldK42 : Float read GetOldK42Value; + property OldK42IsNull : Boolean read GetOldK42IsNull; + property K44 : Float read GetK44Value write SetK44Value; + property K44IsNull : Boolean read GetK44IsNull write SetK44IsNull; + property OldK44 : Float read GetOldK44Value; + property OldK44IsNull : Boolean read GetOldK44IsNull; + property K46 : Float read GetK46Value write SetK46Value; + property K46IsNull : Boolean read GetK46IsNull write SetK46IsNull; + property OldK46 : Float read GetOldK46Value; + property OldK46IsNull : Boolean read GetOldK46IsNull; + property K48 : Float read GetK48Value write SetK48Value; + property K48IsNull : Boolean read GetK48IsNull write SetK48IsNull; + property OldK48 : Float read GetOldK48Value; + property OldK48IsNull : Boolean read GetOldK48IsNull; + property KT : Float read GetKTValue write SetKTValue; + property KTIsNull : Boolean read GetKTIsNull write SetKTIsNull; + property OldKT : Float read GetOldKTValue; + property OldKTIsNull : Boolean read GetOldKTIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IStockVARELADelta } + IStockVARELADelta = interface(IStockVARELA) + ['{4450D642-A9B5-48E4-8D11-D7950511CBA8}'] + { Property getters and setters } + function GetOldFILIALValue : String; + function GetOldCODIGOValue : String; + function GetOldCOLORValue : String; + function GetOldPRODUCTOValue : String; + function GetOldTIPO_PRODUTOValue : String; + function GetOldGRUPO_PRODUTOValue : String; + function GetOldCOLECCIONValue : String; + function GetOldK38Value : Integer; + function GetOldK40Value : Integer; + function GetOldK42Value : Integer; + function GetOldK44Value : Integer; + function GetOldK46Value : Integer; + function GetOldK48Value : Integer; + function GetOldKTValue : Integer; + + { Properties } + property OldFILIAL : String read GetOldFILIALValue; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldTIPO_PRODUTO : String read GetOldTIPO_PRODUTOValue; + property OldGRUPO_PRODUTO : String read GetOldGRUPO_PRODUTOValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldK38 : Integer read GetOldK38Value; + property OldK40 : Integer read GetOldK40Value; + property OldK42 : Integer read GetOldK42Value; + property OldK44 : Integer read GetOldK44Value; + property OldK46 : Integer read GetOldK46Value; + property OldK48 : Integer read GetOldK48Value; + property OldKT : Integer read GetOldKTValue; + end; + + { TStockVARELABusinessProcessorRules } + TStockVARELABusinessProcessorRules = class(TDABusinessProcessorRules, IStockVARELA, IStockVARELADelta) + private + protected + { Property getters and setters } + function GetFILIALValue: String; virtual; + function GetFILIALIsNull: Boolean; virtual; + function GetOldFILIALValue: String; virtual; + function GetOldFILIALIsNull: Boolean; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + procedure SetFILIALIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + function GetCODIGOIsNull: Boolean; virtual; + function GetOldCODIGOValue: String; virtual; + function GetOldCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + function GetCOLORIsNull: Boolean; virtual; + function GetOldCOLORValue: String; virtual; + function GetOldCOLORIsNull: Boolean; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + function GetOldPRODUCTOValue: String; virtual; + function GetOldPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUTOValue: String; virtual; + function GetTIPO_PRODUTOIsNull: Boolean; virtual; + function GetOldTIPO_PRODUTOValue: String; virtual; + function GetOldTIPO_PRODUTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUTOValue(const aValue: String); virtual; + procedure SetTIPO_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUTOValue: String; virtual; + function GetGRUPO_PRODUTOIsNull: Boolean; virtual; + function GetOldGRUPO_PRODUTOValue: String; virtual; + function GetOldGRUPO_PRODUTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUTOValue(const aValue: String); virtual; + procedure SetGRUPO_PRODUTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + function GetOldCOLECCIONValue: String; virtual; + function GetOldCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetK38Value: Integer; virtual; + function GetK38IsNull: Boolean; virtual; + function GetOldK38Value: Integer; virtual; + function GetOldK38IsNull: Boolean; virtual; + procedure SetK38Value(const aValue: Integer); virtual; + procedure SetK38IsNull(const aValue: Boolean); virtual; + function GetK40Value: Integer; virtual; + function GetK40IsNull: Boolean; virtual; + function GetOldK40Value: Integer; virtual; + function GetOldK40IsNull: Boolean; virtual; + procedure SetK40Value(const aValue: Integer); virtual; + procedure SetK40IsNull(const aValue: Boolean); virtual; + function GetK42Value: Integer; virtual; + function GetK42IsNull: Boolean; virtual; + function GetOldK42Value: Integer; virtual; + function GetOldK42IsNull: Boolean; virtual; + procedure SetK42Value(const aValue: Integer); virtual; + procedure SetK42IsNull(const aValue: Boolean); virtual; + function GetK44Value: Integer; virtual; + function GetK44IsNull: Boolean; virtual; + function GetOldK44Value: Integer; virtual; + function GetOldK44IsNull: Boolean; virtual; + procedure SetK44Value(const aValue: Integer); virtual; + procedure SetK44IsNull(const aValue: Boolean); virtual; + function GetK46Value: Integer; virtual; + function GetK46IsNull: Boolean; virtual; + function GetOldK46Value: Integer; virtual; + function GetOldK46IsNull: Boolean; virtual; + procedure SetK46Value(const aValue: Integer); virtual; + procedure SetK46IsNull(const aValue: Boolean); virtual; + function GetK48Value: Integer; virtual; + function GetK48IsNull: Boolean; virtual; + function GetOldK48Value: Integer; virtual; + function GetOldK48IsNull: Boolean; virtual; + procedure SetK48Value(const aValue: Integer); virtual; + procedure SetK48IsNull(const aValue: Boolean); virtual; + function GetKTValue: Integer; virtual; + function GetKTIsNull: Boolean; virtual; + function GetOldKTValue: Integer; virtual; + function GetOldKTIsNull: Boolean; virtual; + procedure SetKTValue(const aValue: Integer); virtual; + procedure SetKTIsNull(const aValue: Boolean); virtual; + + { Properties } + property FILIAL : String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull : Boolean read GetFILIALIsNull write SetFILIALIsNull; + property OldFILIAL : String read GetOldFILIALValue; + property OldFILIALIsNull : Boolean read GetOldFILIALIsNull; + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull : Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCODIGOIsNull : Boolean read GetOldCODIGOIsNull; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property COLORIsNull : Boolean read GetCOLORIsNull write SetCOLORIsNull; + property OldCOLOR : String read GetOldCOLORValue; + property OldCOLORIsNull : Boolean read GetOldCOLORIsNull; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull : Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldPRODUCTOIsNull : Boolean read GetOldPRODUCTOIsNull; + property TIPO_PRODUTO : String read GetTIPO_PRODUTOValue write SetTIPO_PRODUTOValue; + property TIPO_PRODUTOIsNull : Boolean read GetTIPO_PRODUTOIsNull write SetTIPO_PRODUTOIsNull; + property OldTIPO_PRODUTO : String read GetOldTIPO_PRODUTOValue; + property OldTIPO_PRODUTOIsNull : Boolean read GetOldTIPO_PRODUTOIsNull; + property GRUPO_PRODUTO : String read GetGRUPO_PRODUTOValue write SetGRUPO_PRODUTOValue; + property GRUPO_PRODUTOIsNull : Boolean read GetGRUPO_PRODUTOIsNull write SetGRUPO_PRODUTOIsNull; + property OldGRUPO_PRODUTO : String read GetOldGRUPO_PRODUTOValue; + property OldGRUPO_PRODUTOIsNull : Boolean read GetOldGRUPO_PRODUTOIsNull; + property COLECCION : String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull : Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLECCIONIsNull : Boolean read GetOldCOLECCIONIsNull; + property K38 : Integer read GetK38Value write SetK38Value; + property K38IsNull : Boolean read GetK38IsNull write SetK38IsNull; + property OldK38 : Integer read GetOldK38Value; + property OldK38IsNull : Boolean read GetOldK38IsNull; + property K40 : Integer read GetK40Value write SetK40Value; + property K40IsNull : Boolean read GetK40IsNull write SetK40IsNull; + property OldK40 : Integer read GetOldK40Value; + property OldK40IsNull : Boolean read GetOldK40IsNull; + property K42 : Integer read GetK42Value write SetK42Value; + property K42IsNull : Boolean read GetK42IsNull write SetK42IsNull; + property OldK42 : Integer read GetOldK42Value; + property OldK42IsNull : Boolean read GetOldK42IsNull; + property K44 : Integer read GetK44Value write SetK44Value; + property K44IsNull : Boolean read GetK44IsNull write SetK44IsNull; + property OldK44 : Integer read GetOldK44Value; + property OldK44IsNull : Boolean read GetOldK44IsNull; + property K46 : Integer read GetK46Value write SetK46Value; + property K46IsNull : Boolean read GetK46IsNull write SetK46IsNull; + property OldK46 : Integer read GetOldK46Value; + property OldK46IsNull : Boolean read GetOldK46IsNull; + property K48 : Integer read GetK48Value write SetK48Value; + property K48IsNull : Boolean read GetK48IsNull write SetK48IsNull; + property OldK48 : Integer read GetOldK48Value; + property OldK48IsNull : Boolean read GetOldK48IsNull; + property KT : Integer read GetKTValue write SetKTValue; + property KTIsNull : Boolean read GetKTIsNull write SetKTIsNull; + property OldKT : Integer read GetOldKTValue; + property OldKTIsNull : Boolean read GetOldKTIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IStockEDIInventarioDelta } + IStockEDIInventarioDelta = interface(IStockEDIInventario) + ['{4800774F-6C4A-4699-94ED-9BCAA7E34704}'] + { Property getters and setters } + function GetOldCENTROValue : String; + function GetOldFILIALValue : String; + function GetOldCODIGOValue : String; + function GetOldPRODUCTOValue : String; + function GetOldCOLORValue : String; + function GetOldTIPO_PRODUCTOValue : String; + function GetOldGRUPO_PRODUCTOValue : String; + function GetOldCOLECCIONValue : String; + function GetOldI38Value : Float; + function GetOldI40Value : Float; + function GetOldI42Value : Float; + function GetOldI44Value : Float; + function GetOldI46Value : Float; + function GetOldI48Value : Float; + function GetOldTIValue : Float; + function GetOldK38Value : Float; + function GetOldK40Value : Float; + function GetOldK42Value : Float; + function GetOldK44Value : Float; + function GetOldK46Value : Float; + function GetOldK48Value : Float; + function GetOldTKValue : Float; + function GetOldD38Value : Float; + function GetOldD40Value : Float; + function GetOldD42Value : Float; + function GetOldD44Value : Float; + function GetOldD46Value : Float; + function GetOldD48Value : Float; + function GetOldDTValue : Float; + + { Properties } + property OldCENTRO : String read GetOldCENTROValue; + property OldFILIAL : String read GetOldFILIALValue; + property OldCODIGO : String read GetOldCODIGOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldTIPO_PRODUCTO : String read GetOldTIPO_PRODUCTOValue; + property OldGRUPO_PRODUCTO : String read GetOldGRUPO_PRODUCTOValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldI38 : Float read GetOldI38Value; + property OldI40 : Float read GetOldI40Value; + property OldI42 : Float read GetOldI42Value; + property OldI44 : Float read GetOldI44Value; + property OldI46 : Float read GetOldI46Value; + property OldI48 : Float read GetOldI48Value; + property OldTI : Float read GetOldTIValue; + property OldK38 : Float read GetOldK38Value; + property OldK40 : Float read GetOldK40Value; + property OldK42 : Float read GetOldK42Value; + property OldK44 : Float read GetOldK44Value; + property OldK46 : Float read GetOldK46Value; + property OldK48 : Float read GetOldK48Value; + property OldTK : Float read GetOldTKValue; + property OldD38 : Float read GetOldD38Value; + property OldD40 : Float read GetOldD40Value; + property OldD42 : Float read GetOldD42Value; + property OldD44 : Float read GetOldD44Value; + property OldD46 : Float read GetOldD46Value; + property OldD48 : Float read GetOldD48Value; + property OldDT : Float read GetOldDTValue; + end; + + { TStockEDIInventarioBusinessProcessorRules } + TStockEDIInventarioBusinessProcessorRules = class(TDABusinessProcessorRules, IStockEDIInventario, IStockEDIInventarioDelta) + private + protected + { Property getters and setters } + function GetCENTROValue: String; virtual; + function GetCENTROIsNull: Boolean; virtual; + function GetOldCENTROValue: String; virtual; + function GetOldCENTROIsNull: Boolean; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetFILIALValue: String; virtual; + function GetFILIALIsNull: Boolean; virtual; + function GetOldFILIALValue: String; virtual; + function GetOldFILIALIsNull: Boolean; virtual; + procedure SetFILIALValue(const aValue: String); virtual; + procedure SetFILIALIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + function GetCODIGOIsNull: Boolean; virtual; + function GetOldCODIGOValue: String; virtual; + function GetOldCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + function GetOldPRODUCTOValue: String; virtual; + function GetOldPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + function GetCOLORIsNull: Boolean; virtual; + function GetOldCOLORValue: String; virtual; + function GetOldCOLORIsNull: Boolean; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetTIPO_PRODUCTOValue: String; virtual; + function GetTIPO_PRODUCTOIsNull: Boolean; virtual; + function GetOldTIPO_PRODUCTOValue: String; virtual; + function GetOldTIPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetTIPO_PRODUCTOValue(const aValue: String); virtual; + procedure SetTIPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPO_PRODUCTOValue: String; virtual; + function GetGRUPO_PRODUCTOIsNull: Boolean; virtual; + function GetOldGRUPO_PRODUCTOValue: String; virtual; + function GetOldGRUPO_PRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPO_PRODUCTOValue(const aValue: String); virtual; + procedure SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + function GetOldCOLECCIONValue: String; virtual; + function GetOldCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetI38Value: Float; virtual; + function GetI38IsNull: Boolean; virtual; + function GetOldI38Value: Float; virtual; + function GetOldI38IsNull: Boolean; virtual; + procedure SetI38Value(const aValue: Float); virtual; + procedure SetI38IsNull(const aValue: Boolean); virtual; + function GetI40Value: Float; virtual; + function GetI40IsNull: Boolean; virtual; + function GetOldI40Value: Float; virtual; + function GetOldI40IsNull: Boolean; virtual; + procedure SetI40Value(const aValue: Float); virtual; + procedure SetI40IsNull(const aValue: Boolean); virtual; + function GetI42Value: Float; virtual; + function GetI42IsNull: Boolean; virtual; + function GetOldI42Value: Float; virtual; + function GetOldI42IsNull: Boolean; virtual; + procedure SetI42Value(const aValue: Float); virtual; + procedure SetI42IsNull(const aValue: Boolean); virtual; + function GetI44Value: Float; virtual; + function GetI44IsNull: Boolean; virtual; + function GetOldI44Value: Float; virtual; + function GetOldI44IsNull: Boolean; virtual; + procedure SetI44Value(const aValue: Float); virtual; + procedure SetI44IsNull(const aValue: Boolean); virtual; + function GetI46Value: Float; virtual; + function GetI46IsNull: Boolean; virtual; + function GetOldI46Value: Float; virtual; + function GetOldI46IsNull: Boolean; virtual; + procedure SetI46Value(const aValue: Float); virtual; + procedure SetI46IsNull(const aValue: Boolean); virtual; + function GetI48Value: Float; virtual; + function GetI48IsNull: Boolean; virtual; + function GetOldI48Value: Float; virtual; + function GetOldI48IsNull: Boolean; virtual; + procedure SetI48Value(const aValue: Float); virtual; + procedure SetI48IsNull(const aValue: Boolean); virtual; + function GetTIValue: Float; virtual; + function GetTIIsNull: Boolean; virtual; + function GetOldTIValue: Float; virtual; + function GetOldTIIsNull: Boolean; virtual; + procedure SetTIValue(const aValue: Float); virtual; + procedure SetTIIsNull(const aValue: Boolean); virtual; + function GetK38Value: Float; virtual; + function GetK38IsNull: Boolean; virtual; + function GetOldK38Value: Float; virtual; + function GetOldK38IsNull: Boolean; virtual; + procedure SetK38Value(const aValue: Float); virtual; + procedure SetK38IsNull(const aValue: Boolean); virtual; + function GetK40Value: Float; virtual; + function GetK40IsNull: Boolean; virtual; + function GetOldK40Value: Float; virtual; + function GetOldK40IsNull: Boolean; virtual; + procedure SetK40Value(const aValue: Float); virtual; + procedure SetK40IsNull(const aValue: Boolean); virtual; + function GetK42Value: Float; virtual; + function GetK42IsNull: Boolean; virtual; + function GetOldK42Value: Float; virtual; + function GetOldK42IsNull: Boolean; virtual; + procedure SetK42Value(const aValue: Float); virtual; + procedure SetK42IsNull(const aValue: Boolean); virtual; + function GetK44Value: Float; virtual; + function GetK44IsNull: Boolean; virtual; + function GetOldK44Value: Float; virtual; + function GetOldK44IsNull: Boolean; virtual; + procedure SetK44Value(const aValue: Float); virtual; + procedure SetK44IsNull(const aValue: Boolean); virtual; + function GetK46Value: Float; virtual; + function GetK46IsNull: Boolean; virtual; + function GetOldK46Value: Float; virtual; + function GetOldK46IsNull: Boolean; virtual; + procedure SetK46Value(const aValue: Float); virtual; + procedure SetK46IsNull(const aValue: Boolean); virtual; + function GetK48Value: Float; virtual; + function GetK48IsNull: Boolean; virtual; + function GetOldK48Value: Float; virtual; + function GetOldK48IsNull: Boolean; virtual; + procedure SetK48Value(const aValue: Float); virtual; + procedure SetK48IsNull(const aValue: Boolean); virtual; + function GetTKValue: Float; virtual; + function GetTKIsNull: Boolean; virtual; + function GetOldTKValue: Float; virtual; + function GetOldTKIsNull: Boolean; virtual; + procedure SetTKValue(const aValue: Float); virtual; + procedure SetTKIsNull(const aValue: Boolean); virtual; + function GetD38Value: Float; virtual; + function GetD38IsNull: Boolean; virtual; + function GetOldD38Value: Float; virtual; + function GetOldD38IsNull: Boolean; virtual; + procedure SetD38Value(const aValue: Float); virtual; + procedure SetD38IsNull(const aValue: Boolean); virtual; + function GetD40Value: Float; virtual; + function GetD40IsNull: Boolean; virtual; + function GetOldD40Value: Float; virtual; + function GetOldD40IsNull: Boolean; virtual; + procedure SetD40Value(const aValue: Float); virtual; + procedure SetD40IsNull(const aValue: Boolean); virtual; + function GetD42Value: Float; virtual; + function GetD42IsNull: Boolean; virtual; + function GetOldD42Value: Float; virtual; + function GetOldD42IsNull: Boolean; virtual; + procedure SetD42Value(const aValue: Float); virtual; + procedure SetD42IsNull(const aValue: Boolean); virtual; + function GetD44Value: Float; virtual; + function GetD44IsNull: Boolean; virtual; + function GetOldD44Value: Float; virtual; + function GetOldD44IsNull: Boolean; virtual; + procedure SetD44Value(const aValue: Float); virtual; + procedure SetD44IsNull(const aValue: Boolean); virtual; + function GetD46Value: Float; virtual; + function GetD46IsNull: Boolean; virtual; + function GetOldD46Value: Float; virtual; + function GetOldD46IsNull: Boolean; virtual; + procedure SetD46Value(const aValue: Float); virtual; + procedure SetD46IsNull(const aValue: Boolean); virtual; + function GetD48Value: Float; virtual; + function GetD48IsNull: Boolean; virtual; + function GetOldD48Value: Float; virtual; + function GetOldD48IsNull: Boolean; virtual; + procedure SetD48Value(const aValue: Float); virtual; + procedure SetD48IsNull(const aValue: Boolean); virtual; + function GetDTValue: Float; virtual; + function GetDTIsNull: Boolean; virtual; + function GetOldDTValue: Float; virtual; + function GetOldDTIsNull: Boolean; virtual; + procedure SetDTValue(const aValue: Float); virtual; + procedure SetDTIsNull(const aValue: Boolean); virtual; + + { Properties } + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull : Boolean read GetCENTROIsNull write SetCENTROIsNull; + property OldCENTRO : String read GetOldCENTROValue; + property OldCENTROIsNull : Boolean read GetOldCENTROIsNull; + property FILIAL : String read GetFILIALValue write SetFILIALValue; + property FILIALIsNull : Boolean read GetFILIALIsNull write SetFILIALIsNull; + property OldFILIAL : String read GetOldFILIALValue; + property OldFILIALIsNull : Boolean read GetOldFILIALIsNull; + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull : Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCODIGOIsNull : Boolean read GetOldCODIGOIsNull; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull : Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldPRODUCTOIsNull : Boolean read GetOldPRODUCTOIsNull; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property COLORIsNull : Boolean read GetCOLORIsNull write SetCOLORIsNull; + property OldCOLOR : String read GetOldCOLORValue; + property OldCOLORIsNull : Boolean read GetOldCOLORIsNull; + property TIPO_PRODUCTO : String read GetTIPO_PRODUCTOValue write SetTIPO_PRODUCTOValue; + property TIPO_PRODUCTOIsNull : Boolean read GetTIPO_PRODUCTOIsNull write SetTIPO_PRODUCTOIsNull; + property OldTIPO_PRODUCTO : String read GetOldTIPO_PRODUCTOValue; + property OldTIPO_PRODUCTOIsNull : Boolean read GetOldTIPO_PRODUCTOIsNull; + property GRUPO_PRODUCTO : String read GetGRUPO_PRODUCTOValue write SetGRUPO_PRODUCTOValue; + property GRUPO_PRODUCTOIsNull : Boolean read GetGRUPO_PRODUCTOIsNull write SetGRUPO_PRODUCTOIsNull; + property OldGRUPO_PRODUCTO : String read GetOldGRUPO_PRODUCTOValue; + property OldGRUPO_PRODUCTOIsNull : Boolean read GetOldGRUPO_PRODUCTOIsNull; + property COLECCION : String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull : Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLECCIONIsNull : Boolean read GetOldCOLECCIONIsNull; + property I38 : Float read GetI38Value write SetI38Value; + property I38IsNull : Boolean read GetI38IsNull write SetI38IsNull; + property OldI38 : Float read GetOldI38Value; + property OldI38IsNull : Boolean read GetOldI38IsNull; + property I40 : Float read GetI40Value write SetI40Value; + property I40IsNull : Boolean read GetI40IsNull write SetI40IsNull; + property OldI40 : Float read GetOldI40Value; + property OldI40IsNull : Boolean read GetOldI40IsNull; + property I42 : Float read GetI42Value write SetI42Value; + property I42IsNull : Boolean read GetI42IsNull write SetI42IsNull; + property OldI42 : Float read GetOldI42Value; + property OldI42IsNull : Boolean read GetOldI42IsNull; + property I44 : Float read GetI44Value write SetI44Value; + property I44IsNull : Boolean read GetI44IsNull write SetI44IsNull; + property OldI44 : Float read GetOldI44Value; + property OldI44IsNull : Boolean read GetOldI44IsNull; + property I46 : Float read GetI46Value write SetI46Value; + property I46IsNull : Boolean read GetI46IsNull write SetI46IsNull; + property OldI46 : Float read GetOldI46Value; + property OldI46IsNull : Boolean read GetOldI46IsNull; + property I48 : Float read GetI48Value write SetI48Value; + property I48IsNull : Boolean read GetI48IsNull write SetI48IsNull; + property OldI48 : Float read GetOldI48Value; + property OldI48IsNull : Boolean read GetOldI48IsNull; + property TI : Float read GetTIValue write SetTIValue; + property TIIsNull : Boolean read GetTIIsNull write SetTIIsNull; + property OldTI : Float read GetOldTIValue; + property OldTIIsNull : Boolean read GetOldTIIsNull; + property K38 : Float read GetK38Value write SetK38Value; + property K38IsNull : Boolean read GetK38IsNull write SetK38IsNull; + property OldK38 : Float read GetOldK38Value; + property OldK38IsNull : Boolean read GetOldK38IsNull; + property K40 : Float read GetK40Value write SetK40Value; + property K40IsNull : Boolean read GetK40IsNull write SetK40IsNull; + property OldK40 : Float read GetOldK40Value; + property OldK40IsNull : Boolean read GetOldK40IsNull; + property K42 : Float read GetK42Value write SetK42Value; + property K42IsNull : Boolean read GetK42IsNull write SetK42IsNull; + property OldK42 : Float read GetOldK42Value; + property OldK42IsNull : Boolean read GetOldK42IsNull; + property K44 : Float read GetK44Value write SetK44Value; + property K44IsNull : Boolean read GetK44IsNull write SetK44IsNull; + property OldK44 : Float read GetOldK44Value; + property OldK44IsNull : Boolean read GetOldK44IsNull; + property K46 : Float read GetK46Value write SetK46Value; + property K46IsNull : Boolean read GetK46IsNull write SetK46IsNull; + property OldK46 : Float read GetOldK46Value; + property OldK46IsNull : Boolean read GetOldK46IsNull; + property K48 : Float read GetK48Value write SetK48Value; + property K48IsNull : Boolean read GetK48IsNull write SetK48IsNull; + property OldK48 : Float read GetOldK48Value; + property OldK48IsNull : Boolean read GetOldK48IsNull; + property TK : Float read GetTKValue write SetTKValue; + property TKIsNull : Boolean read GetTKIsNull write SetTKIsNull; + property OldTK : Float read GetOldTKValue; + property OldTKIsNull : Boolean read GetOldTKIsNull; + property D38 : Float read GetD38Value write SetD38Value; + property D38IsNull : Boolean read GetD38IsNull write SetD38IsNull; + property OldD38 : Float read GetOldD38Value; + property OldD38IsNull : Boolean read GetOldD38IsNull; + property D40 : Float read GetD40Value write SetD40Value; + property D40IsNull : Boolean read GetD40IsNull write SetD40IsNull; + property OldD40 : Float read GetOldD40Value; + property OldD40IsNull : Boolean read GetOldD40IsNull; + property D42 : Float read GetD42Value write SetD42Value; + property D42IsNull : Boolean read GetD42IsNull write SetD42IsNull; + property OldD42 : Float read GetOldD42Value; + property OldD42IsNull : Boolean read GetOldD42IsNull; + property D44 : Float read GetD44Value write SetD44Value; + property D44IsNull : Boolean read GetD44IsNull write SetD44IsNull; + property OldD44 : Float read GetOldD44Value; + property OldD44IsNull : Boolean read GetOldD44IsNull; + property D46 : Float read GetD46Value write SetD46Value; + property D46IsNull : Boolean read GetD46IsNull write SetD46IsNull; + property OldD46 : Float read GetOldD46Value; + property OldD46IsNull : Boolean read GetOldD46IsNull; + property D48 : Float read GetD48Value write SetD48Value; + property D48IsNull : Boolean read GetD48IsNull write SetD48IsNull; + property OldD48 : Float read GetOldD48Value; + property OldD48IsNull : Boolean read GetOldD48IsNull; + property DT : Float read GetDTValue write SetDTValue; + property DTIsNull : Boolean read GetDTIsNull write SetDTIsNull; + property OldDT : Float read GetOldDTValue; + property OldDTIsNull : Boolean read GetOldDTIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers, uDAInterfaces; + +{ TStockPrendasCentrosBusinessProcessorRules } +constructor TStockPrendasCentrosBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TStockPrendasCentrosBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCODIGO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCODIGO]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosCODIGO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosCODIGO]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCODIGO] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCODIGO] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosPRODUCTO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosPRODUCTO]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosPRODUCTO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosPRODUCTO]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosPRODUCTO] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosPRODUCTO] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetTIPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTIPO_PRODUCTO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetTIPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTIPO_PRODUCTO]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldTIPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosTIPO_PRODUCTO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldTIPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosTIPO_PRODUCTO]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetTIPO_PRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTIPO_PRODUCTO] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetTIPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTIPO_PRODUCTO] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetGRUPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosGRUPO_PRODUCTO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetGRUPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosGRUPO_PRODUCTO]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldGRUPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosGRUPO_PRODUCTO]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldGRUPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosGRUPO_PRODUCTO]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetGRUPO_PRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosGRUPO_PRODUCTO] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosGRUPO_PRODUCTO] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLECCION]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLECCION]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosCOLECCION]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosCOLECCION]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetCOLECCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLECCION] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLECCION] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLOR]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLOR]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosCOLOR]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosCOLOR]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLOR] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosCOLOR] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT38]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT38]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT38]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT38]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT38] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT38] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT40]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT40]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT40]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT40]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT40] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT40] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT42]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT42]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT42]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT42]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT42] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT42] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT44]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT44]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT44]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT44]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT44] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT44] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT46]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT46]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT46]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT46]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT46] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT46] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT48]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetT48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT48]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT48]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldT48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosT48]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT48] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetT48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosT48] := Null; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetTOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTOTAL]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetTOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTOTAL]); +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldTOTALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosTOTAL]; +end; + +function TStockPrendasCentrosBusinessProcessorRules.GetOldTOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockPrendasCentrosTOTAL]); +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetTOTALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTOTAL] := aValue; +end; + +procedure TStockPrendasCentrosBusinessProcessorRules.SetTOTALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockPrendasCentrosTOTAL] := Null; +end; + + +{ TStockEDIBusinessProcessorRules } +constructor TStockEDIBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TStockEDIBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TStockEDIBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICENTRO]; +end; + +function TStockEDIBusinessProcessorRules.GetCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICENTRO]); +end; + +function TStockEDIBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICENTRO]; +end; + +function TStockEDIBusinessProcessorRules.GetOldCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICENTRO]); +end; + +procedure TStockEDIBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICENTRO] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICENTRO] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIFILIAL]; +end; + +function TStockEDIBusinessProcessorRules.GetFILIALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIFILIAL]); +end; + +function TStockEDIBusinessProcessorRules.GetOldFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIFILIAL]; +end; + +function TStockEDIBusinessProcessorRules.GetOldFILIALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIFILIAL]); +end; + +procedure TStockEDIBusinessProcessorRules.SetFILIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIFILIAL] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetFILIALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIFILIAL] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICODIGO]; +end; + +function TStockEDIBusinessProcessorRules.GetCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICODIGO]); +end; + +function TStockEDIBusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICODIGO]; +end; + +function TStockEDIBusinessProcessorRules.GetOldCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICODIGO]); +end; + +procedure TStockEDIBusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICODIGO] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICODIGO] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIPRODUCTO]; +end; + +function TStockEDIBusinessProcessorRules.GetPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIPRODUCTO]); +end; + +function TStockEDIBusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIPRODUCTO]; +end; + +function TStockEDIBusinessProcessorRules.GetOldPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIPRODUCTO]); +end; + +procedure TStockEDIBusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIPRODUCTO] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIPRODUCTO] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetTIPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITIPO_PRODUCTO]; +end; + +function TStockEDIBusinessProcessorRules.GetTIPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITIPO_PRODUCTO]); +end; + +function TStockEDIBusinessProcessorRules.GetOldTIPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDITIPO_PRODUCTO]; +end; + +function TStockEDIBusinessProcessorRules.GetOldTIPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDITIPO_PRODUCTO]); +end; + +procedure TStockEDIBusinessProcessorRules.SetTIPO_PRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITIPO_PRODUCTO] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetTIPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITIPO_PRODUCTO] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetGRUPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIGRUPO_PRODUCTO]; +end; + +function TStockEDIBusinessProcessorRules.GetGRUPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIGRUPO_PRODUCTO]); +end; + +function TStockEDIBusinessProcessorRules.GetOldGRUPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIGRUPO_PRODUCTO]; +end; + +function TStockEDIBusinessProcessorRules.GetOldGRUPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIGRUPO_PRODUCTO]); +end; + +procedure TStockEDIBusinessProcessorRules.SetGRUPO_PRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIGRUPO_PRODUCTO] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIGRUPO_PRODUCTO] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLECCION]; +end; + +function TStockEDIBusinessProcessorRules.GetCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLECCION]); +end; + +function TStockEDIBusinessProcessorRules.GetOldCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICOLECCION]; +end; + +function TStockEDIBusinessProcessorRules.GetOldCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICOLECCION]); +end; + +procedure TStockEDIBusinessProcessorRules.SetCOLECCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLECCION] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLECCION] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLOR]; +end; + +function TStockEDIBusinessProcessorRules.GetCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLOR]); +end; + +function TStockEDIBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICOLOR]; +end; + +function TStockEDIBusinessProcessorRules.GetOldCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDICOLOR]); +end; + +procedure TStockEDIBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLOR] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDICOLOR] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetE38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE38]; +end; + +function TStockEDIBusinessProcessorRules.GetE38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE38]); +end; + +function TStockEDIBusinessProcessorRules.GetOldE38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE38]; +end; + +function TStockEDIBusinessProcessorRules.GetOldE38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE38]); +end; + +procedure TStockEDIBusinessProcessorRules.SetE38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE38] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetE38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE38] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetE40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE40]; +end; + +function TStockEDIBusinessProcessorRules.GetE40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE40]); +end; + +function TStockEDIBusinessProcessorRules.GetOldE40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE40]; +end; + +function TStockEDIBusinessProcessorRules.GetOldE40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE40]); +end; + +procedure TStockEDIBusinessProcessorRules.SetE40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE40] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetE40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE40] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetE42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE42]; +end; + +function TStockEDIBusinessProcessorRules.GetE42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE42]); +end; + +function TStockEDIBusinessProcessorRules.GetOldE42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE42]; +end; + +function TStockEDIBusinessProcessorRules.GetOldE42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE42]); +end; + +procedure TStockEDIBusinessProcessorRules.SetE42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE42] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetE42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE42] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetE44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE44]; +end; + +function TStockEDIBusinessProcessorRules.GetE44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE44]); +end; + +function TStockEDIBusinessProcessorRules.GetOldE44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE44]; +end; + +function TStockEDIBusinessProcessorRules.GetOldE44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE44]); +end; + +procedure TStockEDIBusinessProcessorRules.SetE44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE44] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetE44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE44] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetE46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE46]; +end; + +function TStockEDIBusinessProcessorRules.GetE46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE46]); +end; + +function TStockEDIBusinessProcessorRules.GetOldE46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE46]; +end; + +function TStockEDIBusinessProcessorRules.GetOldE46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE46]); +end; + +procedure TStockEDIBusinessProcessorRules.SetE46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE46] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetE46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE46] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetE48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE48]; +end; + +function TStockEDIBusinessProcessorRules.GetE48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE48]); +end; + +function TStockEDIBusinessProcessorRules.GetOldE48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE48]; +end; + +function TStockEDIBusinessProcessorRules.GetOldE48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIE48]); +end; + +procedure TStockEDIBusinessProcessorRules.SetE48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE48] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetE48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIE48] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITE]; +end; + +function TStockEDIBusinessProcessorRules.GetTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITE]); +end; + +function TStockEDIBusinessProcessorRules.GetOldTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDITE]; +end; + +function TStockEDIBusinessProcessorRules.GetOldTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDITE]); +end; + +procedure TStockEDIBusinessProcessorRules.SetTEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITE] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetTEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITE] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetS38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS38]; +end; + +function TStockEDIBusinessProcessorRules.GetS38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS38]); +end; + +function TStockEDIBusinessProcessorRules.GetOldS38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS38]; +end; + +function TStockEDIBusinessProcessorRules.GetOldS38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS38]); +end; + +procedure TStockEDIBusinessProcessorRules.SetS38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS38] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetS38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS38] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetS40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS40]; +end; + +function TStockEDIBusinessProcessorRules.GetS40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS40]); +end; + +function TStockEDIBusinessProcessorRules.GetOldS40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS40]; +end; + +function TStockEDIBusinessProcessorRules.GetOldS40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS40]); +end; + +procedure TStockEDIBusinessProcessorRules.SetS40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS40] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetS40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS40] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetS42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS42]; +end; + +function TStockEDIBusinessProcessorRules.GetS42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS42]); +end; + +function TStockEDIBusinessProcessorRules.GetOldS42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS42]; +end; + +function TStockEDIBusinessProcessorRules.GetOldS42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS42]); +end; + +procedure TStockEDIBusinessProcessorRules.SetS42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS42] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetS42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS42] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetS44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS44]; +end; + +function TStockEDIBusinessProcessorRules.GetS44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS44]); +end; + +function TStockEDIBusinessProcessorRules.GetOldS44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS44]; +end; + +function TStockEDIBusinessProcessorRules.GetOldS44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS44]); +end; + +procedure TStockEDIBusinessProcessorRules.SetS44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS44] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetS44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS44] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetS46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS46]; +end; + +function TStockEDIBusinessProcessorRules.GetS46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS46]); +end; + +function TStockEDIBusinessProcessorRules.GetOldS46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS46]; +end; + +function TStockEDIBusinessProcessorRules.GetOldS46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS46]); +end; + +procedure TStockEDIBusinessProcessorRules.SetS46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS46] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetS46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS46] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetS48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS48]; +end; + +function TStockEDIBusinessProcessorRules.GetS48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS48]); +end; + +function TStockEDIBusinessProcessorRules.GetOldS48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS48]; +end; + +function TStockEDIBusinessProcessorRules.GetOldS48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIS48]); +end; + +procedure TStockEDIBusinessProcessorRules.SetS48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS48] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetS48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIS48] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetTSValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITS]; +end; + +function TStockEDIBusinessProcessorRules.GetTSIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITS]); +end; + +function TStockEDIBusinessProcessorRules.GetOldTSValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDITS]; +end; + +function TStockEDIBusinessProcessorRules.GetOldTSIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDITS]); +end; + +procedure TStockEDIBusinessProcessorRules.SetTSValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITS] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetTSIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDITS] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetK38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK38]; +end; + +function TStockEDIBusinessProcessorRules.GetK38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK38]); +end; + +function TStockEDIBusinessProcessorRules.GetOldK38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK38]; +end; + +function TStockEDIBusinessProcessorRules.GetOldK38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK38]); +end; + +procedure TStockEDIBusinessProcessorRules.SetK38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK38] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetK38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK38] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetK40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK40]; +end; + +function TStockEDIBusinessProcessorRules.GetK40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK40]); +end; + +function TStockEDIBusinessProcessorRules.GetOldK40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK40]; +end; + +function TStockEDIBusinessProcessorRules.GetOldK40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK40]); +end; + +procedure TStockEDIBusinessProcessorRules.SetK40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK40] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetK40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK40] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetK42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK42]; +end; + +function TStockEDIBusinessProcessorRules.GetK42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK42]); +end; + +function TStockEDIBusinessProcessorRules.GetOldK42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK42]; +end; + +function TStockEDIBusinessProcessorRules.GetOldK42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK42]); +end; + +procedure TStockEDIBusinessProcessorRules.SetK42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK42] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetK42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK42] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetK44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK44]; +end; + +function TStockEDIBusinessProcessorRules.GetK44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK44]); +end; + +function TStockEDIBusinessProcessorRules.GetOldK44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK44]; +end; + +function TStockEDIBusinessProcessorRules.GetOldK44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK44]); +end; + +procedure TStockEDIBusinessProcessorRules.SetK44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK44] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetK44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK44] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetK46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK46]; +end; + +function TStockEDIBusinessProcessorRules.GetK46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK46]); +end; + +function TStockEDIBusinessProcessorRules.GetOldK46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK46]; +end; + +function TStockEDIBusinessProcessorRules.GetOldK46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK46]); +end; + +procedure TStockEDIBusinessProcessorRules.SetK46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK46] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetK46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK46] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetK48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK48]; +end; + +function TStockEDIBusinessProcessorRules.GetK48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK48]); +end; + +function TStockEDIBusinessProcessorRules.GetOldK48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK48]; +end; + +function TStockEDIBusinessProcessorRules.GetOldK48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIK48]); +end; + +procedure TStockEDIBusinessProcessorRules.SetK48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK48] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetK48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIK48] := Null; +end; + +function TStockEDIBusinessProcessorRules.GetKTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIKT]; +end; + +function TStockEDIBusinessProcessorRules.GetKTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIKT]); +end; + +function TStockEDIBusinessProcessorRules.GetOldKTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIKT]; +end; + +function TStockEDIBusinessProcessorRules.GetOldKTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIKT]); +end; + +procedure TStockEDIBusinessProcessorRules.SetKTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIKT] := aValue; +end; + +procedure TStockEDIBusinessProcessorRules.SetKTIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIKT] := Null; +end; + + +{ TStockVARELABusinessProcessorRules } +constructor TStockVARELABusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TStockVARELABusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TStockVARELABusinessProcessorRules.GetFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAFILIAL]; +end; + +function TStockVARELABusinessProcessorRules.GetFILIALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAFILIAL]); +end; + +function TStockVARELABusinessProcessorRules.GetOldFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAFILIAL]; +end; + +function TStockVARELABusinessProcessorRules.GetOldFILIALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAFILIAL]); +end; + +procedure TStockVARELABusinessProcessorRules.SetFILIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAFILIAL] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetFILIALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAFILIAL] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACODIGO]; +end; + +function TStockVARELABusinessProcessorRules.GetCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACODIGO]); +end; + +function TStockVARELABusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELACODIGO]; +end; + +function TStockVARELABusinessProcessorRules.GetOldCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELACODIGO]); +end; + +procedure TStockVARELABusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACODIGO] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACODIGO] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLOR]; +end; + +function TStockVARELABusinessProcessorRules.GetCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLOR]); +end; + +function TStockVARELABusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELACOLOR]; +end; + +function TStockVARELABusinessProcessorRules.GetOldCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELACOLOR]); +end; + +procedure TStockVARELABusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLOR] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLOR] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAPRODUCTO]; +end; + +function TStockVARELABusinessProcessorRules.GetPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAPRODUCTO]); +end; + +function TStockVARELABusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAPRODUCTO]; +end; + +function TStockVARELABusinessProcessorRules.GetOldPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAPRODUCTO]); +end; + +procedure TStockVARELABusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAPRODUCTO] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAPRODUCTO] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetTIPO_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELATIPO_PRODUTO]; +end; + +function TStockVARELABusinessProcessorRules.GetTIPO_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELATIPO_PRODUTO]); +end; + +function TStockVARELABusinessProcessorRules.GetOldTIPO_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELATIPO_PRODUTO]; +end; + +function TStockVARELABusinessProcessorRules.GetOldTIPO_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELATIPO_PRODUTO]); +end; + +procedure TStockVARELABusinessProcessorRules.SetTIPO_PRODUTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELATIPO_PRODUTO] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetTIPO_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELATIPO_PRODUTO] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetGRUPO_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAGRUPO_PRODUTO]; +end; + +function TStockVARELABusinessProcessorRules.GetGRUPO_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAGRUPO_PRODUTO]); +end; + +function TStockVARELABusinessProcessorRules.GetOldGRUPO_PRODUTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAGRUPO_PRODUTO]; +end; + +function TStockVARELABusinessProcessorRules.GetOldGRUPO_PRODUTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAGRUPO_PRODUTO]); +end; + +procedure TStockVARELABusinessProcessorRules.SetGRUPO_PRODUTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAGRUPO_PRODUTO] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetGRUPO_PRODUTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAGRUPO_PRODUTO] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLECCION]; +end; + +function TStockVARELABusinessProcessorRules.GetCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLECCION]); +end; + +function TStockVARELABusinessProcessorRules.GetOldCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELACOLECCION]; +end; + +function TStockVARELABusinessProcessorRules.GetOldCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELACOLECCION]); +end; + +procedure TStockVARELABusinessProcessorRules.SetCOLECCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLECCION] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELACOLECCION] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetK38Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK38]; +end; + +function TStockVARELABusinessProcessorRules.GetK38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK38]); +end; + +function TStockVARELABusinessProcessorRules.GetOldK38Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK38]; +end; + +function TStockVARELABusinessProcessorRules.GetOldK38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK38]); +end; + +procedure TStockVARELABusinessProcessorRules.SetK38Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK38] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetK38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK38] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetK40Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK40]; +end; + +function TStockVARELABusinessProcessorRules.GetK40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK40]); +end; + +function TStockVARELABusinessProcessorRules.GetOldK40Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK40]; +end; + +function TStockVARELABusinessProcessorRules.GetOldK40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK40]); +end; + +procedure TStockVARELABusinessProcessorRules.SetK40Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK40] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetK40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK40] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetK42Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK42]; +end; + +function TStockVARELABusinessProcessorRules.GetK42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK42]); +end; + +function TStockVARELABusinessProcessorRules.GetOldK42Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK42]; +end; + +function TStockVARELABusinessProcessorRules.GetOldK42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK42]); +end; + +procedure TStockVARELABusinessProcessorRules.SetK42Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK42] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetK42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK42] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetK44Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK44]; +end; + +function TStockVARELABusinessProcessorRules.GetK44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK44]); +end; + +function TStockVARELABusinessProcessorRules.GetOldK44Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK44]; +end; + +function TStockVARELABusinessProcessorRules.GetOldK44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK44]); +end; + +procedure TStockVARELABusinessProcessorRules.SetK44Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK44] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetK44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK44] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetK46Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK46]; +end; + +function TStockVARELABusinessProcessorRules.GetK46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK46]); +end; + +function TStockVARELABusinessProcessorRules.GetOldK46Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK46]; +end; + +function TStockVARELABusinessProcessorRules.GetOldK46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK46]); +end; + +procedure TStockVARELABusinessProcessorRules.SetK46Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK46] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetK46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK46] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetK48Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK48]; +end; + +function TStockVARELABusinessProcessorRules.GetK48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK48]); +end; + +function TStockVARELABusinessProcessorRules.GetOldK48Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK48]; +end; + +function TStockVARELABusinessProcessorRules.GetOldK48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAK48]); +end; + +procedure TStockVARELABusinessProcessorRules.SetK48Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK48] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetK48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAK48] := Null; +end; + +function TStockVARELABusinessProcessorRules.GetKTValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAKT]; +end; + +function TStockVARELABusinessProcessorRules.GetKTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAKT]); +end; + +function TStockVARELABusinessProcessorRules.GetOldKTValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAKT]; +end; + +function TStockVARELABusinessProcessorRules.GetOldKTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockVARELAKT]); +end; + +procedure TStockVARELABusinessProcessorRules.SetKTValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAKT] := aValue; +end; + +procedure TStockVARELABusinessProcessorRules.SetKTIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockVARELAKT] := Null; +end; + + +{ TStockEDIInventarioBusinessProcessorRules } +constructor TStockEDIInventarioBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TStockEDIInventarioBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCENTRO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCENTRO]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCENTRO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCENTRO]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCENTRO] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCENTRO] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioFILIAL]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetFILIALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioFILIAL]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldFILIALValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioFILIAL]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldFILIALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioFILIAL]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetFILIALValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioFILIAL] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetFILIALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioFILIAL] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCODIGO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCODIGO]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCODIGO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCODIGO]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCODIGO] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCODIGO] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioPRODUCTO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioPRODUCTO]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioPRODUCTO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioPRODUCTO]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioPRODUCTO] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioPRODUCTO] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLOR]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLOR]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCOLOR]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCOLOR]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLOR] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLOR] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetTIPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTIPO_PRODUCTO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetTIPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTIPO_PRODUCTO]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldTIPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioTIPO_PRODUCTO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldTIPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioTIPO_PRODUCTO]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetTIPO_PRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTIPO_PRODUCTO] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetTIPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTIPO_PRODUCTO] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetGRUPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioGRUPO_PRODUCTO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetGRUPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioGRUPO_PRODUCTO]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldGRUPO_PRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioGRUPO_PRODUCTO]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldGRUPO_PRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioGRUPO_PRODUCTO]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetGRUPO_PRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioGRUPO_PRODUCTO] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetGRUPO_PRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioGRUPO_PRODUCTO] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLECCION]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLECCION]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCOLECCION]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioCOLECCION]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCOLECCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLECCION] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioCOLECCION] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI38]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI38]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI38]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI38]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI38] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI38] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI40]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI40]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI40]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI40]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI40] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI40] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI42]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI42]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI42]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI42]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI42] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI42] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI44]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI44]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI44]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI44]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI44] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI44] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI46]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI46]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI46]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI46]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI46] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI46] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI48]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetI48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI48]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI48]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldI48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioI48]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI48] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetI48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioI48] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetTIValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTI]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetTIIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTI]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldTIValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioTI]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldTIIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioTI]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetTIValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTI] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetTIIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTI] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK38]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK38]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK38]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK38]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK38] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK38] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK40]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK40]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK40]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK40]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK40] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK40] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK42]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK42]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK42]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK42]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK42] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK42] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK44]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK44]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK44]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK44]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK44] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK44] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK46]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK46]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK46]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK46]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK46] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK46] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK48]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetK48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK48]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK48]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldK48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioK48]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK48] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetK48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioK48] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetTKValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTK]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetTKIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTK]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldTKValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioTK]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldTKIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioTK]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetTKValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTK] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetTKIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioTK] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD38Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD38]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD38]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD38Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD38]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD38]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD38Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD38] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD38] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD40Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD40]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD40]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD40Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD40]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD40]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD40Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD40] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD40] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD42Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD42]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD42]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD42Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD42]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD42]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD42Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD42] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD42] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD44Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD44]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD44]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD44Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD44]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD44]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD44Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD44] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD44] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD46Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD46]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD46]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD46Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD46]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD46]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD46Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD46] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD46] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD48Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD48]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetD48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD48]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD48Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD48]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldD48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioD48]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD48Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD48] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetD48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioD48] := Null; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetDTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioDT]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetDTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioDT]); +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldDTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioDT]; +end; + +function TStockEDIInventarioBusinessProcessorRules.GetOldDTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_StockEDIInventarioDT]); +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetDTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioDT] := aValue; +end; + +procedure TStockEDIInventarioBusinessProcessorRules.SetDTIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_StockEDIInventarioDT] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID_StockPrendasCentrosDelta, TStockPrendasCentrosBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_StockEDIDelta, TStockEDIBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_StockVARELADelta, TStockVARELABusinessProcessorRules); + RegisterBusinessProcessorRules(RID_StockEDIInventarioDelta, TStockEDIInventarioBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Modulos/Stock/Reglas/uBizStock.pas b/2.1.0/Source/Modulos/Stock/Reglas/uBizStock.pas new file mode 100644 index 0000000..9f0ff64 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Reglas/uBizStock.pas @@ -0,0 +1,58 @@ +unit uBizStock; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDAInterfaces, + DataAbstract3_Intf, uROTypes, schStockClient_Intf; + +const + BIZ_STOCK_EDI = 'Client.StockEDI'; + BIZ_STOCK_EDIINVENTARIO = 'Client.StockEDIInventario'; + BIZ_STOCK_VARELA = 'Client.StockVARELA'; + BIZ_STOCK_PRENDAS_CENTROS = 'Client.StockPrendasCentros'; + +type + IBizStockEDI = interface(IStockEDI) + ['{01767388-AF6D-4EF0-A2A4-092D698ECD19}'] + end; + + IBizStockEDIInventario = interface(IStockEDIInventario) + ['{156E243C-7B4D-4223-8FAF-A965E8C5A94D}'] + end; + + IBizStockVARELA = interface(IStockVARELA) + ['{2DC85C8D-E7CA-4B13-A7CE-46E412D05D76}'] + end; + + IBizStockPrendasCentros = interface(IStockPrendasCentros) + ['{F17984D3-1262-4D0B-94F3-E86DA3B1357E}'] + end; + + TBizStockEDIDataTableRules = class(TStockEDIDataTableRules, IBizStockEDI) + end; + + TBizStockEDIInventarioDataTableRules = class(TStockEDIInventarioDataTableRules, IBizStockEDIInventario) + end; + + TBizStockVARELADataTableRules = class(TStockVARELADataTableRules, IBizStockVARELA) + end; + + TBizStockPrendasCentrosDataTableRules = class(TStockPrendasCentrosDataTableRules, IBizStockPrendasCentros) + end; + + +implementation + +{uses + Dialogs, uEditorUtils, uDataModuleVentasTerminadas;} + +initialization + RegisterDataTableRules(BIZ_STOCK_EDI, TBizStockEDIDataTableRules); + RegisterDataTableRules(BIZ_STOCK_EDIINVENTARIO, TBizStockEDIInventarioDataTableRules); + RegisterDataTableRules(BIZ_STOCK_VARELA, TBizStockVarelaDataTableRules); + RegisterDataTableRules(BIZ_STOCK_PRENDAS_CENTROS, TBizStockPrendasCentrosDataTableRules); +finalization + +end. + diff --git a/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.ddp b/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.dfm b/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.dfm new file mode 100644 index 0000000..33988c2 --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.dfm @@ -0,0 +1,856 @@ +object srvStock: TsrvStock + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schStock + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + OnAfterAcquireConnection = DARemoteServiceAfterAcquireConnection + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 + object DABINAdapter: TDABINAdapter + Left = 56 + Top = 96 + end + object schStock: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT'#10' CODIGO,'#10' PRODUCTO,'#10' TIPO_PRODUCTO,'#10' ' + + 'GRUPO_PRODUCTO,'#10' COLECCION,'#10' COLOR,'#10' SUM(K38) AS ' + + 'T38,'#10' SUM(K40) AS T40,'#10' SUM(K42) AS T42,'#10' SUM(K44' + + ') AS T44,'#10' SUM(K46) AS T46,'#10' SUM(K48) AS T48,'#10' SU' + + 'M(KT) AS TOTAL'#10'FROM RDX_V_STOCK_CALCULADO'#10'GROUP BY CODIGO,'#10' ' + + ' PRODUCTO,'#10' TIPO_PRODUCTO,'#10' GRUPO_PRODUCTO,'#10' COLE' + + 'CCION,'#10' COLOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'TIPO_PRODUCTO' + TableField = 'TIPO_PRODUCTO' + end + item + DatasetField = 'GRUPO_PRODUCTO' + TableField = 'GRUPO_PRODUCTO' + end + item + DatasetField = 'COLECCION' + TableField = 'COLECCION' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'T38' + TableField = 'T38' + end + item + DatasetField = 'T40' + TableField = 'T40' + end + item + DatasetField = 'T42' + TableField = 'T42' + end + item + DatasetField = 'T44' + TableField = 'T44' + end + item + DatasetField = 'T46' + TableField = 'T46' + end + item + DatasetField = 'T48' + TableField = 'T48' + end + item + DatasetField = 'TOTAL' + TableField = 'TOTAL' + end> + end> + Name = 'StockPrendasCentros' + Fields = < + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DisplayLabel = 'Producto' + end + item + Name = 'TIPO_PRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Tipo' + end + item + Name = 'GRUPO_PRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Grupo' + end + item + Name = 'COLECCION' + DataType = datString + Size = 40 + DisplayLabel = 'Colecci'#243'n' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + end + item + Name = 'T38' + DataType = datFloat + DisplayLabel = '38' + Alignment = taRightJustify + end + item + Name = 'T40' + DataType = datFloat + DisplayLabel = '40' + Alignment = taRightJustify + end + item + Name = 'T42' + DataType = datFloat + DisplayLabel = '42' + Alignment = taRightJustify + end + item + Name = 'T44' + DataType = datFloat + DisplayLabel = '44' + Alignment = taRightJustify + end + item + Name = 'T46' + DataType = datFloat + DisplayLabel = '46' + Alignment = taRightJustify + end + item + Name = 'T48' + DataType = datFloat + DisplayLabel = '48' + Alignment = taRightJustify + end + item + Name = 'TOTAL' + DataType = datFloat + DisplayLabel = 'Total' + Alignment = taRightJustify + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT CENTRO, FILIAL, CODIGO, PRODUCTO, TIPO_PRODUCTO, GRUPO_PR' + + 'ODUCTO, COLECCION, COLOR,'#10' E38, E40, E42, E44, E46, E48, TE' + + ','#10' S38, S40, S42, S44, S46, S48, TS,'#10' K38, K40, K42, K' + + '44, K46, K48, KT'#10' '#10'FROM RDX_V_STOCK_CALCULADO'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'TIPO_PRODUCTO' + TableField = 'TIPO_PRODUCTO' + end + item + DatasetField = 'GRUPO_PRODUCTO' + TableField = 'GRUPO_PRODUCTO' + end + item + DatasetField = 'COLECCION' + TableField = 'COLECCION' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'E38' + TableField = 'E38' + end + item + DatasetField = 'E40' + TableField = 'E40' + end + item + DatasetField = 'E42' + TableField = 'E42' + end + item + DatasetField = 'E44' + TableField = 'E44' + end + item + DatasetField = 'E46' + TableField = 'E46' + end + item + DatasetField = 'E48' + TableField = 'E48' + end + item + DatasetField = 'TE' + TableField = 'TE' + end + item + DatasetField = 'S38' + TableField = 'S38' + end + item + DatasetField = 'S40' + TableField = 'S40' + end + item + DatasetField = 'S42' + TableField = 'S42' + end + item + DatasetField = 'S44' + TableField = 'S44' + end + item + DatasetField = 'S46' + TableField = 'S46' + end + item + DatasetField = 'S48' + TableField = 'S48' + end + item + DatasetField = 'TS' + TableField = 'TS' + end + item + DatasetField = 'K38' + TableField = 'K38' + end + item + DatasetField = 'K40' + TableField = 'K40' + end + item + DatasetField = 'K42' + TableField = 'K42' + end + item + DatasetField = 'K44' + TableField = 'K44' + end + item + DatasetField = 'K46' + TableField = 'K46' + end + item + DatasetField = 'K48' + TableField = 'K48' + end + item + DatasetField = 'KT' + TableField = 'KT' + end> + end> + Name = 'StockEDI' + Fields = < + item + Name = 'CENTRO' + DataType = datString + Size = 17 + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'TIPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'GRUPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'E38' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E40' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E42' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E44' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E46' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'E48' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'TE' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S38' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S40' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S42' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S44' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S46' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'S48' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'TS' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K38' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K40' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K42' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K44' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K46' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'K48' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'KT' + DataType = datFloat + Alignment = taRightJustify + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT FILIAL, CODIGO, COLOR, PRODUCTO, TIPO_PRODUTO, GRUPO_PROD' + + 'UTO,'#10' COLECCION, K38, K40, K42, K44, K46, K48, KT'#10' '#10'F' + + 'ROM RDX_V_STOCK_VARELA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'COLECCION' + TableField = 'COLECCION' + end + item + DatasetField = 'K38' + TableField = 'K38' + end + item + DatasetField = 'K40' + TableField = 'K40' + end + item + DatasetField = 'K42' + TableField = 'K42' + end + item + DatasetField = 'K44' + TableField = 'K44' + end + item + DatasetField = 'K46' + TableField = 'K46' + end + item + DatasetField = 'K48' + TableField = 'K48' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'TIPO_PRODUTO' + TableField = 'TIPO_PRODUTO' + end + item + DatasetField = 'GRUPO_PRODUTO' + TableField = 'GRUPO_PRODUTO' + end + item + DatasetField = 'KT' + TableField = 'KT' + end> + end> + Name = 'StockVARELA' + Fields = < + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'TIPO_PRODUTO' + DataType = datString + Size = 25 + end + item + Name = 'GRUPO_PRODUTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 40 + end + item + Name = 'K38' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K40' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K42' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K44' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K46' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'K48' + DataType = datInteger + Alignment = taRightJustify + end + item + Name = 'KT' + DataType = datInteger + Alignment = taRightJustify + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_INVENTARIO' + SQL = + 'SELECT '#10' CENTRO, FILIAL, CODIGO, PRODUCTO, COLOR, TIPO_PRODUC' + + 'TO, GRUPO_PRODUCTO,'#10' COLECCION, I38, I40, I42, I44, I46, I48,' + + ' TI, K38, K40, '#10' K42, K44, K46, K48, TK, D38, D40, D42, D44, ' + + 'D46, D48, '#10' DT'#10' FROM'#10' RDX_V_CONTROL_INVENTARIO'#10 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'TIPO_PRODUCTO' + TableField = 'TIPO_PRODUCTO' + end + item + DatasetField = 'GRUPO_PRODUCTO' + TableField = 'GRUPO_PRODUCTO' + end + item + DatasetField = 'COLECCION' + TableField = 'COLECCION' + end + item + DatasetField = 'I38' + TableField = 'I38' + end + item + DatasetField = 'I40' + TableField = 'I40' + end + item + DatasetField = 'I42' + TableField = 'I42' + end + item + DatasetField = 'I44' + TableField = 'I44' + end + item + DatasetField = 'I46' + TableField = 'I46' + end + item + DatasetField = 'I48' + TableField = 'I48' + end + item + DatasetField = 'TI' + TableField = 'TI' + end + item + DatasetField = 'K38' + TableField = 'K38' + end + item + DatasetField = 'K40' + TableField = 'K40' + end + item + DatasetField = 'K42' + TableField = 'K42' + end + item + DatasetField = 'K44' + TableField = 'K44' + end + item + DatasetField = 'K46' + TableField = 'K46' + end + item + DatasetField = 'K48' + TableField = 'K48' + end + item + DatasetField = 'TK' + TableField = 'TK' + end + item + DatasetField = 'D38' + TableField = 'D38' + end + item + DatasetField = 'D40' + TableField = 'D40' + end + item + DatasetField = 'D42' + TableField = 'D42' + end + item + DatasetField = 'D44' + TableField = 'D44' + end + item + DatasetField = 'D46' + TableField = 'D46' + end + item + DatasetField = 'D48' + TableField = 'D48' + end + item + DatasetField = 'DT' + TableField = 'DT' + end> + end> + Name = 'StockEDIInventario' + Fields = < + item + Name = 'CENTRO' + DataType = datString + Size = 17 + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'TIPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'GRUPO_PRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + end + item + Name = 'I38' + DataType = datFloat + end + item + Name = 'I40' + DataType = datFloat + end + item + Name = 'I42' + DataType = datFloat + end + item + Name = 'I44' + DataType = datFloat + end + item + Name = 'I46' + DataType = datFloat + end + item + Name = 'I48' + DataType = datFloat + end + item + Name = 'TI' + DataType = datFloat + end + item + Name = 'K38' + DataType = datFloat + end + item + Name = 'K40' + DataType = datFloat + end + item + Name = 'K42' + DataType = datFloat + end + item + Name = 'K44' + DataType = datFloat + end + item + Name = 'K46' + DataType = datFloat + end + item + Name = 'K48' + DataType = datFloat + end + item + Name = 'TK' + DataType = datFloat + end + item + Name = 'D38' + DataType = datFloat + end + item + Name = 'D40' + DataType = datFloat + end + item + Name = 'D42' + DataType = datFloat + end + item + Name = 'D44' + DataType = datFloat + end + item + Name = 'D46' + DataType = datFloat + end + item + Name = 'D48' + DataType = datFloat + end + item + Name = 'DT' + DataType = datFloat + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 56 + Top = 32 + end +end diff --git a/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.pas b/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.pas new file mode 100644 index 0000000..fc27fcc --- /dev/null +++ b/2.1.0/Source/Modulos/Stock/Servidor/srvStock_Impl.pas @@ -0,0 +1,59 @@ +unit srvStock_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDADataTable, uDABINAdapter, + uDAInterfaces, uDADataStreamer; + +type + { TsrvStock } + TsrvStock = class(TDARemoteService, IsrvStock) + DABINAdapter: TDABINAdapter; + schStock: TDASchema; + procedure DARemoteServiceAfterAcquireConnection( + Sender: TDARemoteService; const ConnectionName: String; + const AcquiredConnection: IDAConnection); + private + protected + { IsrvStock methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, ADODB; + +procedure Create_srvStock(out anInstance : IUnknown); +begin + anInstance := TsrvStock.Create(NIL); +end; + +{ srvStock } +procedure TsrvStock.DARemoteServiceAfterAcquireConnection( + Sender: TDARemoteService; const ConnectionName: String; + const AcquiredConnection: IDAConnection); +begin +{ with (Connection as IDAConnectionObjectAccess) do + if ConnectionObject is TADOConnection then + TADOConnection(ConnectionObject).CommandTimeout:= 0;} +end; + +initialization + TROClassFactory.Create('srvStock', Create_srvStock, TsrvStock_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.bdsproj b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.bdsproj new file mode 100644 index 0000000..89713a6 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + Traspasos.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 + 0 + 1 + 0 + 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 + 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/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.cfg b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.cfg new file mode 100644 index 0000000..a34a309 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dof b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dof new file mode 100644 index 0000000..f5bd34e --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Servidor +Item1=..\..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dpk b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dpk new file mode 100644 index 0000000..82c43ec --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dpk @@ -0,0 +1,84 @@ +package Traspasos; + +{$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 OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + dbrtl, + dsnap, + BaseD10, + vcl, + adortl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + GUISDK_D10, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + cxTreeListD10, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + JvGlobusD10R, + ControlesBaseD10, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + dxPSCoreD10, + dxComnD10, + JvCustomD10R, + bdertl, + VclSmp, + dxPScxCommonD10, + dxPSLnksD10, + designide, + vclshlctrls, + dxPScxGridLnkD10, + dclcxLibraryD10, + dxLayoutControlD10, + Parametros; + +contains + uDataModuleTraspasos in 'uDataModuleTraspasos.pas' {dmTraspasos: TDAClientDataModule}, + uBizTraspasos in '..\Reglas\uBizTraspasos.pas', + uPluginControllerTraspasos in 'uPluginControllerTraspasos.pas' {ModuleTraspasos: TModuleController}, + uViewListaTraspasos in 'uViewListaTraspasos.pas' {frViewListaTraspasos: TCustomView}, + uEditorListaTraspasos in 'uEditorListaTraspasos.pas' {fEditorListaTraspasos: TCustomEditor}, + uEditorAjustarTraspasos in 'uEditorAjustarTraspasos.pas' {fEditorAjustarTraspasos}; + +end. diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dproj b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dproj new file mode 100644 index 0000000..0cc553a --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.dproj @@ -0,0 +1,621 @@ + + + + {8271ac21-0741-43b7-8373-432a0bf0ec7a} + Traspasos.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Traspasos.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0Traspasos.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmTraspasos
+
+ +
fEditorAjustarTraspasos
+
+ +
fEditorListaTraspasos
+
+ +
ModuleTraspasos
+
+ +
frViewListaTraspasos
+
+
+
+ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.drc b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.drc new file mode 100644 index 0000000..8b12acd --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.drc @@ -0,0 +1,21 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\Traspasos\Cliente\uDataModuleTraspasos.dfm */ +/* C:\Varela_D2007\Source\Modulos\Traspasos\Cliente\uViewListaTraspasos.dfm */ +/* C:\Varela_D2007\Source\Modulos\Traspasos\Cliente\uEditorListaTraspasos.dfm */ +/* C:\Varela_D2007\Source\Modulos\Traspasos\Cliente\uPluginControllerTraspasos.dfm */ +/* C:\Varela_D2007\Source\Modulos\Traspasos\Cliente\uEditorAjustarTraspasos.dfm */ +/* C:\Varela_D2007\Source\Modulos\Traspasos\Cliente\Traspasos.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf20.tmp */ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.rc b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.res b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Cliente/Traspasos.res differ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.ddp b/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.ddp differ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.dfm b/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.dfm new file mode 100644 index 0000000..826eb11 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.dfm @@ -0,0 +1,730 @@ +object dmTraspasos: TdmTraspasos + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 297 + Width = 620 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvTraspasos' + Left = 40 + Top = 32 + end + object tbl_Traspasos: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'TIPO' + DataType = datString + Size = 1 + Required = True + DisplayLabel = 'Tipo' + ReadOnly = True + DictionaryEntry = 'Traspasos_TIPO' + end + item + Name = 'FECHA' + DataType = datDateTime + DisplayLabel = 'Fecha' + ReadOnly = True + DictionaryEntry = 'Traspasos_FECHA' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DisplayLabel = 'Centro' + ReadOnly = True + DictionaryEntry = 'Traspasos_CENTRO' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DisplayLabel = 'Filial' + ReadOnly = True + DictionaryEntry = 'Traspasos_FILIAL' + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + DisplayLabel = 'Centro2' + ReadOnly = True + DictionaryEntry = 'Traspasos_CENTRO2' + end + item + Name = 'FILIAL2' + DataType = datString + Size = 25 + DisplayLabel = 'Filial2' + ReadOnly = True + DictionaryEntry = 'Traspasos_FILIAL2' + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DisplayLabel = 'Aprobado' + DictionaryEntry = 'Traspasos_APROBADO' + end + item + Name = 'ESTADO_TRASPASO' + DataType = datString + Size = 20 + DisplayLabel = 'Estado' + DictionaryEntry = 'Traspasos_ESTADO_TRASPASO' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + DisplayLabel = 'Observaciones' + DictionaryEntry = 'Traspasos_OBSERVACIONES' + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + DisplayLabel = 'Contabilizar' + DictionaryEntry = 'Traspasos_CONTABILIZAR' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DisplayLabel = 'Fecha cambio' + ReadOnly = True + DictionaryEntry = 'Traspasos_FECHACAMBIO' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo' + ReadOnly = True + DictionaryEntry = 'Traspasos_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + Required = True + DisplayLabel = 'Producto' + ReadOnly = True + DictionaryEntry = 'Traspasos_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + ReadOnly = True + DictionaryEntry = 'Traspasos_COLOR' + end + item + Name = 'T38' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T38' + end + item + Name = 'T40' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T40' + end + item + Name = 'T42' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T42' + end + item + Name = 'T44' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T44' + end + item + Name = 'T46' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T46' + end + item + Name = 'T48' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T48' + end + item + Name = 'TOTAL' + DataType = datFloat + DisplayLabel = 'Total' + ReadOnly = True + DictionaryEntry = 'Traspasos_TOTAL' + end + item + Name = 'TR38' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR38' + end + item + Name = 'TR40' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR40' + end + item + Name = 'TR42' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR42' + end + item + Name = 'TR44' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR44' + end + item + Name = 'TR46' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR46' + end + item + Name = 'TR48' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR48' + end + item + Name = 'TOTAL_RECT' + DataType = datFloat + DisplayLabel = 'Total' + ServerAutoRefresh = True + DictionaryEntry = 'Traspasos_TOTAL_RECT' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Traspasos' + IndexDefs = <> + Left = 136 + Top = 32 + end + object ds_Traspasos: TDADataSource + DataSet = tbl_Traspasos.Dataset + DataTable = tbl_Traspasos + Left = 136 + Top = 88 + end + object tbl_TraspasosAprobados: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'TIPO' + DataType = datString + Size = 1 + Required = True + DisplayLabel = 'Tipo' + ReadOnly = True + DictionaryEntry = 'Traspasos_TIPO' + end + item + Name = 'FECHA' + DataType = datDateTime + DisplayLabel = 'Fecha' + ReadOnly = True + DictionaryEntry = 'Traspasos_FECHA' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DisplayLabel = 'Centro' + ReadOnly = True + DictionaryEntry = 'Traspasos_CENTRO' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DisplayLabel = 'Filial' + ReadOnly = True + DictionaryEntry = 'Traspasos_FILIAL' + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + DisplayLabel = 'Centro2' + ReadOnly = True + DictionaryEntry = 'Traspasos_CENTRO2' + end + item + Name = 'FILIAL2' + DataType = datString + Size = 25 + DisplayLabel = 'Filial2' + ReadOnly = True + DictionaryEntry = 'Traspasos_FILIAL2' + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DisplayLabel = 'Aprobado' + DictionaryEntry = 'Traspasos_APROBADO' + end + item + Name = 'ESTADO_TRASPASO' + DataType = datString + Size = 20 + DisplayLabel = 'Estado' + DictionaryEntry = 'Traspasos_ESTADO_TRASPASO' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + DisplayLabel = 'Observaciones' + DictionaryEntry = 'Traspasos_OBSERVACIONES' + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + DisplayLabel = 'Contabilizar' + DictionaryEntry = 'Traspasos_CONTABILIZAR' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DisplayLabel = 'Fecha cambio' + ReadOnly = True + DictionaryEntry = 'Traspasos_FECHACAMBIO' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo' + ReadOnly = True + DictionaryEntry = 'Traspasos_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + Required = True + DisplayLabel = 'Producto' + ReadOnly = True + DictionaryEntry = 'Traspasos_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + ReadOnly = True + DictionaryEntry = 'Traspasos_COLOR' + end + item + Name = 'T38' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T38' + end + item + Name = 'T40' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T40' + end + item + Name = 'T42' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T42' + end + item + Name = 'T44' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T44' + end + item + Name = 'T46' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T46' + end + item + Name = 'T48' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T48' + end + item + Name = 'TOTAL' + DataType = datFloat + DisplayLabel = 'Total' + ReadOnly = True + DictionaryEntry = 'Traspasos_TOTAL' + end + item + Name = 'TR38' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR38' + end + item + Name = 'TR40' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR40' + end + item + Name = 'TR42' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR42' + end + item + Name = 'TR44' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR44' + end + item + Name = 'TR46' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR46' + end + item + Name = 'TR48' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR48' + end + item + Name = 'TOTAL_RECT' + DataType = datFloat + DisplayLabel = 'Total' + ServerAutoRefresh = True + DictionaryEntry = 'Traspasos_TOTAL_RECT' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'TraspasosAprobados' + IndexDefs = <> + Left = 272 + Top = 32 + end + object ds_TraspasosAprobados: TDADataSource + DataSet = tbl_TraspasosAprobados.Dataset + DataTable = tbl_TraspasosAprobados + Left = 272 + Top = 88 + end + object tbl_TraspasosPendientes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'TIPO' + DataType = datString + Size = 1 + Required = True + DisplayLabel = 'Tipo' + ReadOnly = True + DictionaryEntry = 'Traspasos_TIPO' + end + item + Name = 'FECHA' + DataType = datDateTime + DisplayLabel = 'Fecha' + ReadOnly = True + DictionaryEntry = 'Traspasos_FECHA' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DisplayLabel = 'Centro' + ReadOnly = True + DictionaryEntry = 'Traspasos_CENTRO' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DisplayLabel = 'Filial' + ReadOnly = True + DictionaryEntry = 'Traspasos_FILIAL' + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + DisplayLabel = 'Centro2' + ReadOnly = True + DictionaryEntry = 'Traspasos_CENTRO2' + end + item + Name = 'FILIAL2' + DataType = datString + Size = 25 + DisplayLabel = 'Filial2' + ReadOnly = True + DictionaryEntry = 'Traspasos_FILIAL2' + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DisplayLabel = 'Aprobado' + DictionaryEntry = 'Traspasos_APROBADO' + end + item + Name = 'ESTADO_TRASPASO' + DataType = datString + Size = 20 + DisplayLabel = 'Estado' + DictionaryEntry = 'Traspasos_ESTADO_TRASPASO' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + DisplayLabel = 'Observaciones' + DictionaryEntry = 'Traspasos_OBSERVACIONES' + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + DisplayLabel = 'Contabilizar' + DictionaryEntry = 'Traspasos_CONTABILIZAR' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DisplayLabel = 'Fecha cambio' + ReadOnly = True + DictionaryEntry = 'Traspasos_FECHACAMBIO' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo' + ReadOnly = True + DictionaryEntry = 'Traspasos_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + Required = True + DisplayLabel = 'Producto' + ReadOnly = True + DictionaryEntry = 'Traspasos_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + ReadOnly = True + DictionaryEntry = 'Traspasos_COLOR' + end + item + Name = 'T38' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T38' + end + item + Name = 'T40' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T40' + end + item + Name = 'T42' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T42' + end + item + Name = 'T44' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T44' + end + item + Name = 'T46' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T46' + end + item + Name = 'T48' + DataType = datFloat + ReadOnly = True + DictionaryEntry = 'Traspasos_T48' + end + item + Name = 'TOTAL' + DataType = datFloat + DisplayLabel = 'Total' + ReadOnly = True + DictionaryEntry = 'Traspasos_TOTAL' + end + item + Name = 'TR38' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR38' + end + item + Name = 'TR40' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR40' + end + item + Name = 'TR42' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR42' + end + item + Name = 'TR44' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR44' + end + item + Name = 'TR46' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR46' + end + item + Name = 'TR48' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR48' + end + item + Name = 'TOTAL_RECT' + DataType = datFloat + DisplayLabel = 'Total' + ServerAutoRefresh = True + DictionaryEntry = 'Traspasos_TOTAL_RECT' + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'TraspasosPendientes' + IndexDefs = <> + Left = 408 + Top = 32 + end + object ds_TraspasosPendientes: TDADataSource + DataSet = tbl_TraspasosPendientes.Dataset + DataTable = tbl_TraspasosPendientes + Left = 408 + Top = 88 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.pas b/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.pas new file mode 100644 index 0000000..133ca2b --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uDataModuleTraspasos.pas @@ -0,0 +1,85 @@ +unit uDataModuleTraspasos; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDAScriptingProvider, + uDACDSDataTable, uDABINAdapter, uDataModuleBase, uROClient, + uROServiceComponent, uRORemoteService, uBizTraspasos, uDARemoteDataAdapter, + uDAInterfaces; + +type + TdmTraspasos = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_Traspasos: TDACDSDataTable; + ds_Traspasos: TDADataSource; + tbl_TraspasosAprobados: TDACDSDataTable; + ds_TraspasosAprobados: TDADataSource; + tbl_TraspasosPendientes: TDACDSDataTable; + ds_TraspasosPendientes: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + public + function GetItems : IBizTraspasos; overload; + function GetItems(const AEstado : TInvTraspasoEstado) : IBizTraspasos; overload; + end; + +var + dmTraspasos: TdmTraspasos; + +implementation + +{$R *.DFM} + +uses + Forms, Windows, Controls, VARELA_Intf, uEditorPreview, + uDataTableUtils, uROTypes, cxControls; + +procedure TdmTraspasos.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmTraspasos.GetItems: IBizTraspasos; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_Traspasos, dtLista); + dtLista.BusinessRulesID := BIZ_TRASPASOS; + Result := (dtLista as IBizTraspasos); + finally + HideHourglassCursor; + end; +end; + +function TdmTraspasos.GetItems(const AEstado: TInvTraspasoEstado): IBizTraspasos; +var + dtLista: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtLista := TDACDSDataTable.Create(NIL); + + case AEstado of + titPendiente : CloneDataTable(tbl_TraspasosPendientes, dtLista); + titAprobado : CloneDataTable(tbl_TraspasosAprobados, dtLista); + end; + + dtLista.BusinessRulesID := BIZ_TRASPASOS; + Result := (dtLista as IBizTraspasos); + finally + HideHourglassCursor; + end; +end; + +initialization + dmTraspasos := TdmTraspasos.Create(nil); + +finalization + FreeAndNil(dmTraspasos); + +end. diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.ddp b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.ddp differ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.dfm b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.dfm new file mode 100644 index 0000000..2d44732 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.dfm @@ -0,0 +1,726 @@ +object fEditorAjustarTraspasos: TfEditorAjustarTraspasos + Left = 344 + Top = 312 + BorderStyle = bsDialog + Caption = 'Modificaci'#243'n de recepciones de productos' + ClientHeight = 536 + ClientWidth = 752 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object JvgWizardHeader1: TJvgWizardHeader + Left = 0 + Top = 0 + Width = 752 + Height = 73 + CaptionFont.Charset = DEFAULT_CHARSET + CaptionFont.Color = clWindowText + CaptionFont.Height = -11 + CaptionFont.Name = 'MS Sans Serif' + CaptionFont.Style = [fsBold] + CommentFont.Charset = DEFAULT_CHARSET + CommentFont.Color = clWindowText + CommentFont.Height = -11 + CommentFont.Name = 'MS Sans Serif' + CommentFont.Style = [] + SymbolFont.Charset = DEFAULT_CHARSET + SymbolFont.Color = clHighlightText + SymbolFont.Height = -35 + SymbolFont.Name = 'Wingdings' + SymbolFont.Style = [fsBold] + Captions.Strings = ( + 'Modificaci'#243'n de recepciones de productos') + Comments.Strings = ( + '') + Gradient.FromColor = clHighlight + Gradient.ToColor = clWindow + Gradient.Active = True + Gradient.Orientation = fgdVertical + BufferedDraw = False + end + object Bevel1: TBevel + Left = 11 + Top = 483 + Width = 730 + Height = 4 + Shape = bsBottomLine + end + object bAceptar: TButton + Left = 572 + Top = 496 + Width = 75 + Height = 25 + Caption = '&Aceptar' + ModalResult = 1 + TabOrder = 0 + OnClick = bAceptarClick + end + object bCancelar: TButton + Left = 666 + Top = 496 + Width = 75 + Height = 25 + Cancel = True + Caption = '&Cancelar' + ModalResult = 2 + TabOrder = 1 + end + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 73 + Width = 753 + Height = 403 + ParentBackground = True + TabOrder = 2 + AutoContentSizes = [acsWidth, acsHeight] + object Bevel2: TBevel + Left = 22 + Top = 130 + Width = 50 + Height = 10 + Shape = bsBottomLine + end + object Label2: TLabel + Left = 22 + Top = 335 + Width = 84 + Height = 13 + Caption = 'Cantidad por EDI:' + end + object Label3: TLabel + Left = 61 + Top = 364 + Width = 45 + Height = 13 + Caption = 'Cantidad:' + end + object Bevel3: TBevel + Left = 22 + Top = 74 + Width = 734 + Height = 10 + Shape = bsBottomLine + end + object lblCentroOrigen: TLabel + Left = 133 + Top = 90 + Width = 31 + Height = 13 + Caption = 'Centro' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object lblCentroDestino: TLabel + Left = 133 + Top = 110 + Width = 31 + Height = 13 + Caption = 'Centro' + Font.Charset = DEFAULT_CHARSET + Font.Color = clActiveCaption + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object edtRec38: TcxDBMaskEdit + Left = 112 + Top = 333 + DataBinding.DataField = 'T38' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 6 + Width = 98 + end + object edtRec40: TcxDBMaskEdit + Left = 216 + Top = 333 + DataBinding.DataField = 'T40' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 8 + Width = 98 + end + object edtRec42: TcxDBMaskEdit + Left = 320 + Top = 333 + DataBinding.DataField = 'T42' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 10 + Width = 98 + end + object edtRec44: TcxDBMaskEdit + Left = 424 + Top = 333 + DataBinding.DataField = 'T44' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 12 + Width = 98 + end + object edtRec46: TcxDBMaskEdit + Left = 528 + Top = 333 + DataBinding.DataField = 'T46' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 14 + Width = 98 + end + object edtRec48: TcxDBMaskEdit + Left = 632 + Top = 333 + DataBinding.DataField = 'T48' + DataBinding.DataSource = dsDataSource + Enabled = False + Properties.Alignment.Horz = taRightJustify + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 16 + Width = 98 + end + object edtRecR48: TcxCurrencyEdit + Left = 632 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 17 + Width = 98 + end + object edtRecR46: TcxCurrencyEdit + Left = 528 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 15 + Width = 98 + end + object edtRecR44: TcxCurrencyEdit + Left = 424 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 13 + Width = 98 + end + object edtRecR42: TcxCurrencyEdit + Left = 320 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 11 + Width = 98 + end + object edtRecR40: TcxCurrencyEdit + Left = 216 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 9 + Width = 98 + end + object edtRecR38: TcxCurrencyEdit + Left = 112 + Top = 360 + Properties.Alignment.Horz = taRightJustify + Properties.DecimalPlaces = 0 + Properties.DisplayFormat = ',0;-,0' + Properties.UseThousandSeparator = True + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.TextColor = clActiveCaption + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 7 + Width = 98 + end + object edtFecha: TcxDBLabel + Left = 133 + Top = 28 + DataBinding.DataField = 'FECHA' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 420 + end + object edtProducto: TcxDBLabel + Left = 133 + Top = 51 + DataBinding.DataField = 'PRODUCTO' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 460 + end + object edtColor: TcxDBLabel + Left = 655 + Top = 51 + DataBinding.DataField = 'COLOR' + DataBinding.DataSource = dsDataSource + ParentColor = False + ParentFont = False + Style.Font.Charset = DEFAULT_CHARSET + Style.Font.Color = clActiveCaption + Style.Font.Height = -11 + Style.Font.Name = 'MS Sans Serif' + Style.Font.Style = [] + Style.IsFontAssigned = True + Height = 17 + Width = 76 + end + object cbEstado: TcxComboBox + Left = 133 + Top = 146 + Properties.Items.Strings = ( + 'Ninguna' + 'Env'#237'o perdido' + 'Env'#237'o retrasado' + 'Env'#237'o devuelto' + 'Otros') + 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 + Text = 'cbEstado' + Width = 156 + end + object memObservaciones: TcxMemo + Left = 22 + Top = 191 + Lines.Strings = ( + 'memEstadoAlbaran') + 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 + Height = 88 + Width = 333 + end + object cbContabilizar: TcxCheckBox + Left = 348 + Top = 146 + Caption = 'Contabilizar este traspaso' + Properties.ImmediatePost = True + Properties.NullStyle = nssUnchecked + Properties.ValueChecked = 'S' + Properties.ValueUnchecked = 'N' + State = cbsGrayed + 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 = 319 + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + Caption = 'Datos generales del traspaso' + object dxLayoutControl1Item31: TdxLayoutItem + Caption = 'Fecha del movimiento:' + Control = edtFecha + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group3: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group17: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item32: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Producto:' + Control = edtProducto + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item33: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Color:' + Control = edtColor + ControlOptions.MinWidth = 50 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group7: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item7: TdxLayoutItem + Control = Bevel3 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Centro de origen:' + Control = lblCentroOrigen + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item10: TdxLayoutItem + Caption = 'Centro de destino:' + Control = lblCentroDestino + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item9: TdxLayoutItem + Control = Bevel2 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group6: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Estado del env'#237'o:' + Control = cbEstado + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item8: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'cxCheckBox1' + ShowCaption = False + Control = cbContabilizar + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Observaciones:' + CaptionOptions.AlignVert = tavTop + CaptionOptions.Layout = clTop + Control = memObservaciones + ControlOptions.ShowBorder = False + end + end + end + end + end + object dxLayoutControl1Group5: TdxLayoutGroup + Caption = 'Cantidades' + LayoutDirection = ldHorizontal + object dxLayoutControl1Group16: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item23: TdxLayoutItem + Caption = 'Tallas:' + CaptionOptions.AlignHorz = taRightJustify + CaptionOptions.Layout = clTop + Offsets.Top = 2 + Control = Label2 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item30: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + CaptionOptions.Layout = clTop + Offsets.Top = 10 + ShowCaption = False + Control = Label3 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group10: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '38/S' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec38 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item29: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR38 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group11: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item3: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '40/M' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec40 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item28: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR40 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group12: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '42/L' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec42 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item27: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR42 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group13: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item20: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '44/XL' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec44 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item26: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR44 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group14: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item21: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '46' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec46 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item25: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR46 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group15: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item22: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = '48' + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRec48 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item24: TdxLayoutItem + CaptionOptions.AlignHorz = taCenter + CaptionOptions.Layout = clTop + Control = edtRecR48 + ControlOptions.ShowBorder = False + end + end + end + end + end + object dsDataSource: TDADataSource + DataSet = tbl_Traspasos.Dataset + DataTable = dmTraspasos.tbl_Traspasos + Left = 200 + Top = 496 + end +end diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.pas b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.pas new file mode 100644 index 0000000..8ef8953 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorAjustarTraspasos.pas @@ -0,0 +1,288 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorAjustarTraspasos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, JvExControls, JvComponent, + JvgWizardHeader, ExtCtrls, cxStyles, cxCustomData, uBizTraspasos, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, + cxCurrencyEdit, uDADataTable, cxGridLevel, cxGridCustomTableView, + cxGridTableView, cxGridBandedTableView, cxGridDBBandedTableView, + cxClasses, cxControls, cxGridCustomView, cxGrid, dxLayoutControl, + cxContainer, cxTextEdit, cxDBEdit, cxMemo, cxMaskEdit, cxDropDownEdit, + cxCheckBox, cxCalendar, cxLabel, cxDBLabel, uDAInterfaces; + +type + IEditorAjustarTraspasos = interface + ['{40E4185E-595B-48DF-AFA8-E86509F7354F}'] + function GetItems : IBizTraspasos; + procedure SetItems (const AValue : IBizTraspasos); + property Items : IBizTraspasos read GetItems write SetItems; + end; + + TfEditorAjustarTraspasos = class(TForm, IEditorAjustarTraspasos) + bAceptar: TButton; + bCancelar: TButton; + JvgWizardHeader1: TJvgWizardHeader; + Bevel1: TBevel; + dsDataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Group5: TdxLayoutGroup; + dxLayoutControl1Item9: TdxLayoutItem; + Bevel2: TBevel; + dxLayoutControl1Item2: TdxLayoutItem; + edtRec38: TcxDBMaskEdit; + dxLayoutControl1Item3: TdxLayoutItem; + edtRec40: TcxDBMaskEdit; + dxLayoutControl1Item4: TdxLayoutItem; + edtRec42: TcxDBMaskEdit; + dxLayoutControl1Item20: TdxLayoutItem; + edtRec44: TcxDBMaskEdit; + dxLayoutControl1Item21: TdxLayoutItem; + edtRec46: TcxDBMaskEdit; + dxLayoutControl1Item22: TdxLayoutItem; + edtRec48: TcxDBMaskEdit; + dxLayoutControl1Item23: TdxLayoutItem; + Label2: TLabel; + dxLayoutControl1Item24: TdxLayoutItem; + edtRecR48: TcxCurrencyEdit; + dxLayoutControl1Item25: TdxLayoutItem; + edtRecR46: TcxCurrencyEdit; + dxLayoutControl1Item26: TdxLayoutItem; + edtRecR44: TcxCurrencyEdit; + dxLayoutControl1Item27: TdxLayoutItem; + edtRecR42: TcxCurrencyEdit; + dxLayoutControl1Item28: TdxLayoutItem; + edtRecR40: TcxCurrencyEdit; + dxLayoutControl1Item29: TdxLayoutItem; + edtRecR38: TcxCurrencyEdit; + dxLayoutControl1Group10: TdxLayoutGroup; + dxLayoutControl1Group11: TdxLayoutGroup; + dxLayoutControl1Group12: TdxLayoutGroup; + dxLayoutControl1Group13: TdxLayoutGroup; + dxLayoutControl1Group14: TdxLayoutGroup; + dxLayoutControl1Group15: TdxLayoutGroup; + dxLayoutControl1Item30: TdxLayoutItem; + Label3: TLabel; + dxLayoutControl1Group16: TdxLayoutGroup; + edtFecha: TcxDBLabel; + dxLayoutControl1Item31: TdxLayoutItem; + edtProducto: TcxDBLabel; + dxLayoutControl1Item32: TdxLayoutItem; + edtColor: TcxDBLabel; + dxLayoutControl1Item33: TdxLayoutItem; + cbEstado: TcxComboBox; + dxLayoutControl1Item5: TdxLayoutItem; + memObservaciones: TcxMemo; + dxLayoutControl1Item6: TdxLayoutItem; + cbContabilizar: TcxCheckBox; + dxLayoutControl1Item8: TdxLayoutItem; + dxLayoutControl1Group17: TdxLayoutGroup; + dxLayoutControl1Group7: TdxLayoutGroup; + dxLayoutControl1Group6: TdxLayoutGroup; + dxLayoutControl1Item7: TdxLayoutItem; + Bevel3: TBevel; + dxLayoutControl1Item1: TdxLayoutItem; + lblCentroOrigen: TLabel; + dxLayoutControl1Item10: TdxLayoutItem; + lblCentroDestino: TLabel; + dxLayoutControl1Group2: TdxLayoutGroup; + procedure FormShow(Sender: TObject); + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure bAceptarClick(Sender: TObject); + private + FItems : IBizTraspasos; + FHayErrores : Boolean; + procedure CargarValores; + procedure SalvarValores; + protected + function GetItems : IBizTraspasos; + procedure SetItems (const AValue : IBizTraspasos); + public + property Items : IBizTraspasos read GetItems write SetItems; + end; + + +implementation + +uses + uEditorUtils, uDataModuleTraspasos; + +{$R *.dfm} + +function ShowEditorAjustarTraspasos (ABizObject : TDADataTableRules) : TModalResult; +var + AEditor: TfEditorAjustarTraspasos; +begin + AEditor := TfEditorAjustarTraspasos.Create(Application); + try + AEditor.Items := (ABizObject as IBizTraspasos); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorCambioReferenciaGenerica } + +procedure TfEditorAjustarTraspasos.FormShow(Sender: TObject); +begin + FHayErrores := False; + FItems.DataTable.Open; + + CargarValores; +end; + +function TfEditorAjustarTraspasos.GetItems: IBizTraspasos; +begin + Result := FItems; +end; + +procedure TfEditorAjustarTraspasos.SetItems( + const AValue: IBizTraspasos); +begin + FItems := AValue; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfEditorAjustarTraspasos.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; + AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + if ((AViewInfo.Item as TcxGridDBBandedColumn).Position.RowIndex = 1) then + begin + ADone := True; + with AViewInfo do begin + ACanvas.FillRect(Bounds); + ACanvas.DrawTexT(Text, TextAreaBounds, 0); + ACanvas.FrameRect(Bounds, BorderColor[bBottom], 1, [bBottom]); + end; + end; +end; + +procedure TfEditorAjustarTraspasos.bAceptarClick(Sender: TObject); +begin + ShowHourglassCursor; + try + SalvarValores; + FItems.DataTable.ApplyUpdates; + finally + HideHourglassCursor; + end; + Close; +end; + +procedure TfEditorAjustarTraspasos.CargarValores; +begin + with FItems.DataTable do + begin + if FieldByName('T38').AsInteger <> FieldByName('TR38').AsInteger then + edtRecR38.Value := FieldByName('TR38').AsInteger + else + edtRecR38.Value := FieldByName('T38').AsInteger; + + if FieldByName('T40').AsInteger <> FieldByName('TR40').AsInteger then + edtRecR40.Value := FieldByName('TR40').AsInteger + else + edtRecR40.Value := FieldByName('T40').AsInteger; + + if FieldByName('T42').AsInteger <> FieldByName('TR42').AsInteger then + edtRecR42.Value := FieldByName('TR42').AsInteger + else + edtRecR42.Value := FieldByName('T42').AsInteger; + + if FieldByName('T44').AsInteger <> FieldByName('TR44').AsInteger then + edtRecR44.Value := FieldByName('TR44').AsInteger + else + edtRecR44.Value := FieldByName('T44').AsInteger; + + if FieldByName('T46').AsInteger <> FieldByName('TR46').AsInteger then + edtRecR46.Value := FieldByName('TR46').AsInteger + else + edtRecR46.Value := FieldByName('T46').AsInteger; + + if FieldByName('T48').AsInteger <> FieldByName('TR48').AsInteger then + edtRecR48.Value := FieldByName('TR48').AsInteger + else + edtRecR48.Value := FieldByName('T48').AsInteger; + + if Length(FieldByName('ESTADO_TRASPASO').AsString) = 0 then + cbEstado.Text := cbEstado.Properties.Items[0] + else + cbEstado.Text := FieldByName('ESTADO_TRASPASO').AsString; + + if FieldByName('TIPO').AsString = 'S' then + begin + lblCentroOrigen.Caption := FieldByName('CENTRO').AsString; + lblCentroDestino.Caption := FieldByName('CENTRO2').AsString; + end + else begin + lblCentroOrigen.Caption := FieldByName('CENTRO2').AsString; + lblCentroDestino.Caption := FieldByName('CENTRO').AsString; + end; + + cbContabilizar.Checked := (FieldByName('CONTABILIZAR').AsString = 'S'); + memObservaciones.Lines.Clear; + if Length(FieldByName('OBSERVACIONES').AsString) > 0 then + memObservaciones.Lines.Add(FieldByName('OBSERVACIONES').AsString) + end; +end; + +procedure TfEditorAjustarTraspasos.SalvarValores; +var + aux : String; +begin + with FItems.DataTable do + begin + Edit; + FieldByName('TR38').AsVariant := edtRecR38.Value; + FieldByName('TR40').AsVariant := edtRecR40.Value; + FieldByName('TR42').AsVariant := edtRecR42.Value; + FieldByName('TR44').AsVariant := edtRecR44.Value; + FieldByName('TR46').AsVariant := edtRecR46.Value; + FieldByName('TR48').AsVariant := edtRecR48.Value; + + if Length(memObservaciones.Lines.Text) > 0 then + FieldByName('OBSERVACIONES').AsString := memObservaciones.Lines.Text + else + FieldByName('OBSERVACIONES').AsVariant := null; + + if cbContabilizar.Checked then + FieldByName('CONTABILIZAR').AsString := 'S' + else + FieldByName('CONTABILIZAR').AsString := 'N'; + + + if cbEstado.Text = cbEstado.Properties.Items[0] then + FieldByName('ESTADO_TRASPASO').AsVariant := null + else + FieldByName('ESTADO_TRASPASO').AsString := cbEstado.Text; + + Post; + end; +end; + + +initialization + RegisterEditor(IBizTraspasos, ShowEditorAjustarTraspasos, etItem); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.ddp b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.ddp differ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.dfm b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.dfm new file mode 100644 index 0000000..788f17f --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.dfm @@ -0,0 +1,1647 @@ +inherited fEditorListaTraspasos: TfEditorListaTraspasos + Left = 271 + Top = 250 + Caption = 'Control de traspasos' + ClientHeight = 625 + ClientWidth = 901 + ExplicitWidth = 909 + ExplicitHeight = 659 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 901 + Caption = 'Control de traspasos' + ExplicitWidth = 901 + inherited Image1: TImage + Left = 874 + ExplicitLeft = 874 + end + end + inherited TBXDock: TTBXDock + Width = 901 + ExplicitWidth = 901 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 571 + object TBXSubmenuItem2: TTBXSubmenuItem [5] + Caption = 'Cambiar el estado' + DropdownCombo = True + object TBXItem37: TTBXItem + Action = actPendiente + end + object TBXItem36: TTBXItem + Action = actAprobado + end + end + object TBXSeparatorItem16: TTBXSeparatorItem [8] + end + object tbxiExpandir: TTBXItem [16] + Action = actExpandir + end + object tbxiContraer: TTBXItem [17] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [18] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 901 + end + inherited tbxFiltro: TTBXToolbar + Left = 571 + ExplicitLeft = 571 + end + end + inherited StatusBar: TStatusBar + Top = 606 + Width = 901 + ExplicitTop = 606 + ExplicitWidth = 901 + end + object JvTabBar1: TJvTabBar [3] + Left = 0 + Top = 76 + Width = 901 + Height = 29 + Cursor = crHandPoint + CloseButton = False + Painter = JvModernTabBarPainter1 + Images = SmallImages + Tabs = < + item + Caption = 'Pendientes' + Selected = True + ImageIndex = 26 + end + item + Caption = 'Aprobados' + ImageIndex = 25 + end + item + Caption = 'Todos' + end> + OnTabSelected = JvTabBar1TabSelected + end + inline frViewListaTraspasos1: TfrViewListaTraspasos [4] + Left = 0 + Top = 105 + Width = 901 + Height = 501 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitTop = 105 + ExplicitWidth = 901 + ExplicitHeight = 501 + inherited cxGrid: TcxGrid + Width = 901 + Height = 441 + ExplicitWidth = 901 + ExplicitHeight = 441 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewAPROBADO: TcxGridDBColumn + IsCaptionAssigned = True + end + end + end + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 901 + inherited frViewParametrosCentro1: TfrViewParametrosCentro + inherited dxLayoutControl1: TdxLayoutControl + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + inherited TBXLabel1: TTBXLabel + Width = 901 + ExplicitWidth = 901 + ExplicitHeight = 19 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 476 + ExplicitWidth = 476 + inherited TBXButton3: TTBXButton + Action = actRefrescar + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [5] + inherited actNuevo: TAction + Enabled = False + Visible = False + end + inherited actModificar: TAction + Caption = 'Modificar traslado' + OnExecute = actModificarExecute + end + inherited actEliminar: TAction + Enabled = False + Visible = False + end + inherited actDuplicar: TAction + Enabled = False + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + OnUpdate = actAnchoAutoUpdate + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + OnUpdate = actAnchoAutoUpdate + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + OnUpdate = actAnchoAutoUpdate + end + object actPendiente: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Pendiente' + GroupIndex = 1 + ImageIndex = 26 + OnExecute = actPendienteExecute + OnUpdate = actPendienteUpdate + end + object actAprobado: TAction + Category = 'Estado' + AutoCheck = True + Caption = 'Aprobado' + GroupIndex = 1 + ImageIndex = 25 + OnExecute = actAprobadoExecute + OnUpdate = actAprobadoUpdate + end + end + inherited SmallImages: TPngImageList [6] + 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 + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + 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 + 61000001D94944415478DA9D9321781B310C859F59580CCB66B6B21886CDF0A0 + 61A061E19595CD6585375678B0D030D0B0D065851E2B74589827E9B26CFDF205 + 6C427767E9E9D7934FE114F5A3F5522AB0A29723D08E0DC61858A3A1B556B812 + EA77717EADF0C3E67CD0DA01F5BDA23612D21A766BA0579742F2813AF74CDDC3 + EE1BC6F1510EA6E9FB22F471E006A8B50A91DB1A7549505B8FCFB3A01B423637 + 1A4CD41A533978EFE8591AD1382011AB2E04D26B41182CD6AB350EC703E6974C + 9DAB14C518606F37C8E5A734F1EE0F85E2F9D3BE301A9B859412AC7554A02539 + E50C7281881A0A7B42E330A11F0CA6D12935CDB93B67C9209A9BC6F08397E238 + 9D9E69A4F09449A82D2D4F5BC2AA61DC39A8E92577460F63447C88D87C5DE3FE + F1C7B938BF37F8872CB561D098A35736A45EE8BBDB6AA8382521E0644922A110 + 02DCAD11FC4CDEF89D472153E3E889B8F4712A923B060B353ECD9D67276701FD + 05561F04719A9398C8778123EF67159F738FF3F23EEE2C796095E20D945208B5 + 8A89764B2B23A3E6294AA2730E4CC8AB7377A9B399DC998BCF6B5C2ECCB24A46 + AE24686804BE038BC1CB0D34C3DCD9CAB60F9FEFC1DFD18EBDD7F2263424F2E9 + 9C572E4237FABAC0B5E062332459634DFE2CF21F02F45FA4F0EF02D7E217D845 + 051D2C6D56E60000000049454E44AE426082} + Name = 'PngImage24' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + Bitmap = {} + end + inherited LargeImages: TPngImageList [7] + 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 + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + 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> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource [10] + Top = 136 + end + inherited GridPopupMenu: TPopupMenu + Left = 112 + Top = 128 + object Cambiarelestado1: TMenuItem [3] + Caption = 'Cambiar el estado a...' + object Pendiente1: TMenuItem + Action = actPendiente + AutoCheck = True + GroupIndex = 1 + end + object Enespera1: TMenuItem + Action = actAprobado + AutoCheck = True + GroupIndex = 1 + end + end + end + object JvModernTabBarPainter1: TJvModernTabBarPainter + BorderColor = clWindow + ControlDivideColor = cl3DDkShadow + DividerColor = clBtnShadow + Font.Charset = DEFAULT_CHARSET + Font.Color = clHighlight + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + DisabledFont.Charset = DEFAULT_CHARSET + DisabledFont.Color = clGrayText + DisabledFont.Height = -11 + DisabledFont.Name = 'MS Sans Serif' + DisabledFont.Style = [] + SelectedFont.Charset = DEFAULT_CHARSET + SelectedFont.Color = clHighlight + SelectedFont.Height = -11 + SelectedFont.Name = 'MS Sans Serif' + SelectedFont.Style = [fsBold] + Left = 320 + Top = 128 + end +end diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.pas b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.pas new file mode 100644 index 0000000..9ce9a31 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uEditorListaTraspasos.pas @@ -0,0 +1,314 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uEditorListaTraspasos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorGridBase, + JvTabBar, uCustomView, uViewBase, uViewGridBase, uViewGrid, Menus, DB, + uDADataTable, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, + JvExControls, JvComponent, JvNavigationPane, StdCtrls, + uViewListaTraspasos, uBizTraspasos, uDAInterfaces; + +const + CM_SETFOCUSEDRECORD = WM_USER + 1002; + +type + IEditorListaTraspasos = interface(IEditorGridBase) + ['{729D3CD7-88E7-4D97-A9A0-8E0E1CF74716}'] + function GetItems: IBizTraspasos; + procedure SetItems(const Value: IBizTraspasos); + property Items: IBizTraspasos read GetItems write SetItems; + end; + + TfEditorListaTraspasos = class(TfEditorGridBase, IEditorListaTraspasos) + JvTabBar1: TJvTabBar; + JvModernTabBarPainter1: TJvModernTabBarPainter; + actPendiente: TAction; + Cambiarelestado1: TMenuItem; + Pendiente1: TMenuItem; + Enespera1: TMenuItem; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXSeparatorItem16: TTBXSeparatorItem; + TBXItem36: TTBXItem; + TBXItem37: TTBXItem; + actAprobado: TAction; + frViewListaTraspasos1: TfrViewListaTraspasos; + procedure FormShow(Sender: TObject); + procedure JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); + procedure actModificarExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure actAnchoAutoUpdate(Sender: TObject); + procedure actModificarUpdate(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actPendienteExecute(Sender: TObject); + procedure actPendienteUpdate(Sender: TObject); + procedure actAprobadoExecute(Sender: TObject); + procedure actAprobadoUpdate(Sender: TObject); + procedure actEliminarExecute(Sender: TObject); + protected + FItems : IBizTraspasos; + function GetItems: IBizTraspasos; + procedure SetItems(const Value: IBizTraspasos); + procedure CambiarEstado(const NuevoEstado: TInvTraspasoEstado); + function GetModified: Boolean; override; + public + property Items: IBizTraspasos read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses uEditorBase, cxGridTableView, cxGridCustomTableView, cxControls, + uDBSelectionList, cxGridDBTableView, cxGridDBDataDefinitions, + uDataModuleTraspasos, uEditorDBBase; + + +{$R *.dfm} + +constructor TfEditorListaTraspasos.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewListaTraspasos1; +end; + +function TfEditorListaTraspasos.GetItems: IBizTraspasos; +begin + Result := FItems; +end; + +procedure TfEditorListaTraspasos.SetItems( + const Value: IBizTraspasos); +begin + FItems := Value; + if Assigned(FItems) then + begin + dsDataTable.DataTable := FItems.DataTable; + frViewListaTraspasos1.Items := FItems; + end; +end; + +procedure TfEditorListaTraspasos.FormShow(Sender: TObject); +begin + inherited; + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + with (ViewGrid as IViewListaTraspasos) do + begin + VerPendientes; + ContraerTodo; + GotoFirst; + end; +end; + +procedure TfEditorListaTraspasos.JvTabBar1TabSelected(Sender: TObject; Item: TJvTabBarItem); +begin + if Items.DataTable.Active then + Items.DataTable.Active := False; + frViewListaTraspasos1.frViewParametrosCentro1.LimpiarSeleccion; +end; + +procedure TfEditorListaTraspasos.actModificarExecute( + Sender: TObject); +begin + ViewGrid._FocusedView.BeginUpdate; + ViewGrid.SaveGridStatus; + try + FItems.Show; + finally + // Que salga el reloj de espera mientras el grid refresca datos y restaura la posición + ShowHourglassCursor; + Application.ProcessMessages; + try + ViewGrid._FocusedView.EndUpdate; + ViewGrid.RestoreGridStatus; + finally + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaTraspasos.actExpandirExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ExpandirTodo; +end; + +procedure TfEditorListaTraspasos.actContraerExecute( + Sender: TObject); +begin + inherited; + ViewGrid.ContraerTodo; +end; + +procedure TfEditorListaTraspasos.actAnchoAutoExecute( + Sender: TObject); +begin + inherited; + ViewGrid.AjustarAncho; +end; + +procedure TfEditorListaTraspasos.actAnchoAutoUpdate( + Sender: TObject); +begin + inherited; + if Assigned(dsDataTable.DataTable) then + (Sender as TAction).Enabled := (not dsDataTable.DataTable.IsEmpty) + and Assigned(ViewGrid) + else + (Sender as TAction).Enabled := False; +end; + +procedure TfEditorListaTraspasos.actModificarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Sender as TAction).Enabled and + (ViewGrid._FocusedView.Controller.SelectedRecordCount < 2) and + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + not (ViewGrid._FocusedView.Controller.FocusedRow.Expandable)) +end; + +procedure TfEditorListaTraspasos.actRefrescarExecute(Sender: TObject); +begin + ShowHourglassCursor; + Items.DataTable.Active := False; + Application.ProcessMessages; + ViewGrid._FocusedView.BeginUpdate; + Application.ProcessMessages; + try + case JvTabBar1.SelectedTab.Index of + 0 : begin + Items := dmTraspasos.GetItems(titPendiente); + (ViewGrid as IViewListaTraspasos).VerPendientes; + end; + + 1 : begin + Items := dmTraspasos.GetItems(titAprobado); + (ViewGrid as IViewListaTraspasos).VerAprobados; + end; + + 2 : begin + Items := dmTraspasos.GetItems; + (ViewGrid as IViewListaTraspasos).VerTodos; + end; + end; + + frViewListaTraspasos1.Refresh; + inherited; + + finally + dsDataTable.DataTable := Items.DataTable; + ViewGrid._FocusedView.EndUpdate; + Items.DataTable.Active := True; + ViewGrid.ContraerTodo; + ViewGrid.GotoFirst; + HideHourglassCursor; + end; +end; + +procedure TfEditorListaTraspasos.actPendienteExecute( + Sender: TObject); +begin + CambiarEstado(titPendiente); +end; + +procedure TfEditorListaTraspasos.actPendienteUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + not (ViewGrid._FocusedView.Controller.FocusedRow.Expandable)); + + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = titPendiente); +end; + +procedure TfEditorListaTraspasos.actAprobadoExecute( + Sender: TObject); +begin + CambiarEstado(titAprobado); +end; + +procedure TfEditorListaTraspasos.actAprobadoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := + (Assigned(ViewGrid._FocusedView.Controller.FocusedRow) and + not (ViewGrid._FocusedView.Controller.FocusedRow.Expandable)); + + (Sender as TAction).Checked := Assigned(FItems) and + (FItems.Estado = titAprobado); +end; + +procedure TfEditorListaTraspasos.CambiarEstado( + const NuevoEstado: TInvTraspasoEstado); +var + ARecord: TcxCustomGridRecord; + i : Integer; + bm : TBookMark ; +begin + if Assigned(FItems) and Assigned(ViewGrid) and (ViewGrid.MultiSelect) then + begin + ShowHourglassCursor; + bm := FItems.DataTable.GetBookMark; +// FItems.DataTable.DisableControls; + ViewGrid._FocusedView.BeginUpdate; + try + for i := 0 to ViewGrid._FocusedView.Controller.SelectedRecordCount-1 do + begin + ARecord := ViewGrid._FocusedView.Controller.SelectedRecords[i]; + if (ARecord is TcxGridDataRow) then + begin + (ARecord as TcxGridDataRow).Focused := True; + FItems.Edit; + FItems.Estado := NuevoEstado; + FItems.Post; + end; + end; + FItems.DataTable.ApplyUpdates; + FItems.DataTable.GotoBookMark(bm); + finally + FItems.DataTable.FreeBookMark(BM); +// FItems.DataTable.EnableControls; + ViewGrid._FocusedView.Controller.ClearSelection; + ViewGrid._FocusedView.EndUpdate; + PostMessage(Handle, CM_SETFOCUSEDRECORD, Integer(ViewGrid._FocusedView), + MakeLParam(ViewGrid._FocusedView.Controller.FocusedRowIndex, + ViewGrid._FocusedView.Controller.TopRowIndex)); + HideHourglassCursor; + end; + end; +end; + +procedure TfEditorListaTraspasos.actEliminarExecute( + Sender: TObject); +begin +// inherited; +end; + + +function TfEditorListaTraspasos.GetModified: Boolean; +begin + Result := False; +end; + +end. diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.ddp b/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.ddp differ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.dfm b/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.dfm new file mode 100644 index 0000000..d56401d --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.dfm @@ -0,0 +1,126 @@ +object ModuleTraspasos: TModuleTraspasos + OldCreateOrder = True + DefaultAction = actTraspasos + Description = 'Control de traspasos entre centros' + ModuleMenu = MainMenu + ModuleName = 'Control de traspasos entre centros' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.3' + Left = 779 + Top = 651 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001A44944415478DA + 63FCFFFF3F032D0123C8822BA552254076371E75A584E475BA9FF5E0B3E0BF6A + 4B0D033B7B1686829F3FA731CC8E6D61485D8C5F3E67D53346BC16005D00560C + 07DFBF3330FCF8CE307D872103CBB654900184E449B000A4F9C33B303DFDA433 + A605D8E589B400A6F93D10FFF8C930FD6630AA05B8E589B0E0432F42F3870F10 + 17BE4A4558805F9E080B1E542334835D0834E05739C202FCF2F82D00A5A2E9CB + E5B1A6419001A054844F9E900525071EE24EE70EF20CA584E447F3C130C90786 + 29D7184ED42CC5990F18F5A6FDFF7F298B11B70578D2F95CBE3D600D27B227E3 + CC074007FCBF70EA0003B22544E58385471419F2E2D518262DBC85221E6F731F + 2C870C9C9D85187ADBD7C12D8159E00C4CE77BB0190E7239C8F0AB4FDE3068CB + 88C0C593B267314CD66881CB2383E92B8E309C3E7C0D6C0923BE1A0D14A6F3A6 + A6810D7FF9F93B58ECCDE75F0C6FEF3D871B000A169803406A40F2200053C348 + A8CA0459E211EF0CD70403E816ECBBFE18C370823E40B6C4D4560BAC0919C02C + 00452C0CC0D4A1C40131006409CC5052D4106D01CC00421660CD07B404001FE5 + 4BB30B8819120000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actTraspasos: TAction + Category = 'Inventario' + Caption = 'Control de traspasos' + ImageIndex = 0 + OnExecute = actTraspasosExecute + end + end + object MainMenu: TMainMenu + Tag = 500 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Inventario' + GroupIndex = 1 + ImageIndex = 4 + object Controldeventasenproceso1: TMenuItem + Tag = 310 + Action = actTraspasos + end + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000013A4944415478DA + 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB + 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3 + F5AB0CD37F95430C98852986DB80287FB02D300036A012530CA701071E121788 + F8C360D00422474704C3648D169C81C8A837EDFFFF4B598CA8064003B1B0EF21 + 8381990343F227179C81689872EDFF855307186086800DD8A33D1BACB9BB359A + 4158809B61D2C25B708D20C3E6F2ED81F3F3E2D518DE7EF8CA505ABD94A1BF48 + 9E81F1FFFFFF0C20678547DA320801352BC908830D01019041E7E768816D0569 + 040190E67B4FDE32BC03D22B971F861800760AD010376F630665395186E9D377 + 80C540DE81190072360864667A30DC7DF49A61D7D6B3606FC00D801902A29103 + 0923D4D1D4A018005340C8009458403780540000D999FD8911DCCCCA00000000 + 49454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 308 + Top = 16 + Bitmap = {} + end + object ExtraImages: TPngImageList + Height = 28 + Width = 28 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000000970485973000017120000171201679FD252000001B84944415478DA + 63FCFFFF3F033D0123C8C22BA552CE40F61E026A5D8851A3D3FD6C2F3116FE57 + 6DA9616067CFC2AAE8E7CF690CB3635B185217135693B3EA19235116025D06D6 + 84023E7F6260F8F29961FA012B06966DA920C3885143A6855083183E030D3BEB + 8EDD42EC6AC8B010C920B0EB6F86605A885B0D8916A219C4F0F50BC3F42709A8 + 16E2574382856F3A300C62F8F29561FA876C848584D59060E1CD1206865FBF50 + 0C62F80674FDAF72848584D5106721285B4C5F2E8F5321C83050B620A486580B + 9D0F3CC49FA91DE4195C8851339AF14733FE08CEF8161333184E44D4E3CCF88C + 7AD3FEFFBF94C588D3425232FEC2238A60B1789BFB186A60161AA65CFB7FE1D4 + 0106744B49C9F8A54035DD73F9F630E4C5AB314C5A780B453EF9930B03480E19 + 383B0B31F4B6AF43B1949194360DC8D520CBAE3E79C3A02D2302174FCA9E0536 + 14268F0CA6AF38C270FAF035B8A5445B088A937953D3C096BDFCFC1D2CF6E6F3 + 2F86B7F79EC30D447610480D481E0490D590E44390A51EF1CE70436000DDC27D + D71F63B58CE42085596A6AAB05360419C02C0425141880A9233B0E912D855942 + AA1AB22C841948C8429CF9909E80EE16020010A9C8E7BBF6D9B3000000004945 + 4E44AE426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.pas b/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.pas new file mode 100644 index 0000000..cb6aed3 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uPluginControllerTraspasos.pas @@ -0,0 +1,72 @@ +unit uPluginControllerTraspasos; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList, uBizTraspasos; + +type + IMCTraspasos = interface(IInterface) + ['{FF27B168-B706-414A-B584-1A6E4C984BDC}'] + end; + + TModuleTraspasos = class(TModuleController, IMCTraspasos) + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + actTraspasos: TAction; + Controldeventasenproceso1: TMenuItem; + procedure actTraspasosExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleTraspasos, + uEditorListaTraspasos; + +function GetModule : TModuleController; +begin + Result := TModuleTraspasos.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleTraspasos.actTraspasosExecute(Sender: TObject); +var + aControl: IBizTraspasos; + aObj: IEditorListaTraspasos; +begin + aControl := dmTraspasos.GetItems(titPendiente); + aObj := TfEditorListaTraspasos.Create(Application); + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleTraspasos); + +finalization + UnRegisterModuleClass(TModuleTraspasos); + +end. diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.ddp b/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.ddp differ diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.dfm b/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.dfm new file mode 100644 index 0000000..3d929da --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.dfm @@ -0,0 +1,597 @@ +inherited frViewListaTraspasos: TfrViewListaTraspasos + Width = 676 + Height = 486 + ExplicitWidth = 676 + ExplicitHeight = 486 + inherited cxGrid: TcxGrid + Top = 60 + Width = 676 + Height = 426 + ExplicitTop = 60 + ExplicitWidth = 676 + ExplicitHeight = 426 + inherited cxGridView: TcxGridDBTableView + OnMouseDown = cxGridViewMouseDown + FilterBox.Visible = fvNever + OnCellDblClick = cxGridViewCellDblClick + DataController.KeyFieldNames = 'Fecha;Centro;Centro2;Codigo;Color;Tipo;' + OptionsCustomize.ColumnGrouping = True + OptionsSelection.MultiSelect = True + OptionsView.Footer = False + OptionsView.GridLines = glHorizontal + OptionsView.GroupFooters = gfVisibleWhenExpanded + OptionsView.GroupRowStyle = grsOffice11 + Preview.Column = cxGridViewObservaciones + Preview.Visible = True + Styles.Footer = cxStyleFooter + object cxGridViewAPROBADO: TcxGridDBColumn + DataBinding.FieldName = 'APROBADO' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Alignment.Horz = taLeftJustify + Properties.Images = SmallImages + Properties.Items = < + item + Description = 'Aprobado' + ImageIndex = 0 + Value = 'S' + end + item + Description = 'Pendiente' + ImageIndex = 1 + Value = 'N' + end> + Properties.ReadOnly = True + Properties.ShowDescriptions = False + MinWidth = 15 + Width = 34 + IsCaptionAssigned = True + end + object cxGridViewFECHA: TcxGridDBColumn + DataBinding.FieldName = 'FECHA' + SortIndex = 1 + SortOrder = soAscending + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 87 + end + object cxGridViewCENTRO: TcxGridDBColumn + DataBinding.FieldName = 'CENTRO' + Visible = False + end + object cxGridViewESTADO_TRASPASO: TcxGridDBColumn + DataBinding.FieldName = 'ESTADO_TRASPASO' + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 59 + end + object cxGridViewFILIAL: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'FILIAL' + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 296 + end + object cxGridViewCENTRO2: TcxGridDBColumn + DataBinding.FieldName = 'CENTRO2' + Visible = False + end + object cxGridViewTIPO: TcxGridDBColumn + Caption = 'E/S' + DataBinding.FieldName = 'TIPO' + PropertiesClassName = 'TcxImageComboBoxProperties' + Properties.Images = PngImageListTipo + Properties.Items = < + item + Description = 'Entrada' + ImageIndex = 0 + Value = 'E' + end + item + Description = 'Salida' + ImageIndex = 1 + Tag = 1 + Value = 'S' + end> + Properties.Revertable = True + Properties.ShowDescriptions = False + Width = 51 + end + object cxGridViewFILIAL2: TcxGridDBColumn + Caption = 'Centro 2' + DataBinding.FieldName = 'FILIAL2' + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 328 + end + object cxGridViewCONTABILIZAR: TcxGridDBColumn + DataBinding.FieldName = 'CONTABILIZAR' + Visible = False + Width = 72 + end + object cxGridViewCODIGO: TcxGridDBColumn + DataBinding.FieldName = 'CODIGO' + Visible = False + OnGetDataText = cxGridViewCODIGOGetDataText + OnGetDisplayText = cxGridViewCODIGOGetDisplayText + GroupIndex = 0 + Width = 53 + end + object cxGridViewPRODUCTO: TcxGridDBColumn + DataBinding.FieldName = 'PRODUCTO' + Visible = False + SortIndex = 0 + SortOrder = soAscending + end + object cxGridViewCOLOR: TcxGridDBColumn + DataBinding.FieldName = 'COLOR' + Visible = False + end + object cxGridViewT38: TcxGridDBColumn + Caption = 'T38/S' + DataBinding.FieldName = 'T38' + Visible = False + end + object cxGridViewT40: TcxGridDBColumn + Caption = 'T40/M' + DataBinding.FieldName = 'T40' + Visible = False + end + object cxGridViewT42: TcxGridDBColumn + Caption = 'T42/L' + DataBinding.FieldName = 'T42' + Visible = False + end + object cxGridViewT44: TcxGridDBColumn + Caption = 'T44/XL' + DataBinding.FieldName = 'T44' + Visible = False + end + object cxGridViewT46: TcxGridDBColumn + DataBinding.FieldName = 'T46' + Visible = False + end + object cxGridViewT48: TcxGridDBColumn + DataBinding.FieldName = 'T48' + Visible = False + end + object cxGridViewTOTAL: TcxGridDBColumn + DataBinding.FieldName = 'TOTAL' + Visible = False + end + object cxGridViewTR38: TcxGridDBColumn + Caption = '38/S' + DataBinding.FieldName = 'TR38' + OnGetDisplayText = cxGridViewTR38GetDisplayText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 59 + end + object cxGridViewTR40: TcxGridDBColumn + Caption = '40/M' + DataBinding.FieldName = 'TR40' + OnGetDisplayText = cxGridViewTR40GetDisplayText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 57 + end + object cxGridViewTR42: TcxGridDBColumn + Caption = '42/L' + DataBinding.FieldName = 'TR42' + OnGetDisplayText = cxGridViewTR42GetDisplayText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 59 + end + object cxGridViewTR44: TcxGridDBColumn + Caption = '44/XL' + DataBinding.FieldName = 'TR44' + OnGetDisplayText = cxGridViewTR44GetDisplayText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 55 + end + object cxGridViewTR46: TcxGridDBColumn + Caption = '46' + DataBinding.FieldName = 'TR46' + OnGetDisplayText = cxGridViewTR46GetDisplayText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 60 + end + object cxGridViewTR48: TcxGridDBColumn + Caption = '48' + DataBinding.FieldName = 'TR48' + OnGetDisplayText = cxGridViewTR48GetDisplayText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 57 + end + object cxGridViewTOTAL_RECT: TcxGridDBColumn + DataBinding.FieldName = 'TOTAL_RECT' + OnGetDataText = cxGridViewTOTAL_RECTGetDataText + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + Width = 59 + end + object cxGridViewObservaciones: TcxGridDBColumn + DataBinding.FieldName = 'OBSERVACIONES' + PropertiesClassName = 'TcxMemoProperties' + Styles.OnGetContentStyle = cxGridViewFECHAStylesGetContentStyle + end + end + end + object TBXDockablePanel1: TTBXDockablePanel [1] + Left = 0 + Top = 0 + MaxClientHeight = 61 + Align = alTop + Caption = 'TBXDockablePanel1' + DockedWidth = 32 + DockedHeight = 32 + FloatingWidth = 128 + FloatingHeight = 60 + SupportedDocks = [dkStandardDock, dkMultiDock] + TabOrder = 1 + inline frViewParametrosCentro1: TfrViewParametrosCentro + Left = 0 + Top = 19 + Width = 425 + Height = 41 + Align = alLeft + TabOrder = 0 + ReadOnly = False + ExplicitTop = 19 + ExplicitWidth = 425 + ExplicitHeight = 41 + inherited dxLayoutControl1: TdxLayoutControl + Width = 425 + ExplicitWidth = 425 + inherited ccbCentro: TJvCheckedComboBox + Width = 392 + ExplicitWidth = 392 + end + end + end + object TBXLabel1: TTBXLabel + Left = 0 + Top = 0 + Width = 676 + Height = 19 + Margins.Left = 5 + Margins.Top = 5 + Align = alTop + Caption = 'Par'#225'metros de consulta' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentColor = True + ParentFont = False + Underline = True + end + object pnlAgrupaciones: TTBXAlignmentPanel + Left = 425 + Top = 19 + Width = 251 + Height = 41 + Align = alClient + AutoSize = True + TabOrder = 2 + object TBXButton3: TTBXButton + Tag = 3 + Left = 8 + Top = 10 + Width = 90 + Height = 21 + AutoSize = False + Caption = 'Consultar' + ImageIndex = 0 + TabOrder = 0 + Wrapping = twEndEllipsis + end + end + end + inherited dsDataSource: TDADataSource + DataSet = tbl_TraspasosPendientes.Dataset + DataTable = dmTraspasos.tbl_TraspasosPendientes + Top = 120 + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + PreviewOptions.EnableOptions = [peoCanChangeMargins, peoPageBackground, peoPageSetup, peoPreferences, peoPrint, peoReportDesign] + object dxComponentPrinterLink1: 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.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 = ( + 'VARELA IMAGEN Y DISE'#209'O 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 = ( + 'CONTROL DE TRASPASOS') + PrinterPage.PageHeader.RightTitle.Strings = ( + '[Date & Time Printed]') + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage.ScaleMode = smFit + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.CreationDate = 38877.461868113420000000 + ShrinkToPageWidth = True + OptionsCards.Shadow.Depth = 0 + OptionsExpanding.ExpandGroupRows = 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.Preview = cxStyleObservacionesInforme + Styles.Selection = cxStyleSelectionInforme + OnInitializeCell = dxComponentPrinterLink1InitializeCell + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleSubtotal: TcxStyle + AssignedValues = [svColor] + Color = 14803425 + end + object cxStyleCantidadRectificada: TcxStyle + AssignedValues = [svTextColor] + TextColor = 2129152 + end + object cxStyleNoContabilizar: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsStrikeOut] + TextColor = clGray + end + object cxStyleFooter: TcxStyle + AssignedValues = [svColor] + Color = clWindow + end + object cxStyleCentro2: TcxStyle + AssignedValues = [svTextColor] + TextColor = 6579300 + end + end + object SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000001004944415478DACD92A152C4301086FF3A1C7BAE8E3C427095952757 + D611890C4F401E216F4025F22432B232F2E4CA3AB6AEEE480F8368872908F867 + 32BB93C97EBBF9930ABF54F5BF00FC18856A7B676FF4701A32816CA69A6E69D6 + FB3E72FE1ED0C50B3B872C0A390B8808B631902C5045590A9D15A9E76A1DE07B + 87192FDC3D94C3136454989A50784B35D290C0C91DC208DDF4A0ED4299C2A380 + 3EBB96B88044D2C46FCE7C2D5E07B818689467C3E13A723EA72B2CBFBA55C357 + 375B0E17D33072CE13275FBAAA6243EB8063E88B5DECF464FC209BC59B007B0C + 54EEFE5ED2274921EE062C32AD0FCBC3488AF66780C69B1296CF636488FB3CD8 + A3BF077C00CC5678110543289A0000000049454E44AE426082} + Name = 'PngImage25' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000FE4944415478DAA5D22157C3301007F07FDD1CFD060D0EB7E270544E + 866F10399939DC8AAB5B71C87E8448E4E1E6086EF27091899B2B5734F4A5DBBD + 1793E4FD7277B9025746F1D72675B656C0678C119816E26DFD469C0D7067C752 + 29DC9C2312331CD1B72156D9807F36E35A001C9D3CCEF80848CD3196F9C0568F + EB3B016840920A5C88C99C900FD056932AF15879429232EC092F4340BB04B06A + 8543E51DBE248336E0DE05F86CE01769D4589F1983F4D1FE93FE2CD03F286BC0 + 07CBD849FAFD62600AA79B513B9ABD337B38349205717F11E03BDB4AE17BFFEE + 9E34B15B0C4CD358C91CBC32E41B63B118701BD532C77DB9C2CEF878591373E2 + 6AE007B3FF721173EAE95F0000000049454E44AE426082} + Name = 'PngImage26' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 395 + Top = 80 + Bitmap = {} + end + object cxStyleRepositoryInforme: TcxStyleRepository + Left = 112 + Top = 48 + 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 + object cxStyleObservacionesInforme: TcxStyle + AssignedValues = [svFont, svTextColor] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + TextColor = clBlack + end + end + object PngImageListTipo: 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 + F73EE77CFEFC2FF784F3FB25D29F33000000FD4944415478DA63FCFFFF3F0325 + 8091AA06585A5A622860156DFAFFFB751D23B2D8F1E3C7893300A499E1FF1F86 + DF6F9A483700A439BDC49C6166D72186DF6F5B493300A6F9DBD79F0C8BA71C65 + F8FFFF2F501488FFFD01D38777C432E2340059F3D72F3F18BE7D01D25F7F307C + F9F483E1F3A7EF0CB72EDC6138B22311BB01767EBBF16A7EF3EA13C3BB27CF18 + 8EEC4AC5E302E1EAFF02628C0C16B6EA0C270EDFC48895B74F1E311CDD9589DB + 001060112CF92F28C10166BF7FF68EE13FC31FB0FFC13430568EEECEC56F00D8 + 10FEDCFF8252FC0CEF9EBD62F8FB711679E980993FED3FC8E6BF9FE791670008 + 30F1C6FDFFF779117106900306DE00006A32C2E1ABAC85280000000049454E44 + AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000FE4944415478DA + 63FCFFFF3F03258091AA06303232A248F2ACE2F8FF25EC0723BA26143DF80CE0 + 5EC2FEFFFFAFFF0CDF927E31926500D73CB6FFED4E450CE51B7B197EE4FF6624 + 6800EF5ACEFF0CFF800A80B682F14F06860ABB6486F7DF3F314CDFB992E167F5 + 1F46FC06ACE6FCBFCCBB8FE1C3D78F0CEFBF7D84D040CD6F3EBF6778F3E51DC3 + DE6367187EB7FF61C46900CF528EFFD3DD1AB06A06E12F3FBE32DC3EF39CE1CF + 94BF8C580DE09ECF0EF6F3F4FD8B516383831BAEF9EFD47FB85DC0350312EA0C + E03000FAF537038392BC38580EA699A45860AD64F9AFAC268EA2992403588A98 + FFFFFFF91F45334906306733FD47D78CD70072C0C01B0000F574D6E150544812 + 0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + PngOptions = [pngBlendOnDisabled, pngGrayscaleOnDisabled] + Left = 451 + Top = 80 + Bitmap = {} + end +end diff --git a/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.pas b/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.pas new file mode 100644 index 0000000..7ad0af1 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Cliente/uViewListaTraspasos.pas @@ -0,0 +1,656 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uViewListaTraspasos; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, DBTables, cxGridLevel, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, + cxControls, cxGridCustomView, cxGrid, uBizTraspasos, dxPSGlbl, + dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, + dxPSFillPatterns, dxPSEdgePatterns, cxCalendar, cxTextEdit, + cxCurrencyEdit, dxPSCore, uDADataTable, StdCtrls, cxGridBandedTableView, + cxGridDBBandedTableView, cxImageComboBox, ImgList, PngImageList, + dxPScxCommon, dxPScxGridLnk, cxMemo, TBXDkPanels, uCustomView, uViewBase, + uViewParametrosCentro, TB2Dock, uDAInterfaces, uViewParametrosControlGrid; + +type + IViewListaTraspasos = interface(IViewGrid) + ['{E4401ABB-E95D-43AC-9155-BA57DC2B88C2}'] + procedure VerPendientes; + procedure VerAprobados; + procedure VerTodos; + + function GetItems: IBizTraspasos; + procedure SetItems(const Value: IBizTraspasos); + property Items: IBizTraspasos read GetItems write SetItems; + end; + + TfrViewListaTraspasos = class(TfrViewGrid, IViewListaTraspasos) + cxStyleSubtotal: TcxStyle; + SmallImages: TPngImageList; + cxStyleCantidadRectificada: TcxStyle; + cxStyleNoContabilizar: TcxStyle; + cxStyleFooter: TcxStyle; + dxComponentPrinterLink1: TdxGridReportLink; + cxStyleRepositoryInforme: TcxStyleRepository; + cxStyleContentInforme: TcxStyle; + cxStyleFooterInforme: TcxStyle; + cxStyleGroupInforme: TcxStyle; + cxStyleHeaderInforme: TcxStyle; + cxStyleSelectionInforme: TcxStyle; + cxGridViewTIPO: TcxGridDBColumn; + cxGridViewFECHA: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewFILIAL: TcxGridDBColumn; + cxGridViewCENTRO2: TcxGridDBColumn; + cxGridViewFILIAL2: TcxGridDBColumn; + cxGridViewAPROBADO: TcxGridDBColumn; + cxGridViewESTADO_TRASPASO: TcxGridDBColumn; + cxGridViewCONTABILIZAR: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewTR38: TcxGridDBColumn; + cxGridViewTR40: TcxGridDBColumn; + cxGridViewTR42: TcxGridDBColumn; + cxGridViewTR44: TcxGridDBColumn; + cxGridViewTR46: TcxGridDBColumn; + cxGridViewTR48: TcxGridDBColumn; + cxGridViewTOTAL_RECT: TcxGridDBColumn; + cxGridViewT38: TcxGridDBColumn; + cxGridViewT40: TcxGridDBColumn; + cxGridViewT42: TcxGridDBColumn; + cxGridViewT44: TcxGridDBColumn; + cxGridViewT46: TcxGridDBColumn; + cxGridViewT48: TcxGridDBColumn; + cxGridViewTOTAL: TcxGridDBColumn; + PngImageListTipo: TPngImageList; + cxStyleCentro2: TcxStyle; + cxGridViewObservaciones: TcxGridDBColumn; + cxStyleObservacionesInforme: TcxStyle; + TBXDockablePanel1: TTBXDockablePanel; + frViewParametrosCentro1: TfrViewParametrosCentro; + TBXLabel1: TTBXLabel; + pnlAgrupaciones: TTBXAlignmentPanel; + TBXButton3: TTBXButton; + procedure cxGridViewMouseDown(Sender: TObject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure cxGridBandedViewRR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridViewCellDblClick(Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); + procedure cxGridBandedViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridViewTR38GetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + procedure cxGridViewTR40GetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + procedure cxGridViewTR42GetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + procedure cxGridViewTR44GetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + procedure cxGridViewTR46GetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + procedure cxGridViewTR48GetDisplayText(Sender: TcxCustomGridTableItem; + ARecord: TcxCustomGridRecord; var AText: String); + procedure cxGridViewTR38StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewTR40StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewTR42StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewTR44StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewTR46StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewTR48StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewCODIGOGetDataText(Sender: TcxCustomGridTableItem; + ARecordIndex: Integer; var AText: String); + procedure cxGridViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); + procedure cxGridViewTOTAL_RECTGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); + procedure cxGridViewFECHAStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure dxComponentPrinterLink1InitializeCell( + Sender: TdxGridReportLink; AView: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AColumn: TcxGridColumn; + AnItem: TAbstractdxReportCellData); + protected + FItems: IBizTraspasos; + FTipo : String; + FNivelFiltrado : TcxFilterCriteriaItemList; + procedure FilterChanged(Sender: TObject); override; + function GetItems: IBizTraspasos; + procedure SetItems(const Value: IBizTraspasos); + + public + property Items: IBizTraspasos read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Preview; override; + procedure Print; override; + procedure PrintSetup; override; + procedure VerPendientes; + procedure VerAprobados; + procedure VerTodos; + procedure Refresh; + end; + + +implementation + +uses + uDataModuleTraspasos, DateUtils, cxGridDBDataDefinitions, + uViewGridBase, cxGridRows; + +{$R *.dfm} + +procedure TfrViewListaTraspasos.cxGridViewMouseDown( + Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, + Y: Integer); +var + HT: TcxCustomGridHitTest; + ALevelIndex, AGroupIndex, I, AIndex: Integer; + AList: TList; + DC: TcxGridDBDataController; +begin + inherited; + HT := TcxGridSite(Sender).GridView.ViewInfo.GetHitTest(X, Y); + if (HT is TcxGridRecordHitTest) and not (HT is TcxGridRecordCellHitTest) + and not (HT is TcxGridExpandButtonHitTest) then + begin + DC := TcxGridDBTableView(TcxGridSite(Sender).GridView).DataController; + AList := TList.Create; + ALevelIndex := TcxGridRecordHitTest(HT).GridRecord.Level; + if ALevelIndex > 0 then + begin + ShowHourglassCursor; + TcxGridDBTableView(TcxGridSite(Sender).GridView).BeginUpdate; + try + AGroupIndex := DC.Groups.DataGroupIndexByRowIndex[TcxGridRecordHitTest(HT).GridRecord.Index]; + DC.Groups.LoadRecordIndexes(AList, AGroupIndex); + for I := 0 to AList.Count - 1 do + begin + AIndex := DC.GetRowIndexByRecordIndex(Integer(AList[I]), True); + DC.SelectRows(AIndex, AIndex); + end; + finally + FreeAndNil(AList); + TcxGridDBTableView(TcxGridSite(Sender).GridView).EndUpdate; + HideHourglassCursor; + end; + end; + end; +end; + +procedure TfrViewListaTraspasos.VerAprobados; +begin + FTipo := 'S'; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); +end; + +procedure TfrViewListaTraspasos.VerPendientes; +begin + FTipo := 'N'; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); +end; + +procedure TfrViewListaTraspasos.VerTodos; +begin + FTipo := ''; + FreeAndNil(FNivelFiltrado); + FilterChanged(self); + cxGridViewAPROBADO.Visible := True; +end; + +procedure TfrViewListaTraspasos.cxGridBandedViewRR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT38.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewCellDblClick( + Sender: TcxCustomGridTableView; + ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; + AShift: TShiftState; var AHandled: Boolean); +begin + inherited; + if Assigned(FOnDblClick) then + FOnDblClick(Sender); +end; + +procedure TfrViewListaTraspasos.Preview; +begin + inherited; +// dxComponentPrinterLink1.OnInitializeCell := dxComponentPrinterLink1InitializeCell; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewListaTraspasos.Print; +begin + inherited; + dxComponentPrinterLink1.Print(True, nil); +end; + +procedure TfrViewListaTraspasos.PrintSetup; +begin + inherited; + dxComponentPrinterLink1.PageSetup; +end; + +procedure TfrViewListaTraspasos.Refresh; +var + ACentrosList : TStringList; + AWhereCentro : String; + AWhereCentro2 : String; + AWhere : String; + i : integer; +begin + ACentrosList := Nil; + + if Assigned(FItems) then + Items.DataTable.Active := False; + ACentrosList := frViewParametrosCentro1.CentrosSeleccionados; + + ShowHourglassCursor; + try + if Assigned(ACentrosList) then + begin + AWhereCentro := ''; + AWhereCentro2 := ''; + if ACentrosList.Count = 0 then + begin + ShowMessage('Debe seleccionar al menos un centro en los parámetros de la consulta.'); + Exit; + end + else begin + AWhereCentro := AWhereCentro + ' FILIAL in ('; + AWhereCentro2 := AWhereCentro2 + ' FILIAL2 in ('; + for i := 0 to ACentrosList.Count - 1 do + begin + if i > 0 then + begin + AWhereCentro := AWhereCentro + ', '; + AWhereCentro2 := AWhereCentro2 + ', '; + end; + AWhereCentro := AWhereCentro + '''' + ACentrosList[i] + ''''; + AWhereCentro2 := AWhereCentro2 + '''' + ACentrosList[i] + ''''; + end; + AWhereCentro := AWhereCentro + ')'; + AWhereCentro2 := AWhereCentro2 + ')'; + end; + end; + + AWhere := ''; + if AWhereCentro <> '' then + begin + AWhere := AWhere + AWhereCentro + ' OR ' + AWhereCentro2; + end; + + Items.DataTable.Where.Clear; + Items.DataTable.Where.AddText(AWhere, False); + Items.DataTable.Active := True; + + finally + HideHourglassCursor; + FreeAndNIL(ACentrosList); + end; +end; + +constructor TfrViewListaTraspasos.Create(AOwner: TComponent); +begin + inherited; + FItems := Nil; + frViewParametrosCentro1.Refresh; +end; + +procedure TfrViewListaTraspasos.SetItems(const Value: IBizTraspasos); +begin + FItems := Value; + if Assigned(FItems) then + dsDataSource.DataTable := FItems.DataTable; +end; + +procedure TfrViewListaTraspasos.cxGridBandedViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +begin + inherited; + AText := StringReplace(AText, 'CODIGO : ', '', [rfReplaceAll, rfIgnoreCase]) +end; + +procedure TfrViewListaTraspasos.cxGridViewTR38GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT38.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR40GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT40.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR42GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT42.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR44GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT44.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR46GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT46.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR48GetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +var + AStr : String; +begin + inherited; + if not Assigned( ARecord ) then + Exit; + + AStr := VarToStrDef(ARecord.Values[cxGridViewT48.Index], ''); + if not ((AStr = '') and (AText = '0')) and (AStr <> AText) then + begin + if Length(AStr) = 0 then + AStr := '0'; + AText := AText + ' (' + AStr + ')'; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR38StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewT38.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR40StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewT40.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR42StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewT42.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR44StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewT44.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR46StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewT46.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +procedure TfrViewListaTraspasos.cxGridViewTR48StylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +begin + inherited; + if Assigned(ARecord) and Assigned(AItem) then + begin + if ARecord.Values[AItem.Index] <> ARecord.Values[cxGridViewT48.Index] then + AStyle := cxStyleCantidadRectificada; + end; +end; + +destructor TfrViewListaTraspasos.Destroy; +begin + FItems := Nil; + inherited; +end; + +procedure TfrViewListaTraspasos.cxGridViewCODIGOGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Val1, Val2: string; +begin + inherited; + + Val1 := Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridViewPRODUCTO.Index]; + Val2 := Sender.GridView.DataController.DisplayTexts[ARecordIndex, cxGridViewCOLOR.Index]; + AText := 'Producto: ' + Val1 + ' - Color: ' + Val2; +end; + +procedure TfrViewListaTraspasos.cxGridViewCODIGOGetDisplayText( + Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; + var AText: String); +begin + inherited; + AText := StringReplace(AText, 'Código : ', '', [rfReplaceAll, rfIgnoreCase]) +end; + +procedure TfrViewListaTraspasos.cxGridViewTOTAL_RECTGetDataText( + Sender: TcxCustomGridTableItem; ARecordIndex: Integer; + var AText: String); +var + Total : Double; +begin + inherited; + + Total := 0; + with Sender.GridView.DataController do + begin + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewTR38.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewTR40.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewTR42.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewTR44.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewTR46.Index], 0); + Total := Total + StrToFloatDef(DisplayTexts[ARecordIndex, cxGridViewTR48.Index], 0); + end; + AText := FloatToStr(Total); +end; + +procedure TfrViewListaTraspasos.cxGridViewFECHAStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + aux : string; +begin + inherited; + if Assigned(ARecord) then + begin + aux := ARecord.Values[cxGridViewCONTABILIZAR.Index]; + if aux = 'N' then + AStyle := cxStyleNoContabilizar + end; +end; + +procedure TfrViewListaTraspasos.dxComponentPrinterLink1InitializeCell( + Sender: TdxGridReportLink; AView: TcxCustomGridTableView; + ARecord: TcxCustomGridRecord; AColumn: TcxGridColumn; + AnItem: TAbstractdxReportCellData); +var + aux : string; +begin + inherited; + if Assigned(ARecord) then + begin + aux := ARecord.Values[cxGridViewCONTABILIZAR.Index]; + if aux = 'N' then + begin + AnItem.Font.Style := cxStyleNoContabilizar.Font.Style; + AnItem.Font.Color := cxStyleNoContabilizar.Font.Color; + end; + end; +end; + +procedure TfrViewListaTraspasos.FilterChanged(Sender: TObject); +var + AItemList: TcxFilterCriteriaItemList; +begin + inherited; + + cxGridView.DataController.Filter.BeginUpdate; + AItemList := cxGridView.DataController.Filter.Root; + + if (Length(FTIPO) > 0) then + begin + FNivelFiltrado := AItemList.AddItemList(fboAnd); + FNivelFiltrado.AddItem(cxGridViewAPROBADO, foEqual, FTIPO, FTIPO); + end; + + if cxGridView.DataController.Filter.IsEmpty + then cxGridView.DataController.Filter.Active := False + else cxGridView.DataController.Filter.Active := True; + + cxGridView.DataController.Filter.EndUpdate; +end; + +function TfrViewListaTraspasos.GetItems: IBizTraspasos; +begin + Result := FItems; +end; + +end. diff --git a/2.1.0/Source/Modulos/Traspasos/Reglas/uBizTraspasos.pas b/2.1.0/Source/Modulos/Traspasos/Reglas/uBizTraspasos.pas new file mode 100644 index 0000000..cd4df37 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Reglas/uBizTraspasos.pas @@ -0,0 +1,77 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uBizTraspasos; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDBSelectionList; + + +const + BIZ_TRASPASOS = 'Client.Traspasos'; + +type + TInvTraspasoEstado = (titPendiente, titAprobado); + + IBizTraspasos = interface(IDAStronglyTypedDataTable) //ITraspasos) + ['{91E16E44-2A50-4459-A758-B14948E0A134}'] + procedure Show; + procedure SetEstado(const AValue : TInvTraspasoEstado); + function GetEstado : TInvTraspasoEstado ; + property Estado : TInvTraspasoEstado read GetEstado write SetEstado; + end; + + + TBizTraspasosDataTableRules = class(TDADataTableRules, IBizTraspasos) //TTraspasosDataTableRules, IBizTraspasos, + protected + procedure SetEstado(const AValue : TInvTraspasoEstado); + function GetEstado : TInvTraspasoEstado ; + public + procedure Show; + property Estado : TInvTraspasoEstado read GetEstado write SetEstado; + end; + + +implementation + +uses + uEditorUtils, uDataModuleTraspasos; + +{ TBizRecepcionDataTableRules } + +function TBizTraspasosDataTableRules.GetEstado: TInvTraspasoEstado; +begin + if DataTable.FieldByName('APROBADO').AsString = 'S' then + Result := titAprobado + else + Result := titPendiente +end; + +procedure TBizTraspasosDataTableRules.SetEstado( + const AValue: TInvTraspasoEstado); +begin + case AValue of + titPendiente : DataTable.FieldByName('APROBADO').AsString := 'N'; + titAprobado : DataTable.FieldByName('APROBADO').AsString := 'S'; + else + DataTable.FieldByName('APROBADO').AsString := 'N'; + end; +end; + +procedure TBizTraspasosDataTableRules.Show; +begin + ShowEditor(IBizTraspasos, Self, etItem); +end; + +initialization + RegisterDataTableRules(BIZ_TRASPASOS, TBizTraspasosDataTableRules); + +end. + diff --git a/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.ddp b/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.dfm b/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.dfm new file mode 100644 index 0000000..e673da5 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.dfm @@ -0,0 +1,1307 @@ +object srvTraspasos: TsrvTraspasos + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schTraspasos + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 + object DABINAdapter: TDABINAdapter + Left = 40 + Top = 96 + end + object schTraspasos: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DADataDictionary1 + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_TRASPASOS' + SQL = + 'SELECT '#10' TIPO, FECHA, CENTRO, FILIAL, CENTRO2, FILIAL2, APROB' + + 'ADO, '#10' ESTADO_TRASPASO, OBSERVACIONES, CONTABILIZAR, FECHACAM' + + 'BIO, '#10' CODIGO, PRODUCTO, COLOR, T38, T40, T42, T44, T46, T48,' + + ' '#10' TOTAL, TR38, TR40, TR42, TR44, TR46, TR48, TOTAL_RECT'#10' FR' + + 'OM'#10' RDX_V_CONTROL_TRASPASOS' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CENTRO2' + TableField = 'CENTRO2' + end + item + DatasetField = 'FILIAL2' + TableField = 'FILIAL2' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'T38' + TableField = 'T38' + end + item + DatasetField = 'T40' + TableField = 'T40' + end + item + DatasetField = 'T42' + TableField = 'T42' + end + item + DatasetField = 'T44' + TableField = 'T44' + end + item + DatasetField = 'T46' + TableField = 'T46' + end + item + DatasetField = 'T48' + TableField = 'T48' + end + item + DatasetField = 'TOTAL' + TableField = 'TOTAL' + end + item + DatasetField = 'TR38' + TableField = 'TR38' + end + item + DatasetField = 'TR40' + TableField = 'TR40' + end + item + DatasetField = 'TR42' + TableField = 'TR42' + end + item + DatasetField = 'TR44' + TableField = 'TR44' + end + item + DatasetField = 'TR46' + TableField = 'TR46' + end + item + DatasetField = 'TR48' + TableField = 'TR48' + end + item + DatasetField = 'TOTAL_RECT' + TableField = 'TOTAL_RECT' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'ESTADO_TRASPASO' + TableField = 'ESTADO_TRASPASO' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'CONTABILIZAR' + TableField = 'CONTABILIZAR' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end> + end> + Name = 'Traspasos' + Fields = < + item + Name = 'TIPO' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_TIPO' + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Traspasos_FECHA' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Traspasos_CENTRO' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Traspasos_FILIAL' + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + DictionaryEntry = 'Traspasos_CENTRO2' + end + item + Name = 'FILIAL2' + DataType = datString + Size = 25 + DictionaryEntry = 'Traspasos_FILIAL2' + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_APROBADO' + end + item + Name = 'ESTADO_TRASPASO' + DataType = datString + Size = 20 + DictionaryEntry = 'Traspasos_ESTADO_TRASPASO' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + DictionaryEntry = 'Traspasos_OBSERVACIONES' + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_CONTABILIZAR' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Traspasos_FECHACAMBIO' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Traspasos_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Traspasos_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Traspasos_COLOR' + end + item + Name = 'T38' + DataType = datFloat + DictionaryEntry = 'Traspasos_T38' + end + item + Name = 'T40' + DataType = datFloat + DictionaryEntry = 'Traspasos_T40' + end + item + Name = 'T42' + DataType = datFloat + DictionaryEntry = 'Traspasos_T42' + end + item + Name = 'T44' + DataType = datFloat + DictionaryEntry = 'Traspasos_T44' + end + item + Name = 'T46' + DataType = datFloat + DictionaryEntry = 'Traspasos_T46' + end + item + Name = 'T48' + DataType = datFloat + DictionaryEntry = 'Traspasos_T48' + end + item + Name = 'TOTAL' + DataType = datFloat + DictionaryEntry = 'Traspasos_TOTAL' + end + item + Name = 'TR38' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR38' + end + item + Name = 'TR40' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR40' + end + item + Name = 'TR42' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR42' + end + item + Name = 'TR44' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR44' + end + item + Name = 'TR46' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR46' + end + item + Name = 'TR48' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR48' + end + item + Name = 'TOTAL_RECT' + DataType = datFloat + DictionaryEntry = 'Traspasos_TOTAL_RECT' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_TRASPASOS' + SQL = + 'SELECT '#10' TIPO, FECHA, CENTRO, FILIAL, CENTRO2, FILIAL2, APROB' + + 'ADO, '#10' ESTADO_TRASPASO, OBSERVACIONES, CONTABILIZAR, FECHACAM' + + 'BIO, '#10' CODIGO, PRODUCTO, COLOR, T38, T40, T42, T44, T46, T48,' + + ' '#10' TOTAL, TR38, TR40, TR42, TR44, TR46, TR48, TOTAL_RECT'#10' FR' + + 'OM'#10' RDX_V_CONTROL_TRASPASOS'#10' WHERE APROBADO = '#39'N'#39 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CENTRO2' + TableField = 'CENTRO2' + end + item + DatasetField = 'FILIAL2' + TableField = 'FILIAL2' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'T38' + TableField = 'T38' + end + item + DatasetField = 'T40' + TableField = 'T40' + end + item + DatasetField = 'T42' + TableField = 'T42' + end + item + DatasetField = 'T44' + TableField = 'T44' + end + item + DatasetField = 'T46' + TableField = 'T46' + end + item + DatasetField = 'T48' + TableField = 'T48' + end + item + DatasetField = 'TOTAL' + TableField = 'TOTAL' + end + item + DatasetField = 'TR38' + TableField = 'TR38' + end + item + DatasetField = 'TR40' + TableField = 'TR40' + end + item + DatasetField = 'TR42' + TableField = 'TR42' + end + item + DatasetField = 'TR44' + TableField = 'TR44' + end + item + DatasetField = 'TR46' + TableField = 'TR46' + end + item + DatasetField = 'TR48' + TableField = 'TR48' + end + item + DatasetField = 'TOTAL_RECT' + TableField = 'TOTAL_RECT' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'ESTADO_TRASPASO' + TableField = 'ESTADO_TRASPASO' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'CONTABILIZAR' + TableField = 'CONTABILIZAR' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end> + end> + Name = 'TraspasosPendientes' + Fields = < + item + Name = 'TIPO' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_TIPO' + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Traspasos_FECHA' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Traspasos_CENTRO' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Traspasos_FILIAL' + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + DictionaryEntry = 'Traspasos_CENTRO2' + end + item + Name = 'FILIAL2' + DataType = datString + Size = 25 + DictionaryEntry = 'Traspasos_FILIAL2' + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_APROBADO' + end + item + Name = 'ESTADO_TRASPASO' + DataType = datString + Size = 20 + DictionaryEntry = 'Traspasos_ESTADO_TRASPASO' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + DictionaryEntry = 'Traspasos_OBSERVACIONES' + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_CONTABILIZAR' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Traspasos_FECHACAMBIO' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Traspasos_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Traspasos_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Traspasos_COLOR' + end + item + Name = 'T38' + DataType = datFloat + DictionaryEntry = 'Traspasos_T38' + end + item + Name = 'T40' + DataType = datFloat + DictionaryEntry = 'Traspasos_T40' + end + item + Name = 'T42' + DataType = datFloat + DictionaryEntry = 'Traspasos_T42' + end + item + Name = 'T44' + DataType = datFloat + DictionaryEntry = 'Traspasos_T44' + end + item + Name = 'T46' + DataType = datFloat + DictionaryEntry = 'Traspasos_T46' + end + item + Name = 'T48' + DataType = datFloat + DictionaryEntry = 'Traspasos_T48' + end + item + Name = 'TOTAL' + DataType = datFloat + DictionaryEntry = 'Traspasos_TOTAL' + end + item + Name = 'TR38' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR38' + end + item + Name = 'TR40' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR40' + end + item + Name = 'TR42' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR42' + end + item + Name = 'TR44' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR44' + end + item + Name = 'TR46' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR46' + end + item + Name = 'TR48' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR48' + end + item + Name = 'TOTAL_RECT' + DataType = datFloat + DictionaryEntry = 'Traspasos_TOTAL_RECT' + end> + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_TRASPASOS' + SQL = + 'SELECT '#10' TIPO, FECHA, CENTRO, FILIAL, CENTRO2, FILIAL2, APROB' + + 'ADO, '#10' ESTADO_TRASPASO, OBSERVACIONES, CONTABILIZAR, FECHACAM' + + 'BIO, '#10' CODIGO, PRODUCTO, COLOR, T38, T40, T42, T44, T46, T48,' + + ' '#10' TOTAL, TR38, TR40, TR42, TR44, TR46, TR48, TOTAL_RECT'#10' FR' + + 'OM'#10' RDX_V_CONTROL_TRASPASOS'#10' WHERE APROBADO = '#39'S'#39 + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FILIAL' + TableField = 'FILIAL' + end + item + DatasetField = 'CENTRO2' + TableField = 'CENTRO2' + end + item + DatasetField = 'FILIAL2' + TableField = 'FILIAL2' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'T38' + TableField = 'T38' + end + item + DatasetField = 'T40' + TableField = 'T40' + end + item + DatasetField = 'T42' + TableField = 'T42' + end + item + DatasetField = 'T44' + TableField = 'T44' + end + item + DatasetField = 'T46' + TableField = 'T46' + end + item + DatasetField = 'T48' + TableField = 'T48' + end + item + DatasetField = 'TOTAL' + TableField = 'TOTAL' + end + item + DatasetField = 'TR38' + TableField = 'TR38' + end + item + DatasetField = 'TR40' + TableField = 'TR40' + end + item + DatasetField = 'TR42' + TableField = 'TR42' + end + item + DatasetField = 'TR44' + TableField = 'TR44' + end + item + DatasetField = 'TR46' + TableField = 'TR46' + end + item + DatasetField = 'TR48' + TableField = 'TR48' + end + item + DatasetField = 'TOTAL_RECT' + TableField = 'TOTAL_RECT' + end + item + DatasetField = 'APROBADO' + TableField = 'APROBADO' + end + item + DatasetField = 'ESTADO_TRASPASO' + TableField = 'ESTADO_TRASPASO' + end + item + DatasetField = 'OBSERVACIONES' + TableField = 'OBSERVACIONES' + end + item + DatasetField = 'CONTABILIZAR' + TableField = 'CONTABILIZAR' + end + item + DatasetField = 'FECHACAMBIO' + TableField = 'FECHACAMBIO' + end> + end> + Name = 'TraspasosAprobados' + Fields = < + item + Name = 'TIPO' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_TIPO' + end + item + Name = 'FECHA' + DataType = datDateTime + DictionaryEntry = 'Traspasos_FECHA' + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + DictionaryEntry = 'Traspasos_CENTRO' + end + item + Name = 'FILIAL' + DataType = datString + Size = 25 + DictionaryEntry = 'Traspasos_FILIAL' + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + DictionaryEntry = 'Traspasos_CENTRO2' + end + item + Name = 'FILIAL2' + DataType = datString + Size = 25 + DictionaryEntry = 'Traspasos_FILIAL2' + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_APROBADO' + end + item + Name = 'ESTADO_TRASPASO' + DataType = datString + Size = 20 + DictionaryEntry = 'Traspasos_ESTADO_TRASPASO' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + DictionaryEntry = 'Traspasos_OBSERVACIONES' + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + DictionaryEntry = 'Traspasos_CONTABILIZAR' + end + item + Name = 'FECHACAMBIO' + DataType = datDateTime + DictionaryEntry = 'Traspasos_FECHACAMBIO' + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DictionaryEntry = 'Traspasos_CODIGO' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DictionaryEntry = 'Traspasos_PRODUCTO' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DictionaryEntry = 'Traspasos_COLOR' + end + item + Name = 'T38' + DataType = datFloat + DictionaryEntry = 'Traspasos_T38' + end + item + Name = 'T40' + DataType = datFloat + DictionaryEntry = 'Traspasos_T40' + end + item + Name = 'T42' + DataType = datFloat + DictionaryEntry = 'Traspasos_T42' + end + item + Name = 'T44' + DataType = datFloat + DictionaryEntry = 'Traspasos_T44' + end + item + Name = 'T46' + DataType = datFloat + DictionaryEntry = 'Traspasos_T46' + end + item + Name = 'T48' + DataType = datFloat + DictionaryEntry = 'Traspasos_T48' + end + item + Name = 'TOTAL' + DataType = datFloat + DictionaryEntry = 'Traspasos_TOTAL' + end + item + Name = 'TR38' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR38' + end + item + Name = 'TR40' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR40' + end + item + Name = 'TR42' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR42' + end + item + Name = 'TR44' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR44' + end + item + Name = 'TR46' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR46' + end + item + Name = 'TR48' + DataType = datFloat + DictionaryEntry = 'Traspasos_TR48' + end + item + Name = 'TOTAL_RECT' + DataType = datFloat + DictionaryEntry = 'Traspasos_TOTAL_RECT' + end> + end + item + Params = < + item + Name = 'FECHA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_TRASPASOS' + SQL = + 'SELECT '#10' TOTAL_RECT'#10' FROM'#10' RDX_V_CONTROL_TRASPASOS'#10' WHER' + + 'E'#10' FECHA = :FECHA AND'#10' CENTRO = :CENTRO AND'#10' C' + + 'ENTRO2 = :CENTRO2 AND'#10' CODIGO = :CODIGO AND'#10' COLOR =' + + ' :COLOR' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'TOTAL_RECT' + TableField = 'TOTAL_RECT' + end> + end> + Name = 'RefreshTraspasos' + Fields = < + item + Name = 'TOTAL_RECT' + DataType = datFloat + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'ESTADO' + Value = '' + end + item + Name = 'OBSERVACIONES' + DataType = datString + Size = 255 + Value = '' + ParamType = daptInput + end + item + Name = 'CONTABILIZAR' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'TR38' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'TR40' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'TR42' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'TR44' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'TR46' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'TR48' + DataType = datFloat + Value = '' + ParamType = daptInput + end + item + Name = 'APROBADO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO2' + DataType = datString + Size = 17 + Value = '' + ParamType = daptInput + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + Value = '' + ParamType = daptInput + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_CONTROL_TRASPASOS' + SQL = + 'begin'#10' declare @rowcount_var int'#10' declare @ESTADO varchar(' + + '20)'#10' declare @OBSERVACIONES varchar(255)'#10' declare @CONTABI' + + 'LIZAR char(1)'#10#10' declare @TR38 numeric(15,0)'#10' declare @TR40' + + ' numeric(15,0)'#10' declare @TR42 numeric(15,0)'#10' declare @TR44' + + ' numeric(15,0)'#10' declare @TR46 numeric(15,0)'#10' declare @TR48' + + ' numeric(15,0)'#10' declare @TR_S numeric(15,0)'#10' declare @TR_M' + + ' numeric(15,0)'#10' declare @TR_L numeric(15,0)'#10' declare @TR_X' + + 'L numeric(15,0)'#10#10' declare @APROBADO char(1)'#10' declare @FECH' + + 'A datetime'#10' declare @CENTRO varchar(17)'#10' declare @CENTRO2 ' + + 'varchar(17)'#10' declare @CODIGO varchar(12)'#10' declare @COLOR v' + + 'archar(10)'#10' declare @TIPOCANT varchar(3)'#10' declare @TIPO_TA' + + 'LLAJE smallint'#10' '#10' set @ESTADO = :ESTADO'#10' set @OBSERVACI' + + 'ONES = :OBSERVACIONES'#10' set @CONTABILIZAR = :CONTABILIZAR'#10#10' ' + + ' set @TR38 = :TR38'#10' set @TR40 = :TR40'#10' set @TR42 = :TR42'#10' ' + + ' set @TR44 = :TR44'#10' set @TR46 = :TR46'#10' set @TR48 = :TR48' + + #10' set @TR_S = :TR38'#10' set @TR_M = :TR40'#10' set @TR_L = :TR' + + '42'#10' set @TR_XL = :TR44'#10#10' set @APROBADO = :APROBADO'#10' set' + + ' @FECHA = :FECHA'#10' set @CENTRO = :CENTRO'#10' set @CENTRO2 = :C' + + 'ENTRO2'#10' set @CODIGO = :CODIGO'#10' set @COLOR = :COLOR'#10' set' + + ' @TIPOCANT = :TIPO'#10#10' /* ARREGLO PARA QUE SOPORTE LOS NUEVOS T' + + 'ALLAJES*** */'#10#10' execute RDX_P_TIPO_TALLAJE @CODIGO, @TIPO_TAL' + + 'LAJE OUTPUT'#10#10' if @TIPO_TALLAJE = 1'#10' begin'#10' set @TR_S' + + ' = NULL'#10' set @TR_M = NULL'#10' set @TR_L = NULL'#10' s' + + 'et @TR_XL = NULL'#10' end'#10' else'#10' begin'#10' set @TR38 = N' + + 'ULL'#10' set @TR40 = NULL'#10' set @TR42 = NULL'#10' set @' + + 'TR44 = NULL'#10' set @TR46 = NULL'#10' set @TR48 = NULL'#10' ' + + 'end'#10#10' /* *********************************** */'#10#9'update RDX_T' + + 'RASPASOS_AJUSTES set'#10#9' CANT38 = @TR38,'#10#9' CAN' + + 'T40 = @TR40,'#10#9' CANT42 = @TR42,'#10#9' CANT44 = @T' + + 'R44,'#10#9' CANT46 = @TR46,'#10#9' CANT48 = @TR48,'#10#9' ' + + ' CANT_S = @TR_S,'#10#9' CANT_M = @TR_M,'#10#9' ' + + ' CANT_L = @TR_L,'#10#9' CANT_XL = @TR_XL,'#10' AP' + + 'ROBADO = @APROBADO,'#10' ESTADO = @ESTADO,'#10' ' + + ' TIPOCANT = @TIPOCANT,'#10' OBSERVACIONES = @OBSERV' + + 'ACIONES,'#10' CONTABILIZAR = @CONTABILIZAR,'#10' ' + + ' FECHACAMBIO = CURRENT_TIMESTAMP'#10#9'where'#10' (RDX_TR' + + 'ASPASOS_AJUSTES.CENTRO = @CENTRO and'#10' RDX_TRASPASOS' + + '_AJUSTES.CENTRO2 = @CENTRO2 and'#10#9' RDX_TRASPASOS_AJUSTES.COD' + + 'IGO = @CODIGO and'#10#9' RDX_TRASPASOS_AJUSTES.COLOR = @COLOR an' + + 'd'#10#9' RDX_TRASPASOS_AJUSTES.FECHA = @FECHA)'#10#10#9'select @ROWCOUN' + + 'T_VAR = @@ROWCOUNT'#10#10#9'if @ROWCOUNT_VAR = 0'#10' begin'#10' ins' + + 'ert into RDX_TRASPASOS_AJUSTES'#10' (FECHA, CENTRO, C' + + 'ENTRO2, CODIGO, COLOR,'#10' APROBADO, FECHACAMBIO, T' + + 'IPOCANT,'#10' ESTADO, OBSERVACIONES, CONTABILIZAR,'#10' ' + + ' CANT38, CANT40, CANT42,'#10' CANT44,' + + ' CANT46, CANT48,'#10' CANT_S, CANT_M, CANT_L, CANT_X' + + 'L)'#10' values ('#10' @FECHA, @CENTRO, @CENTRO2,' + + ' @CODIGO,'#10' @COLOR, @APROBADO, CURRENT_TIMESTAMP,' + + ' @TIPOCANT,'#10' @ESTADO, @OBSERVACIONES, @CONTABILI' + + 'ZAR,'#10' @TR38, @TR40, @TR42,'#10' @TR4' + + '4, @TR46, @TR48,'#10' @TR_S, @TR_M, @TR_L, @TR_XL)'#10' ' + + ' end'#10'end'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Estado_Traspasos' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 40 + Top = 24 + end + object DADataDictionary1: TDADataDictionary + Fields = < + item + Name = 'Traspasos_TIPO' + DataType = datString + Size = 1 + Required = True + DisplayLabel = 'Tipo' + ReadOnly = True + end + item + Name = 'Traspasos_FECHA' + DataType = datDateTime + DisplayLabel = 'Fecha' + ReadOnly = True + end + item + Name = 'Traspasos_CENTRO' + DataType = datString + Size = 17 + DisplayLabel = 'Centro' + ReadOnly = True + end + item + Name = 'Traspasos_FILIAL' + DataType = datString + Size = 25 + DisplayLabel = 'Filial' + ReadOnly = True + end + item + Name = 'Traspasos_CENTRO2' + DataType = datString + Size = 17 + DisplayLabel = 'Centro2' + ReadOnly = True + end + item + Name = 'Traspasos_FILIAL2' + DataType = datString + Size = 25 + DisplayLabel = 'Filial2' + ReadOnly = True + end + item + Name = 'Traspasos_CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo' + ReadOnly = True + end + item + Name = 'Traspasos_PRODUCTO' + DataType = datString + Size = 40 + Required = True + DisplayLabel = 'Producto' + ReadOnly = True + end + item + Name = 'Traspasos_COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + ReadOnly = True + end + item + Name = 'Traspasos_T38' + DataType = datFloat + DisplayLabel = 'T38' + ReadOnly = True + end + item + Name = 'Traspasos_T40' + DataType = datFloat + DisplayLabel = 'T40' + ReadOnly = True + end + item + Name = 'Traspasos_T42' + DataType = datFloat + DisplayLabel = 'T42' + ReadOnly = True + end + item + Name = 'Traspasos_T44' + DataType = datFloat + DisplayLabel = 'T44' + ReadOnly = True + end + item + Name = 'Traspasos_T46' + DataType = datFloat + DisplayLabel = 'T46' + ReadOnly = True + end + item + Name = 'Traspasos_T48' + DataType = datFloat + DisplayLabel = 'T48' + ReadOnly = True + end + item + Name = 'Traspasos_TOTAL' + DataType = datFloat + DisplayLabel = 'Total' + ReadOnly = True + end + item + Name = 'Traspasos_TR38' + DataType = datFloat + DisplayLabel = 'TR38' + end + item + Name = 'Traspasos_TR40' + DataType = datFloat + DisplayLabel = 'TR40' + end + item + Name = 'Traspasos_TR42' + DataType = datFloat + DisplayLabel = 'TR42' + end + item + Name = 'Traspasos_TR44' + DataType = datFloat + DisplayLabel = 'TR44' + end + item + Name = 'Traspasos_TR46' + DataType = datFloat + DisplayLabel = 'TR46' + end + item + Name = 'Traspasos_TR48' + DataType = datFloat + DisplayLabel = 'TR48' + end + item + Name = 'Traspasos_TOTAL_RECT' + DataType = datFloat + DisplayLabel = 'Total' + end + item + Name = 'Traspasos_APROBADO' + DataType = datString + Size = 1 + DisplayLabel = 'Aprobado' + end + item + Name = 'Traspasos_ESTADO_TRASPASO' + DataType = datString + Size = 20 + DisplayLabel = 'Estado' + end + item + Name = 'Traspasos_OBSERVACIONES' + DataType = datString + Size = 255 + DisplayLabel = 'Observaciones' + end + item + Name = 'Traspasos_CONTABILIZAR' + DataType = datString + Size = 1 + DisplayLabel = 'Contabilizar' + end + item + Name = 'Traspasos_FECHACAMBIO' + DataType = datDateTime + DisplayLabel = 'Fecha cambio' + ReadOnly = True + end> + Left = 40 + Top = 168 + end + object bpTraspasos: TDABusinessProcessor + Schema = schTraspasos + UpdateCommandName = 'Update_Estado_Traspasos' + RefreshDatasetName = 'RefreshTraspasos' + ReferencedDataset = 'Traspasos' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 32 + end + object bpTraspasosAprobadas: TDABusinessProcessor + Schema = schTraspasos + UpdateCommandName = 'Update_Estado_Traspasos' + RefreshDatasetName = 'RefreshTraspasos' + ReferencedDataset = 'TraspasosAprobados' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 88 + end + object bpTraspasosPendientes: TDABusinessProcessor + Schema = schTraspasos + UpdateCommandName = 'Update_Estado_Traspasos' + RefreshDatasetName = 'RefreshTraspasos' + ReferencedDataset = 'TraspasosPendientes' + ProcessorOptions = [poAutoGenerateInsert, poAutoGenerateDelete, poPrepareCommands, poIgnoreRowsAffected] + UpdateMode = updWhereKeyOnly + Left = 192 + Top = 152 + end +end diff --git a/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.pas b/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.pas new file mode 100644 index 0000000..bfd4368 --- /dev/null +++ b/2.1.0/Source/Modulos/Traspasos/Servidor/srvTraspasos_Impl.pas @@ -0,0 +1,51 @@ +unit srvTraspasos_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDADataTable, uDABINAdapter, uDAClasses, + uDAScriptingProvider, uDABusinessProcessor, uDADataStreamer; + +type + { TsrvTraspasos } + TsrvTraspasos = class(TDARemoteService, IsrvTraspasos) + DABINAdapter: TDABINAdapter; + bpTraspasos: TDABusinessProcessor; + bpTraspasosAprobadas: TDABusinessProcessor; + bpTraspasosPendientes: TDABusinessProcessor; + schTraspasos: TDASchema; + DADataDictionary1: TDADataDictionary; + private + protected + { IsrvTraspasos methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer; + +procedure Create_srvTraspasos(out anInstance : IUnknown); +begin + anInstance := TsrvTraspasos.Create(NIL); +end; + +{ srvTraspasos } +initialization + TROClassFactory.Create('srvTraspasos', Create_srvTraspasos, TsrvTraspasos_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.bdsproj b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.bdsproj new file mode 100644 index 0000000..72aa031 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + VentasProceso.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 + 0 + 1 + 0 + 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 + 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/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.cfg b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.cfg new file mode 100644 index 0000000..a34a309 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$Y- +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dof b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dof new file mode 100644 index 0000000..f5bd34e --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dof @@ -0,0 +1,479 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlOutputDirectorry] +Count=2 +Item0=..\..\Output\Servidor +Item1=..\..\Output\Cliente +[HistoryLists\hlBPLOutput] +Count=3 +Item0=..\Lib +Item1=..\..\..\..\Output\Cliente +Item2=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\Lib +Item1=..\..\..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dpk b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dpk new file mode 100644 index 0000000..25d89b6 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dpk @@ -0,0 +1,75 @@ +package VentasProceso; + +{$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 OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + rtl, + dbrtl, + dsnap, + BaseD10, + vcl, + adortl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + GUISDK_D10, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + cxTreeListD10, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + JvGlobusD10R, + ControlesBaseD10, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10; + +contains + uDataModuleVentasProceso in 'uDataModuleVentasProceso.pas' {dmVentasEnProceso: TDAClientDataModule}, + uPluginControllerVentasProceso in 'uPluginControllerVentasProceso.pas' {ModuleVentasProceso: TModuleController}, + uEditorControlesVentaProceso in 'uEditorControlesVentaProceso.pas' {fEditorControlesVentasProceso: TCustomEditor}, + uViewControlesVentaProceso in 'uViewControlesVentaProceso.pas' {frViewControlesVentaProceso: TCustomView}, + uBizControlVentasProceso in '..\Reglas\uBizControlVentasProceso.pas', + uEditorControlVentaProceso in 'uEditorControlVentaProceso.pas' {fEditorControlVentaProceso: TCustomEditor}, + uViewControlVentaProceso in 'uViewControlVentaProceso.pas' {frViewControlVentaProceso: TCustomView}, + schVentasEnProcesoClient_Intf in '..\Reglas\schVentasEnProcesoClient_Intf.pas', + uBizVentasProceso in '..\Reglas\uBizVentasProceso.pas', + uViewControGridlVentaProceso in 'uViewControGridlVentaProceso.pas' {frViewControlGridVentaProceso: TCustomView}; + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dproj b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dproj new file mode 100644 index 0000000..4ba9792 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.dproj @@ -0,0 +1,615 @@ + + + {4210e006-6776-47b8-963e-f11c96ed5691} + VentasProceso.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\VentasProceso.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0VentasProceso.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmVentasEnProceso
+
+ +
fEditorControlesVentasProceso
+
+ +
fEditorControlVentaProceso
+
+ +
ModuleVentasProceso
+
+ +
frViewControlGridVentaProceso
+
+ +
frViewControlesVentaProceso
+
+ +
frViewControlVentaProceso
+
+
+
+ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.drc b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.drc new file mode 100644 index 0000000..2df04e5 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.drc @@ -0,0 +1,23 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uDataModuleVentasProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uViewControlesVentaProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uEditorControlesVentaProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uPluginControllerVentasProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uViewControGridlVentaProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uViewControlVentaProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\uEditorControlVentaProceso.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Cliente\VentasProceso.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf18.tmp */ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.identcache b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.identcache new file mode 100644 index 0000000..8b7a0ee Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.identcache differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.rc b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.res b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/VentasProceso.res differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.ddp b/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.ddp differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.dfm new file mode 100644 index 0000000..ccb41df --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.dfm @@ -0,0 +1,364 @@ +object dmVentasEnProceso: TdmVentasEnProceso + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 300 + Width = 306 + object RemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvVentasEnProceso' + Left = 56 + Top = 16 + end + object tbl_VentasEnProcesoPendientes: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + InPrimaryKey = True + end + item + Name = 'CLAVE1' + DataType = datFloat + InPrimaryKey = True + end + item + Name = 'CLAVE2' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'CLAVE3' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + end + item + Name = 'DIA' + DataType = datInteger + end + item + Name = 'DIASEMANA' + DataType = datString + Size = 30 + end + item + Name = 'MES' + DataType = datString + Size = 30 + end + item + Name = 'ANO' + DataType = datInteger + end + item + Name = 'CENTRO' + DataType = datString + Size = 25 + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 66 + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'GRUPOPRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'TIPOPRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'TALLA' + DataType = datString + Size = 8 + end + item + Name = 'INICIO' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'FINAL' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'IMPORTE' + DataType = datFloat + Alignment = taRightJustify + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'VentasEnProcesoPendientes' + IndexDefs = <> + Left = 200 + Top = 16 + end + object tbl_VentasEnProcesoPendientes2: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = < + item + Name = 'FECHAINI' + DataType = datDateTime + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + DataType = datDateTime + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter2 + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'VentasEnProcesoPendientes' + IndexDefs = <> + Left = 200 + Top = 96 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'VentasEnProcesoPendientes' + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = False + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RemoteService + DataStreamer = DABinDataStreamer2 + Left = 56 + Top = 96 + end + object DARemoteDataAdapter2: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'VentasEnProcesoPendientes' + end + item + Name = 'Columns' + DataType = rtString + Flag = fIn + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetDataCall.RemoteService = RemoteService + GetDataCall.MethodName = 'GetData' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'VentasEnProcesoPendientes' + end + item + Name = 'Columns' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'Params' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RemoteService + DataStreamer = DABinDataStreamer2 + Left = 56 + Top = 168 + end + object DABinDataStreamer2: TDABinDataStreamer + IsCompatibleV4 = False + Left = 56 + Top = 248 + end +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.pas new file mode 100644 index 0000000..cd41a85 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uDataModuleVentasProceso.pas @@ -0,0 +1,113 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit uDataModuleVentasProceso; + +interface + +uses {vcl:} SysUtils, Classes, DB, uDataModuleBase, + {RemObjects:} uDAClientDataModule, uROClient, uROServiceComponent, + uRORemoteService, uDADataTable, uDAScriptingProvider, uDACDSDataTable, + uBizControlVentasProceso, uBizVentasProceso, uDARemoteDataAdapter, + uDADataStreamer, uDABinAdapter; + +const + CATEGORIA_VENTAS_PROCESO = 'VENTAPROCESO'; + +type + TdmVentasEnProceso = class(TDAClientDataModule) + RemoteService: TRORemoteService; + tbl_VentasEnProcesoPendientes: TDACDSDataTable; + tbl_VentasEnProcesoPendientes2: TDACDSDataTable; + DARemoteDataAdapter: TDARemoteDataAdapter; + DARemoteDataAdapter2: TDARemoteDataAdapter; + DABinDataStreamer2: TDABinDataStreamer; + procedure DAClientDataModuleCreate(Sender: TObject); + protected + function GetItems : IBizVentasProceso; + public + function GetNameColumns: String; + function GetControl: IBizControlVentasProceso; + end; + +var + dmVentasEnProceso: TdmVentasEnProceso; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, uDataTableUtils, + uDataModuleControles, schVentasEnProcesoClient_Intf, Dialogs, cxControls; + +procedure TdmVentasEnProceso.DAClientDataModuleCreate(Sender: TObject); +begin + RemoteService.Channel := dmBase.Channel; + RemoteService.Message := dmBase.Message; +end; + +function TdmVentasEnProceso.GetControl: IBizControlVentasProceso; +var + aDataTable : TDACDSDataTable; +begin + aDataTable := dmControles.GetItems(CATEGORIA_VENTAS_PROCESO); + aDataTable.BusinessRulesID := BIZ_CONTROL_VENTASPROCESO; + + (aDataTable as IBizControlVentasProceso).Items := GetItems; + Result := (aDataTable as IBizControlVentasProceso); +end; + +function TdmVentasEnProceso.GetItems: IBizVentasProceso; +var + dtVentas: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtVentas := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_VentasEnProcesoPendientes2, dtVentas); + dtVentas.Fields.AssignFieldCollection(tbl_VentasEnProcesoPendientes.Fields); + dtVentas.BusinessRulesID := BIZ_VENTASPROCESO; + + dtVentas.FieldByName(fld_VentasEnProcesoPendientesNUMINF).Visible := False; + dtVentas.FieldByName(fld_VentasEnProcesoPendientesCLAVE1).Visible := False; + dtVentas.FieldByName(fld_VentasEnProcesoPendientesCLAVE2).Visible := False; + dtVentas.FieldByName(fld_VentasEnProcesoPendientesCLAVE3).Visible := False; + + dtVentas.LoadSchema; + Result := (dtVentas as IBizVentasProceso); + finally + HideHourglassCursor; + end; +end; + +function TdmVentasEnProceso.GetNameColumns: String; +var + AList : TStringList; + i : integer; +begin + AList := TStringList.Create; + try + for i := 0 to tbl_VentasEnProcesoPendientes.FieldCount - 1 do + if tbl_VentasEnProcesoPendientes.Fields[i].Visible then + AList.Add(tbl_VentasEnProcesoPendientes.Fields[i].Name); + Result := AList.CommaText; + finally + FreeAndNil(AList); + end; +end; + + +initialization + dmVentasEnProceso := TdmVentasEnProceso.Create(nil); + +finalization + FreeAndNil(dmVentasEnProceso); + +end. + diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.ddp b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.ddp differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.dfm new file mode 100644 index 0000000..037ce6c --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.dfm @@ -0,0 +1,1716 @@ +inherited fEditorControlVentaProceso: TfEditorControlVentaProceso + Left = 231 + Top = 105 + Width = 687 + Height = 607 + ActiveControl = frViewControlVentaProceso1.bRefrescar + Caption = 'fEditorControlVentaProceso' + OnCreate = CustomEditorCreate + OnGetModified = CustomEditorGetModified + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 679 + inherited Image1: TImage + Left = 652 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB51930000029C4944415478DAB5955D48145114C7FFB32B7D + 083DD8832D0559F420F950C950E1530F421F083D4451422CD88B940829591229 + A460500886AD4464064B4A0F21C94A3E043D8E5ACE6AEAD256B042E64E9A1F51 + 664E7367BAF74E33CDE4C7EE2A7BE070EF9D3B7B7E73CEFDDFB382611848A709 + EDA1FEB4108A8B0E0A1C60A49882460C10A26351D5F8A8E93A1FF99CBAFA9BE0 + 6C692DE49E967F8092BEFC848109FD0E9510A89AC6C71FAA6AAE995388B557A9 + 76E0D1932E37A0A3FB75FACEC002D09AA5F4C3644BE502A4A3544B006D87C32E + D08EE922D49DA8B7D7DE8677093F22FF59232E549C5E19C08CCD9DC1078530C4 + 3E117819017C7B31767E11830AD0FA946068721E4C8A9FE6C64D801C581DE00C + EEEDF7801CD2F9882830E01FC0297F1C5B473A57CCE0437910B7329E2F0FF8BF + 34DE0E0A28A680A0870717DB45E40C4CA1B74A83CFE783A22888C562989D9D45 + 3C1E47202061F4D263346E0C25097066304A37362121205CDA8AE6CC17AB039C + 104295319CF1D63C832160E7FB49F45D21D8DFA4F3F7B2A5167CCF2940CD1125 + 31C0A92226B9DD732771A3B0864374AE75C25DBC2CA1F7B688A3679A9031FF15 + 6565057670663620FFD845A3AABC644906B6B6A9CF2C2CB8D6966B721475B921 + E4E5E55140AB1DDC0560BD8E6660386FB2754BB5BF37F3E72FD5B1A67BBA392F + BCAFA33EB7DB06DC7D709DEF311B897E5C0AB817EC49BA55340C1F805C69CED9 + 214722115E22A67FCB5C803BCD6D490757F6D5F2E04C459224F1674E15217B83 + FDAEB0967FB4ED5715C3026CAB9EC0E689305ACE093640961F0AEB02F8AEC58D + C10A81CB3473FC0DB2225DFCB9A5A4F503AA278C2F5BBE2DBBC71ADDBA002CF8 + F13D59B8E9F7F066177AA5A3F33360CC4F636672CA84D06667415206ECF2771B + AB353ACBD60C48D5FE0066D96D9CD7814D110000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 679 + inherited tbxMain: TTBXToolbar + object TBXSeparatorItem16: TTBXSeparatorItem [13] + end + object tbxiExpandir: TTBXItem [14] + Action = actExpandir + end + object tbxiContraer: TTBXItem [15] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [16] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem6: TTBXSubmenuItem + object TBXItem37: TTBXItem [0] + Action = actExpandir + end + object TBXItem36: TTBXItem [1] + Action = actContraer + end + object TBXItem35: TTBXItem [2] + Action = actAnchoAuto + end + object TBXSeparatorItem17: TTBXSeparatorItem [3] + end + end + end + end + inherited StatusBar: TStatusBar + Top = 554 + Width = 679 + end + inline frViewControlVentaProceso1: TfrViewControlVentaProceso [3] + Left = 0 + Top = 76 + Width = 679 + Height = 478 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited TBXMultiDock1: TTBXMultiDock + Width = 238 + Height = 478 + inherited pnlParametros: TTBXDockablePanel + DockedWidth = 234 + SplitHeight = 240 + inherited TBXAlignmentPanel2: TTBXAlignmentPanel + Width = 234 + inherited TBXLink1: TTBXLink + Width = 226 + end + inherited TBXLink5: TTBXLink + Width = 226 + end + inherited TBXLink2: TTBXLink + Width = 226 + end + end + inherited pcParametros: TPageControl + Width = 234 + Height = 121 + inherited tsColumnas: TTabSheet + inherited frViewColumnas1: TfrViewColumnas + Height = 0 + inherited lbColumnas: TcxCheckListBox + Height = 0 + end + end + end + inherited tsAgrupacion: TTabSheet + inherited frViewAgrupaciones1: TfrViewAgrupaciones + Width = 226 + Height = 111 + inherited TBXLabel1: TTBXLabel + Width = 226 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 226 + inherited TBXButton1: TTBXButton + Width = 114 + end + inherited TBXButton3: TTBXButton + Width = 114 + end + inherited TBXButton2: TTBXButton + Width = 114 + end + end + end + end + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 188 + Width = 234 + inherited bRefrescar: TButton + OnClick = frViewControlVentaProceso1bRefrescarClick + end + end + end + inherited pnlTareas: TTBXDockablePanel + Top = 240 + DockedWidth = 234 + DockPos = 240 + SplitHeight = 222 + inherited TBXPageScroller1: TTBXPageScroller + Width = 234 + Height = 200 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 234 + inherited bFiltros: TTBXLink + Width = 226 + end + inherited bSumarios: TTBXLink + Width = 226 + end + end + inherited pcTareas: TPageControl + Width = 234 + Height = 152 + inherited tsSumarios: TTabSheet + inherited frViewSumarios1: TfrViewSumarios + Height = 48 + inherited vgSumarios: TcxVerticalGrid + Height = 19 + end + end + end + inherited tsFiltros: TTabSheet + inherited frViewFiltros1: TfrViewFiltros + Width = 226 + Height = 142 + inherited vgFiltros: TcxVerticalGrid + Height = 130 + end + inherited TBXLabel1: TTBXLabel + Width = 226 + end + inherited cxFilterControl1: TcxFilterControl + Width = 226 + Height = 83 + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 112 + Width = 226 + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 24 + Top = 48 + end + end + end + end + end + end + end + inherited frViewControlGridVentaProceso1: TfrViewControlGridVentaProceso + Left = 238 + Width = 441 + Height = 478 + inherited cxGrid: TcxGrid + Width = 441 + Height = 478 + inherited cxGridView: TcxGridDBTableView + DataController.DataSource = dsVentasProceso + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxPrinterLinkcxGrid: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited SmallImages: TPngImageList + Left = 216 + Top = 176 + end + inherited LargeImages: TPngImageList + Left = 192 + Top = 176 + end + end + inherited EditorActionList: TActionList [4] + inherited actConfPagina: TAction + OnExecute = actConfPaginaExecute + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + object dsVentasProceso: TDADataSource + Left = 320 + Top = 232 + end +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.pas new file mode 100644 index 0000000..b35e453 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlVentaProceso.pas @@ -0,0 +1,241 @@ +unit uEditorControlVentaProceso; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlBase, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uBizControlesBase, + uCustomView, uViewBase, uViewControlBase, uViewControlVentaProceso, + Grids, DBGrids, pngimage; + +type + IEditorControlVentaProceso = interface(IEditorControlBase) + ['{7F768AD2-1FF0-41E0-9157-4AB2E2CD7D32}'] + end; + + TfEditorControlVentaProceso = class(TfEditorControlBase, IEditorControlVentaProceso) + frViewControlVentaProceso1: TfrViewControlVentaProceso; + dsVentasProceso: TDADataSource; + TBXSeparatorItem16: TTBXSeparatorItem; + tbxiExpandir: TTBXItem; + tbxiContraer: TTBXItem; + tbxiAnchoAuto: TTBXItem; + actExpandir: TAction; + actContraer: TAction; + actAnchoAuto: TAction; + TBXItem37: TTBXItem; + TBXItem36: TTBXItem; + TBXItem35: TTBXItem; + TBXSeparatorItem17: TTBXSeparatorItem; + procedure actRefrescarExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure CustomEditorCreate(Sender: TObject); + procedure CustomEditorGetModified(Sender: TObject; + var Modified: Boolean); + procedure actGuardarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actConfPaginaExecute(Sender: TObject); + procedure frViewControlVentaProceso1bRefrescarClick(Sender: TObject); + private + procedure RestaurarConfiguracion; + procedure GuardarConfiguracion; + protected + FModificado : Boolean; + procedure OnViewControlChanged(Sender: TObject); + procedure SetControl(const Value: IBizControlBase); override; + procedure RellenarCabeceraInforme; + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + uEditorUtils, uBizControlVentasProceso, uROClasses, + cxGridTableView; + +{$R *.dfm} + +function ShowEditorVentasProceso (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: IEditorControlVentaProceso; //TfEditorInformeVentas; +begin + AEditor := TfEditorControlVentaProceso.Create(Application); + try + AEditor.Control := (ABizObject as IBizControlVentasProceso); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorControlVentaProceso } + +procedure TfEditorControlVentaProceso.SetControl( + const Value: IBizControlBase); +begin + inherited; + RefrescarTituloEditor; + if Assigned(FControl) then + begin + frViewControlVentaProceso1.Control := FControl; + frViewControlVentaProceso1.OnViewChanged := OnViewControlChanged; + dsDataTable.DataTable := FControl.DataTable; + with (FControl as IBizControlVentasProceso) do + begin + Items.DataTable.Active := False; // No se abre la tabla hasta que no se pulse en 'Refrescar' + dsVentasProceso.DataTable := Items.DataTable; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.DataController.DataSource := dsVentasProceso; + end; + end; +end; + +procedure TfEditorControlVentaProceso.actRefrescarExecute(Sender: TObject); +begin + inherited; + frViewControlVentaProceso1.Refresh; + + while (frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.Controller.FocusedRecord is TcxGridGroupRow) do + begin + frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.Controller.FocusedRecord.Expand(True); + if (frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.Controller.FocusedRecordIndex < + frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.DataController.RowCount - 1) then + frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.Controller.GoToNext(False, True) + else + Exit; + end; +end; + +procedure TfEditorControlVentaProceso.actExpandirExecute(Sender: TObject); +begin + inherited; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.ExpandirTodo; +end; + +procedure TfEditorControlVentaProceso.actContraerExecute(Sender: TObject); +begin + inherited; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.ContraerTodo; +end; + +procedure TfEditorControlVentaProceso.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.AjustarAncho; +end; + +procedure TfEditorControlVentaProceso.OnViewControlChanged( + Sender: TObject); +begin + FModificado := True; +end; + +procedure TfEditorControlVentaProceso.CustomEditorCreate(Sender: TObject); +begin + inherited; + FModificado := False; +end; + +procedure TfEditorControlVentaProceso.CustomEditorGetModified( + Sender: TObject; var Modified: Boolean); +begin + inherited; + Modified := FModificado; +end; + +procedure TfEditorControlVentaProceso.actGuardarExecute(Sender: TObject); +begin + GuardarConfiguracion; + inherited; + FModificado := False; +end; + +procedure TfEditorControlVentaProceso.GuardarConfiguracion; +var + Aux : IROStrings; +begin + Aux := NewROStrings(); + Aux.Add(frViewControlVentaProceso1.frViewControlGridVentaProceso1.ViewProperties); + if not (FControl.DataTable.State in dsEditModes) then + FControl.Edit; + FControl.VISTA := Aux; +end; + +procedure TfEditorControlVentaProceso.RestaurarConfiguracion; +begin + frViewControlVentaProceso1.frViewControlGridVentaProceso1.ViewProperties := FControl.VISTA.Text; +end; + +procedure TfEditorControlVentaProceso.FormShow(Sender: TObject); +begin + inherited; + if FControl.DataTable.State <> dsInsert then // No restaurar si estamos insertando + RestaurarConfiguracion; + frViewControlVentaProceso1.frViewColumnas1.Refresh; + frViewControlVentaProceso1.frViewAgrupaciones1.Refresh; +end; + +procedure TfEditorControlVentaProceso.actPrevisualizarExecute( + Sender: TObject); +begin + inherited; + RellenarCabeceraInforme; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.Preview; +end; + +procedure TfEditorControlVentaProceso.actImprimirExecute(Sender: TObject); +begin + inherited; + RellenarCabeceraInforme; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.Print; +end; + +procedure TfEditorControlVentaProceso.actConfPaginaExecute( + Sender: TObject); +begin + inherited; + RellenarCabeceraInforme; + frViewControlVentaProceso1.frViewControlGridVentaProceso1.PrintSetup; +end; + +procedure TfEditorControlVentaProceso.RellenarCabeceraInforme; +begin + with frViewControlVentaProceso1.frViewControlGridVentaProceso1.dxPrintStyleManager1Style1.PrinterPage.PageHeader do + begin + LeftTitle.Clear; + LeftTitle.Add(FControl.NOMBRE); + RightTitle.Clear; + RightTitle.Add(frViewControlVentaProceso1.frViewControlGridVentaProceso1.FocusedView.DataController.Filter.FilterText); + end; +end; + +constructor TfEditorControlVentaProceso.Create(AOwner: TComponent); +begin + inherited; + FViewControl := frViewControlVentaProceso1; + Self.Caption := 'Nueva consulta de ventas en proceso'; + JvNavPanelHeader.Caption := Self.Caption; +end; + +procedure TfEditorControlVentaProceso.frViewControlVentaProceso1bRefrescarClick( + Sender: TObject); +begin + inherited; + frViewControlVentaProceso1.actRefrescarExecute(Sender); + +end; + +initialization + RegisterEditor(IBizControlVentasProceso, ShowEditorVentasProceso, etItem); + +end. + diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlesVentaProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlesVentaProceso.dfm new file mode 100644 index 0000000..4100cc7 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlesVentaProceso.dfm @@ -0,0 +1,154 @@ +inherited fEditorControlesVentasProceso: TfEditorControlesVentasProceso + Left = 499 + Top = 346 + ActiveControl = frViewControlesVentaProceso1.EasyListview + Caption = 'fEditorControlesVentasProceso' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Control de ventas en proceso' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB51930000029C4944415478DAB5955D48145114C7FFB32B7D + 083DD8832D0559F420F950C950E1530F421F083D4451422CD88B940829591229 + A460500886AD4464064B4A0F21C94A3E043D8E5ACE6AEAD256B042E64E9A1F51 + 664E7367BAF74E33CDE4C7EE2A7BE070EF9D3B7B7E73CEFDDFB382611848A709 + EDA1FEB4108A8B0E0A1C60A49882460C10A26351D5F8A8E93A1FF99CBAFA9BE0 + 6C692DE49E967F8092BEFC848109FD0E9510A89AC6C71FAA6AAE995388B557A9 + 76E0D1932E37A0A3FB75FACEC002D09AA5F4C3644BE502A4A3544B006D87C32E + D08EE922D49DA8B7D7DE8677093F22FF59232E549C5E19C08CCD9DC1078530C4 + 3E117819017C7B31767E11830AD0FA946068721E4C8A9FE6C64D801C581DE00C + EEEDF7801CD2F9882830E01FC0297F1C5B473A57CCE0437910B7329E2F0FF8BF + 34DE0E0A28A680A0870717DB45E40C4CA1B74A83CFE783A22888C562989D9D45 + 3C1E47202061F4D263346E0C25097066304A37362121205CDA8AE6CC17AB039C + 104295319CF1D63C832160E7FB49F45D21D8DFA4F3F7B2A5167CCF2940CD1125 + 31C0A92226B9DD732771A3B0864374AE75C25DBC2CA1F7B688A3679A9031FF15 + 6565057670663620FFD845A3AABC644906B6B6A9CF2C2CB8D6966B721475B921 + E4E5E55140AB1DDC0560BD8E6660386FB2754BB5BF37F3E72FD5B1A67BBA392F + BCAFA33EB7DB06DC7D709DEF311B897E5C0AB817EC49BA55340C1F805C69CED9 + 214722115E22A67FCB5C803BCD6D490757F6D5F2E04C459224F1674E15217B83 + FDAEB0967FB4ED5715C3026CAB9EC0E689305ACE093640961F0AEB02F8AEC58D + C10A81CB3473FC0DB2225DFCB9A5A4F503AA278C2F5BBE2DBBC71ADDBA002CF8 + F13D59B8E9F7F066177AA5A3F33360CC4F636672CA84D06667415206ECF2771B + AB353ACBD60C48D5FE0066D96D9CD7814D110000000049454E44AE426082} + end + end + inline frViewControlesVentaProceso1: TfrViewControlesVentaProceso [3] + Left = 0 + Top = 76 + Width = 654 + Height = 368 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited EasyListview: TEasyListview + Width = 654 + Height = 368 + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited ViewPopupMenu: TPopupMenu [10] + end +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlesVentaProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlesVentaProceso.pas new file mode 100644 index 0000000..8a30a92 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uEditorControlesVentaProceso.pas @@ -0,0 +1,40 @@ +unit uEditorControlesVentaProceso; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlesBase, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, + uViewBase, uViewControlesBase, uViewControlesVentaProceso, Menus, DB, + uDADataTable; + +type + IEditorControlesVentasProceso = interface(IEditorControlesBase) + ['{691E2C4E-32EF-4F86-9DDE-036A6BCCEF0E}'] + end; + + TfEditorControlesVentasProceso = class(TfEditorControlesBase, IEditorControlesVentasProceso) + frViewControlesVentaProceso1: TfrViewControlesVentaProceso; + private + { Private declarations } + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +{$R *.dfm} + +{ TfEditorControlVentaProceso } + +constructor TfEditorControlesVentasProceso.Create(AOwner: TComponent); +begin + inherited; + FViewControl := frViewControlesVentaProceso1; +end; + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.ddp b/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.ddp differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.dfm new file mode 100644 index 0000000..ac4c156 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.dfm @@ -0,0 +1,284 @@ +object ModuleVentasProceso: TModuleVentasProceso + OldCreateOrder = True + Description = 'Controles de ventas en proceso' + ModuleMenu = MainMenu + ModuleName = 'Controles de ventas en proceso' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.4' + Left = 779 + Top = 651 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F330000029C4944415478DAB5955D48145114 + C7FFB32B7D083DD8832D0559F420F950C950E1530F421F083D4451422CD88B94 + 0829591229A460500886AD4464064B4A0F21C94A3E043D8E5ACE6AEAD256B042 + E64E9A1F51664E7367BAF74E33CDE4C7EE2A7BE070EF9D3B7B7E73CEFDDFB382 + 611848A709EDA1FEB4108A8B0E0A1C60A49882460C10A26351D5F8A8E93A1FF9 + 9CBAFA9BE06C692DE49E967F8092BEFC848109FD0E9510A89AC6C71FAA6AAE99 + 5388B557A976E0D1932E37A0A3FB75FACEC002D09AA5F4C3644BE502A4A3544B + 006D87C32ED08EE922D49DA8B7D7DE8677093F22FF59232E549C5E19C08CCD9D + C1078530C43E117819017C7B31767E11830AD0FA946068721E4C8A9FE6C64D80 + 1C581DE00CEEEDF7801CD2F9882830E01FC0297F1C5B473A57CCE0437910B732 + 9E2F0FF8BF34DE0E0A28A680A0870717DB45E40C4CA1B74A83CFE783A22888C5 + 62989D9D453C1E47202061F4D263346E0C25097066304A37362121205CDA8AE6 + CC17AB039C104295319CF1D63C832160E7FB49F45D21D8DFA4F3F7B2A5167CCF + 2940CD112531C0A92226B9DD732771A3B0864374AE75C25DBC2CA1F7B688A367 + 9A9031FF156565057670663620FFD845A3AABC644906B6B6A9CF2C2CB8D6966B + 721475B921E4E5E55140AB1DDC0560BD8E6660386FB2754BB5BF37F3E72FD5B1 + A67BBA392FBCAFA33EB7DB06DC7D709DEF311B897E5C0AB817EC49BA55340C1F + 805C69CED9214722115E22A67FCB5C803BCD6D490757F6D5F2E04C459224F167 + 4E15217B83FDAEB0967FB4ED5715C3026CAB9EC0E689305ACE093640961F0AEB + 02F8AEC58DC10A81CB3473FC0DB2225DFCB9A5A4F503AA278C2F5BBE2DBBC71A + DDBA002CF8F13D59B8E9F7F066177AA5A3F33360CC4F636672CA84D066674152 + 06ECF2771BAB353ACBD60C48D5FE0066D96D9CD7814D110000000049454E44AE + 426082} + Name = 'PngImage0' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actVentasProceso: TAction + Category = 'Ventas' + Caption = 'Control de ventas en proceso' + ImageIndex = 0 + OnExecute = actVentasProcesoExecute + end + end + object MainMenu: TMainMenu + Tag = 1000 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 4 + object Controldeventasenproceso1: TMenuItem + Tag = 101 + Action = actVentasProceso + end + end + end + object SmallImages: 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 + F73EE77CFEFC2FF784F3FB25D29F330000023F4944415478DAA5936B48536118 + C7FFE76CF3D26C2859D14DC106899452D9C0CABE84945DC8A23E7841A2A612E5 + B7A02F4151F929FC9262810EA1C0465B0BA2584BB34FE939D636D7D29439626E + BAD96DDAEE97734E9D236B2E7444FDE185079EE7FD3DEFF37F78098EE3F03F22 + FA9E8DFC33A1EE98821000DB8E8AD0419F5FB628C63008C5E308C66258088785 + 5875E23994877B6036DC4D027825202A8509D96D36E46D5A8303F255A0C719B8 + BC0C589201E9FF8EED6F541049169280E53A5F9B944116F2A131CB0A2D2582FD + 3381081106290A614FEE3C1ACE55A77AF0E7181EF72EF8069BD05EFD03322909 + C78C139ED939A87563709F34A1F7F203618C14C0D231EAA434D4541477943918 + 7632F058DE214BE2834EA54755EB7E945516A6025EE637FFEECE7BC0B24079FB + 2B349716E1668F05511B8DFA53C5301BF570D4BE104C2DE83BBB3280976884C4 + E6C78FD05AC04216746190FA0AEA4C9770993FC59A26107C210F590AE0930FF7 + 598558D1F60DB70ECE20C73F8DFAABF710B8F85AC8F3EBDCF9E4421290305148 + 0A1D1838E8FB5037EEC0EE8D7ED8A65CD00F98D0FD74001F4E6B616C312E7A90 + 00DCEEE84D59A32FB30865476AA16D5907659713F31334AED710B8D149E3E397 + 002452F1E21A57FA0B924BEEAA4A79DC90BF9620343A3BB2A70DA8392E47C462 + E5264CAE43639F34FD6901EBAF7887CA4BA4155B4BA3783B29063597F1EB5901 + E459FA5138A51F369BBBF7A6056C6930442A309E51B281E1461D24EC5E16B170 + 0011B184581D9C8DBEA73B33D302FE563F01DC582D540042BC50000000004945 + 4E44AE426082} + 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/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.pas new file mode 100644 index 0000000..1cd6e41 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uPluginControllerVentasProceso.pas @@ -0,0 +1,73 @@ +unit uPluginControllerVentasProceso; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCVentas = interface(IInterface) + ['{D058419C-2EFC-41A6-99DD-76E5B7FC4361}'] + end; + + TModuleVentasProceso = class(TModuleController, IMCVentas) + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + actVentasProceso: TAction; + Controldeventasenproceso1: TMenuItem; + procedure actVentasProcesoExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleVentasProceso, + uEditorControlesVentaProceso, uDataModuleControles, + uBizControlVentasProceso, uEditorControlesBase; + +function GetModule : TModuleController; +begin + Result := TModuleVentasProceso.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleVentasProceso.actVentasProcesoExecute(Sender: TObject); +var + aControl: IBizControlVentasProceso; + aObj: IEditorControlesVentasProceso; +begin + aControl := dmVentasEnProceso.GetControl; + aObj := TfEditorControlesVentasProceso.Create(Application); + try + with aObj do + begin + Control := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleVentasProceso); + +finalization + UnRegisterModuleClass(TModuleVentasProceso); + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.ddp b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.ddp differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.dfm new file mode 100644 index 0000000..8004f66 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.dfm @@ -0,0 +1,194 @@ +inherited frViewControlGridVentaProceso: TfrViewControlGridVentaProceso + Width = 632 + Height = 419 + object cxGrid: TcxGrid [0] + Left = 0 + Top = 0 + Width = 632 + Height = 419 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.CustomizeDialog = False + FilterBox.Visible = fvAlways + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Filter.OnChanged = cxGridViewDataControllerFilterChanged + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + DataController.Summary.OnAfterSummary = cxGridViewDataControllerSummaryAfterSummary + DataController.OnGroupingChanged = cxGridViewDataControllerGroupingChanged + DataController.OnSortingChanged = cxGridViewDataControllerSortingChanged + OptionsBehavior.CellHints = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.DataRowSizing = True + OptionsCustomize.GroupRowSizing = 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.GroupFooters = gfAlwaysVisible + OptionsView.HeaderEndEllipsis = True + OptionsView.NewItemRowInfoText = 'Click here to add a new row' + Styles.FilterBox = cxStyleFilterBox + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + OnColumnPosChanged = cxGridViewColumnPosChanged + OnColumnSizeChanged = cxGridViewColumnSizeChanged + object cxGridViewFECHA: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHA' + PropertiesClassName = 'TcxDateEditProperties' + Properties.SaveTime = False + Properties.ShowTime = False + end + object cxGridViewDIA: TcxGridDBColumn + Caption = 'Dia' + DataBinding.FieldName = 'DIA' + end + object cxGridViewDIASEMANA: TcxGridDBColumn + Caption = 'Dia de la semana' + DataBinding.FieldName = 'DIASEMANA' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewDIASEMANAPropertiesInitPopup + end + object cxGridViewMES: TcxGridDBColumn + Caption = 'Mes' + DataBinding.FieldName = 'MES' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewMESPropertiesInitPopup + end + object cxGridViewANO: TcxGridDBColumn + Caption = 'A'#241'o' + DataBinding.FieldName = 'ANO' + end + object cxGridViewCENTRO: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'CENTRO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewCENTROPropertiesInitPopup + end + object cxGridViewVENDEDOR: TcxGridDBColumn + Caption = 'Vendedor' + DataBinding.FieldName = 'VENDEDOR' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewVENDEDORPropertiesInitPopup + end + object cxGridViewNUMTALON: TcxGridDBColumn + Caption = 'Talon' + DataBinding.FieldName = 'NUMTALON' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewNUMTALONPropertiesInitPopup + end + object cxGridViewCODIGO: TcxGridDBColumn + Caption = 'Codigo' + DataBinding.FieldName = 'CODIGO' + PropertiesClassName = 'TcxTextEditProperties' + end + object cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewPRODUCTOPropertiesInitPopup + end + object cxGridViewGRUPOPRODUCTO: TcxGridDBColumn + Caption = 'Grupo' + DataBinding.FieldName = 'GRUPOPRODUCTO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewGRUPOPRODUCTOPropertiesInitPopup + end + object cxGridViewTIPOPRODUCTO: TcxGridDBColumn + Caption = 'Tipo' + DataBinding.FieldName = 'TIPOPRODUCTO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewTIPOPRODUCTOPropertiesInitPopup + end + object cxGridViewCOLECCION: TcxGridDBColumn + Caption = 'Coleccion' + DataBinding.FieldName = 'COLECCION' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewCOLECCIONPropertiesInitPopup + end + object cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taLeftJustify + end + object cxGridViewTALLA: TcxGridDBColumn + Caption = 'Talla' + DataBinding.FieldName = 'TALLA' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taLeftJustify + end + object cxGridViewINICIO: TcxGridDBColumn + Caption = 'Inicio' + DataBinding.FieldName = 'INICIO' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewFINAL: TcxGridDBColumn + Caption = 'Final' + DataBinding.FieldName = 'FINAL' + PropertiesClassName = 'TcxTextEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewIMPORTE: TcxGridDBColumn + Caption = 'Importe' + DataBinding.FieldName = 'IMPORTE' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxPrinterLinkcxGrid: TdxGridReportLink + Component = cxGrid + BuiltInReportLink = True + end + end + object cxStyleRepository1: TcxStyleRepository + Left = 16 + Top = 48 + object cxStyleRed: TcxStyle + AssignedValues = [svTextColor] + TextColor = clRed + end + object cxStyleBlue: TcxStyle + AssignedValues = [svTextColor] + TextColor = clBlue + end + object cxStyleFilterBox: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clInfoBk + TextColor = clWindowText + end + end +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.pas new file mode 100644 index 0000000..b4637dd --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControGridlVentaProceso.pas @@ -0,0 +1,351 @@ +unit uViewControGridlVentaProceso; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls; + +type + IViewControlGridVentaProceso = interface(IViewControlGrid) + ['{537E8507-695E-4345-AAEE-F573C113A2CF}'] + end; + + TfrViewControlGridVentaProceso = class(TfrViewControlGrid, IViewControlGridVentaProceso) + cxGrid: TcxGrid; + cxGridView: TcxGridDBTableView; + cxGridViewFECHA: TcxGridDBColumn; + cxGridViewDIA: TcxGridDBColumn; + cxGridViewDIASEMANA: TcxGridDBColumn; + cxGridViewMES: TcxGridDBColumn; + cxGridViewANO: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewVENDEDOR: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewGRUPOPRODUCTO: TcxGridDBColumn; + cxGridViewTIPOPRODUCTO: TcxGridDBColumn; + cxGridViewCOLECCION: TcxGridDBColumn; + cxGridViewNUMTALON: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewTALLA: TcxGridDBColumn; + cxGridViewIMPORTE: TcxGridDBColumn; + cxGridViewINICIO: TcxGridDBColumn; + cxGridViewFINAL: TcxGridDBColumn; + cxGridLevel: TcxGridLevel; + cxStyleRepository1: TcxStyleRepository; + cxStyleRed: TcxStyle; + cxStyleBlue: TcxStyle; + cxStyleFilterBox: TcxStyle; + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewColumnPosChanged(Sender: TcxGridTableView; + AColumn: TcxGridColumn); + procedure cxGridViewColumnSizeChanged(Sender: TcxGridTableView; + AColumn: TcxGridColumn); + procedure cxGridViewDataControllerGroupingChanged(Sender: TObject); + procedure cxGridViewDataControllerSortingChanged(Sender: TObject); + procedure cxGridViewDataControllerSummaryAfterSummary( + ASender: TcxDataSummary); + procedure cxGridViewCENTROPropertiesInitPopup(Sender: TObject); + procedure cxGridViewVENDEDORPropertiesInitPopup(Sender: TObject); + procedure cxGridViewNUMTALONPropertiesInitPopup(Sender: TObject); + procedure cxGridViewPRODUCTOPropertiesInitPopup(Sender: TObject); + procedure cxGridViewDataControllerFilterChanged(Sender: TObject); + procedure cxGridViewDIASEMANAPropertiesInitPopup(Sender: TObject); + procedure cxGridViewMESPropertiesInitPopup(Sender: TObject); + procedure cxGridViewGRUPOPRODUCTOPropertiesInitPopup(Sender: TObject); + procedure cxGridViewTIPOPRODUCTOPropertiesInitPopup(Sender: TObject); + procedure cxGridViewCOLECCIONPropertiesInitPopup(Sender: TObject); + protected + procedure ActivarEventos; override; + procedure DesactivarEventos; override; + function GetFocusedView : TcxGridDBTableView; override; + public + procedure Refresh; override; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses + cxVariants, DateUtils, uDataModuleVentasProceso; + +{$R *.dfm} + +{ TfrViewControlGridVentaProceso } + +function TfrViewControlGridVentaProceso.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +procedure TfrViewControlGridVentaProceso.Refresh; +var + FocusedRow, TopRow : Integer; +begin + inherited; + { Refrescar las filas del grid a partir del dataset y colocar la fila + seleccionada donde estaba } + if FocusedView.DataController.DataSource.DataSet.State = dsBrowse then + begin + TopRow := FocusedView.Controller.TopRowIndex; + FocusedRow := FocusedView.DataController.FocusedRowIndex; + + FocusedView.DataController.UpdateItems(False); // <- Refresco + + FocusedView.DataController.FocusedRowIndex := FocusedRow; + FocusedView.Controller.TopRowIndex := TopRow; + + { Esta chapuzilla es para que se rellenen los combobox de los filtros + por que el cxFilterControl no coge los valores la 1ª vez si los + combos están vacíos. } + TcxComboBoxProperties(cxGridViewPRODUCTO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewCENTRO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewVENDEDOR.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewNUMTALON.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewDIASEMANA.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewMES.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewGRUPOPRODUCTO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewTIPOPRODUCTO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewCOLECCION.Properties).OnInitPopup(nil); + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + AColumn : TcxGridDBColumn; + AFecha : TDateTime; +begin + inherited; + + // La fila es la cabecera de un grupo + if ARecord.Expandable then + Exit; + + AColumn := FocusedView.GetColumnByFieldName('FECHA'); + if Assigned(AColumn) and (AColumn.Visible) then + begin + try + AFecha := VarToDateTime(ARecord.Values[AColumn.Index]); + except + on Exception do + ShowMessage(VarToStr(ARecord.Values[AColumn.Index])); + end; + + if DaysBetween(Now, AFecha) > 14 then + AStyle := cxStyleRed + else + if DaysBetween(Now, AFecha) > 7 then + AStyle := cxStyleBlue + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewColumnPosChanged( + Sender: TcxGridTableView; AColumn: TcxGridColumn); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewColumnSizeChanged( + Sender: TcxGridTableView; AColumn: TcxGridColumn); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewDataControllerGroupingChanged( + Sender: TObject); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewDataControllerSortingChanged( + Sender: TObject); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewDataControllerSummaryAfterSummary( + ASender: TcxDataSummary); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewCENTROPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewCENTRO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewCENTRO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewVENDEDORPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewVENDEDOR.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewVENDEDOR.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewNUMTALONPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewNUMTALON.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewNUMTALON.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewPRODUCTOPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewPRODUCTO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewPRODUCTO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewDataControllerFilterChanged( + Sender: TObject); +begin + if Assigned(FOnFilterChanged) then + FOnFilterChanged(Self); +end; + +constructor TfrViewControlGridVentaProceso.Create(AOwner: TComponent); +begin + inherited; +end; + +procedure TfrViewControlGridVentaProceso.ActivarEventos; +begin + inherited; + with cxGridView do + begin + DataController.Filter.OnChanged := cxGridViewDataControllerFilterChanged; + DataController.Summary.OnAfterSummary := cxGridViewDataControllerSummaryAfterSummary; + DataController.OnGroupingChanged := cxGridViewDataControllerGroupingChanged; + DataController.OnSortingChanged := cxGridViewDataControllerSortingChanged; + OnColumnPosChanged := cxGridViewColumnPosChanged; + OnColumnSizeChanged := cxGridViewColumnSizeChanged; + end; +end; + +procedure TfrViewControlGridVentaProceso.DesactivarEventos; +begin + inherited; + with cxGridView do + begin + DataController.Filter.OnChanged := nil; + DataController.Summary.OnAfterSummary := nil; + DataController.OnGroupingChanged := nil; + DataController.OnSortingChanged := nil; + OnColumnPosChanged := nil; + OnColumnSizeChanged := nil; + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewDIASEMANAPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewDIASEMANA.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewDIASEMANA.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewMESPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewMES.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewMES.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewGRUPOPRODUCTOPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewGRUPOPRODUCTO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewGRUPOPRODUCTO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewTIPOPRODUCTOPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewTIPOPRODUCTO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewTIPOPRODUCTO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentaProceso.cxGridViewCOLECCIONPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewCOLECCION.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewCOLECCION.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.ddp b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.ddp differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.dfm new file mode 100644 index 0000000..e3b4ec4 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.dfm @@ -0,0 +1,148 @@ +inherited frViewControlVentaProceso: TfrViewControlVentaProceso + Height = 608 + inherited TBXMultiDock1: TTBXMultiDock + Width = 232 + Height = 608 + inherited pnlParametros: TTBXDockablePanel + DockedWidth = 228 + inherited TBXAlignmentPanel2: TTBXAlignmentPanel + Width = 228 + inherited TBXLink1: TTBXLink + Width = 220 + Visible = False + end + inherited TBXLink5: TTBXLink + Width = 220 + end + inherited TBXLink2: TTBXLink + Width = 220 + end + end + inherited pcParametros: TPageControl + Width = 228 + Height = 170 + inherited tsColumnas: TTabSheet + inherited frViewColumnas1: TfrViewColumnas + Width = 220 + Height = 160 + inherited TBXLabel1: TTBXLabel + Width = 220 + end + inherited lbColumnas: TcxCheckListBox + Width = 220 + Height = 131 + end + end + end + inherited tsAgrupacion: TTabSheet + inherited frViewAgrupaciones1: TfrViewAgrupaciones + Width = 220 + Height = 160 + inherited TBXLabel1: TTBXLabel + Width = 220 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 220 + DesignSize = ( + 220 + 77) + end + end + end + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 237 + Width = 228 + end + end + inherited pnlTareas: TTBXDockablePanel + Top = 289 + DockedWidth = 228 + DockPos = 289 + Visible = False + inherited TBXPageScroller1: TTBXPageScroller + Width = 228 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 228 + inherited bFiltros: TTBXLink + Width = 220 + end + inherited bSumarios: TTBXLink + Width = 220 + end + end + inherited pcTareas: TPageControl + Width = 228 + inherited tsSumarios: TTabSheet + inherited frViewSumarios1: TfrViewSumarios + Width = 220 + inherited TBXLabel1: TTBXLabel + Width = 220 + end + inherited vgSumarios: TcxVerticalGrid + Width = 220 + end + end + end + inherited tsFiltros: TTabSheet + inherited frViewFiltros1: TfrViewFiltros + Width = 220 + inherited TBXLabel1: TTBXLabel + Width = 220 + end + inherited cxFilterControl1: TcxFilterControl + Width = 220 + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Width = 220 + end + end + end + end + end + end + end + inline frViewControlGridVentaProceso1: TfrViewControlGridVentaProceso [1] + Left = 232 + Top = 0 + Width = 467 + Height = 608 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 467 + Height = 608 + inherited cxGridView: TcxGridDBTableView + FilterBox.Visible = fvNever + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxPrinterLinkcxGrid: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited SmallImages: TPngImageList [2] + end + inherited LargeImages: TPngImageList [3] + end + inherited EditorActionList: TActionList + Left = 248 + Top = 72 + inherited actRefrescar: TAction + OnExecute = actRefrescarExecute + end + end +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.pas new file mode 100644 index 0000000..97f4633 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlVentaProceso.pas @@ -0,0 +1,120 @@ +unit uViewControlVentaProceso; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlBase, ActnList, ImgList, PngImageList, uViewGrid, + uViewControlGrid, uViewSumarios, TBXDkPanels, StdCtrls, + uViewAgrupaciones, uCustomView, uViewBase, uViewColumnas, ComCtrls, + TB2Dock, uViewParametrosControlGrid, uBizControlesBase, cxStyles, + cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, + cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, + cxTextEdit, uViewControGridlVentaProceso, uViewFiltros; + +type + IViewControlVentaProceso = interface(IViewControlBase) + ['{C3433C18-BB61-4046-BC0B-CE783A6F7189}'] + end; + + TfrViewControlVentaProceso = class(TfrViewControlBase, IViewControlVentaProceso) + frViewControlGridVentaProceso1: TfrViewControlGridVentaProceso; + procedure actRefrescarExecute(Sender: TObject); + protected + FModificado : Boolean; + procedure OnViewControlGridChanged(Sender : TObject); + procedure OnFilterChanged(Sender : TObject); + public + constructor Create(AOwner: TComponent); override; + procedure Refresh; override; + end; + +implementation + +uses uDataModuleVentasProceso, uBizControlVentasProceso, uBizVentasProceso; + +{$R *.dfm} + +{ TfrViewControlVentaProceso } + +constructor TfrViewControlVentaProceso.Create(AOwner: TComponent); +begin + inherited; + frViewControlGridVentaProceso1.OnViewChanged := OnViewControlGridChanged; + frViewControlGridVentaProceso1.OnFilterChanged := OnFilterChanged; + frViewColumnas1.ViewControlGrid := frViewControlGridVentaProceso1; + frViewAgrupaciones1.ViewControlGrid := frViewControlGridVentaProceso1; + frViewSumarios1.ViewControlGrid := frViewControlGridVentaProceso1; + frViewFiltros1.ViewControlGrid := frViewControlGridVentaProceso1; +end; + +procedure TfrViewControlVentaProceso.Refresh; +var + AColumns : TStringList; +begin + inherited; + ShowHourglassCursor; + actRefrescar.Enabled := False; + + frViewControlGridVentaProceso1.OnViewChanged := nil; + frViewControlGridVentaProceso1.OnFilterChanged := nil; + + try + // Calcular las columnas a pedir al servidor + AColumns := frViewColumnas1.GetCheckedColumns; + AColumns.Duplicates := dupIgnore; + AColumns.AddStrings(frViewAgrupaciones1.GetAgrupaciones); + + (Control as IBizControlVentasProceso).Items.VisibleColumns := AColumns.CommaText; + with (Control as IBizControlVentasProceso).Items.DataTable do + begin + DisableControls; + try + Active := False; + LoadSchema; + Active := True; + + frViewColumnas1.Execute; + frViewAgrupaciones1.Execute; + frViewSumarios1.Refresh; + frViewFiltros1.Refresh; + pnlTareas.Visible := True; + + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); + finally + EnableControls; + frViewControlGridVentaProceso1.Refresh; + frViewControlGridVentaProceso1.ExpandirTodo; + frViewControlGridVentaProceso1.GotoFirst; + end; + end; + finally + FreeAndNil(AColumns); + frViewControlGridVentaProceso1.OnViewChanged := OnViewControlGridChanged; + frViewControlGridVentaProceso1.OnFilterChanged := OnFilterChanged; + actRefrescar.Enabled := True; + HideHourglassCursor; + end; +end; + +procedure TfrViewControlVentaProceso.actRefrescarExecute(Sender: TObject); +begin + inherited; + Refresh; +end; + +procedure TfrViewControlVentaProceso.OnViewControlGridChanged( + Sender: TObject); +begin + if Assigned(Self.OnViewChanged) then + Self.OnViewChanged(Self); +end; + +procedure TfrViewControlVentaProceso.OnFilterChanged(Sender: TObject); +begin + frViewFiltros1.Refresh; +end; + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlesVentaProceso.dfm b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlesVentaProceso.dfm new file mode 100644 index 0000000..1c5d52e --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlesVentaProceso.dfm @@ -0,0 +1,2 @@ +inherited frViewControlesVentaProceso: TfrViewControlesVentaProceso +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlesVentaProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlesVentaProceso.pas new file mode 100644 index 0000000..637f1e4 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Cliente/uViewControlesVentaProceso.pas @@ -0,0 +1,24 @@ +unit uViewControlesVentaProceso; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlesBase, cxGraphics, cxCustomData, cxStyles, cxTL, + cxImageComboBox, cxMaskEdit, cxTextEdit, DB, uDADataTable, ImgList, + PngImageList, cxInplaceContainer, cxDBTL, cxControls, cxTLData, + MPCommonObjects, MPCommonUtilities, EasyListview; + +type + IViewControlesVentaProceso = interface(IViewControlesBase) + ['{FEC70D50-494A-477A-B907-A5752223ABF1}'] + end; + + TfrViewControlesVentaProceso = class(TfrViewControlesBase, IViewControlesVentaProceso) + end; + +implementation + +{$R *.dfm} + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Reglas/schVentasEnProcesoClient_Intf.pas b/2.1.0/Source/Modulos/VentasProceso/Reglas/schVentasEnProcesoClient_Intf.pas new file mode 100644 index 0000000..c0cc047 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Reglas/schVentasEnProcesoClient_Intf.pas @@ -0,0 +1,460 @@ +unit schVentasEnProcesoClient_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_VentasEnProcesoPendientes = '{6A914050-F90B-4E27-992C-A010950CC420}'; + + { Data table names } + nme_VentasEnProcesoPendientes = 'VentasEnProcesoPendientes'; + + { VentasEnProcesoPendientes fields } + fld_VentasEnProcesoPendientesNUMINF = 'NUMINF'; + fld_VentasEnProcesoPendientesCLAVE1 = 'CLAVE1'; + fld_VentasEnProcesoPendientesCLAVE2 = 'CLAVE2'; + fld_VentasEnProcesoPendientesCLAVE3 = 'CLAVE3'; + fld_VentasEnProcesoPendientesFECHA = 'FECHA'; + fld_VentasEnProcesoPendientesDIA = 'DIA'; + fld_VentasEnProcesoPendientesDIASEMANA = 'DIASEMANA'; + fld_VentasEnProcesoPendientesMES = 'MES'; + fld_VentasEnProcesoPendientesANO = 'ANO'; + fld_VentasEnProcesoPendientesCENTRO = 'CENTRO'; + fld_VentasEnProcesoPendientesVENDEDOR = 'VENDEDOR'; + fld_VentasEnProcesoPendientesNUMTALON = 'NUMTALON'; + fld_VentasEnProcesoPendientesCODIGO = 'CODIGO'; + fld_VentasEnProcesoPendientesPRODUCTO = 'PRODUCTO'; + fld_VentasEnProcesoPendientesGRUPOPRODUCTO = 'GRUPOPRODUCTO'; + fld_VentasEnProcesoPendientesTIPOPRODUCTO = 'TIPOPRODUCTO'; + fld_VentasEnProcesoPendientesCOLECCION = 'COLECCION'; + fld_VentasEnProcesoPendientesCOLOR = 'COLOR'; + fld_VentasEnProcesoPendientesTALLA = 'TALLA'; + fld_VentasEnProcesoPendientesINICIO = 'INICIO'; + fld_VentasEnProcesoPendientesFINAL = 'FINAL'; + fld_VentasEnProcesoPendientesIMPORTE = 'IMPORTE'; + + { VentasEnProcesoPendientes field indexes } + idx_VentasEnProcesoPendientesNUMINF = 0; + idx_VentasEnProcesoPendientesCLAVE1 = 1; + idx_VentasEnProcesoPendientesCLAVE2 = 2; + idx_VentasEnProcesoPendientesCLAVE3 = 3; + idx_VentasEnProcesoPendientesFECHA = 4; + idx_VentasEnProcesoPendientesDIA = 5; + idx_VentasEnProcesoPendientesDIASEMANA = 6; + idx_VentasEnProcesoPendientesMES = 7; + idx_VentasEnProcesoPendientesANO = 8; + idx_VentasEnProcesoPendientesCENTRO = 9; + idx_VentasEnProcesoPendientesVENDEDOR = 10; + idx_VentasEnProcesoPendientesNUMTALON = 11; + idx_VentasEnProcesoPendientesCODIGO = 12; + idx_VentasEnProcesoPendientesPRODUCTO = 13; + idx_VentasEnProcesoPendientesGRUPOPRODUCTO = 14; + idx_VentasEnProcesoPendientesTIPOPRODUCTO = 15; + idx_VentasEnProcesoPendientesCOLECCION = 16; + idx_VentasEnProcesoPendientesCOLOR = 17; + idx_VentasEnProcesoPendientesTALLA = 18; + idx_VentasEnProcesoPendientesINICIO = 19; + idx_VentasEnProcesoPendientesFINAL = 20; + idx_VentasEnProcesoPendientesIMPORTE = 21; + +type + { IVentasEnProcesoPendientes } + IVentasEnProcesoPendientes = interface(IDAStronglyTypedDataTable) + ['{75EFCBF2-47FD-4655-A865-27703C29C80D}'] + { Property getters and setters } + function GetNUMINFValue: String; + procedure SetNUMINFValue(const aValue: String); + function GetCLAVE1Value: Float; + procedure SetCLAVE1Value(const aValue: Float); + function GetCLAVE2Value: Integer; + procedure SetCLAVE2Value(const aValue: Integer); + function GetCLAVE3Value: Integer; + procedure SetCLAVE3Value(const aValue: Integer); + function GetFECHAValue: DateTime; + procedure SetFECHAValue(const aValue: DateTime); + function GetDIAValue: Integer; + procedure SetDIAValue(const aValue: Integer); + function GetDIASEMANAValue: String; + procedure SetDIASEMANAValue(const aValue: String); + function GetMESValue: String; + procedure SetMESValue(const aValue: String); + function GetANOValue: Integer; + procedure SetANOValue(const aValue: Integer); + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetVENDEDORValue: String; + procedure SetVENDEDORValue(const aValue: String); + function GetNUMTALONValue: String; + procedure SetNUMTALONValue(const aValue: String); + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetGRUPOPRODUCTOValue: String; + procedure SetGRUPOPRODUCTOValue(const aValue: String); + function GetTIPOPRODUCTOValue: String; + procedure SetTIPOPRODUCTOValue(const aValue: String); + function GetCOLECCIONValue: String; + procedure SetCOLECCIONValue(const aValue: String); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetTALLAValue: String; + procedure SetTALLAValue(const aValue: String); + function GetINICIOValue: Float; + procedure SetINICIOValue(const aValue: Float); + function GetFINALValue: Float; + procedure SetFINALValue(const aValue: Float); + function GetIMPORTEValue: Float; + procedure SetIMPORTEValue(const aValue: Float); + + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property DIA: Integer read GetDIAValue write SetDIAValue; + property DIASEMANA: String read GetDIASEMANAValue write SetDIASEMANAValue; + property MES: String read GetMESValue write SetMESValue; + property ANO: Integer read GetANOValue write SetANOValue; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property GRUPOPRODUCTO: String read GetGRUPOPRODUCTOValue write SetGRUPOPRODUCTOValue; + property TIPOPRODUCTO: String read GetTIPOPRODUCTOValue write SetTIPOPRODUCTOValue; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property INICIO: Float read GetINICIOValue write SetINICIOValue; + property FINAL: Float read GetFINALValue write SetFINALValue; + property IMPORTE: Float read GetIMPORTEValue write SetIMPORTEValue; + end; + + { TVentasEnProcesoPendientesDataTableRules } + TVentasEnProcesoPendientesDataTableRules = class(TDADataTableRules, IVentasEnProcesoPendientes) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetCLAVE3Value: Integer; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + function GetFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetDIAValue: Integer; virtual; + procedure SetDIAValue(const aValue: Integer); virtual; + function GetDIASEMANAValue: String; virtual; + procedure SetDIASEMANAValue(const aValue: String); virtual; + function GetMESValue: String; virtual; + procedure SetMESValue(const aValue: String); virtual; + function GetANOValue: Integer; virtual; + procedure SetANOValue(const aValue: Integer); virtual; + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetGRUPOPRODUCTOValue: String; virtual; + procedure SetGRUPOPRODUCTOValue(const aValue: String); virtual; + function GetTIPOPRODUCTOValue: String; virtual; + procedure SetTIPOPRODUCTOValue(const aValue: String); virtual; + function GetCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetTALLAValue: String; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + function GetINICIOValue: Float; virtual; + procedure SetINICIOValue(const aValue: Float); virtual; + function GetFINALValue: Float; virtual; + procedure SetFINALValue(const aValue: Float); virtual; + function GetIMPORTEValue: Float; virtual; + procedure SetIMPORTEValue(const aValue: Float); virtual; + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property DIA: Integer read GetDIAValue write SetDIAValue; + property DIASEMANA: String read GetDIASEMANAValue write SetDIASEMANAValue; + property MES: String read GetMESValue write SetMESValue; + property ANO: Integer read GetANOValue write SetANOValue; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property GRUPOPRODUCTO: String read GetGRUPOPRODUCTOValue write SetGRUPOPRODUCTOValue; + property TIPOPRODUCTO: String read GetTIPOPRODUCTOValue write SetTIPOPRODUCTOValue; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property INICIO: Float read GetINICIOValue write SetINICIOValue; + property FINAL: Float read GetFINALValue write SetFINALValue; + property IMPORTE: Float read GetIMPORTEValue write SetIMPORTEValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TVentasEnProcesoPendientesDataTableRules } +constructor TVentasEnProcesoPendientesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TVentasEnProcesoPendientesDataTableRules.Destroy; +begin + inherited; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetNUMINFValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesNUMINF].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetNUMINFValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesNUMINF].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCLAVE1Value: Float; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCLAVE1].AsFloat; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCLAVE1Value(const aValue: Float); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCLAVE1].AsFloat := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCLAVE2Value: Integer; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCLAVE2].AsInteger; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCLAVE2Value(const aValue: Integer); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCLAVE2].AsInteger := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCLAVE3Value: Integer; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCLAVE3].AsInteger; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCLAVE3Value(const aValue: Integer); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCLAVE3].AsInteger := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetFECHAValue: DateTime; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesFECHA].AsDateTime; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetFECHAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesFECHA].AsDateTime := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetDIAValue: Integer; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesDIA].AsInteger; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetDIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesDIA].AsInteger := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetDIASEMANAValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesDIASEMANA].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetDIASEMANAValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesDIASEMANA].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetMESValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesMES].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetMESValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesMES].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetANOValue: Integer; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesANO].AsInteger; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetANOValue(const aValue: Integer); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesANO].AsInteger := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCENTRO].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCENTRO].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetVENDEDORValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesVENDEDOR].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesVENDEDOR].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetNUMTALONValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesNUMTALON].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetNUMTALONValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesNUMTALON].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCODIGO].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCODIGO].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesPRODUCTO].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesPRODUCTO].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetGRUPOPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesGRUPOPRODUCTO].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetGRUPOPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesGRUPOPRODUCTO].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetTIPOPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesTIPOPRODUCTO].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetTIPOPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesTIPOPRODUCTO].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCOLECCIONValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCOLECCION].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCOLECCIONValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCOLECCION].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesCOLOR].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesCOLOR].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetTALLAValue: String; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesTALLA].AsString; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetTALLAValue(const aValue: String); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesTALLA].AsString := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetINICIOValue: Float; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesINICIO].AsFloat; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetINICIOValue(const aValue: Float); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesINICIO].AsFloat := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetFINALValue: Float; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesFINAL].AsFloat; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetFINALValue(const aValue: Float); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesFINAL].AsFloat := aValue; +end; + +function TVentasEnProcesoPendientesDataTableRules.GetIMPORTEValue: Float; +begin + result := DataTable.Fields[idx_VentasEnProcesoPendientesIMPORTE].AsFloat; +end; + +procedure TVentasEnProcesoPendientesDataTableRules.SetIMPORTEValue(const aValue: Float); +begin + DataTable.Fields[idx_VentasEnProcesoPendientesIMPORTE].AsFloat := aValue; +end; + + +initialization + RegisterDataTableRules(RID_VentasEnProcesoPendientes, TVentasEnProcesoPendientesDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Reglas/schVentasEnProcesoServer_Intf.pas b/2.1.0/Source/Modulos/VentasProceso/Reglas/schVentasEnProcesoServer_Intf.pas new file mode 100644 index 0000000..62901ca --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Reglas/schVentasEnProcesoServer_Intf.pas @@ -0,0 +1,541 @@ +unit schVentasEnProcesoServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schVentasEnProcesoClient_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_VentasEnProcesoPendientesDelta = '{D3A9D8FB-B84C-4FD7-9DC6-FBBBA04E7878}'; + +type + { IVentasEnProcesoPendientesDelta } + IVentasEnProcesoPendientesDelta = interface(IVentasEnProcesoPendientes) + ['{D3A9D8FB-B84C-4FD7-9DC6-FBBBA04E7878}'] + { Property getters and setters } + function GetOldNUMINFValue : String; + function GetOldCLAVE1Value : Float; + function GetOldCLAVE2Value : Integer; + function GetOldCLAVE3Value : Integer; + function GetOldFECHAValue : DateTime; + function GetOldDIAValue : Integer; + function GetOldDIASEMANAValue : String; + function GetOldMESValue : String; + function GetOldANOValue : Integer; + function GetOldCENTROValue : String; + function GetOldVENDEDORValue : String; + function GetOldNUMTALONValue : String; + function GetOldCODIGOValue : String; + function GetOldPRODUCTOValue : String; + function GetOldGRUPOPRODUCTOValue : String; + function GetOldTIPOPRODUCTOValue : String; + function GetOldCOLECCIONValue : String; + function GetOldCOLORValue : String; + function GetOldTALLAValue : String; + function GetOldINICIOValue : Float; + function GetOldFINALValue : Float; + function GetOldIMPORTEValue : Float; + + { Properties } + property OldNUMINF : String read GetOldNUMINFValue; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldDIA : Integer read GetOldDIAValue; + property OldDIASEMANA : String read GetOldDIASEMANAValue; + property OldMES : String read GetOldMESValue; + property OldANO : Integer read GetOldANOValue; + property OldCENTRO : String read GetOldCENTROValue; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldCODIGO : String read GetOldCODIGOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldGRUPOPRODUCTO : String read GetOldGRUPOPRODUCTOValue; + property OldTIPOPRODUCTO : String read GetOldTIPOPRODUCTOValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldTALLA : String read GetOldTALLAValue; + property OldINICIO : Float read GetOldINICIOValue; + property OldFINAL : Float read GetOldFINALValue; + property OldIMPORTE : Float read GetOldIMPORTEValue; + end; + + { TVentasEnProcesoPendientesBusinessProcessorRules } + TVentasEnProcesoPendientesBusinessProcessorRules = class(TDABusinessProcessorRules, IVentasEnProcesoPendientes, IVentasEnProcesoPendientesDelta) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + function GetOldNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetCLAVE1Value: Float; virtual; + function GetOldCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE2Value: Integer; virtual; + function GetOldCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetCLAVE3Value: Integer; virtual; + function GetOldCLAVE3Value: Integer; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + function GetFECHAValue: DateTime; virtual; + function GetOldFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetDIAValue: Integer; virtual; + function GetOldDIAValue: Integer; virtual; + procedure SetDIAValue(const aValue: Integer); virtual; + function GetDIASEMANAValue: String; virtual; + function GetOldDIASEMANAValue: String; virtual; + procedure SetDIASEMANAValue(const aValue: String); virtual; + function GetMESValue: String; virtual; + function GetOldMESValue: String; virtual; + procedure SetMESValue(const aValue: String); virtual; + function GetANOValue: Integer; virtual; + function GetOldANOValue: Integer; virtual; + procedure SetANOValue(const aValue: Integer); virtual; + function GetCENTROValue: String; virtual; + function GetOldCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetVENDEDORValue: String; virtual; + function GetOldVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetNUMTALONValue: String; virtual; + function GetOldNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetCODIGOValue: String; virtual; + function GetOldCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetPRODUCTOValue: String; virtual; + function GetOldPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetGRUPOPRODUCTOValue: String; virtual; + function GetOldGRUPOPRODUCTOValue: String; virtual; + procedure SetGRUPOPRODUCTOValue(const aValue: String); virtual; + function GetTIPOPRODUCTOValue: String; virtual; + function GetOldTIPOPRODUCTOValue: String; virtual; + procedure SetTIPOPRODUCTOValue(const aValue: String); virtual; + function GetCOLECCIONValue: String; virtual; + function GetOldCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLORValue: String; virtual; + function GetOldCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetTALLAValue: String; virtual; + function GetOldTALLAValue: String; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + function GetINICIOValue: Float; virtual; + function GetOldINICIOValue: Float; virtual; + procedure SetINICIOValue(const aValue: Float); virtual; + function GetFINALValue: Float; virtual; + function GetOldFINALValue: Float; virtual; + procedure SetFINALValue(const aValue: Float); virtual; + function GetIMPORTEValue: Float; virtual; + function GetOldIMPORTEValue: Float; virtual; + procedure SetIMPORTEValue(const aValue: Float); virtual; + + { Properties } + property NUMINF : String read GetNUMINFValue write SetNUMINFValue; + property OldNUMINF : String read GetOldNUMINFValue; + property CLAVE1 : Float read GetCLAVE1Value write SetCLAVE1Value; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property CLAVE2 : Integer read GetCLAVE2Value write SetCLAVE2Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property CLAVE3 : Integer read GetCLAVE3Value write SetCLAVE3Value; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property FECHA : DateTime read GetFECHAValue write SetFECHAValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property DIA : Integer read GetDIAValue write SetDIAValue; + property OldDIA : Integer read GetOldDIAValue; + property DIASEMANA : String read GetDIASEMANAValue write SetDIASEMANAValue; + property OldDIASEMANA : String read GetOldDIASEMANAValue; + property MES : String read GetMESValue write SetMESValue; + property OldMES : String read GetOldMESValue; + property ANO : Integer read GetANOValue write SetANOValue; + property OldANO : Integer read GetOldANOValue; + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property OldCENTRO : String read GetOldCENTROValue; + property VENDEDOR : String read GetVENDEDORValue write SetVENDEDORValue; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property NUMTALON : String read GetNUMTALONValue write SetNUMTALONValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property OldCODIGO : String read GetOldCODIGOValue; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property GRUPOPRODUCTO : String read GetGRUPOPRODUCTOValue write SetGRUPOPRODUCTOValue; + property OldGRUPOPRODUCTO : String read GetOldGRUPOPRODUCTOValue; + property TIPOPRODUCTO : String read GetTIPOPRODUCTOValue write SetTIPOPRODUCTOValue; + property OldTIPOPRODUCTO : String read GetOldTIPOPRODUCTOValue; + property COLECCION : String read GetCOLECCIONValue write SetCOLECCIONValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property OldCOLOR : String read GetOldCOLORValue; + property TALLA : String read GetTALLAValue write SetTALLAValue; + property OldTALLA : String read GetOldTALLAValue; + property INICIO : Float read GetINICIOValue write SetINICIOValue; + property OldINICIO : Float read GetOldINICIOValue; + property FINAL : Float read GetFINALValue write SetFINALValue; + property OldFINAL : Float read GetOldFINALValue; + property IMPORTE : Float read GetIMPORTEValue write SetIMPORTEValue; + property OldIMPORTE : Float read GetOldIMPORTEValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TVentasEnProcesoPendientesBusinessProcessorRules } +constructor TVentasEnProcesoPendientesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TVentasEnProcesoPendientesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesNUMINF]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesNUMINF]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetNUMINFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesNUMINF] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCLAVE1]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCLAVE1]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCLAVE1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCLAVE1] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCLAVE2]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCLAVE2]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCLAVE2Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCLAVE2] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCLAVE3]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCLAVE3]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCLAVE3Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCLAVE3] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesFECHA]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesFECHA]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetFECHAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesFECHA] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetDIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesDIA]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldDIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesDIA]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetDIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesDIA] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetDIASEMANAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesDIASEMANA]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldDIASEMANAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesDIASEMANA]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetDIASEMANAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesDIASEMANA] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetMESValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesMES]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldMESValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesMES]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetMESValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesMES] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetANOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesANO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldANOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesANO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetANOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesANO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCENTRO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCENTRO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCENTRO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesVENDEDOR]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesVENDEDOR]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesVENDEDOR] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesNUMTALON]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesNUMTALON]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetNUMTALONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesNUMTALON] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCODIGO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCODIGO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCODIGO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesPRODUCTO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesPRODUCTO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesPRODUCTO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetGRUPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesGRUPOPRODUCTO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldGRUPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesGRUPOPRODUCTO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetGRUPOPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesGRUPOPRODUCTO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetTIPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesTIPOPRODUCTO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldTIPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesTIPOPRODUCTO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetTIPOPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesTIPOPRODUCTO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCOLECCION]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCOLECCION]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCOLECCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCOLECCION] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCOLOR]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesCOLOR]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesCOLOR] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesTALLA]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesTALLA]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetTALLAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesTALLA] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetINICIOValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesINICIO]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldINICIOValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesINICIO]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetINICIOValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesINICIO] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetFINALValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesFINAL]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldFINALValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesFINAL]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetFINALValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesFINAL] := aValue; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetIMPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesIMPORTE]; +end; + +function TVentasEnProcesoPendientesBusinessProcessorRules.GetOldIMPORTEValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasEnProcesoPendientesIMPORTE]; +end; + +procedure TVentasEnProcesoPendientesBusinessProcessorRules.SetIMPORTEValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasEnProcesoPendientesIMPORTE] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_VentasEnProcesoPendientesDelta, TVentasEnProcesoPendientesBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Modulos/VentasProceso/Reglas/uBizControlVentasProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Reglas/uBizControlVentasProceso.pas new file mode 100644 index 0000000..ba8031f --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Reglas/uBizControlVentasProceso.pas @@ -0,0 +1,69 @@ +unit uBizControlVentasProceso; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uBizControlesBase, + uBizVentasProceso; + +const + BIZ_CONTROL_VENTASPROCESO = 'Client.Control_VentasProceso'; + +type + IBizControlVentasProceso = interface(IBizControlBase) + ['{3D515579-7374-444F-8983-8FFE1C7A38C4}'] + procedure SetItems(const Value : IBizVentasProceso); + function GetItems : IBizVentasProceso; + property Items : IBizVentasProceso read GetItems write SetItems; + end; + + TBizControlVentasProcesoTableRules = class(TBizControlBaseDataTableRules, IBizControlVentasProceso) + protected + FItems : IBizVentasProceso; + procedure OnNewRecord(Sender: TDADataTable); override; + procedure SetItems(const Value : IBizVentasProceso); virtual; + function GetItems : IBizVentasProceso; virtual; + public + procedure Show; override; + property Items : IBizVentasProceso read GetItems write SetItems; + end; + + +implementation + +uses + uEditorUtils, uDataModuleVentasProceso; + +{ TBizControlVentasProcesoTableRules } + +function TBizControlVentasProcesoTableRules.GetItems: IBizVentasProceso; +begin + Result := FItems; +end; + +procedure TBizControlVentasProcesoTableRules.OnNewRecord( + Sender: TDADataTable); +begin + inherited; + CATEGORIA := CATEGORIA_VENTAS_PROCESO +end; + +procedure TBizControlVentasProcesoTableRules.SetItems( + const Value: IBizVentasProceso); +begin + FItems := Value; +end; + +procedure TBizControlVentasProcesoTableRules.Show; +begin + inherited; + ShowEditor(IBizControlVentasProceso, Self, etItem); +end; + +initialization + RegisterDataTableRules(BIZ_CONTROL_VENTASPROCESO, TBizControlVentasProcesoTableRules); + +finalization +end. + + diff --git a/2.1.0/Source/Modulos/VentasProceso/Reglas/uBizVentasProceso.pas b/2.1.0/Source/Modulos/VentasProceso/Reglas/uBizVentasProceso.pas new file mode 100644 index 0000000..fe6e9eb --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Reglas/uBizVentasProceso.pas @@ -0,0 +1,88 @@ +unit uBizVentasProceso; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDAInterfaces, + DataAbstract3_Intf, uROTypes, schVentasEnProcesoClient_Intf; + +const + BIZ_VENTASPROCESO = 'Client.VentasProceso'; + +type + IBizVentasProceso = interface(IVentasEnProcesoPendientes) + ['{FA9EC0B7-D12E-4088-8406-D9A86441C3B3}'] + function GetVisibleColumns: String; + procedure SetVisibleColumns(const Value: String); + property VisibleColumns : String read GetVisibleColumns write SetVisibleColumns; + end; + + TBizVentasProcesoDataTableRules = class(TVentasEnProcesoPendientesDataTableRules, IBizVentasProceso) + private + FVisibleColumns : String; + protected + function GetVisibleColumns: String; + procedure SetVisibleColumns(const Value: String); + procedure OnBeforeDataRequestCall(DataTable: TDADataTable; + Request: TDARemoteRequest); + procedure OnBeforeSchemaCall(DataTable: TDADataTable; + Request: TDARemoteRequest); + public + constructor Create(aDataTable: TDADataTable); override; + property VisibleColumns : String read GetVisibleColumns write SetVisibleColumns; + end; + + +implementation + +uses + uDataModuleVentasProceso; + +{ TBizVentasProcesoDataTableRules } + +constructor TBizVentasProcesoDataTableRules.Create( + aDataTable: TDADataTable); +begin + inherited; + if Assigned(DataTable) then + begin + DataTable.OnBeforeDataRequestCall := OnBeforeDataRequestCall; + DataTable.OnBeforeSchemaCall := OnBeforeSchemaCall; + end; +end; + +function TBizVentasProcesoDataTableRules.GetVisibleColumns: String; +begin + if Length(FVisibleColumns) = 0 then + FVisibleColumns := dmVentasEnProceso.GetNameColumns; + Result := FVisibleColumns +end; + +procedure TBizVentasProcesoDataTableRules.OnBeforeDataRequestCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('Columns').AsString := VisibleColumns; +end; + +procedure TBizVentasProcesoDataTableRules.OnBeforeSchemaCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('Columns').AsString := VisibleColumns; +end; + +procedure TBizVentasProcesoDataTableRules.SetVisibleColumns( + const Value: String); +begin + if Length(Value) > 0 then + FVisibleColumns := Value + else + FVisibleColumns := dmVentasEnProceso.GetNameColumns; +end; + +initialization + RegisterDataTableRules(BIZ_VENTASPROCESO, TBizVentasProcesoDataTableRules); + +finalization +end. + + diff --git a/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.ddp b/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.dfm b/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.dfm new file mode 100644 index 0000000..c54e5ac --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.dfm @@ -0,0 +1,249 @@ +object srvVentasEnProceso: TsrvVentasEnProceso + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schVentasEnProceso + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object schVentasEnProceso: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'SELECT '#10' TODAS.NUMINF, TODAS.CLAVE1, TODAS.CLAVE2, TODAS.CLAV' + + 'E3,'#10' TODAS.FECHA, TODAS.DIA, TODAS.DIASEMANA, TODAS.MES, TODA' + + 'S.ANO,'#10' TODAS.CENTRO, TODAS.VENDEDOR, TODAS.NUMTALON, TODAS.C' + + 'ODIGO,'#10' TODAS.PRODUCTO, TODAS.GRUPOPRODUCTO, TODAS.TIPOPRODUC' + + 'TO, TODAS.COLECCION,'#10' TODAS.COLOR, TODAS.TALLA, TODAS.INICIO,' + + ' TODAS.FINAL, TODAS.IMPORTE'#10' FROM'#10' RDX_V_VENTASPROCESOPEND' + + 'IENTES PENDIENTES LEFT JOIN RDX_V_VENTASPROCESO TODAS'#10'ON (TODAS.' + + 'NUMTALON = PENDIENTES.NUMTALON AND TODAS.CODIGO = PENDIENTES.COD' + + 'IGO AND'#10'TODAS.COLOR = PENDIENTES.COLOR AND TODAS.TALLA = PENDIEN' + + 'TES.TALLA)' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMINF' + TableField = 'NUMINF' + end + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'CLAVE2' + TableField = 'CLAVE2' + end + item + DatasetField = 'CLAVE3' + TableField = 'CLAVE3' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'VENDEDOR' + TableField = 'VENDEDOR' + end + item + DatasetField = 'NUMTALON' + TableField = 'NUMTALON' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'TALLA' + TableField = 'TALLA' + end + item + DatasetField = 'IMPORTE' + TableField = 'IMPORTE' + end + item + DatasetField = 'INICIO' + TableField = 'INICIO' + end + item + DatasetField = 'FINAL' + TableField = 'FINAL' + end + item + DatasetField = 'DIA' + TableField = 'DIA' + end + item + DatasetField = 'DIASEMANA' + TableField = 'DIASEMANA' + end + item + DatasetField = 'MES' + TableField = 'MES' + end + item + DatasetField = 'ANO' + TableField = 'ANO' + end + item + DatasetField = 'GRUPOPRODUCTO' + TableField = 'GRUPOPRODUCTO' + end + item + DatasetField = 'TIPOPRODUCTO' + TableField = 'TIPOPRODUCTO' + end + item + DatasetField = 'COLECCION' + TableField = 'COLECCION' + end> + end> + Name = 'VentasEnProcesoPendientes' + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + InPrimaryKey = True + end + item + Name = 'CLAVE1' + DataType = datFloat + InPrimaryKey = True + end + item + Name = 'CLAVE2' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'CLAVE3' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + end + item + Name = 'DIA' + DataType = datInteger + end + item + Name = 'DIASEMANA' + DataType = datString + Size = 30 + end + item + Name = 'MES' + DataType = datString + Size = 30 + end + item + Name = 'ANO' + DataType = datInteger + end + item + Name = 'CENTRO' + DataType = datString + Size = 25 + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 66 + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + end + item + Name = 'GRUPOPRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'TIPOPRODUCTO' + DataType = datString + Size = 25 + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + end + item + Name = 'TALLA' + DataType = datString + Size = 8 + end + item + Name = 'INICIO' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'FINAL' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'IMPORTE' + DataType = datFloat + Alignment = taRightJustify + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 48 + Top = 32 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.pas b/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.pas new file mode 100644 index 0000000..3d8fe32 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasProceso/Servidor/srvVentasEnProceso_Impl.pas @@ -0,0 +1,135 @@ +unit srvVentasEnProceso_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDABusinessProcessor, + uDAInterfaces, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TsrvVentasEnProceso } + TsrvVentasEnProceso = class(TDARemoteService, IsrvVentasEnProceso) + DABINAdapter: TDABINAdapter; + schVentasEnProceso: TDASchema; + private + protected + function GetData(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; + function GetSchema(const DatasetName: String; const Columns: String): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, uSchemaUtilsServer; + +const + CAMPOS_SUMA = '#INICIO#FINAL#IMPORTE#'; + +procedure Create_srvVentasEnProceso(out anInstance : IUnknown); +begin + anInstance := TsrvVentasEnProceso.Create(NIL); +end; + +{ TsrvVentasEnProceso } + +function TsrvVentasEnProceso.GetData(const DatasetName: String; + const Columns: String; const Params: String; + const MaxRecords: Integer): Binary; +var + ds : IDADataset; + i : integer; + pars: TStringList; + parnames: array of string; + parvalues: array of Variant; +begin + pars := TStringList.Create; + result := Binary.Create; + try + try + pars.Text := Params; + SetLength(parnames, pars.Count); + SetLength(parvalues, pars.Count); + for i := 0 to (pars.Count-1) do begin + parnames[i] := pars.Names[i]; + parvalues[i] := pars.Values[pars.Names[i]]; + end; + + { Prepares the parameter arrays} + + with TReplicarDataSet.Create do + begin + SourceDataSetName := DatasetName; + Service := Self; + Columnas := Columns; + ColumnasQueSuman := CAMPOS_SUMA; + try + ds := GetNewDataSet; + finally + Free; + end; + end; + + // Fills the parameters (if any are specified) + if (Length(parnames) > 0) then + begin + for i := 0 to (Length(parnames) - 1) do + ds.ParamByName(parnames[i]).Value := parvalues[i]; + end; + + ds.Open; + ServiceAdapter.WriteDataset(Result, ds, [woRows], MaxRecords); + except + FreeAndNIl(result); + raise; + end; + finally + FreeANDNil(pars); + end; +end; + + +function TsrvVentasEnProceso.GetSchema(const DatasetName, + Columns: String): Binary; +var + ds : IDADataset; +begin + result := Binary.Create; + try + with TReplicarDataSet.Create do + begin + SourceDataSetName := DatasetName; + Service := Self; + Columnas := Columns; + ColumnasQueSuman := CAMPOS_SUMA; + try + ds := GetNewDataSet; + finally + Free; + end; + end; + + ServiceAdapter.WriteDataset(result, ds, [woSchema]); + except + FreeAndNIl(result); + raise; + end; +end; + +initialization + TROClassFactory.Create('srvVentasEnProceso', Create_srvVentasEnProceso, TsrvVentasEnProceso_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.bdsproj b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.bdsproj new file mode 100644 index 0000000..92783e2 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + VentasTerminadas.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 + 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 + 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/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.cfg b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.cfg new file mode 100644 index 0000000..396e927 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O- +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\..\..\Output\Cliente" +-LN"..\..\..\Lib" +-U"..\..\..\Lib" +-O"..\..\..\Lib" +-I"..\..\..\Lib" +-R"..\..\..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dof b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dof new file mode 100644 index 0000000..67fc858 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dof @@ -0,0 +1,474 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=0 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\..\..\Output\Cliente +PackageDCPOutputDir=..\..\..\Lib +SearchPath=..\..\..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=2 +Item0=..\..\..\Lib +Item1=..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlBPLOutput] +Count=2 +Item0=..\..\..\..\Output\Cliente +Item1=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=2 +Item0=..\..\..\Lib +Item1=..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=0 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=0 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=1 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dpk b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dpk new file mode 100644 index 0000000..6926416 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dpk @@ -0,0 +1,85 @@ +package VentasTerminadas; + +{$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 ON} +{$DEFINE DEBUG} + +requires + BaseD10, + rtl, + vcl, + PluginSDK_D10R, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + GUISDK_D10, + dbrtl, + dsnap, + adortl, + tb2k_D10, + tbx_D10, + JvCoreD10R, + vcljpg, + Jcl, + JclVcl, + JvSystemD10R, + JvPageCompsD10R, + JvStdCtrlsD10R, + cxTreeListD10, + dxThemeD10, + cxLibraryD10, + cxExportD10, + cxEditorsD10, + cxDataD10, + vcldb, + cxGridD10, + cxPageControlD10, + cxExtEditorsD10, + dxPSCoreD10, + dxComnD10, + dxPScxCommonD10, + dxPSLnksD10, + designide, + vclshlctrls, + dxPScxGridLnkD10, + dclcxLibraryD10, + ControlesBaseD10; + +contains + uPluginControllerVentasTerminadas in 'uPluginControllerVentasTerminadas.pas' {ModuleVentasTerminadas: TModuleController}, + uDataModuleVentasTerminadas in 'uDataModuleVentasTerminadas.pas' {dmVentasTerminadas: TDAClientDataModule}, + uBizVentasTerminadas in '..\Reglas\uBizVentasTerminadas.pas', + uBizControlVentasTerminadas in '..\Reglas\uBizControlVentasTerminadas.pas', + uEditorControlesVentasTerminadas in 'uEditorControlesVentasTerminadas.pas' {fEditorControlesVentasTerminadas: TCustomEditor}, + uViewControlesVentasTerminadas in 'uViewControlesVentasTerminadas.pas' {frViewControlesVentasTerminadas: TCustomView}, + uViewControlVentasTerminadas in 'uViewControlVentasTerminadas.pas' {frViewControlVentasTerminadas: TCustomView}, + uEditorControlVentasTerminadas in 'uEditorControlVentasTerminadas.pas' {fEditorControlVentasTerminadas: TCustomEditor}, + uViewControGridlVentasTerminadas in 'uViewControGridlVentasTerminadas.pas' {frViewControlGridVentasTerminadas: TCustomView}, + uViewControGridResumenVentas in 'uViewControGridResumenVentas.pas' {frViewControlGridResumenVentas: TCustomView}, + uEditorControlResumenVentas in 'uEditorControlResumenVentas.pas' {fEditorControlResumenVentas: TCustomEditor}, + schVentasTerminadasClient_Intf in '..\Reglas\schVentasTerminadasClient_Intf.pas', + schVentasTerminadasServer_Intf in '..\Reglas\schVentasTerminadasServer_Intf.pas'; + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dproj b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dproj new file mode 100644 index 0000000..483f859 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.dproj @@ -0,0 +1,636 @@ + + + {e78ab5a1-3e67-4073-abb0-540b2303c7d3} + VentasTerminadas.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\VentasTerminadas.bpl + + + 7.0 + False + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + RELEASE + + + 7.0 + False + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + ..\..\..\Lib + DEBUG + True + + + Delphi.Personality + Package + +FalseTrueFalseTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0VentasTerminadas.dpk + 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 + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
dmVentasTerminadas
+
+ +
fEditorControlesVentasTerminadas
+
+ +
fEditorControlResumenVentas
+
+ +
fEditorControlVentasTerminadas
+
+ +
ModuleVentasTerminadas
+
+ +
frViewControlGridVentasTerminadas
+
+ +
frViewControlGridResumenVentas
+
+ +
frViewControlesVentasTerminadas
+
+ +
frViewControlVentasTerminadas
+
+
+
+ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.drc b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.drc new file mode 100644 index 0000000..0969032 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.drc @@ -0,0 +1,25 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uDataModuleVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uViewControlesVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uEditorControlesVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uViewControGridlVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uViewControlVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uViewControGridResumenVentas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uEditorControlResumenVentas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uPluginControllerVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\uEditorControlVentasTerminadas.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Cliente\VentasTerminadas.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf16.tmp */ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.identcache b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.identcache new file mode 100644 index 0000000..2c70333 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.identcache differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.rc b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.res b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/VentasTerminadas.res differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/_uEditorControlVentasTerminadasCrossTab.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/_uEditorControlVentasTerminadasCrossTab.dfm new file mode 100644 index 0000000..4375ece --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/_uEditorControlVentasTerminadasCrossTab.dfm @@ -0,0 +1,1611 @@ +inherited fEditorControlVentasTerminadasCrossTab: TfEditorControlVentasTerminadasCrossTab + Left = 366 + Top = 147 + Width = 687 + Height = 607 + Caption = 'fEditorControlVentasTerminadasCrossTab' + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 679 + inherited Image1: TImage + Left = 652 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000002944944415478DAD5955F4853511CC7BFD7CD9C + 9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D582441B58782 + 0A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C9B685A5EEF + EEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB85C361A4D3 + B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C4A8AC2221B + 13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C579518CCCA9 + 1388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED592808E32AF + 06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B6B19E48C7C + 3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E098FB3026B2 + C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583DE0DB096837 + 30573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF91E44014E02 + 682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF814FF2A1E4 + 5B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB30BE711CD6 + FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D7847164A22 + 7BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6B9F2F30CA2 + B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED1149741F46C139F + 5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF38720B23877 + A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C9242B6A23A39F + E201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B8183CD4BDF45 + B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB431DBA95582 + F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F00A95ADA01 + 3F01A44422D9EF203E7B0000000049454E44AE426082} + end + end + inherited TBXDock: TTBXDock + Width = 679 + inherited tbxMain: TTBXToolbar + object edtMes: TTBXComboBoxItem [0] + Caption = 'Mes' + Strings.Strings = ( + 'Enero' + 'Febrero' + 'Marzo' + 'Abril' + 'Mayo' + 'Junio' + 'Julio' + 'Agosto' + 'Septiembre' + 'Octubre' + 'Noviembre' + 'Diciembre') + end + object edtAno: TTBXSpinEditItem [1] + Caption = 'A'#241'o' + SpaceAfterPrefix = False + SpaceBeforePostfix = False + end + inherited TBXItem33: TTBXItem + Visible = False + end + object TBXSeparatorItem16: TTBXSeparatorItem [15] + end + object tbxiExpandir: TTBXItem [16] + Action = actExpandir + end + object tbxiContraer: TTBXItem [17] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [18] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + inherited TBXSubmenuItem6: TTBXSubmenuItem + object TBXItem37: TTBXItem [0] + Action = actExpandir + end + object TBXItem36: TTBXItem [1] + Action = actContraer + end + object TBXItem35: TTBXItem [2] + Action = actAnchoAuto + end + object TBXSeparatorItem17: TTBXSeparatorItem [3] + end + end + end + inherited tbxFiltro: TTBXToolbar + Left = 438 + end + end + inherited StatusBar: TStatusBar + Top = 554 + Width = 679 + end + inline frViewControlGridResumenVentas1: TfrViewControlGridResumenVentas [3] + Left = 0 + Top = 76 + Width = 679 + Height = 478 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + inherited cxGrid: TcxGrid + Width = 679 + Height = 478 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + ReportDocument.CreationDate = 38952.790681423610000000 + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + Visible = False + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + Visible = False + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + object dsVentasTerminadas: TDADataSource + Left = 320 + Top = 232 + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/_uViewControGridlVentasTerminadasCrossTab.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/_uViewControGridlVentasTerminadasCrossTab.dfm new file mode 100644 index 0000000..76a3061 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/_uViewControGridlVentasTerminadasCrossTab.dfm @@ -0,0 +1,204 @@ +inherited frViewControlGridVentasTerminadasCrossTab: TfrViewControlGridVentasTerminadasCrossTab + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + OnCustomDrawCell = cxGridViewCustomDrawCell + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = '0,0 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end> + OptionsView.CellAutoHeight = False + OptionsView.FooterAutoHeight = False + Preview.AutoHeight = False + end + end + inherited dsDataSource: TDADataSource + OnStateChange = dsDataSourceStateChange + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + 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.Orientation = poLandscape + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.Caption = 'Venta mensual' + ReportDocument.CreationDate = 38952.779695636570000000 + ReportTitle.Text = 'Venta mensual' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = 10 + Font.Name = 'Tahoma' + Font.Style = [] + OptionsFormatting.UseNativeStyles = True + OptionsView.Caption = False + OptionsView.FilterBar = False + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleDia: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clInactiveCaptionText + TextColor = clHighlightText + end + object cxStyleTotal: TcxStyle + AssignedValues = [svFont] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + object cxStyleImporte: TcxStyle + end + end + object cxEditRepository1: TcxEditRepository + Left = 32 + Top = 88 + object cxEditDia: TcxEditRepositoryTextItem + end + object cxEditImporte: TcxEditRepositoryCurrencyItem + Properties.Alignment.Horz = taRightJustify + Properties.UseThousandSeparator = True + end + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.dfm new file mode 100644 index 0000000..7a7433e --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.dfm @@ -0,0 +1,581 @@ +object dmVentasTerminadas: TdmVentasTerminadas + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 363 + Width = 600 + object RORemoteService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvVentasTerminadas' + Left = 48 + Top = 20 + end + object tbl_VentasTerminadas2: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = < + item + Name = 'FECHAINI' + DataType = datString + Value = '2006/01/01' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + DataType = datString + Value = '2006/12/12' + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter_VentasTerminadas2 + LocalDataStreamer = DABinDataStreamer1 + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'VentasTerminadas' + IndexDefs = <> + Left = 464 + Top = 72 + end + object tbl_VentasTerminadasCrossTab: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = <> + Params = < + item + Name = 'fechaini' + DataType = datString + Value = '' + ParamType = daptInput + end + item + Name = 'fechafin' + DataType = datString + Value = '' + ParamType = daptInput + end + item + Name = 'coleccion' + DataType = datString + Value = '%' + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapterCrossTab + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'VentasTerminadasCrossTab' + IndexDefs = <> + Left = 216 + Top = 224 + end + object ds_VentasTerminadasCrossTab: TDADataSource + DataSet = tbl_VentasTerminadasCrossTab.Dataset + DataTable = tbl_VentasTerminadasCrossTab + Left = 216 + Top = 288 + end + object DARemoteDataAdapterCrossTab: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaCrossTab' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'FechaIni' + DataType = rtString + Flag = fIn + Value = '01/01/2007' + end + item + Name = 'FechaFin' + DataType = rtString + Flag = fIn + Value = '31/01/2007' + end + item + Name = 'Coleccion' + DataType = rtString + Flag = fIn + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDataCrossTab' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'FechaIni' + DataType = rtString + Flag = fIn + Value = '01/01/2007' + end + item + Name = 'FechaFin' + DataType = rtString + Flag = fIn + Value = '31/01/2007' + end + item + Name = 'Coleccion' + DataType = rtString + Flag = fIn + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = dmBase.DABINAdapter + Left = 216 + Top = 168 + end + object DARemoteDataAdapter_VentasTerminadas2: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchema' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'VentasTerminadas' + end + item + Name = 'Columns' + DataType = rtString + Flag = fIn + Value = Null + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'VentasTerminadas' + end + item + Name = 'Columns' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = RORemoteService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = RORemoteService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = RORemoteService + DataStreamer = DABinDataStreamer1 + Left = 464 + Top = 16 + end + object DABinDataStreamer1: TDABinDataStreamer + IsCompatibleV4 = False + Left = 48 + Top = 96 + end + object DARemoteDataAdapter_VentasTerminadas: TDARemoteDataAdapter + GetSchemaCall.RemoteService = RORemoteService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = RORemoteService + GetDataCall.MethodName = 'GetDatasetDataEx' + GetDataCall.Params = < + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + Value = Null + end + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + Value = 'VentasTerminadas' + end + item + Name = 'Params' + DataType = rtUserDefined + Flag = fIn + TypeName = 'TDADatasetParamArray' + Value = Null + end + item + Name = 'UserFilter' + DataType = rtString + Flag = fIn + Value = Null + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + Value = True + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + Value = -1 + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'aTableNameArray' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + DataStreamer = DABinDataStreamer1 + Left = 216 + Top = 16 + end + object tbl_VentasTerminadas: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + InPrimaryKey = True + end + item + Name = 'CLAVE1' + DataType = datDecimal + InPrimaryKey = True + end + item + Name = 'CLAVE2' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'CLAVE3' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DisplayLabel = 'Fecha' + end + item + Name = 'DIA' + DataType = datInteger + DisplayLabel = 'D'#237'a' + end + item + Name = 'DIASEMANA' + DataType = datWideString + Size = 30 + DisplayLabel = 'D'#237'a de la semana' + end + item + Name = 'MES' + DataType = datWideString + Size = 30 + DisplayLabel = 'Mes' + end + item + Name = 'ANO' + DataType = datInteger + DisplayLabel = 'A'#241'o' + end + item + Name = 'CENTRO' + DataType = datString + Size = 25 + DisplayLabel = 'Centro' + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 66 + DisplayLabel = 'Vendedor' + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo producto' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DisplayLabel = 'Producto' + end + item + Name = 'GRUPOPRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Grupo' + end + item + Name = 'TIPOPRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Tipo' + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + DisplayLabel = 'Colecci'#243'n' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + end + item + Name = 'TALLA' + DataType = datString + Size = 8 + DisplayLabel = 'Talla' + Alignment = taRightJustify + end + item + Name = 'TALLA38' + DataType = datDecimal + DisplayLabel = '38' + Alignment = taRightJustify + end + item + Name = 'TALLA40' + DataType = datDecimal + DisplayLabel = '40' + Alignment = taRightJustify + end + item + Name = 'TALLA42' + DataType = datDecimal + DisplayLabel = '42' + Alignment = taRightJustify + end + item + Name = 'TALLA44' + DataType = datDecimal + DisplayLabel = '44' + Alignment = taRightJustify + end + item + Name = 'TALLA46' + DataType = datDecimal + DisplayLabel = '46' + Alignment = taRightJustify + end + item + Name = 'TALLA48' + DataType = datDecimal + DisplayLabel = '48' + Alignment = taRightJustify + end + item + Name = 'VTATERMDEV' + DataType = datDecimal + DisplayLabel = 'Vta.Term/Dev' + Alignment = taRightJustify + end + item + Name = 'VTAFINALRESC' + DataType = datDecimal + DisplayLabel = 'Vta.Final/Resc' + Alignment = taRightJustify + end + item + Name = 'VENTAS' + DataType = datDecimal + DisplayLabel = 'Ventas' + Alignment = taRightJustify + end + item + Name = 'DEVOLUCIONES' + DataType = datDecimal + DisplayLabel = 'Devoluciones' + Alignment = taRightJustify + end + item + Name = 'TOTAL' + DataType = datDecimal + DisplayLabel = 'Total ventas' + Alignment = taRightJustify + end + item + Name = 'VALTERMDEV' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Val.Term/Dev' + Alignment = taRightJustify + end + item + Name = 'VALFINALRESC' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Val.Final/Resc' + Alignment = taRightJustify + end + item + Name = 'VALVEN' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Imp. ventas' + Alignment = taRightJustify + end + item + Name = 'VALDEV' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Imp. devoluciones' + Alignment = taRightJustify + end + item + Name = 'VALTOT' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Imp. Total' + Alignment = taRightJustify + end> + Params = < + item + Name = 'FECHAINI' + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + Value = '' + ParamType = daptInput + end> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter_VentasTerminadas + LocalDataStreamer = DABinDataStreamer1 + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'VentasTerminadas' + IndexDefs = <> + Left = 216 + Top = 72 + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.pas new file mode 100644 index 0000000..57a300c --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uDataModuleVentasTerminadas.pas @@ -0,0 +1,127 @@ +unit uDataModuleVentasTerminadas; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + uBizVentasTerminadas, uBizControlVentasTerminadas, uDARemoteDataAdapter, + uDAInterfaces, uDAMemDataTable, uDADataStreamer; + +const + CATEGORIA_VENTA_TERMINADA = 'VENTATERMINADA'; + +type + TdmVentasTerminadas = class(TDAClientDataModule) + RORemoteService: TRORemoteService; + tbl_VentasTerminadas2: TDACDSDataTable; + tbl_VentasTerminadasCrossTab: TDACDSDataTable; + ds_VentasTerminadasCrossTab: TDADataSource; + DARemoteDataAdapterCrossTab: TDARemoteDataAdapter; + DARemoteDataAdapter_VentasTerminadas2: TDARemoteDataAdapter; + DABinDataStreamer1: TDABinDataStreamer; + DARemoteDataAdapter_VentasTerminadas: TDARemoteDataAdapter; + tbl_VentasTerminadas: TDACDSDataTable; + procedure DAClientDataModuleCreate(Sender: TObject); + protected + function GetItems : IBizVentasTerminadas; + public + function GetNameColumns: String; + function GetControl: IBizControlVentasTerminadas; + function GetItemsCrossTab : IBizResumenVentas; + end; + +var + dmVentasTerminadas: TdmVentasTerminadas; + +implementation + +{$R *.DFM} + +uses + Controls, Forms, DataAbstract3_Intf, uDataTableUtils, + uROTypes, uEditorPreview, Dialogs, uDataModuleControles, + uDataModuleBase, uDBSelectionList, schVentasTerminadasClient_Intf, cxControls; + + +procedure TdmVentasTerminadas.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmBase.Channel; + RORemoteService.Message := dmBase.Message; +end; + +function TdmVentasTerminadas.GetControl: IBizControlVentasTerminadas; +var + aDataTable : TDACDSDataTable; +begin + aDataTable := dmControles.GetItems(CATEGORIA_VENTA_TERMINADA); + aDataTable.BusinessRulesID := BIZ_CONTROL_VENTASTERMINADAS; + + (aDataTable as IBizControlVentasTerminadas).Items := GetItems; + Result := (aDataTable as IBizControlVentasTerminadas); +end; + +function TdmVentasTerminadas.GetItems: IBizVentasTerminadas; +var + dtVentas: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtVentas := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_VentasTerminadas2, dtVentas); + dtVentas.Fields.AssignFieldCollection(tbl_VentasTerminadas.Fields); + dtVentas.BusinessRulesID := BIZ_VENTASTERMINADAS; + + dtVentas.FieldByName(fld_VentasTerminadasNUMINF).Visible := False; + dtVentas.FieldByName(fld_VentasTerminadasCLAVE1).Visible := False; + dtVentas.FieldByName(fld_VentasTerminadasCLAVE2).Visible := False; + dtVentas.FieldByName(fld_VentasTerminadasCLAVE3).Visible := False; + + dtVentas.LoadSchema; + Result := (dtVentas as IBizVentasTerminadas); + finally + HideHourglassCursor; + end; +end; + + +function TdmVentasTerminadas.GetItemsCrossTab: IBizResumenVentas; +var + dtVentas: TDACDSDataTable; +begin + ShowHourglassCursor; + try + dtVentas := TDACDSDataTable.Create(NIL); + CloneDataTable(tbl_VentasTerminadasCrossTab, dtVentas); + dtVentas.BusinessRulesID := BIZ_RESUMENVENTAS; + Result := (dtVentas as IBizResumenVentas); + finally + HideHourglassCursor; + end; +end; + +function TdmVentasTerminadas.GetNameColumns: String; +var + AList : TStringList; + i : integer; +begin + AList := TStringList.Create; + try + for i := 0 to tbl_VentasTerminadas.FieldCount - 1 do + if tbl_VentasTerminadas.Fields[i].Visible then + AList.Add(tbl_VentasTerminadas.Fields[i].Name); + Result := AList.CommaText; + finally + FreeAndNil(AList); + end; +end; + +initialization + dmVentasTerminadas := TdmVentasTerminadas.Create(nil); + +finalization + FreeAndNil(dmVentasTerminadas); + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.dfm new file mode 100644 index 0000000..8d696e6 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.dfm @@ -0,0 +1,1686 @@ +inherited fEditorControlResumenVentas: TfEditorControlResumenVentas + Left = 419 + Top = 239 + Caption = 'Resumen de ventas' + ClientHeight = 573 + ClientWidth = 679 + ExplicitWidth = 687 + ExplicitHeight = 607 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 679 + ExplicitWidth = 679 + inherited Image1: TImage + Left = 652 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000002944944415478DAD5955F4853511CC7BFD7CD9C + 9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D582441B58782 + 0A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C9B685A5EEF + EEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB85C361A4D3 + B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C4A8AC2221B + 13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C579518CCCA9 + 1388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED592808E32AF + 06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B6B19E48C7C + 3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E098FB3026B2 + C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583DE0DB096837 + 30573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF91E44014E02 + 682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF814FF2A1E4 + 5B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB30BE711CD6 + FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D7847164A22 + 7BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6B9F2F30CA2 + B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED1149741F46C139F + 5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF38720B23877 + A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C9242B6A23A39F + E201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B8183CD4BDF45 + B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB431DBA95582 + F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F00A95ADA01 + 3F01A44422D9EF203E7B0000000049454E44AE426082} + ExplicitLeft = 652 + end + end + inherited TBXDock: TTBXDock + Width = 679 + ExplicitWidth = 679 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 469 + object TBXLabelItem2: TTBXLabelItem [0] + Caption = ' Mes:' + end + object edtMes: TTBXComboBoxItem [1] + Caption = 'Mes:' + EditWidth = 110 + DropDownList = True + MaxVisibleItems = 12 + MinListWidth = 100 + Strings.Strings = ( + 'Enero' + 'Febrero' + 'Marzo' + 'Abril' + 'Mayo' + 'Junio' + 'Julio' + 'Agosto' + 'Septiembre' + 'Octubre' + 'Noviembre' + 'Diciembre') + end + object TBXLabelItem3: TTBXLabelItem [2] + Caption = ' A'#241'o:' + end + object edtAno: TTBXSpinEditItem [3] + Caption = 'A'#241'o:' + SpaceAfterPrefix = False + SpaceBeforePostfix = False + end + object TBXLabelItem4: TTBXLabelItem [4] + Caption = ' Colecci'#243'n:' + end + object edtColeccion: TTBXEditItem [5] + Caption = 'Colecci'#243'n:' + ExtendedAccept = True + end + object TBXSeparatorItem19: TTBXSeparatorItem [6] + Blank = True + end + inherited TBXItem6: TTBXItem [7] + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem18: TTBXSeparatorItem [8] + end + inherited TBXItem2: TTBXItem [9] + end + inherited TBXSeparatorItem1: TTBXSeparatorItem [10] + end + inherited TBXItem29: TTBXItem [11] + end + inherited TBXItem27: TTBXItem [12] + end + inherited TBXItem5: TTBXItem [13] + end + inherited TBXItem4: TTBXItem [14] + end + inherited TBXSeparatorItem14: TTBXSeparatorItem [15] + end + inherited TBXItem33: TTBXItem [16] + Visible = False + end + inherited TBXSeparatorItem3: TTBXSeparatorItem [17] + end + inherited TBXItem23: TTBXItem [18] + end + inherited TBXSeparatorItem2: TTBXSeparatorItem [19] + end + inherited TBXItem24: TTBXItem [20] + end + inherited TBXItem3: TTBXItem [21] + end + object TBXSeparatorItem16: TTBXSeparatorItem [22] + end + object tbxiExpandir: TTBXItem [23] + Action = actExpandir + end + object tbxiContraer: TTBXItem [24] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [25] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + inherited TBXSeparatorItem10: TTBXSeparatorItem [26] + end + inherited TBXItem26: TTBXItem [27] + end + inherited TBXItem25: TTBXItem [28] + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 679 + inherited TBXSubmenuItem6: TTBXSubmenuItem + object TBXItem37: TTBXItem [0] + Action = actExpandir + end + object TBXItem36: TTBXItem [1] + Action = actContraer + end + object TBXItem35: TTBXItem [2] + Action = actAnchoAuto + end + object TBXSeparatorItem17: TTBXSeparatorItem [3] + end + end + end + inherited tbxFiltro: TTBXToolbar + Left = 469 + Visible = False + ExplicitLeft = 469 + end + end + inherited StatusBar: TStatusBar + Top = 554 + Width = 679 + ExplicitTop = 554 + ExplicitWidth = 679 + end + inline frViewControlGridResumenVentas1: TfrViewControlGridResumenVentas [3] + Left = 0 + Top = 76 + Width = 679 + Height = 478 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 76 + ExplicitWidth = 679 + ExplicitHeight = 284 + inherited cxGrid: TcxGrid + Width = 679 + Height = 478 + ExplicitWidth = 679 + ExplicitHeight = 284 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink1: TdxGridReportLink + ReportDocument.CreationDate = 38952.790681423610000000 + BuiltInReportLink = True + end + end + end + inherited EditorActionList: TActionList [4] + inherited actNuevo: TAction + Visible = False + end + inherited actModificar: TAction + Visible = False + end + inherited actEliminar: TAction + Visible = False + end + inherited actRefrescar: TAction + Caption = 'Ir' + ImageIndex = 16 + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + Visible = False + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + Visible = False + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + object dsVentasTerminadas: TDADataSource + Left = 320 + Top = 232 + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.pas new file mode 100644 index 0000000..56a7d43 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlResumenVentas.pas @@ -0,0 +1,155 @@ +unit uEditorControlResumenVentas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlBase, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uBizControlesBase, + uCustomView, uViewBase, uViewControlBase, Grids, DBGrids, pngimage, + uViewControlVentasTerminadas, uEditorGridBase, uViewGridBase, uViewGrid, + uViewControGridResumenVentas, Menus, TB2ExtItems, TBXExtItems, + uBizVentasTerminadas, StdCtrls, uDAInterfaces; + +type + IEditorControlResumenVentas = interface(IEditorGridBase) + ['{FC3218D5-319A-4ECF-88E9-0CB8655EDFA9}'] + function GetItems: IBizResumenVentas; + procedure SetItems(const Value: IBizResumenVentas); + property Items: IBizResumenVentas read GetItems write SetItems; + end; + + TfEditorControlResumenVentas = class(TfEditorGridBase, IEditorControlResumenVentas) + dsVentasTerminadas: TDADataSource; + TBXSeparatorItem16: TTBXSeparatorItem; + tbxiExpandir: TTBXItem; + tbxiContraer: TTBXItem; + tbxiAnchoAuto: TTBXItem; + actExpandir: TAction; + actContraer: TAction; + actAnchoAuto: TAction; + TBXItem37: TTBXItem; + TBXItem36: TTBXItem; + TBXItem35: TTBXItem; + TBXSeparatorItem17: TTBXSeparatorItem; + edtMes: TTBXComboBoxItem; + edtAno: TTBXSpinEditItem; + frViewControlGridResumenVentas1: TfrViewControlGridResumenVentas; + TBXLabelItem2: TTBXLabelItem; + TBXLabelItem3: TTBXLabelItem; + TBXSeparatorItem18: TTBXSeparatorItem; + edtColeccion: TTBXEditItem; + TBXLabelItem4: TTBXLabelItem; + TBXSeparatorItem19: TTBXSeparatorItem; + procedure actAnchoAutoExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actRefrescarExecute(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + protected + FItems : IBizResumenVentas; + function GetItems: IBizResumenVentas; + procedure SetItems(const Value: IBizResumenVentas); + public + property Items: IBizResumenVentas read GetItems write SetItems; + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + cxControls, uEditorUtils, DateUtils, uROClasses, cxGridTableView, uCustomEditor, uEditorBase; + +{$R *.dfm} + +{ TfEditorControlVentasTerminadas } + +procedure TfEditorControlResumenVentas.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + frViewControlGridResumenVentas1.AjustarAncho; +end; + +procedure TfEditorControlResumenVentas.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FItems) then + raise Exception.Create('No hay items asignados'); + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay una vista asignada'); + + //Inicializar + edtMes.ItemIndex := (MonthOf(Today)-1); + edtAno.Value := YearOf(Today); +end; + +procedure TfEditorControlResumenVentas.actImprimirExecute(Sender: TObject); +begin + inherited; + frViewControlGridResumenVentas1.Print(edtMes.Text, edtAno.Text); +end; + +constructor TfEditorControlResumenVentas.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := frViewControlGridResumenVentas1; + Self.Caption := 'Resumen de ventas mensuales por centro'; + JvNavPanelHeader.Caption := Self.Caption; +end; + +function TfEditorControlResumenVentas.GetItems: IBizResumenVentas; +begin + Result := FItems; +end; + +procedure TfEditorControlResumenVentas.SetItems( + const Value: IBizResumenVentas); +begin + FItems := Value; + if Assigned(FItems) then + begin + dsDataTable.DataTable := FItems.DataTable; + frViewControlGridResumenVentas1.dsDataSource.DataTable := FItems.DataTable; + end; +end; + +procedure TfEditorControlResumenVentas.actRefrescarExecute(Sender: TObject); +var + AuxDate: TDateTime; + UltimoDia: Integer; + i : Integer; + +begin + AuxDate := EncodeDate(edtAno.AsInteger , (edtMes.ItemIndex + 1), 1); + + ShowHourglassCursor; + try + with FItems do + begin + if DataTable.Active then + DataTable.Active := False; + + DataTable.ParamByName('FECHAINI').AsString := DateToStr(StartOfTheMonth(AuxDate)); + DataTable.ParamByName('FECHAFIN').AsString := DateToStr(EndOfTheMonth(AuxDate)); + DataTable.ParamByName('COLECCION').AsString := edtColeccion.Text; + + if not DataTable.Active then + DataTable.Active := True; + end; + finally + HideHourglassCursor; + end; +end; + +procedure TfEditorControlResumenVentas.actPrevisualizarExecute(Sender: TObject); +begin + frViewControlGridResumenVentas1.Preview(edtMes.Text, edtAno.Text); +end; + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlVentasTerminadas.dfm new file mode 100644 index 0000000..f500fce --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlVentasTerminadas.dfm @@ -0,0 +1,1776 @@ +inherited fEditorControlVentasTerminadas: TfEditorControlVentasTerminadas + Left = 531 + Top = 329 + Caption = 'fEditorControlVentasTerminadas' + ClientHeight = 573 + ClientWidth = 679 + OnCreate = CustomEditorCreate + OnGetModified = CustomEditorGetModified + ExplicitWidth = 687 + ExplicitHeight = 607 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 679 + ExplicitWidth = 679 + inherited Image1: TImage + Left = 652 + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000002944944415478DAD5955F4853511CC7BFD7CD9C + 9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D582441B58782 + 0A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C9B685A5EEF + EEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB85C361A4D3 + B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C4A8AC2221B + 13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C579518CCCA9 + 1388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED592808E32AF + 06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B6B19E48C7C + 3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E098FB3026B2 + C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583DE0DB096837 + 30573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF91E44014E02 + 682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF814FF2A1E4 + 5B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB30BE711CD6 + FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D7847164A22 + 7BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6B9F2F30CA2 + B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED1149741F46C139F + 5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF38720B23877 + A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C9242B6A23A39F + E201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B8183CD4BDF45 + B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB431DBA95582 + F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F00A95ADA01 + 3F01A44422D9EF203E7B0000000049454E44AE426082} + ExplicitLeft = 652 + end + end + inherited TBXDock: TTBXDock + Width = 679 + ExplicitWidth = 679 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 679 + object TBXSeparatorItem16: TTBXSeparatorItem [13] + end + object tbxiExpandir: TTBXItem [14] + Action = actExpandir + end + object tbxiContraer: TTBXItem [15] + Action = actContraer + end + object tbxiAnchoAuto: TTBXItem [16] + Action = actAnchoAuto + DisplayMode = nbdmImageAndText + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 679 + inherited TBXSubmenuItem6: TTBXSubmenuItem + object TBXItem37: TTBXItem [0] + Action = actExpandir + end + object TBXItem36: TTBXItem [1] + Action = actContraer + end + object TBXItem35: TTBXItem [2] + Action = actAnchoAuto + end + object TBXSeparatorItem17: TTBXSeparatorItem [3] + end + end + end + end + inherited StatusBar: TStatusBar + Top = 554 + Width = 679 + ExplicitTop = 554 + ExplicitWidth = 679 + end + inline frViewControlVentasTerminadas1: TfrViewControlVentasTerminadas [3] + Left = 0 + Top = 76 + Width = 679 + Height = 478 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 76 + ExplicitWidth = 679 + ExplicitHeight = 478 + inherited TBXMultiDock1: TTBXMultiDock + Width = 234 + Height = 478 + ExplicitWidth = 234 + ExplicitHeight = 478 + inherited pnlParametros: TTBXDockablePanel + DockedWidth = 230 + SplitHeight = 258 + ExplicitWidth = 234 + ExplicitHeight = 258 + inherited TBXAlignmentPanel2: TTBXAlignmentPanel + Width = 230 + ExplicitWidth = 230 + inherited TBXLink1: TTBXLink + Width = 222 + ExplicitWidth = 222 + end + inherited TBXLink5: TTBXLink + Width = 222 + ExplicitWidth = 222 + end + inherited TBXLink2: TTBXLink + Width = 222 + ExplicitWidth = 222 + end + end + inherited pcParametros: TPageControl + Width = 230 + Height = 138 + ExplicitWidth = 230 + ExplicitHeight = 138 + inherited TabSheet5: TTabSheet + ExplicitHeight = 0 + inherited frViewPeriodoFechas1: TfrViewPeriodoFechas + Height = 0 + ExplicitHeight = 0 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + inherited cbPeriodo: TcxComboBox + ExplicitWidth = 125 + Width = 125 + end + end + end + end + inherited tsColumnas: TTabSheet + ExplicitHeight = 0 + inherited frViewColumnas1: TfrViewColumnas + Height = 0 + ExplicitHeight = 0 + inherited lbColumnas: TcxCheckListBox + Height = 0 + ExplicitHeight = 0 + end + end + end + inherited tsAgrupacion: TTabSheet + ExplicitWidth = 222 + ExplicitHeight = 128 + inherited frViewAgrupaciones1: TfrViewAgrupaciones + Width = 222 + Height = 128 + ExplicitWidth = 222 + ExplicitHeight = 128 + inherited TBXLabel1: TTBXLabel + Width = 222 + ExplicitWidth = 222 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 222 + ExplicitWidth = 222 + inherited TBXButton1: TTBXButton + Width = 109 + ExplicitWidth = 109 + end + inherited TBXButton3: TTBXButton + Width = 109 + ExplicitWidth = 109 + end + inherited TBXButton2: TTBXButton + Width = 109 + ExplicitWidth = 109 + end + end + end + end + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 206 + Width = 230 + ExplicitTop = 206 + ExplicitWidth = 230 + end + end + inherited pnlTareas: TTBXDockablePanel + Top = 258 + DockedWidth = 230 + DockPos = 258 + SplitHeight = 204 + ExplicitTop = 258 + ExplicitWidth = 234 + ExplicitHeight = 204 + inherited TBXPageScroller1: TTBXPageScroller + Width = 230 + Height = 182 + ExplicitWidth = 230 + ExplicitHeight = 182 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 230 + ExplicitWidth = 230 + inherited bFiltros: TTBXLink + Width = 222 + ExplicitWidth = 222 + end + inherited bSumarios: TTBXLink + Width = 222 + ExplicitWidth = 222 + end + end + inherited pcTareas: TPageControl + Width = 230 + Height = 134 + ExplicitWidth = 230 + ExplicitHeight = 134 + inherited tsSumarios: TTabSheet + ExplicitHeight = 48 + inherited frViewSumarios1: TfrViewSumarios + Height = 48 + ExplicitHeight = 48 + inherited vgSumarios: TcxVerticalGrid + Height = 19 + ExplicitHeight = 19 + end + end + end + inherited tsFiltros: TTabSheet + ExplicitWidth = 222 + ExplicitHeight = 124 + inherited frViewFiltros1: TfrViewFiltros + Width = 222 + Height = 124 + ExplicitWidth = 222 + ExplicitHeight = 124 + inherited TBXLabel1: TTBXLabel + Width = 222 + ExplicitWidth = 222 + end + inherited cxFilterControl1: TcxFilterControl + Width = 222 + Height = 65 + ExplicitWidth = 222 + ExplicitHeight = 65 + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 94 + Width = 222 + ExplicitTop = 94 + ExplicitWidth = 222 + end + inherited cxStyleRepository1: TcxStyleRepository + Top = 72 + end + end + end + end + end + end + end + inherited frViewControlGridVentasTerminadas1: TfrViewControlGridVentasTerminadas + Left = 234 + Width = 445 + Height = 478 + ExplicitLeft = 234 + ExplicitWidth = 445 + ExplicitHeight = 478 + inherited cxGrid: TcxGrid + Width = 445 + Height = 478 + ExplicitWidth = 445 + ExplicitHeight = 478 + inherited cxGridView: TcxGridDBTableView + DataController.DataSource = dsVentasTerminadas + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxPrinterLinkcxGrid: TdxGridReportLink + BuiltInReportLink = True + end + end + end + end + inherited EditorActionList: TActionList [4] + inherited actConfPagina: TAction + OnExecute = actConfPaginaExecute + end + object actExpandir: TAction + Category = 'Ver' + Caption = 'Expandir todo' + ImageIndex = 21 + OnExecute = actExpandirExecute + end + object actContraer: TAction + Category = 'Ver' + Caption = 'Contraer todo' + ImageIndex = 22 + OnExecute = actContraerExecute + end + object actAnchoAuto: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 23 + OnExecute = actAnchoAutoExecute + 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 + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F032580119FE4D64553FE7FF8F001437C9FC439C20680343B392269 + FEF11E883F30DCBFCFC070FE81220383A3006E03609A6BCAF631B47439C135C3 + E9EFEF197A3F00C5253F3030AEDB73092510D89F1D62006BAE3BC7D0D2640431 + A44A11AEF9C3FBFB0CEF8166CCFD013440E13DC48040675DB0E66D8BA7C23597 + 141931F4F4010D291264A8E9BBCF5012F89EE1FD0BA017809A7BD73130280619 + 32306830200C00693632FC00D1347D05434D66044349922043CFBCF70C2D91F7 + 19BCEB10E1A169AAC9709DE70783A2A100AA0B4A9282C19A7FFFF90BC4FF18DA + 0A6319923DEF33E4F47D6098B1E22443787A3DC3F99DD3C1E1E654E904F63ADC + 803F7FFF31FC016B846806D1207E7F6532437AFD0C865FBFFF32C4E634C10D80 + 4723C8005F076DAC9A4186823482F06F204E2A6CC56E80A78D06C3DC45BBC102 + 2141B60C6BD61DC6885A530B1D868CD20EEC06B858A8E2B5F9D71F089D5BD58D + DD007B136586E5AB0E80057CBC2D18B66C3D81E1026D7D3586A2BA3EEC065819 + 28E0B519E43210C0694073F77442990E0E300CA0343B030039812D6AB16B7539 + 0000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000DF4944415478DA + 63FCFFFF3F032580916203600C9E351CFF19FE3130FCFF09A47EFD67F89EFC0B + 2E67E09180D596F3DBE733220C58C5F17F89572FC3FBAF1F1832D73630FCC8FA + CDC84000805CCF886CF314B73A86F7DF3E32546EEC63F8FF0B22F6BBF62FDCA0 + 8482061497CCEFAF676444B619A41946BFF9FC8E61CDBE7D0C7F5AFF32E27501 + F762F6FF309B9135BF06E20347CE33FCEDF987DF059C73D9FE839CFA1F1870A9 + 56C1709BC181F903283EE53F7E17C0386C5D2CFF838C1DB1DA4C542CB03633FF + FFFF8381289BB1BA801880350C48316008BB006F2C509A1B0127B3B6E11C11A1 + 6B0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000000914944415478DA + 63FCFFFF3F032580916203885164E09180D596F3DBE733320265C09220E23312 + FE02C41F80D8158F2520D7430C9838112CF0F7F74F868F4F6F33BC7F7283E1CB + EBC70C770E3C6008413220A1A001C525F3FBEB1919FF010D60041A80AE1904CE + 000D4821E4828F401ADDD91FA1F41F20CE20E4024A6200EC028A63812E2E18F8 + 30187817E0CF0B14E64600B6F869E1FAECCCBE0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + 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 + F80000000970485973000017120000171201679FD252000002F14944415478DA + D596494C135118C7FF25404B03B614098807C1A84823081421EC0112A322211E + B89078E064E2050F9A885E8C8683CB4D0D116334C881C42A1A448301458C0BC4 + 22298A6C6915D9B1EDD0D26576674ADAD8141968C2C1974CBE37F3BDF9FDDEFB + 66DE64643CCF632B9B6CCB051B1DD8D972AB5E08E7098248FCD798D78983A109 + 04F89C10128B8B098487B1E0680A2C4582A53DE07C71651EEFEC51988C49813A + 4EBD718100E7755A13E8DFA3502B59C8927282E134098E7481A11C3050F1988B + CB822A761B3C24B5BE4084E76698E1FC69C0AB4F6158B2F238532B03A9D606C0 + 59CA03561070941B46670C4C09B9881104768713B2F61EE39ACF593EDB87C2AC + 092C7C1F42FF68246AEA4A414C0EA1456FC1C9232CC2637782659855B8001605 + 2CE98191D4602C4E8748A502F61541F0A4DBC89FA8480F80BF7878DB0B9F1B31 + E2DB8F0854D69678E1C3331A704E2B2CF356E469192855D1A0296A55E2718126 + DD18B0A930AAC946A45A29AC60255820C2C5B258C73F63782A1EF21D3A6C978F + E1D70C8D283987FC4C0568B7036F7A1790B68B44B48201CFD26084076F5E64D0 + 33AD06959A8E70B502B6657BA04084A7259B10661B449F51859A737AB01C07FD + DDCB48D698A04D910975A76018F64097AE80FEE957B4F79301AB4FCADD078536 + 01B4503E1B610F5EC1E3E60B981E1FC4A9C6E75E38CB72E0381E2F5B2F41EE1A + 00870814E5A8B06C36E274338DB3D73A71B1F126BE7435F95F98F286725EA190 + 83A2E84081085A85F201705FFFDED57AD41D73F8E177DA063031B51424F049BC + FBC0279082FB72F76F34A0F77D9717CE08D7CD33963505FE8D260AAACB0E6C08 + FEF72444B8989B9AB7490B8E976A438233C2F9ECE2B2B4E068519AF7E607ADDD + FE447555019E757C58F733925F9881058B435A70B82075D333F746E1B0104E69 + 4145DEDE90E062241C6E6941D9A13D5E50DBA3B7FE4455653E3A3A3FAE5BA283 + D9FBE17091D28212DDEE4DCFDCD77793B4B4A030331986916984DA240557AE37 + 850CF7B57F0AFEFBBF8A3FEEF0D2AAE4F624F60000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000014D4944415478DA + 63FCFFFF3F032D0123CD2D40E6182E3104DBF6EFEF3F86BF7FFF32FCFD03C1B7 + B26EC1D519782490E4220C0BB2A24D5114744CD9CB7037F72E5C1D171717F916 + E82FD4FF9F1367CEF0F5DB2F861F3FFF30FCFCF58761FEF2130C0F0A1F309262 + 288A05E8C1929F68C5F0F6FD37B0E13F7FFD6558B2EA244A70BDAE7F8D6219A1 + 2063C4162CCF5E7E021B0EF30588FDFDC71F86EDDBCE30BC6B7E47926F18B105 + 0B36C39FBEFACC70FEC435868FED1F49F381CE3C9DFFE8C1826EF8F79FBF19DE + 7DFCC170FAC82586AFDD5F49F381E62CCDFF45A9B65883E5CEA3F7288A4FEC3F + CFF063C20FD27CA0364DED3F2C124111EDEBA98F112C7FFEFC61F8FB1BA2E6F7 + 94DFA4F9009923DD29FDDFD34D1F6FB05094D1245A25FE3B3BE9815D8E2B5828 + CA68A28DA2FF61E99D9260C1690139806024536AC1A80F86A10F28CA68C40092 + 33DA906F550000E7732B02C862110D0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000000AA4944415478DA + 63FCFFFF3F032D0123CD2D205583814702492E22D9022E2E2EDA5A402A60043A + 07EE2210E33B10FFC0427F05E26F40EC85E628424106B160E24484C8C78F0C0C + 1F3E3030BC7F0FA1DFBD636078FB9681E1CD1B86B52F5E308490E86B540BF018 + 0EC28BFFFC618823D507FF801630822C20603803D0F099400D19A4FA0018B6FF + F185393266C06201411F90E21A72C06846A3BD05432F92477D30F03E187C196D + C8B72A00572A73F3ECEFF30C0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD2520000018C4944415478DA + 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E + 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F + C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 + 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 + 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB + FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE + 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 + FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F + 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 + FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD + BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 + EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 + 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end> + Bitmap = {} + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + object dsVentasTerminadas: TDADataSource + Left = 320 + Top = 232 + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlVentasTerminadas.pas new file mode 100644 index 0000000..cfb7138 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlVentasTerminadas.pas @@ -0,0 +1,241 @@ +unit uEditorControlVentasTerminadas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlBase, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uBizControlesBase, + uCustomView, uViewBase, uViewControlBase, uViewControlVentasTerminadas, + Grids, DBGrids, pngimage, uDAInterfaces; + +type + IEditorControlVentasTerminadas = interface(IEditorControlBase) + ['{721FAE24-2440-44FA-B681-6E3C2BD656FE}'] + end; + + TfEditorControlVentasTerminadas = class(TfEditorControlBase, IEditorControlVentasTerminadas) + dsVentasTerminadas: TDADataSource; + TBXSeparatorItem16: TTBXSeparatorItem; + tbxiExpandir: TTBXItem; + tbxiContraer: TTBXItem; + tbxiAnchoAuto: TTBXItem; + actExpandir: TAction; + actContraer: TAction; + actAnchoAuto: TAction; + TBXItem37: TTBXItem; + TBXItem36: TTBXItem; + TBXItem35: TTBXItem; + TBXSeparatorItem17: TTBXSeparatorItem; + frViewControlVentasTerminadas1: TfrViewControlVentasTerminadas; + procedure actRefrescarExecute(Sender: TObject); + procedure actExpandirExecute(Sender: TObject); + procedure actContraerExecute(Sender: TObject); + procedure actAnchoAutoExecute(Sender: TObject); + procedure CustomEditorCreate(Sender: TObject); + procedure CustomEditorGetModified(Sender: TObject; + var Modified: Boolean); + procedure actGuardarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actPrevisualizarExecute(Sender: TObject); + procedure actImprimirExecute(Sender: TObject); + procedure actConfPaginaExecute(Sender: TObject); + procedure frViewControlVentasTerminadas1bRefrescarClick( + Sender: TObject); + private + procedure RestaurarConfiguracion; + procedure GuardarConfiguracion; + protected + FModificado : Boolean; + procedure OnViewControlChanged(Sender: TObject); + procedure SetControl(const Value: IBizControlBase); override; + procedure RellenarCabeceraInforme; override; + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +uses + uEditorUtils, uBizControlVentasTerminadas, uROClasses, + cxGridTableView, uCustomEditor; + +{$R *.dfm} + +function ShowEditorVentasTerminadas (ABizObject : TDADataTableRules): TModalResult; +var + AEditor: IEditorControlVentasTerminadas; +begin + AEditor := TfEditorControlVentasTerminadas.Create(Application); + try + AEditor.Control := (ABizObject as IBizControlVentasTerminadas); + Result := AEditor.ShowModal; + finally + AEditor.Release; + end; +end; + + +{ TfEditorControlVentasTerminadas } + +procedure TfEditorControlVentasTerminadas.SetControl( + const Value: IBizControlBase); +begin + inherited; + RefrescarTituloEditor; + if Assigned(FControl) then + begin + frViewControlVentasTerminadas1.OnViewChanged := OnViewControlChanged; + with (FControl as IBizControlVentasTerminadas) do + begin + Items.DataTable.Active := False; // No se abre la tabla hasta que no se pulse en 'Refrescar' + dsVentasTerminadas.DataTable := Items.DataTable; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.DataController.DataSource := dsVentasTerminadas; + end; + end; +end; + +procedure TfEditorControlVentasTerminadas.actRefrescarExecute(Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.Refresh; + while (frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.Controller.FocusedRecord is TcxGridGroupRow) do + begin + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.Controller.FocusedRecord.Expand(True); + if (frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.Controller.FocusedRecordIndex < + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.DataController.RowCount - 1) then + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.Controller.GoToNext(False, True) + else + Exit; + end; +end; + +procedure TfEditorControlVentasTerminadas.actExpandirExecute(Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.ExpandirTodo; +end; + +procedure TfEditorControlVentasTerminadas.actContraerExecute(Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.ContraerTodo; +end; + +procedure TfEditorControlVentasTerminadas.actAnchoAutoExecute(Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.AjustarAncho; +end; + +procedure TfEditorControlVentasTerminadas.OnViewControlChanged( + Sender: TObject); +begin + if FControl.EsModificable then + FModificado := True; +end; + +procedure TfEditorControlVentasTerminadas.CustomEditorCreate(Sender: TObject); +begin + inherited; + FModificado := False; +end; + +procedure TfEditorControlVentasTerminadas.CustomEditorGetModified( + Sender: TObject; var Modified: Boolean); +begin + inherited; + Modified := FModificado; +end; + +procedure TfEditorControlVentasTerminadas.actGuardarExecute(Sender: TObject); +begin + if FModificado then + GuardarConfiguracion; + inherited; + FModificado := False; +end; + +procedure TfEditorControlVentasTerminadas.GuardarConfiguracion; +var + Aux : IROStrings; +begin + Aux := NewROStrings(); + Aux.Add(frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.ViewProperties); + if not (FControl.DataTable.State in dsEditModes) then + FControl.Edit; + FControl.VISTA := Aux; +end; + +procedure TfEditorControlVentasTerminadas.RestaurarConfiguracion; +begin + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.ViewProperties := FControl.VISTA.Text; +end; + +procedure TfEditorControlVentasTerminadas.FormShow(Sender: TObject); +begin + inherited; + if FControl.DataTable.State <> dsInsert then // No restaurar si estamos insertando + RestaurarConfiguracion; + frViewControlVentasTerminadas1.frViewColumnas1.Refresh; + frViewControlVentasTerminadas1.frViewAgrupaciones1.Refresh; +end; + +procedure TfEditorControlVentasTerminadas.actPrevisualizarExecute( + Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.Preview; +end; + +procedure TfEditorControlVentasTerminadas.actImprimirExecute(Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.Print; +end; + +procedure TfEditorControlVentasTerminadas.actConfPaginaExecute( + Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.PrintSetup; +end; + +procedure TfEditorControlVentasTerminadas.frViewControlVentasTerminadas1bRefrescarClick( + Sender: TObject); +begin + inherited; + frViewControlVentasTerminadas1.actRefrescarExecute(Sender); +end; + +constructor TfEditorControlVentasTerminadas.Create(AOwner: TComponent); +begin + inherited; + FViewControl := frViewControlVentasTerminadas1; + Self.Caption := 'Nueva consulta de ventas terminadas'; + JvNavPanelHeader.Caption := Self.Caption; +end; + +procedure TfEditorControlVentasTerminadas.RellenarCabeceraInforme; +begin + inherited; + with frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.dxPrintStyleManager1Style1.PrinterPage.PageHeader do + begin + LeftTitle.Clear; + LeftTitle.Add(FControl.NOMBRE); + + RightTitle.Clear; + RightTitle.Add(DateToStr(frViewControlVentasTerminadas1.frViewPeriodoFechas1.edtFechaIni.Date) + + ' - ' + DateToStr(frViewControlVentasTerminadas1.frViewPeriodoFechas1.edtFechaFin.Date)); + RightTitle.Add(frViewControlVentasTerminadas1.frViewControlGridVentasTerminadas1.FocusedView.DataController.Filter.FilterText); + end; +end; + +initialization + RegisterEditor(IBizControlVentasTerminadas, ShowEditorVentasTerminadas, etItem); + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlesVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlesVentasTerminadas.dfm new file mode 100644 index 0000000..72533a3 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlesVentasTerminadas.dfm @@ -0,0 +1,176 @@ +inherited fEditorControlesVentasTerminadas: TfEditorControlesVentasTerminadas + Left = 470 + Top = 325 + ActiveControl = frViewControlesVentasTerminadas1.EasyListview + Caption = 'fEditorControlesVentasTerminadas' + ExplicitWidth = 660 + ExplicitHeight = 494 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Caption = 'Control de ventas terminadas' + inherited Image1: TImage + Picture.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001800 + 0000180806000000E0773DF80000000970485973000017120000171201679FD2 + 5200000A4D6943435050686F746F73686F70204943432070726F66696C650000 + 78DA9D53775893F7163EDFF7650F5642D8F0B1976C81002223AC08C81059A210 + 92006184101240C585880A561415119C4855C482D50A489D88E2A028B867418A + 885A8B555C38EE1FDCA7B57D7AEFEDEDFBD7FBBCE79CE7FCCE79CF0F80111226 + 91E6A26A003952853C3AD81F8F4F48C4C9BD80021548E0042010E6CBC26705C5 + 0000F00379787E74B03FFC01AF6F00020070D52E2412C7E1FF83BA5026570020 + 9100E02212E70B01905200C82E54C81400C81800B053B3640A009400006C797C + 422200AA0D00ECF4493E0500D8A993DC1700D8A21CA908008D01009928472402 + 40BB00605581522C02C0C200A0AC40222E04C0AE018059B632470280BD050076 + 8E58900F4060008099422CCC0020380200431E13CD03204C03A030D2BFE0A95F + 7085B8480100C0CB95CD974BD23314B895D01A77F2F0E0E221E2C26CB1426117 + 29106609E4229C979B231348E7034CCE0C00001AF9D1C1FE383F90E7E6E4E1E6 + 66E76CEFF4C5A2FE6BF06F223E21F1DFFEBC8C020400104ECFEFDA5FE5E5D603 + 70C701B075BF6BA95B00DA560068DFF95D33DB09A05A0AD07AF98B7938FC401E + 9EA150C83C1D1C0A0B0BED2562A1BD30E38B3EFF33E16FE08B7EF6FC401EFEDB + 7AF000719A4099ADC0A383FD71616E76AE528EE7CB0442316EF7E723FEC7857F + FD8E29D1E234B15C2C158AF15889B850224DC779B952914421C995E212E97F32 + F11F96FD0993770D00AC864FC04EB607B5CB6CC07EEE01028B0E58D27600407E + F32D8C1A0B91001067343279F7000093BFF98F402B0100CD97A4E30000BCE818 + 5CA894174CC608000044A0812AB041070CC114ACC00E9CC11DBCC01702610644 + 400C24C03C104206E4801C0AA11896411954C03AD804B5B0031AA0119AE110B4 + C131380DE7E0125C81EB70170660189EC218BC86090441C8081361213A881162 + 8ED822CE0817998E04226148349280A420E988145122C5C872A402A9426A915D + 4823F22D7214398D5C40FA90DBC820328AFC8ABC47319481B25103D4027540B9 + A81F1A8AC6A073D174340F5D8096A26BD11AB41E3D80B6A2A7D14BE87574007D + 8A8E6380D1310E668CD9615C8C87456089581A26C71663E55835568F35631D58 + 3776151BC09E61EF0824028B8013EC085E8410C26C82909047584C5843A825EC + 23B412BA085709838431C2272293A84FB4257A12F9C478623AB1905846AC26EE + 211E219E255E270E135F9348240EC992E44E0A21259032490B496B48DB482DA4 + 53A43ED210699C4C26EB906DC9DEE408B280AC209791B7900F904F92FBC9C3E4 + B7143AC588E24C09A22452A494124A35653FE504A59F324299A0AA51CDA99ED4 + 08AA883A9F5A496DA076502F5387A91334759A25CD9B1643CBA42DA3D5D09A69 + 6769F7682FE974BA09DD831E4597D097D26BE807E9E7E983F4770C0D860D83C7 + 486228196B197B19A718B7192F994CA605D39799C85430D7321B9967980F986F + 55582AF62A7C1591CA12953A9556957E95E7AA545573553FD579AA0B54AB550F + AB5E567DA64655B350E3A909D416ABD5A91D55BBA936AECE5277528F50CF515F + A3BE5FFD82FA630DB2868546A08648A35463B7C6198D2116C63265F15842D672 + 5603EB2C6B984D625BB2F9EC4C7605FB1B762F7B4C534373AA66AC6691669DE6 + 71CD010EC6B1E0F039D99C4ACE21CE0DCE7B2D032D3F2DB1D66AAD66AD7EAD37 + DA7ADABEDA62ED72ED16EDEBDAEF75709D409D2C9DF53A6D3AF77509BA36BA51 + BA85BADB75CFEA3ED363EB79E909F5CAF50EE9DDD147F56DF4A3F517EAEFD6EF + D11F373034083690196C313863F0CC9063E86B9869B8D1F084E1A811CB68BA91 + C468A3D149A327B826EE8767E33578173E66AC6F1C62AC34DE65DC6B3C616269 + 32DBA4C4A4C5E4BE29CD946B9A66BAD1B4D374CCCCC82CDCACD8ACC9EC8E39D5 + 9C6B9E61BED9BCDBFC8D85A5459CC54A8B368BC796DA967CCB05964D96F7AC98 + 563E567956F556D7AC49D65CEB2CEB6DD6576C501B579B0C9B3A9BCBB6A8AD9B + ADC4769B6DDF14E2148F29D229F5536EDA31ECFCEC0AEC9AEC06ED39F661F625 + F66DF6CF1DCC1C121DD63B743B7C727475CC766C70BCEBA4E134C3A9C4A9C3E9 + 57671B67A1739DF33517A64B90CB1297769717536DA78AA76E9F7ACB95E51AEE + BAD2B5D3F5A39BBB9BDCADD96DD4DDCC3DC57DABFB4D2E9B1BC95DC33DEF41F4 + F0F758E271CCE39DA79BA7C2F390E72F5E765E595EFBBD1E4FB39C269ED6306D + C8DBC45BE0BDCB7B603A3E3D65FACEE9033EC63E029F7A9F87BEA6BE22DF3DBE + 237ED67E997E07FC9EFB3BFACBFD8FF8BFE179F216F14E056001C101E501BD81 + 1A81B3036B031F049904A50735058D05BB062F0C3E15420C090D591F72936FC0 + 17F21BF96333DC672C9AD115CA089D155A1BFA30CC264C1ED6118E86CF08DF10 + 7E6FA6F94CE9CCB60888E0476C88B81F69199917F97D14292A32AA2EEA51B453 + 747174F72CD6ACE459FB67BD8EF18FA98CB93BDB6AB6727667AC6A6C526C63EC + 9BB880B8AAB8817887F845F1971274132409ED89E4C4D8C43D89E37302E76C9A + 339CE49A54967463AEE5DCA2B917E6E9CECB9E773C593559907C3885981297B2 + 3FE5832042502F184FE5A76E4D1D13F2849B854F45BEA28DA251B1B7B84A3C92 + E69D5695F638DD3B7D43FA68864F4675C633094F522B79911992B923F34D5644 + D6DEACCFD971D92D39949C949CA3520D6996B42BD730B728B74F662B2B930DE4 + 79E66DCA1B9387CAF7E423F973F3DB156C854CD1A3B452AE500E164C2FA82B78 + 5B185B78B848BD485AD433DF66FEEAF9230B82167CBD90B050B8B0B3D8B87859 + F1E022BF45BB16238B5317772E315D52BA647869F0D27DCB68CBB296FD50E258 + 5255F26A79DCF28E5283D2A5A5432B82573495A994C9CB6EAEF45AB963156195 + 6455EF6A97D55B567F2A17955FAC70ACA8AEF8B046B8E6E2574E5FD57CF5796D + DADADE4AB7CAEDEB48EBA4EB6EACF759BFAF4ABD6A41D5D086F00DAD1BF18DE5 + 1B5F6D4ADE74A17A6AF58ECDB4CDCACD03356135ED5BCCB6ACDBF2A136A3F67A + 9D7F5DCB56FDADABB7BED926DAD6BFDD777BF30E831D153BDEEF94ECBCB52B78 + 576BBD457DF56ED2EE82DD8F1A621BBABFE67EDDB847774FC59E8F7BA57B07F6 + 45EFEB6A746F6CDCAFBFBFB2096D52368D1E483A70E59B806FDA9BED9A77B570 + 5A2A0EC241E5C127DFA67C7BE350E8A1CEC3DCC3CDDF997FB7F508EB48792BD2 + 3ABF75AC2DA36DA03DA1BDEFE88CA39D1D5E1D47BEB7FF7EEF31E36375C7358F + 579EA09D283DF1F9E48293E3A764A79E9D4E3F3DD499DC79F74CFC996B5D515D + BD6743CF9E3F1774EE4CB75FF7C9F3DEE78F5DF0BC70F422F762DB25B74BAD3D + AE3D477E70FDE148AF5B6FEB65F7CBED573CAE74F44DEB3BD1EFD37FFA6AC0D5 + 73D7F8D72E5D9F79BDEFC6EC1BB76E26DD1CB825BAF5F876F6ED17770AEE4CDC + 5D7A8F78AFFCBEDAFDEA07FA0FEA7FB4FEB165C06DE0F860C060CFC3590FEF0E + 09879EFE94FFD387E1D247CC47D52346238D8F9D1F1F1B0D1ABDF264CE93E1A7 + B2A713CFCA7E56FF79EB73ABE7DFFDE2FB4BCF58FCD8F00BF98BCFBFAE79A9F3 + 72EFABA9AF3AC723C71FBCCE793DF1A6FCADCEDB7DEFB8EFBADFC7BD1F9928FC + 40FE50F3D1FA63C7A7D04FF73EE77CFEFC2FF784F3FB25D29F33000000046741 + 4D410000B18E7CFB5193000002944944415478DAD5955F4853511CC7BFD7CD9C + 9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D582441B58782 + 0A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C9B685A5EEF + EEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB85C361A4D3 + B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C4A8AC2221B + 13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C579518CCCA9 + 1388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED592808E32AF + 06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B6B19E48C7C + 3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E098FB3026B2 + C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583DE0DB096837 + 30573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF91E44014E02 + 682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF814FF2A1E4 + 5B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB30BE711CD6 + FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D7847164A22 + 7BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6B9F2F30CA2 + B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED1149741F46C139F + 5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF38720B23877 + A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C9242B6A23A39F + E201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B8183CD4BDF45 + B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB431DBA95582 + F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F00A95ADA01 + 3F01A44422D9EF203E7B0000000049454E44AE426082} + end + end + inline frViewControlesVentasTerminadas1: TfrViewControlesVentasTerminadas [3] + Left = 0 + Top = 76 + Width = 652 + Height = 365 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 76 + ExplicitWidth = 652 + ExplicitHeight = 365 + inherited EasyListview: TEasyListview + Width = 652 + Height = 365 + Groups.Items = { + 0400000002000000FFFECE000400000000000400000000000000010000000E00 + 0000730064006600730020006100640066002000610073006400660020000000 + 00000000000000000000FFFECE00040000000000040000000000000001000000 + 1300000020007300640066006100730064002000200061007300200074003400 + 74002000740034003300000000000000000000000000} + Header.Columns.Items = { + 0400000004000000FFFECE000400000000110001000001010000000000013200 + 00000100000005000000490063006F006E006F00000000000000000000000000 + FFFECE0004000000001100010000010000000000000132000000010000000600 + 00004E006F006D00620072006500000000000000000000000000FFFECE000400 + 0000001100010000010200000000000132000000010000000B00000044006500 + 7300630072006900700063006900F3006E00000000000000000000000000FFFE + CE00040000000011000100000103000000010001320000000100000005000000 + 4F007200640065006E00000000000000000000000000} + ExplicitWidth = 652 + ExplicitHeight = 365 + end + end + inherited EditorActionList: TActionList [4] + end + inherited SmallImages: TPngImageList [5] + end + inherited LargeImages: TPngImageList [6] + end + inherited JvFormStorage: TJvFormStorage [7] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] + end + inherited dsDataTable: TDADataSource [9] + end + inherited ViewPopupMenu: TPopupMenu [10] + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlesVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlesVentasTerminadas.pas new file mode 100644 index 0000000..c4ffdd2 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uEditorControlesVentasTerminadas.pas @@ -0,0 +1,43 @@ +unit uEditorControlesVentasTerminadas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorControlesBase, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, ComCtrls, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uCustomView, + uViewBase, uViewControlesBase, Menus, DB, EasyListview, + uDADataTable, uViewControlesVentasTerminadas, uDAInterfaces; + +type + IEditorControlesVentasTerminadas = interface(IEditorControlesBase) + ['{6FF8D6DA-A997-40E9-8482-B0E4A77ECCC6}'] + end; + + TfEditorControlesVentasTerminadas = class(TfEditorControlesBase, IEditorControlesVentasTerminadas) + frViewControlesVentasTerminadas1: TfrViewControlesVentasTerminadas; + private + { Private declarations } + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation + +{$R *.dfm} + +uses + uEditorBase; + +{ TfEditorControlesVentasTerminadas } + +constructor TfEditorControlesVentasTerminadas.Create(AOwner: TComponent); +begin + inherited; + FViewControl := frViewControlesVentasTerminadas1; +end; + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.dfm new file mode 100644 index 0000000..bceea99 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.dfm @@ -0,0 +1,329 @@ +object ModuleVentasTerminadas: TModuleVentasTerminadas + OldCreateOrder = True + Description = 'Control de ventas terminadas' + ModuleMenu = MainMenu + ModuleName = 'Control de ventas terminadas' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.5' + Left = 701 + Top = 547 + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + 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 + F73EE77CFEFC2FF784F3FB25D29F33000002944944415478DAD5955F4853511C + C7BFD7CD9C9BD21F4188FECFA83443E262BED5831689249688BA60E0934F3D58 + 2441B587820A02291641050A8E1C150B8C454669181269AC2D3398D9C31E940C + 9B685A5EEFEEBDEB9CB3EEDA656EAE720FFDE0C7EF1CCEBDDFCFFDFDCEF99DCB + 85C361A4D3B8FF1FD0E51E4A1BA1B1AA94630032F8A31725390C5956B0284A2C + 4A8AC2221B13174332EA9B6D78DB73F337A06970EFB2C23229A728CB102589C5 + 79518CCCA91388BA765274A2FDEE232DC0F9F84DFAF64005A4A3547180952ED5 + 92808E32AF06B42158850B9517E3400A11A35EF9E0006673024C7CB86612E67B + 6B19E48C7C3F31801A1DC78AFB382FF8411E1825939D80A7CC8342A10822C9E0 + 98FB3026B2C6E0AF9D62CFE63B4CB0C1953C03555C379401799FC22215F7583D + E0DB09683730573C8FDC911C4C6DFF8AFAA747D06B7985BC4E23CBE0B2BE3BF9 + 1E44014E02682400474644BC8B87C742E26D1E330DB358E35E8DC98A2FB03CAF + 814FF2A1E45B3EDAFACD18A86E4D11109BC107B260202E806510DC318DBC8FEB + 30BE711CD6FE3AB4751BA19314EC39F40276E393E54F910A9149CAEFF5C3913D + 7847164A227BB039B8058B82C0C4AFBB0CEC1D2A4E2D2120F614D15A6E9BA9C6 + B9F2F30CA2B0B32E479DCE8FF71E8D8A17BBFAC0DDE2B480ABF60E9C3ED11497 + 41F46C139F5E58D0CC63FDD9C352CD97ABC600EA754D32D05C7A6A974ABF3AF3 + 8720B23877A905D24400592D5720ADDF0AE5AC154A4882D06A4728333BD2C924 + 2B6A23A39FE201371C3D49BB98F7B96108F8910905FEFD0D2878499AC9948B81 + 83CD4BDF45B1005AAA54ACD3E427D783846CBD0EBA0C0ED6EFBB123EFB577FB4 + 31DBA95582F7F5673AD61714D5155EBBD3B7A20056DFDA7245B7C95C914CFC9F + 00A95ADA013F01A44422D9EF203E7B0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000000970485973000017120000171201679FD252000001924944415478DA + 63FCFFFF3F032D01235D2C58BEED344D6C89F43265845B00E49065C8DF7FFF18 + FEFEFD0FA5A1F8DF7F0697F01286733BA661B7807126234390A62656033FFFFA + C5F0F9E74F862F40FA0B12FB4DD457B8E1CB361D6298B774137E0B48051FA2BE + 810DFF03B464D5D623F82D4089A444DC967D9BF10B2558FE40D96B771C23DE02 + 74F0E9F727866F7FBE81B118B33486E1A0B8D8B0EB04760BF0B99658F0A0F52D + C3E6BDA7705BF07F3E24C55E5C69C8A01F7E1E838D0CD0C541FAEF34BE66D87E + F00C6E0B12320CC08A0B1E30304C5060C060230374F105332E30DCAC7BC5B0EB + C859DAF9E05AF50B86BDC7CFD3CE07972A9F311C3C7991763E385FF684E1C899 + CBB4F3C199E2470CC7CF5FA59D0F8EE7DF673873F906A605119E260C4C494C14 + FBE070EE5D860B576F615A10EC6AC4C09EC642B10F0E64DD66B87CE30EA60501 + CE060C5C196C14FB607FE66D862B37B158E0EBA0C7C09BCDC14029C0698197AD + 0E46A105A2FF812B13247120FEF30F938D5CF362B5C0DD5A1B5C51500B6058D0 + 3D693ED50C8701B805B40400A09529EFB6636A250000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actVentas: TAction + Category = 'Ventas' + Caption = 'Control de ventas terminadas' + ImageIndex = 0 + OnExecute = actVentasExecute + end + object actResumenVentas: TAction + Category = 'Ventas' + Caption = 'Resumen de ventas mensuales' + ImageIndex = 1 + OnExecute = actResumenVentasExecute + end + end + object MainMenu: TMainMenu + Tag = 1000 + Images = LargeImages + Left = 40 + Top = 16 + object menu: TMenuItem + Tag = 100 + Caption = '&Ventas' + GroupIndex = 1 + ImageIndex = 4 + OnClick = actVentasExecute + object Ventas1: TMenuItem + Tag = 100 + Action = actVentas + end + object N1: TMenuItem + Tag = 9998 + Caption = '-' + end + object Resumenventasmensual1: TMenuItem + Tag = 9999 + Action = actResumenVentas + end + end + end + object SmallImages: 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 + F73EE77CFEFC2FF784F3FB25D29F33000001624944415478DA63FCFFFF3F0325 + 8071D99653649B10E96DCA083640DD9B9961F2C964AC8A7EFFFDCBF0FDCF1F86 + 6FBF7F337CFCF103CC9EEBBF9521C5630EC3B91DD310068000CC90B966E7300C + B2D92607D70C02280650250CC8F5068A01A47883F9CE5306868A8908037689A4 + C115C234339F6282085C6560F89BF80FCCD45C2BCAB06A8D0103F3EF7F0C715F + 358830E02A440C66C0B51067306DE675984163752A032328212DDF7AFA3FB201 + 20BF2EB7BE8CE10564CD20AF18AECF4418000B4490E6EF40FC0D8A6181B776B9 + 1E8AE6B3E96721810833A07BF27CB84D13845F30F07F7BC7D0CBACC970E50B23 + C302BE3B0CBF7FFE6428F9ABCDF0F10F5A3462CB0B3792430EFE7EF55C87918D + 5D88555621EAD7DD9B539878F818B4976F17C64807B832D39560A7FFFF7FFD7C + C7C8C2CAC7C0C4C4A2B3761F23D68484CB80DB75C56C3FCE9F780E62B3286B85 + 6A4E98BD8F240320AE70FEC72CABE4824B33080000E911EEC1FB93056C000000 + 0049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001334944415478DA + 63FCFFFF3F0325801164C0F26DA7C936056E40A49729511A7EFFF9CBF0FBF75F + 30ED185A8CDD00C64446AC9A7FCCFC0DD7BC74D32186794B3711E7827FFFFE01 + 35FD836B06E155DB8E621A80CB6674F0A4E33DC3FA5D27B01BF07FFE7F868B2B + 0D19F4C3CF836DBEBCDA9841D9E704DC66F1123E86FB2D6F19B6EC3B85DD8084 + 0C038682070C0C131420B621B34160C18C0B0CB71A5E31EC3C7416BF0B34024F + 83FD7C778B0583A4CB21A80BFE3128D608335CAE7CC670E0E445F25D70AEF431 + C3D1B357B01BF075DA4F86DB9BCC19A4DD8E806D7DB5CF9E81D76A373C1674DB + A5184E163E603875F13AAA01216E460C6CA92C44C5C291DCBB0CE7AFDE4235C0 + DF511FEE4F5888FF81F191E21FA6E6CACD3BA80678D9EA302CDE7090A47C8062 + 40F7A4F9246986277B4AB333009B9C2E9EBC2508450000000049454E44AE4260 + 82} + Name = 'PngImage1' + 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/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.pas new file mode 100644 index 0000000..c581256 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uPluginControllerVentasTerminadas.pas @@ -0,0 +1,96 @@ +unit uPluginControllerVentasTerminadas; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList; + +type + IMCVentasTerminadas = interface(IInterface) + ['{D7C41472-C5C7-43C1-849F-2056CC98D9B1}'] + end; + + TModuleVentasTerminadas = class(TModuleController, IMCVentasTerminadas) + actVentas: TAction; + menu: TMenuItem; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + Ventas1: TMenuItem; + SmallImages: TPngImageList; + actResumenVentas: TAction; + Resumenventasmensual1: TMenuItem; + N1: TMenuItem; + procedure actVentasExecute(Sender: TObject); + procedure actResumenVentasExecute(Sender: TObject); + public + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, uGUIBase, SysUtils, uDataModuleVentasTerminadas, + uEditorControlesVentasTerminadas, uEditorControlResumenVentas, + uBizControlVentasTerminadas, uBizVentasTerminadas, uEditorControlesBase; + +function GetModule : TModuleController; +begin + Result := TModuleVentasTerminadas.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +{ +******************************* TModuleContactos ******************************* +} + +procedure TModuleVentasTerminadas.actVentasExecute(Sender: TObject); +var + aControl: IBizControlVentasTerminadas; + aObj: IEditorControlesVentasTerminadas; +begin + aControl := dmVentasTerminadas.GetControl; + aObj := TfEditorControlesVentasTerminadas.Create(Application); + try + with aObj do + begin + Control := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +procedure TModuleVentasTerminadas.actResumenVentasExecute(Sender: TObject); +var + aControl: IBizResumenVentas; + aObj: IEditorControlResumenVentas; +begin + aControl := dmVentasTerminadas.GetItemsCrossTab; + aObj := TfEditorControlResumenVentas.Create(Application); + try + with aObj do + begin + Items := aControl; + ShowEmbedded; + end; + finally + aControl := NIL; + aObj := NIL; + end; +end; + +initialization + RegisterModuleClass(TModuleVentasTerminadas); + +finalization + UnRegisterModuleClass(TModuleVentasTerminadas); + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.dfm new file mode 100644 index 0000000..e92c347 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.dfm @@ -0,0 +1,211 @@ +inherited frViewControlGridResumenVentas: TfrViewControlGridResumenVentas + inherited cxGrid: TcxGrid + inherited cxGridView: TcxGridDBTableView + OnCustomDrawCell = cxGridViewCustomDrawCell + DataController.Summary.FooterSummaryItems = < + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = '0,0 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end + item + Format = ',0.00 '#8364';-,0.00 '#8364 + Kind = skSum + end> + OptionsView.CellAutoHeight = False + OptionsView.FooterAutoHeight = False + Preview.AutoHeight = False + end + end + inherited dsDataSource: TDADataSource + OnStateChange = dsDataSourceStateChange + end + inherited dxComponentPrinter: TdxComponentPrinter + CurrentLink = dxComponentPrinterLink1 + object dxComponentPrinterLink1: TdxGridReportLink + Active = True + 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.Orientation = poLandscape + PrinterPage.PageSize.X = 210000 + PrinterPage.PageSize.Y = 297000 + PrinterPage._dxMeasurementUnits_ = 0 + PrinterPage._dxLastMU_ = 2 + ReportDocument.Caption = 'Venta mensual' + ReportDocument.CreationDate = 39329.694692372690000000 + ReportTitle.Text = 'Venta mensual' + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = 10 + Font.Name = 'Tahoma' + Font.Style = [] + OptionsFormatting.UseNativeStyles = True + OptionsView.Caption = False + OptionsView.FilterBar = False + BuiltInReportLink = True + end + end + inherited cxStyleRepository1: TcxStyleRepository + object cxStyleDia: TcxStyle + AssignedValues = [svColor, svFont, svTextColor] + Color = cl3DLight + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + TextColor = clWindowText + end + object cxStyleTotal: TcxStyle + AssignedValues = [svFont] + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + end + object cxStyleImporte: TcxStyle + end + end + object cxEditRepository1: TcxEditRepository + Left = 32 + Top = 88 + object cxEditDia: TcxEditRepositoryTextItem + Properties.Alignment.Horz = taRightJustify + end + object cxEditImporte: TcxEditRepositoryCurrencyItem + Properties.Alignment.Horz = taRightJustify + Properties.DisplayFormat = ',0.## '#8364';-,0.## '#8364 + Properties.UseThousandSeparator = True + end + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.pas new file mode 100644 index 0000000..adcd752 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridResumenVentas.pas @@ -0,0 +1,144 @@ +unit uViewControGridResumenVentas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls, cxSpinEdit, uViewGrid, cxMemo, + cxEditRepositoryItems, uDAInterfaces; + +type + IViewControlGridResumenVentas = interface(IViewGrid) + ['{E6D7FF0F-7E64-4E8C-8844-CAC011A62CDE}'] + end; + + TfrViewControlGridResumenVentas = class(TfrViewGrid, IViewControlGridResumenVentas) + dxComponentPrinterLink1: TdxGridReportLink; + cxEditRepository1: TcxEditRepository; + cxEditDia: TcxEditRepositoryTextItem; + cxEditImporte: TcxEditRepositoryCurrencyItem; + cxStyleDia: TcxStyle; + cxStyleTotal: TcxStyle; + cxStyleImporte: TcxStyle; + procedure cxGridViewCustomDrawCell(Sender: TcxCustomGridTableView; + ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; + var ADone: Boolean); + procedure dsDataSourceStateChange(Sender: TObject); + private + procedure LimpiarGrid; + procedure GenerarGrid; + public + procedure Preview(Mes: String; Ano: String); overload; + procedure Print(Mes: String; Ano: String); overload; + end; + +implementation +{$R *.dfm} + +uses schVentasTerminadasClient_Intf, uViewGridBase; + +{ TfrViewControlGridResumenVentas } + +procedure TfrViewControlGridResumenVentas.Preview(Mes: String; Ano: String); +begin + inherited Preview; + dxComponentPrinterLink1.ReportTitle.Text := 'Ventas terminadas ' + Mes + ' de ' + Ano; + dxComponentPrinterLink1.Preview; +end; + +procedure TfrViewControlGridResumenVentas.cxGridViewCustomDrawCell( + Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); +begin + if not VarIsNull(AViewInfo.Value) then + if Pos('-', AViewInfo.Value) > 0 then + ACanvas.Canvas.Font.Color := $000000CC; +end; + +procedure TfrViewControlGridResumenVentas.dsDataSourceStateChange(Sender: TObject); +begin + if dsDataSource.State = dsInactive then + LimpiarGrid + else + GenerarGrid; +end; + +procedure TfrViewControlGridResumenVentas.GenerarGrid; +var + i, AuxPos, AuxLen: Integer; + +begin + cxGridView.BeginUpdate; + + try + cxGridView.DataController.CreateAllItems; + + for i := 0 to cxGridView.ColumnCount - 1 do + begin + case i of + 0: cxGridView.Columns[i].Visible := False; + 1: begin + cxGridView.Columns[i].Styles.Content := cxStyleDia; + cxGridView.Columns[i].Properties := cxEditDia.Properties; + cxGridView.Columns[i].HeaderAlignmentHorz := taRightJustify; + cxGridView.Columns[i].FooterAlignmentHorz := taRightJustify; + cxGridView.Columns[i].Width := 30; + cxGridView.Columns[i].SortIndex := 0; + cxGridView.Columns[i].SortOrder := soAscending; + + end; + else begin + cxGridView.Columns[i].Styles.Content := cxStyleImporte; + cxGridView.Columns[i].PropertiesClassName := 'TcxCurrencyEditProperties'; + cxGridView.Columns[i].Properties := cxEditImporte.Properties; + cxGridView.Columns[i].Summary.FooterKind := skSum; + cxGridView.Columns[i].Summary.FooterFormat := ',0.## €;-,0.## €'; + cxGridView.Columns[i].HeaderAlignmentHorz := taRightJustify; + cxGridView.Columns[i].FooterAlignmentHorz := taRightJustify; + cxGridView.Columns[i].Width := 175; + end; + end; + + if i = 2 then + begin + cxGridView.Columns[i].HeaderAlignmentHorz := taLeftJustify; + cxGridView.Columns[i].Styles.Content := cxStyleTotal; + end; + + //Dejamos de la descripción del centro lo más corta y representativa posible + AuxPos := Pos('INGLES', cxGridView.Columns[i].Caption); + if AuxPos > 0 then AuxPos := AuxPos + 6; + AuxLen := Length(cxGridView.Columns[i].Caption) - AuxPos; + cxGridView.Columns[i].Caption := Trim(Copy(cxGridView.Columns[i].Caption, AuxPos, AuxLen)); + end; + + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewControlGridResumenVentas.LimpiarGrid; +begin + cxGridView.BeginUpdate; + try + cxGridView.ClearItems; + finally + cxGridView.EndUpdate; + end; +end; + +procedure TfrViewControlGridResumenVentas.Print(Mes, Ano: String); +begin + inherited Print; + dxComponentPrinterLink1.ReportTitle.Text := 'Ventas terminadas ' + Mes + ' de ' + Ano; + dxComponentPrinterLink1.Print(True, Nil); +end; + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.dfm new file mode 100644 index 0000000..e0df930 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.dfm @@ -0,0 +1,280 @@ +inherited frViewControlGridVentasTerminadas: TfrViewControlGridVentasTerminadas + Width = 733 + Height = 572 + ExplicitWidth = 733 + ExplicitHeight = 572 + object cxGrid: TcxGrid [0] + Left = 0 + Top = 0 + Width = 733 + Height = 572 + Align = alClient + TabOrder = 0 + LookAndFeel.Kind = lfStandard + LookAndFeel.NativeStyle = True + object cxGridView: TcxGridDBTableView + NavigatorButtons.ConfirmDelete = False + FilterBox.CustomizeDialog = False + DataController.Filter.Options = [fcoCaseInsensitive] + DataController.Filter.OnChanged = cxGridViewDataControllerFilterChanged + DataController.Options = [dcoAnsiSort, dcoAssignGroupingValues, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText] + DataController.Summary.DefaultGroupSummaryItems = <> + DataController.Summary.FooterSummaryItems = <> + DataController.Summary.SummaryGroups = <> + DataController.Summary.OnAfterSummary = cxGridViewDataControllerSummaryAfterSummary + DataController.OnCompare = cxGridViewDataControllerCompare + DataController.OnGroupingChanged = cxGridViewDataControllerGroupingChanged + DataController.OnSortingChanged = cxGridViewDataControllerSortingChanged + OptionsBehavior.CellHints = True + OptionsCustomize.ColumnFiltering = False + OptionsCustomize.ColumnGrouping = False + OptionsCustomize.DataRowSizing = True + OptionsCustomize.GroupRowSizing = 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.GroupFooters = gfAlwaysVisible + OptionsView.HeaderEndEllipsis = True + Styles.FilterBox = cxStyleFilterBox + Styles.OnGetContentStyle = cxGridViewStylesGetContentStyle + OnColumnPosChanged = cxGridViewColumnPosChanged + OnColumnSizeChanged = cxGridViewColumnSizeChanged + object cxGridViewFECHA: TcxGridDBColumn + Caption = 'Fecha' + DataBinding.FieldName = 'FECHA' + end + object cxGridViewDIA: TcxGridDBColumn + Caption = 'Dia' + DataBinding.FieldName = 'DIA' + end + object cxGridViewDIASEMANA: TcxGridDBColumn + Caption = 'Dia de la semana' + DataBinding.FieldName = 'DIASEMANA' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewDIASEMANAPropertiesInitPopup + end + object cxGridViewMES: TcxGridDBColumn + Caption = 'Mes' + DataBinding.FieldName = 'MES' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewMESPropertiesInitPopup + end + object cxGridViewANO: TcxGridDBColumn + Caption = 'A'#241'o' + DataBinding.FieldName = 'ANO' + end + object cxGridViewCENTRO: TcxGridDBColumn + Caption = 'Centro' + DataBinding.FieldName = 'CENTRO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewCENTROPropertiesInitPopup + end + object cxGridViewVENDEDOR: TcxGridDBColumn + Caption = 'Vendedor' + DataBinding.FieldName = 'VENDEDOR' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewVENDEDORPropertiesInitPopup + end + object cxGridViewNUMTALON: TcxGridDBColumn + Caption = 'Tal'#243'n' + DataBinding.FieldName = 'NUMTALON' + end + object cxGridViewCODIGO: TcxGridDBColumn + Caption = 'Codigo' + DataBinding.FieldName = 'CODIGO' + end + object cxGridViewPRODUCTO: TcxGridDBColumn + Caption = 'Producto' + DataBinding.FieldName = 'PRODUCTO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewPRODUCTOPropertiesInitPopup + end + object cxGridViewGRUPOPRODUCTO: TcxGridDBColumn + Caption = 'Grupo' + DataBinding.FieldName = 'GRUPOPRODUCTO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewGRUPOPRODUCTOPropertiesInitPopup + end + object cxGridViewTIPOPRODUCTO: TcxGridDBColumn + Caption = 'Tipo' + DataBinding.FieldName = 'TIPOPRODUCTO' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewTIPOPRODUCTOPropertiesInitPopup + end + object cxGridViewCOLECCION: TcxGridDBColumn + Caption = 'Coleccion' + DataBinding.FieldName = 'COLECCION' + PropertiesClassName = 'TcxComboBoxProperties' + Properties.OnInitPopup = cxGridViewCOLECCIONPropertiesInitPopup + end + object cxGridViewCOLOR: TcxGridDBColumn + Caption = 'Color' + DataBinding.FieldName = 'COLOR' + end + object cxGridViewTALLA: TcxGridDBColumn + Caption = 'Talla' + DataBinding.FieldName = 'TALLA' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTALLA38: TcxGridDBColumn + Caption = '38/S' + DataBinding.FieldName = 'TALLA38' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTALLA40: TcxGridDBColumn + Caption = '40/M' + DataBinding.FieldName = 'TALLA40' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTALLA42: TcxGridDBColumn + Caption = '42/L' + DataBinding.FieldName = 'TALLA42' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTALLA44: TcxGridDBColumn + Caption = '44/XL' + DataBinding.FieldName = 'TALLA44' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTALLA46: TcxGridDBColumn + Caption = '46' + DataBinding.FieldName = 'TALLA46' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTALLA48: TcxGridDBColumn + Caption = '48' + DataBinding.FieldName = 'TALLA48' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVTATERMDEV: TcxGridDBColumn + Caption = 'Vta. Term/Dev' + DataBinding.FieldName = 'VTATERMDEV' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVTAFINALRESC: TcxGridDBColumn + Caption = 'Vta. Final/Resc' + DataBinding.FieldName = 'VTAFINALRESC' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVENTAS: TcxGridDBColumn + Caption = 'Ventas' + DataBinding.FieldName = 'VENTAS' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewDEVOLUCIONES: TcxGridDBColumn + Caption = 'Devoluciones' + DataBinding.FieldName = 'DEVOLUCIONES' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewTOTAL: TcxGridDBColumn + Caption = 'Total' + DataBinding.FieldName = 'TOTAL' + PropertiesClassName = 'TcxSpinEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVALTERMDEV: TcxGridDBColumn + Caption = 'Val. Term/Dev' + DataBinding.FieldName = 'VALTERMDEV' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewVALFINALRESC: TcxGridDBColumn + Caption = 'Val. Final/Resc' + DataBinding.FieldName = 'VALFINALRESC' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + FooterAlignmentHorz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewIMPVEN: TcxGridDBColumn + Caption = 'Imp. ventas' + DataBinding.FieldName = 'VALVEN' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewIMPDEV: TcxGridDBColumn + Caption = 'Imp. devoluciones' + DataBinding.FieldName = 'VALDEV' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + object cxGridViewIMPTOT: TcxGridDBColumn + Caption = 'Imp. total' + DataBinding.FieldName = 'VALTOT' + PropertiesClassName = 'TcxCurrencyEditProperties' + Properties.Alignment.Horz = taRightJustify + HeaderAlignmentHorz = taRightJustify + end + end + object cxGridLevel: TcxGridLevel + GridView = cxGridView + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxPrinterLinkcxGrid: TdxGridReportLink + Component = cxGrid + BuiltInReportLink = True + end + end + object cxStyleRepository1: TcxStyleRepository + Left = 16 + Top = 48 + object cxStyleRed: TcxStyle + AssignedValues = [svTextColor] + TextColor = clRed + end + object cxStyleBlue: TcxStyle + AssignedValues = [svTextColor] + TextColor = clBlue + end + object cxStyleFilterBox: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clInfoBk + TextColor = clWindowText + end + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.pas new file mode 100644 index 0000000..57a3752 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControGridlVentasTerminadas.pas @@ -0,0 +1,385 @@ +unit uViewControGridlVentasTerminadas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlGrid, DB, uDADataTable, cxStyles, cxCustomData, + cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, + cxTextEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, + cxCurrencyEdit, cxCalendar, dxPSGlbl, dxPSUtl, dxPrnPg, dxBkgnd, dxWrap, + dxPrnDev, dxPSEngn, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, dxPSCore, dxPScxCommon, dxPScxGridLnk, dxPgsDlg, + cxDropDownEdit, StdCtrls, cxSpinEdit; + +type + IViewControlGridVentasTerminadas = interface(IViewControlGrid) + ['{95B6857B-0F06-470B-8099-CDB07017B63F}'] + end; + + TfrViewControlGridVentasTerminadas = class(TfrViewControlGrid, IViewControlGridVentasTerminadas) + cxGrid: TcxGrid; + cxGridView: TcxGridDBTableView; + cxGridLevel: TcxGridLevel; + cxStyleRepository1: TcxStyleRepository; + cxStyleRed: TcxStyle; + cxStyleBlue: TcxStyle; + cxStyleFilterBox: TcxStyle; + cxGridViewFECHA: TcxGridDBColumn; + cxGridViewDIA: TcxGridDBColumn; + cxGridViewDIASEMANA: TcxGridDBColumn; + cxGridViewMES: TcxGridDBColumn; + cxGridViewANO: TcxGridDBColumn; + cxGridViewCENTRO: TcxGridDBColumn; + cxGridViewVENDEDOR: TcxGridDBColumn; + cxGridViewCODIGO: TcxGridDBColumn; + cxGridViewPRODUCTO: TcxGridDBColumn; + cxGridViewGRUPOPRODUCTO: TcxGridDBColumn; + cxGridViewTIPOPRODUCTO: TcxGridDBColumn; + cxGridViewCOLECCION: TcxGridDBColumn; + cxGridViewCOLOR: TcxGridDBColumn; + cxGridViewTALLA: TcxGridDBColumn; + cxGridViewTALLA38: TcxGridDBColumn; + cxGridViewTALLA40: TcxGridDBColumn; + cxGridViewTALLA42: TcxGridDBColumn; + cxGridViewTALLA44: TcxGridDBColumn; + cxGridViewTALLA46: TcxGridDBColumn; + cxGridViewTALLA48: TcxGridDBColumn; + cxGridViewVENTAS: TcxGridDBColumn; + cxGridViewDEVOLUCIONES: TcxGridDBColumn; + cxGridViewTOTAL: TcxGridDBColumn; + cxGridViewIMPVEN: TcxGridDBColumn; + cxGridViewIMPDEV: TcxGridDBColumn; + cxGridViewIMPTOT: TcxGridDBColumn; + cxGridViewNUMTALON: TcxGridDBColumn; + cxGridViewVTATERMDEV: TcxGridDBColumn; + cxGridViewVTAFINALRESC: TcxGridDBColumn; + cxGridViewVALTERMDEV: TcxGridDBColumn; + cxGridViewVALFINALRESC: TcxGridDBColumn; + procedure cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); + procedure cxGridViewColumnPosChanged(Sender: TcxGridTableView; + AColumn: TcxGridColumn); + procedure cxGridViewColumnSizeChanged(Sender: TcxGridTableView; + AColumn: TcxGridColumn); + procedure cxGridViewDataControllerGroupingChanged(Sender: TObject); + procedure cxGridViewDataControllerSortingChanged(Sender: TObject); + procedure cxGridViewDataControllerSummaryAfterSummary( + ASender: TcxDataSummary); + procedure cxGridViewCENTROPropertiesInitPopup(Sender: TObject); + procedure cxGridViewVENDEDORPropertiesInitPopup(Sender: TObject); + procedure cxGridViewPRODUCTOPropertiesInitPopup(Sender: TObject); + procedure cxGridViewDataControllerFilterChanged(Sender: TObject); + procedure cxGridViewDIASEMANAPropertiesInitPopup(Sender: TObject); + procedure cxGridViewMESPropertiesInitPopup(Sender: TObject); + procedure cxGridViewGRUPOPRODUCTOPropertiesInitPopup(Sender: TObject); + procedure cxGridViewTIPOPRODUCTOPropertiesInitPopup(Sender: TObject); + procedure cxGridViewCOLECCIONPropertiesInitPopup(Sender: TObject); + procedure cxGridViewDataControllerCompare( + ADataController: TcxCustomDataController; ARecordIndex1, + ARecordIndex2, AItemIndex: Integer; const V1, V2: Variant; + var Compare: Integer); + protected + procedure ActivarEventos; override; + procedure DesactivarEventos; override; + function GetFocusedView : TcxGridDBTableView; override; + public + procedure Refresh; override; + constructor Create(AOwner: TComponent); override; + end; + +implementation + +uses + cxVariants, uDateUtils; + +{$R *.dfm} + +{ TfrViewControlGridVentasTerminadas } + +function TfrViewControlGridVentasTerminadas.GetFocusedView: TcxGridDBTableView; +begin + Result := cxGridView; +end; + +procedure TfrViewControlGridVentasTerminadas.Refresh; +var + FocusedRow, TopRow : Integer; +begin + inherited; + { Refrescar las filas del grid a partir del dataset y colocar la fila + seleccionada donde estaba } + if FocusedView.DataController.DataSource.DataSet.State = dsBrowse then + begin + TopRow := FocusedView.Controller.TopRowIndex; + FocusedRow := FocusedView.DataController.FocusedRowIndex; + + FocusedView.DataController.UpdateItems(False); // <- Refresco + + FocusedView.DataController.FocusedRowIndex := FocusedRow; + FocusedView.Controller.TopRowIndex := TopRow; + + { Esta chapuzilla es para que se rellenen los combobox de los filtros + por que el cxFilterControl no coge los valores la 1ª vez si los + combos están vacíos. } + TcxComboBoxProperties(cxGridViewPRODUCTO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewCENTRO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewVENDEDOR.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewDIASEMANA.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewMES.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewGRUPOPRODUCTO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewTIPOPRODUCTO.Properties).OnInitPopup(nil); + TcxComboBoxProperties(cxGridViewCOLECCION.Properties).OnInitPopup(nil); + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewStylesGetContentStyle( + Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; + AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); +var + AColumn : TcxGridDBColumn; + AFecha : TDateTime; +begin + inherited; + + // La fila es la cabecera de un grupo +{ if ARecord.Expandable then + Exit; + + AColumn := FocusedView.GetColumnByFieldName('FECHA'); + if Assigned(AColumn) and (AColumn.Visible) then + begin + try + AFecha := VarToDateTime(ARecord.Values[AColumn.Index]); + except + on Exception do + ShowMessage(VarToStr(ARecord.Values[AColumn.Index])); + end; + + if DaysBetween(Now, AFecha) > 14 then + AStyle := cxStyleRed + else + if DaysBetween(Now, AFecha) > 7 then + AStyle := cxStyleBlue + end; } +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewColumnPosChanged( + Sender: TcxGridTableView; AColumn: TcxGridColumn); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewColumnSizeChanged( + Sender: TcxGridTableView; AColumn: TcxGridColumn); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewDataControllerGroupingChanged( + Sender: TObject); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewDataControllerSortingChanged( + Sender: TObject); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewDataControllerSummaryAfterSummary( + ASender: TcxDataSummary); +begin + inherited; + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewCENTROPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewCENTRO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewCENTRO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewVENDEDORPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewVENDEDOR.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewVENDEDOR.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewPRODUCTOPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewPRODUCTO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewPRODUCTO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewDataControllerFilterChanged( + Sender: TObject); +begin + if Assigned(FOnFilterChanged) then + FOnFilterChanged(Self); +end; + +constructor TfrViewControlGridVentasTerminadas.Create(AOwner: TComponent); +begin + inherited; +end; + +procedure TfrViewControlGridVentasTerminadas.ActivarEventos; +begin + inherited; + with cxGridView do + begin + DataController.Filter.OnChanged := cxGridViewDataControllerFilterChanged; + DataController.Summary.OnAfterSummary := cxGridViewDataControllerSummaryAfterSummary; + DataController.OnGroupingChanged := cxGridViewDataControllerGroupingChanged; + DataController.OnSortingChanged := cxGridViewDataControllerSortingChanged; + OnColumnPosChanged := cxGridViewColumnPosChanged; + OnColumnSizeChanged := cxGridViewColumnSizeChanged; + end; +end; + +procedure TfrViewControlGridVentasTerminadas.DesactivarEventos; +begin + inherited; + with cxGridView do + begin + DataController.Filter.OnChanged := nil; + DataController.Summary.OnAfterSummary := nil; + DataController.OnGroupingChanged := nil; + DataController.OnSortingChanged := nil; + OnColumnPosChanged := nil; + OnColumnSizeChanged := nil; + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewDIASEMANAPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewDIASEMANA.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewDIASEMANA.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewMESPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewMES.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewMES.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewGRUPOPRODUCTOPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewGRUPOPRODUCTO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewGRUPOPRODUCTO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewTIPOPRODUCTOPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewTIPOPRODUCTO.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewTIPOPRODUCTO.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewCOLECCIONPropertiesInitPopup( + Sender: TObject); +begin + inherited; + with TcxComboBoxProperties(cxGridViewCOLECCION.Properties) do + begin + Items.Clear; + Items.AddStrings(FilterValueList[cxGridViewCOLECCION.Index]); + Items.Delete(1); // "Personalizado" + Items.Delete(0); // "Todos" + end; +end; + +procedure TfrViewControlGridVentasTerminadas.cxGridViewDataControllerCompare( + ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, + AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); +var + AValue1, + AValue2 : Variant; +begin + // Por defecto + Compare := VarCompare(V1, V2); + try + if (AItemIndex = cxGridViewDIASEMANA.Index) then + begin + AValue1 := ADataController.Values[ARecordIndex1, cxGridViewDIASEMANA.Index]; + AValue2 := ADataController.Values[ARecordIndex2, cxGridViewDIASEMANA.Index]; + if (not VarIsNull(AValue1)) and (not VarIsNull(AValue2)) then + Compare := VarCompare(NumberDayOfTheWeek(AValue1), NumberDayOfTheWeek(AValue2)) + end + else begin + if (AItemIndex = cxGridViewMES.Index) then + begin + AValue1 := ADataController.Values[ARecordIndex1, cxGridViewMES.Index]; + AValue2 := ADataController.Values[ARecordIndex2, cxGridViewMES.Index]; + if (not VarIsNull(AValue1)) and (not VarIsNull(AValue2)) then + Compare := VarCompare(NumberMonthOfTheYear(AValue1), NumberMonthOfTheYear(AValue2)) + end + end; + except + //ShowMessage(VarToStr(ARecordIndex1) + ' ' + VarToStr(ARecordIndex1)); + end; +end; + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.dfm new file mode 100644 index 0000000..455ce2d --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.dfm @@ -0,0 +1,273 @@ +inherited frViewControlVentasTerminadas: TfrViewControlVentasTerminadas + Height = 608 + ExplicitHeight = 608 + inherited TBXMultiDock1: TTBXMultiDock + Width = 232 + Height = 608 + ExplicitWidth = 232 + ExplicitHeight = 608 + inherited pnlParametros: TTBXDockablePanel + DockedWidth = 228 + ExplicitWidth = 232 + ExplicitHeight = 289 + inherited TBXAlignmentPanel2: TTBXAlignmentPanel + Width = 228 + Height = 68 + ExplicitWidth = 228 + ExplicitHeight = 68 + inherited TBXLink1: TTBXLink + Width = 220 + Height = 20 + Action = actPeriodoFechas + ImageIndex = 4 + Images = SmallImages + ExplicitWidth = 220 + ExplicitHeight = 20 + end + inherited TBXLink5: TTBXLink + Top = 24 + Width = 220 + ExplicitTop = 24 + ExplicitWidth = 220 + end + inherited TBXLink2: TTBXLink + Top = 44 + Width = 220 + ExplicitTop = 44 + ExplicitWidth = 220 + end + end + inherited pcParametros: TPageControl + Top = 68 + Width = 228 + ExplicitTop = 68 + ExplicitWidth = 228 + ExplicitHeight = 171 + inherited TabSheet5: TTabSheet + ExplicitLeft = 4 + ExplicitTop = 6 + ExplicitWidth = 220 + ExplicitHeight = 161 + inline frViewPeriodoFechas1: TfrViewPeriodoFechas + Left = 0 + Top = 0 + Width = 220 + Height = 161 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 220 + ExplicitHeight = 161 + inherited TBXLabel1: TTBXLabel + Width = 220 + ExplicitWidth = 220 + end + inherited TBXLabel2: TTBXLabel + Width = 220 + ExplicitWidth = 220 + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 220 + ExplicitWidth = 220 + inherited cbPeriodo: TcxComboBox + ExplicitWidth = 176 + Width = 176 + end + end + inherited TBXAlignmentPanel2: TTBXAlignmentPanel + Width = 220 + ExplicitWidth = 220 + inherited Label2: TLabel + Width = 29 + ExplicitWidth = 29 + end + end + end + end + inherited tsColumnas: TTabSheet + ExplicitWidth = 220 + ExplicitHeight = 161 + inherited frViewColumnas1: TfrViewColumnas + Width = 220 + ExplicitWidth = 220 + ExplicitHeight = 161 + inherited lbColumnas: TcxCheckListBox + Width = 220 + ExplicitWidth = 220 + ExplicitHeight = 132 + end + inherited TBXLabel1: TTBXLabel + Width = 220 + ExplicitWidth = 220 + end + end + end + inherited tsAgrupacion: TTabSheet + ExplicitWidth = 220 + inherited frViewAgrupaciones1: TfrViewAgrupaciones + Width = 220 + ExplicitWidth = 220 + inherited TBXLabel1: TTBXLabel + Width = 220 + ExplicitWidth = 220 + end + inherited pnlAgrupaciones: TTBXAlignmentPanel + Width = 220 + ExplicitWidth = 220 + DesignSize = ( + 220 + 77) + end + end + end + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Top = 239 + Width = 228 + ExplicitTop = 239 + ExplicitWidth = 228 + end + end + inherited pnlTareas: TTBXDockablePanel + Top = 289 + DockedWidth = 228 + DockPos = 289 + Visible = False + ExplicitTop = 289 + ExplicitWidth = 232 + inherited TBXPageScroller1: TTBXPageScroller + Width = 228 + ExplicitWidth = 228 + ExplicitHeight = 283 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 228 + ExplicitWidth = 228 + inherited bFiltros: TTBXLink + Width = 220 + ExplicitWidth = 220 + end + inherited bSumarios: TTBXLink + Width = 220 + ExplicitWidth = 220 + end + end + inherited pcTareas: TPageControl + Width = 228 + ExplicitWidth = 228 + ExplicitHeight = 235 + inherited tsSumarios: TTabSheet + ExplicitWidth = 220 + inherited frViewSumarios1: TfrViewSumarios + Width = 220 + ExplicitWidth = 220 + inherited TBXLabel1: TTBXLabel + Width = 220 + ExplicitWidth = 220 + end + inherited vgSumarios: TcxVerticalGrid + Width = 220 + ExplicitWidth = 220 + end + end + end + inherited tsFiltros: TTabSheet + ExplicitWidth = 220 + inherited frViewFiltros1: TfrViewFiltros + Width = 220 + ExplicitWidth = 220 + inherited TBXLabel1: TTBXLabel + Width = 220 + ExplicitWidth = 220 + end + inherited cxFilterControl1: TcxFilterControl + Width = 220 + ExplicitWidth = 220 + ExplicitHeight = 166 + end + inherited TBXAlignmentPanel3: TTBXAlignmentPanel + Width = 220 + ExplicitTop = 195 + ExplicitWidth = 220 + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 136 + Top = 64 + end + end + end + end + end + end + end + inline frViewControlGridVentasTerminadas1: TfrViewControlGridVentasTerminadas [1] + Left = 232 + Top = 0 + Width = 467 + Height = 608 + Align = alClient + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 1 + ReadOnly = False + ExplicitLeft = 232 + ExplicitWidth = 467 + ExplicitHeight = 608 + inherited cxGrid: TcxGrid + Width = 467 + Height = 608 + ExplicitWidth = 467 + ExplicitHeight = 608 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewTALLA38: TcxGridDBColumn + Caption = '38/S' + end + inherited cxGridViewTALLA40: TcxGridDBColumn + Caption = '40/M' + end + inherited cxGridViewTALLA42: TcxGridDBColumn + Caption = '42/L' + end + inherited cxGridViewTALLA44: TcxGridDBColumn + Caption = '44/XL' + end + end + end + inherited dxPrintStyleManager1: TdxPrintStyleManager + inherited dxPrintStyleManager1Style1: TdxPSPrintStyle + BuiltInStyle = True + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxPrinterLinkcxGrid: TdxGridReportLink + BuiltInReportLink = True + end + end + end + inherited SmallImages: TPngImageList [2] + end + inherited LargeImages: TPngImageList [3] + end + inherited EditorActionList: TActionList + Left = 248 + Top = 72 + inherited actRefrescar: TAction + OnExecute = actRefrescarExecute + end + object actPeriodoFechas: TAction + Category = 'Tareas' + Caption = 'Periodo de fechas' + ImageIndex = 4 + OnExecute = actPeriodoFechasExecute + end + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.pas new file mode 100644 index 0000000..efa6b59 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlVentasTerminadas.pas @@ -0,0 +1,148 @@ +unit uViewControlVentasTerminadas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlBase, ActnList, ImgList, PngImageList, uViewGrid, + uViewControlGrid, uViewSumarios, TBXDkPanels, StdCtrls, + uViewAgrupaciones, uCustomView, uViewBase, uViewColumnas, ComCtrls, + TB2Dock, uViewParametrosControlGrid, uBizControlesBase, cxStyles, + cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, + cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, + cxTextEdit, uViewFiltros, + uViewControGridlVentasTerminadas, uViewPeriodoFechas; + +type + IViewControlVentasTerminadas = interface(IViewControlBase) + ['{B8B9105B-E833-4E7D-BA36-EB9A7EBDCE69}'] + end; + + TfrViewControlVentasTerminadas = class(TfrViewControlBase, IViewControlVentasTerminadas) + frViewPeriodoFechas1: TfrViewPeriodoFechas; + actPeriodoFechas: TAction; + frViewControlGridVentasTerminadas1: TfrViewControlGridVentasTerminadas; + procedure actRefrescarExecute(Sender: TObject); + procedure actPeriodoFechasExecute(Sender: TObject); + protected + FModificado : Boolean; + procedure OnViewControlGridChanged(Sender : TObject); + procedure OnFilterChanged(Sender : TObject); + procedure ActivarTarea(const ATarea: Integer); override; + public + constructor Create(AOwner: TComponent); override; + procedure Refresh; override; + end; + +implementation + +uses + uDataModuleVentasTerminadas, uBizControlVentasTerminadas, uBizVentasTerminadas; + +const + PERIODO = 0; + +{$R *.dfm} + +{ TfrViewControlVentasTerminadas } + +constructor TfrViewControlVentasTerminadas.Create(AOwner: TComponent); +begin + inherited; + frViewControlGridVentasTerminadas1.OnViewChanged := OnViewControlGridChanged; + frViewControlGridVentasTerminadas1.OnFilterChanged := OnFilterChanged; + frViewColumnas1.ViewControlGrid := frViewControlGridVentasTerminadas1; + frViewAgrupaciones1.ViewControlGrid := frViewControlGridVentasTerminadas1; + frViewSumarios1.ViewControlGrid := frViewControlGridVentasTerminadas1; + frViewFiltros1.ViewControlGrid := frViewControlGridVentasTerminadas1; + pcParametros.ActivePage := TabSheet5; +end; + +procedure TfrViewControlVentasTerminadas.Refresh; +var + AColumns : TStringList; +begin + inherited; + ShowHourglassCursor; + actRefrescar.Enabled := False; + + frViewControlGridVentasTerminadas1.OnViewChanged := nil; + frViewControlGridVentasTerminadas1.OnFilterChanged := nil; + + try + // Calcular las columnas a pedir al servidor + AColumns := frViewColumnas1.GetCheckedColumns; + AColumns.Duplicates := dupIgnore; + AColumns.AddStrings(frViewAgrupaciones1.GetAgrupaciones); + + (Control as IBizControlVentasTerminadas).Items.VisibleColumns := AColumns.CommaText; + with (Control as IBizControlVentasTerminadas).Items.DataTable do + begin + DisableControls; + try + Active := False; + LoadSchema; + ParamByName('FECHAINI').AsDateTime := frViewPeriodoFechas1.FechaInicial; + ParamByName('FECHAFIN').AsDateTime := frViewPeriodoFechas1.FechaFinal; + Active := True; + + frViewColumnas1.Execute; + frViewAgrupaciones1.Execute; + frViewSumarios1.Refresh; + frViewFiltros1.Refresh; + pnlTareas.Visible := True; + + if Assigned(FOnViewChanged) then + FOnViewChanged(Self); + finally + EnableControls; + frViewControlGridVentasTerminadas1.Refresh; + frViewControlGridVentasTerminadas1.ExpandirTodo; + frViewControlGridVentasTerminadas1.GotoFirst; + end; + end; + finally + FreeAndNil(AColumns); + frViewControlGridVentasTerminadas1.OnViewChanged := OnViewControlGridChanged; + frViewControlGridVentasTerminadas1.OnFilterChanged := OnFilterChanged; + actRefrescar.Enabled := True; + HideHourglassCursor; + end; +end; + +procedure TfrViewControlVentasTerminadas.actRefrescarExecute(Sender: TObject); +begin + inherited; + Refresh; +end; + +procedure TfrViewControlVentasTerminadas.OnViewControlGridChanged( + Sender: TObject); +begin + if Assigned(Self.OnViewChanged) then + Self.OnViewChanged(Self); +end; + +procedure TfrViewControlVentasTerminadas.OnFilterChanged(Sender: TObject); +begin + frViewFiltros1.Refresh; +end; + +procedure TfrViewControlVentasTerminadas.actPeriodoFechasExecute( + Sender: TObject); +begin + inherited; + ActivarTarea(PERIODO); +end; + +procedure TfrViewControlVentasTerminadas.ActivarTarea( + const ATarea: Integer); +begin + inherited; + case ATarea of + PERIODO : pcParametros.ActivePage := TabSheet5; + end; +end; + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlesVentasTerminadas.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlesVentasTerminadas.dfm new file mode 100644 index 0000000..65e3160 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlesVentasTerminadas.dfm @@ -0,0 +1,11 @@ +inherited frViewControlesVentasTerminadas: TfrViewControlesVentasTerminadas + inherited EasyListview: TEasyListview + Header.Columns.Items = { + 0400000002000000FFFECE000400000000110001000001000000000100013200 + 000001000000060000004E006F006D0062007200650000000000000000000000 + 0000FFFECE000400000000110001000001010000000000013200000001000000 + 0B000000440065007300630072006900700063006900F3006E00000000000000 + 000000000000} + Header.Visible = True + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlesVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlesVentasTerminadas.pas new file mode 100644 index 0000000..c031e43 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Cliente/uViewControlesVentasTerminadas.pas @@ -0,0 +1,24 @@ +unit uViewControlesVentasTerminadas; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewControlesBase, cxGraphics, cxCustomData, cxStyles, cxTL, + cxImageComboBox, cxMaskEdit, cxTextEdit, DB, uDADataTable, ImgList, + PngImageList, cxInplaceContainer, cxDBTL, cxControls, cxTLData, + MPCommonObjects, MPCommonUtilities, EasyListview, uDAInterfaces; + +type + IViewControlesVentasTerminadas = interface(IViewControlesBase) + ['{0AFCCF6C-F5FB-4E88-9E8C-5B27D84F0D56}'] + end; + + TfrViewControlesVentasTerminadas = class(TfrViewControlesBase, IViewControlesVentasTerminadas) + end; + +implementation + +{$R *.dfm} + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Reglas/schVentasTerminadasClient_Intf.pas b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/schVentasTerminadasClient_Intf.pas new file mode 100644 index 0000000..1d77712 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/schVentasTerminadasClient_Intf.pas @@ -0,0 +1,1331 @@ +unit schVentasTerminadasClient_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, FmtBCD, uROXMLIntf; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_VentasTerminadasCrossTab = '{E35531EF-55AE-4A00-823F-5B7AD2AC3170}'; + RID_VentasTerminadas = '{D098E936-4B28-485D-8B90-913C71342300}'; + + { Data table names } + nme_VentasTerminadasCrossTab = 'VentasTerminadasCrossTab'; + nme_VentasTerminadas = 'VentasTerminadas'; + + { VentasTerminadasCrossTab fields } + + { VentasTerminadasCrossTab field indexes } + + { VentasTerminadas fields } + fld_VentasTerminadasNUMINF = 'NUMINF'; + fld_VentasTerminadasCLAVE1 = 'CLAVE1'; + fld_VentasTerminadasCLAVE2 = 'CLAVE2'; + fld_VentasTerminadasCLAVE3 = 'CLAVE3'; + fld_VentasTerminadasFECHA = 'FECHA'; + fld_VentasTerminadasDIA = 'DIA'; + fld_VentasTerminadasDIASEMANA = 'DIASEMANA'; + fld_VentasTerminadasMES = 'MES'; + fld_VentasTerminadasANO = 'ANO'; + fld_VentasTerminadasCENTRO = 'CENTRO'; + fld_VentasTerminadasVENDEDOR = 'VENDEDOR'; + fld_VentasTerminadasNUMTALON = 'NUMTALON'; + fld_VentasTerminadasCODIGO = 'CODIGO'; + fld_VentasTerminadasPRODUCTO = 'PRODUCTO'; + fld_VentasTerminadasGRUPOPRODUCTO = 'GRUPOPRODUCTO'; + fld_VentasTerminadasTIPOPRODUCTO = 'TIPOPRODUCTO'; + fld_VentasTerminadasCOLECCION = 'COLECCION'; + fld_VentasTerminadasCOLOR = 'COLOR'; + fld_VentasTerminadasTALLA = 'TALLA'; + fld_VentasTerminadasTALLA38 = 'TALLA38'; + fld_VentasTerminadasTALLA40 = 'TALLA40'; + fld_VentasTerminadasTALLA42 = 'TALLA42'; + fld_VentasTerminadasTALLA44 = 'TALLA44'; + fld_VentasTerminadasTALLA46 = 'TALLA46'; + fld_VentasTerminadasTALLA48 = 'TALLA48'; + fld_VentasTerminadasVTATERMDEV = 'VTATERMDEV'; + fld_VentasTerminadasVTAFINALRESC = 'VTAFINALRESC'; + fld_VentasTerminadasVENTAS = 'VENTAS'; + fld_VentasTerminadasDEVOLUCIONES = 'DEVOLUCIONES'; + fld_VentasTerminadasTOTAL = 'TOTAL'; + fld_VentasTerminadasVALTERMDEV = 'VALTERMDEV'; + fld_VentasTerminadasVALFINALRESC = 'VALFINALRESC'; + fld_VentasTerminadasVALVEN = 'VALVEN'; + fld_VentasTerminadasVALDEV = 'VALDEV'; + fld_VentasTerminadasVALTOT = 'VALTOT'; + + { VentasTerminadas field indexes } + idx_VentasTerminadasNUMINF = 0; + idx_VentasTerminadasCLAVE1 = 1; + idx_VentasTerminadasCLAVE2 = 2; + idx_VentasTerminadasCLAVE3 = 3; + idx_VentasTerminadasFECHA = 4; + idx_VentasTerminadasDIA = 5; + idx_VentasTerminadasDIASEMANA = 6; + idx_VentasTerminadasMES = 7; + idx_VentasTerminadasANO = 8; + idx_VentasTerminadasCENTRO = 9; + idx_VentasTerminadasVENDEDOR = 10; + idx_VentasTerminadasNUMTALON = 11; + idx_VentasTerminadasCODIGO = 12; + idx_VentasTerminadasPRODUCTO = 13; + idx_VentasTerminadasGRUPOPRODUCTO = 14; + idx_VentasTerminadasTIPOPRODUCTO = 15; + idx_VentasTerminadasCOLECCION = 16; + idx_VentasTerminadasCOLOR = 17; + idx_VentasTerminadasTALLA = 18; + idx_VentasTerminadasTALLA38 = 19; + idx_VentasTerminadasTALLA40 = 20; + idx_VentasTerminadasTALLA42 = 21; + idx_VentasTerminadasTALLA44 = 22; + idx_VentasTerminadasTALLA46 = 23; + idx_VentasTerminadasTALLA48 = 24; + idx_VentasTerminadasVTATERMDEV = 25; + idx_VentasTerminadasVTAFINALRESC = 26; + idx_VentasTerminadasVENTAS = 27; + idx_VentasTerminadasDEVOLUCIONES = 28; + idx_VentasTerminadasTOTAL = 29; + idx_VentasTerminadasVALTERMDEV = 30; + idx_VentasTerminadasVALFINALRESC = 31; + idx_VentasTerminadasVALVEN = 32; + idx_VentasTerminadasVALDEV = 33; + idx_VentasTerminadasVALTOT = 34; + +type + { IVentasTerminadasCrossTab } + IVentasTerminadasCrossTab = interface(IDAStronglyTypedDataTable) + ['{7F43FB66-B68A-4E2E-BF67-E314FDE24117}'] + { Property getters and setters } + + + { Properties } + end; + + { TVentasTerminadasCrossTabDataTableRules } + TVentasTerminadasCrossTabDataTableRules = class(TDADataTableRules, IVentasTerminadasCrossTab) + private + protected + { Property getters and setters } + + { Properties } + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IVentasTerminadas } + IVentasTerminadas = interface(IDAStronglyTypedDataTable) + ['{6861A381-9EBD-4816-8EAC-5B2EDB0ED191}'] + { Property getters and setters } + function GetNUMINFValue: String; + procedure SetNUMINFValue(const aValue: String); + function GetNUMINFIsNull: Boolean; + procedure SetNUMINFIsNull(const aValue: Boolean); + function GetCLAVE1Value: TBcd; + procedure SetCLAVE1Value(const aValue: TBcd); + function GetCLAVE1IsNull: Boolean; + procedure SetCLAVE1IsNull(const aValue: Boolean); + function GetCLAVE2Value: Integer; + procedure SetCLAVE2Value(const aValue: Integer); + function GetCLAVE2IsNull: Boolean; + procedure SetCLAVE2IsNull(const aValue: Boolean); + function GetCLAVE3Value: Integer; + procedure SetCLAVE3Value(const aValue: Integer); + function GetCLAVE3IsNull: Boolean; + procedure SetCLAVE3IsNull(const aValue: Boolean); + function GetFECHAValue: DateTime; + procedure SetFECHAValue(const aValue: DateTime); + function GetFECHAIsNull: Boolean; + procedure SetFECHAIsNull(const aValue: Boolean); + function GetDIAValue: Integer; + procedure SetDIAValue(const aValue: Integer); + function GetDIAIsNull: Boolean; + procedure SetDIAIsNull(const aValue: Boolean); + function GetDIASEMANAValue: WideString; + procedure SetDIASEMANAValue(const aValue: WideString); + function GetDIASEMANAIsNull: Boolean; + procedure SetDIASEMANAIsNull(const aValue: Boolean); + function GetMESValue: WideString; + procedure SetMESValue(const aValue: WideString); + function GetMESIsNull: Boolean; + procedure SetMESIsNull(const aValue: Boolean); + function GetANOValue: Integer; + procedure SetANOValue(const aValue: Integer); + function GetANOIsNull: Boolean; + procedure SetANOIsNull(const aValue: Boolean); + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetCENTROIsNull: Boolean; + procedure SetCENTROIsNull(const aValue: Boolean); + function GetVENDEDORValue: String; + procedure SetVENDEDORValue(const aValue: String); + function GetVENDEDORIsNull: Boolean; + procedure SetVENDEDORIsNull(const aValue: Boolean); + function GetNUMTALONValue: String; + procedure SetNUMTALONValue(const aValue: String); + function GetNUMTALONIsNull: Boolean; + procedure SetNUMTALONIsNull(const aValue: Boolean); + function GetCODIGOValue: String; + procedure SetCODIGOValue(const aValue: String); + function GetCODIGOIsNull: Boolean; + procedure SetCODIGOIsNull(const aValue: Boolean); + function GetPRODUCTOValue: String; + procedure SetPRODUCTOValue(const aValue: String); + function GetPRODUCTOIsNull: Boolean; + procedure SetPRODUCTOIsNull(const aValue: Boolean); + function GetGRUPOPRODUCTOValue: String; + procedure SetGRUPOPRODUCTOValue(const aValue: String); + function GetGRUPOPRODUCTOIsNull: Boolean; + procedure SetGRUPOPRODUCTOIsNull(const aValue: Boolean); + function GetTIPOPRODUCTOValue: String; + procedure SetTIPOPRODUCTOValue(const aValue: String); + function GetTIPOPRODUCTOIsNull: Boolean; + procedure SetTIPOPRODUCTOIsNull(const aValue: Boolean); + function GetCOLECCIONValue: String; + procedure SetCOLECCIONValue(const aValue: String); + function GetCOLECCIONIsNull: Boolean; + procedure SetCOLECCIONIsNull(const aValue: Boolean); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetCOLORIsNull: Boolean; + procedure SetCOLORIsNull(const aValue: Boolean); + function GetTALLAValue: String; + procedure SetTALLAValue(const aValue: String); + function GetTALLAIsNull: Boolean; + procedure SetTALLAIsNull(const aValue: Boolean); + function GetTALLA38Value: TBcd; + procedure SetTALLA38Value(const aValue: TBcd); + function GetTALLA38IsNull: Boolean; + procedure SetTALLA38IsNull(const aValue: Boolean); + function GetTALLA40Value: TBcd; + procedure SetTALLA40Value(const aValue: TBcd); + function GetTALLA40IsNull: Boolean; + procedure SetTALLA40IsNull(const aValue: Boolean); + function GetTALLA42Value: TBcd; + procedure SetTALLA42Value(const aValue: TBcd); + function GetTALLA42IsNull: Boolean; + procedure SetTALLA42IsNull(const aValue: Boolean); + function GetTALLA44Value: TBcd; + procedure SetTALLA44Value(const aValue: TBcd); + function GetTALLA44IsNull: Boolean; + procedure SetTALLA44IsNull(const aValue: Boolean); + function GetTALLA46Value: TBcd; + procedure SetTALLA46Value(const aValue: TBcd); + function GetTALLA46IsNull: Boolean; + procedure SetTALLA46IsNull(const aValue: Boolean); + function GetTALLA48Value: TBcd; + procedure SetTALLA48Value(const aValue: TBcd); + function GetTALLA48IsNull: Boolean; + procedure SetTALLA48IsNull(const aValue: Boolean); + function GetVTATERMDEVValue: TBcd; + procedure SetVTATERMDEVValue(const aValue: TBcd); + function GetVTATERMDEVIsNull: Boolean; + procedure SetVTATERMDEVIsNull(const aValue: Boolean); + function GetVTAFINALRESCValue: TBcd; + procedure SetVTAFINALRESCValue(const aValue: TBcd); + function GetVTAFINALRESCIsNull: Boolean; + procedure SetVTAFINALRESCIsNull(const aValue: Boolean); + function GetVENTASValue: TBcd; + procedure SetVENTASValue(const aValue: TBcd); + function GetVENTASIsNull: Boolean; + procedure SetVENTASIsNull(const aValue: Boolean); + function GetDEVOLUCIONESValue: TBcd; + procedure SetDEVOLUCIONESValue(const aValue: TBcd); + function GetDEVOLUCIONESIsNull: Boolean; + procedure SetDEVOLUCIONESIsNull(const aValue: Boolean); + function GetTOTALValue: TBcd; + procedure SetTOTALValue(const aValue: TBcd); + function GetTOTALIsNull: Boolean; + procedure SetTOTALIsNull(const aValue: Boolean); + function GetVALTERMDEVValue: Currency; + procedure SetVALTERMDEVValue(const aValue: Currency); + function GetVALTERMDEVIsNull: Boolean; + procedure SetVALTERMDEVIsNull(const aValue: Boolean); + function GetVALFINALRESCValue: Currency; + procedure SetVALFINALRESCValue(const aValue: Currency); + function GetVALFINALRESCIsNull: Boolean; + procedure SetVALFINALRESCIsNull(const aValue: Boolean); + function GetVALVENValue: Currency; + procedure SetVALVENValue(const aValue: Currency); + function GetVALVENIsNull: Boolean; + procedure SetVALVENIsNull(const aValue: Boolean); + function GetVALDEVValue: Currency; + procedure SetVALDEVValue(const aValue: Currency); + function GetVALDEVIsNull: Boolean; + procedure SetVALDEVIsNull(const aValue: Boolean); + function GetVALTOTValue: Currency; + procedure SetVALTOTValue(const aValue: Currency); + function GetVALTOTIsNull: Boolean; + procedure SetVALTOTIsNull(const aValue: Boolean); + + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull: Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property CLAVE1: TBcd read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull: Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull: Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull: Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull: Boolean read GetFECHAIsNull write SetFECHAIsNull; + property DIA: Integer read GetDIAValue write SetDIAValue; + property DIAIsNull: Boolean read GetDIAIsNull write SetDIAIsNull; + property DIASEMANA: WideString read GetDIASEMANAValue write SetDIASEMANAValue; + property DIASEMANAIsNull: Boolean read GetDIASEMANAIsNull write SetDIASEMANAIsNull; + property MES: WideString read GetMESValue write SetMESValue; + property MESIsNull: Boolean read GetMESIsNull write SetMESIsNull; + property ANO: Integer read GetANOValue write SetANOValue; + property ANOIsNull: Boolean read GetANOIsNull write SetANOIsNull; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull: Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull: Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property GRUPOPRODUCTO: String read GetGRUPOPRODUCTOValue write SetGRUPOPRODUCTOValue; + property GRUPOPRODUCTOIsNull: Boolean read GetGRUPOPRODUCTOIsNull write SetGRUPOPRODUCTOIsNull; + property TIPOPRODUCTO: String read GetTIPOPRODUCTOValue write SetTIPOPRODUCTOValue; + property TIPOPRODUCTOIsNull: Boolean read GetTIPOPRODUCTOIsNull write SetTIPOPRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property TALLAIsNull: Boolean read GetTALLAIsNull write SetTALLAIsNull; + property TALLA38: TBcd read GetTALLA38Value write SetTALLA38Value; + property TALLA38IsNull: Boolean read GetTALLA38IsNull write SetTALLA38IsNull; + property TALLA40: TBcd read GetTALLA40Value write SetTALLA40Value; + property TALLA40IsNull: Boolean read GetTALLA40IsNull write SetTALLA40IsNull; + property TALLA42: TBcd read GetTALLA42Value write SetTALLA42Value; + property TALLA42IsNull: Boolean read GetTALLA42IsNull write SetTALLA42IsNull; + property TALLA44: TBcd read GetTALLA44Value write SetTALLA44Value; + property TALLA44IsNull: Boolean read GetTALLA44IsNull write SetTALLA44IsNull; + property TALLA46: TBcd read GetTALLA46Value write SetTALLA46Value; + property TALLA46IsNull: Boolean read GetTALLA46IsNull write SetTALLA46IsNull; + property TALLA48: TBcd read GetTALLA48Value write SetTALLA48Value; + property TALLA48IsNull: Boolean read GetTALLA48IsNull write SetTALLA48IsNull; + property VTATERMDEV: TBcd read GetVTATERMDEVValue write SetVTATERMDEVValue; + property VTATERMDEVIsNull: Boolean read GetVTATERMDEVIsNull write SetVTATERMDEVIsNull; + property VTAFINALRESC: TBcd read GetVTAFINALRESCValue write SetVTAFINALRESCValue; + property VTAFINALRESCIsNull: Boolean read GetVTAFINALRESCIsNull write SetVTAFINALRESCIsNull; + property VENTAS: TBcd read GetVENTASValue write SetVENTASValue; + property VENTASIsNull: Boolean read GetVENTASIsNull write SetVENTASIsNull; + property DEVOLUCIONES: TBcd read GetDEVOLUCIONESValue write SetDEVOLUCIONESValue; + property DEVOLUCIONESIsNull: Boolean read GetDEVOLUCIONESIsNull write SetDEVOLUCIONESIsNull; + property TOTAL: TBcd read GetTOTALValue write SetTOTALValue; + property TOTALIsNull: Boolean read GetTOTALIsNull write SetTOTALIsNull; + property VALTERMDEV: Currency read GetVALTERMDEVValue write SetVALTERMDEVValue; + property VALTERMDEVIsNull: Boolean read GetVALTERMDEVIsNull write SetVALTERMDEVIsNull; + property VALFINALRESC: Currency read GetVALFINALRESCValue write SetVALFINALRESCValue; + property VALFINALRESCIsNull: Boolean read GetVALFINALRESCIsNull write SetVALFINALRESCIsNull; + property VALVEN: Currency read GetVALVENValue write SetVALVENValue; + property VALVENIsNull: Boolean read GetVALVENIsNull write SetVALVENIsNull; + property VALDEV: Currency read GetVALDEVValue write SetVALDEVValue; + property VALDEVIsNull: Boolean read GetVALDEVIsNull write SetVALDEVIsNull; + property VALTOT: Currency read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull: Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + end; + + { TVentasTerminadasDataTableRules } + TVentasTerminadasDataTableRules = class(TDADataTableRules, IVentasTerminadas) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetNUMINFIsNull: Boolean; virtual; + procedure SetNUMINFIsNull(const aValue: Boolean); virtual; + function GetCLAVE1Value: TBcd; virtual; + procedure SetCLAVE1Value(const aValue: TBcd); virtual; + function GetCLAVE1IsNull: Boolean; virtual; + procedure SetCLAVE1IsNull(const aValue: Boolean); virtual; + function GetCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetCLAVE2IsNull: Boolean; virtual; + procedure SetCLAVE2IsNull(const aValue: Boolean); virtual; + function GetCLAVE3Value: Integer; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + function GetCLAVE3IsNull: Boolean; virtual; + procedure SetCLAVE3IsNull(const aValue: Boolean); virtual; + function GetFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetFECHAIsNull: Boolean; virtual; + procedure SetFECHAIsNull(const aValue: Boolean); virtual; + function GetDIAValue: Integer; virtual; + procedure SetDIAValue(const aValue: Integer); virtual; + function GetDIAIsNull: Boolean; virtual; + procedure SetDIAIsNull(const aValue: Boolean); virtual; + function GetDIASEMANAValue: WideString; virtual; + procedure SetDIASEMANAValue(const aValue: WideString); virtual; + function GetDIASEMANAIsNull: Boolean; virtual; + procedure SetDIASEMANAIsNull(const aValue: Boolean); virtual; + function GetMESValue: WideString; virtual; + procedure SetMESValue(const aValue: WideString); virtual; + function GetMESIsNull: Boolean; virtual; + procedure SetMESIsNull(const aValue: Boolean); virtual; + function GetANOValue: Integer; virtual; + procedure SetANOValue(const aValue: Integer); virtual; + function GetANOIsNull: Boolean; virtual; + procedure SetANOIsNull(const aValue: Boolean); virtual; + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetCENTROIsNull: Boolean; virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetVENDEDORValue: String; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + function GetVENDEDORIsNull: Boolean; virtual; + procedure SetVENDEDORIsNull(const aValue: Boolean); virtual; + function GetNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetNUMTALONIsNull: Boolean; virtual; + procedure SetNUMTALONIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + function GetCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPOPRODUCTOValue: String; virtual; + procedure SetGRUPOPRODUCTOValue(const aValue: String); virtual; + function GetGRUPOPRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPOPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPOPRODUCTOValue: String; virtual; + procedure SetTIPOPRODUCTOValue(const aValue: String); virtual; + function GetTIPOPRODUCTOIsNull: Boolean; virtual; + procedure SetTIPOPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetCOLORIsNull: Boolean; virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetTALLAValue: String; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + function GetTALLAIsNull: Boolean; virtual; + procedure SetTALLAIsNull(const aValue: Boolean); virtual; + function GetTALLA38Value: TBcd; virtual; + procedure SetTALLA38Value(const aValue: TBcd); virtual; + function GetTALLA38IsNull: Boolean; virtual; + procedure SetTALLA38IsNull(const aValue: Boolean); virtual; + function GetTALLA40Value: TBcd; virtual; + procedure SetTALLA40Value(const aValue: TBcd); virtual; + function GetTALLA40IsNull: Boolean; virtual; + procedure SetTALLA40IsNull(const aValue: Boolean); virtual; + function GetTALLA42Value: TBcd; virtual; + procedure SetTALLA42Value(const aValue: TBcd); virtual; + function GetTALLA42IsNull: Boolean; virtual; + procedure SetTALLA42IsNull(const aValue: Boolean); virtual; + function GetTALLA44Value: TBcd; virtual; + procedure SetTALLA44Value(const aValue: TBcd); virtual; + function GetTALLA44IsNull: Boolean; virtual; + procedure SetTALLA44IsNull(const aValue: Boolean); virtual; + function GetTALLA46Value: TBcd; virtual; + procedure SetTALLA46Value(const aValue: TBcd); virtual; + function GetTALLA46IsNull: Boolean; virtual; + procedure SetTALLA46IsNull(const aValue: Boolean); virtual; + function GetTALLA48Value: TBcd; virtual; + procedure SetTALLA48Value(const aValue: TBcd); virtual; + function GetTALLA48IsNull: Boolean; virtual; + procedure SetTALLA48IsNull(const aValue: Boolean); virtual; + function GetVTATERMDEVValue: TBcd; virtual; + procedure SetVTATERMDEVValue(const aValue: TBcd); virtual; + function GetVTATERMDEVIsNull: Boolean; virtual; + procedure SetVTATERMDEVIsNull(const aValue: Boolean); virtual; + function GetVTAFINALRESCValue: TBcd; virtual; + procedure SetVTAFINALRESCValue(const aValue: TBcd); virtual; + function GetVTAFINALRESCIsNull: Boolean; virtual; + procedure SetVTAFINALRESCIsNull(const aValue: Boolean); virtual; + function GetVENTASValue: TBcd; virtual; + procedure SetVENTASValue(const aValue: TBcd); virtual; + function GetVENTASIsNull: Boolean; virtual; + procedure SetVENTASIsNull(const aValue: Boolean); virtual; + function GetDEVOLUCIONESValue: TBcd; virtual; + procedure SetDEVOLUCIONESValue(const aValue: TBcd); virtual; + function GetDEVOLUCIONESIsNull: Boolean; virtual; + procedure SetDEVOLUCIONESIsNull(const aValue: Boolean); virtual; + function GetTOTALValue: TBcd; virtual; + procedure SetTOTALValue(const aValue: TBcd); virtual; + function GetTOTALIsNull: Boolean; virtual; + procedure SetTOTALIsNull(const aValue: Boolean); virtual; + function GetVALTERMDEVValue: Currency; virtual; + procedure SetVALTERMDEVValue(const aValue: Currency); virtual; + function GetVALTERMDEVIsNull: Boolean; virtual; + procedure SetVALTERMDEVIsNull(const aValue: Boolean); virtual; + function GetVALFINALRESCValue: Currency; virtual; + procedure SetVALFINALRESCValue(const aValue: Currency); virtual; + function GetVALFINALRESCIsNull: Boolean; virtual; + procedure SetVALFINALRESCIsNull(const aValue: Boolean); virtual; + function GetVALVENValue: Currency; virtual; + procedure SetVALVENValue(const aValue: Currency); virtual; + function GetVALVENIsNull: Boolean; virtual; + procedure SetVALVENIsNull(const aValue: Boolean); virtual; + function GetVALDEVValue: Currency; virtual; + procedure SetVALDEVValue(const aValue: Currency); virtual; + function GetVALDEVIsNull: Boolean; virtual; + procedure SetVALDEVIsNull(const aValue: Boolean); virtual; + function GetVALTOTValue: Currency; virtual; + procedure SetVALTOTValue(const aValue: Currency); virtual; + function GetVALTOTIsNull: Boolean; virtual; + procedure SetVALTOTIsNull(const aValue: Boolean); virtual; + + { Properties } + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull: Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property CLAVE1: TBcd read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull: Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull: Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property CLAVE3: Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull: Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull: Boolean read GetFECHAIsNull write SetFECHAIsNull; + property DIA: Integer read GetDIAValue write SetDIAValue; + property DIAIsNull: Boolean read GetDIAIsNull write SetDIAIsNull; + property DIASEMANA: WideString read GetDIASEMANAValue write SetDIASEMANAValue; + property DIASEMANAIsNull: Boolean read GetDIASEMANAIsNull write SetDIASEMANAIsNull; + property MES: WideString read GetMESValue write SetMESValue; + property MESIsNull: Boolean read GetMESIsNull write SetMESIsNull; + property ANO: Integer read GetANOValue write SetANOValue; + property ANOIsNull: Boolean read GetANOIsNull write SetANOIsNull; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull: Boolean read GetCENTROIsNull write SetCENTROIsNull; + property VENDEDOR: String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull: Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull: Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property CODIGO: String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull: Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property PRODUCTO: String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull: Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property GRUPOPRODUCTO: String read GetGRUPOPRODUCTOValue write SetGRUPOPRODUCTOValue; + property GRUPOPRODUCTOIsNull: Boolean read GetGRUPOPRODUCTOIsNull write SetGRUPOPRODUCTOIsNull; + property TIPOPRODUCTO: String read GetTIPOPRODUCTOValue write SetTIPOPRODUCTOValue; + property TIPOPRODUCTOIsNull: Boolean read GetTIPOPRODUCTOIsNull write SetTIPOPRODUCTOIsNull; + property COLECCION: String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull: Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property COLORIsNull: Boolean read GetCOLORIsNull write SetCOLORIsNull; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property TALLAIsNull: Boolean read GetTALLAIsNull write SetTALLAIsNull; + property TALLA38: TBcd read GetTALLA38Value write SetTALLA38Value; + property TALLA38IsNull: Boolean read GetTALLA38IsNull write SetTALLA38IsNull; + property TALLA40: TBcd read GetTALLA40Value write SetTALLA40Value; + property TALLA40IsNull: Boolean read GetTALLA40IsNull write SetTALLA40IsNull; + property TALLA42: TBcd read GetTALLA42Value write SetTALLA42Value; + property TALLA42IsNull: Boolean read GetTALLA42IsNull write SetTALLA42IsNull; + property TALLA44: TBcd read GetTALLA44Value write SetTALLA44Value; + property TALLA44IsNull: Boolean read GetTALLA44IsNull write SetTALLA44IsNull; + property TALLA46: TBcd read GetTALLA46Value write SetTALLA46Value; + property TALLA46IsNull: Boolean read GetTALLA46IsNull write SetTALLA46IsNull; + property TALLA48: TBcd read GetTALLA48Value write SetTALLA48Value; + property TALLA48IsNull: Boolean read GetTALLA48IsNull write SetTALLA48IsNull; + property VTATERMDEV: TBcd read GetVTATERMDEVValue write SetVTATERMDEVValue; + property VTATERMDEVIsNull: Boolean read GetVTATERMDEVIsNull write SetVTATERMDEVIsNull; + property VTAFINALRESC: TBcd read GetVTAFINALRESCValue write SetVTAFINALRESCValue; + property VTAFINALRESCIsNull: Boolean read GetVTAFINALRESCIsNull write SetVTAFINALRESCIsNull; + property VENTAS: TBcd read GetVENTASValue write SetVENTASValue; + property VENTASIsNull: Boolean read GetVENTASIsNull write SetVENTASIsNull; + property DEVOLUCIONES: TBcd read GetDEVOLUCIONESValue write SetDEVOLUCIONESValue; + property DEVOLUCIONESIsNull: Boolean read GetDEVOLUCIONESIsNull write SetDEVOLUCIONESIsNull; + property TOTAL: TBcd read GetTOTALValue write SetTOTALValue; + property TOTALIsNull: Boolean read GetTOTALIsNull write SetTOTALIsNull; + property VALTERMDEV: Currency read GetVALTERMDEVValue write SetVALTERMDEVValue; + property VALTERMDEVIsNull: Boolean read GetVALTERMDEVIsNull write SetVALTERMDEVIsNull; + property VALFINALRESC: Currency read GetVALFINALRESCValue write SetVALFINALRESCValue; + property VALFINALRESCIsNull: Boolean read GetVALFINALRESCIsNull write SetVALFINALRESCIsNull; + property VALVEN: Currency read GetVALVENValue write SetVALVENValue; + property VALVENIsNull: Boolean read GetVALVENIsNull write SetVALVENIsNull; + property VALDEV: Currency read GetVALDEVValue write SetVALDEVValue; + property VALDEVIsNull: Boolean read GetVALDEVIsNull write SetVALDEVIsNull; + property VALTOT: Currency read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull: Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants, uROBinaryHelpers; + +{ TVentasTerminadasCrossTabDataTableRules } +constructor TVentasTerminadasCrossTabDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TVentasTerminadasCrossTabDataTableRules.Destroy; +begin + inherited; +end; + + +{ TVentasTerminadasDataTableRules } +constructor TVentasTerminadasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TVentasTerminadasDataTableRules.Destroy; +begin + inherited; +end; + +function TVentasTerminadasDataTableRules.GetNUMINFValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasNUMINF].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetNUMINFValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasNUMINF].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetNUMINFIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasNUMINF].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetNUMINFIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasNUMINF].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCLAVE1Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasCLAVE1].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetCLAVE1Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasCLAVE1].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCLAVE1IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCLAVE1].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCLAVE1IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCLAVE1].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCLAVE2Value: Integer; +begin + result := DataTable.Fields[idx_VentasTerminadasCLAVE2].AsInteger; +end; + +procedure TVentasTerminadasDataTableRules.SetCLAVE2Value(const aValue: Integer); +begin + DataTable.Fields[idx_VentasTerminadasCLAVE2].AsInteger := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCLAVE2IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCLAVE2].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCLAVE2IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCLAVE2].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCLAVE3Value: Integer; +begin + result := DataTable.Fields[idx_VentasTerminadasCLAVE3].AsInteger; +end; + +procedure TVentasTerminadasDataTableRules.SetCLAVE3Value(const aValue: Integer); +begin + DataTable.Fields[idx_VentasTerminadasCLAVE3].AsInteger := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCLAVE3IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCLAVE3].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCLAVE3IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCLAVE3].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetFECHAValue: DateTime; +begin + result := DataTable.Fields[idx_VentasTerminadasFECHA].AsDateTime; +end; + +procedure TVentasTerminadasDataTableRules.SetFECHAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_VentasTerminadasFECHA].AsDateTime := aValue; +end; + +function TVentasTerminadasDataTableRules.GetFECHAIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasFECHA].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetFECHAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasFECHA].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetDIAValue: Integer; +begin + result := DataTable.Fields[idx_VentasTerminadasDIA].AsInteger; +end; + +procedure TVentasTerminadasDataTableRules.SetDIAValue(const aValue: Integer); +begin + DataTable.Fields[idx_VentasTerminadasDIA].AsInteger := aValue; +end; + +function TVentasTerminadasDataTableRules.GetDIAIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasDIA].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetDIAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasDIA].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetDIASEMANAValue: WideString; +begin + result := DataTable.Fields[idx_VentasTerminadasDIASEMANA].AsWideString; +end; + +procedure TVentasTerminadasDataTableRules.SetDIASEMANAValue(const aValue: WideString); +begin + DataTable.Fields[idx_VentasTerminadasDIASEMANA].AsWideString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetDIASEMANAIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasDIASEMANA].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetDIASEMANAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasDIASEMANA].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetMESValue: WideString; +begin + result := DataTable.Fields[idx_VentasTerminadasMES].AsWideString; +end; + +procedure TVentasTerminadasDataTableRules.SetMESValue(const aValue: WideString); +begin + DataTable.Fields[idx_VentasTerminadasMES].AsWideString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetMESIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasMES].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetMESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasMES].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetANOValue: Integer; +begin + result := DataTable.Fields[idx_VentasTerminadasANO].AsInteger; +end; + +procedure TVentasTerminadasDataTableRules.SetANOValue(const aValue: Integer); +begin + DataTable.Fields[idx_VentasTerminadasANO].AsInteger := aValue; +end; + +function TVentasTerminadasDataTableRules.GetANOIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasANO].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetANOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasANO].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasCENTRO].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasCENTRO].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCENTROIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCENTRO].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCENTRO].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVENDEDORValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasVENDEDOR].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetVENDEDORValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasVENDEDOR].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVENDEDORIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVENDEDOR].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVENDEDOR].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetNUMTALONValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasNUMTALON].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetNUMTALONValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasNUMTALON].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetNUMTALONIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasNUMTALON].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetNUMTALONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasNUMTALON].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCODIGOValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasCODIGO].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetCODIGOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasCODIGO].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCODIGOIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCODIGO].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCODIGO].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasPRODUCTO].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasPRODUCTO].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasPRODUCTO].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasPRODUCTO].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetGRUPOPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasGRUPOPRODUCTO].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetGRUPOPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasGRUPOPRODUCTO].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetGRUPOPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasGRUPOPRODUCTO].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetGRUPOPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasGRUPOPRODUCTO].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTIPOPRODUCTOValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasTIPOPRODUCTO].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetTIPOPRODUCTOValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasTIPOPRODUCTO].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTIPOPRODUCTOIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTIPOPRODUCTO].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTIPOPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTIPOPRODUCTO].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCOLECCIONValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasCOLECCION].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetCOLECCIONValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasCOLECCION].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCOLECCIONIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCOLECCION].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCOLECCION].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasCOLOR].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasCOLOR].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetCOLORIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasCOLOR].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasCOLOR].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLAValue: String; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA].AsString; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLAValue(const aValue: String); +begin + DataTable.Fields[idx_VentasTerminadasTALLA].AsString := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLAIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLA38Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA38].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA38Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTALLA38].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLA38IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA38].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA38IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA38].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLA40Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA40].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA40Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTALLA40].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLA40IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA40].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA40IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA40].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLA42Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA42].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA42Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTALLA42].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLA42IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA42].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA42IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA42].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLA44Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA44].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA44Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTALLA44].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLA44IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA44].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA44IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA44].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLA46Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA46].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA46Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTALLA46].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLA46IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA46].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA46IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA46].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTALLA48Value: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA48].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA48Value(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTALLA48].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTALLA48IsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTALLA48].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTALLA48IsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTALLA48].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVTATERMDEVValue: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasVTATERMDEV].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetVTATERMDEVValue(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasVTATERMDEV].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVTATERMDEVIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVTATERMDEV].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVTATERMDEVIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVTATERMDEV].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVTAFINALRESCValue: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasVTAFINALRESC].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetVTAFINALRESCValue(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasVTAFINALRESC].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVTAFINALRESCIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVTAFINALRESC].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVTAFINALRESCIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVTAFINALRESC].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVENTASValue: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasVENTAS].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetVENTASValue(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasVENTAS].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVENTASIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVENTAS].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVENTASIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVENTAS].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetDEVOLUCIONESValue: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasDEVOLUCIONES].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetDEVOLUCIONESValue(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasDEVOLUCIONES].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetDEVOLUCIONESIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasDEVOLUCIONES].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetDEVOLUCIONESIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasDEVOLUCIONES].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetTOTALValue: TBcd; +begin + result := DataTable.Fields[idx_VentasTerminadasTOTAL].AsDecimal; +end; + +procedure TVentasTerminadasDataTableRules.SetTOTALValue(const aValue: TBcd); +begin + DataTable.Fields[idx_VentasTerminadasTOTAL].AsDecimal := aValue; +end; + +function TVentasTerminadasDataTableRules.GetTOTALIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasTOTAL].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetTOTALIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasTOTAL].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVALTERMDEVValue: Currency; +begin + result := DataTable.Fields[idx_VentasTerminadasVALTERMDEV].AsCurrency; +end; + +procedure TVentasTerminadasDataTableRules.SetVALTERMDEVValue(const aValue: Currency); +begin + DataTable.Fields[idx_VentasTerminadasVALTERMDEV].AsCurrency := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVALTERMDEVIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVALTERMDEV].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVALTERMDEVIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVALTERMDEV].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVALFINALRESCValue: Currency; +begin + result := DataTable.Fields[idx_VentasTerminadasVALFINALRESC].AsCurrency; +end; + +procedure TVentasTerminadasDataTableRules.SetVALFINALRESCValue(const aValue: Currency); +begin + DataTable.Fields[idx_VentasTerminadasVALFINALRESC].AsCurrency := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVALFINALRESCIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVALFINALRESC].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVALFINALRESCIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVALFINALRESC].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVALVENValue: Currency; +begin + result := DataTable.Fields[idx_VentasTerminadasVALVEN].AsCurrency; +end; + +procedure TVentasTerminadasDataTableRules.SetVALVENValue(const aValue: Currency); +begin + DataTable.Fields[idx_VentasTerminadasVALVEN].AsCurrency := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVALVENIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVALVEN].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVALVENIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVALVEN].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVALDEVValue: Currency; +begin + result := DataTable.Fields[idx_VentasTerminadasVALDEV].AsCurrency; +end; + +procedure TVentasTerminadasDataTableRules.SetVALDEVValue(const aValue: Currency); +begin + DataTable.Fields[idx_VentasTerminadasVALDEV].AsCurrency := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVALDEVIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVALDEV].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVALDEVIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVALDEV].AsVariant := Null; +end; + +function TVentasTerminadasDataTableRules.GetVALTOTValue: Currency; +begin + result := DataTable.Fields[idx_VentasTerminadasVALTOT].AsCurrency; +end; + +procedure TVentasTerminadasDataTableRules.SetVALTOTValue(const aValue: Currency); +begin + DataTable.Fields[idx_VentasTerminadasVALTOT].AsCurrency := aValue; +end; + +function TVentasTerminadasDataTableRules.GetVALTOTIsNull: boolean; +begin + result := DataTable.Fields[idx_VentasTerminadasVALTOT].IsNull; +end; + +procedure TVentasTerminadasDataTableRules.SetVALTOTIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_VentasTerminadasVALTOT].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID_VentasTerminadasCrossTab, TVentasTerminadasCrossTabDataTableRules); + RegisterDataTableRules(RID_VentasTerminadas, TVentasTerminadasDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Reglas/schVentasTerminadasServer_Intf.pas b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/schVentasTerminadasServer_Intf.pas new file mode 100644 index 0000000..4f58e5a --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/schVentasTerminadasServer_Intf.pas @@ -0,0 +1,1598 @@ +unit schVentasTerminadasServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schVentasTerminadasClient_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_VentasTerminadasCrossTabDelta = '{D13D1DE1-ED2A-4146-8D79-6B99529AC6CB}'; + RID_VentasTerminadasDelta = '{D00EC469-4C92-48AF-BDC3-D946B20C1A47}'; + +type + { IVentasTerminadasCrossTabDelta } + IVentasTerminadasCrossTabDelta = interface(IVentasTerminadasCrossTab) + ['{D13D1DE1-ED2A-4146-8D79-6B99529AC6CB}'] + { Property getters and setters } + + { Properties } + end; + + { TVentasTerminadasCrossTabBusinessProcessorRules } + TVentasTerminadasCrossTabBusinessProcessorRules = class(TDABusinessProcessorRules, IVentasTerminadasCrossTab, IVentasTerminadasCrossTabDelta) + private + protected + { Property getters and setters } + + { Properties } + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IVentasTerminadasDelta } + IVentasTerminadasDelta = interface(IVentasTerminadas) + ['{D00EC469-4C92-48AF-BDC3-D946B20C1A47}'] + { Property getters and setters } + function GetOldNUMINFValue : String; + function GetOldCLAVE1Value : TBcd; + function GetOldCLAVE2Value : Integer; + function GetOldCLAVE3Value : Integer; + function GetOldFECHAValue : DateTime; + function GetOldDIAValue : Integer; + function GetOldDIASEMANAValue : WideString; + function GetOldMESValue : WideString; + function GetOldANOValue : Integer; + function GetOldCENTROValue : String; + function GetOldVENDEDORValue : String; + function GetOldNUMTALONValue : String; + function GetOldCODIGOValue : String; + function GetOldPRODUCTOValue : String; + function GetOldGRUPOPRODUCTOValue : String; + function GetOldTIPOPRODUCTOValue : String; + function GetOldCOLECCIONValue : String; + function GetOldCOLORValue : String; + function GetOldTALLAValue : String; + function GetOldTALLA38Value : TBcd; + function GetOldTALLA40Value : TBcd; + function GetOldTALLA42Value : TBcd; + function GetOldTALLA44Value : TBcd; + function GetOldTALLA46Value : TBcd; + function GetOldTALLA48Value : TBcd; + function GetOldVTATERMDEVValue : TBcd; + function GetOldVTAFINALRESCValue : TBcd; + function GetOldVENTASValue : TBcd; + function GetOldDEVOLUCIONESValue : TBcd; + function GetOldTOTALValue : TBcd; + function GetOldVALTERMDEVValue : Currency; + function GetOldVALFINALRESCValue : Currency; + function GetOldVALVENValue : Currency; + function GetOldVALDEVValue : Currency; + function GetOldVALTOTValue : Currency; + + { Properties } + property OldNUMINF : String read GetOldNUMINFValue; + property OldCLAVE1 : TBcd read GetOldCLAVE1Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldDIA : Integer read GetOldDIAValue; + property OldDIASEMANA : WideString read GetOldDIASEMANAValue; + property OldMES : WideString read GetOldMESValue; + property OldANO : Integer read GetOldANOValue; + property OldCENTRO : String read GetOldCENTROValue; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldCODIGO : String read GetOldCODIGOValue; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldGRUPOPRODUCTO : String read GetOldGRUPOPRODUCTOValue; + property OldTIPOPRODUCTO : String read GetOldTIPOPRODUCTOValue; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldTALLA : String read GetOldTALLAValue; + property OldTALLA38 : TBcd read GetOldTALLA38Value; + property OldTALLA40 : TBcd read GetOldTALLA40Value; + property OldTALLA42 : TBcd read GetOldTALLA42Value; + property OldTALLA44 : TBcd read GetOldTALLA44Value; + property OldTALLA46 : TBcd read GetOldTALLA46Value; + property OldTALLA48 : TBcd read GetOldTALLA48Value; + property OldVTATERMDEV : TBcd read GetOldVTATERMDEVValue; + property OldVTAFINALRESC : TBcd read GetOldVTAFINALRESCValue; + property OldVENTAS : TBcd read GetOldVENTASValue; + property OldDEVOLUCIONES : TBcd read GetOldDEVOLUCIONESValue; + property OldTOTAL : TBcd read GetOldTOTALValue; + property OldVALTERMDEV : Currency read GetOldVALTERMDEVValue; + property OldVALFINALRESC : Currency read GetOldVALFINALRESCValue; + property OldVALVEN : Currency read GetOldVALVENValue; + property OldVALDEV : Currency read GetOldVALDEVValue; + property OldVALTOT : Currency read GetOldVALTOTValue; + end; + + { TVentasTerminadasBusinessProcessorRules } + TVentasTerminadasBusinessProcessorRules = class(TDABusinessProcessorRules, IVentasTerminadas, IVentasTerminadasDelta) + private + protected + { Property getters and setters } + function GetNUMINFValue: String; virtual; + function GetNUMINFIsNull: Boolean; virtual; + function GetOldNUMINFValue: String; virtual; + function GetOldNUMINFIsNull: Boolean; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + procedure SetNUMINFIsNull(const aValue: Boolean); virtual; + function GetCLAVE1Value: TBcd; virtual; + function GetCLAVE1IsNull: Boolean; virtual; + function GetOldCLAVE1Value: TBcd; virtual; + function GetOldCLAVE1IsNull: Boolean; virtual; + procedure SetCLAVE1Value(const aValue: TBcd); virtual; + procedure SetCLAVE1IsNull(const aValue: Boolean); virtual; + function GetCLAVE2Value: Integer; virtual; + function GetCLAVE2IsNull: Boolean; virtual; + function GetOldCLAVE2Value: Integer; virtual; + function GetOldCLAVE2IsNull: Boolean; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + procedure SetCLAVE2IsNull(const aValue: Boolean); virtual; + function GetCLAVE3Value: Integer; virtual; + function GetCLAVE3IsNull: Boolean; virtual; + function GetOldCLAVE3Value: Integer; virtual; + function GetOldCLAVE3IsNull: Boolean; virtual; + procedure SetCLAVE3Value(const aValue: Integer); virtual; + procedure SetCLAVE3IsNull(const aValue: Boolean); virtual; + function GetFECHAValue: DateTime; virtual; + function GetFECHAIsNull: Boolean; virtual; + function GetOldFECHAValue: DateTime; virtual; + function GetOldFECHAIsNull: Boolean; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + procedure SetFECHAIsNull(const aValue: Boolean); virtual; + function GetDIAValue: Integer; virtual; + function GetDIAIsNull: Boolean; virtual; + function GetOldDIAValue: Integer; virtual; + function GetOldDIAIsNull: Boolean; virtual; + procedure SetDIAValue(const aValue: Integer); virtual; + procedure SetDIAIsNull(const aValue: Boolean); virtual; + function GetDIASEMANAValue: WideString; virtual; + function GetDIASEMANAIsNull: Boolean; virtual; + function GetOldDIASEMANAValue: WideString; virtual; + function GetOldDIASEMANAIsNull: Boolean; virtual; + procedure SetDIASEMANAValue(const aValue: WideString); virtual; + procedure SetDIASEMANAIsNull(const aValue: Boolean); virtual; + function GetMESValue: WideString; virtual; + function GetMESIsNull: Boolean; virtual; + function GetOldMESValue: WideString; virtual; + function GetOldMESIsNull: Boolean; virtual; + procedure SetMESValue(const aValue: WideString); virtual; + procedure SetMESIsNull(const aValue: Boolean); virtual; + function GetANOValue: Integer; virtual; + function GetANOIsNull: Boolean; virtual; + function GetOldANOValue: Integer; virtual; + function GetOldANOIsNull: Boolean; virtual; + procedure SetANOValue(const aValue: Integer); virtual; + procedure SetANOIsNull(const aValue: Boolean); virtual; + function GetCENTROValue: String; virtual; + function GetCENTROIsNull: Boolean; virtual; + function GetOldCENTROValue: String; virtual; + function GetOldCENTROIsNull: Boolean; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + procedure SetCENTROIsNull(const aValue: Boolean); virtual; + function GetVENDEDORValue: String; virtual; + function GetVENDEDORIsNull: Boolean; virtual; + function GetOldVENDEDORValue: String; virtual; + function GetOldVENDEDORIsNull: Boolean; virtual; + procedure SetVENDEDORValue(const aValue: String); virtual; + procedure SetVENDEDORIsNull(const aValue: Boolean); virtual; + function GetNUMTALONValue: String; virtual; + function GetNUMTALONIsNull: Boolean; virtual; + function GetOldNUMTALONValue: String; virtual; + function GetOldNUMTALONIsNull: Boolean; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + procedure SetNUMTALONIsNull(const aValue: Boolean); virtual; + function GetCODIGOValue: String; virtual; + function GetCODIGOIsNull: Boolean; virtual; + function GetOldCODIGOValue: String; virtual; + function GetOldCODIGOIsNull: Boolean; virtual; + procedure SetCODIGOValue(const aValue: String); virtual; + procedure SetCODIGOIsNull(const aValue: Boolean); virtual; + function GetPRODUCTOValue: String; virtual; + function GetPRODUCTOIsNull: Boolean; virtual; + function GetOldPRODUCTOValue: String; virtual; + function GetOldPRODUCTOIsNull: Boolean; virtual; + procedure SetPRODUCTOValue(const aValue: String); virtual; + procedure SetPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetGRUPOPRODUCTOValue: String; virtual; + function GetGRUPOPRODUCTOIsNull: Boolean; virtual; + function GetOldGRUPOPRODUCTOValue: String; virtual; + function GetOldGRUPOPRODUCTOIsNull: Boolean; virtual; + procedure SetGRUPOPRODUCTOValue(const aValue: String); virtual; + procedure SetGRUPOPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetTIPOPRODUCTOValue: String; virtual; + function GetTIPOPRODUCTOIsNull: Boolean; virtual; + function GetOldTIPOPRODUCTOValue: String; virtual; + function GetOldTIPOPRODUCTOIsNull: Boolean; virtual; + procedure SetTIPOPRODUCTOValue(const aValue: String); virtual; + procedure SetTIPOPRODUCTOIsNull(const aValue: Boolean); virtual; + function GetCOLECCIONValue: String; virtual; + function GetCOLECCIONIsNull: Boolean; virtual; + function GetOldCOLECCIONValue: String; virtual; + function GetOldCOLECCIONIsNull: Boolean; virtual; + procedure SetCOLECCIONValue(const aValue: String); virtual; + procedure SetCOLECCIONIsNull(const aValue: Boolean); virtual; + function GetCOLORValue: String; virtual; + function GetCOLORIsNull: Boolean; virtual; + function GetOldCOLORValue: String; virtual; + function GetOldCOLORIsNull: Boolean; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + procedure SetCOLORIsNull(const aValue: Boolean); virtual; + function GetTALLAValue: String; virtual; + function GetTALLAIsNull: Boolean; virtual; + function GetOldTALLAValue: String; virtual; + function GetOldTALLAIsNull: Boolean; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + procedure SetTALLAIsNull(const aValue: Boolean); virtual; + function GetTALLA38Value: TBcd; virtual; + function GetTALLA38IsNull: Boolean; virtual; + function GetOldTALLA38Value: TBcd; virtual; + function GetOldTALLA38IsNull: Boolean; virtual; + procedure SetTALLA38Value(const aValue: TBcd); virtual; + procedure SetTALLA38IsNull(const aValue: Boolean); virtual; + function GetTALLA40Value: TBcd; virtual; + function GetTALLA40IsNull: Boolean; virtual; + function GetOldTALLA40Value: TBcd; virtual; + function GetOldTALLA40IsNull: Boolean; virtual; + procedure SetTALLA40Value(const aValue: TBcd); virtual; + procedure SetTALLA40IsNull(const aValue: Boolean); virtual; + function GetTALLA42Value: TBcd; virtual; + function GetTALLA42IsNull: Boolean; virtual; + function GetOldTALLA42Value: TBcd; virtual; + function GetOldTALLA42IsNull: Boolean; virtual; + procedure SetTALLA42Value(const aValue: TBcd); virtual; + procedure SetTALLA42IsNull(const aValue: Boolean); virtual; + function GetTALLA44Value: TBcd; virtual; + function GetTALLA44IsNull: Boolean; virtual; + function GetOldTALLA44Value: TBcd; virtual; + function GetOldTALLA44IsNull: Boolean; virtual; + procedure SetTALLA44Value(const aValue: TBcd); virtual; + procedure SetTALLA44IsNull(const aValue: Boolean); virtual; + function GetTALLA46Value: TBcd; virtual; + function GetTALLA46IsNull: Boolean; virtual; + function GetOldTALLA46Value: TBcd; virtual; + function GetOldTALLA46IsNull: Boolean; virtual; + procedure SetTALLA46Value(const aValue: TBcd); virtual; + procedure SetTALLA46IsNull(const aValue: Boolean); virtual; + function GetTALLA48Value: TBcd; virtual; + function GetTALLA48IsNull: Boolean; virtual; + function GetOldTALLA48Value: TBcd; virtual; + function GetOldTALLA48IsNull: Boolean; virtual; + procedure SetTALLA48Value(const aValue: TBcd); virtual; + procedure SetTALLA48IsNull(const aValue: Boolean); virtual; + function GetVTATERMDEVValue: TBcd; virtual; + function GetVTATERMDEVIsNull: Boolean; virtual; + function GetOldVTATERMDEVValue: TBcd; virtual; + function GetOldVTATERMDEVIsNull: Boolean; virtual; + procedure SetVTATERMDEVValue(const aValue: TBcd); virtual; + procedure SetVTATERMDEVIsNull(const aValue: Boolean); virtual; + function GetVTAFINALRESCValue: TBcd; virtual; + function GetVTAFINALRESCIsNull: Boolean; virtual; + function GetOldVTAFINALRESCValue: TBcd; virtual; + function GetOldVTAFINALRESCIsNull: Boolean; virtual; + procedure SetVTAFINALRESCValue(const aValue: TBcd); virtual; + procedure SetVTAFINALRESCIsNull(const aValue: Boolean); virtual; + function GetVENTASValue: TBcd; virtual; + function GetVENTASIsNull: Boolean; virtual; + function GetOldVENTASValue: TBcd; virtual; + function GetOldVENTASIsNull: Boolean; virtual; + procedure SetVENTASValue(const aValue: TBcd); virtual; + procedure SetVENTASIsNull(const aValue: Boolean); virtual; + function GetDEVOLUCIONESValue: TBcd; virtual; + function GetDEVOLUCIONESIsNull: Boolean; virtual; + function GetOldDEVOLUCIONESValue: TBcd; virtual; + function GetOldDEVOLUCIONESIsNull: Boolean; virtual; + procedure SetDEVOLUCIONESValue(const aValue: TBcd); virtual; + procedure SetDEVOLUCIONESIsNull(const aValue: Boolean); virtual; + function GetTOTALValue: TBcd; virtual; + function GetTOTALIsNull: Boolean; virtual; + function GetOldTOTALValue: TBcd; virtual; + function GetOldTOTALIsNull: Boolean; virtual; + procedure SetTOTALValue(const aValue: TBcd); virtual; + procedure SetTOTALIsNull(const aValue: Boolean); virtual; + function GetVALTERMDEVValue: Currency; virtual; + function GetVALTERMDEVIsNull: Boolean; virtual; + function GetOldVALTERMDEVValue: Currency; virtual; + function GetOldVALTERMDEVIsNull: Boolean; virtual; + procedure SetVALTERMDEVValue(const aValue: Currency); virtual; + procedure SetVALTERMDEVIsNull(const aValue: Boolean); virtual; + function GetVALFINALRESCValue: Currency; virtual; + function GetVALFINALRESCIsNull: Boolean; virtual; + function GetOldVALFINALRESCValue: Currency; virtual; + function GetOldVALFINALRESCIsNull: Boolean; virtual; + procedure SetVALFINALRESCValue(const aValue: Currency); virtual; + procedure SetVALFINALRESCIsNull(const aValue: Boolean); virtual; + function GetVALVENValue: Currency; virtual; + function GetVALVENIsNull: Boolean; virtual; + function GetOldVALVENValue: Currency; virtual; + function GetOldVALVENIsNull: Boolean; virtual; + procedure SetVALVENValue(const aValue: Currency); virtual; + procedure SetVALVENIsNull(const aValue: Boolean); virtual; + function GetVALDEVValue: Currency; virtual; + function GetVALDEVIsNull: Boolean; virtual; + function GetOldVALDEVValue: Currency; virtual; + function GetOldVALDEVIsNull: Boolean; virtual; + procedure SetVALDEVValue(const aValue: Currency); virtual; + procedure SetVALDEVIsNull(const aValue: Boolean); virtual; + function GetVALTOTValue: Currency; virtual; + function GetVALTOTIsNull: Boolean; virtual; + function GetOldVALTOTValue: Currency; virtual; + function GetOldVALTOTIsNull: Boolean; virtual; + procedure SetVALTOTValue(const aValue: Currency); virtual; + procedure SetVALTOTIsNull(const aValue: Boolean); virtual; + + { Properties } + property NUMINF : String read GetNUMINFValue write SetNUMINFValue; + property NUMINFIsNull : Boolean read GetNUMINFIsNull write SetNUMINFIsNull; + property OldNUMINF : String read GetOldNUMINFValue; + property OldNUMINFIsNull : Boolean read GetOldNUMINFIsNull; + property CLAVE1 : TBcd read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE1IsNull : Boolean read GetCLAVE1IsNull write SetCLAVE1IsNull; + property OldCLAVE1 : TBcd read GetOldCLAVE1Value; + property OldCLAVE1IsNull : Boolean read GetOldCLAVE1IsNull; + property CLAVE2 : Integer read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE2IsNull : Boolean read GetCLAVE2IsNull write SetCLAVE2IsNull; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldCLAVE2IsNull : Boolean read GetOldCLAVE2IsNull; + property CLAVE3 : Integer read GetCLAVE3Value write SetCLAVE3Value; + property CLAVE3IsNull : Boolean read GetCLAVE3IsNull write SetCLAVE3IsNull; + property OldCLAVE3 : Integer read GetOldCLAVE3Value; + property OldCLAVE3IsNull : Boolean read GetOldCLAVE3IsNull; + property FECHA : DateTime read GetFECHAValue write SetFECHAValue; + property FECHAIsNull : Boolean read GetFECHAIsNull write SetFECHAIsNull; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldFECHAIsNull : Boolean read GetOldFECHAIsNull; + property DIA : Integer read GetDIAValue write SetDIAValue; + property DIAIsNull : Boolean read GetDIAIsNull write SetDIAIsNull; + property OldDIA : Integer read GetOldDIAValue; + property OldDIAIsNull : Boolean read GetOldDIAIsNull; + property DIASEMANA : WideString read GetDIASEMANAValue write SetDIASEMANAValue; + property DIASEMANAIsNull : Boolean read GetDIASEMANAIsNull write SetDIASEMANAIsNull; + property OldDIASEMANA : WideString read GetOldDIASEMANAValue; + property OldDIASEMANAIsNull : Boolean read GetOldDIASEMANAIsNull; + property MES : WideString read GetMESValue write SetMESValue; + property MESIsNull : Boolean read GetMESIsNull write SetMESIsNull; + property OldMES : WideString read GetOldMESValue; + property OldMESIsNull : Boolean read GetOldMESIsNull; + property ANO : Integer read GetANOValue write SetANOValue; + property ANOIsNull : Boolean read GetANOIsNull write SetANOIsNull; + property OldANO : Integer read GetOldANOValue; + property OldANOIsNull : Boolean read GetOldANOIsNull; + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property CENTROIsNull : Boolean read GetCENTROIsNull write SetCENTROIsNull; + property OldCENTRO : String read GetOldCENTROValue; + property OldCENTROIsNull : Boolean read GetOldCENTROIsNull; + property VENDEDOR : String read GetVENDEDORValue write SetVENDEDORValue; + property VENDEDORIsNull : Boolean read GetVENDEDORIsNull write SetVENDEDORIsNull; + property OldVENDEDOR : String read GetOldVENDEDORValue; + property OldVENDEDORIsNull : Boolean read GetOldVENDEDORIsNull; + property NUMTALON : String read GetNUMTALONValue write SetNUMTALONValue; + property NUMTALONIsNull : Boolean read GetNUMTALONIsNull write SetNUMTALONIsNull; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldNUMTALONIsNull : Boolean read GetOldNUMTALONIsNull; + property CODIGO : String read GetCODIGOValue write SetCODIGOValue; + property CODIGOIsNull : Boolean read GetCODIGOIsNull write SetCODIGOIsNull; + property OldCODIGO : String read GetOldCODIGOValue; + property OldCODIGOIsNull : Boolean read GetOldCODIGOIsNull; + property PRODUCTO : String read GetPRODUCTOValue write SetPRODUCTOValue; + property PRODUCTOIsNull : Boolean read GetPRODUCTOIsNull write SetPRODUCTOIsNull; + property OldPRODUCTO : String read GetOldPRODUCTOValue; + property OldPRODUCTOIsNull : Boolean read GetOldPRODUCTOIsNull; + property GRUPOPRODUCTO : String read GetGRUPOPRODUCTOValue write SetGRUPOPRODUCTOValue; + property GRUPOPRODUCTOIsNull : Boolean read GetGRUPOPRODUCTOIsNull write SetGRUPOPRODUCTOIsNull; + property OldGRUPOPRODUCTO : String read GetOldGRUPOPRODUCTOValue; + property OldGRUPOPRODUCTOIsNull : Boolean read GetOldGRUPOPRODUCTOIsNull; + property TIPOPRODUCTO : String read GetTIPOPRODUCTOValue write SetTIPOPRODUCTOValue; + property TIPOPRODUCTOIsNull : Boolean read GetTIPOPRODUCTOIsNull write SetTIPOPRODUCTOIsNull; + property OldTIPOPRODUCTO : String read GetOldTIPOPRODUCTOValue; + property OldTIPOPRODUCTOIsNull : Boolean read GetOldTIPOPRODUCTOIsNull; + property COLECCION : String read GetCOLECCIONValue write SetCOLECCIONValue; + property COLECCIONIsNull : Boolean read GetCOLECCIONIsNull write SetCOLECCIONIsNull; + property OldCOLECCION : String read GetOldCOLECCIONValue; + property OldCOLECCIONIsNull : Boolean read GetOldCOLECCIONIsNull; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property COLORIsNull : Boolean read GetCOLORIsNull write SetCOLORIsNull; + property OldCOLOR : String read GetOldCOLORValue; + property OldCOLORIsNull : Boolean read GetOldCOLORIsNull; + property TALLA : String read GetTALLAValue write SetTALLAValue; + property TALLAIsNull : Boolean read GetTALLAIsNull write SetTALLAIsNull; + property OldTALLA : String read GetOldTALLAValue; + property OldTALLAIsNull : Boolean read GetOldTALLAIsNull; + property TALLA38 : TBcd read GetTALLA38Value write SetTALLA38Value; + property TALLA38IsNull : Boolean read GetTALLA38IsNull write SetTALLA38IsNull; + property OldTALLA38 : TBcd read GetOldTALLA38Value; + property OldTALLA38IsNull : Boolean read GetOldTALLA38IsNull; + property TALLA40 : TBcd read GetTALLA40Value write SetTALLA40Value; + property TALLA40IsNull : Boolean read GetTALLA40IsNull write SetTALLA40IsNull; + property OldTALLA40 : TBcd read GetOldTALLA40Value; + property OldTALLA40IsNull : Boolean read GetOldTALLA40IsNull; + property TALLA42 : TBcd read GetTALLA42Value write SetTALLA42Value; + property TALLA42IsNull : Boolean read GetTALLA42IsNull write SetTALLA42IsNull; + property OldTALLA42 : TBcd read GetOldTALLA42Value; + property OldTALLA42IsNull : Boolean read GetOldTALLA42IsNull; + property TALLA44 : TBcd read GetTALLA44Value write SetTALLA44Value; + property TALLA44IsNull : Boolean read GetTALLA44IsNull write SetTALLA44IsNull; + property OldTALLA44 : TBcd read GetOldTALLA44Value; + property OldTALLA44IsNull : Boolean read GetOldTALLA44IsNull; + property TALLA46 : TBcd read GetTALLA46Value write SetTALLA46Value; + property TALLA46IsNull : Boolean read GetTALLA46IsNull write SetTALLA46IsNull; + property OldTALLA46 : TBcd read GetOldTALLA46Value; + property OldTALLA46IsNull : Boolean read GetOldTALLA46IsNull; + property TALLA48 : TBcd read GetTALLA48Value write SetTALLA48Value; + property TALLA48IsNull : Boolean read GetTALLA48IsNull write SetTALLA48IsNull; + property OldTALLA48 : TBcd read GetOldTALLA48Value; + property OldTALLA48IsNull : Boolean read GetOldTALLA48IsNull; + property VTATERMDEV : TBcd read GetVTATERMDEVValue write SetVTATERMDEVValue; + property VTATERMDEVIsNull : Boolean read GetVTATERMDEVIsNull write SetVTATERMDEVIsNull; + property OldVTATERMDEV : TBcd read GetOldVTATERMDEVValue; + property OldVTATERMDEVIsNull : Boolean read GetOldVTATERMDEVIsNull; + property VTAFINALRESC : TBcd read GetVTAFINALRESCValue write SetVTAFINALRESCValue; + property VTAFINALRESCIsNull : Boolean read GetVTAFINALRESCIsNull write SetVTAFINALRESCIsNull; + property OldVTAFINALRESC : TBcd read GetOldVTAFINALRESCValue; + property OldVTAFINALRESCIsNull : Boolean read GetOldVTAFINALRESCIsNull; + property VENTAS : TBcd read GetVENTASValue write SetVENTASValue; + property VENTASIsNull : Boolean read GetVENTASIsNull write SetVENTASIsNull; + property OldVENTAS : TBcd read GetOldVENTASValue; + property OldVENTASIsNull : Boolean read GetOldVENTASIsNull; + property DEVOLUCIONES : TBcd read GetDEVOLUCIONESValue write SetDEVOLUCIONESValue; + property DEVOLUCIONESIsNull : Boolean read GetDEVOLUCIONESIsNull write SetDEVOLUCIONESIsNull; + property OldDEVOLUCIONES : TBcd read GetOldDEVOLUCIONESValue; + property OldDEVOLUCIONESIsNull : Boolean read GetOldDEVOLUCIONESIsNull; + property TOTAL : TBcd read GetTOTALValue write SetTOTALValue; + property TOTALIsNull : Boolean read GetTOTALIsNull write SetTOTALIsNull; + property OldTOTAL : TBcd read GetOldTOTALValue; + property OldTOTALIsNull : Boolean read GetOldTOTALIsNull; + property VALTERMDEV : Currency read GetVALTERMDEVValue write SetVALTERMDEVValue; + property VALTERMDEVIsNull : Boolean read GetVALTERMDEVIsNull write SetVALTERMDEVIsNull; + property OldVALTERMDEV : Currency read GetOldVALTERMDEVValue; + property OldVALTERMDEVIsNull : Boolean read GetOldVALTERMDEVIsNull; + property VALFINALRESC : Currency read GetVALFINALRESCValue write SetVALFINALRESCValue; + property VALFINALRESCIsNull : Boolean read GetVALFINALRESCIsNull write SetVALFINALRESCIsNull; + property OldVALFINALRESC : Currency read GetOldVALFINALRESCValue; + property OldVALFINALRESCIsNull : Boolean read GetOldVALFINALRESCIsNull; + property VALVEN : Currency read GetVALVENValue write SetVALVENValue; + property VALVENIsNull : Boolean read GetVALVENIsNull write SetVALVENIsNull; + property OldVALVEN : Currency read GetOldVALVENValue; + property OldVALVENIsNull : Boolean read GetOldVALVENIsNull; + property VALDEV : Currency read GetVALDEVValue write SetVALDEVValue; + property VALDEVIsNull : Boolean read GetVALDEVIsNull write SetVALDEVIsNull; + property OldVALDEV : Currency read GetOldVALDEVValue; + property OldVALDEVIsNull : Boolean read GetOldVALDEVIsNull; + property VALTOT : Currency read GetVALTOTValue write SetVALTOTValue; + property VALTOTIsNull : Boolean read GetVALTOTIsNull write SetVALTOTIsNull; + property OldVALTOT : Currency read GetOldVALTOTValue; + property OldVALTOTIsNull : Boolean read GetOldVALTOTIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers, uDAInterfaces; + +{ TVentasTerminadasCrossTabBusinessProcessorRules } +constructor TVentasTerminadasCrossTabBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TVentasTerminadasCrossTabBusinessProcessorRules.Destroy; +begin + inherited; +end; + + +{ TVentasTerminadasBusinessProcessorRules } +constructor TVentasTerminadasBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TVentasTerminadasBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TVentasTerminadasBusinessProcessorRules.GetNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMINF]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetNUMINFIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMINF]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasNUMINF]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldNUMINFIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasNUMINF]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetNUMINFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMINF] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetNUMINFIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMINF] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCLAVE1Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE1]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetCLAVE1IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE1]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCLAVE1Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCLAVE1]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCLAVE1IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCLAVE1]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCLAVE1Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE1] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCLAVE1IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE1] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE2]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCLAVE2IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE2]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCLAVE2]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCLAVE2IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCLAVE2]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCLAVE2Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE2] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCLAVE2IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE2] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE3]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCLAVE3IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE3]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCLAVE3Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCLAVE3]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCLAVE3IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCLAVE3]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCLAVE3Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE3] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCLAVE3IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCLAVE3] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasFECHA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetFECHAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasFECHA]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasFECHA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldFECHAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasFECHA]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetFECHAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasFECHA] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetFECHAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasFECHA] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetDIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetDIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIA]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldDIAValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasDIA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldDIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasDIA]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetDIAValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIA] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetDIAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIA] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetDIASEMANAValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIASEMANA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetDIASEMANAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIASEMANA]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldDIASEMANAValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasDIASEMANA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldDIASEMANAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasDIASEMANA]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetDIASEMANAValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIASEMANA] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetDIASEMANAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDIASEMANA] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetMESValue: WideString; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasMES]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetMESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasMES]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldMESValue: WideString; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasMES]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldMESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasMES]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetMESValue(const aValue: WideString); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasMES] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetMESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasMES] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetANOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasANO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetANOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasANO]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldANOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasANO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldANOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasANO]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetANOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasANO] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetANOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasANO] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCENTRO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCENTRO]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCENTRO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCENTROIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCENTRO]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCENTRO] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCENTROIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCENTRO] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENDEDOR]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENDEDOR]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVENDEDORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVENDEDOR]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVENDEDORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVENDEDOR]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVENDEDORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENDEDOR] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVENDEDORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENDEDOR] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMTALON]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetNUMTALONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMTALON]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasNUMTALON]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldNUMTALONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasNUMTALON]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetNUMTALONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMTALON] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetNUMTALONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasNUMTALON] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCODIGO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCODIGO]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCODIGOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCODIGO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCODIGOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCODIGO]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCODIGOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCODIGO] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCODIGOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCODIGO] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasPRODUCTO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasPRODUCTO]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasPRODUCTO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasPRODUCTO]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasPRODUCTO] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasPRODUCTO] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetGRUPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasGRUPOPRODUCTO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetGRUPOPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasGRUPOPRODUCTO]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldGRUPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasGRUPOPRODUCTO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldGRUPOPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasGRUPOPRODUCTO]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetGRUPOPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasGRUPOPRODUCTO] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetGRUPOPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasGRUPOPRODUCTO] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTIPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTIPOPRODUCTO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTIPOPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTIPOPRODUCTO]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTIPOPRODUCTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTIPOPRODUCTO]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTIPOPRODUCTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTIPOPRODUCTO]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTIPOPRODUCTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTIPOPRODUCTO] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTIPOPRODUCTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTIPOPRODUCTO] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLECCION]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLECCION]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCOLECCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCOLECCION]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCOLECCIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCOLECCION]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCOLECCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLECCION] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCOLECCIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLECCION] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLOR]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLOR]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCOLOR]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldCOLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasCOLOR]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLOR] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetCOLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasCOLOR] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA38Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA38]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA38]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA38Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA38]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA38IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA38]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA38Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA38] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA38IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA38] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA40Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA40]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA40]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA40Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA40]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA40IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA40]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA40Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA40] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA40IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA40] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA42Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA42]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA42]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA42Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA42]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA42IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA42]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA42Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA42] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA42IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA42] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA44Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA44]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA44]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA44Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA44]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA44IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA44]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA44Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA44] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA44IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA44] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA46Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA46]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA46]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA46Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA46]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA46IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA46]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA46Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA46] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA46IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA46] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA48Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA48]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTALLA48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA48]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA48Value: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA48]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTALLA48IsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTALLA48]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA48Value(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA48] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTALLA48IsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTALLA48] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVTATERMDEVValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTATERMDEV]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetVTATERMDEVIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTATERMDEV]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVTATERMDEVValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVTATERMDEV]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVTATERMDEVIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVTATERMDEV]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVTATERMDEVValue(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTATERMDEV] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVTATERMDEVIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTATERMDEV] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVTAFINALRESCValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTAFINALRESC]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetVTAFINALRESCIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTAFINALRESC]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVTAFINALRESCValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVTAFINALRESC]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVTAFINALRESCIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVTAFINALRESC]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVTAFINALRESCValue(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTAFINALRESC] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVTAFINALRESCIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVTAFINALRESC] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVENTASValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENTAS]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetVENTASIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENTAS]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVENTASValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVENTAS]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVENTASIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVENTAS]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVENTASValue(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENTAS] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVENTASIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVENTAS] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetDEVOLUCIONESValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDEVOLUCIONES]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetDEVOLUCIONESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDEVOLUCIONES]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldDEVOLUCIONESValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasDEVOLUCIONES]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldDEVOLUCIONESIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasDEVOLUCIONES]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetDEVOLUCIONESValue(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDEVOLUCIONES] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetDEVOLUCIONESIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasDEVOLUCIONES] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetTOTALValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTOTAL]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetTOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTOTAL]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTOTALValue: TBcd; +begin + result := GetVarDecimal(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTOTAL]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldTOTALIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasTOTAL]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTOTALValue(const aValue: TBcd); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTOTAL] := BCDToVariant(aValue); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetTOTALIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasTOTAL] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALTERMDEVValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTERMDEV]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALTERMDEVIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTERMDEV]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALTERMDEVValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALTERMDEV]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALTERMDEVIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALTERMDEV]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALTERMDEVValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTERMDEV] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALTERMDEVIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTERMDEV] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALFINALRESCValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALFINALRESC]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALFINALRESCIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALFINALRESC]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALFINALRESCValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALFINALRESC]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALFINALRESCIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALFINALRESC]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALFINALRESCValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALFINALRESC] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALFINALRESCIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALFINALRESC] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALVENValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALVEN]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALVENIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALVEN]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALVENValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALVEN]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALVENIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALVEN]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALVENValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALVEN] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALVENIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALVEN] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALDEVValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALDEV]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALDEVIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALDEV]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALDEVValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALDEV]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALDEVIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALDEV]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALDEVValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALDEV] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALDEVIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALDEV] := Null; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALTOTValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTOT]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetVALTOTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTOT]); +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALTOTValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALTOT]; +end; + +function TVentasTerminadasBusinessProcessorRules.GetOldVALTOTIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_VentasTerminadasVALTOT]); +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALTOTValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTOT] := aValue; +end; + +procedure TVentasTerminadasBusinessProcessorRules.SetVALTOTIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_VentasTerminadasVALTOT] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID_VentasTerminadasCrossTabDelta, TVentasTerminadasCrossTabBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_VentasTerminadasDelta, TVentasTerminadasBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizControlVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizControlVentasTerminadas.pas new file mode 100644 index 0000000..143ea69 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizControlVentasTerminadas.pas @@ -0,0 +1,65 @@ +unit uBizControlVentasTerminadas; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uBizControlesBase, + uBizVentasTerminadas; + +const + BIZ_CONTROL_VENTASTERMINADAS = 'Client.Control_VentasTerminadas'; + +type + IBizControlVentasTerminadas = interface(IBizControlBase) + ['{BC0C313D-E667-4AC6-BB30-55469970F919}'] + procedure SetItems(const Value : IBizVentasTerminadas); + function GetItems : IBizVentasTerminadas; + property Items : IBizVentasTerminadas read GetItems write SetItems; + end; + + TBizControlVentasTerminadasTableRules = class(TBizControlBaseDataTableRules, IBizControlVentasTerminadas) + protected + FItems : IBizVentasTerminadas; + procedure OnNewRecord(Sender: TDADataTable); override; + procedure SetItems(const Value : IBizVentasTerminadas); virtual; + function GetItems : IBizVentasTerminadas; virtual; + public + procedure Show; override; + property Items : IBizVentasTerminadas read GetItems write SetItems; + end; + +implementation + +uses + uEditorUtils, uDataModuleVentasTerminadas; + +{ TBizControlVentasTerminadasTableRules } + +function TBizControlVentasTerminadasTableRules.GetItems: IBizVentasTerminadas; +begin + Result := FItems; +end; + +procedure TBizControlVentasTerminadasTableRules.OnNewRecord( + Sender: TDADataTable); +begin + inherited; + CATEGORIA := CATEGORIA_VENTA_TERMINADA +end; + +procedure TBizControlVentasTerminadasTableRules.SetItems( + const Value: IBizVentasTerminadas); +begin + FItems := Value; +end; + +procedure TBizControlVentasTerminadasTableRules.Show; +begin + inherited; + ShowEditor(IBizControlVentasTerminadas, Self, etItem); +end; + +initialization + RegisterDataTableRules(BIZ_CONTROL_VENTASTERMINADAS, TBizControlVentasTerminadasTableRules); + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizInformesVentas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizInformesVentas.pas new file mode 100644 index 0000000..b87673d --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizInformesVentas.pas @@ -0,0 +1,82 @@ +unit uBizInformesVentas; + +interface + +uses + Classes, DB, SysUtils, uROClasses, schInformesVentasClient_Intf, uDADataTable; + +const + BIZ_INFORMESVENTAS = 'Client.InformesVentas'; + VALOR_CATEGORIA = 'VENTAS'; + +type + IBizInformesVentas = interface(IListaInformesPorCategoria) + ['{78F747A5-9A35-44D6-8C73-8682A41FE573}'] + procedure Show; + procedure VerPropiedades; + end; + + TBizInformesVentasDataTableRules = class(TListaInformesPorCategoriaDataTableRules, IBizInformesVentas) + protected + function GetVISTAValue: IROStrings; override; + procedure BeforePost(Sender: TDADataTable); override; + public + procedure Show; + procedure VerPropiedades; + end; + +implementation + +uses + Windows, Dialogs, uDACDSDataTable, uDataModuleBase, + uEditorUtils, Variants, uFormPropiedadesInforme, Forms, Controls; + +{ TBizInformesVentasDataTableRules } + +procedure TBizInformesVentasDataTableRules.BeforePost( + Sender: TDADataTable); +begin + inherited; + if Length(CATEGORIA) = 0 then + begin + Edit; + CATEGORIA := VALOR_CATEGORIA; + end; + + if Length(NOMBRE) = 0 then + VerPropiedades; +end; + +function TBizInformesVentasDataTableRules.GetVISTAValue: IROStrings; +begin + result := NewROStrings(); + result.Add(DataTable.Fields[idx_ListaInformesPorCategoriaVISTA].AsString); +end; + +procedure TBizInformesVentasDataTableRules.Show; +begin + ShowEditor(IBizInformesVentas, Self, etItem); +end; + +procedure TBizInformesVentasDataTableRules.VerPropiedades; +begin + with TfrPropiedadesInforme.Create(NIL) do + try + Nombre := Self.NOMBRE; + Descripcion := Self.DESCRIPCION; + if (ShowModal = mrOK) then + begin + DataTable.Edit; + Self.NOMBRE := Nombre; + Self.DESCRIPCION := Descripcion; + Self.ICONO := 2; + end; + finally + Free; + end; +end; + +initialization + RegisterDataTableRules(BIZ_INFORMESVENTAS, TBizInformesVentasDataTableRules); + +end. diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizVentas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizVentas.pas new file mode 100644 index 0000000..31b0782 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizVentas.pas @@ -0,0 +1,115 @@ +unit uBizVentas; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDAInterfaces, + DataAbstract_Intf, uROTypes; + +const + BIZ_VENTAS = 'Client.Ventas'; + + { ListaInformesPorCategoria fields } + fld_VentasCLAVE1 = 'CLAVE1'; + fld_VentasCLAVE2 = 'CLAVE2'; + fld_VentasCLAVE3 = 'CLAVE3'; + fld_VentasNUMINF = 'NUMINF'; + +type + { IRDX_ARTVEN } + IBizVentas = interface(IDAStronglyTypedDataTable) + ['{E82C7F84-0CD4-4A27-80FB-BD608FDCA091}'] + function GetVisibleColumns: String; + procedure SetVisibleColumns(AValue : String); + procedure Show; + property VisibleColumns : String read GetVisibleColumns write SetVisibleColumns; + end; + + { TRDX_ARTVENDataTableRules } + TBIZ_VENTASDataTableRules = class(TDADataTableRules, IBizVentas) + private + FVisibleColumns : String; + FDateParams : TDADatasetParamArray; + protected + function GetVisibleColumns: String; + procedure SetVisibleColumns(AValue : String); + procedure OnBeforeDataRequestCall(DataTable: TDADataTable; + Request: TDARemoteRequest); + procedure OnBeforeSchemaCall(DataTable: TDADataTable; + Request: TDARemoteRequest); + public + constructor Create(aDataTable: TDADataTable); override; + + procedure Show; + property VisibleColumns : String read GetVisibleColumns write SetVisibleColumns; + destructor Destroy; override; + end; + + +implementation + +{ TBIZ_VENTASDataTableRules } + +uses + Dialogs, uEditorUtils, uDataModuleVentas; + +constructor TBIZ_VENTASDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FDateParams := TDADatasetParamArray.Create; + if Assigned(DataTable) then + begin + DataTable.OnBeforeDataRequestCall := OnBeforeDataRequestCall; + DataTable.OnBeforeSchemaCall := OnBeforeSchemaCall; + end; +end; + +destructor TBIZ_VENTASDataTableRules.Destroy; +begin + FreeAndNIL(FDateParams); + inherited; +end; + +function TBIZ_VENTASDataTableRules.GetVisibleColumns: String; +begin + if Length(FVisibleColumns) = 0 then + FVisibleColumns := dmVentas.GetNameColumns; + Result := FVisibleColumns +end; + +procedure TBIZ_VENTASDataTableRules.OnBeforeDataRequestCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('Columns').AsString := VisibleColumns; + FDateParams.Clear; + NewDatasetParam(FDateParams, 'FECHAINI', DataTable.ParamByName('FECHAINI').AsDateTime); + NewDatasetParam(FDateParams, 'FECHAFIN', DataTable.ParamByName('FECHAFIN').AsDateTime); + Request.ParamByName('Params').AsComplexType := FDateParams; +end; + +procedure TBIZ_VENTASDataTableRules.OnBeforeSchemaCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('Columns').AsString := VisibleColumns; +end; + +procedure TBIZ_VENTASDataTableRules.SetVisibleColumns(AValue: String); +begin + if Length(AValue) > 0 then + FVisibleColumns := Avalue + else + FVisibleColumns := dmVentas.GetNameColumns; +end; + +procedure TBIZ_VENTASDataTableRules.Show; +begin + ShowEditor(IBizVentas, Self, etItem); +end; + +initialization + RegisterDataTableRules(BIZ_VENTAS, TBIZ_VENTASDataTableRules); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizVentasTerminadas.pas b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizVentasTerminadas.pas new file mode 100644 index 0000000..2b05c77 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Reglas/uBizVentasTerminadas.pas @@ -0,0 +1,158 @@ +unit uBizVentasTerminadas; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDAInterfaces, + DataAbstract3_Intf, uROTypes, schVentasTerminadasClient_Intf; + +const + BIZ_VENTASTERMINADAS = 'Client.VentasTerminadas'; + BIZ_RESUMENVENTAS = 'Client.ResumenVentas'; + +type + IBizVentasTerminadas = interface(IVentasTerminadas) + ['{A8E22BA0-970A-461D-8C69-E3C37F099F76}'] + function GetVisibleColumns: String; + procedure SetVisibleColumns(const Value: String); + property VisibleColumns : String read GetVisibleColumns write SetVisibleColumns; + end; + + IBizResumenVentas = interface(IVentasTerminadasCrossTab) + ['{F7536368-285D-45B4-B0F0-7DBE724982A3}'] + end; + + TBizResumenVentasDataTableRules = class(TVentasTerminadasCrossTabDataTableRules, IBizResumenVentas) + protected + procedure OnBeforeDataRequestCall(DataTable: TDADataTable; Request: TDARemoteRequest); + procedure OnBeforeSchemaCall(DataTable: TDADataTable; Request: TDARemoteRequest); + public + constructor Create(aDataTable: TDADataTable); override; + end; + + TBizVentasTerminadasDataTableRules = class(TVentasTerminadasDataTableRules, IBizVentasTerminadas) + private + FVisibleColumns : String; + FDateParams : TDADatasetParamArray; + protected + function GetVisibleColumns: String; + procedure SetVisibleColumns(const Value: String); + procedure OnBeforeDataRequestCall(DataTable: TDADataTable; + Request: TDARemoteRequest); + procedure OnBeforeSchemaCall(DataTable: TDADataTable; + Request: TDARemoteRequest); + public + constructor Create(aDataTable: TDADataTable); override; + property VisibleColumns : String read GetVisibleColumns write SetVisibleColumns; + destructor Destroy; override; + end; + + +implementation + +{ TBIZ_VENTASDataTableRules } + +uses + Dialogs, uEditorUtils, uDataModuleVentasTerminadas; + +constructor TBizVentasTerminadasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + FDateParams := TDADatasetParamArray.Create; + if Assigned(DataTable) then + begin + DataTable.OnBeforeDataRequestCall := OnBeforeDataRequestCall; + DataTable.OnBeforeSchemaCall := OnBeforeSchemaCall; + end; +end; + +destructor TBizVentasTerminadasDataTableRules.Destroy; +begin + FreeAndNIL(FDateParams); + inherited; +end; + +function TBizVentasTerminadasDataTableRules.GetVisibleColumns: String; +begin + if Length(FVisibleColumns) = 0 then + FVisibleColumns := dmVentasTerminadas.GetNameColumns; + Result := FVisibleColumns +end; + +procedure TBizVentasTerminadasDataTableRules.OnBeforeDataRequestCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +var + params : TStringList; +begin + Request.ParamByName('Columns').AsString := VisibleColumns; + + // Begin adaptación a DA5 + params := TStringList.Create; + try + params.Add('FECHAINI'); + params.Values['FECHAINI'] := DataTable.ParamByName('FECHAINI').AsString; + + params.Add('FECHAFIN'); + params.Values['FECHAFIN'] := DataTable.ParamByName('FECHAFIN').AsString; + + Request.ParamByName('Params').AsString := params.text; + finally + FreeAndNIL(params); + end; + // End adaptación a DA5 + +{ FDateParams.Clear; + + NewDatasetParam(FDateParams, 'FECHAINI', DataTable.ParamByName('FECHAINI').AsDateTime); + NewDatasetParam(FDateParams, 'FECHAFIN', DataTable.ParamByName('FECHAFIN').AsDateTime); + Request.ParamByName('Params').AsComplexType := FDateParams;} +end; + +procedure TBizVentasTerminadasDataTableRules.OnBeforeSchemaCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('Columns').AsString := VisibleColumns; +end; + +procedure TBizVentasTerminadasDataTableRules.SetVisibleColumns(const Value: String); +begin + if Length(Value) > 0 then + FVisibleColumns := Value + else + FVisibleColumns := dmVentasTerminadas.GetNameColumns; +end; + + +{ TBizResumenVentasDataTableRules } + +constructor TBizResumenVentasDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; + if Assigned(DataTable) then + begin + DataTable.OnBeforeDataRequestCall := OnBeforeDataRequestCall; + DataTable.OnBeforeSchemaCall := OnBeforeSchemaCall; + end; +end; + +procedure TBizResumenVentasDataTableRules.OnBeforeDataRequestCall(DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('FechaIni').AsString := DataTable.ParamByName('FechaIni').AsString; + Request.ParamByName('FechaFin').AsString := DataTable.ParamByName('FechaFin').AsString; +end; + +procedure TBizResumenVentasDataTableRules.OnBeforeSchemaCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + Request.ParamByName('FechaIni').AsString := DataTable.ParamByName('FechaIni').AsString; + Request.ParamByName('FechaFin').AsString := DataTable.ParamByName('FechaFin').AsString; +end; + +initialization + RegisterDataTableRules(BIZ_VENTASTERMINADAS, TBizVentasTerminadasDataTableRules); + RegisterDataTableRules(BIZ_RESUMENVENTAS, TBizResumenVentasDataTableRules); + +finalization + +end. + diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.ddp b/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.ddp differ diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.dfm b/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.dfm new file mode 100644 index 0000000..c8f4de4 --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.dfm @@ -0,0 +1,453 @@ +object srvVentasTerminadas: TsrvVentasTerminadas + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schVentasTerminadas + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object schVentasTerminadas: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'fechaini' + DataType = datString + Value = '' + ParamType = daptInput + end + item + Name = 'fechafin' + DataType = datString + Value = '' + ParamType = daptInput + end + item + Name = 'coleccion' + DataType = datString + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = + 'begin'#10' declare @fechaini varchar(10)'#10' declare @fechafin ' + + 'varchar(10)'#10' declare @coleccion varchar(10)'#10' declare @sq' + + 'l varchar(8000)'#10#10' set @fechaini = :fechaini'#10' set @fechaf' + + 'in = :fechafin'#10' set @coleccion = :coleccion'#10#10' select @sq' + + 'l = '#39'SELECT DIA, SUM(VALTOT) AS TOTAL FROM RDX_V_VENTASTERMINADA' + + 'S WHERE FECHA BETWEEN CONVERT(DATETIME, '#39#39#39' + @FECHAINI + '#39#39#39', 1' + + '03) AND CONVERT(DATETIME, '#39#39#39' + @FECHAFIN + '#39#39#39', 103) AND COLECC' + + 'ION LIKE '#39#39#39' + @COLECCION + '#39#39#39' GROUP BY DIA'#39#10#10' EXECUTE cros' + + 'stab @sql,'#10' '#39'SUM(VALTOT)'#39','#10' '#39'CENTRO'#39','#10' ' + + ' '#39'RDX_V_VENTASTERMINADAS'#39#10'end'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'VentasTerminadasCrossTab' + Fields = <> + end + item + Params = < + item + Name = 'FECHAINI' + Value = '' + ParamType = daptInput + end + item + Name = 'FECHAFIN' + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_V_VENTASTERMINADAS' + SQL = + 'SELECT '#10' NUMINF, CLAVE1, CLAVE2, CLAVE3, FECHA, DIA, DIASEMAN' + + 'A, '#10' MES, ANO, CENTRO, VENDEDOR, NUMTALON, CODIGO, PRODUCTO,'#10 + + ' GRUPOPRODUCTO, TIPOPRODUCTO, COLECCION, COLOR,'#10' TALLA, TA' + + 'LLA38, TALLA40, TALLA42, TALLA44, TALLA46, '#10' TALLA48, VTATERM' + + 'DEV, VTAFINALRESC, VENTAS, DEVOLUCIONES, TOTAL,'#10' VALTERMDEV, ' + + 'VALFINALRESC, VALVEN, VALDEV, VALTOT'#10' FROM'#10' RDX_V_VENTASTERM' + + 'INADAS'#10' WHERE FECHA BETWEEN :FECHAINI AND :FECHAFIN' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMINF' + TableField = 'NUMINF' + end + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'CLAVE2' + TableField = 'CLAVE2' + end + item + DatasetField = 'CLAVE3' + TableField = 'CLAVE3' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'DIA' + TableField = 'DIA' + end + item + DatasetField = 'DIASEMANA' + TableField = 'DIASEMANA' + end + item + DatasetField = 'MES' + TableField = 'MES' + end + item + DatasetField = 'ANO' + TableField = 'ANO' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'VENDEDOR' + TableField = 'VENDEDOR' + end + item + DatasetField = 'NUMTALON' + TableField = 'NUMTALON' + end + item + DatasetField = 'CODIGO' + TableField = 'CODIGO' + end + item + DatasetField = 'PRODUCTO' + TableField = 'PRODUCTO' + end + item + DatasetField = 'GRUPOPRODUCTO' + TableField = 'GRUPOPRODUCTO' + end + item + DatasetField = 'TIPOPRODUCTO' + TableField = 'TIPOPRODUCTO' + end + item + DatasetField = 'COLECCION' + TableField = 'COLECCION' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'TALLA' + TableField = 'TALLA' + end + item + DatasetField = 'TALLA38' + TableField = 'TALLA38' + end + item + DatasetField = 'TALLA40' + TableField = 'TALLA40' + end + item + DatasetField = 'TALLA42' + TableField = 'TALLA42' + end + item + DatasetField = 'TALLA44' + TableField = 'TALLA44' + end + item + DatasetField = 'TALLA46' + TableField = 'TALLA46' + end + item + DatasetField = 'TALLA48' + TableField = 'TALLA48' + end + item + DatasetField = 'VTATERMDEV' + TableField = 'VTATERMDEV' + end + item + DatasetField = 'VTAFINALRESC' + TableField = 'VTAFINALRESC' + end + item + DatasetField = 'VENTAS' + TableField = 'VENTAS' + end + item + DatasetField = 'DEVOLUCIONES' + TableField = 'DEVOLUCIONES' + end + item + DatasetField = 'TOTAL' + TableField = 'TOTAL' + end + item + DatasetField = 'VALTERMDEV' + TableField = 'VALTERMDEV' + end + item + DatasetField = 'VALFINALRESC' + TableField = 'VALFINALRESC' + end + item + DatasetField = 'VALVEN' + TableField = 'VALVEN' + end + item + DatasetField = 'VALDEV' + TableField = 'VALDEV' + end + item + DatasetField = 'VALTOT' + TableField = 'VALTOT' + end> + end> + Name = 'VentasTerminadas' + Fields = < + item + Name = 'NUMINF' + DataType = datString + Size = 35 + InPrimaryKey = True + end + item + Name = 'CLAVE1' + DataType = datDecimal + InPrimaryKey = True + end + item + Name = 'CLAVE2' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'CLAVE3' + DataType = datInteger + InPrimaryKey = True + end + item + Name = 'FECHA' + DataType = datDateTime + DisplayLabel = 'Fecha' + end + item + Name = 'DIA' + DataType = datInteger + DisplayLabel = 'D'#237'a' + end + item + Name = 'DIASEMANA' + DataType = datWideString + Size = 30 + DisplayLabel = 'D'#237'a de la semana' + end + item + Name = 'MES' + DataType = datWideString + Size = 30 + DisplayLabel = 'Mes' + end + item + Name = 'ANO' + DataType = datInteger + DisplayLabel = 'A'#241'o' + end + item + Name = 'CENTRO' + DataType = datString + Size = 25 + DisplayLabel = 'Centro' + end + item + Name = 'VENDEDOR' + DataType = datString + Size = 66 + DisplayLabel = 'Vendedor' + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + end + item + Name = 'CODIGO' + DataType = datString + Size = 12 + DisplayLabel = 'C'#243'digo producto' + end + item + Name = 'PRODUCTO' + DataType = datString + Size = 40 + DisplayLabel = 'Producto' + end + item + Name = 'GRUPOPRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Grupo' + end + item + Name = 'TIPOPRODUCTO' + DataType = datString + Size = 25 + DisplayLabel = 'Tipo' + end + item + Name = 'COLECCION' + DataType = datString + Size = 6 + DisplayLabel = 'Colecci'#243'n' + end + item + Name = 'COLOR' + DataType = datString + Size = 10 + DisplayLabel = 'Color' + end + item + Name = 'TALLA' + DataType = datString + Size = 8 + DisplayLabel = 'Talla' + Alignment = taRightJustify + end + item + Name = 'TALLA38' + DataType = datDecimal + DisplayLabel = '38' + Alignment = taRightJustify + end + item + Name = 'TALLA40' + DataType = datDecimal + DisplayLabel = '40' + Alignment = taRightJustify + end + item + Name = 'TALLA42' + DataType = datDecimal + DisplayLabel = '42' + Alignment = taRightJustify + end + item + Name = 'TALLA44' + DataType = datDecimal + DisplayLabel = '44' + Alignment = taRightJustify + end + item + Name = 'TALLA46' + DataType = datDecimal + DisplayLabel = '46' + Alignment = taRightJustify + end + item + Name = 'TALLA48' + DataType = datDecimal + DisplayLabel = '48' + Alignment = taRightJustify + end + item + Name = 'VTATERMDEV' + DataType = datDecimal + DisplayLabel = 'Vta.Term/Dev' + Alignment = taRightJustify + end + item + Name = 'VTAFINALRESC' + DataType = datDecimal + DisplayLabel = 'Vta.Final/Resc' + Alignment = taRightJustify + end + item + Name = 'VENTAS' + DataType = datDecimal + DisplayLabel = 'Ventas' + Alignment = taRightJustify + end + item + Name = 'DEVOLUCIONES' + DataType = datDecimal + DisplayLabel = 'Devoluciones' + Alignment = taRightJustify + end + item + Name = 'TOTAL' + DataType = datDecimal + DisplayLabel = 'Total ventas' + Alignment = taRightJustify + end + item + Name = 'VALTERMDEV' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Val.Term/Dev' + Alignment = taRightJustify + end + item + Name = 'VALFINALRESC' + DataType = datCurrency + DecimalPrecision = 2 + LogChanges = False + DisplayLabel = 'Val.Final/Resc' + ReadOnly = True + Alignment = taRightJustify + ServerCalculated = True + end + item + Name = 'VALVEN' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Imp. ventas' + Alignment = taRightJustify + end + item + Name = 'VALDEV' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Imp. devoluciones' + Alignment = taRightJustify + end + item + Name = 'VALTOT' + DataType = datCurrency + DecimalPrecision = 2 + DisplayLabel = 'Imp. Total' + Alignment = taRightJustify + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 56 + Top = 32 + end + object DABINAdapter: TDABINAdapter + Left = 56 + Top = 96 + end +end diff --git a/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.pas b/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.pas new file mode 100644 index 0000000..780429f --- /dev/null +++ b/2.1.0/Source/Modulos/VentasTerminadas/Servidor/srvVentasTerminadas_Impl.pas @@ -0,0 +1,210 @@ +unit srvVentasTerminadas_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, + uDataModuleServer, uDAInterfaces, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TsrvVentasTerminadas } + TsrvVentasTerminadas = class(TDARemoteService, IsrvVentasTerminadas) + DABINAdapter: TDABINAdapter; + schVentasTerminadas: TDASchema; + private + protected + { IsrvVentasTerminadas methods } + function GetData(const DatasetName: String; const MaxRecords: Integer; const Columns: String; const Params: TDADatasetParamArray): Binary; + function GetDataEx(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; + function GetSchema(const DatasetName: String; const Columns: String): Binary; + function GetDataCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; + function GetSchemaCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uSchemaUtilsServer, dialogs; + +const + CAMPOS_SUMA = '#TALLA38#TALLA40#TALLA42#TALLA44#TALLA46#TALLA48#VENTAS#DEVOLUCIONES#TOTAL#VALVEN#VALDEV#VALTOT#VTATERMDEV#VTAFINALRESC#VALTERMDEV#VALFINALRESC#'; + +procedure Create_srvVentasTerminadas(out anInstance : IUnknown); +begin + anInstance := TsrvVentasTerminadas.Create(NIL); +end; + +{ srvVentasTerminadas } + +function TsrvVentasTerminadas.GetData(const DatasetName: String; + const MaxRecords: Integer; const Columns: String; + const Params: TDADatasetParamArray): TROBinaryMemoryStream; +var + ds : IDADataset; + i : integer; +begin + result := Binary.Create; + try + { Prepares the parameter arrays} + + with TReplicarDataSet.Create do + begin + SourceDataSetName := DatasetName; + Service := Self; + Columnas := Columns; + ColumnasQueSuman := CAMPOS_SUMA; + try + ds := GetNewDataSet; + finally + Free; + end; + end; + + for i := 0 to (Params.Count-1) do + ds.ParamByName(Params[i].Name).Value := Params[i].Value; + ds.Open; + ServiceAdapter.WriteDataset(Result, ds, [woRows], MaxRecords); + except + FreeAndNIl(result); + raise; + end; +end; + +function TsrvVentasTerminadas.GetDataCrossTab(const FechaIni, FechaFin: String; const Coleccion: String): Binary; +var + ds : IDADataset; + AColeccion : String; +begin + if (Length(Coleccion) = 0) or (UpperCase(Coleccion) = 'TODAS') then + AColeccion := '%' + else + AColeccion := Coleccion; + + try + Result := Binary.Create; + ds := schVentasTerminadas.NewDataset(Connection, 'VentasTerminadasCrossTab', ['FECHAINI', 'FECHAFIN', 'COLECCION'], [FechaIni, FechaFin, AColeccion]);//['01/07/2006', '31/07/2006']); + ds.Open; + ServiceAdapter.WriteDataset(Result, ds, [woSchema, woRows], -1); + except + FreeAndNIl(result); + raise; + end; +end; + +function TsrvVentasTerminadas.GetDataEx(const DatasetName, Columns, + Params: String; const MaxRecords: Integer): Binary; +var + ds : IDADataset; + i : integer; + pars: TStringList; + parnames: array of string; + parvalues: array of Variant; +begin + pars := TStringList.Create; + result := Binary.Create; + try + try + pars.Text := Params; + SetLength(parnames, pars.Count); + SetLength(parvalues, pars.Count); + for i := 0 to (pars.Count-1) do begin + parnames[i] := pars.Names[i]; + parvalues[i] := pars.Values[pars.Names[i]]; + end; + + with TReplicarDataSet.Create do + begin + SourceDataSetName := DatasetName; + Service := Self; + Columnas := Columns; + ColumnasQueSuman := CAMPOS_SUMA; + try + ds := GetNewDataSet; + finally + Free; + end; + end; + + // Fills the parameters (if any are specified) + if (Length(parnames) > 0) then + begin + for i := 0 to (Length(parnames) - 1) do + ds.ParamByName(parnames[i]).Value := parvalues[i]; + end; + + ds.Open; + ServiceAdapter.WriteDataset(Result, ds, [woRows], MaxRecords); + except + FreeAndNIl(result); + raise; + end; + finally + FreeANDNil(pars); + end; +end; + +function TsrvVentasTerminadas.GetSchema(const DatasetName: String; const Columns: String): TROBinaryMemoryStream; +var + ds : IDADataset; +begin + result := Binary.Create; + try + with TReplicarDataSet.Create do + begin + SourceDataSetName := DatasetName; + Service := Self; + Columnas := Columns; + ColumnasQueSuman := CAMPOS_SUMA; + try + ds := GetNewDataSet; + finally + Free; + end; + end; + + ServiceAdapter.WriteDataset(result, ds, [woSchema]); + except + FreeAndNIl(result); + raise; + end; +end; + +function TsrvVentasTerminadas.GetSchemaCrossTab(const FechaIni, FechaFin: String; const Coleccion: String): Binary; +var + ds : IDADataset; + AColeccion : String; +begin + if (Length(Coleccion) = 0) or (UpperCase(Coleccion) = 'TODAS') then + AColeccion := '%' + else + AColeccion := Coleccion; + + try + Result := Binary.Create; + ds := schVentasTerminadas.NewDataset(Connection, 'VentasTerminadasCrossTab', ['FECHAINI', 'FECHAFIN', 'COLECCION'], [FechaIni, FechaFin, AColeccion]);//['01/07/2006', '31/07/2006']); + ds.Open; + ServiceAdapter.WriteDataset(Result, ds, [woSchema]); + except + FreeAndNIl(result); + raise; + end; +end; + +initialization + TROClassFactory.Create('srvVentasTerminadas', Create_srvVentasTerminadas, TsrvVentasTerminadas_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/AdminPV_Server.bdsproj b/2.1.0/Source/Servidor/AdminPV_Server.bdsproj new file mode 100644 index 0000000..dee15b8 --- /dev/null +++ b/2.1.0/Source/Servidor/AdminPV_Server.bdsproj @@ -0,0 +1,175 @@ + + + + + + + + + + + + AdminPV_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 + 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\Servidor + .\ + ..\Lib + ..\Lib + ..\Lib;..\Base + 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;EasyListviewD7;RemObjects_Indy_D10;IndyProtocols;IndyCore;IndySystem;PascalScript_RO_D10;DataAbstract_Core_D10;DataAbstract_Scripting_D10;DataAbstract_IDE_D10 + + False + + + + + + False + + + True + False + + + + $00000000 + C:\Archivos de programa\Borland\Delphi7\Bin\ + + + True + False + 1 + 2 + 5 + 0 + False + False + False + False + False + 3082 + 1252 + + + Rodax Software S.L. + + 1.2.5.0 + + + + + AdminPV_Server + 1.2.5.0 + + miércoles, 05 de septiembre de 2007 19:15 + + + diff --git a/2.1.0/Source/Servidor/AdminPV_Server.cfg b/2.1.0/Source/Servidor/AdminPV_Server.cfg new file mode 100644 index 0000000..7d0152a --- /dev/null +++ b/2.1.0/Source/Servidor/AdminPV_Server.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-E"..\..\Output\Servidor" +-N".\" +-LE"..\Lib" +-LN"..\Lib" +-U"..\Lib;..\Base" +-O"..\Lib;..\Base" +-I"..\Lib;..\Base" +-R"..\Lib;..\Base" +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Servidor/AdminPV_Server.dof b/2.1.0/Source/Servidor/AdminPV_Server.dof new file mode 100644 index 0000000..e69de29 diff --git a/2.1.0/Source/Servidor/AdminPV_Server.dpr b/2.1.0/Source/Servidor/AdminPV_Server.dpr new file mode 100644 index 0000000..0bdf866 --- /dev/null +++ b/2.1.0/Source/Servidor/AdminPV_Server.dpr @@ -0,0 +1,77 @@ +program AdminPV_Server; + +{#ROGEN:VARELA.rodl} // RemObjects: Careful, do not remove! + +uses + uROComInit, + Forms, + fServerForm in 'fServerForm.pas' {ServerForm}, + VARELA_Intf in 'VARELA_Intf.pas', + VARELA_Invk in 'VARELA_Invk.pas', + EDI_Reader in 'EDI\EDI_Reader.pas', + EDI_INVRPT in 'EDI\EDI_INVRPT.pas', + EDI_SLSRPT in 'EDI\EDI_SLSRPT.pas', + schEDILogClient_Intf in '..\Modulos\FicherosEDI\Reglas\schEDILogClient_Intf.pas', + schEDILogServer_Intf in '..\Modulos\FicherosEDI\Reglas\schEDILogServer_Intf.pas', + uDataModuleServer in 'uDataModuleServer.pas' {dmServer: TDataModule}, + uFrameConfiguracion in 'Configuracion\uFrameConfiguracion.pas' {FrameConfiguracion: TFrame}, + uConexionBD in 'Configuracion\uConexionBD.pas' {frConexionBD: TFrame}, + uConfGeneral in 'Configuracion\uConfGeneral.pas' {frConfGeneral: TFrame}, + uConfiguracion in 'Configuracion\uConfiguracion.pas' {fConfiguracion}, + uBizEDISales in 'Services\EDI_Sales\uBizEDISales.pas', + schEDISalesClient_Intf in 'Services\EDI_Sales\schEDISalesClient_Intf.pas', + schEDISalesServer_Intf in 'Services\EDI_Sales\schEDISalesServer_Intf.pas', + uConfFicherosEDI in 'Configuracion\uConfFicherosEDI.pas' {frConfFicherosEDI: TFrame}, + uDataModuleEDI_Sales in 'Services\EDI_Sales\uDataModuleEDI_Sales.pas' {dmEDISales: TDataModule}, + uDataTableUtils in '..\Base\uDataTableUtils.pas', + srvLogin_Impl in 'Services\Login\srvLogin_Impl.pas' {srvLogin: TDARemoteService}, + srvInformes_Impl in 'srvInformes_Impl.pas' {srvInformes: TDARemoteService}, + srvTransfereciaFicheros_Impl in 'Services\TransferenciaFicheros\srvTransfereciaFicheros_Impl.pas' {srvTransfereciaFicheros: TRORemoteDataModule}, + srvControles_Impl in '..\ControlesBase\Servidor\srvControles_Impl.pas' {srvControles: TDARemoteService}, + srvVentasEnProceso_Impl in '..\Modulos\VentasProceso\Servidor\srvVentasEnProceso_Impl.pas' {srvVentasEnProceso: TDARemoteService}, + schVentasEnProcesoClient_Intf in '..\Modulos\VentasProceso\Reglas\schVentasEnProcesoClient_Intf.pas', + schVentasEnProcesoServer_Intf in '..\Modulos\VentasProceso\Reglas\schVentasEnProcesoServer_Intf.pas', + uSchemaUtilsServer in 'uSchemaUtilsServer.pas', + srvVentasTerminadas_Impl in '..\Modulos\VentasTerminadas\Servidor\srvVentasTerminadas_Impl.pas' {srvVentasTerminadas: TDARemoteService}, + srvReferenciaGenerica_Impl in '..\Modulos\ReferenciaGenerica\Servidor\srvReferenciaGenerica_Impl.pas' {srvReferenciaGenerica: TDARemoteService}, + uBizReferenciaGenericaServer in '..\Modulos\ReferenciaGenerica\Reglas\uBizReferenciaGenericaServer.pas', + uDataModuleEDI_Inventary in 'Services\EDI_Inventary\uDataModuleEDI_Inventary.pas' {dmEDIInventary: TDataModule}, + schEDIInventaryClient_Intf in 'Services\EDI_Inventary\schEDIInventaryClient_Intf.pas', + schEDIInventaryServer_Intf in 'Services\EDI_Inventary\schEDIInventaryServer_Intf.pas', + uBizEDIInventary in 'Services\EDI_Inventary\uBizEDIInventary.pas', + EDI_Utils in 'EDI_Utils.pas', + srvRecepciones_Impl in '..\Modulos\Recepciones\Servidor\srvRecepciones_Impl.pas' {srvRecepciones: TDARemoteService}, + srvDevoluciones_Impl in '..\Modulos\Devoluciones\Servidor\srvDevoluciones_Impl.pas' {srvDevoluciones: TDARemoteService}, + srvTraspasos_Impl in '..\Modulos\Traspasos\Servidor\srvTraspasos_Impl.pas' {srvTraspasos: TDARemoteService}, + srvStock_Impl in '..\Modulos\Stock\Servidor\srvStock_Impl.pas' {srvStock: TDARemoteService}, + uAcercaDe in 'uAcercaDe.pas' {fAcercaDe}, + srvParametros_Impl in '..\Modulos\Parametros\Servidor\srvParametros_Impl.pas' {srvParametros: TDARemoteService}, + schParametrosClient_Intf in '..\Modulos\Parametros\Reglas\schParametrosClient_Intf.pas', + schParametrosServer_Intf in '..\Modulos\Parametros\Reglas\schParametrosServer_Intf.pas', + EDI_Inventary_Impl in 'EDI_Inventary_Impl.pas', + EDI_Sales_Impl in 'EDI_Sales_Impl.pas', + EDI_Log_Impl in 'EDI_Log_Impl.pas', + schControlesClient_Intf in '..\ControlesBase\Reglas\schControlesClient_Intf.pas', + schControlesServer_Intf in '..\ControlesBase\Reglas\schControlesServer_Intf.pas', + RegExpr in 'RegExpr.pas', + uDBSelectionList in '..\Base\uDBSelectionList.pas', + schReferenciaGenericaClient_Intf in '..\Modulos\ReferenciaGenerica\Reglas\schReferenciaGenericaClient_Intf.pas', + schReferenciaGenericaServer_Intf in '..\Modulos\ReferenciaGenerica\Reglas\schReferenciaGenericaServer_Intf.pas', + schVentasTerminadasClient_Intf in '..\Modulos\VentasTerminadas\Reglas\schVentasTerminadasClient_Intf.pas', + schVentasTerminadasServer_Intf in '..\Modulos\VentasTerminadas\Reglas\schVentasTerminadasServer_Intf.pas', + uIntegerList in '..\Base\uIntegerList.pas', + schStockClient_Intf in '..\Modulos\Stock\Reglas\schStockClient_Intf.pas', + schStockServer_Intf in '..\Modulos\Stock\Reglas\schStockServer_Intf.pas'; + +{$R *.res} +{$R RODLFile.res} + +begin + Application.Initialize; + Application.Title := ''; + Application.CreateForm(TdmServer, dmServer); + Application.CreateForm(TServerForm, ServerForm); + Application.ShowMainForm := False; +// Application.MainFormOnTaskBar := False; + Application.Run; +end. diff --git a/2.1.0/Source/Servidor/AdminPV_Server.dproj b/2.1.0/Source/Servidor/AdminPV_Server.dproj new file mode 100644 index 0000000..6f62d35 --- /dev/null +++ b/2.1.0/Source/Servidor/AdminPV_Server.dproj @@ -0,0 +1,647 @@ + + + + {86364157-b301-43dd-bfad-250a58064559} + AdminPV_Server.dpr + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Servidor\AdminPV_Server.exe + vcl;rtl;vclx;vclactnband;dbrtl;vcldb;vcldbx;bdertl;dsnap;dbxcds;DbxCommonDriver;dbexpress;dsnapcon;vclib;ibxpress;adortl;IndyCore;IndySystem;IndyProtocols;VclSmp;vclie;xmlrtl;RemObjects_Core_D10;RemObjects_WebBroker_D10;RemObjects_RODX_D10;RemObjects_BPDX_D10;RemObjects_Synapse_D10;RemObjects_Indy_D10;DataAbstract_Core_D10;DataAbstract_IDE_D10;DataAbstract_DBXDriver_D10B;DataAbstract_SQLiteDriver_D10;DataAbstract_Scripting_D10;PascalScript_RO_D10;cxEditorsD10;cxLibraryD10;dxThemeD10;cxDataD10;cxExtEditorsD10;cxGridD10;cxPageControlD10;cxSchedulerD10;cxTreeListD10;cxVerticalGridD10;dxBarD10;dxComnD10;dxBarDBNavD10;dxBarExtDBItemsD10;dxBarExtItemsD10;dxDockingD10;dxLayoutControlD10;dxNavBarD10;dxPSCoreD10;dxsbD10;fqb100;frx10;frxADO10;frxBDE10;frxDB10;frxe10;frxIBX10;fs10;fsADO10;fsBDE10;fsDB10;fsIBX10;PluginSDK_D10R;PNG_D10;PngComponentsD10;tb2k_d10;tbx_d10;ccpack10dsg;ccpack10;EasyListviewD10;GUISDK_D10;JvAppFrmD10R;JvCoreD10R;JclVcl;Jcl;JvSystemD10R;JvStdCtrlsD10R;JvBandsD10R;JvDBD10R;JvDlgsD10R;JvBDED10R;JvCmpD10R;JvCryptD10R;JvCtrlsD10R;JvCustomD10R;JvDockingD10R;JvDotNetCtrlsD10R;JvEDID10R;JvGlobusD10R;JvHMID10R;JvInterpreterD10R;JvJansD10R;JvManagedThreadsD10R;JvMMD10R;JvPageCompsD10R;JvPrintPreviewD10R;JvRuntimeDesignD10R;JvTimeFrameworkD10R;JvUIBD10R;JvValidatorsD10R;JvWizardD10R;JvXPCtrlsD10R;cxIntlPrintSys3D10;cxExportD10;cxIntl5D10;RemObjects_DataSnap_D10 + + + 7.0 + False + False + True + 0 + 3 + ..\..\Output\Release\Servidor + .\ + .\ + .\ + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + RELEASE + + + 7.0 + True + 3 + ..\..\Output\Debug\Servidor + .\ + .\ + .\ + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + DEBUG; + + + Delphi.Personality + VCLApplication + + FalseTrueFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse2100FalseFalseFalseFalseFalse30821252Rodax Software S.L.2.1.0.0AdminPV_Server2.0.0.0viernes, 05 de octubre de 2007 17:13AdminPV_Server.dpr + ExpressPrinting System by Developer Express Inc. + 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 + + + + + + MainSource + + + + + + + +
srvControles
+
+ +
srvDevoluciones
+
+ + + + + +
srvParametros
+
+ +
srvRecepciones
+
+ + + + +
srvReferenciaGenerica
+
+ + + +
srvStock
+
+ +
srvTraspasos
+
+ + + +
srvVentasEnProceso
+
+ + + +
srvVentasTerminadas
+
+ +
frConexionBD
+
+ +
frConfFicherosEDI
+
+ +
frConfGeneral
+
+ +
fConfiguracion
+
+ +
FrameConfiguracion
+
+ + + + + + + + +
ServerForm
+
+ + + + + +
dmEDIInventary
+
+ + + + +
dmEDISales
+
+ +
srvLogin
+
+ +
srvTransfereciaFicheros
+
+ +
srvInformes
+
+ +
fAcercaDe
+
+ +
dmServer
+
+ + + +
+
+ diff --git a/2.1.0/Source/Servidor/AdminPV_Server.drc b/2.1.0/Source/Servidor/AdminPV_Server.drc new file mode 100644 index 0000000..be2936a --- /dev/null +++ b/2.1.0/Source/Servidor/AdminPV_Server.drc @@ -0,0 +1,3049 @@ +/* VER185 + Generated by the CodeGear 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 cxGridStrs_scxGridDeletingConfirmationCaption 64048 +#define cxGridStrs_scxGridDeletingFocusedConfirmationText 64049 +#define cxGridStrs_scxGridDeletingSelectedConfirmationText 64050 +#define cxGridStrs_scxGridNoDataInfoText 64051 +#define cxGridStrs_scxGridNewItemRowInfoText 64052 +#define cxGridStrs_scxGridFilterIsEmpty 64053 +#define cxGridStrs_scxGridCustomizationFormCaption 64054 +#define cxGridStrs_scxGridCustomizationFormColumnsPageCaption 64055 +#define cxGridStrs_scxGridGroupByBoxCaption 64056 +#define cxGridStrs_scxGridFilterCustomizeButtonCaption 64057 +#define cxGridStrs_scxGridColumnsQuickCustomizationHint 64058 +#define MidConst_SDefExprFail 64064 +#define MidConst_SNoEditsAllowed 64065 +#define MidConst_SNoDeletesAllowed 64066 +#define MidConst_SNoInsertsAllowed 64067 +#define MidConst_SConnectionMissing 64068 +#define MidConst_SNoCircularConnection 64069 +#define cxPCConsts_scxPCImageListIndexError 64070 +#define cxPCConsts_scxPCNoBaseImages 64071 +#define cxPCConsts_scxPCNoRegisteredStyles 64072 +#define cxPCConsts_scxPCPageIndexError 64073 +#define cxPCConsts_scxPCPainterClassError 64074 +#define cxPCConsts_scxPCTabCountEqualsZero 64075 +#define cxPCConsts_scxPCTabIndexError 64076 +#define cxPCConsts_scxPCTabVisibleIndexOutsOfBounds 64077 +#define cxPCConsts_scxPCVisibleTabListEmpty 64078 +#define cxPCConsts_scxPCAllowRotateError 64079 +#define cxFilterControlStrs_cxSFilterControlDialogActionCancelCaption 64080 +#define cxFilterControlStrs_cxSFilterControlDialogFileExt 64081 +#define cxFilterControlStrs_cxSFilterControlDialogFileFilter 64082 +#define MidConst_SNoDataProvider 64083 +#define MidConst_SInvalidDataPacket 64084 +#define MidConst_SRefreshError 64085 +#define MidConst_SNoCircularReference 64086 +#define MidConst_SErrorLoadingMidas 64087 +#define MidConst_SCannotCreateDataSet 64088 +#define MidConst_SNoConnectToBroker 64089 +#define MidConst_SNoParentConnection 64090 +#define MidConst_SInvalidOptParamType 64091 +#define MidConst_SConstraintFailed 64092 +#define MidConst_SField 64093 +#define MidConst_SRecConstFail 64094 +#define MidConst_SFieldConstFail 64095 +#define cxFilterControlStrs_cxSFilterDialogCaption 64096 +#define cxFilterControlStrs_cxSFilterDialogInvalidValue 64097 +#define cxFilterControlStrs_cxSFilterDialogUse 64098 +#define cxFilterControlStrs_cxSFilterDialogSingleCharacter 64099 +#define cxFilterControlStrs_cxSFilterDialogCharactersSeries 64100 +#define cxFilterControlStrs_cxSFilterDialogOperationAnd 64101 +#define cxFilterControlStrs_cxSFilterDialogOperationOr 64102 +#define cxFilterControlStrs_cxSFilterDialogRows 64103 +#define cxFilterControlStrs_cxSFilterControlDialogCaption 64104 +#define cxFilterControlStrs_cxSFilterControlDialogNewFile 64105 +#define cxFilterControlStrs_cxSFilterControlDialogOpenDialogCaption 64106 +#define cxFilterControlStrs_cxSFilterControlDialogSaveDialogCaption 64107 +#define cxFilterControlStrs_cxSFilterControlDialogActionSaveCaption 64108 +#define cxFilterControlStrs_cxSFilterControlDialogActionOpenCaption 64109 +#define cxFilterControlStrs_cxSFilterControlDialogActionApplyCaption 64110 +#define cxFilterControlStrs_cxSFilterControlDialogActionOkCaption 64111 +#define cxEditConsts_scxMaskEditInvalidEditValue 64112 +#define cxEditConsts_cxSSpinEditInvalidNumericValue 64113 +#define cxFilterControlStrs_cxSFilterBoolOperatorAnd 64114 +#define cxFilterControlStrs_cxSFilterBoolOperatorOr 64115 +#define cxFilterControlStrs_cxSFilterBoolOperatorNotAnd 64116 +#define cxFilterControlStrs_cxSFilterBoolOperatorNotOr 64117 +#define cxFilterControlStrs_cxSFilterRootButtonCaption 64118 +#define cxFilterControlStrs_cxSFilterAddCondition 64119 +#define cxFilterControlStrs_cxSFilterAddGroup 64120 +#define cxFilterControlStrs_cxSFilterRemoveRow 64121 +#define cxFilterControlStrs_cxSFilterClearAll 64122 +#define cxFilterControlStrs_cxSFilterFooterAddCondition 64123 +#define cxFilterControlStrs_cxSFilterGroupCaption 64124 +#define cxFilterControlStrs_cxSFilterRootGroupCaption 64125 +#define cxFilterControlStrs_cxSFilterControlNullString 64126 +#define cxFilterControlStrs_cxSFilterErrorBuilding 64127 +#define cxEditConsts_scxRegExprCantCreateEmptyBlock 64128 +#define cxEditConsts_scxRegExprIllegalSymbol 64129 +#define cxEditConsts_scxRegExprIllegalQuantifier 64130 +#define cxEditConsts_scxRegExprIllegalIntegerValue 64131 +#define cxEditConsts_scxRegExprTooBigReferenceNumber 64132 +#define cxEditConsts_scxRegExprCantCreateEmptyEnum 64133 +#define cxEditConsts_scxRegExprSubrangeOrder 64134 +#define cxEditConsts_scxRegExprHexNumberExpected0 64135 +#define cxEditConsts_scxRegExprHexNumberExpected 64136 +#define cxEditConsts_scxRegExprMissing 64137 +#define cxEditConsts_scxRegExprUnnecessary 64138 +#define cxEditConsts_scxRegExprIncorrectSpace 64139 +#define cxEditConsts_scxRegExprNotCompiled 64140 +#define cxEditConsts_scxRegExprIncorrectParameterQuantifier 64141 +#define cxEditConsts_scxRegExprCantUseParameterQuantifier 64142 +#define cxEditConsts_scxMaskEditRegExprError 64143 +#define cxEditConsts_scxSEditRepositoryImageItem 64144 +#define cxEditConsts_scxSEditRepositoryMaskItem 64145 +#define cxEditConsts_scxSEditRepositoryMemoItem 64146 +#define cxEditConsts_scxSEditRepositoryMRUItem 64147 +#define cxEditConsts_scxSEditRepositoryPopupItem 64148 +#define cxEditConsts_scxSEditRepositorySpinItem 64149 +#define cxEditConsts_scxSEditRepositoryRadioGroupItem 64150 +#define cxEditConsts_scxSEditRepositoryTextItem 64151 +#define cxEditConsts_scxSEditRepositoryTimeItem 64152 +#define cxEditConsts_scxRegExprLine 64153 +#define cxEditConsts_scxRegExprChar 64154 +#define cxEditConsts_scxRegExprNotAssignedSourceStream 64155 +#define cxEditConsts_scxRegExprEmptySourceStream 64156 +#define cxEditConsts_scxRegExprCantUsePlusQuantifier 64157 +#define cxEditConsts_scxRegExprCantUseStarQuantifier 64158 +#define cxEditConsts_scxRegExprCantCreateEmptyAlt 64159 +#define cxEditConsts_cxNavigatorHint_Edit 64160 +#define cxEditConsts_cxNavigatorHint_Post 64161 +#define cxEditConsts_cxNavigatorHint_Cancel 64162 +#define cxEditConsts_cxNavigatorHint_Refresh 64163 +#define cxEditConsts_cxNavigatorHint_SaveBookmark 64164 +#define cxEditConsts_cxNavigatorHint_GotoBookmark 64165 +#define cxEditConsts_cxNavigatorHint_Filter 64166 +#define cxEditConsts_scxSEditRepositoryBlobItem 64167 +#define cxEditConsts_scxSEditRepositoryButtonItem 64168 +#define cxEditConsts_scxSEditRepositoryCalcItem 64169 +#define cxEditConsts_scxSEditRepositoryCheckBoxItem 64170 +#define cxEditConsts_scxSEditRepositoryComboBoxItem 64171 +#define cxEditConsts_scxSEditRepositoryCurrencyItem 64172 +#define cxEditConsts_scxSEditRepositoryDateItem 64173 +#define cxEditConsts_scxSEditRepositoryHyperLinkItem 64174 +#define cxEditConsts_scxSEditRepositoryImageComboBoxItem 64175 +#define cxEditConsts_cxSDateFifth 64176 +#define cxEditConsts_cxSDateSixth 64177 +#define cxEditConsts_cxSDateSeventh 64178 +#define cxEditConsts_cxSDateBOM 64179 +#define cxEditConsts_cxSDateEOM 64180 +#define cxEditConsts_cxSDateNow 64181 +#define cxEditConsts_scxSCalcError 64182 +#define cxEditConsts_scxSHyperLinkPrefix 64183 +#define cxEditConsts_cxNavigatorHint_First 64184 +#define cxEditConsts_cxNavigatorHint_Prior 64185 +#define cxEditConsts_cxNavigatorHint_PriorPage 64186 +#define cxEditConsts_cxNavigatorHint_Next 64187 +#define cxEditConsts_cxNavigatorHint_NextPage 64188 +#define cxEditConsts_cxNavigatorHint_Last 64189 +#define cxEditConsts_cxNavigatorHint_Insert 64190 +#define cxEditConsts_cxNavigatorHint_Delete 64191 +#define cxEditConsts_cxSDatePopupToday 64192 +#define cxEditConsts_cxSDateError 64193 +#define cxEditConsts_cxSDateToday 64194 +#define cxEditConsts_cxSDateYesterday 64195 +#define cxEditConsts_cxSDateTomorrow 64196 +#define cxEditConsts_cxSDateSunday 64197 +#define cxEditConsts_cxSDateMonday 64198 +#define cxEditConsts_cxSDateTuesday 64199 +#define cxEditConsts_cxSDateWednesday 64200 +#define cxEditConsts_cxSDateThursday 64201 +#define cxEditConsts_cxSDateFriday 64202 +#define cxEditConsts_cxSDateSaturday 64203 +#define cxEditConsts_cxSDateFirst 64204 +#define cxEditConsts_cxSDateSecond 64205 +#define cxEditConsts_cxSDateThird 64206 +#define cxEditConsts_cxSDateFourth 64207 +#define cxEditConsts_cxSBlobButtonOK 64208 +#define cxEditConsts_cxSBlobButtonCancel 64209 +#define cxEditConsts_cxSBlobButtonClose 64210 +#define cxEditConsts_cxSBlobMemo 64211 +#define cxEditConsts_cxSBlobMemoEmpty 64212 +#define cxEditConsts_cxSBlobPicture 64213 +#define cxEditConsts_cxSBlobPictureEmpty 64214 +#define cxEditConsts_cxSMenuItemCaptionCut 64215 +#define cxEditConsts_cxSMenuItemCaptionCopy 64216 +#define cxEditConsts_cxSMenuItemCaptionPaste 64217 +#define cxEditConsts_cxSMenuItemCaptionDelete 64218 +#define cxEditConsts_cxSMenuItemCaptionLoad 64219 +#define cxEditConsts_cxSMenuItemCaptionSave 64220 +#define cxEditConsts_cxSDatePopupClear 64221 +#define cxEditConsts_cxSDatePopupNow 64222 +#define cxEditConsts_cxSDatePopupOK 64223 +#define cxDataConsts_cxSDataRecordIndexError 64224 +#define cxDataConsts_cxSDataItemIndexError 64225 +#define cxDataConsts_cxSDataProviderModeError 64226 +#define cxDataConsts_cxSDataInvalidStreamFormat 64227 +#define cxDataConsts_cxSDataRowIndexError 64228 +#define cxEditConsts_cxSEditDateConvertError 64229 +#define cxEditConsts_cxSEditInvalidRepositoryItem 64230 +#define cxEditConsts_cxSEditNumericValueConvertError 64231 +#define cxEditConsts_cxSEditPopupCircularReferencingError 64232 +#define cxEditConsts_cxSEditTimeConvertError 64233 +#define cxEditConsts_cxSEditValidateErrorText 64234 +#define cxEditConsts_cxSEditValueOutOfBounds 64235 +#define cxEditConsts_cxSEditCheckBoxChecked 64236 +#define cxEditConsts_cxSEditCheckBoxGrayed 64237 +#define cxEditConsts_cxSEditCheckBoxUnchecked 64238 +#define cxEditConsts_cxSRadioGroupDefaultCaption 64239 +#define cxFilterConsts_cxSFilterBlankCaption 64240 +#define cxFilterConsts_cxSFilterOperatorIsNull 64241 +#define cxFilterConsts_cxSFilterOperatorIsNotNull 64242 +#define cxFilterConsts_cxSFilterOperatorBeginsWith 64243 +#define cxFilterConsts_cxSFilterOperatorDoesNotBeginWith 64244 +#define cxFilterConsts_cxSFilterOperatorEndsWith 64245 +#define cxFilterConsts_cxSFilterOperatorDoesNotEndWith 64246 +#define cxFilterConsts_cxSFilterOperatorContains 64247 +#define cxFilterConsts_cxSFilterOperatorDoesNotContain 64248 +#define cxFilterConsts_cxSFilterBoxAllCaption 64249 +#define cxFilterConsts_cxSFilterBoxCustomCaption 64250 +#define cxFilterConsts_cxSFilterBoxBlanksCaption 64251 +#define cxFilterConsts_cxSFilterBoxNonBlanksCaption 64252 +#define cxDataConsts_cxSDataReadError 64253 +#define cxDataConsts_cxSDataWriteError 64254 +#define cxDataConsts_cxSDataItemExistError 64255 +#define cxFilterConsts_cxSFilterOperatorLastYear 64256 +#define cxFilterConsts_cxSFilterOperatorPast 64257 +#define cxFilterConsts_cxSFilterOperatorThisWeek 64258 +#define cxFilterConsts_cxSFilterOperatorThisMonth 64259 +#define cxFilterConsts_cxSFilterOperatorThisYear 64260 +#define cxFilterConsts_cxSFilterOperatorNext7Days 64261 +#define cxFilterConsts_cxSFilterOperatorNextWeek 64262 +#define cxFilterConsts_cxSFilterOperatorNext14Days 64263 +#define cxFilterConsts_cxSFilterOperatorNextTwoWeeks 64264 +#define cxFilterConsts_cxSFilterOperatorNext30Days 64265 +#define cxFilterConsts_cxSFilterOperatorNextMonth 64266 +#define cxFilterConsts_cxSFilterOperatorNextYear 64267 +#define cxFilterConsts_cxSFilterOperatorFuture 64268 +#define cxFilterConsts_cxSFilterAndCaption 64269 +#define cxFilterConsts_cxSFilterOrCaption 64270 +#define cxFilterConsts_cxSFilterNotCaption 64271 +#define cxFilterConsts_cxSFilterOperatorGreaterEqual 64272 +#define cxFilterConsts_cxSFilterOperatorLike 64273 +#define cxFilterConsts_cxSFilterOperatorNotLike 64274 +#define cxFilterConsts_cxSFilterOperatorBetween 64275 +#define cxFilterConsts_cxSFilterOperatorNotBetween 64276 +#define cxFilterConsts_cxSFilterOperatorInList 64277 +#define cxFilterConsts_cxSFilterOperatorNotInList 64278 +#define cxFilterConsts_cxSFilterOperatorYesterday 64279 +#define cxFilterConsts_cxSFilterOperatorToday 64280 +#define cxFilterConsts_cxSFilterOperatorTomorrow 64281 +#define cxFilterConsts_cxSFilterOperatorLast7Days 64282 +#define cxFilterConsts_cxSFilterOperatorLastWeek 64283 +#define cxFilterConsts_cxSFilterOperatorLast14Days 64284 +#define cxFilterConsts_cxSFilterOperatorLastTwoWeeks 64285 +#define cxFilterConsts_cxSFilterOperatorLast30Days 64286 +#define cxFilterConsts_cxSFilterOperatorLastMonth 64287 +#define pnglang_EPNGUnknownCriticalChunkText 64288 +#define pnglang_EPNGUnknownCompressionText 64289 +#define pnglang_EPNGUnknownInterlaceText 64290 +#define pnglang_EPNGCannotAssignChunkText 64291 +#define pnglang_EPNGUnexpectedEndText 64292 +#define pnglang_EPNGNoImageDataText 64293 +#define pnglang_EPNGCannotChangeSizeText 64294 +#define pnglang_EPNGCannotAddChunkText 64295 +#define pnglang_EPNGCannotAddInvalidImageText 64296 +#define pnglang_EPNGOutMemoryText 64297 +#define pnglang_EPNGHeaderNotPresentText 64298 +#define cxFilterConsts_cxSFilterOperatorEqual 64299 +#define cxFilterConsts_cxSFilterOperatorNotEqual 64300 +#define cxFilterConsts_cxSFilterOperatorLess 64301 +#define cxFilterConsts_cxSFilterOperatorLessEqual 64302 +#define cxFilterConsts_cxSFilterOperatorGreater 64303 +#define MSConsts_SSQLNCLINeedsChangePwd 64304 +#define MSConsts_SAsynchExecuting 64305 +#define MSConsts_SNumericOverflow 64306 +#define MSConsts_SDMandServerCursors 64307 +#define MSConsts_SSQLOLEDB 64308 +#define MSConsts_SSQLNativeClient 64309 +#define MSConsts_SSQLEverywhere 64310 +#define pnglang_EPngInvalidCRCText 64311 +#define pnglang_EPNGInvalidIHDRText 64312 +#define pnglang_EPNGMissingMultipleIDATText 64313 +#define pnglang_EPNGZLIBErrorText 64314 +#define pnglang_EPNGInvalidPaletteText 64315 +#define pnglang_EPNGInvalidFileHeaderText 64316 +#define pnglang_EPNGIHDRNotFirstText 64317 +#define pnglang_EPNGSizeExceedsText 64318 +#define pnglang_EPNGUnknownPalEntryText 64319 +#define MSConsts_SParamNameUnknown 64320 +#define MSConsts_SBadParamValue 64321 +#define MSConsts_SCheckConnection 64322 +#define MSConsts_STimestampFieldRequired 64323 +#define MSConsts_SLocalSortingServerCursor 64324 +#define MSConsts_SRowMultipleChanges 64325 +#define MSConsts_SRowPendingChanges 64326 +#define MSConsts_SRowCanceled 64327 +#define MSConsts_SRowConcurrencyViolation 64328 +#define MSConsts_SRowDeleted 64329 +#define MSConsts_SRowIntegrityViolation 64330 +#define MSConsts_SRowPermissionDenied 64331 +#define MSConsts_SRowLimitReached 64332 +#define MSConsts_SRowSchemaViolation 64333 +#define MSConsts_SRowFail 64334 +#define MSConsts_SSQLNCLINeeds 64335 +#define MSConsts_SInvalidParamType 64336 +#define MSConsts_SBadAccessor 64337 +#define MSConsts_SInvalidValue 64338 +#define MSConsts_SSignMismatch 64339 +#define MSConsts_SDataOverflow 64340 +#define MSConsts_SDataTruncated 64341 +#define MSConsts_SOutOfMemory 64342 +#define MSConsts_SCantCreate 64343 +#define MSConsts_SPermissionDenied 64344 +#define MSConsts_SIntegrityViolation 64345 +#define MSConsts_SShemaViolation 64346 +#define MSConsts_SBadStatus 64347 +#define MSConsts_SUnknownStatus 64348 +#define MSConsts_SParamNameMissing 64349 +#define MSConsts_SParamValueMissing 64350 +#define MSConsts_SInvalidChar 64351 +#define MSConsts_SOLEDBError 64352 +#define MSConsts_SMSSQLNotFound 64353 +#define MSConsts_SNoResultSet 64354 +#define MSConsts_SBadOutputParam 64355 +#define MSConsts_SBadFieldType 64356 +#define MSConsts_SBookmarksRequired 64357 +#define MSConsts_SCUandServerCursors 64358 +#define MSConsts_SCursorTypeChanged 64359 +#define MSConsts_SWrongMDACVer 64360 +#define MSConsts_SObjectOpen 64361 +#define MSConsts_SConnectionOpen 64362 +#define MSConsts_SBadProviderName 64363 +#define MSConsts_SBadDatabaseFile 64364 +#define MSConsts_SBadNetworkLibrary 64365 +#define MSConsts_SBadPacketSize 64366 +#define MSConsts_SBadEncrypt 64367 +#define DAConsts_SUnknownParamDataType 64368 +#define DAConsts_SRecordChanged 64369 +#define DAConsts_SStoredProcNotDefined 64370 +#define DAConsts_SConnectionIsClosed 64371 +#define DAConsts_SMaxConnectionsReached 64372 +#define DAConsts_SCannotChangeIsUnicode 64373 +#define DAConsts_SNoTimers 64374 +#define DAConsts_sBlobNotCompressed 64375 +#define DAConsts_SCompressorNotLinked 64376 +#define DAConsts_SUncompressorNotLinked 64377 +#define DAConsts_SUpdateComponentCircularReferences 64378 +#define DAConsts_SUpdateComponentInvalidType 64379 +#define DAConsts_SUpdateObjectEmptySQL 64380 +#define DAConsts_SDateEncodeError 64381 +#define DAConsts_SEmptySQLStatement 64382 +#define DAConsts_SInvalidBlobPosition 64383 +#define DAConsts_SBadStatementType 64384 +#define DAConsts_SBadUpdatingTable 64385 +#define DAConsts_SInvalidUnComprBlobSize 64386 +#define DAConsts_SInvalidComprBlobSize 64387 +#define DAConsts_SInvalidComprBlobHeader 64388 +#define DAConsts_SInvalidComprBlobData 64389 +#define DAConsts_SNotCachedUpdate 64390 +#define DAConsts_SUpdateWrongDB 64391 +#define DAConsts_SConnectionNotDefined 64392 +#define DAConsts_SCannotConnect 64393 +#define DAConsts_SMacroNotFound 64394 +#define DAConsts_STransactionInProgress 64395 +#define DAConsts_SUpdateFailed 64396 +#define DAConsts_SRefreshFailed 64397 +#define DAConsts_SInvalidFetchRows 64398 +#define DAConsts_SNoCorrespondParam 64399 +#define DBXPool_SConnectTimeout 64400 +#define DBXPool_SInvalidCommand 64401 +#define DBXTrace_SINVALID_TRACE_FLAG 64402 +#define ZLibConst_sTargetBufferTooSmall 64403 +#define ZLibConst_sError 64404 +#define DAConsts_SUnknownDataType 64405 +#define DAConsts_SDataTypeNotSupported 64406 +#define DAConsts_SFieldNotFound 64407 +#define DAConsts_SCannotConvertType 64408 +#define DAConsts_SIllegalFilter 64409 +#define DAConsts_SNeedBlobType 64410 +#define DAConsts_SInvalidBlob 64411 +#define DAConsts_SBlobMustBeCached 64412 +#define DAConsts_SKeyFieldsReq 64413 +#define DAConsts_SNoKeyFields 64414 +#define DAConsts_SBadTableInfoName 64415 +#define SqlConst_SINVALIDTXNID 64416 +#define SqlConst_SDUPLICATETXNID 64417 +#define SqlConst_SDRIVERRESTRICTED 64418 +#define SqlConst_SLOCALTRANSACTIVE 64419 +#define SqlConst_SMULTIPLETRANSNOTENABLED 64420 +#define SqlConst_SCONNECTIONFAILED 64421 +#define SqlConst_SDRIVERINITFAILED 64422 +#define SqlConst_SOPTLOCKFAILED 64423 +#define SqlConst_SINVALIDREF 64424 +#define SqlConst_SNOTABLE 64425 +#define SqlConst_SMISSINGPARAMINSQL 64426 +#define SqlConst_SNOTIMPLEMENTED 64427 +#define SqlConst_SDRIVERINCOMPATIBLE 64428 +#define SqlConst_SDriverNotInConfigFile 64429 +#define SqlConst_SObjectTypenameRequired 64430 +#define SqlConst_SCannotCreateFile 64431 +#define SqlConst_SNOERROR 64432 +#define SqlConst_SWARNING 64433 +#define SqlConst_SNOMEMORY 64434 +#define SqlConst_SINVALIDFLDTYPE 64435 +#define SqlConst_SINVALIDHNDL 64436 +#define SqlConst_SNOTSUPPORTED 64437 +#define SqlConst_SINVALIDTIME 64438 +#define SqlConst_SINVALIDXLATION 64439 +#define SqlConst_SOUTOFRANGE 64440 +#define SqlConst_SINVALIDPARAM 64441 +#define SqlConst_SEOF 64442 +#define SqlConst_SSQLPARAMNOTSET 64443 +#define SqlConst_SINVALIDUSRPASS 64444 +#define SqlConst_SINVALIDPRECISION 64445 +#define SqlConst_SINVALIDLEN 64446 +#define SqlConst_SINVALIDXISOLEVEL 64447 +#define SqlConst_SEmptySQLStatement 64448 +#define SqlConst_SNoParameterValue 64449 +#define SqlConst_SNoSqlStatement 64450 +#define SqlConst_SMissingDataBaseName 64451 +#define SqlConst_SMissingDriverName 64452 +#define SqlConst_SPrepareError 64453 +#define SqlConst_SObjectNameError 64454 +#define SqlConst_SSQLDataSetOpen 64455 +#define SqlConst_SNoActiveTrans 64456 +#define SqlConst_SActiveTrans 64457 +#define SqlConst_SMissingDLLName 64458 +#define SqlConst_SMissingDriverRegFile 64459 +#define SqlConst_SNoCursor 64460 +#define SqlConst_SErrorMappingError 64461 +#define SqlConst_SStoredProcsNotSupported 64462 +#define SqlConst_SPackagesNotSupported 64463 +#define DBXCommon_SDriverLoadError 64464 +#define DBXCommon_SReaderNew 64465 +#define DBXCommon_SReaderClosed 64466 +#define DBXCommon_SReadOnlyType 64467 +#define DBXCommon_SReadOnlyParameter 64468 +#define DBXCommon_SConnectionFactoryInitFailed 64469 +#define DBXCommon_SInvalidDelegationDepth 64470 +#define DBXCommon_SInvalidOrdinal 64471 +#define DBXCommon_SDefaultErrorMessage 64472 +#define DBXCommon_SAlreadyPrepared 64473 +#define SqlConst_SLoginError 64474 +#define SqlConst_SMonitorActive 64475 +#define SqlConst_SDatabaseOpen 64476 +#define SqlConst_SDatabaseClosed 64477 +#define SqlConst_SMissingSQLConnection 64478 +#define SqlConst_SConnectionNameMissing 64479 +#define bdeconst_SNoCachedUpdates 64480 +#define bdeconst_SInvalidAliasName 64481 +#define bdeconst_SNoFieldAccess 64482 +#define bdeconst_SUntitled 64483 +#define bdeconst_SLocalTransDirty 64484 +#define ClassRegistry_SAlreadyRegistered 64485 +#define ClassRegistry_SNotRegistered 64486 +#define ClassRegistry_SInvalidClassRegister 64487 +#define ClassRegistry_SCannotFreeClassRegistry 64488 +#define DBXCommon_SDllLoadError 64489 +#define DBXCommon_SDllProcLoadError 64490 +#define DBXCommon_SUnknownDriver 64491 +#define DBXCommon_SInvalidArgument 64492 +#define DBXCommon_SInvalidTransaction 64493 +#define DBXCommon_SNotImplemented 64494 +#define DBXCommon_SRequiredProperty 64495 +#define bdeconst_SDatabaseOpen 64496 +#define bdeconst_SDatabaseClosed 64497 +#define bdeconst_SDatabaseHandleSet 64498 +#define bdeconst_SSessionActive 64499 +#define bdeconst_SHandleError 64500 +#define bdeconst_SNoReferenceTableName 64501 +#define bdeconst_SEmptySQLStatement 64502 +#define bdeconst_SNoParameterValue 64503 +#define bdeconst_SNoParameterType 64504 +#define bdeconst_SLoginError 64505 +#define bdeconst_SInitError 64506 +#define bdeconst_SIDAPILangID 64507 +#define bdeconst_SBDEError 64508 +#define bdeconst_STruncationError 64509 +#define bdeconst_SResultName 64510 +#define bdeconst_SNoDataSetField 64511 +#define ADOConst_SEventsNotSupported 64512 +#define ADOConst_SUsupportedFieldType 64513 +#define ADOConst_SConnectionRequired 64514 +#define ADOConst_SCantRequery 64515 +#define ADOConst_SNoFilterOptions 64516 +#define ADOConst_SRecordsetNotOpen 64517 +#define ADOConst_sNameAttr 64518 +#define ADOConst_sValueAttr 64519 +#define bdeconst_SAutoSessionExclusive 64520 +#define bdeconst_SAutoSessionExists 64521 +#define bdeconst_SAutoSessionActive 64522 +#define bdeconst_SDuplicateDatabaseName 64523 +#define bdeconst_SDuplicateSessionName 64524 +#define bdeconst_SInvalidSessionName 64525 +#define bdeconst_SDatabaseNameMissing 64526 +#define bdeconst_SSessionNameMissing 64527 +#define IBXConst_SUnknownPlan 64528 +#define IBXConst_SFieldSizeMismatch 64529 +#define IBXConst_SEventAlreadyRegistered 64530 +#define IBXConst_SStringTooLarge 64531 +#define IBXConst_SNoTimers 64532 +#define IBXConst_SIB65feature 64533 +#define IBXConst_SLoginPromptFailure 64534 +#define IBXConst_SIB70feature 64535 +#define IBXConst_SIB71feature 64536 +#define IBXConst_SIB80feature 64537 +#define ADOConst_SMissingConnection 64538 +#define ADOConst_SNoDetailFilter 64539 +#define ADOConst_SBookmarksRequired 64540 +#define ADOConst_SMissingCommandText 64541 +#define ADOConst_SNoResultSet 64542 +#define ADOConst_SADOCreateError 64543 +#define IBXConst_SEOFInComment 64544 +#define IBXConst_SEOFInString 64545 +#define IBXConst_SParamNameExpected 64546 +#define IBXConst_SSuccess 64547 +#define IBXConst_SDelphiException 64548 +#define IBXConst_SNoOptionsSet 64549 +#define IBXConst_SNoDestinationDirectory 64550 +#define IBXConst_SNosourceDirectory 64551 +#define IBXConst_SNoUninstallFile 64552 +#define IBXConst_SOptionNeedsClient 64553 +#define IBXConst_SOptionNeedsServer 64554 +#define IBXConst_SInvalidOption 64555 +#define IBXConst_SInvalidOnErrorResult 64556 +#define IBXConst_SInvalidOnStatusResult 64557 +#define IBXConst_SDPBConstantUnknownEx 64558 +#define IBXConst_STPBConstantUnknownEx 64559 +#define IBXConst_SInvalidQueueing 64560 +#define IBXConst_SInvalidRegistration 64561 +#define IBXConst_SInvalidBatchMove 64562 +#define IBXConst_SSQLDialectInvalid 64563 +#define IBXConst_SSPBConstantNotSupported 64564 +#define IBXConst_SSPBConstantUnknown 64565 +#define IBXConst_SServiceActive 64566 +#define IBXConst_SServiceInActive 64567 +#define IBXConst_SServerNameMissing 64568 +#define IBXConst_SQueryParamsError 64569 +#define IBXConst_SStartParamsError 64570 +#define IBXConst_SOutputParsingError 64571 +#define IBXConst_SUseSpecificProcedures 64572 +#define IBXConst_SSQLMonitorAlreadyPresent 64573 +#define IBXConst_SCantPrintValue 64574 +#define IBXConst_SEOFReached 64575 +#define IBXConst_SNoStoredProcName 64576 +#define IBXConst_SIsAExecuteProcedure 64577 +#define IBXConst_SUpdateFailed 64578 +#define IBXConst_SNotCachedUpdates 64579 +#define IBXConst_SNotLiveRequest 64580 +#define IBXConst_SNoProvider 64581 +#define IBXConst_SNoRecordsAffected 64582 +#define IBXConst_SNoTableName 64583 +#define IBXConst_SCannotCreatePrimaryIndex 64584 +#define IBXConst_SCannotDropSystemIndex 64585 +#define IBXConst_STableNameMismatch 64586 +#define IBXConst_SIndexFieldMissing 64587 +#define IBXConst_SInvalidCancellation 64588 +#define IBXConst_SInvalidEvent 64589 +#define IBXConst_SMaximumEvents 64590 +#define IBXConst_SNoEventsRegistered 64591 +#define IBXConst_SCannotRefresh 64592 +#define IBXConst_SBufferNotSet 64593 +#define IBXConst_SCircularReference 64594 +#define IBXConst_SSQLParseError 64595 +#define IBXConst_SUserAbort 64596 +#define IBXConst_SDataSetUniDirectional 64597 +#define IBXConst_SCannotCreateSharedResource 64598 +#define IBXConst_SWindowsAPIError 64599 +#define IBXConst_SColumnListsDontMatch 64600 +#define IBXConst_SColumnTypesDontMatch 64601 +#define IBXConst_SCantEndSharedTransaction 64602 +#define IBXConst_SFieldUnsupportedType 64603 +#define IBXConst_SCircularDataLink 64604 +#define IBXConst_SEmptySQLStatement 64605 +#define IBXConst_SIsASelectStatement 64606 +#define IBXConst_SRequiredParamNotSet 64607 +#define IBXConst_SInvalidColumnIndex 64608 +#define IBXConst_SInvalidParamColumnIndex 64609 +#define IBXConst_SInvalidDataConversion 64610 +#define IBXConst_SColumnIsNotNullable 64611 +#define IBXConst_SBlobCannotBeRead 64612 +#define IBXConst_SBlobCannotBeWritten 64613 +#define IBXConst_SEmptyQuery 64614 +#define IBXConst_SCannotOpenNonSQLSelect 64615 +#define IBXConst_SNoFieldAccess 64616 +#define IBXConst_SFieldReadOnly 64617 +#define IBXConst_SFieldNotFound 64618 +#define IBXConst_SNotEditing 64619 +#define IBXConst_SCannotInsert 64620 +#define IBXConst_SCannotPost 64621 +#define IBXConst_SCannotUpdate 64622 +#define IBXConst_SCannotDelete 64623 +#define IBXConst_STimeoutNegative 64624 +#define IBXConst_SNoDatabasesInTransaction 64625 +#define IBXConst_SUpdateWrongDB 64626 +#define IBXConst_SUpdateWrongTR 64627 +#define IBXConst_SDatabaseNotAssigned 64628 +#define IBXConst_STransactionNotAssigned 64629 +#define IBXConst_SXSQLDAIndexOutOfRange 64630 +#define IBXConst_SXSQLDANameDoesNotExist 64631 +#define IBXConst_SEOF 64632 +#define IBXConst_SBOF 64633 +#define IBXConst_SInvalidStatementHandle 64634 +#define IBXConst_SSQLOpen 64635 +#define IBXConst_SSQLClosed 64636 +#define IBXConst_SDatasetOpen 64637 +#define IBXConst_SDatasetClosed 64638 +#define IBXConst_SUnknownSQLDataType 64639 +#define IBXConst_SNotSupported 64640 +#define IBXConst_SNotPermitted 64641 +#define IBXConst_SFileAccessError 64642 +#define IBXConst_SConnectionTimeout 64643 +#define IBXConst_SCannotSetDatabase 64644 +#define IBXConst_SCannotSetTransaction 64645 +#define IBXConst_SOperationCancelled 64646 +#define IBXConst_SDPBConstantNotSupported 64647 +#define IBXConst_SDPBConstantUnknown 64648 +#define IBXConst_STPBConstantNotSupported 64649 +#define IBXConst_STPBConstantUnknown 64650 +#define IBXConst_SDatabaseClosed 64651 +#define IBXConst_SDatabaseOpen 64652 +#define IBXConst_SDatabaseNameMissing 64653 +#define IBXConst_SNotInTransaction 64654 +#define IBXConst_SInTransaction 64655 +#define IBSQLMonitor_StrNULL 64656 +#define IBSQLMonitor_StrBLOB 64657 +#define IBSQLMonitor_StrFetch 64658 +#define IBSQLMonitor_StrPrepare 64659 +#define IBSQLMonitor_StrPlan 64660 +#define IBSQLMonitor_StrPlanCantRetrive 64661 +#define IBSQLMonitor_StrCommitHardComm 64662 +#define IBSQLMonitor_StrCommitRetaining 64663 +#define IBSQLMonitor_StrRollback 64664 +#define IBSQLMonitor_StrRollbackRetainin 64665 +#define IBSQLMonitor_StrStartTransaction 64666 +#define IBSQLMonitor_StrApplication 64667 +#define IBXConst_SUnknownError 64668 +#define IBXConst_SInterBaseMissing 64669 +#define IBXConst_SInterBaseInstallMissing 64670 +#define IBXConst_SIB60feature 64671 +#define VDBConsts_SInsertRecord 64672 +#define VDBConsts_SDeleteRecord 64673 +#define VDBConsts_SEditRecord 64674 +#define VDBConsts_SPostEdit 64675 +#define VDBConsts_SCancelEdit 64676 +#define VDBConsts_SRefreshRecord 64677 +#define VDBConsts_SRemoteLogin 64678 +#define IBSQLMonitor_StrConnect 64679 +#define IBSQLMonitor_StrDisconnect 64680 +#define IBSQLMonitor_StrMisc 64681 +#define IBSQLMonitor_StrError 64682 +#define IBSQLMonitor_StrAttach 64683 +#define IBSQLMonitor_StrDetach 64684 +#define IBSQLMonitor_StrQuery 64685 +#define IBSQLMonitor_StrStart 64686 +#define IBSQLMonitor_StrExecute 64687 +#define uDARes_err_CannotFindDefaultItem 64688 +#define uDARes_err_PoolIsNotEmpty 64689 +#define uDARes_err_MaxPoolSizeReached 64690 +#define uDARes_err_LAMEDataset 64691 +#define uDARes_err_HETConnectionNotSupportedInV3 64692 +#define uDARes_err_DARDMInvalidSchema 64693 +#define uDARes_err_DARDMUnassignedAdapter 64694 +#define uDARes_err_DARDMConnectionIsNotAssigned 64695 +#define uDARes_err_DARDMCannotFindProxessorForDelta 64696 +#define uDARes_err_NeedShareMem 64697 +#define uDARes_err_ExecuteSQLCommandNotAllowed 64698 +#define uDARes_err_DatasetNotAccessible 64699 +#define VDBConsts_SFirstRecord 64700 +#define VDBConsts_SPriorRecord 64701 +#define VDBConsts_SNextRecord 64702 +#define VDBConsts_SLastRecord 64703 +#define uDARes_err_ChangeLogAlreadyStarted 64704 +#define uDARes_err_NotAttachedToDataTable 64705 +#define uDARes_err_DriverProcAlreadyRegistered 64706 +#define uDARes_err_DriverManagerAlreadyCreated 64707 +#define uDARes_err_DriverManagerNotAssigned 64708 +#define uDARes_err_FieldTypeNotSupported 64709 +#define uDARes_err_InvalidDataset 64710 +#define uDARes_err_CannotFindItem 64711 +#define uDARes_err_DriverAlreadyLoaded 64712 +#define uDARes_err_InvalidDLL 64713 +#define uDARes_err_UnknownDriver 64714 +#define uDARes_err_FieldIsNotBound 64715 +#define uDARes_err_CannotFindField 64716 +#define uDARes_err_LoadPackageFailed 64717 +#define uDARes_err_InvalidDriverReference 64718 +#define uDARes_err_CannotFindStatement 64719 +#define JvResources_RsClHighlightText 64720 +#define JvResources_RsClBtnFace 64721 +#define JvResources_RsClBtnShadow 64722 +#define JvResources_RsClGrayText 64723 +#define JvResources_RsClBtnText 64724 +#define JvResources_RsClInactiveCaptionText 64725 +#define JvResources_RsClBtnHighlight 64726 +#define JvResources_RsCl3DDkShadow 64727 +#define JvResources_RsCl3DLight 64728 +#define JvResources_RsClInfoText 64729 +#define JvResources_RsClInfoBk 64730 +#define JvResources_RsGradientActiveCaption 64731 +#define JvResources_RsGradientInactiveCaption 64732 +#define JvResources_RsHotLight 64733 +#define JvResources_RsMenuBar 64734 +#define JvResources_RsMenuHighlight 64735 +#define JvResources_RsClPaleBlue 64736 +#define JvResources_RsClLavender 64737 +#define JvResources_RsClScrollBar 64738 +#define JvResources_RsClBackground 64739 +#define JvResources_RsClActiveCaption 64740 +#define JvResources_RsClInactiveCaption 64741 +#define JvResources_RsClMenu 64742 +#define JvResources_RsClWindow 64743 +#define JvResources_RsClWindowFrame 64744 +#define JvResources_RsClMenuText 64745 +#define JvResources_RsClWindowText 64746 +#define JvResources_RsClCaptionText 64747 +#define JvResources_RsClActiveBorder 64748 +#define JvResources_RsClInactiveBorder 64749 +#define JvResources_RsClAppWorkSpace 64750 +#define JvResources_RsClHighlight 64751 +#define JvResources_RsClLightOrange 64752 +#define JvResources_RsClSeaGreen 64753 +#define JvResources_RsClLightBlue 64754 +#define JvResources_RsClViolet 64755 +#define JvResources_RsClGray40 64756 +#define JvResources_RsClPink 64757 +#define JvResources_RsClGold 64758 +#define JvResources_RsClBrightGreen 64759 +#define JvResources_RsClTurquoise 64760 +#define JvResources_RsClPlum 64761 +#define JvResources_RsClGray25 64762 +#define JvResources_RsClRose 64763 +#define JvResources_RsClTan 64764 +#define JvResources_RsClLightYellow 64765 +#define JvResources_RsClLightGreen 64766 +#define JvResources_RsClLightTurquoise 64767 +#define JvResources_RsClMoneyGreen 64768 +#define JvResources_RsClSkyBlue 64769 +#define JvResources_RsClCream 64770 +#define JvResources_RsClMedGray 64771 +#define JvResources_RsClBrown 64772 +#define JvResources_RsClOliveGreen 64773 +#define JvResources_RsClDarkGreen 64774 +#define JvResources_RsClDarkTeal 64775 +#define JvResources_RsClDarkBlue 64776 +#define JvResources_RsClIndigo 64777 +#define JvResources_RsClGray80 64778 +#define JvResources_RsClDarkRed 64779 +#define JvResources_RsClOrange 64780 +#define JvResources_RsClDarkYellow 64781 +#define JvResources_RsClBlueGray 64782 +#define JvResources_RsClGray50 64783 +#define JvResources_RsClBlack 64784 +#define JvResources_RsClMaroon 64785 +#define JvResources_RsClGreen 64786 +#define JvResources_RsClOlive 64787 +#define JvResources_RsClNavy 64788 +#define JvResources_RsClPurple 64789 +#define JvResources_RsClTeal 64790 +#define JvResources_RsClGray 64791 +#define JvResources_RsClSilver 64792 +#define JvResources_RsClRed 64793 +#define JvResources_RsClLime 64794 +#define JvResources_RsClYellow 64795 +#define JvResources_RsClBlue 64796 +#define JvResources_RsClFuchsia 64797 +#define JvResources_RsClAqua 64798 +#define JvResources_RsClWhite 64799 +#define JvResources_RsEInvalidType 64800 +#define JvResources_RsEUnknownBaseType 64801 +#define JvResources_RsEInvalidPath 64802 +#define JvResources_RsENotAUniqueRootPath 64803 +#define JvResources_RsECircularReferenceOfStorages 64804 +#define JvResources_RsGIFImage 64805 +#define JvResources_RsEChangeGIFSize 64806 +#define JvResources_RsENoGIFData 64807 +#define JvResources_RsEUnrecognizedGIFExt 64808 +#define JvResources_RsEWrongGIFColors 64809 +#define JvResources_RsEBadGIFCodeSize 64810 +#define JvResources_RsEGIFDecodeError 64811 +#define JvResources_RsEGIFEncodeError 64812 +#define JvResources_RsEGIFVersion 64813 +#define JvResources_RsEPixelFormatNotImplemented 64814 +#define JvResources_RsEBitCountNotImplemented 64815 +#define JclResources_RsIntelCacheDescr82 64816 +#define JclResources_RsIntelCacheDescr83 64817 +#define JclResources_RsIntelCacheDescr84 64818 +#define JclResources_RsIntelCacheDescr85 64819 +#define JclResources_RsIntelCacheDescr86 64820 +#define JclResources_RsIntelCacheDescr87 64821 +#define JclResources_RsIntelCacheDescrB0 64822 +#define JclResources_RsIntelCacheDescrB3 64823 +#define JclResources_RsIntelCacheDescrB4 64824 +#define JclResources_RsIntelCacheDescrF0 64825 +#define JclResources_RsIntelCacheDescrF1 64826 +#define JvResources_RsAniExtension 64827 +#define JvResources_RsAniFilterName 64828 +#define JvResources_RsRootValueReplaceFmt 64829 +#define JvResources_RsEUnableToCreateKey 64830 +#define JvResources_RsEEnumeratingRegistry 64831 +#define JclResources_RsIntelCacheDescr5C 64832 +#define JclResources_RsIntelCacheDescr5D 64833 +#define JclResources_RsIntelCacheDescr60 64834 +#define JclResources_RsIntelCacheDescr66 64835 +#define JclResources_RsIntelCacheDescr67 64836 +#define JclResources_RsIntelCacheDescr68 64837 +#define JclResources_RsIntelCacheDescr70 64838 +#define JclResources_RsIntelCacheDescr71 64839 +#define JclResources_RsIntelCacheDescr72 64840 +#define JclResources_RsIntelCacheDescr78 64841 +#define JclResources_RsIntelCacheDescr79 64842 +#define JclResources_RsIntelCacheDescr7A 64843 +#define JclResources_RsIntelCacheDescr7B 64844 +#define JclResources_RsIntelCacheDescr7C 64845 +#define JclResources_RsIntelCacheDescr7D 64846 +#define JclResources_RsIntelCacheDescr7F 64847 +#define JclResources_RsIntelCacheDescr30 64848 +#define JclResources_RsIntelCacheDescr40 64849 +#define JclResources_RsIntelCacheDescr41 64850 +#define JclResources_RsIntelCacheDescr42 64851 +#define JclResources_RsIntelCacheDescr43 64852 +#define JclResources_RsIntelCacheDescr44 64853 +#define JclResources_RsIntelCacheDescr45 64854 +#define JclResources_RsIntelCacheDescr46 64855 +#define JclResources_RsIntelCacheDescr47 64856 +#define JclResources_RsIntelCacheDescr49 64857 +#define JclResources_RsIntelCacheDescr50 64858 +#define JclResources_RsIntelCacheDescr51 64859 +#define JclResources_RsIntelCacheDescr52 64860 +#define JclResources_RsIntelCacheDescr56 64861 +#define JclResources_RsIntelCacheDescr57 64862 +#define JclResources_RsIntelCacheDescr5B 64863 +#define JclResources_RsIntelCacheDescr00 64864 +#define JclResources_RsIntelCacheDescr01 64865 +#define JclResources_RsIntelCacheDescr02 64866 +#define JclResources_RsIntelCacheDescr03 64867 +#define JclResources_RsIntelCacheDescr04 64868 +#define JclResources_RsIntelCacheDescr05 64869 +#define JclResources_RsIntelCacheDescr06 64870 +#define JclResources_RsIntelCacheDescr08 64871 +#define JclResources_RsIntelCacheDescr0A 64872 +#define JclResources_RsIntelCacheDescr0B 64873 +#define JclResources_RsIntelCacheDescr0C 64874 +#define JclResources_RsIntelCacheDescr22 64875 +#define JclResources_RsIntelCacheDescr23 64876 +#define JclResources_RsIntelCacheDescr25 64877 +#define JclResources_RsIntelCacheDescr29 64878 +#define JclResources_RsIntelCacheDescr2C 64879 +#define JclResources_RsRTTIParent 64880 +#define JclResources_RsRTTIPropCount 64881 +#define JclResources_RsRTTIUnitName 64882 +#define JclResources_RsRTTIBasedOn 64883 +#define JclResources_RsRTTIFloatType 64884 +#define JclResources_RsRTTIMethodKind 64885 +#define JclResources_RsRTTIParamCount 64886 +#define JclResources_RsRTTIReturnType 64887 +#define JclResources_RsRTTIMaxLen 64888 +#define JclResources_RsRTTIElSize 64889 +#define JclResources_RsRTTIElType 64890 +#define JclResources_RsRTTIElNeedCleanup 64891 +#define JclResources_RsRTTIVarType 64892 +#define JclResources_RsDeclarationFormat 64893 +#define JclResources_RsBlankSearchString 64894 +#define JclResources_RsArgumentOutOfRange 64895 +#define JclResources_RsRTTIPropStored 64896 +#define JclResources_RsRTTIField 64897 +#define JclResources_RsRTTIStaticMethod 64898 +#define JclResources_RsRTTIVirtualMethod 64899 +#define JclResources_RsRTTIIndex 64900 +#define JclResources_RsRTTIDefault 64901 +#define JclResources_RsRTTIName 64902 +#define JclResources_RsRTTIType 64903 +#define JclResources_RsRTTIFlags 64904 +#define JclResources_RsRTTIGUID 64905 +#define JclResources_RsRTTITypeKind 64906 +#define JclResources_RsRTTIOrdinalType 64907 +#define JclResources_RsRTTIMinValue 64908 +#define JclResources_RsRTTIMaxValue 64909 +#define JclResources_RsRTTINameList 64910 +#define JclResources_RsRTTIClassName 64911 +#define JclResources_RsHKPDShort 64912 +#define JclResources_RsHKCCShort 64913 +#define JclResources_RsHKDDShort 64914 +#define JclResources_RsRTTIValueOutOfRange 64915 +#define JclResources_RsRTTIUnknownIdentifier 64916 +#define JclResources_RsRTTIVar 64917 +#define JclResources_RsRTTIConst 64918 +#define JclResources_RsRTTIArrayOf 64919 +#define JclResources_RsRTTIOut 64920 +#define JclResources_RsRTTIOrdinal 64921 +#define JclResources_RsRTTITrue 64922 +#define JclResources_RsRTTIFalse 64923 +#define JclResources_RsRTTITypeError 64924 +#define JclResources_RsRTTITypeInfoAt 64925 +#define JclResources_RsRTTIPropRead 64926 +#define JclResources_RsRTTIPropWrite 64927 +#define JclResources_RsUnableToOpenKeyRead 64928 +#define JclResources_RsUnableToOpenKeyWrite 64929 +#define JclResources_RsUnableToAccessValue 64930 +#define JclResources_RsWrongDataType 64931 +#define JclResources_RsInconsistentPath 64932 +#define JclResources_RsHKCRLong 64933 +#define JclResources_RsHKCULong 64934 +#define JclResources_RsHKLMLong 64935 +#define JclResources_RsHKUSLong 64936 +#define JclResources_RsHKPDLong 64937 +#define JclResources_RsHKCCLong 64938 +#define JclResources_RsHKDDLong 64939 +#define JclResources_RsHKCRShort 64940 +#define JclResources_RsHKCUShort 64941 +#define JclResources_RsHKLMShort 64942 +#define JclResources_RsHKUSShort 64943 +#define ComStrs_sTabFailClear 64944 +#define ComStrs_sTabFailDelete 64945 +#define ComStrs_sTabFailRetrieve 64946 +#define ComStrs_sTabFailGetObject 64947 +#define ComStrs_sTabFailSet 64948 +#define ComStrs_sTabFailSetObject 64949 +#define ComStrs_sTabMustBeMultiLine 64950 +#define ComStrs_sInvalidIndex 64951 +#define ComStrs_sInsertError 64952 +#define ComStrs_sUDAssociated 64953 +#define ComStrs_sPageIndexError 64954 +#define JConsts_sChangeJPGSize 64955 +#define JConsts_sJPEGError 64956 +#define JConsts_sJPEGImageFile 64957 +#define JclResources_RsCannotCreateDir 64958 +#define JclResources_RsFileUtilsNoVersionInfo 64959 +#define IdResourceStringsProtocols_RSHTTPPreconditionFailed 64960 +#define IdResourceStringsProtocols_RSHTTPRequestEntityToLong 64961 +#define IdResourceStringsProtocols_RSHTTPRequestURITooLong 64962 +#define IdResourceStringsProtocols_RSHTTPUnsupportedMediaType 64963 +#define IdResourceStringsProtocols_RSHTTPInternalServerError 64964 +#define IdResourceStringsProtocols_RSHTTPNotImplemented 64965 +#define IdResourceStringsProtocols_RSHTTPBadGateway 64966 +#define IdResourceStringsProtocols_RSHTTPServiceUnavailable 64967 +#define IdResourceStringsProtocols_RSHTTPGatewayTimeout 64968 +#define IdResourceStringsProtocols_RSHTTPHTTPVersionNotSupported 64969 +#define IdResourceStringsProtocols_RSHTTPUnknownResponseCode 64970 +#define IdResourceStringsProtocols_RSHTTPHeaderAlreadyWritten 64971 +#define IdResourceStringsProtocols_RSHTTPErrorParsingCommand 64972 +#define IdResourceStringsProtocols_RSHTTPUnsupportedAuthorisationScheme 64973 +#define IdResourceStringsProtocols_RSHTTPCannotSwitchSessionStateWhenActive 64974 +#define IdResourceStringsProtocols_RSHTTPAuthAlreadyRegistered 64975 +#define IdResourceStringsProtocols_RSHTTPMovedPermanently 64976 +#define IdResourceStringsProtocols_RSHTTPMovedTemporarily 64977 +#define IdResourceStringsProtocols_RSHTTPSeeOther 64978 +#define IdResourceStringsProtocols_RSHTTPNotModified 64979 +#define IdResourceStringsProtocols_RSHTTPUseProxy 64980 +#define IdResourceStringsProtocols_RSHTTPBadRequest 64981 +#define IdResourceStringsProtocols_RSHTTPUnauthorized 64982 +#define IdResourceStringsProtocols_RSHTTPForbidden 64983 +#define IdResourceStringsProtocols_RSHTTPNotFound 64984 +#define IdResourceStringsProtocols_RSHTTPMethodNotAllowed 64985 +#define IdResourceStringsProtocols_RSHTTPNotAcceptable 64986 +#define IdResourceStringsProtocols_RSHTTPProxyAuthenticationRequired 64987 +#define IdResourceStringsProtocols_RSHTTPRequestTimeout 64988 +#define IdResourceStringsProtocols_RSHTTPConflict 64989 +#define IdResourceStringsProtocols_RSHTTPGone 64990 +#define IdResourceStringsProtocols_RSHTTPLengthRequired 64991 +#define IdResourceStringsCore_RSBufferInvalidStartPos 64992 +#define IdResourceStringsCore_RSReplyInvalidCode 64993 +#define IdResourceStringsCore_RSThreadSchedulerThreadRequired 64994 +#define IdResourceStringsCore_RSNoOnExecute 64995 +#define IdResourceStringsCore_RSTCPServerSchedulerAlreadyActive 64996 +#define IdResourceStringsProtocols_RSMIMEExtensionEmpty 64997 +#define IdResourceStringsProtocols_RSMIMEMIMETypeEmpty 64998 +#define IdResourceStringsProtocols_RSMIMEMIMEExtAlreadyExists 64999 +#define IdResourceStringsProtocols_RSHTTPContinue 65000 +#define IdResourceStringsProtocols_RSHTTPOK 65001 +#define IdResourceStringsProtocols_RSHTTPCreated 65002 +#define IdResourceStringsProtocols_RSHTTPAccepted 65003 +#define IdResourceStringsProtocols_RSHTTPNonAuthoritativeInformation 65004 +#define IdResourceStringsProtocols_RSHTTPNoContent 65005 +#define IdResourceStringsProtocols_RSHTTPResetContent 65006 +#define IdResourceStringsProtocols_RSHTTPPartialContent 65007 +#define IdResourceStringsCore_RSNotEnoughDataInBuffer 65008 +#define IdResourceStringsCore_RSTooMuchDataInBuffer 65009 +#define IdResourceStringsCore_RSFileNotFound 65010 +#define IdResourceStringsCore_RSNotConnected 65011 +#define IdResourceStringsCore_RSObjectTypeNotSupported 65012 +#define IdResourceStringsCore_RSIdNoDataToRead 65013 +#define IdResourceStringsCore_RSReadTimeout 65014 +#define IdResourceStringsCore_RSReadLnMaxLineLengthExceeded 65015 +#define IdResourceStringsCore_RSConnectTimeout 65016 +#define IdResourceStringsCore_RSThreadTerminateAndWaitFor 65017 +#define IdResourceStringsCore_RSAlreadyConnected 65018 +#define IdResourceStringsCore_RSMaximumNumberOfCaptureLineExceeded 65019 +#define IdResourceStringsCore_RSchedMaxThreadEx 65020 +#define IdResourceStringsCore_RSTransparentProxyCannotBind 65021 +#define IdResourceStringsCore_RSTransparentProxyCanNotSupportUDP 65022 +#define IdResourceStringsCore_RSBufferMissingTerminator 65023 +#define IdResourceStringsCore_RSSocksRequestFailed 65024 +#define IdResourceStringsCore_RSSocksRequestServerFailed 65025 +#define IdResourceStringsCore_RSSocksRequestIdentFailed 65026 +#define IdResourceStringsCore_RSSocksUnknownError 65027 +#define IdResourceStringsCore_RSSocksServerRespondError 65028 +#define IdResourceStringsCore_RSSocksAuthMethodError 65029 +#define IdResourceStringsCore_RSSocksAuthError 65030 +#define IdResourceStringsCore_RSSocksServerGeneralError 65031 +#define IdResourceStringsCore_RSSocksServerPermissionError 65032 +#define IdResourceStringsCore_RSSocksServerNetUnreachableError 65033 +#define IdResourceStringsCore_RSSocksServerHostUnreachableError 65034 +#define IdResourceStringsCore_RSSocksServerConnectionRefusedError 65035 +#define IdResourceStringsCore_RSSocksServerTTLExpiredError 65036 +#define IdResourceStringsCore_RSSocksServerCommandError 65037 +#define IdResourceStringsCore_RSSocksServerAddressError 65038 +#define IdResourceStringsCore_RSInterceptCircularLink 65039 +#define IdResourceStrings_RSStackClassUndefined 65040 +#define IdResourceStrings_RSStackAlreadyCreated 65041 +#define IdResourceStrings_RSAntiFreezeOnlyOne 65042 +#define IdResourceStrings_RSCannotSetIPVersionWhenConnected 65043 +#define IdResourceStrings_RSCannotBindRange 65044 +#define IdResourceStrings_RSConnectionClosedGracefully 65045 +#define IdResourceStrings_RSCouldNotBindSocket 65046 +#define IdResourceStrings_RSInvalidPortRange 65047 +#define IdResourceStrings_RSInvalidServiceName 65048 +#define IdResourceStrings_RSIPv6Unavailable 65049 +#define IdResourceStrings_RSInvalidIPv6Address 65050 +#define IdResourceStrings_RSIPVersionUnsupported 65051 +#define IdResourceStrings_RSNotAllBytesSent 65052 +#define IdResourceStrings_RSPackageSizeTooBig 65053 +#define IdResourceStrings_RSSetSizeExceeded 65054 +#define IdResourceStringsCore_RSSocksUDPNotSupported 65055 +#define IdResourceStrings_RSStackENETRESET 65056 +#define IdResourceStrings_RSStackECONNABORTED 65057 +#define IdResourceStrings_RSStackECONNRESET 65058 +#define IdResourceStrings_RSStackENOBUFS 65059 +#define IdResourceStrings_RSStackEISCONN 65060 +#define IdResourceStrings_RSStackENOTCONN 65061 +#define IdResourceStrings_RSStackESHUTDOWN 65062 +#define IdResourceStrings_RSStackETOOMANYREFS 65063 +#define IdResourceStrings_RSStackETIMEDOUT 65064 +#define IdResourceStrings_RSStackECONNREFUSED 65065 +#define IdResourceStrings_RSStackELOOP 65066 +#define IdResourceStrings_RSStackENAMETOOLONG 65067 +#define IdResourceStrings_RSStackEHOSTDOWN 65068 +#define IdResourceStrings_RSStackEHOSTUNREACH 65069 +#define IdResourceStrings_RSStackENOTEMPTY 65070 +#define IdResourceStrings_RSStackHOST_NOT_FOUND 65071 +#define IdResourceStrings_RSStackEINPROGRESS 65072 +#define IdResourceStrings_RSStackEALREADY 65073 +#define IdResourceStrings_RSStackENOTSOCK 65074 +#define IdResourceStrings_RSStackEDESTADDRREQ 65075 +#define IdResourceStrings_RSStackEMSGSIZE 65076 +#define IdResourceStrings_RSStackEPROTOTYPE 65077 +#define IdResourceStrings_RSStackENOPROTOOPT 65078 +#define IdResourceStrings_RSStackEPROTONOSUPPORT 65079 +#define IdResourceStrings_RSStackESOCKTNOSUPPORT 65080 +#define IdResourceStrings_RSStackEOPNOTSUPP 65081 +#define IdResourceStrings_RSStackEPFNOSUPPORT 65082 +#define IdResourceStrings_RSStackEAFNOSUPPORT 65083 +#define IdResourceStrings_RSStackEADDRINUSE 65084 +#define IdResourceStrings_RSStackEADDRNOTAVAIL 65085 +#define IdResourceStrings_RSStackENETDOWN 65086 +#define IdResourceStrings_RSStackENETUNREACH 65087 +#define IdResourceStrings_RSWinsockLoadError 65088 +#define IdResourceStrings_RSWinsockInitializationError 65089 +#define IdResourceStrings_RSStatusResolving 65090 +#define IdResourceStrings_RSStatusConnecting 65091 +#define IdResourceStrings_RSStatusConnected 65092 +#define IdResourceStrings_RSStatusDisconnecting 65093 +#define IdResourceStrings_RSStatusDisconnected 65094 +#define IdResourceStrings_RSStatusText 65095 +#define IdResourceStrings_RSStackError 65096 +#define IdResourceStrings_RSStackEINTR 65097 +#define IdResourceStrings_RSStackEBADF 65098 +#define IdResourceStrings_RSStackEACCES 65099 +#define IdResourceStrings_RSStackEFAULT 65100 +#define IdResourceStrings_RSStackEINVAL 65101 +#define IdResourceStrings_RSStackEMFILE 65102 +#define IdResourceStrings_RSStackEWOULDBLOCK 65103 +#define DBConsts_SBadFieldType 65104 +#define DBConsts_SAggActive 65105 +#define DBConsts_SProviderSQLNotSupported 65106 +#define DBConsts_SProviderExecuteNotSupported 65107 +#define DBConsts_SExprNoAggOnCalcs 65108 +#define DBConsts_SDataSetUnidirectional 65109 +#define DBConsts_SUnassignedVar 65110 +#define DBConsts_SRecordNotFound 65111 +#define DBConsts_SFileNameBlank 65112 +#define DBConsts_SBcdOverflow 65113 +#define DBConsts_SInvalidBcdValue 65114 +#define DBConsts_SInvalidFormatType 65115 +#define DBConsts_SCouldNotParseTimeStamp 65116 +#define DBConsts_SInvalidSqlTimeStamp 65117 +#define IdResourceStrings_RSFailedTimeZoneInfo 65118 +#define IdResourceStrings_RSWinsockCallError 65119 +#define DBConsts_SExprBadNullTest 65120 +#define DBConsts_SExprRangeError 65121 +#define DBConsts_SExprIncorrect 65122 +#define DBConsts_SExprNothing 65123 +#define DBConsts_SExprTypeMis 65124 +#define DBConsts_SExprBadScope 65125 +#define DBConsts_SExprNoArith 65126 +#define DBConsts_SExprNotAgg 65127 +#define DBConsts_SExprBadConst 65128 +#define DBConsts_SExprNoAggFilter 65129 +#define DBConsts_SExprEmptyInList 65130 +#define DBConsts_SInvalidKeywordUse 65131 +#define DBConsts_STextFalse 65132 +#define DBConsts_STextTrue 65133 +#define DBConsts_SParameterNotFound 65134 +#define DBConsts_SInvalidVersion 65135 +#define DBConsts_SNoNestedMasterSource 65136 +#define DBConsts_SDataSetOpen 65137 +#define DBConsts_SNotEditing 65138 +#define DBConsts_SDataSetClosed 65139 +#define DBConsts_SDataSetEmpty 65140 +#define DBConsts_SDataSetReadOnly 65141 +#define DBConsts_SNestedDataSetClass 65142 +#define DBConsts_SExprTermination 65143 +#define DBConsts_SExprNameError 65144 +#define DBConsts_SExprStringError 65145 +#define DBConsts_SExprInvalidChar 65146 +#define DBConsts_SExprNoLParen 65147 +#define DBConsts_SExprNoRParen 65148 +#define DBConsts_SExprNoRParenOrComma 65149 +#define DBConsts_SExprExpected 65150 +#define DBConsts_SExprBadField 65151 +#define DBConsts_SInvalidVarByteArray 65152 +#define DBConsts_SFieldOutOfRange 65153 +#define DBConsts_SFieldRequired 65154 +#define DBConsts_SDataSetMissing 65155 +#define DBConsts_SInvalidCalcType 65156 +#define DBConsts_SFieldReadOnly 65157 +#define DBConsts_SFieldIndexError 65158 +#define DBConsts_SNoFieldIndexes 65159 +#define DBConsts_SNotIndexField 65160 +#define DBConsts_SIndexFieldMissing 65161 +#define DBConsts_SDuplicateIndexName 65162 +#define DBConsts_SNoIndexForFields 65163 +#define DBConsts_SIndexNotFound 65164 +#define DBConsts_SCircularDataLink 65165 +#define DBConsts_SLookupInfoError 65166 +#define DBConsts_SDataSourceChange 65167 +#define uRODECConst_sNotInitialized 65168 +#define DBConsts_SInvalidFieldSize 65169 +#define DBConsts_SInvalidFieldKind 65170 +#define DBConsts_SUnknownFieldType 65171 +#define DBConsts_SFieldNameMissing 65172 +#define DBConsts_SDuplicateFieldName 65173 +#define DBConsts_SFieldNotFound 65174 +#define DBConsts_SFieldAccessError 65175 +#define DBConsts_SFieldValueError 65176 +#define DBConsts_SFieldRangeError 65177 +#define DBConsts_SBcdFieldRangeError 65178 +#define DBConsts_SInvalidIntegerValue 65179 +#define DBConsts_SInvalidBoolValue 65180 +#define DBConsts_SInvalidFloatValue 65181 +#define DBConsts_SFieldTypeMismatch 65182 +#define DBConsts_SFieldSizeMismatch 65183 +#define uRORes_err_UnsupportedVariantType 65184 +#define uRORes_err_VariantIsNotArray 65185 +#define uRORes_err_InvalidVarArrayDimCount 65186 +#define uRORes_err_CannotFindParameter 65187 +#define uRORes_err_MessageNotAssigned 65188 +#define uRODECConst_sProtectionCircular 65189 +#define uRODECConst_sStringFormatExists 65190 +#define uRODECConst_sInvalidStringFormat 65191 +#define uRODECConst_sInvalidFormatString 65192 +#define uRODECConst_sFMT_COPY 65193 +#define uRODECConst_sFMT_HEX 65194 +#define uRODECConst_sFMT_HEXL 65195 +#define uRODECConst_sFMT_MIME64 65196 +#define uRODECConst_sFMT_UU 65197 +#define uRODECConst_sFMT_XX 65198 +#define uRODECConst_sInvalidKeySize 65199 +#define uRORes_err_ServerOnlySupportsOneDispatcher 65200 +#define uRORes_err_UnhandledException 65201 +#define uRORes_err_ChannelBusy 65202 +#define uRORes_err_ArrayIndexOutOfBounds 65203 +#define uRORes_err_InvalidHeader 65204 +#define uRORes_err_InvalidHeaderEncrypted 65205 +#define uRORes_err_UnknownClassInStream 65206 +#define uRORes_err_UnexpectedClassInStream 65207 +#define uRORes_err_SessionNotFound 65208 +#define uRORes_err_ChannelDoesntSupportIROMetadataReader 65209 +#define uRORes_err_TooManySessions 65210 +#define uRORes_err_DOMElementIsNIL 65211 +#define uRORes_err_CannotLoadXMLDocument 65212 +#define uRORes_err_ErrorCreatingMsXmlDoc 65213 +#define uRORes_err_NoXMLParsersAvailable 65214 +#define uRORes_err_IDispatchMarshalingNotSupported 65215 +#define uRORes_err_AssignError 65216 +#define uRORes_err_InvalidRequestStream 65217 +#define uRORes_err_NILMessage 65218 +#define uRORes_err_UnspecifiedInterface 65219 +#define uRORes_err_UnspecifiedMessage 65220 +#define uRORes_err_UnknownMethod 65221 +#define uRORes_err_ClassFactoryDidNotReturnInstance 65222 +#define uRORes_err_ParameterNotFound 65223 +#define uRORes_err_TypeNotSupported 65224 +#define uRORes_err_ClassFactoryNotFound 65225 +#define uRORes_err_IROMessageNotSupported 65226 +#define uRORes_err_ClassAlreadyRegistered 65227 +#define uRORes_err_UnknownClass 65228 +#define uRORes_err_UnknownProxyInterface 65229 +#define uRORes_err_DispatcherAlreadyAssigned 65230 +#define uRORes_err_CannotFindMessageDispatcher 65231 +#define uRORes_err_InvalidTargetEntity 65232 +#define uRORes_err_InvalidParamFlag 65233 +#define uRORes_err_InvalidStringLength 65234 +#define uRORes_str_InvalidClassTypeInStream 65235 +#define uRORes_err_UnexpectedEndOfStream 65236 +#define uRORes_err_RodlDuplicateName 65237 +#define uRORes_err_RodlNoDataTypeSpecified 65238 +#define uRORes_err_RodlNoEnumValues 65239 +#define uRORes_err_RodlNoStructElementsDefined 65240 +#define uRORes_err_RodlNoOperationsDefined 65241 +#define uRORes_err_RodlUsedFileDoesNotExist 65242 +#define uRORes_err_RodlInvalidDataType 65243 +#define uRORes_err_RodlStructCannotBeNested 65244 +#define uRORes_err_RodlInvalidAncestorType 65245 +#define uRORes_str_ExceptionOnServer 65246 +#define uRORes_str_ExceptionReraisedFromServer 65247 +#define Consts_SUnicodeEncoding 65248 +#define Consts_SBigEndianEncoding 65249 +#define Consts_SUTF8Encoding 65250 +#define Consts_SUTF7Encoding 65251 +#define Consts_STrayIconRemoveError 65252 +#define Consts_STrayIconCreateError 65253 +#define Consts_SPageControlNotSet 65254 +#define Consts_SWindowsVistaRequired 65255 +#define ComConst_SOleError 65256 +#define ComConst_SNoMethod 65257 +#define ComConst_SVarNotObject 65258 +#define ComConst_STooManyParams 65259 +#define uRORes_err_InvalidIndex 65260 +#define uRORes_err_InvalidType 65261 +#define uRORes_err_InvalidLibrary 65262 +#define uRORes_err_InvalidStream 65263 +#define Consts_SNoDefaultPrinter 65264 +#define Consts_SDuplicateMenus 65265 +#define Consts_SPictureLabel 65266 +#define Consts_SPictureDesc 65267 +#define Consts_SPreviewLabel 65268 +#define Consts_SDockedCtlNeedsName 65269 +#define Consts_SDockTreeRemoveError 65270 +#define Consts_SDockZoneNotFound 65271 +#define Consts_SDockZoneHasNoCtl 65272 +#define Consts_SDockZoneVersionConflict 65273 +#define Consts_SMultiSelectRequired 65274 +#define Consts_SSeparator 65275 +#define Consts_SErrorSettingCount 65276 +#define Consts_SListBoxMustBeVirtual 65277 +#define Consts_SANSIEncoding 65278 +#define Consts_SASCIIEncoding 65279 +#define Consts_SmkcRight 65280 +#define Consts_SmkcDown 65281 +#define Consts_SmkcIns 65282 +#define Consts_SmkcDel 65283 +#define Consts_SmkcShift 65284 +#define Consts_SmkcCtrl 65285 +#define Consts_SmkcAlt 65286 +#define Consts_srNone 65287 +#define Consts_SOutOfRange 65288 +#define Consts_sAllFilter 65289 +#define Consts_SInsertLineError 65290 +#define Consts_SInvalidClipFmt 65291 +#define Consts_SIconToClipboard 65292 +#define Consts_SCannotOpenClipboard 65293 +#define Consts_SInvalidMemoSize 65294 +#define Consts_SInvalidPrinterOp 65295 +#define Consts_SMsgDlgRetry 65296 +#define Consts_SMsgDlgIgnore 65297 +#define Consts_SMsgDlgAll 65298 +#define Consts_SMsgDlgNoToAll 65299 +#define Consts_SMsgDlgYesToAll 65300 +#define Consts_SmkcBkSp 65301 +#define Consts_SmkcTab 65302 +#define Consts_SmkcEsc 65303 +#define Consts_SmkcEnter 65304 +#define Consts_SmkcSpace 65305 +#define Consts_SmkcPgUp 65306 +#define Consts_SmkcPgDn 65307 +#define Consts_SmkcEnd 65308 +#define Consts_SmkcHome 65309 +#define Consts_SmkcLeft 65310 +#define Consts_SmkcUp 65311 +#define Consts_SAllButton 65312 +#define Consts_SCannotDragForm 65313 +#define Consts_SVMetafiles 65314 +#define Consts_SVEnhMetafiles 65315 +#define Consts_SVIcons 65316 +#define Consts_SVBitmaps 65317 +#define Consts_SMsgDlgWarning 65318 +#define Consts_SMsgDlgError 65319 +#define Consts_SMsgDlgInformation 65320 +#define Consts_SMsgDlgConfirm 65321 +#define Consts_SMsgDlgYes 65322 +#define Consts_SMsgDlgNo 65323 +#define Consts_SMsgDlgOK 65324 +#define Consts_SMsgDlgCancel 65325 +#define Consts_SMsgDlgHelp 65326 +#define Consts_SMsgDlgAbort 65327 +#define Consts_SNotPrinting 65328 +#define Consts_SPrinting 65329 +#define Consts_SInvalidPrinter 65330 +#define Consts_SDeviceOnPort 65331 +#define Consts_SGroupIndexTooLow 65332 +#define Consts_SNoMDIForm 65333 +#define Consts_SControlParentSetToSelf 65334 +#define Consts_SOKButton 65335 +#define Consts_SCancelButton 65336 +#define Consts_SYesButton 65337 +#define Consts_SNoButton 65338 +#define Consts_SHelpButton 65339 +#define Consts_SCloseButton 65340 +#define Consts_SIgnoreButton 65341 +#define Consts_SRetryButton 65342 +#define Consts_SAbortButton 65343 +#define Consts_SImageReadFail 65344 +#define Consts_SImageWriteFail 65345 +#define Consts_SWindowDCError 65346 +#define Consts_SWindowClass 65347 +#define Consts_SCannotFocus 65348 +#define Consts_SParentRequired 65349 +#define Consts_SParentGivenNotAParent 65350 +#define Consts_SMDIChildNotVisible 65351 +#define Consts_SVisibleChanged 65352 +#define Consts_SCannotShowModal 65353 +#define Consts_SScrollBarRange 65354 +#define Consts_SPropertyOutOfRange 65355 +#define Consts_SMenuIndexError 65356 +#define Consts_SMenuReinserted 65357 +#define Consts_SMenuNotFound 65358 +#define Consts_SNoTimers 65359 +#define Consts_SInvalidTabStyle 65360 +#define Consts_SInvalidBitmap 65361 +#define Consts_SInvalidIcon 65362 +#define Consts_SInvalidMetafile 65363 +#define Consts_SInvalidPixelFormat 65364 +#define Consts_SInvalidImage 65365 +#define Consts_SScanLine 65366 +#define Consts_SChangeIconSize 65367 +#define Consts_SUnknownExtension 65368 +#define Consts_SUnknownClipboardFormat 65369 +#define Consts_SOutOfResources 65370 +#define Consts_SNoCanvasHandle 65371 +#define Consts_SInvalidImageSize 65372 +#define Consts_SInvalidImageList 65373 +#define Consts_SReplaceImage 65374 +#define Consts_SImageIndexError 65375 +#define RTLConsts_SResNotFound 65376 +#define RTLConsts_SSeekNotImplemented 65377 +#define RTLConsts_SSortedListError 65378 +#define RTLConsts_SUnknownGroup 65379 +#define RTLConsts_SUnknownProperty 65380 +#define RTLConsts_SWriteError 65381 +#define RTLConsts_SThreadCreateError 65382 +#define RTLConsts_SThreadError 65383 +#define RTLConsts_SMissingDateTimeField 65384 +#define RTLConsts_SInvalidDateTime 65385 +#define HelpIntfs_hNoTableOfContents 65386 +#define HelpIntfs_hNothingFound 65387 +#define HelpIntfs_hNoContext 65388 +#define HelpIntfs_hNoContextFound 65389 +#define HelpIntfs_hNoTopics 65390 +#define Consts_SInvalidTabPosition 65391 +#define RTLConsts_SInvalidProperty 65392 +#define RTLConsts_SInvalidPropertyElement 65393 +#define RTLConsts_SInvalidPropertyPath 65394 +#define RTLConsts_SInvalidPropertyType 65395 +#define RTLConsts_SInvalidPropertyValue 65396 +#define RTLConsts_SInvalidRegType 65397 +#define RTLConsts_SListCapacityError 65398 +#define RTLConsts_SListCountError 65399 +#define RTLConsts_SListIndexError 65400 +#define RTLConsts_SMemoryStreamError 65401 +#define RTLConsts_SPropertyException 65402 +#define RTLConsts_SReadError 65403 +#define RTLConsts_SReadOnlyProperty 65404 +#define RTLConsts_SRegCreateFailed 65405 +#define RTLConsts_SRegGetDataFailed 65406 +#define RTLConsts_SRegSetDataFailed 65407 +#define SysConst_SLongDayNameSat 65408 +#define RTLConsts_SAncestorNotFound 65409 +#define RTLConsts_SAssignError 65410 +#define RTLConsts_SBitsIndexError 65411 +#define RTLConsts_SCantWriteResourceStreamError 65412 +#define RTLConsts_SCheckSynchronizeError 65413 +#define RTLConsts_SClassNotFound 65414 +#define RTLConsts_SDuplicateClass 65415 +#define RTLConsts_SDuplicateItem 65416 +#define RTLConsts_SDuplicateName 65417 +#define RTLConsts_SDuplicateString 65418 +#define RTLConsts_SFCreateErrorEx 65419 +#define RTLConsts_SFOpenErrorEx 65420 +#define RTLConsts_SIniFileWriteError 65421 +#define RTLConsts_SInvalidImage 65422 +#define RTLConsts_SInvalidName 65423 +#define SysConst_SLongMonthNameOct 65424 +#define SysConst_SLongMonthNameNov 65425 +#define SysConst_SLongMonthNameDec 65426 +#define SysConst_SShortDayNameSun 65427 +#define SysConst_SShortDayNameMon 65428 +#define SysConst_SShortDayNameTue 65429 +#define SysConst_SShortDayNameWed 65430 +#define SysConst_SShortDayNameThu 65431 +#define SysConst_SShortDayNameFri 65432 +#define SysConst_SShortDayNameSat 65433 +#define SysConst_SLongDayNameSun 65434 +#define SysConst_SLongDayNameMon 65435 +#define SysConst_SLongDayNameTue 65436 +#define SysConst_SLongDayNameWed 65437 +#define SysConst_SLongDayNameThu 65438 +#define SysConst_SLongDayNameFri 65439 +#define SysConst_SShortMonthNameJun 65440 +#define SysConst_SShortMonthNameJul 65441 +#define SysConst_SShortMonthNameAug 65442 +#define SysConst_SShortMonthNameSep 65443 +#define SysConst_SShortMonthNameOct 65444 +#define SysConst_SShortMonthNameNov 65445 +#define SysConst_SShortMonthNameDec 65446 +#define SysConst_SLongMonthNameJan 65447 +#define SysConst_SLongMonthNameFeb 65448 +#define SysConst_SLongMonthNameMar 65449 +#define SysConst_SLongMonthNameApr 65450 +#define SysConst_SLongMonthNameMay 65451 +#define SysConst_SLongMonthNameJun 65452 +#define SysConst_SLongMonthNameJul 65453 +#define SysConst_SLongMonthNameAug 65454 +#define SysConst_SLongMonthNameSep 65455 +#define SysConst_SSafecallException 65456 +#define SysConst_SAssertError 65457 +#define SysConst_SAbstractError 65458 +#define SysConst_SModuleAccessViolation 65459 +#define SysConst_sErrorLoadingPackage 65460 +#define SysConst_SInvalidPackageFile 65461 +#define SysConst_SInvalidPackageHandle 65462 +#define SysConst_SDuplicatePackageUnit 65463 +#define SysConst_SOSError 65464 +#define SysConst_SUnkOSError 65465 +#define SysConst_SNL 65466 +#define SysConst_SShortMonthNameJan 65467 +#define SysConst_SShortMonthNameFeb 65468 +#define SysConst_SShortMonthNameMar 65469 +#define SysConst_SShortMonthNameApr 65470 +#define SysConst_SShortMonthNameMay 65471 +#define SysConst_SInvalidVarNullOp 65472 +#define SysConst_SInvalidVarOpWithHResultWithPrefix 65473 +#define SysConst_SVarTypeOutOfRangeWithPrefix 65474 +#define SysConst_SVarTypeAlreadyUsedWithPrefix 65475 +#define SysConst_SVarTypeNotUsableWithPrefix 65476 +#define SysConst_SVarTypeTooManyCustom 65477 +#define SysConst_SVarTypeCouldNotConvert 65478 +#define SysConst_SVarTypeConvertOverflow 65479 +#define SysConst_SVarOverflow 65480 +#define SysConst_SVarInvalid 65481 +#define SysConst_SVarBadType 65482 +#define SysConst_SVarNotImplemented 65483 +#define SysConst_SVarUnexpected 65484 +#define SysConst_SExternalException 65485 +#define SysConst_SAssertionFailed 65486 +#define SysConst_SIntfCastError 65487 +#define SysConst_SPrivilege 65488 +#define SysConst_SOperationAborted 65489 +#define SysConst_SException 65490 +#define SysConst_SExceptTitle 65491 +#define SysConst_SInvalidFormat 65492 +#define SysConst_SArgumentMissing 65493 +#define SysConst_SDispatchError 65494 +#define SysConst_SReadAccess 65495 +#define SysConst_SWriteAccess 65496 +#define SysConst_SFormatTooLong 65497 +#define SysConst_SVarArrayCreate 65498 +#define SysConst_SVarArrayBounds 65499 +#define SysConst_SVarArrayLocked 65500 +#define SysConst_SVarArrayWithHResult 65501 +#define SysConst_SInvalidVarCast 65502 +#define SysConst_SInvalidVarOp 65503 +#define SysConst_SEndOfFile 65504 +#define SysConst_SDiskFull 65505 +#define SysConst_SInvalidInput 65506 +#define SysConst_SDivByZero 65507 +#define SysConst_SRangeError 65508 +#define SysConst_SIntOverflow 65509 +#define SysConst_SInvalidOp 65510 +#define SysConst_SZeroDivide 65511 +#define SysConst_SOverflow 65512 +#define SysConst_SUnderflow 65513 +#define SysConst_SInvalidPointer 65514 +#define SysConst_SInvalidCast 65515 +#define SysConst_SAccessViolationArg3 65516 +#define SysConst_SAccessViolationNoArg 65517 +#define SysConst_SStackOverflow 65518 +#define SysConst_SControlC 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_SInvalidBoolean 65527 +#define SysConst_STimeEncodeError 65528 +#define SysConst_SDateEncodeError 65529 +#define SysConst_SOutOfMemory 65530 +#define SysConst_SInOutError 65531 +#define SysConst_SFileNotFound 65532 +#define SysConst_SInvalidFilename 65533 +#define SysConst_STooManyOpenFiles 65534 +#define SysConst_SAccessDenied 65535 +STRINGTABLE +BEGIN + cxGridStrs_scxGridDeletingConfirmationCaption, "Confirm" + cxGridStrs_scxGridDeletingFocusedConfirmationText, "Delete record?" + cxGridStrs_scxGridDeletingSelectedConfirmationText, "Delete all selected records?" + cxGridStrs_scxGridNoDataInfoText, "" + cxGridStrs_scxGridNewItemRowInfoText, "Click here to add a new row" + cxGridStrs_scxGridFilterIsEmpty, "" + cxGridStrs_scxGridCustomizationFormCaption, "Customization" + cxGridStrs_scxGridCustomizationFormColumnsPageCaption, "Columns" + cxGridStrs_scxGridGroupByBoxCaption, "Drag a column header here to group by that column" + cxGridStrs_scxGridFilterCustomizeButtonCaption, "Customize..." + cxGridStrs_scxGridColumnsQuickCustomizationHint, "Click here to select visible columns" + MidConst_SDefExprFail, "Preparation of default expression failed with error \"%s\"" + MidConst_SNoEditsAllowed, "Modifications are not allowed" + MidConst_SNoDeletesAllowed, "Deletes are not allowed" + MidConst_SNoInsertsAllowed, "Inserts are not allowed" + MidConst_SConnectionMissing, "Requires Connection before opening" + MidConst_SNoCircularConnection, "Circular reference to Connection not allowed" + cxPCConsts_scxPCImageListIndexError, "Index (%d) must be between 0 and %d" + cxPCConsts_scxPCNoBaseImages, "BaseImages is not assigned" + cxPCConsts_scxPCNoRegisteredStyles, "There are no styles registered" + cxPCConsts_scxPCPageIndexError, "%d is an invalid PageIndex value. PageIndex must be between 0 and %d" + cxPCConsts_scxPCPainterClassError, "PCPainterClass is nil" + cxPCConsts_scxPCTabCountEqualsZero, "Tabs.Count = 0" + cxPCConsts_scxPCTabIndexError, "Tab's index (%d) out of bounds" + cxPCConsts_scxPCTabVisibleIndexOutsOfBounds, "TabVisibleIndex (%d) must be between 0 and %d" + cxPCConsts_scxPCVisibleTabListEmpty, "There are no visible tabs" + cxPCConsts_scxPCAllowRotateError, "%s style does not support rotation of tabs" + cxFilterControlStrs_cxSFilterControlDialogActionCancelCaption, "Cancel" + cxFilterControlStrs_cxSFilterControlDialogFileExt, "flt" + cxFilterControlStrs_cxSFilterControlDialogFileFilter, "Filters (*.flt)|*.flt" + MidConst_SNoDataProvider, "Missing data provider or data packet" + MidConst_SInvalidDataPacket, "Invalid data packet" + MidConst_SRefreshError, "Must apply updates before refreshing data" + MidConst_SNoCircularReference, "Circular provider references not allowed" + MidConst_SErrorLoadingMidas, "Error loading MIDAS.DLL" + MidConst_SCannotCreateDataSet, "No fields defined. Cannot create dataset" + MidConst_SNoConnectToBroker, "Connection not allowed to TConnectionBroker" + MidConst_SNoParentConnection, "ParentConnection is not assigned" + MidConst_SInvalidOptParamType, "Value cannot be stored in an optional parameter" + MidConst_SConstraintFailed, "Record or field constraint failed." + MidConst_SField, "Field" + MidConst_SRecConstFail, "Preparation of record constraint failed with error \"%s\"" + MidConst_SFieldConstFail, "Preparation of field constraint failed with error \"%s\"" + cxFilterControlStrs_cxSFilterDialogCaption, "Custom Filter" + cxFilterControlStrs_cxSFilterDialogInvalidValue, "Invalid value" + cxFilterControlStrs_cxSFilterDialogUse, "Use" + cxFilterControlStrs_cxSFilterDialogSingleCharacter, "to represent any single character" + cxFilterControlStrs_cxSFilterDialogCharactersSeries, "to represent any series of characters" + cxFilterControlStrs_cxSFilterDialogOperationAnd, "AND" + cxFilterControlStrs_cxSFilterDialogOperationOr, "OR" + cxFilterControlStrs_cxSFilterDialogRows, "Show rows where:" + cxFilterControlStrs_cxSFilterControlDialogCaption, "Filter builder" + cxFilterControlStrs_cxSFilterControlDialogNewFile, "untitled.flt" + cxFilterControlStrs_cxSFilterControlDialogOpenDialogCaption, "Open an existing filter" + cxFilterControlStrs_cxSFilterControlDialogSaveDialogCaption, "Save the active filter to file" + cxFilterControlStrs_cxSFilterControlDialogActionSaveCaption, "&Save As..." + cxFilterControlStrs_cxSFilterControlDialogActionOpenCaption, "&Open..." + cxFilterControlStrs_cxSFilterControlDialogActionApplyCaption, "&Apply" + cxFilterControlStrs_cxSFilterControlDialogActionOkCaption, "OK" + cxEditConsts_scxMaskEditInvalidEditValue, "The edit value is invalid" + cxEditConsts_cxSSpinEditInvalidNumericValue, "Invalid numeric value" + cxFilterControlStrs_cxSFilterBoolOperatorAnd, "AND" + cxFilterControlStrs_cxSFilterBoolOperatorOr, "OR" + cxFilterControlStrs_cxSFilterBoolOperatorNotAnd, "NOT AND" + cxFilterControlStrs_cxSFilterBoolOperatorNotOr, "NOT OR" + cxFilterControlStrs_cxSFilterRootButtonCaption, "Filter" + cxFilterControlStrs_cxSFilterAddCondition, "Add &Condition" + cxFilterControlStrs_cxSFilterAddGroup, "Add &Group" + cxFilterControlStrs_cxSFilterRemoveRow, "&Remove Row" + cxFilterControlStrs_cxSFilterClearAll, "Clear &All" + cxFilterControlStrs_cxSFilterFooterAddCondition, "press the button to add a new condition" + cxFilterControlStrs_cxSFilterGroupCaption, "applies to the following conditions" + cxFilterControlStrs_cxSFilterRootGroupCaption, "" + cxFilterControlStrs_cxSFilterControlNullString, "" + cxFilterControlStrs_cxSFilterErrorBuilding, "Can't build filter from source" + 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_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_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_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_cxNavigatorHint_Edit, "Edit record" + cxEditConsts_cxNavigatorHint_Post, "Post edit" + cxEditConsts_cxNavigatorHint_Cancel, "Cancel edit" + cxEditConsts_cxNavigatorHint_Refresh, "Refresh data" + cxEditConsts_cxNavigatorHint_SaveBookmark, "Save Bookmark" + cxEditConsts_cxNavigatorHint_GotoBookmark, "Goto Bookmark" + cxEditConsts_cxNavigatorHint_Filter, "Filter data" + 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_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_cxSDateFifth, "fifth" + cxEditConsts_cxSDateSixth, "sixth" + cxEditConsts_cxSDateSeventh, "seventh" + cxEditConsts_cxSDateBOM, "bom" + cxEditConsts_cxSDateEOM, "eom" + cxEditConsts_cxSDateNow, "now" + cxEditConsts_scxSCalcError, "Error" + cxEditConsts_scxSHyperLinkPrefix, "http://" + cxEditConsts_cxNavigatorHint_First, "First record" + cxEditConsts_cxNavigatorHint_Prior, "Prior record" + cxEditConsts_cxNavigatorHint_PriorPage, "Prior page" + cxEditConsts_cxNavigatorHint_Next, "Next record" + cxEditConsts_cxNavigatorHint_NextPage, "Next page" + cxEditConsts_cxNavigatorHint_Last, "Last record" + cxEditConsts_cxNavigatorHint_Insert, "Insert record" + cxEditConsts_cxNavigatorHint_Delete, "Delete record" + 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_cxSDateSecond, "second" + cxEditConsts_cxSDateThird, "third" + cxEditConsts_cxSDateFourth, "fourth" + 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..." + cxEditConsts_cxSDatePopupClear, "Clear" + cxEditConsts_cxSDatePopupNow, "Now" + cxEditConsts_cxSDatePopupOK, "OK" + cxDataConsts_cxSDataRecordIndexError, "RecordIndex out of range" + cxDataConsts_cxSDataItemIndexError, "ItemIndex out of range" + cxDataConsts_cxSDataProviderModeError, "This operation is not supported in provider mode" + cxDataConsts_cxSDataInvalidStreamFormat, "Invalid stream format" + cxDataConsts_cxSDataRowIndexError, "RowIndex out of range" + 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" + cxEditConsts_cxSEditCheckBoxGrayed, "" + cxEditConsts_cxSEditCheckBoxUnchecked, "False" + cxEditConsts_cxSRadioGroupDefaultCaption, "" + cxFilterConsts_cxSFilterBlankCaption, "blank" + cxFilterConsts_cxSFilterOperatorIsNull, "is blank" + cxFilterConsts_cxSFilterOperatorIsNotNull, "is not blank" + cxFilterConsts_cxSFilterOperatorBeginsWith, "begins with" + cxFilterConsts_cxSFilterOperatorDoesNotBeginWith, "does not begin with" + cxFilterConsts_cxSFilterOperatorEndsWith, "ends with" + cxFilterConsts_cxSFilterOperatorDoesNotEndWith, "does not end with" + cxFilterConsts_cxSFilterOperatorContains, "contains" + cxFilterConsts_cxSFilterOperatorDoesNotContain, "does not contain" + cxFilterConsts_cxSFilterBoxAllCaption, "(All)" + cxFilterConsts_cxSFilterBoxCustomCaption, "(Custom...)" + cxFilterConsts_cxSFilterBoxBlanksCaption, "(Blanks)" + cxFilterConsts_cxSFilterBoxNonBlanksCaption, "(NonBlanks)" + cxDataConsts_cxSDataReadError, "Stream read error" + cxDataConsts_cxSDataWriteError, "Stream write error" + cxDataConsts_cxSDataItemExistError, "Item already exists" + cxFilterConsts_cxSFilterOperatorLastYear, "is last year" + cxFilterConsts_cxSFilterOperatorPast, "is past" + cxFilterConsts_cxSFilterOperatorThisWeek, "is this week" + cxFilterConsts_cxSFilterOperatorThisMonth, "is this month" + cxFilterConsts_cxSFilterOperatorThisYear, "is this year" + cxFilterConsts_cxSFilterOperatorNext7Days, "is next 7 days" + cxFilterConsts_cxSFilterOperatorNextWeek, "is next week" + cxFilterConsts_cxSFilterOperatorNext14Days, "is next 14 days" + cxFilterConsts_cxSFilterOperatorNextTwoWeeks, "is next two weeks" + cxFilterConsts_cxSFilterOperatorNext30Days, "is next 30 days" + cxFilterConsts_cxSFilterOperatorNextMonth, "is next month" + cxFilterConsts_cxSFilterOperatorNextYear, "is next year" + cxFilterConsts_cxSFilterOperatorFuture, "is future" + cxFilterConsts_cxSFilterAndCaption, "and" + cxFilterConsts_cxSFilterOrCaption, "or" + cxFilterConsts_cxSFilterNotCaption, "not" + cxFilterConsts_cxSFilterOperatorGreaterEqual, "is greater than or equal to" + cxFilterConsts_cxSFilterOperatorLike, "like" + cxFilterConsts_cxSFilterOperatorNotLike, "not like" + cxFilterConsts_cxSFilterOperatorBetween, "between" + cxFilterConsts_cxSFilterOperatorNotBetween, "not between" + cxFilterConsts_cxSFilterOperatorInList, "in" + cxFilterConsts_cxSFilterOperatorNotInList, "not in" + cxFilterConsts_cxSFilterOperatorYesterday, "is yesterday" + cxFilterConsts_cxSFilterOperatorToday, "is today" + cxFilterConsts_cxSFilterOperatorTomorrow, "is tomorrow" + cxFilterConsts_cxSFilterOperatorLast7Days, "is last 7 days" + cxFilterConsts_cxSFilterOperatorLastWeek, "is last week" + cxFilterConsts_cxSFilterOperatorLast14Days, "is last 14 days" + cxFilterConsts_cxSFilterOperatorLastTwoWeeks, "is last two weeks" + cxFilterConsts_cxSFilterOperatorLast30Days, "is last 30 days" + cxFilterConsts_cxSFilterOperatorLastMonth, "is last month" + 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." + 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." + cxFilterConsts_cxSFilterOperatorEqual, "equals" + cxFilterConsts_cxSFilterOperatorNotEqual, "does not equal" + cxFilterConsts_cxSFilterOperatorLess, "is less than" + cxFilterConsts_cxSFilterOperatorLessEqual, "is less than or equal to" + cxFilterConsts_cxSFilterOperatorGreater, "is greater than" + MSConsts_SSQLNCLINeedsChangePwd, "Provider must be SQL Native Client for changing password" + MSConsts_SAsynchExecuting, "Operation cannot be performed while executing asynchronously" + MSConsts_SNumericOverflow, "Numeric overflow" + MSConsts_SDMandServerCursors, "DisconnectedMode not allowed for server cursors" + MSConsts_SSQLOLEDB, "SQLOLEDB.1" + MSConsts_SSQLNativeClient, "SQLNCLI.1" + MSConsts_SSQLEverywhere, "MICROSOFT.SQLSERVER.MOBILE.OLEDB.3.0" + 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." + MSConsts_SParamNameUnknown, "Parameter name is unknown - %s" + MSConsts_SBadParamValue, "Bad parameter value - %s=%s" + MSConsts_SCheckConnection, "/* Check connection */" + MSConsts_STimestampFieldRequired, "Timestamp field required" + MSConsts_SLocalSortingServerCursor, "Local sorting is not compatible with server cursor types" + MSConsts_SRowMultipleChanges, "Updating or deleting a single row caused more than one row to be updated or deleted in the data store" + MSConsts_SRowPendingChanges, "A row had a pending change" + MSConsts_SRowCanceled, "Updating a row was canceled during notification" + MSConsts_SRowConcurrencyViolation, "A row was being updated or deleted, and the value of a column in that row has been changed since it was last fetched" + MSConsts_SRowDeleted, "A row was deleted" + MSConsts_SRowIntegrityViolation, "A row was being inserted, updated or deleted, and doing so violated the integrity constraints for the column or table" + MSConsts_SRowPermissionDenied, "The consumer did not have sufficient permission to update, delete, or insert a row" + MSConsts_SRowLimitReached, "The update, delete, or insert failed due to reaching a limit on the server, such as a query execution timing out" + MSConsts_SRowSchemaViolation, "A row was being inserted, no value was specified for a column, the column does not have a default, and the column is non-nullable" + MSConsts_SRowFail, "The consumer encountered a recoverable, provider-specific error, such as an RPC failure when transmitting the change to a remote server" + MSConsts_SSQLNCLINeeds, "Provider must be SQL Native Client for nonblocking execute" + MSConsts_SInvalidParamType, "invalid ParamType" + MSConsts_SBadAccessor, "bad accessor" + MSConsts_SInvalidValue, "invalid Value" + MSConsts_SSignMismatch, "sign mismatch" + MSConsts_SDataOverflow, "data overflow" + MSConsts_SDataTruncated, "data truncated" + MSConsts_SOutOfMemory, "could not allocate memory for return data" + MSConsts_SCantCreate, "the provider could not allocate memory in which to return data or a storage object was already open on the rowset. " + MSConsts_SPermissionDenied, "user did not have permission to write to the column" + MSConsts_SIntegrityViolation, "the data value violates the integrity constraints for the column" + MSConsts_SShemaViolation, "the data value violates the schema's constraint for the column" + MSConsts_SBadStatus, "bad status" + MSConsts_SUnknownStatus, "unknown status" + MSConsts_SParamNameMissing, "Parameter name missing" + MSConsts_SParamValueMissing, "Parameter value missing" + MSConsts_SInvalidChar, "Invalid character in non-quoted parameter value" + MSConsts_SOLEDBError, "OLE DB error occured. Code %Xh" + MSConsts_SMSSQLNotFound, "Required provider is not installed" + MSConsts_SNoResultSet, "Query must return exactly one result set - use Execute" + MSConsts_SBadOutputParam, "Bad parameter %s. Output parameters \"text\", \"ntext\" or \"image\" are not acceptable" + MSConsts_SBadFieldType, "Unknown field type \"%s\" (OLE DB code = %Xh)" + MSConsts_SBookmarksRequired, "Dataset does not support bookmarks, which are required for multi-record data controls" + MSConsts_SCUandServerCursors, "CachedUpdates not allowed for server cursors" + MSConsts_SCursorTypeChanged, "Cursor type changed for statement" + MSConsts_SWrongMDACVer, "Wrong MDAC version. Download latest MDAC version" + MSConsts_SObjectOpen, "Cannot execute command in current transaction context until previous opened DataSet (CursorType is ctDefaultResultSet) is fetched to end" + MSConsts_SConnectionOpen, "Cannot perform this operation on an open connection" + MSConsts_SBadProviderName, "Wrong provider name" + MSConsts_SBadDatabaseFile, "Wrong Database file" + MSConsts_SBadNetworkLibrary, "Wrong NetworkLibrary value" + MSConsts_SBadPacketSize, "Wrong PacketSize value" + MSConsts_SBadEncrypt, "Wrong Encrypt value" + DAConsts_SUnknownParamDataType, "Unknown type of parameter %s" + DAConsts_SRecordChanged, "Record was changed by another user" + DAConsts_SStoredProcNotDefined, "StoredProcName must be defined" + DAConsts_SConnectionIsClosed, "Operation is not allowed when the connection is closed" + DAConsts_SMaxConnectionsReached, "Maximum connections reached in pool" + DAConsts_SCannotChangeIsUnicode, "Cannot change IsUnicode if Size > 0" + DAConsts_SNoTimers, "Not enough timers available" + DAConsts_sBlobNotCompressed, "Blob is not compressed" + DAConsts_SCompressorNotLinked, "Compressor function is not linked" + DAConsts_SUncompressorNotLinked, "Uncompressor function is not linked" + DAConsts_SUpdateComponentCircularReferences, "Circular references are not allowed between TCustomDADataset and TCustomDAUpdateSQL objects" + DAConsts_SUpdateComponentInvalidType, "Only %s and %s objects are allowed in update properties" + DAConsts_SUpdateObjectEmptySQL, "SQL property of InsertObject, ModifyObject, DeleteObject or RefreshObject cannot be empty" + DAConsts_SDateEncodeError, "Invalid argument to date encode" + DAConsts_SEmptySQLStatement, "No SQL statement provided" + DAConsts_SInvalidBlobPosition, "Invalid BLOB position" + DAConsts_SBadStatementType, "Bad statement type" + DAConsts_SBadUpdatingTable, "Wrong UpdatingTable value - table %s is unknown" + DAConsts_SInvalidUnComprBlobSize, "Invalid uncompressed blob size" + DAConsts_SInvalidComprBlobSize, "Invalid compressed blob size" + DAConsts_SInvalidComprBlobHeader, "Invalid compressed blob header" + DAConsts_SInvalidComprBlobData, "Invalid compressed blob data" + DAConsts_SNotCachedUpdate, "Not in cached update mode" + DAConsts_SUpdateWrongDB, "Cannot update, %s is not owned by %s" + DAConsts_SConnectionNotDefined, "Connection is not defined" + DAConsts_SCannotConnect, "Cannot connect to database" + DAConsts_SMacroNotFound, "Macro %s not found" + DAConsts_STransactionInProgress, "User transaction is already in progress" + DAConsts_SUpdateFailed, "Update failed. Found %d records" + DAConsts_SRefreshFailed, "Refresh failed. Found %d records" + DAConsts_SInvalidFetchRows, "FetchRows must be 1..10000" + DAConsts_SNoCorrespondParam, "Not found field corresponding parameter %s" + DBXPool_SConnectTimeout, "Connect request timed out after %s milliseconds" + DBXPool_SInvalidCommand, "Unrecognized command: %s" + DBXTrace_SINVALID_TRACE_FLAG, "%s is an invalid setting for the %s property.\r\nUse '%s' or a semicolon separated list of one or more of the following:\r\n%s %s %s %s %s %s %s %s %s %s %s %s" + ZLibConst_sTargetBufferTooSmall, "ZLib error: target buffer may be too small" + ZLibConst_sError, "Error" + DAConsts_SUnknownDataType, "Unknown data type" + DAConsts_SDataTypeNotSupported, "Data type is not supported" + DAConsts_SFieldNotFound, "Field %s not found" + DAConsts_SCannotConvertType, "Cannot convert type" + DAConsts_SIllegalFilter, "Illegal filter expression" + DAConsts_SNeedBlobType, "Field is not BLOB" + DAConsts_SInvalidBlob, "Invalid BLOB" + DAConsts_SBlobMustBeCached, "Blob must be in cached mode" + DAConsts_SKeyFieldsReq, "Unique keyfields required" + DAConsts_SNoKeyFields, "Key fields not found" + DAConsts_SBadTableInfoName, "TableInfo name must be provided" + SqlConst_SINVALIDTXNID, "[0x0010]: Invalid Transaction ID" + SqlConst_SDUPLICATETXNID, "[0x0011]: Duplicate Transaction ID" + SqlConst_SDRIVERRESTRICTED, "[0x0012]: Application is not licensed to use this feature" + SqlConst_SLOCALTRANSACTIVE, "[0x0013]: Local Transaction already active" + SqlConst_SMULTIPLETRANSNOTENABLED, "[0x0014]: Multiple Transactions not Enabled" + SqlConst_SCONNECTIONFAILED, "[0x0015]: Connection failed" + SqlConst_SDRIVERINITFAILED, "[0x0016]: Driver initialization failed" + SqlConst_SOPTLOCKFAILED, "[0x0017]: Optimistic Locking failed" + SqlConst_SINVALIDREF, "[0x0018]: Invalid REF" + SqlConst_SNOTABLE, "[0x0019]: No table found" + SqlConst_SMISSINGPARAMINSQL, "[0x001A] Missing parameter marker in SQL" + SqlConst_SNOTIMPLEMENTED, "[0x001B] Not implemented" + SqlConst_SDRIVERINCOMPATIBLE, "[0x001C] Incompatible driver" + SqlConst_SDriverNotInConfigFile, "Driver (%s) not found in Cfg file (%s)" + SqlConst_SObjectTypenameRequired, "Object type name required as parameter value" + SqlConst_SCannotCreateFile, "Cannot create file %s" + SqlConst_SNOERROR, "" + SqlConst_SWARNING, "[0x0001]: Warning" + SqlConst_SNOMEMORY, "[0x0002]: Insufficient Memory for Operation" + SqlConst_SINVALIDFLDTYPE, "[0x0003]: Invalid Field Type" + SqlConst_SINVALIDHNDL, "[0x0004]: Invalid Handle" + SqlConst_SNOTSUPPORTED, "[0x0005]: Operation Not Supported" + SqlConst_SINVALIDTIME, "[0x0006]: Invalid Time" + SqlConst_SINVALIDXLATION, "[0x0007]: Invalid Data Translation" + SqlConst_SOUTOFRANGE, "[0x0008]: Parameter/Column out of Range" + SqlConst_SINVALIDPARAM, "[0x0009]: Invalid Parameter" + SqlConst_SEOF, "[0x000A]: Result set at EOF" + SqlConst_SSQLPARAMNOTSET, "dbExpress Error [0x000B]: Parameter Not Set" + SqlConst_SINVALIDUSRPASS, "[0x000C] Invalid Username/Password" + SqlConst_SINVALIDPRECISION, "[0x000D]: Invalid Precision" + SqlConst_SINVALIDLEN, "[0x000E]: Invalid Length" + SqlConst_SINVALIDXISOLEVEL, "[0x000F]: Invalid Transaction Isolation Level" + SqlConst_SEmptySQLStatement, "No SQL statement available" + SqlConst_SNoParameterValue, "No value for parameter '%s'" + SqlConst_SNoSqlStatement, "Missing query, table name or procedure name" + SqlConst_SMissingDataBaseName, "Missing Database property" + SqlConst_SMissingDriverName, "Missing DriverName property" + SqlConst_SPrepareError, "Unable to execute Query" + SqlConst_SObjectNameError, "Table/Procedure not found" + SqlConst_SSQLDataSetOpen, "Unable to determine field names for %s" + SqlConst_SNoActiveTrans, "There is no active transaction" + SqlConst_SActiveTrans, "A transaction is already active" + SqlConst_SMissingDLLName, "DLL/Shared Library Name not Set" + SqlConst_SMissingDriverRegFile, "Driver/Connection Registry File '%s' not found" + SqlConst_SNoCursor, "Cursor not returned from Query" + SqlConst_SErrorMappingError, "SQL Error: Error mapping failed" + SqlConst_SStoredProcsNotSupported, "Stored Procedures not supported by '%s' Server" + SqlConst_SPackagesNotSupported, "Packages are not supported by '%s' Server" + DBXCommon_SDriverLoadError, "%s driver cannot be loaded. Make sure your project either uses the %s unit or uses packages so the %s package can be loaded dynamically" + DBXCommon_SReaderNew, "Reader Next method has not been called" + DBXCommon_SReaderClosed, "Reader has no more rows" + DBXCommon_SReadOnlyType, "%s type cannot be modified" + DBXCommon_SReadOnlyParameter, "%s parameter cannot be modified" + DBXCommon_SConnectionFactoryInitFailed, "Cannot find connection files from application directory (%s) or the system registry (%s)." + DBXCommon_SInvalidDelegationDepth, "Cannot delegate a connection more than 16 times: %s" + DBXCommon_SInvalidOrdinal, "Invalid Ordinal: %d" + DBXCommon_SDefaultErrorMessage, "DBX Error: %s" + DBXCommon_SAlreadyPrepared, "Command can only be prepared once" + SqlConst_SLoginError, "Cannot connect to database '%s'" + SqlConst_SMonitorActive, "Cannot change connection on Active Monitor" + SqlConst_SDatabaseOpen, "Cannot perform this operation on an open connection" + SqlConst_SDatabaseClosed, "Cannot perform this operation on a closed connection" + SqlConst_SMissingSQLConnection, "SQLConnection property required for this operation" + SqlConst_SConnectionNameMissing, "Connection name missing" + bdeconst_SNoCachedUpdates, "Not in cached update mode" + bdeconst_SInvalidAliasName, "Invalid alias name %s" + bdeconst_SNoFieldAccess, "Cannot access field '%s' in a filter" + bdeconst_SUntitled, "Untitled Application" + bdeconst_SLocalTransDirty, "The transaction isolation level must be dirty read for local databases" + ClassRegistry_SAlreadyRegistered, "%s class already registered" + ClassRegistry_SNotRegistered, "%s class is not registered" + ClassRegistry_SInvalidClassRegister, "%s class registered with a nil class reference" + ClassRegistry_SCannotFreeClassRegistry, "Cannot free TClassRegistry.ClassRegistry" + DBXCommon_SDllLoadError, "Unable to load %s (ErrorCode %d). It may be missing from the system path." + DBXCommon_SDllProcLoadError, "Unable to find procedure %s" + DBXCommon_SUnknownDriver, "Unknown driver: %s" + DBXCommon_SInvalidArgument, "Invalid argument: %s" + DBXCommon_SInvalidTransaction, "Invalid transaction Object" + DBXCommon_SNotImplemented, "Feature not implemented" + DBXCommon_SRequiredProperty, "%s driver property not set" + bdeconst_SDatabaseOpen, "Cannot perform this operation on an open database" + bdeconst_SDatabaseClosed, "Cannot perform this operation on a closed database" + bdeconst_SDatabaseHandleSet, "Database handle owned by a different session" + bdeconst_SSessionActive, "Cannot perform this operation on an active session" + bdeconst_SHandleError, "Error creating cursor handle" + bdeconst_SNoReferenceTableName, "ReferenceTableName not specified for field '%s'" + bdeconst_SEmptySQLStatement, "No SQL statement available" + bdeconst_SNoParameterValue, "No value for parameter '%s'" + bdeconst_SNoParameterType, "No parameter type for parameter '%s'" + bdeconst_SLoginError, "Cannot connect to database '%s'" + bdeconst_SInitError, "An error occurred while attempting to initialize the Borland Database Engine (error $%.4x)" + bdeconst_SIDAPILangID, "0009" + bdeconst_SBDEError, "BDE error $%.4x" + bdeconst_STruncationError, "Parameter '%s' truncated on output" + bdeconst_SResultName, "Result" + bdeconst_SNoDataSetField, "Missing DataSetField property" + 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" + ADOConst_sNameAttr, "Name" + ADOConst_sValueAttr, "Value" + bdeconst_SAutoSessionExclusive, "Cannot enable AutoSessionName property with more than one session on a form or data-module" + bdeconst_SAutoSessionExists, "Cannot add a session to the form or data-module while session '%s' has AutoSessionName enabled" + bdeconst_SAutoSessionActive, "Cannot modify SessionName while AutoSessionName is enabled" + bdeconst_SDuplicateDatabaseName, "Duplicate database name '%s'" + bdeconst_SDuplicateSessionName, "Duplicate session name '%s'" + bdeconst_SInvalidSessionName, "Invalid session name %s" + bdeconst_SDatabaseNameMissing, "Database name missing" + bdeconst_SSessionNameMissing, "Session name missing" + 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" + IBXConst_SIB80feature, "%s is an InterBase 2007 function. Please upgrade to InterBase 2007 to use this functonality" + 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" + 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_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_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_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_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_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_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_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_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_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_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" + 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_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" + 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" + 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)]" + IBSQLMonitor_StrRollback, ": [Rollback]" + IBSQLMonitor_StrRollbackRetainin, ": [Rollback retaining (Soft rollback)]" + IBSQLMonitor_StrStartTransaction, ": [Start transaction]" + IBSQLMonitor_StrApplication, "[Application: " + 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" + VDBConsts_SInsertRecord, "Insert record" + VDBConsts_SDeleteRecord, "Delete record" + VDBConsts_SEditRecord, "Edit record" + VDBConsts_SPostEdit, "Post edit" + VDBConsts_SCancelEdit, "Cancel edit" + VDBConsts_SRefreshRecord, "Refresh data" + VDBConsts_SRemoteLogin, "Remote Login" + IBSQLMonitor_StrConnect, ": [Connect]" + IBSQLMonitor_StrDisconnect, ": [Disconnect]" + IBSQLMonitor_StrMisc, "[Misc] " + IBSQLMonitor_StrError, "[Error] " + IBSQLMonitor_StrAttach, ": [Attach]" + IBSQLMonitor_StrDetach, ": [Detach]" + IBSQLMonitor_StrQuery, ": [Query]" + IBSQLMonitor_StrStart, ": [Start]" + IBSQLMonitor_StrExecute, ": [Execute] " + 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" + 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." + VDBConsts_SFirstRecord, "First record" + VDBConsts_SPriorRecord, "Prior record" + VDBConsts_SNextRecord, "Next record" + VDBConsts_SLastRecord, "Last record" + 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" + 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" + 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_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" + 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_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_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_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_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_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_RsClBlack, "Black" + JvResources_RsClMaroon, "Maroon" + JvResources_RsClGreen, "Green" + JvResources_RsClOlive, "Olive green" + JvResources_RsClNavy, "Navy blue" + JvResources_RsClPurple, "Purple" + JvResources_RsClTeal, "Teal" + 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_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" + 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" + 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_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" + 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_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_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_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_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_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_RsRTTIParent, "Parent: " + JclResources_RsRTTIPropCount, "Property count: " + JclResources_RsRTTIUnitName, "Unit name: " + JclResources_RsRTTIBasedOn, "Based on: " + JclResources_RsRTTIFloatType, "Float type: " + JclResources_RsRTTIMethodKind, "Method kind: " + 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_RsBlankSearchString, "Search string cannot be blank" + JclResources_RsArgumentOutOfRange, "Argument out of range" + JclResources_RsRTTIPropStored, "stored" + JclResources_RsRTTIField, "field" + JclResources_RsRTTIStaticMethod, "static method" + JclResources_RsRTTIVirtualMethod, "virtual method" + JclResources_RsRTTIIndex, "index" + JclResources_RsRTTIDefault, "default" + 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_RsHKPDShort, "HKPD" + JclResources_RsHKCCShort, "HKCC" + JclResources_RsHKDDShort, "HKDD" + JclResources_RsRTTIValueOutOfRange, "Value out of range (%s)." + JclResources_RsRTTIUnknownIdentifier, "Unknown identifier '%s'." + JclResources_RsRTTIVar, "var " + 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_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" + 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" + 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" + 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_RsCannotCreateDir, "Unable to create directory" + JclResources_RsFileUtilsNoVersionInfo, "File contains no version information" + 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" + 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." + 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" + 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_RSBufferMissingTerminator, "Buffer terminator must be specified." + 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." + IdResourceStringsCore_RSInterceptCircularLink, "%d: Circular links are not allowed" + 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_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." + IdResourceStringsCore_RSSocksUDPNotSupported, "UDP is not support in this SOCKS version." + 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_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_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." + 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_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." + 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." + DBConsts_SBadFieldType, "Field '%s' is of an unsupported type" + DBConsts_SAggActive, "Property may not be modified while aggregate is active" + DBConsts_SProviderSQLNotSupported, "SQL not supported: %s" + DBConsts_SProviderExecuteNotSupported, "Execute not supported: %s" + DBConsts_SExprNoAggOnCalcs, "Field '%s' is not the correct type of calculated field to be used in an aggregate, use an internalcalc" + DBConsts_SDataSetUnidirectional, "Operation not allowed on a unidirectional dataset" + DBConsts_SUnassignedVar, "Unassigned variant value" + DBConsts_SRecordNotFound, "Record not found" + DBConsts_SFileNameBlank, "FileName property cannot be blank" + DBConsts_SBcdOverflow, "BCD overflow" + 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" + DBConsts_SExprBadNullTest, "NULL only allowed with '=' and '<>'" + DBConsts_SExprRangeError, "Constant out of range" + DBConsts_SExprIncorrect, "Incorrectly formed filter expression" + DBConsts_SExprNothing, "nothing" + DBConsts_SExprTypeMis, "Type mismatch in expression" + DBConsts_SExprBadScope, "Operation cannot mix aggregate value with record-varying value" + DBConsts_SExprNoArith, "Arithmetic in filter expressions not supported" + DBConsts_SExprNotAgg, "Expression is not an aggregate expression" + DBConsts_SExprBadConst, "Constant is not correct type %s" + DBConsts_SExprNoAggFilter, "Aggregate expressions not allowed in filters" + DBConsts_SExprEmptyInList, "IN predicate list may not be empty" + DBConsts_SInvalidKeywordUse, "Invalid use of keyword" + DBConsts_STextFalse, "False" + DBConsts_STextTrue, "True" + DBConsts_SParameterNotFound, "Parameter '%s' not found" + DBConsts_SInvalidVersion, "Unable to load bind parameters" + DBConsts_SNoNestedMasterSource, "Nested datasets cannot have a MasterSource" + DBConsts_SDataSetOpen, "Cannot perform this operation on an open dataset" + 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_SExprTermination, "Filter expression incorrectly terminated" + DBConsts_SExprNameError, "Unterminated field name" + DBConsts_SExprStringError, "Unterminated string constant" + DBConsts_SExprInvalidChar, "Invalid filter expression character: '%s'" + DBConsts_SExprNoLParen, "'(' expected but %s found" + DBConsts_SExprNoRParen, "')' expected but %s found" + DBConsts_SExprNoRParenOrComma, "')' or ',' expected but %s found" + DBConsts_SExprExpected, "Expression expected but %s found" + DBConsts_SExprBadField, "Field '%s' cannot be used in a filter expression" + 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_SFieldIndexError, "Field index out of range" + DBConsts_SNoFieldIndexes, "No index currently active" + DBConsts_SNotIndexField, "Field '%s' is not indexed and cannot be modified" + DBConsts_SIndexFieldMissing, "Cannot access index field '%s'" + DBConsts_SDuplicateIndexName, "Duplicate index name '%s'" + 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" + uRODECConst_sNotInitialized, "%s is not initialized, call Init() or InitKey() first." + 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'" + 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" + 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_MessageNotAssigned, "Message is NIL" + 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." + 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" + 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_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_AssignError, "Cannot assign a \"%s\" to a \"%s\"." + uRORes_err_InvalidRequestStream, "Invalid request stream (%d bytes)" + uRORes_err_NILMessage, "Message is NIL" + 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_ParameterNotFound, "Parameter \"%s\" was not found" + 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_InvalidTargetEntity, "Invalid TargetEntity \"%s\"" + uRORes_err_InvalidParamFlag, "Invalid Parameter Flag \"%s\"" + uRORes_err_InvalidStringLength, "Stream read error: Invalid string length \"%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" + Consts_SUnicodeEncoding, "Unicode" + Consts_SBigEndianEncoding, "Big Endian Unicode" + Consts_SUTF8Encoding, "UTF-8" + Consts_SUTF7Encoding, "UTF-7" + Consts_STrayIconRemoveError, "Cannot remove shell notification icon" + Consts_STrayIconCreateError, "Cannot create shell notification icon" + Consts_SPageControlNotSet, "PageControl must first be assigned" + Consts_SWindowsVistaRequired, "%s requires Windows Vista or later" + 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" + uRORes_err_InvalidIndex, "Invalid index %d" + uRORes_err_InvalidType, "Invalid type \"%s. Expected \"%s\"\"" + uRORes_err_InvalidLibrary, "Invalid library" + uRORes_err_InvalidStream, "Invalid stream" + 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_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_SmkcRight, "Right" + Consts_SmkcDown, "Down" + Consts_SmkcIns, "Ins" + Consts_SmkcDel, "Del" + Consts_SmkcShift, "Shift+" + Consts_SmkcCtrl, "Ctrl+" + Consts_SmkcAlt, "Alt+" + Consts_srNone, "(None)" + 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_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_SmkcEnter, "Enter" + Consts_SmkcSpace, "Space" + Consts_SmkcPgUp, "PgUp" + Consts_SmkcPgDn, "PgDn" + Consts_SmkcEnd, "End" + Consts_SmkcHome, "Home" + Consts_SmkcLeft, "Left" + Consts_SmkcUp, "Up" + 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_SMsgDlgInformation, "Information" + Consts_SMsgDlgConfirm, "Confirm" + Consts_SMsgDlgYes, "&Yes" + Consts_SMsgDlgNo, "&No" + Consts_SMsgDlgOK, "OK" + Consts_SMsgDlgCancel, "Cancel" + Consts_SMsgDlgHelp, "&Help" + Consts_SMsgDlgAbort, "&Abort" + 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_SCancelButton, "Cancel" + Consts_SYesButton, "&Yes" + Consts_SNoButton, "&No" + Consts_SHelpButton, "&Help" + Consts_SCloseButton, "&Close" + Consts_SIgnoreButton, "&Ignore" + Consts_SRetryButton, "&Retry" + Consts_SAbortButton, "Abort" + 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" + 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_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" + 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" + 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_SThreadCreateError, "Thread creation error: %s" + RTLConsts_SThreadError, "Thread Error: %s (%d)" + RTLConsts_SMissingDateTimeField, "?" + RTLConsts_SInvalidDateTime, "''%s'' is not a valid date and time" + 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" + 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'" + 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'" + 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" + 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" + SysConst_SLongMonthNameOct, "October" + 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_SShortMonthNameJun, "Jun" + 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_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_sErrorLoadingPackage, "Can't load package %s.\r\n%s" + SysConst_SInvalidPackageFile, "Invalid package file '%s'" + SysConst_SInvalidPackageHandle, "Invalid package handle" + SysConst_SDuplicatePackageUnit, "Cannot load package '%s.' It contains unit '%s,'which is also contained in package '%s'" + 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_SInvalidVarNullOp, "Invalid NULL variant operation" + SysConst_SInvalidVarOpWithHResultWithPrefix, "Invalid variant operation (%s%.8x)\n%s" + 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_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_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_SVarArrayWithHResult, "Unexpected variant or safe array error: %s%.8x" + SysConst_SInvalidVarCast, "Invalid variant type conversion" + SysConst_SInvalidVarOp, "Invalid variant operation" + 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" + 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_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_SInvalidBoolean, "'%s' is not a valid boolean 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" +END + +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\controls.res */ +/* C:\Varela_D2007\Lib\RemObjects\RemObjects_SDK\uROPoweredByRemObjectsButton.res */ +/* C:\Varela_D2007\Lib\RemObjects\RemObjects_SDK\uROHtmlServerInfo.res */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\buttons.res */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\extdlgs.res */ +/* C:\Varela_D2007\Lib\FastReport3\frxProgress.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxCtrls.res */ +/* C:\Varela_D2007\Lib\FastReport3\frxPrintDialog.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxDock.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxPreviewPageSettings.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxSearchDialog.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxPreview.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxPreview.res */ +/* C:\Varela_D2007\Lib\FastReport3\frxDialogForm.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxPassw.dfm */ +/* C:\Varela_D2007\Lib\FastReport3\frxClass.res */ +/* C:\Varela_D2007\Lib\JVCL\JvConsts.res */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\WindowsXP.res */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\DBPWDlg.dfm */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\DBLogDlg.dfm */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\dbctrls.res */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\uDAReconcileDialogDetails.dfm */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\uDAReconcileDialog.dfm */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\DataAbstract_IBXDriver_Glyphs.res */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\DataAbstract_ADODriver_Glyphs.res */ +/* C:\Varela_D2007\Lib\JVCL\JvLogForm.dfm */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\DataAbstract_BDEDriver_Glyphs.res */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\DataAbstract_DBXDriver_Glyphs.res */ +/* C:\Varela_D2007\Lib\SDAC\DBAccess.res */ +/* C:\Varela_D2007\Lib\RemObjects\Data_Abstract\DataAbstract_SDACDriver_Glyphs.res */ +/* C:\Varela_D2007\Source\Servidor\uDataModuleServer.dfm */ +/* C:\Varela_D2007\Source\Servidor\Configuracion\uFrameConfiguracion.dfm */ +/* C:\Varela_D2007\Lib\DevExpressVCL\dxOffice11.res */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxControls.res */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxLookAndFeelPainters.res */ +/* C:\Archivos de programa\CodeGear\RAD Studio\5.0\Lib\filectrl.res */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxEdit.res */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxShellBrowser.dfm */ +/* C:\Varela_D2007\Source\Servidor\Configuracion\uConexionBD.dfm */ +/* C:\Varela_D2007\Source\Servidor\Configuracion\uConfGeneral.dfm */ +/* C:\Varela_D2007\Lib\JVCL\JvToolEdit.res */ +/* C:\Varela_D2007\Lib\JVCL\JvSpin.res */ +/* C:\Varela_D2007\Source\Servidor\Configuracion\uConfFicherosEDI.dfm */ +/* C:\Varela_D2007\Source\Servidor\Configuracion\uConfiguracion.dfm */ +/* C:\Varela_D2007\Source\Servidor\EDI_Log_Impl.dfm */ +/* C:\Varela_D2007\Source\Servidor\EDI_Sales_Impl.dfm */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxGrid.res */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxFilterControlDialog.dfm */ +/* C:\Varela_D2007\Lib\DevExpressVCL\cxFilterDialog.dfm */ +/* C:\Varela_D2007\Source\Servidor\Services\EDI_Sales\uDataModuleEDI_Sales.dfm */ +/* C:\Varela_D2007\Source\Servidor\uAcercaDe.dfm */ +/* C:\Varela_D2007\Source\Servidor\fServerForm.dfm */ +/* C:\Varela_D2007\Source\Servidor\Services\EDI_Inventary\uDataModuleEDI_Inventary.dfm */ +/* C:\Varela_D2007\Source\Servidor\EDI_Inventary_Impl.dfm */ +/* C:\Varela_D2007\Source\Servidor\Services\Login\srvLogin_Impl.dfm */ +/* C:\Varela_D2007\Source\Servidor\srvInformes_Impl.dfm */ +/* C:\Varela_D2007\Source\Servidor\Services\TransferenciaFicheros\srvTransfereciaFicheros_Impl.dfm */ +/* C:\Varela_D2007\Source\ControlesBase\Servidor\srvControles_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasProceso\Servidor\srvVentasEnProceso_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\VentasTerminadas\Servidor\srvVentasTerminadas_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\ReferenciaGenerica\Servidor\srvReferenciaGenerica_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\Recepciones\Servidor\srvRecepciones_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\Devoluciones\Servidor\srvDevoluciones_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\Traspasos\Servidor\srvTraspasos_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\Stock\Servidor\srvStock_Impl.dfm */ +/* C:\Varela_D2007\Source\Modulos\Parametros\Servidor\srvParametros_Impl.dfm */ +/* C:\Varela_D2007\Source\Servidor\AdminPV_Server.res */ +/* C:\Varela_D2007\Source\Servidor\RODLFILE.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf8.tmp */ diff --git a/2.1.0/Source/Servidor/AdminPV_Server.rc b/2.1.0/Source/Servidor/AdminPV_Server.rc new file mode 100644 index 0000000..1b4e972 --- /dev/null +++ b/2.1.0/Source/Servidor/AdminPV_Server.rc @@ -0,0 +1,26 @@ +MAINICON ICON "C:\Varela_D2007\Resources\Iconos\Servidor.ico" +1 VERSIONINFO +FILEVERSION 2,1,0,0 +PRODUCTVERSION 2,1,0,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.1.0.0\0" + VALUE "ProductName", "AdminPV_Server\0" + VALUE "ProductVersion", "2.1.0.0\0" + VALUE "CompileDate", "lunes, 08 de octubre de 2007 12:43\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Servidor/AdminPV_Server.res b/2.1.0/Source/Servidor/AdminPV_Server.res new file mode 100644 index 0000000..06ecac2 Binary files /dev/null and b/2.1.0/Source/Servidor/AdminPV_Server.res differ diff --git a/2.1.0/Source/Servidor/Configuracion/uConexionBD.ddp b/2.1.0/Source/Servidor/Configuracion/uConexionBD.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Configuracion/uConexionBD.ddp differ diff --git a/2.1.0/Source/Servidor/Configuracion/uConexionBD.dfm b/2.1.0/Source/Servidor/Configuracion/uConexionBD.dfm new file mode 100644 index 0000000..9d1f999 --- /dev/null +++ b/2.1.0/Source/Servidor/Configuracion/uConexionBD.dfm @@ -0,0 +1,101 @@ +inherited frConexionBD: TfrConexionBD + Visible = True + ExplicitWidth = 451 + ExplicitHeight = 304 + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 185 + Caption = 'Servidor de base de datos' + TabOrder = 0 + DesignSize = ( + 375 + 185) + object Label1: TLabel + Left = 18 + Top = 30 + Width = 100 + Height = 13 + Caption = 'Nombre del servidor:' + end + object Label3: TLabel + Left = 18 + Top = 61 + Width = 72 + Height = 13 + Caption = 'Base de datos:' + end + object Label4: TLabel + Left = 18 + Top = 118 + Width = 36 + Height = 13 + Caption = 'Usuario' + end + object Label5: TLabel + Left = 18 + Top = 148 + Width = 60 + Height = 13 + Caption = 'Contrase'#241'a:' + end + object Bevel1: TBevel + Left = 16 + Top = 88 + 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 edtUser: TEdit + Left = 128 + Top = 112 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 2 + end + object edtPassword: TEdit + Left = 128 + Top = 144 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + PasswordChar = '*' + TabOrder = 3 + end + object edtBD: TEdit + Left = 128 + Top = 57 + Width = 231 + Height = 21 + TabOrder = 1 + end + end + object bProbar: TButton + Left = 240 + Top = 200 + Width = 143 + Height = 25 + Caption = 'Probar la conexi'#243'n' + TabOrder = 1 + OnClick = bProbarClick + end + object ADOConnection: TADOConnection + LoginPrompt = False + Mode = cmRead + Provider = 'SQLOLEDB.1' + Left = 48 + Top = 200 + end +end diff --git a/2.1.0/Source/Servidor/Configuracion/uConexionBD.pas b/2.1.0/Source/Servidor/Configuracion/uConexionBD.pas new file mode 100644 index 0000000..d52c411 --- /dev/null +++ b/2.1.0/Source/Servidor/Configuracion/uConexionBD.pas @@ -0,0 +1,90 @@ +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, ADODB; + +type + TfrConexionBD = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + edtServer: TEdit; + Label1: TLabel; + Label3: TLabel; + bProbar: TButton; + Label4: TLabel; + edtUser: TEdit; + Label5: TLabel; + edtPassword: TEdit; + Bevel1: TBevel; + edtBD: TEdit; + ADOConnection: TADOConnection; + procedure bProbarClick(Sender: TObject); + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +procedure TfrConexionBD.bProbarClick(Sender: TObject); +var + Aux : string; +begin + //Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=gft_varela;Data Source=david + + Aux := 'Provider=SQLOLEDB.1;Persist Security Info=False'; + Aux := Aux + ';Data Source=' + edtServer.Text; + Aux := Aux + ';User ID=' + edtUser.Text; + Aux := Aux + ';Password=' + edtPassword.Text; + Aux := Aux + ';Initial Catalog=' + edtBD.Text; + + with ADOConnection do + begin + LoginPrompt := False; + Mode := cmRead; + Provider := 'SQLOLEDB.1'; + ConnectionString := Aux; + + ShowHourglassCursor; + try + Connected := True; + Application.MessageBox('Conexión válida con la base de datos.', 'Información', MB_OK); + Connected := False; + except + on E : Exception do + begin + HideHourglassCursor; + Aux := 'No se ha podido establecer la conexión 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; + edtBD.Text := dmServer.FDBName; + edtUser.Text := dmServer.FDBUser; + edtPassword.Text := Decrypt(dmServer.FDBPass); +end; + +procedure TfrConexionBD.Finalize; +begin + dmServer.FDBServer := edtServer.Text; + dmServer.FDBName := edtBD.Text; + dmServer.FDBUser := edtUser.Text; + dmServer.FDBPass := Encrypt(edtPassword.Text); +end; + +end. diff --git a/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.ddp b/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.ddp differ diff --git a/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.dfm b/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.dfm new file mode 100644 index 0000000..278ee45 --- /dev/null +++ b/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.dfm @@ -0,0 +1,133 @@ +inherited frConfFicherosEDI: TfrConfFicherosEDI + Visible = True + ExplicitWidth = 451 + ExplicitHeight = 304 + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 217 + Caption = 'Ubicaci'#243'n de ficheros' + Constraints.MaxHeight = 217 + TabOrder = 0 + object Label1: TLabel + Left = 16 + Top = 32 + Width = 98 + Height = 13 + Caption = 'Entrada de ficheros:' + end + object Label2: TLabel + Left = 16 + Top = 128 + Width = 147 + Height = 13 + Caption = 'Almac'#233'n de ficheros cargados:' + end + object bElegir1: TButton + Left = 16 + Top = 72 + Width = 97 + Height = 25 + Caption = 'Elegir carpeta...' + TabOrder = 0 + Visible = False + OnClick = bElegir1Click + end + object bElegir2: TButton + Left = 16 + Top = 168 + Width = 97 + Height = 25 + Caption = 'Elegir carpeta...' + TabOrder = 1 + Visible = False + OnClick = bElegir2Click + end + end + object bAbrir1: TButton + Left = 272 + Top = 80 + Width = 97 + Height = 25 + Action = actAbrir1 + TabOrder = 1 + end + object bAbrir2: TButton + Left = 272 + Top = 176 + Width = 97 + Height = 25 + Action = actAbrir2 + TabOrder = 2 + end + object Panel1: TPanel + Left = 7 + Top = 232 + Width = 377 + Height = 41 + BevelOuter = bvNone + TabOrder = 3 + object Label3: TLabel + Left = 25 + Top = 12 + Width = 299 + Height = 13 + Caption = 'N'#250'mero de d'#237'as a mantener de almac'#233'n de ficheros cargados :' + Transparent = False + end + object edtDias: TcxSpinEdit + Left = 328 + Top = 8 + Properties.MinValue = 1.000000000000000000 + Properties.ValueType = vtInt + 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 + Value = 1 + Width = 41 + end + end + object edtEntrada: TcxTextEdit + Left = 24 + Top = 56 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Text = 'edtEntrada' + Width = 345 + end + object edtAlmacen: TcxTextEdit + Left = 24 + Top = 149 + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Text = 'edtEntrada' + Width = 345 + end + object ActionList1: TActionList + Left = 320 + Top = 120 + object actAbrir1: TAction + Caption = 'Abrir carpeta...' + OnExecute = actAbrir1Execute + OnUpdate = actAbrir1Update + end + object actAbrir2: TAction + Caption = 'Abrir carpeta...' + OnExecute = actAbrir2Execute + OnUpdate = actAbrir2Update + end + end +end diff --git a/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.pas b/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.pas new file mode 100644 index 0000000..4521c07 --- /dev/null +++ b/2.1.0/Source/Servidor/Configuracion/uConfFicherosEDI.pas @@ -0,0 +1,102 @@ +unit uConfFicherosEDI; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uFrameConfiguracion, StdCtrls, ExtCtrls, Mask, JvExMask, + JvToolEdit, ActnList, JvSpin, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxSpinEdit; + +type + TfrConfFicherosEDI = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + Label1: TLabel; + Label2: TLabel; + bElegir1: TButton; + bElegir2: TButton; + bAbrir1: TButton; + bAbrir2: TButton; + ActionList1: TActionList; + actAbrir1: TAction; + actAbrir2: TAction; + Panel1: TPanel; + Label3: TLabel; + edtDias: TcxSpinEdit; + edtEntrada: TcxTextEdit; + edtAlmacen: TcxTextEdit; + procedure bElegir1Click(Sender: TObject); + procedure bElegir2Click(Sender: TObject); + procedure actAbrir1Update(Sender: TObject); + procedure actAbrir2Update(Sender: TObject); + procedure actAbrir1Execute(Sender: TObject); + procedure actAbrir2Execute(Sender: TObject); + private + { Private declarations } + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +implementation + +uses uDataModuleServer, JclShell; + +{$R *.dfm} + +{ TfrConfFicherosEDI } + +procedure TfrConfFicherosEDI.Finalize; +begin + inherited; + dmServer.FDirEntrada := edtEntrada.Text; + dmServer.FDirAlmacen := edtAlmacen.Text; + dmServer.FDias := edtDias.Value; +end; + +procedure TfrConfFicherosEDI.Init; +begin + inherited; + edtEntrada.Text := dmServer.FDirEntrada; + edtAlmacen.Text := dmServer.FDirAlmacen; + edtDias.Value := dmServer.FDias; +end; + +procedure TfrConfFicherosEDI.bElegir1Click(Sender: TObject); +begin + inherited; +// edtEntrada.DoClick; +end; + +procedure TfrConfFicherosEDI.bElegir2Click(Sender: TObject); +begin + inherited; +// edtAlmacen.DoClick; +end; + +procedure TfrConfFicherosEDI.actAbrir1Update(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtEntrada.Text) > 0) +end; + +procedure TfrConfFicherosEDI.actAbrir2Update(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtAlmacen.Text) > 0) +end; + +procedure TfrConfFicherosEDI.actAbrir1Execute(Sender: TObject); +begin + inherited; + OpenFolder(edtEntrada.Text); +end; + +procedure TfrConfFicherosEDI.actAbrir2Execute(Sender: TObject); +begin + inherited; + OpenFolder(edtAlmacen.Text); +end; + +end. diff --git a/2.1.0/Source/Servidor/Configuracion/uConfGeneral.ddp b/2.1.0/Source/Servidor/Configuracion/uConfGeneral.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Configuracion/uConfGeneral.ddp differ diff --git a/2.1.0/Source/Servidor/Configuracion/uConfGeneral.dfm b/2.1.0/Source/Servidor/Configuracion/uConfGeneral.dfm new file mode 100644 index 0000000..7e7f40f --- /dev/null +++ b/2.1.0/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/2.1.0/Source/Servidor/Configuracion/uConfGeneral.pas b/2.1.0/Source/Servidor/Configuracion/uConfGeneral.pas new file mode 100644 index 0000000..b3427cc --- /dev/null +++ b/2.1.0/Source/Servidor/Configuracion/uConfGeneral.pas @@ -0,0 +1,52 @@ +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; + +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 := SERVER_PORT; +end; + +end. diff --git a/2.1.0/Source/Servidor/Configuracion/uConfiguracion.ddp b/2.1.0/Source/Servidor/Configuracion/uConfiguracion.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Configuracion/uConfiguracion.ddp differ diff --git a/2.1.0/Source/Servidor/Configuracion/uConfiguracion.dfm b/2.1.0/Source/Servidor/Configuracion/uConfiguracion.dfm new file mode 100644 index 0000000..0631e58 --- /dev/null +++ b/2.1.0/Source/Servidor/Configuracion/uConfiguracion.dfm @@ -0,0 +1,174 @@ +object fConfiguracion: TfConfiguracion + Left = 303 + Top = 203 + BorderStyle = bsDialog + Caption = 'Configuraci'#243'n' + ClientHeight = 341 + 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 = pagGeneral + 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 pagFicheros: TTabSheet + Caption = 'Ubicaci'#243'n de ficheros' + ImageIndex = -1 + inline frConfFicherosEDI1: TfrConfFicherosEDI + Left = 0 + Top = 0 + Width = 391 + Height = 260 + Align = alClient + TabOrder = 0 + ExplicitWidth = 391 + ExplicitHeight = 260 + 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/2.1.0/Source/Servidor/Configuracion/uConfiguracion.pas b/2.1.0/Source/Servidor/Configuracion/uConfiguracion.pas new file mode 100644 index 0000000..7cdcaba --- /dev/null +++ b/2.1.0/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, uConfFicherosEDI; + +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; + pagFicheros: TTabSheet; + frConfFicherosEDI1: TfrConfFicherosEDI; + 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 asignación 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 := frConfFicherosEDI1; + end; + + if Assigned(FPaginaActual) then + FPaginaActual.Init; + + Self.Update; +end; + +end. diff --git a/2.1.0/Source/Servidor/Configuracion/uFrameConfiguracion.dfm b/2.1.0/Source/Servidor/Configuracion/uFrameConfiguracion.dfm new file mode 100644 index 0000000..71b4e24 --- /dev/null +++ b/2.1.0/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/2.1.0/Source/Servidor/Configuracion/uFrameConfiguracion.pas b/2.1.0/Source/Servidor/Configuracion/uFrameConfiguracion.pas new file mode 100644 index 0000000..c03ed29 --- /dev/null +++ b/2.1.0/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/2.1.0/Source/Servidor/EDI/EDI_INVRPT.pas b/2.1.0/Source/Servidor/EDI/EDI_INVRPT.pas new file mode 100644 index 0000000..5a92ec3 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI/EDI_INVRPT.pas @@ -0,0 +1,195 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit EDI_INVRPT; + +interface + +uses + Classes, EDI_Reader; + +const + LONG_LINEA_CAB = 101; + LONG_LINEA_LIN = 319; + LONG_LINEA_CANT = 100; + +type + TEDIFILE_CABINV = record + REGISTRO_OK : boolean; + NUMDOC : array[1..25] of char; + TIPODOC : array[1..3] of char; + TIPOLIQ : array[1..3] of char; + FECHA : array[1..8] of char; + FECHALIQ: array[1..8] of char; + EMISOR : array[1..17] of char; + RECEPTOR: array[1..17] of char; + DPTO : array[1..3] of char; + CENTRO : array[1..17] of char; + end; + + TEDIFILE_LININV = record + REGISTRO_OK : boolean; + NUMDOC : array[1..25] of char; + NUMLIN : array[1..6] of char; + CODART : array[1..17] of char; + FAMILIA : array[1..17] of char; + BARRA : array[1..17] of char; + TALLA : array[1..17] of char; + MARCA : array[1..25] of char; + TAMANO : array[1..25] of char; + SERIE : array[1..25] of char; + COLOR : array[1..25] of char; + MODELO : array[1..25] of char; + DIBUJO : array[1..25] of char; + DESCRIP : array[1..70] of char; + end; + + TEDITFILE_CANTINV = record + REGISTRO_OK : boolean; + NUMDOC : array[1..25] of char; + NUMLIN : array[1..6] of char; + NUMCANT : array[1..6] of char; + TIPOCANT: array[1..3] of char; + CANTIDAD: array[1..15] of char; + CENTRO : array[1..17] of char; + TMOV : array[1..3] of char; + FACT : array[1..12] of char; + DEPTO : array[1..3] of char; + IDVEN : array[1..10] of char; + end; + + PCABINV = ^TEDIFILE_CABINV; + PLININV = ^TEDIFILE_LININV; + PCANTINV= ^TEDITFILE_CANTINV; + + TCABINV_Reader = class(TEDIFile_Reader) + protected + function ProcessLine (const ALine : String) : Boolean; override; + end; + + + TLININV_Reader = class(TEDIFile_Reader) + protected + function ProcessLine (const ALine : String) : Boolean; override; + end; + + + TCANTINV_Reader = class(TEDIFile_Reader) + protected + function ProcessLine (const ALine : String) : Boolean; override; + end; + + +implementation + +uses + SysUtils, Dialogs, uDataModuleEDI_Inventary; + +{ TLININV_Reader } + +function TLININV_Reader.ProcessLine(const ALine: String): Boolean; +var + Registro : TEDIFILE_LININV; + pRegistro : PLININV; + LongLinea : Integer; + AuxLine : String; +begin + Result := False; + LongLinea := Length(ALine); + + { Por si la línea fuera más larga o más corta de lo normal, la hago de + de la longitud que debería tener } + AuxLine := Format('%-' + IntTostr(LONG_LINEA_LIN) + '.' + IntTostr(LONG_LINEA_LIN) + 's', [ALine]); + + // Inicializo los campos del registro. + FillChar(Registro, SizeOf(TEDIFILE_LININV), 0); + + { Para rellenar el campo REGISTRO_OK del registro mediante el 'move', + añado al principio de AuxLine el byte #0 (valor para 'False'). } + AuxLine := Concat(#0, AuxLine); + Move(AuxLine[1], Registro, LONG_LINEA_LIN+1); // +1 por el byte del concat + + // El registro es correcto si tiene la longitud adecuada. + Registro.REGISTRO_OK := (LongLinea = LONG_LINEA_LIN); + + // Añado el registro a la lista de registros. + New(pRegistro); + Move(Registro, pRegistro^, SizeOf(TEDIFILE_LININV)); + FileData.Add(pRegistro); + Result := True; +end; + +{ TCABINV_Reader } + +function TCABINV_Reader.ProcessLine(const ALine: String): Boolean; +var + Registro : TEDIFILE_CABINV; + pRegistro : PCABINV; + LongLinea : Integer; + AuxLine : String; +begin + Result := False; + LongLinea := Length(ALine); + + { Por si la línea fuera más larga o más corta de lo normal, la hago de + de la longitud que debería tener } + AuxLine := Format('%-' + IntTostr(LONG_LINEA_CAB) + '.' + IntTostr(LONG_LINEA_CAB) + 's', [ALine]); + + // Inicializo los campos del registro. + FillChar(Registro, SizeOf(TEDIFILE_CABINV), 0); + + { Para rellenar el campo REGISTRO_OK del registro mediante el 'move', + añado al principio de AuxLine el byte #0 (valor para 'False'). } + AuxLine := Concat(#0, AuxLine); + Move(AuxLine[1], Registro, LONG_LINEA_CAB+1); // +1 por el byte del concat + + // El registro es correcto si tiene la longitud adecuada. + Registro.REGISTRO_OK := (LongLinea = LONG_LINEA_CAB); + + // Añado el registro a la lista de registros. + New(pRegistro); + Move(Registro, pRegistro^, SizeOf(TEDIFILE_CABINV)); + FileData.Add(pRegistro); + Result := True; +end; + +{ TCANTINV_Reader } + +function TCANTINV_Reader.ProcessLine(const ALine: String): Boolean; +var + Registro : TEDITFILE_CANTINV; + pRegistro : PCANTINV; + LongLinea : Integer; + AuxLine : String; +begin + Result := False; + LongLinea := Length(ALine); + + { Por si la línea fuera más larga o más corta de lo normal, la hago de + de la longitud que debería tener } + AuxLine := Format('%-' + IntTostr(LONG_LINEA_CANT) + '.' + IntTostr(LONG_LINEA_CANT) + 's', [ALine]); + + // Inicializo los campos del registro. + FillChar(Registro, SizeOf(TEDITFILE_CANTINV), 0); + + { Para rellenar el campo REGISTRO_OK del registro mediante el 'move', + añado al principio de AuxLine el byte #0 (valor para 'False'). } + AuxLine := Concat(#0, AuxLine); + Move(AuxLine[1], Registro, LONG_LINEA_CANT+1); // +1 por el byte del concat + + // El registro es correcto si tiene la longitud adecuada. + Registro.REGISTRO_OK := (LongLinea = LONG_LINEA_CANT); + + // Añado el registro a la lista de registros. + New(pRegistro); + Move(Registro, pRegistro^, SizeOf(TEDITFILE_CANTINV)); + FileData.Add(pRegistro); + Result := True; +end; + +end. diff --git a/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.ddp b/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.ddp differ diff --git a/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.dfm b/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.dfm new file mode 100644 index 0000000..c38a85e --- /dev/null +++ b/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.dfm @@ -0,0 +1,169 @@ +object EDI_Log: TEDI_Log + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schEDILog + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object schEDILog: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LOG_CARGA' + SQL = + 'SELECT '#10' ID, REPORT, FECHA, OK, ERROR_MSG'#10' FROM'#10' RDX_LOG_' + + 'CARGA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'OK' + TableField = 'OK' + end + item + DatasetField = 'ERROR_MSG' + TableField = 'ERROR_MSG' + end + item + DatasetField = 'REPORT' + TableField = 'REPORT' + end> + end> + Name = 'EDILog' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REPORT' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OK' + DataType = datBoolean + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ERROR_MSG' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + Commands = < + item + Params = < + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REPORT' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OK' + DataType = datBoolean + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ERROR_MSG' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LOG_CARGA' + SQL = + 'INSERT'#10' INTO RDX_LOG_CARGA'#10' (FECHA, REPORT, OK, ERROR_MSG)'#10' ' + + ' VALUES'#10' (:FECHA, :REPORT, :OK, :ERROR_MSG)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_EDILog' + end> + RelationShips = <> + UpdateRules = <> + Left = 48 + Top = 16 + end + object DABINAdapter: TDABINAdapter + Left = 48 + Top = 80 + end +end diff --git a/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.pas b/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.pas new file mode 100644 index 0000000..770c308 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI/EDI_Log_Impl.pas @@ -0,0 +1,73 @@ +unit EDI_Log_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDADataTable, uDABINAdapter, + uDADataStreamer; + +type + { TEDI_Log } + TEDI_Log = class(TDARemoteService, IEDI_Log) + schEDILog: TDASchema; + DABINAdapter: TDABINAdapter; + private + protected + { IEDI_Log methods } + procedure InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, + uDAInterfaces, uDataModuleServer; + +procedure Create_EDI_Log(out anInstance : IUnknown); +begin + anInstance := TEDI_Log.Create(NIL); +end; + +{ EDI_Log } +procedure TEDI_Log.InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); +var + cmd : IDASQLCommand; + conn : IDAConnection; +begin + conn := dmServer.ConnectionManager.NewConnection(ConnectionName); + conn.BeginTransaction; + + cmd := schEDILog.NewCommand(conn, 'Insert_EDILog'); + try + cmd.ParamByName('FECHA').AsDateTime := Fecha; + cmd.ParamByName('REPORT').AsString := Report; + if OK then + cmd.ParamByName('OK').AsInteger := 1 + else + cmd.ParamByName('OK').AsInteger := 0; + cmd.ParamByName('ERROR_MSG').AsString := Error_msg; + cmd.Execute; + finally + conn.CommitTransaction; + conn := nil; + end; +end; + +initialization + TROClassFactory.Create('EDI_Log', Create_EDI_Log, TEDI_Log_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/EDI/EDI_Reader.pas b/2.1.0/Source/Servidor/EDI/EDI_Reader.pas new file mode 100644 index 0000000..36e6872 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI/EDI_Reader.pas @@ -0,0 +1,109 @@ +{ +=============================================================================== + Copyright (©) 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: 18-04-2006 + Versión actual: 1.0.0 + Fecha versión actual: 18-04-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} +unit EDI_Reader; + +interface + +uses + Classes; + +type + TEDIFileData = class(TList) + end; + + TEDIFile_Reader = class + private + FFilename: String; + FFileData : TEDIFileData; + protected + function ProcessLine (const ALine : String) : Boolean; virtual; abstract; + public + constructor Create; virtual; + destructor Destroy; override; + procedure ReadFile; + published + property Filename : String read FFilename write FFilename; + property FileData : TEDIFileData read FFileData; + end; + + +implementation + +uses + SysUtils, Dialogs, uDataModuleEDI_Sales; + +{ TEDIFile_Reader } + +constructor TEDIFile_Reader.Create; +begin + FFilename := ''; + FFileData := TEDIFileData.Create; +end; + +destructor TEDIFile_Reader.Destroy; +var + i : integer; +begin + try + with FFileData do + for I := Count - 1 downto 0 do + Dispose(Items[I]); + finally + FFileData.Free; + end; + inherited; +end; + +procedure TEDIFile_Reader.ReadFile; +var + i : integer; + AFichero : TStringList; +begin + if (Length(FFilename) = 0) then + raise Exception.Create('Falta indicar el nombre de todos los ficheros'); + + AFichero := TStringList.Create; + try + try + AFichero.LoadFromFile(FFilename); + for i := 0 to AFichero.Count - 1 do + begin + if not ProcessLine (AFichero.Strings[i]) then + begin + //ShowMessage('Error al procesar la línea ' +#13+#10 + AFichero.Strings[i]); + Break; + end; + end; + except + on E : Exception do + begin + //ShowMessage(E.Message); + raise; + end; + end; + finally + FreeAndNIL(AFichero); + end; +end; + +end. diff --git a/2.1.0/Source/Servidor/EDI/EDI_SLSRPT.pas b/2.1.0/Source/Servidor/EDI/EDI_SLSRPT.pas new file mode 100644 index 0000000..6be4a34 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI/EDI_SLSRPT.pas @@ -0,0 +1,284 @@ +{ +=============================================================================== + Copyright (©) 2006. Rodax Software. +=============================================================================== + Los contenidos de este fichero son propiedad de Rodax Software titular del + copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado, + en su totalidad o en parte, con el permiso escrito de Rodax Software, o de + acuerdo con los términos y condiciones establecidas en el acuerdo/contrato + bajo el que se suministra. + ----------------------------------------------------------------------------- + Web: www.rodax-software.com +=============================================================================== + Fecha primera versión: 18-04-2006 + Versión actual: 1.0.0 + Fecha versión actual: 18-04-2006 +=============================================================================== + Modificaciones: + + Fecha Comentarios + --------------------------------------------------------------------------- +=============================================================================== +} + +unit EDI_SLSRPT; + +interface + +uses + Classes, EDI_Reader; + +const + LONG_LINEA_CAB = 859; + LONG_LINEA_LUG = 142; + LONG_LINEA_ART = 778; + +type + TEDIFILE_CABVEN = record + REGISTRO_OK : boolean; + CLAVE1 : array[1..10] of char; + NUMINF : array[1..35] of char; + FUNCION : array[1..3] of char; + FECINI : array[1..12] of char; + FECFIN : array[1..12] of char; + FECINF : array[1..12] of char; + PERVEN : array[1..16] of char; + + EANOFI : array[1..17] of char; + EANEMI : array[1..17] of char; + EANREC : array[1..17] of char; + EANVEN : array[1..17] of char; + EANALM : array[1..17] of char; + EANREP : array[1..17] of char; + EANPRO : array[1..17] of char; + + EANADMSA: array[1..17] of char; + EANREPSR: array[1..17] of char; + + ADMVENSA: array[1..35] of char; + REPDEPSR: array[1..35] of char; + EMAILSA : array[1..35] of char; + NUMFAXSA: array[1..35] of char; + NUMTELSA: array[1..35] of char; + NUMTLXSA: array[1..35] of char; + X400SA : array[1..35] of char; + + EMAILSR : array[1..35] of char; + NUMFAXSR: array[1..35] of char; + NUMTELSR: array[1..35] of char; + NUMTLXSR: array[1..35] of char; + X400SR : array[1..35] of char; + + NUMPRE : array[1..35] of char; + NUMINFSC: array[1..35] of char; + NUMCON : array[1..35] of char; + + FECPRE : array[1..12] of char; + FECINFSC: array[1..12] of char; + FECCON : array[1..12] of char; + + DIVPED : array[1..3] of char; + DIVPRE : array[1..3] of char; + DIVPAG : array[1..3] of char; + DIVPEDF : array[1..3] of char; + DIVPREF : array[1..3] of char; + DIVPAGF : array[1..3] of char; + + TASCAM : array[1..15] of char; + FECTAS : array[1..12] of char; + end; + + TEDIFILE_LUGVEN = record + REGISTRO_OK : boolean; + CLAVE1 : array[1..10] of char; + CLAVE2 : array[1..5] of char; + EANLUG : array[1..17] of char; + LUGVEN : array[1..70] of char; + FECINI : array[1..12] of char; + FECFIN : array[1..12] of char; + PERVEN : array[1..16] of char; + end; + + TEDIFILE_ARTVEN = record + REGISTRO_OK : boolean; + CLAVE1 : array[1..10] of char; + CLAVE2 : array[1..5] of char; + CLAVE3 : array[1..5] of char; + EANART : array[1..17] of char; + CODCOM : array[1..35] of char; + NUMVAR : array[1..35] of char; + CODPRO : array[1..35] of char; + DESARTCO: array[1..35] of char; + DESART : array[1..70] of char; + NUMCON : array[1..35] of char; + NUMLIS : array[1..35] of char; + CONESP1 : array[1..3] of char; + CONESP2 : array[1..3] of char; + CONESP3 : array[1..3] of char; + VALVEN : array[1..15] of char; + PRENETCT: array[1..15] of char; + PREBRUCT: array[1..15] of char; + PREINFET: array[1..15] of char; + PREINFFT: array[1..15] of char; + PRECALCT: array[1..15] of char; + PRENETCA: array[1..15] of char; + PREBRUCA: array[1..15] of char; + PREINFEA: array[1..15] of char; + PREINFFA: array[1..15] of char; + PRECALCA: array[1..15] of char; + BAPRUN1 : array[1..9] of char; + UNIMED1 : array[1..3] of char; + BAPRUN2 : array[1..9] of char; + UNIMED2 : array[1..3] of char; + BAPRUN3 : array[1..9] of char; + UNIMED3 : array[1..3] of char; + BAPRUN4 : array[1..9] of char; + UNIMED4 : array[1..3] of char; + BAPRUN5 : array[1..9] of char; + UNIMED5 : array[1..3] of char; + CANVEN : array[1..15] of char; + EXIPRO : array[1..15] of char; + DESEXI : array[1..15] of char; + ESPMEDCV: array[1..3] of char; + ESPMEDEP: array[1..3] of char; + ESPMEDDE: array[1..3] of char; + CANDEV : array[1..15] of char; + EANVEN : array[1..17] of char; + NOMVEN : array[1..70] of char; + NUMTALON: array[1..35] of char; + CANVENNET : array[1..15] of char; + UMEDVENNET: array[1..3] of char; + CANESP : array[1..15] of char; + UMEDESP : array[1..3] of char; + end; + + PCABVEN = ^TEDIFILE_CABVEN; + PLUGVEN = ^TEDIFILE_LUGVEN; + PARTVEN = ^TEDIFILE_ARTVEN; + + TCABVEN_Reader = class(TEDIFile_Reader) + protected + function ProcessLine (const ALine : String) : Boolean; override; + end; + + + TLUGVEN_Reader = class(TEDIFile_Reader) + protected + function ProcessLine (const ALine : String) : Boolean; override; + end; + + + TARTVEN_Reader = class(TEDIFile_Reader) + protected + function ProcessLine (const ALine : String) : Boolean; override; + end; + + +implementation + +uses + SysUtils, Dialogs, uDataModuleEDI_Sales; + +{ TCABVEN_Reader } + +function TCABVEN_Reader.ProcessLine(const ALine: String): Boolean; +var + Registro : TEDIFILE_CABVEN; + pRegistro : PCABVEN; + LongLinea : Integer; + AuxLine : String; +begin + Result := False; + LongLinea := Length(ALine); + + { Por si la línea fuera más larga o más corta de lo normal, la hago de + de la longitud que debería tener } + AuxLine := Format('%-' + IntTostr(LONG_LINEA_CAB) + '.' + IntTostr(LONG_LINEA_CAB) + 's', [ALine]); + + // Inicializo los campos del registro. + FillChar(Registro, SizeOf(TEDIFILE_CABVEN), 0); + + { Para rellenar el campo REGISTRO_OK del registro mediante el 'move', + añado al principio de AuxLine el byte #0 (valor para 'False'). } + AuxLine := Concat(#0, AuxLine); + Move(AuxLine[1], Registro, LONG_LINEA_CAB+1); // +1 por el byte del concat + + // El registro es correcto si tiene la longitud adecuada. + Registro.REGISTRO_OK := (LongLinea = LONG_LINEA_CAB); + + // Añado el registro a la lista de registros. + New(pRegistro); + Move(Registro, pRegistro^, SizeOf(TEDIFILE_CABVEN)); + FileData.Add(pRegistro); + Result := True; +end; + +{ TLUGVEN_Reader } + +function TLUGVEN_Reader.ProcessLine(const ALine: String): Boolean; +var + Registro : TEDIFILE_LUGVEN; + pRegistro : PLUGVEN; + LongLinea : Integer; + AuxLine : String; +begin + Result := False; + LongLinea := Length(ALine); + + { Por si la línea fuera más larga o más corta de lo normal, la hago de + de la longitud que debería tener } + AuxLine := Format('%-' + IntTostr(LONG_LINEA_LUG) + '.' + IntTostr(LONG_LINEA_LUG) + 's', [ALine]); + + // Inicializo los campos del registro. + FillChar(Registro, SizeOf(TEDIFILE_LUGVEN), 0); + + { Para rellenar el campo REGISTRO_OK del registro mediante el 'move', + añado al principio de AuxLine el byte #0 (valor para 'False'). } + AuxLine := Concat(#0, AuxLine); + Move(AuxLine[1], Registro, LONG_LINEA_LUG+1); // +1 por el byte del concat + + // El registro es correcto si tiene la longitud adecuada. + Registro.REGISTRO_OK := (LongLinea = LONG_LINEA_LUG); + + // Añado el registro a la lista de registros. + New(pRegistro); + Move(Registro, pRegistro^, SizeOf(TEDIFILE_LUGVEN)); + FileData.Add(pRegistro); + Result := True; +end; + +{ TARTVEN_Reader } + +function TARTVEN_Reader.ProcessLine(const ALine: String): Boolean; +var + Registro : TEDIFILE_ARTVEN; + pRegistro : PARTVEN; + LongLinea : Integer; + AuxLine : String; +begin + Result := False; + LongLinea := Length(ALine); + + { Por si la línea fuera más larga o más corta de lo normal, la hago de + de la longitud que debería tener } + AuxLine := Format('%-' + IntTostr(LONG_LINEA_ART) + '.' + IntTostr(LONG_LINEA_ART) + 's', [ALine]); + + // Inicializo los campos del registro. + FillChar(Registro, SizeOf(TEDIFILE_ARTVEN), 0); + + { Para rellenar el campo REGISTRO_OK del registro mediante el 'move', + añado al principio de AuxLine el byte #0 (valor para 'False'). } + AuxLine := Concat(#0, AuxLine); + Move(AuxLine[1], Registro, LONG_LINEA_ART+1); // +1 por el byte del concat + + // El registro es correcto si tiene la longitud adecuada. + Registro.REGISTRO_OK := (LongLinea = LONG_LINEA_ART); + + // Añado el registro a la lista de registros. + New(pRegistro); + Move(Registro, pRegistro^, SizeOf(TEDIFILE_ARTVEN)); + FileData.Add(pRegistro); + Result := True; +end; + +end. diff --git a/2.1.0/Source/Servidor/EDI_Inventary_Impl.dfm b/2.1.0/Source/Servidor/EDI_Inventary_Impl.dfm new file mode 100644 index 0000000..5c006e8 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Inventary_Impl.dfm @@ -0,0 +1,9 @@ +object EDI_Inventary: TEDI_Inventary + OldCreateOrder = True + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 +end diff --git a/2.1.0/Source/Servidor/EDI_Inventary_Impl.pas b/2.1.0/Source/Servidor/EDI_Inventary_Impl.pas new file mode 100644 index 0000000..ddfe738 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Inventary_Impl.pas @@ -0,0 +1,138 @@ +unit EDI_Inventary_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. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract3_Intf, + {Generated:} VARELA_Intf; + +type + { TEDI_Inventary } + TEDI_Inventary = class(TDARemoteService, IEDI_Inventary) + private + procedure InsertarLog(OK : Boolean; Error_msg : String = ''); + protected + { IEDI_Inventary methods } + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; const FicheroCANT: String; out MsgError: String): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, + JclFileUtils, DateUtils, EDI_Log_Impl, uDataModuleEDI_Inventary; + +procedure Create_EDI_Inventary(out anInstance : IUnknown); +begin + anInstance := TEDI_Inventary.Create(nil); +end; + +{ EDI_Inventary } +function TEDI_Inventary.CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; const FicheroCANT: String; out MsgError: String): Boolean; +var + ADirEntrada : String; + ADirTemp : String; + NumRegNuevos : Integer; + + procedure GuardarFicheros; + var + AAlmacen : String; + ADate : String; + begin + DateTimeToString(ADate, 'yyyymmddhhnn', Now); + AAlmacen := PathAddSeparator(dmServer.FDirAlmacen); + AAlmacen := PathAddSeparator(AAlmacen + ADate); + if not DirectoryExists(AAlmacen) then + ForceDirectories(AAlmacen); + FileMove(ADirTemp + FicheroCAB, AAlmacen + FicheroCAB); + FileMove(ADirTemp + FicheroLIN, AAlmacen + FicheroLIN); + FileMove(ADirTemp + FicheroCANT, AAlmacen + FicheroCANT); + DeleteDirectory(ADirTemp, False); + end; + +begin + Result := False; + + // Hay que comprobar que existen los ficheros. + ADirEntrada := PathAddSeparator(dmServer.FDirEntrada); + + if not FileExists(ADirEntrada + FicheroCAB) or + not FileExists(ADirEntrada + FicheroLIN) or + not FileExists(ADirEntrada + FicheroCANT) then + begin + MsgError := 'No hay ficheros de datos'; + InsertarLog(False, MsgError + ' (CargarFicheroEDI1 INV)'); + end + else begin + + // Muevo los ficheros de carga a un directorio temporal + ADirTemp := PathAddSeparator(ADirEntrada + GetTempDirectory(ADirEntrada)); + try + if not DirectoryExists(ADirTemp) then + ForceDirectories(ADirTemp); + FileMove(ADirEntrada + FicheroCAB, ADirTemp + FicheroCAB); + FileMove(ADirEntrada + FicheroLIN, ADirTemp + FicheroLIN); + FileMove(ADirEntrada + FicheroCANT, ADirTemp + FicheroCANT); + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI2 INV)'); + Exit; + end; + end; + + try + try + dmEDIInventary.CargarFicheros (ADirTemp + FicheroCAB, ADirTemp + FicheroLIN, ADirTemp + FicheroCANT, NumRegNuevos); + if NumRegNuevos > 0 then + InsertarLog(True, Format('Se han cargado %d registros de inventario nuevos', [NumRegNuevos])) + else + InsertarLog(True, 'El fichero se ha cargado pero no hay registros de inventario nuevos'); + Result := True; + finally + GuardarFicheros; + dmServer.BorrarFicherosDeCargaAntiguos; + end; + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI3 INV)'); + end; + end; + end; +end; + +procedure TEDI_Inventary.InsertarLog(OK: Boolean; Error_msg: String); +var + LogService : IEDI_Log; +begin + LogService := EDI_Log_Impl.TEDI_Log.Create(Self); + try + LogService.InsertarLog(Now, 'INVRPT', OK, Error_msg); + finally + LogService := nil; + end; +end; + +initialization + TROClassFactory.Create('EDI_Inventary', Create_EDI_Inventary, TEDI_Inventary_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/EDI_Log_Impl.dfm b/2.1.0/Source/Servidor/EDI_Log_Impl.dfm new file mode 100644 index 0000000..cc39195 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Log_Impl.dfm @@ -0,0 +1,179 @@ +object EDI_Log: TEDI_Log + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schEDILog + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object schEDILog: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LOG_CARGA' + SQL = + 'SELECT '#10' ID, REPORT, FECHA, OK, ERROR_MSG'#10' FROM'#10' RDX_LOG_' + + 'CARGA' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'OK' + TableField = 'OK' + end + item + DatasetField = 'ERROR_MSG' + TableField = 'ERROR_MSG' + end + item + DatasetField = 'REPORT' + TableField = 'REPORT' + end> + end> + Name = 'EDILog' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REPORT' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'OK' + DataType = datBoolean + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ERROR_MSG' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REPORT' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OK' + DataType = datBoolean + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ERROR_MSG' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LOG_CARGA' + SQL = + 'INSERT'#10' INTO RDX_LOG_CARGA'#10' (FECHA, REPORT, OK, ERROR_MSG)'#10' ' + + ' VALUES'#10' (:FECHA, :REPORT, :OK, :ERROR_MSG)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_EDILog' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 48 + Top = 16 + end + object DABINAdapter: TDABINAdapter + BufferSize = 262144 + IsCompatibleV4 = True + Left = 48 + Top = 80 + end +end diff --git a/2.1.0/Source/Servidor/EDI_Log_Impl.pas b/2.1.0/Source/Servidor/EDI_Log_Impl.pas new file mode 100644 index 0000000..1b06759 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Log_Impl.pas @@ -0,0 +1,75 @@ +unit EDI_Log_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. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDADataStreamer, uDABinAdapter, uDAClasses, uDAInterfaces; + +type + { TEDI_Log } + TEDI_Log = class(TDARemoteService, IEDI_Log) + DABINAdapter: TDABINAdapter; + schEDILog: TDASchema; + private + protected + { IEDI_Log methods } + procedure InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, + uDataModuleServer, Dialogs; + +procedure Create_EDI_Log(out anInstance : IUnknown); +begin + anInstance := TEDI_Log.Create(NIL); +end; + +{ EDI_Log } +procedure TEDI_Log.InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); +var + cmd : IDASQLCommand; + conn : IDAConnection; +begin + conn := dmServer.ConnectionManager.NewConnection(ConnectionName); + conn.BeginTransaction; + + cmd := schEDILog.NewCommand(conn, 'Insert_EDILog'); + try + cmd.ParamByName('FECHA').AsDateTime := Fecha; + cmd.ParamByName('REPORT').AsString := Report; + if OK then + cmd.ParamByName('OK').AsInteger := 1 + else + cmd.ParamByName('OK').AsInteger := 0; + cmd.ParamByName('ERROR_MSG').AsString := Error_msg; + cmd.Execute; + finally + conn.CommitTransaction; + conn := nil; + end; +end; + +initialization + TROClassFactory.Create('EDI_Log', Create_EDI_Log, TEDI_Log_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/EDI_Sales_Impl.dfm b/2.1.0/Source/Servidor/EDI_Sales_Impl.dfm new file mode 100644 index 0000000..0593b8a --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Sales_Impl.dfm @@ -0,0 +1,9 @@ +object EDI_Sales: TEDI_Sales + OldCreateOrder = True + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 300 + Width = 300 +end diff --git a/2.1.0/Source/Servidor/EDI_Sales_Impl.pas b/2.1.0/Source/Servidor/EDI_Sales_Impl.pas new file mode 100644 index 0000000..3ebcc7e --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Sales_Impl.pas @@ -0,0 +1,141 @@ +unit EDI_Sales_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. } +{----------------------------------------------------------------------------} + +{$I Remobjects.inc} + +interface + +uses + {vcl:} Classes, SysUtils, + {RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, + {Ancestor Implementation:} DARemoteService_Impl, + {Used RODLs:} DataAbstract3_Intf, + {Generated:} VARELA_Intf; + +type + { TEDI_Sales } + TEDI_Sales = class(TDARemoteService, IEDI_Sales) + private + procedure InsertarLog(OK : Boolean; Error_msg : String = ''); + protected + { IEDI_Sales methods } + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, uDataModuleEDI_Sales, + EDI_Log_Impl, JclFileUtils, DateUtils; + +procedure Create_EDI_Sales(out anInstance : IUnknown); +begin + anInstance := TEDI_Sales.Create(nil); +end; + +{ EDI_Sales } +function TEDI_Sales.CargarFicheroEDI(const FicheroCAB: String; const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; +var + ADirEntrada : String; + ADirTemp : String; + NumRegNuevos : Integer; + + procedure GuardarFicheros; + var + AAlmacen : String; + ADate : String; + begin + DateTimeToString(ADate, 'yyyymmddhhnn', Now); + AAlmacen := PathAddSeparator(dmServer.FDirAlmacen); + AAlmacen := PathAddSeparator(AAlmacen + ADate); + if not DirectoryExists(AAlmacen) then + ForceDirectories(AAlmacen); + FileMove(ADirTemp + FicheroCAB, AAlmacen + FicheroCAB); + FileMove(ADirTemp + FicheroLUG, AAlmacen + FicheroLUG); + FileMove(ADirTemp + FicheroART, AAlmacen + FicheroART); + FileMove(ADirTemp + FicheroART, AAlmacen + 'CONVEN.TXT'); + DeleteDirectory(ADirTemp, False); + end; + +begin + Result := False; + NumRegNuevos := 0; + + // Hay que comprobar que existen los ficheros. + ADirEntrada := PathAddSeparator(dmServer.FDirEntrada); + + if not FileExists(ADirEntrada + FicheroCAB) or + not FileExists(ADirEntrada + FicheroLUG) or + not FileExists(ADirEntrada + FicheroART) then + begin + MsgError := 'No hay ficheros de datos'; + InsertarLog(False, MsgError + ' (CargarFicheroEDI1 SLS)'); + end + else begin + + // Muevo los ficheros de carga a un directorio temporal + ADirTemp := PathAddSeparator(ADirEntrada + GetTempDirectory(ADirEntrada)); + try + if not DirectoryExists(ADirTemp) then + ForceDirectories(ADirTemp); + FileMove(ADirEntrada + FicheroCAB, ADirTemp + FicheroCAB); + FileMove(ADirEntrada + FicheroLUG, ADirTemp + FicheroLUG); + FileMove(ADirEntrada + FicheroART, ADirTemp + FicheroART); + FileMove(ADirEntrada + FicheroART, ADirTemp + 'CONVEN.TXT'); + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI2 SLS)'); + Exit; + end; + end; + + try + try + dmEDISales.CargarFicheros (ADirTemp + FicheroCAB, ADirTemp + FicheroLUG, ADirTemp + FicheroART, NumRegNuevos); + if NumRegNuevos > 0 then + InsertarLog(True, Format('Se han cargado %d registros de ventas nuevos', [NumRegNuevos])) + else + InsertarLog(True, 'El fichero se ha cargado pero no hay registros de ventas nuevos'); + Result := True; + finally + GuardarFicheros; + dmServer.BorrarFicherosDeCargaAntiguos; + end; + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI3 SLS)'); + end; + end; + end; +end; + +procedure TEDI_Sales.InsertarLog(OK: Boolean; Error_msg: String); +var + LogService : IEDI_Log; +begin + LogService := EDI_Log_Impl.TEDI_Log.Create(Self); + try + LogService.InsertarLog(Now, 'SLSRPT', OK, Error_msg); + finally + LogService := nil; + end; +end; + +initialization + TROClassFactory.Create('EDI_Sales', Create_EDI_Sales, TEDI_Sales_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/EDI_Utils.pas b/2.1.0/Source/Servidor/EDI_Utils.pas new file mode 100644 index 0000000..61e81b4 --- /dev/null +++ b/2.1.0/Source/Servidor/EDI_Utils.pas @@ -0,0 +1,40 @@ +{*******************************************************} +{ } +{ Administración de puntos de venta } +{ } +{ Copyright (C) 2006 Rodax Software S.L. } +{ } +{*******************************************************} + +unit EDI_Utils; + +interface + +uses + Controls; + +function EDIDateToDateF (const ADate : string; const AFormat : string = 'yyyymmdd' ) : TDate; + +implementation + +uses + SysUtils; + +function EDIDateToDateF (const ADate : string; const AFormat : string) : TDate; +var + aux : string; +begin + if Length(ADate) = 0 then + Result := 0 + else begin + try + if AFormat = 'yyyymmdd' then + Result := EncodeDate( StrToInt(copy(ADate, 1, 4)), StrToInt(copy(ADate, 5, 2)), StrToInt(copy(ADate, 7, 2)) ); + except + Result := 0 + end; + end; +end; + +end. + \ No newline at end of file diff --git a/2.1.0/Source/Servidor/RDX_VARELA.daConnections b/2.1.0/Source/Servidor/RDX_VARELA.daConnections new file mode 100644 index 0000000..b8d3686 --- /dev/null +++ b/2.1.0/Source/Servidor/RDX_VARELA.daConnections @@ -0,0 +1 @@ +SDAC?Server=DAVID;Database=GFT_VARELA;Integrated Security=SSPI;TrueGFT_VARELA010pbWaitTrue6001 diff --git a/2.1.0/Source/Servidor/RDX_VARELA.daDictionary b/2.1.0/Source/Servidor/RDX_VARELA.daDictionary new file mode 100644 index 0000000..e6a48a9 --- /dev/null +++ b/2.1.0/Source/Servidor/RDX_VARELA.daDictionary @@ -0,0 +1 @@ +0 diff --git a/2.1.0/Source/Servidor/RDX_VARELA.daSchema b/2.1.0/Source/Servidor/RDX_VARELA.daSchema new file mode 100644 index 0000000..0afb08f --- /dev/null +++ b/2.1.0/Source/Servidor/RDX_VARELA.daSchema @@ -0,0 +1,35 @@ +TrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatFloatCLAVE10TrueTrueFalseFalseCLAVE1FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatCLAVE20TrueTrueFalseFalseCLAVE2FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatCLAVE30TrueTrueFalseFalseCLAVE3FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringEANART0FalseTrueFalseFalseEANARTFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringCODCOM0FalseTrueFalseFalseCODCOMFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMVAR0FalseTrueFalseFalseNUMVARFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringCODPRO0FalseTrueFalseFalseCODPROFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringDESARTCO0FalseTrueFalseFalseDESARTCOFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringDESART0FalseTrueFalseFalseDESARTFalseFalseFalse70TruetaLeftJustifydabtUnknownFalsedatStringNUMCON0FalseTrueFalseFalseNUMCONFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMLIS0FalseTrueFalseFalseNUMLISFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringCONESP10FalseTrueFalseFalseCONESP1FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringCONESP20FalseTrueFalseFalseCONESP2FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringCONESP30FalseTrueFalseFalseCONESP3FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatVALVEN0FalseTrueFalseFalseVALVENFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPRENETCT0FalseTrueFalseFalsePRENETCTFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPREBRUCT0FalseTrueFalseFalsePREBRUCTFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPREINFET0FalseTrueFalseFalsePREINFETFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPREINFFT0FalseTrueFalseFalsePREINFFTFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPRECALCT0FalseTrueFalseFalsePRECALCTFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPRENETCA0FalseTrueFalseFalsePRENETCAFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPREBRUCA0FalseTrueFalseFalsePREBRUCAFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPREINFEA0FalseTrueFalseFalsePREINFEAFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPREINFFA0FalseTrueFalseFalsePREINFFAFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatPRECALCA0FalseTrueFalseFalsePRECALCAFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatBAPRUN10FalseTrueFalseFalseBAPRUN1FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUNIMED10FalseTrueFalseFalseUNIMED1FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatBAPRUN20FalseTrueFalseFalseBAPRUN2FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUNIMED20FalseTrueFalseFalseUNIMED2FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatBAPRUN30FalseTrueFalseFalseBAPRUN3FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUNIMED30FalseTrueFalseFalseUNIMED3FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatBAPRUN40FalseTrueFalseFalseBAPRUN4FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUNIMED40FalseTrueFalseFalseUNIMED4FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatBAPRUN50FalseTrueFalseFalseBAPRUN5FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUNIMED50FalseTrueFalseFalseUNIMED5FalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatCANVEN0FalseTrueFalseFalseCANVENFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatEXIPRO0FalseTrueFalseFalseEXIPROFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatDESEXI0FalseTrueFalseFalseDESEXIFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringESPMEDCV0FalseTrueFalseFalseESPMEDCVFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringESPMEDEP0FalseTrueFalseFalseESPMEDEPFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringESPMEDDE0FalseTrueFalseFalseESPMEDDEFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatCANDEV0FalseTrueFalseFalseCANDEVFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringEANVEN0FalseTrueFalseFalseEANVENFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringNOMVEN0FalseTrueFalseFalseNOMVENFalseFalseFalse70TruetaLeftJustifydabtUnknownFalsedatStringNUMTALON0FalseTrueFalseFalseNUMTALONFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatFloatCANVENNET0FalseTrueFalseFalseCANVENNETFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUMEDVENNET0FalseTrueFalseFalseUMEDVENNETFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatCANESP0FalseTrueFalseFalseCANESPFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringUMEDESP0FalseTrueFalseFalseUMEDESPFalseFalseFalse3TrueRDX_ARTVENCLAVE1CLAVE1CLAVE1CLAVE2CLAVE2CLAVE2CLAVE3CLAVE3CLAVE3EANARTEANARTEANARTCODCOMCODCOMCODCOMNUMVARNUMVARNUMVARCODPROCODPROCODPRODESARTCODESARTCODESARTCODESARTDESARTDESARTNUMCONNUMCONNUMCONNUMLISNUMLISNUMLISCONESP1CONESP1CONESP1CONESP2CONESP2CONESP2CONESP3CONESP3CONESP3VALVENVALVENVALVENPRENETCTPRENETCTPRENETCTPREBRUCTPREBRUCTPREBRUCTPREINFETPREINFETPREINFETPREINFFTPREINFFTPREINFFTPRECALCTPRECALCTPRECALCTPRENETCAPRENETCAPRENETCAPREBRUCAPREBRUCAPREBRUCAPREINFEAPREINFEAPREINFEAPREINFFAPREINFFAPREINFFAPRECALCAPRECALCAPRECALCABAPRUN1BAPRUN1BAPRUN1UNIMED1UNIMED1UNIMED1BAPRUN2BAPRUN2BAPRUN2UNIMED2UNIMED2UNIMED2BAPRUN3BAPRUN3BAPRUN3UNIMED3UNIMED3UNIMED3BAPRUN4BAPRUN4BAPRUN4UNIMED4UNIMED4UNIMED4BAPRUN5BAPRUN5BAPRUN5UNIMED5UNIMED5UNIMED5CANVENCANVENCANVENEXIPROEXIPROEXIPRODESEXIDESEXIDESEXIESPMEDCVESPMEDCVESPMEDCVESPMEDEPESPMEDEPESPMEDEPESPMEDDEESPMEDDEESPMEDDECANDEVCANDEVCANDEVEANVENEANVENEANVENNOMVENNOMVENNOMVENNUMTALONNUMTALONNUMTALONCANVENNETCANVENNETCANVENNETUMEDVENNETUMEDVENNETUMEDVENNETCANESPCANESPCANESPUMEDESPUMEDESPUMEDESPGFT_VARELASELECT + CLAVE1, CLAVE2, CLAVE3, EANART, CODCOM, NUMVAR, CODPRO, + DESARTCO, DESART, NUMCON, NUMLIS, CONESP1, CONESP2, + CONESP3, VALVEN, PRENETCT, PREBRUCT, PREINFET, PREINFFT, + PRECALCT, PRENETCA, PREBRUCA, PREINFEA, PREINFFA, PRECALCA, + BAPRUN1, UNIMED1, BAPRUN2, UNIMED2, BAPRUN3, UNIMED3, + BAPRUN4, UNIMED4, BAPRUN5, UNIMED5, CANVEN, EXIPRO, + DESEXI, ESPMEDCV, ESPMEDEP, ESPMEDDE, CANDEV, EANVEN, + NOMVEN, NUMTALON, CANVENNET, UMEDVENNET, CANESP, UMEDESP + FROM + RDX_ARTVENstSQLRDX_ARTVENTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringNUMDOC0TrueTrueFalseFalseNUMDOCFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringTIPODOC0FalseTrueFalseFalseTIPODOCFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringTIPOLIQ0FalseTrueFalseFalseTIPOLIQFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatDateTimeFECHA0FalseTrueFalseFalseFECHAFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECHALIQ0FalseTrueFalseFalseFECHALIQFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringEMISOR0FalseTrueFalseFalseEMISORFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringRECEPTOR0FalseTrueFalseFalseRECEPTORFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringDPTO0FalseTrueFalseFalseDPTOFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringCENTRO0FalseTrueFalseFalseCENTROFalseFalseFalse17TrueRDX_CABINVNUMDOCNUMDOCNUMDOCTIPODOCTIPODOCTIPODOCTIPOLIQTIPOLIQTIPOLIQFECHAFECHAFECHAFECHALIQFECHALIQFECHALIQEMISOREMISOREMISORRECEPTORRECEPTORRECEPTORDPTODPTODPTOCENTROCENTROCENTROGFT_VARELASELECT + NUMDOC, TIPODOC, TIPOLIQ, FECHA, FECHALIQ, EMISOR, + RECEPTOR, DPTO, CENTRO + FROM + RDX_CABINVstSQLRDX_CABINVTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatFloatCLAVE10TrueTrueFalseFalseCLAVE1FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringNUMINF0FalseTrueFalseFalseNUMINFFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringFUNCION0FalseTrueFalseFalseFUNCIONFalseFalseFalse10TruetaLeftJustifydabtUnknownFalsedatDateTimeFECINI0FalseTrueFalseFalseFECINIFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECFIN0FalseTrueFalseFalseFECFINFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECINF0FalseTrueFalseFalseFECINFFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringPERVEN0FalseTrueFalseFalsePERVENFalseFalseFalse16TruetaLeftJustifydabtUnknownFalsedatStringEANOFI0FalseTrueFalseFalseEANOFIFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANEMI0FalseTrueFalseFalseEANEMIFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANREC0FalseTrueFalseFalseEANRECFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANVEN0FalseTrueFalseFalseEANVENFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANALM0FalseTrueFalseFalseEANALMFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANREP0FalseTrueFalseFalseEANREPFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANPRO0FalseTrueFalseFalseEANPROFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANADMSA0FalseTrueFalseFalseEANADMSAFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringEANREPSR0FalseTrueFalseFalseEANREPSRFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringADMVENSA0FalseTrueFalseFalseADMVENSAFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringREPDEPSR0FalseTrueFalseFalseREPDEPSRFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringEMAILSA0FalseTrueFalseFalseEMAILSAFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMFAXSA0FalseTrueFalseFalseNUMFAXSAFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMTELSA0FalseTrueFalseFalseNUMTELSAFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMTLXSA0FalseTrueFalseFalseNUMTLXSAFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringX400SA0FalseTrueFalseFalseX400SAFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringEMAILSR0FalseTrueFalseFalseEMAILSRFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMFAXSR0FalseTrueFalseFalseNUMFAXSRFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMTELSR0FalseTrueFalseFalseNUMTELSRFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMTLXSR0FalseTrueFalseFalseNUMTLXSRFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringX400SR0FalseTrueFalseFalseX400SRFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMPRE0FalseTrueFalseFalseNUMPREFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMINFSC0FalseTrueFalseFalseNUMINFSCFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatStringNUMCON0FalseTrueFalseFalseNUMCONFalseFalseFalse35TruetaLeftJustifydabtUnknownFalsedatDateTimeFECPRE0FalseTrueFalseFalseFECPREFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECINFSC0FalseTrueFalseFalseFECINFSCFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECCON0FalseTrueFalseFalseFECCONFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringDIVPED0FalseTrueFalseFalseDIVPEDFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringDIVPRE0FalseTrueFalseFalseDIVPREFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringDIVPAG0FalseTrueFalseFalseDIVPAGFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringDIVPEDF0FalseTrueFalseFalseDIVPEDFFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringDIVPREF0FalseTrueFalseFalseDIVPREFFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringDIVPAGF0FalseTrueFalseFalseDIVPAGFFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatTASCAM0FalseTrueFalseFalseTASCAMFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECTAS0FalseTrueFalseFalseFECTASFalseFalseFalse0TrueRDX_CABVENCLAVE1CLAVE1CLAVE1NUMINFNUMINFNUMINFFUNCIONFUNCIONFUNCIONFECINIFECINIFECINIFECFINFECFINFECFINFECINFFECINFFECINFPERVENPERVENPERVENEANOFIEANOFIEANOFIEANEMIEANEMIEANEMIEANRECEANRECEANRECEANVENEANVENEANVENEANALMEANALMEANALMEANREPEANREPEANREPEANPROEANPROEANPROEANADMSAEANADMSAEANADMSAEANREPSREANREPSREANREPSRADMVENSAADMVENSAADMVENSAREPDEPSRREPDEPSRREPDEPSREMAILSAEMAILSAEMAILSANUMFAXSANUMFAXSANUMFAXSANUMTELSANUMTELSANUMTELSANUMTLXSANUMTLXSANUMTLXSAX400SAX400SAX400SAEMAILSREMAILSREMAILSRNUMFAXSRNUMFAXSRNUMFAXSRNUMTELSRNUMTELSRNUMTELSRNUMTLXSRNUMTLXSRNUMTLXSRX400SRX400SRX400SRNUMPRENUMPRENUMPRENUMINFSCNUMINFSCNUMINFSCNUMCONNUMCONNUMCONFECPREFECPREFECPREFECINFSCFECINFSCFECINFSCFECCONFECCONFECCONDIVPEDDIVPEDDIVPEDDIVPREDIVPREDIVPREDIVPAGDIVPAGDIVPAGDIVPEDFDIVPEDFDIVPEDFDIVPREFDIVPREFDIVPREFDIVPAGFDIVPAGFDIVPAGFTASCAMTASCAMTASCAMFECTASFECTASFECTASGFT_VARELASELECT + CLAVE1, NUMINF, FUNCION, FECINI, FECFIN, FECINF, PERVEN, + EANOFI, EANEMI, EANREC, EANVEN, EANALM, EANREP, EANPRO, + EANADMSA, EANREPSR, ADMVENSA, REPDEPSR, EMAILSA, NUMFAXSA, + NUMTELSA, NUMTLXSA, X400SA, EMAILSR, NUMFAXSR, NUMTELSR, + NUMTLXSR, X400SR, NUMPRE, NUMINFSC, NUMCON, FECPRE, + FECINFSC, FECCON, DIVPED, DIVPRE, DIVPAG, DIVPEDF, + DIVPREF, DIVPAGF, TASCAM, FECTAS + FROM + RDX_CABVENstSQLRDX_CABVENTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringNUMDOC0TrueTrueFalseFalseNUMDOCFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatFloatNUMLIN0TrueTrueFalseFalseNUMLINFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatNUMCANT0FalseTrueFalseFalseNUMCANTFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringTIPOCANT0FalseTrueFalseFalseTIPOCANTFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatFloatCANTIDAD0FalseTrueFalseFalseCANTIDADFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringCENTRO0FalseTrueFalseFalseCENTROFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringTMOV0FalseTrueFalseFalseTMOVFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringFACT0FalseTrueFalseFalseFACTFalseFalseFalse12TruetaLeftJustifydabtUnknownFalsedatStringDEPTO0FalseTrueFalseFalseDEPTOFalseFalseFalse3TruetaLeftJustifydabtUnknownFalsedatStringIDVEN0FalseTrueFalseFalseIDVENFalseFalseFalse10TrueRDX_CANTINVNUMDOCNUMDOCNUMDOCNUMLINNUMLINNUMLINNUMCANTNUMCANTNUMCANTTIPOCANTTIPOCANTTIPOCANTCANTIDADCANTIDADCANTIDADCENTROCENTROCENTROTMOVTMOVTMOVFACTFACTFACTDEPTODEPTODEPTOIDVENIDVENIDVENGFT_VARELASELECT + NUMDOC, NUMLIN, NUMCANT, TIPOCANT, CANTIDAD, CENTRO, + TMOV, FACT, DEPTO, IDVEN + FROM + RDX_CANTINVstSQLRDX_CANTINVTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatStringNUMDOC0TrueTrueFalseFalseNUMDOCFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatFloatNUMLIN0TrueTrueFalseFalseNUMLINFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringCODART0FalseTrueFalseFalseCODARTFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringFAMILIA0FalseTrueFalseFalseFAMILIAFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringBARRA0FalseTrueFalseFalseBARRAFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringTALLA0FalseTrueFalseFalseTALLAFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringMARCA0FalseTrueFalseFalseMARCAFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringTAMANO0FalseTrueFalseFalseTAMANOFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringSERIE0FalseTrueFalseFalseSERIEFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringCOLOR0FalseTrueFalseFalseCOLORFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringMODELO0FalseTrueFalseFalseMODELOFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringDIBUJO0FalseTrueFalseFalseDIBUJOFalseFalseFalse25TruetaLeftJustifydabtUnknownFalsedatStringDESCRIP0FalseTrueFalseFalseDESCRIPFalseFalseFalse70TrueRDX_LININVNUMDOCNUMDOCNUMDOCNUMLINNUMLINNUMLINCODARTCODARTCODARTFAMILIAFAMILIAFAMILIABARRABARRABARRATALLATALLATALLAMARCAMARCAMARCATAMANOTAMANOTAMANOSERIESERIESERIECOLORCOLORCOLORMODELOMODELOMODELODIBUJODIBUJODIBUJODESCRIPDESCRIPDESCRIPGFT_VARELASELECT + NUMDOC, NUMLIN, CODART, FAMILIA, BARRA, TALLA, MARCA, + TAMANO, SERIE, COLOR, MODELO, DIBUJO, DESCRIP + FROM + RDX_LININVstSQLRDX_LININVTrueTruerslPascalScriptrslPascalScripttaLeftJustifydabtUnknownFalsedatFloatCLAVE10TrueTrueFalseFalseCLAVE1FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatFloatCLAVE20TrueTrueFalseFalseCLAVE2FalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringEANLUG0FalseTrueFalseFalseEANLUGFalseFalseFalse17TruetaLeftJustifydabtUnknownFalsedatStringLUGVEN0FalseTrueFalseFalseLUGVENFalseFalseFalse70TruetaLeftJustifydabtUnknownFalsedatDateTimeFECINI0FalseTrueFalseFalseFECINIFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatDateTimeFECFIN0FalseTrueFalseFalseFECFINFalseFalseFalse0TruetaLeftJustifydabtUnknownFalsedatStringPERVEN0FalseTrueFalseFalsePERVENFalseFalseFalse16TrueRDX_LUGVENCLAVE1CLAVE1CLAVE1CLAVE2CLAVE2CLAVE2EANLUGEANLUGEANLUGLUGVENLUGVENLUGVENFECINIFECINIFECINIFECFINFECFINFECFINPERVENPERVENPERVENGFT_VARELASELECT + CLAVE1, CLAVE2, EANLUG, LUGVEN, FECINI, FECFIN, PERVEN + FROM + RDX_LUGVENstSQLRDX_LUGVENRDX_LININVNUMDOCRDX_CABINVNUMDOCFK_RDX_LININV_RDX_CABINVRDX_CANTINVNUMDOC;NUMLINRDX_LININVNUMDOC;NUMLINFK_RDX_CANTINV_RDX_LININVRDX_LUGVENCLAVE1RDX_CABVENCLAVE1FK_RDX_LUGVEN_RDX_CABVENRDX_ARTVENCLAVE1;CLAVE2RDX_LUGVENCLAVE1;CLAVE2FK_RDX_ARTVEN_RDX_LUGVEN0 diff --git a/2.1.0/Source/Servidor/RODLFILE.res b/2.1.0/Source/Servidor/RODLFILE.res new file mode 100644 index 0000000..1deefba Binary files /dev/null and b/2.1.0/Source/Servidor/RODLFILE.res differ diff --git a/2.1.0/Source/Servidor/RegExpr.pas b/2.1.0/Source/Servidor/RegExpr.pas new file mode 100644 index 0000000..f17279a --- /dev/null +++ b/2.1.0/Source/Servidor/RegExpr.pas @@ -0,0 +1,4042 @@ +unit RegExpr; + +{ + TRegExpr class library + Delphi Regular Expressions + + Copyright (c) 1999-2004 Andrey V. Sorokin, St.Petersburg, Russia + + You may use this software in any kind of development, + including comercial, redistribute, and modify it freely, + under the following restrictions : + 1. This software is provided as it is, without any kind of + warranty given. Use it at Your own risk.The author is not + responsible for any consequences of use of this software. + 2. The origin of this software may not be mispresented, You + must not claim that You wrote the original software. If + You use this software in any kind of product, it would be + appreciated that there in a information box, or in the + documentation would be an acknowledgement like + + Partial Copyright (c) 2004 Andrey V. Sorokin + http://RegExpStudio.com + mailto:anso@mail.ru + + 3. You may not have any income from distributing this source + (or altered version of it) to other developers. When You + use this product in a comercial package, the source may + not be charged seperatly. + 4. Altered versions must be plainly marked as such, and must + not be misrepresented as being the original software. + 5. RegExp Studio application and all the visual components as + well as documentation is not part of the TRegExpr library + and is not free for usage. + + mailto:anso@mail.ru + http://RegExpStudio.com + http://anso.da.ru/ +} + +interface + +// ======== Determine compiler +{$IFDEF VER80} Sorry, TRegExpr is for 32-bits Delphi only. Delphi 1 is not supported (and whos really care today?!). {$ENDIF} +{$IFDEF VER90} {$DEFINE D2} {$ENDIF} // D2 +{$IFDEF VER93} {$DEFINE D2} {$ENDIF} // CPPB 1 +{$IFDEF VER100} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // D3 +{$IFDEF VER110} {$DEFINE D4} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // CPPB 3 +{$IFDEF VER120} {$DEFINE D4} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // D4 +{$IFDEF VER130} {$DEFINE D5} {$DEFINE D4} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // D5 +{$IFDEF VER140} {$DEFINE D6} {$DEFINE D5} {$DEFINE D4} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // D6 +{$IFDEF VER150} {$DEFINE D7} {$DEFINE D6} {$DEFINE D5} {$DEFINE D4} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // D7 +{$IFDEF VER180} {$DEFINE D2007} {$DEFINE D10} {$DEFINE D7} {$DEFINE D6} {$DEFINE D5} {$DEFINE D4} {$DEFINE D3} {$DEFINE D2} {$ENDIF} // D10/D2007 + +// ======== Define base compiler options +{$BOOLEVAL OFF} +{$EXTENDEDSYNTAX ON} +{$LONGSTRINGS ON} +{$OPTIMIZATION ON} +{$IFDEF D6} + {$WARN SYMBOL_PLATFORM OFF} // Suppress .Net warnings +{$ENDIF} +{$IFDEF D7} + {$WARN UNSAFE_CAST OFF} // Suppress .Net warnings + {$WARN UNSAFE_TYPE OFF} // Suppress .Net warnings + {$WARN UNSAFE_CODE OFF} // Suppress .Net warnings +{$ENDIF} +{$IFDEF FPC} + {$MODE DELPHI} // Delphi-compatible mode in FreePascal +{$ENDIF} + +// ======== Define options for TRegExpr engine +{.$DEFINE UniCode} // Unicode support +{$DEFINE RegExpPCodeDump} // p-code dumping (see Dump method) +{$IFNDEF FPC} // the option is not supported in FreePascal + {$DEFINE reRealExceptionAddr} // exceptions will point to appropriate source line, not to Error procedure +{$ENDIF} +{$DEFINE ComplexBraces} // support braces in complex cases +{$IFNDEF UniCode} // the option applicable only for non-UniCode mode + {$DEFINE UseSetOfChar} // Significant optimization by using set of char +{$ENDIF} +{$IFDEF UseSetOfChar} + {$DEFINE UseFirstCharSet} // Fast skip between matches for r.e. that starts with determined set of chars +{$ENDIF} + +// ======== Define Pascal-language options +// Define 'UseAsserts' option (do not edit this definitions). +// Asserts used to catch 'strange bugs' in TRegExpr implementation (when something goes +// completely wrong). You can swith asserts on/off with help of {$C+}/{$C-} compiler options. +{$IFDEF D3} {$DEFINE UseAsserts} {$ENDIF} +{$IFDEF FPC} {$DEFINE UseAsserts} {$ENDIF} + +// Define 'use subroutine parameters default values' option (do not edit this definition). +{$IFDEF D4} {$DEFINE DefParam} {$ENDIF} + +// Define 'OverMeth' options, to use method overloading (do not edit this definitions). +{$IFDEF D5} {$DEFINE OverMeth} {$ENDIF} +{$IFDEF FPC} {$DEFINE OverMeth} {$ENDIF} + +uses + Classes, // TStrings in Split method + SysUtils; // Exception + +type + {$IFDEF UniCode} + PRegExprChar = PWideChar; + RegExprString = WideString; + REChar = WideChar; + {$ELSE} + PRegExprChar = PChar; + RegExprString = AnsiString; //###0.952 was string + REChar = Char; + {$ENDIF} + TREOp = REChar; // internal p-code type //###0.933 + PREOp = ^TREOp; + TRENextOff = integer; // internal Next "pointer" (offset to current p-code) //###0.933 + PRENextOff = ^TRENextOff; // used for extracting Next "pointers" from compiled r.e. //###0.933 + TREBracesArg = integer; // type of {m,n} arguments + PREBracesArg = ^TREBracesArg; + +const + REOpSz = SizeOf (TREOp) div SizeOf (REChar); // size of p-code in RegExprString units + RENextOffSz = SizeOf (TRENextOff) div SizeOf (REChar); // size of Next 'pointer' -"- + REBracesArgSz = SizeOf (TREBracesArg) div SizeOf (REChar); // size of BRACES arguments -"- + +type + TRegExprInvertCaseFunction = function (const Ch : REChar) : REChar + of object; + +const + EscChar = '\'; // 'Escape'-char ('\' in common r.e.) used for escaping metachars (\w, \d etc). + RegExprModifierI : boolean = False; // default value for ModifierI + RegExprModifierR : boolean = True; // default value for ModifierR + RegExprModifierS : boolean = True; // default value for ModifierS + RegExprModifierG : boolean = True; // default value for ModifierG + RegExprModifierM : boolean = False; // default value for ModifierM + RegExprModifierX : boolean = False; // default value for ModifierX + RegExprSpaceChars : RegExprString = // default value for SpaceChars + ' '#$9#$A#$D#$C; + RegExprWordChars : RegExprString = // default value for WordChars + '0123456789' //###0.940 + + 'abcdefghijklmnopqrstuvwxyz' + + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'; + RegExprLineSeparators : RegExprString =// default value for LineSeparators + #$d#$a{$IFDEF UniCode}+#$b#$c#$2028#$2029#$85{$ENDIF}; //###0.947 + RegExprLinePairedSeparator : RegExprString =// default value for LinePairedSeparator + #$d#$a; + { if You need Unix-styled line separators (only \n), then use: + RegExprLineSeparators = #$a; + RegExprLinePairedSeparator = ''; + } + + +const + NSUBEXP = 15; // max number of subexpression //###0.929 + // Cannot be more than NSUBEXPMAX + // Be carefull - don't use values which overflow CLOSE opcode + // (in this case you'll get compiler erorr). + // Big NSUBEXP will cause more slow work and more stack required + NSUBEXPMAX = 255; // Max possible value for NSUBEXP. //###0.945 + // Don't change it! It's defined by internal TRegExpr design. + + MaxBracesArg = $7FFFFFFF - 1; // max value for {n,m} arguments //###0.933 + + {$IFDEF ComplexBraces} + LoopStackMax = 10; // max depth of loops stack //###0.925 + {$ENDIF} + + TinySetLen = 3; + // if range includes more then TinySetLen chars, //###0.934 + // then use full (32 bytes) ANYOFFULL instead of ANYOF[BUT]TINYSET + // !!! Attension ! If you change TinySetLen, you must + // change code marked as "//!!!TinySet" + + +type + +{$IFDEF UseSetOfChar} + PSetOfREChar = ^TSetOfREChar; + TSetOfREChar = set of REChar; +{$ENDIF} + + TRegExpr = class; + + TRegExprReplaceFunction = function (ARegExpr : TRegExpr): string + of object; + + TRegExpr = class + private + startp : array [0 .. NSUBEXP - 1] of PRegExprChar; // founded expr starting points + endp : array [0 .. NSUBEXP - 1] of PRegExprChar; // founded expr end points + + {$IFDEF ComplexBraces} + LoopStack : array [1 .. LoopStackMax] of integer; // state before entering loop + LoopStackIdx : integer; // 0 - out of all loops + {$ENDIF} + + // The "internal use only" fields to pass info from compile + // to execute that permits the execute phase to run lots faster on + // simple cases. + regstart : REChar; // char that must begin a match; '\0' if none obvious + reganch : REChar; // is the match anchored (at beginning-of-line only)? + regmust : PRegExprChar; // string (pointer into program) that match must include, or nil + regmlen : integer; // length of regmust string + // Regstart and reganch permit very fast decisions on suitable starting points + // for a match, cutting down the work a lot. Regmust permits fast rejection + // of lines that cannot possibly match. The regmust tests are costly enough + // that regcomp() supplies a regmust only if the r.e. contains something + // potentially expensive (at present, the only such thing detected is * or + + // at the start of the r.e., which can involve a lot of backup). Regmlen is + // supplied because the test in regexec() needs it and regcomp() is computing + // it anyway. + {$IFDEF UseFirstCharSet} //###0.929 + FirstCharSet : TSetOfREChar; + {$ENDIF} + + // work variables for Exec's routins - save stack in recursion} + reginput : PRegExprChar; // String-input pointer. + fInputStart : PRegExprChar; // Pointer to first char of input string. + fInputEnd : PRegExprChar; // Pointer to char AFTER last char of input string + + // work variables for compiler's routines + regparse : PRegExprChar; // Input-scan pointer. + regnpar : integer; // count. + regdummy : char; + regcode : PRegExprChar; // Code-emit pointer; @regdummy = don't. + regsize : integer; // Code size. + + regexpbeg : PRegExprChar; // only for error handling. Contains + // pointer to beginning of r.e. while compiling + fExprIsCompiled : boolean; // true if r.e. successfully compiled + + // programm is essentially a linear encoding + // of a nondeterministic finite-state machine (aka syntax charts or + // "railroad normal form" in parsing technology). Each node is an opcode + // plus a "next" pointer, possibly plus an operand. "Next" pointers of + // all nodes except BRANCH implement concatenation; a "next" pointer with + // a BRANCH on both ends of it is connecting two alternatives. (Here we + // have one of the subtle syntax dependencies: an individual BRANCH (as + // opposed to a collection of them) is never concatenated with anything + // because of operator precedence.) The operand of some types of node is + // a literal string; for others, it is a node leading into a sub-FSM. In + // particular, the operand of a BRANCH node is the first node of the branch. + // (NB this is *not* a tree structure: the tail of the branch connects + // to the thing following the set of BRANCHes.) The opcodes are: + programm : PRegExprChar; // Unwarranted chumminess with compiler. + + fExpression : PRegExprChar; // source of compiled r.e. + fInputString : PRegExprChar; // input string + + fLastError : integer; // see Error, LastError + + fModifiers : integer; // modifiers + fCompModifiers : integer; // compiler's copy of modifiers + fProgModifiers : integer; // modifiers values from last programm compilation + + fSpaceChars : RegExprString; //###0.927 + fWordChars : RegExprString; //###0.929 + fInvertCase : TRegExprInvertCaseFunction; //###0.927 + + fLineSeparators : RegExprString; //###0.941 + fLinePairedSeparatorAssigned : boolean; + fLinePairedSeparatorHead, + fLinePairedSeparatorTail : REChar; + {$IFNDEF UniCode} + fLineSeparatorsSet : set of REChar; + {$ENDIF} + + procedure InvalidateProgramm; + // Mark programm as have to be [re]compiled + + function IsProgrammOk : boolean; //###0.941 + // Check if we can use precompiled r.e. or + // [re]compile it if something changed + + function GetExpression : RegExprString; + procedure SetExpression (const s : RegExprString); + + function GetModifierStr : RegExprString; + class function ParseModifiersStr (const AModifiers : RegExprString; + var AModifiersInt : integer) : boolean; //###0.941 class function now + // Parse AModifiers string and return true and set AModifiersInt + // if it's in format 'ismxrg-ismxrg'. + procedure SetModifierStr (const AModifiers : RegExprString); + + function GetModifier (AIndex : integer) : boolean; + procedure SetModifier (AIndex : integer; ASet : boolean); + + procedure Error (AErrorID : integer); virtual; // error handler. + // Default handler raise exception ERegExpr with + // Message = ErrorMsg (AErrorID), ErrorCode = AErrorID + // and CompilerErrorPos = value of property CompilerErrorPos. + + + {==================== Compiler section ===================} + function CompileRegExpr (exp : PRegExprChar) : boolean; + // compile a regular expression into internal code + + procedure Tail (p : PRegExprChar; val : PRegExprChar); + // set the next-pointer at the end of a node chain + + procedure OpTail (p : PRegExprChar; val : PRegExprChar); + // regoptail - regtail on operand of first argument; nop if operandless + + function EmitNode (op : TREOp) : PRegExprChar; + // regnode - emit a node, return location + + procedure EmitC (b : REChar); + // emit (if appropriate) a byte of code + + procedure InsertOperator (op : TREOp; opnd : PRegExprChar; sz : integer); //###0.90 + // insert an operator in front of already-emitted operand + // Means relocating the operand. + + function ParseReg (paren : integer; var flagp : integer) : PRegExprChar; + // regular expression, i.e. main body or parenthesized thing + + function ParseBranch (var flagp : integer) : PRegExprChar; + // one alternative of an | operator + + function ParsePiece (var flagp : integer) : PRegExprChar; + // something followed by possible [*+?] + + function ParseAtom (var flagp : integer) : PRegExprChar; + // the lowest level + + function GetCompilerErrorPos : integer; + // current pos in r.e. - for error hanling + + {$IFDEF UseFirstCharSet} //###0.929 + procedure FillFirstCharSet (prog : PRegExprChar); + {$ENDIF} + + {===================== Mathing section ===================} + function regrepeat (p : PRegExprChar; AMax : integer) : integer; + // repeatedly match something simple, report how many + + function regnext (p : PRegExprChar) : PRegExprChar; + // dig the "next" pointer out of a node + + function MatchPrim (prog : PRegExprChar) : boolean; + // recursively matching routine + + function ExecPrim (AOffset: integer) : boolean; + // Exec for stored InputString + + {$IFDEF RegExpPCodeDump} + function DumpOp (op : REChar) : RegExprString; + {$ENDIF} + + function GetSubExprMatchCount : integer; + function GetMatchPos (Idx : integer) : integer; + function GetMatchLen (Idx : integer) : integer; + function GetMatch (Idx : integer) : RegExprString; + + function GetInputString : RegExprString; + procedure SetInputString (const AInputString : RegExprString); + + {$IFNDEF UseSetOfChar} + function StrScanCI (s : PRegExprChar; ch : REChar) : PRegExprChar; //###0.928 + {$ENDIF} + + procedure SetLineSeparators (const AStr : RegExprString); + procedure SetLinePairedSeparator (const AStr : RegExprString); + function GetLinePairedSeparator : RegExprString; + + public + constructor Create; + destructor Destroy; override; + + class function VersionMajor : integer; //###0.944 + class function VersionMinor : integer; //###0.944 + + property Expression : RegExprString read GetExpression write SetExpression; + // Regular expression. + // For optimization, TRegExpr will automatically compiles it into 'P-code' + // (You can see it with help of Dump method) and stores in internal + // structures. Real [re]compilation occures only when it really needed - + // while calling Exec[Next], Substitute, Dump, etc + // and only if Expression or other P-code affected properties was changed + // after last [re]compilation. + // If any errors while [re]compilation occures, Error method is called + // (by default Error raises exception - see below) + + property ModifierStr : RegExprString read GetModifierStr write SetModifierStr; + // Set/get default values of r.e.syntax modifiers. Modifiers in + // r.e. (?ismx-ismx) will replace this default values. + // If you try to set unsupported modifier, Error will be called + // (by defaul Error raises exception ERegExpr). + + property ModifierI : boolean index 1 read GetModifier write SetModifier; + // Modifier /i - caseinsensitive, initialized from RegExprModifierI + + property ModifierR : boolean index 2 read GetModifier write SetModifier; + // Modifier /r - use r.e.syntax extended for russian, + // (was property ExtSyntaxEnabled in previous versions) + // If true, then à-ÿ additional include russian letter '¸', + // À-ß additional include '¨', and à-ß include all russian symbols. + // You have to turn it off if it may interfere with you national alphabet. + // , initialized from RegExprModifierR + + property ModifierS : boolean index 3 read GetModifier write SetModifier; + // Modifier /s - '.' works as any char (else as [^\n]), + // , initialized from RegExprModifierS + + property ModifierG : boolean index 4 read GetModifier write SetModifier; + // Switching off modifier /g switchs all operators in + // non-greedy style, so if ModifierG = False, then + // all '*' works as '*?', all '+' as '+?' and so on. + // , initialized from RegExprModifierG + + property ModifierM : boolean index 5 read GetModifier write SetModifier; + // Treat string as multiple lines. That is, change `^' and `$' from + // matching at only the very start or end of the string to the start + // or end of any line anywhere within the string. + // , initialized from RegExprModifierM + + property ModifierX : boolean index 6 read GetModifier write SetModifier; + // Modifier /x - eXtended syntax, allow r.e. text formatting, + // see description in the help. Initialized from RegExprModifierX + + function Exec (const AInputString : RegExprString) : boolean; {$IFDEF OverMeth} overload; + {$IFNDEF FPC} // I do not know why FreePascal cannot overload methods with empty param list + function Exec : boolean; overload; //###0.949 + {$ENDIF} + function Exec (AOffset: integer) : boolean; overload; //###0.949 + {$ENDIF} + // match a programm against a string AInputString + // !!! Exec store AInputString into InputString property + // For Delphi 5 and higher available overloaded versions - first without + // parameter (uses already assigned to InputString property value) + // and second that has integer parameter and is same as ExecPos + + function ExecNext : boolean; + // find next match: + // ExecNext; + // works same as + // if MatchLen [0] = 0 then ExecPos (MatchPos [0] + 1) + // else ExecPos (MatchPos [0] + MatchLen [0]); + // but it's more simpler ! + // Raises exception if used without preceeding SUCCESSFUL call to + // Exec* (Exec, ExecPos, ExecNext). So You always must use something like + // if Exec (InputString) then repeat { proceed results} until not ExecNext; + + function ExecPos (AOffset: integer {$IFDEF DefParam}= 1{$ENDIF}) : boolean; + // find match for InputString starting from AOffset position + // (AOffset=1 - first char of InputString) + + property InputString : RegExprString read GetInputString write SetInputString; + // returns current input string (from last Exec call or last assign + // to this property). + // Any assignment to this property clear Match* properties ! + + function Substitute (const ATemplate : RegExprString) : RegExprString; + // Returns ATemplate with '$&' or '$0' replaced by whole r.e. + // occurence and '$n' replaced by occurence of subexpression #n. + // Since v.0.929 '$' used instead of '\' (for future extensions + // and for more Perl-compatibility) and accept more then one digit. + // If you want place into template raw '$' or '\', use prefix '\' + // Example: '1\$ is $2\\rub\\' -> '1$ is \rub\' + // If you want to place raw digit after '$n' you must delimit + // n with curly braces '{}'. + // Example: 'a$12bc' -> 'abc' + // 'a${1}2bc' -> 'a2bc'. + + procedure Split (AInputStr : RegExprString; APieces : TStrings); + // Split AInputStr into APieces by r.e. occurencies + // Internally calls Exec[Next] + + function Replace (AInputStr : RegExprString; + const AReplaceStr : RegExprString; + AUseSubstitution : boolean{$IFDEF DefParam}= False{$ENDIF}) //###0.946 + : RegExprString; {$IFDEF OverMeth} overload; + function Replace (AInputStr : RegExprString; + AReplaceFunc : TRegExprReplaceFunction) + : RegExprString; overload; + {$ENDIF} + function ReplaceEx (AInputStr : RegExprString; + AReplaceFunc : TRegExprReplaceFunction) + : RegExprString; + // Returns AInputStr with r.e. occurencies replaced by AReplaceStr + // If AUseSubstitution is true, then AReplaceStr will be used + // as template for Substitution methods. + // For example: + // Expression := '({-i}block|var)\s*\(\s*([^ ]*)\s*\)\s*'; + // Replace ('BLOCK( test1)', 'def "$1" value "$2"', True); + // will return: def 'BLOCK' value 'test1' + // Replace ('BLOCK( test1)', 'def "$1" value "$2"') + // will return: def "$1" value "$2" + // Internally calls Exec[Next] + // Overloaded version and ReplaceEx operate with call-back function, + // so You can implement really complex functionality. + + property SubExprMatchCount : integer read GetSubExprMatchCount; + // Number of subexpressions has been found in last Exec* call. + // If there are no subexpr. but whole expr was found (Exec* returned True), + // then SubExprMatchCount=0, if no subexpressions nor whole + // r.e. found (Exec* returned false) then SubExprMatchCount=-1. + // Note, that some subexpr. may be not found and for such + // subexpr. MathPos=MatchLen=-1 and Match=''. + // For example: Expression := '(1)?2(3)?'; + // Exec ('123'): SubExprMatchCount=2, Match[0]='123', [1]='1', [2]='3' + // Exec ('12'): SubExprMatchCount=1, Match[0]='12', [1]='1' + // Exec ('23'): SubExprMatchCount=2, Match[0]='23', [1]='', [2]='3' + // Exec ('2'): SubExprMatchCount=0, Match[0]='2' + // Exec ('7') - return False: SubExprMatchCount=-1 + + property MatchPos [Idx : integer] : integer read GetMatchPos; + // pos of entrance subexpr. #Idx into tested in last Exec* + // string. First subexpr. have Idx=1, last - MatchCount, + // whole r.e. have Idx=0. + // Returns -1 if in r.e. no such subexpr. or this subexpr. + // not found in input string. + + property MatchLen [Idx : integer] : integer read GetMatchLen; + // len of entrance subexpr. #Idx r.e. into tested in last Exec* + // string. First subexpr. have Idx=1, last - MatchCount, + // whole r.e. have Idx=0. + // Returns -1 if in r.e. no such subexpr. or this subexpr. + // not found in input string. + // Remember - MatchLen may be 0 (if r.e. match empty string) ! + + property Match [Idx : integer] : RegExprString read GetMatch; + // == copy (InputString, MatchPos [Idx], MatchLen [Idx]) + // Returns '' if in r.e. no such subexpr. or this subexpr. + // not found in input string. + + function LastError : integer; + // Returns ID of last error, 0 if no errors (unusable if + // Error method raises exception) and clear internal status + // into 0 (no errors). + + function ErrorMsg (AErrorID : integer) : RegExprString; virtual; + // Returns Error message for error with ID = AErrorID. + + property CompilerErrorPos : integer read GetCompilerErrorPos; + // Returns pos in r.e. there compiler stopped. + // Usefull for error diagnostics + + property SpaceChars : RegExprString read fSpaceChars write fSpaceChars; //###0.927 + // Contains chars, treated as /s (initially filled with RegExprSpaceChars + // global constant) + + property WordChars : RegExprString read fWordChars write fWordChars; //###0.929 + // Contains chars, treated as /w (initially filled with RegExprWordChars + // global constant) + + property LineSeparators : RegExprString read fLineSeparators write SetLineSeparators; //###0.941 + // line separators (like \n in Unix) + + property LinePairedSeparator : RegExprString read GetLinePairedSeparator write SetLinePairedSeparator; //###0.941 + // paired line separator (like \r\n in DOS and Windows). + // must contain exactly two chars or no chars at all + + class function InvertCaseFunction (const Ch : REChar) : REChar; + // Converts Ch into upper case if it in lower case or in lower + // if it in upper (uses current system local setings) + + property InvertCase : TRegExprInvertCaseFunction read fInvertCase write fInvertCase; //##0.935 + // Set this property if you want to override case-insensitive functionality. + // Create set it to RegExprInvertCaseFunction (InvertCaseFunction by default) + + procedure Compile; //###0.941 + // [Re]compile r.e. Usefull for example for GUI r.e. editors (to check + // all properties validity). + + {$IFDEF RegExpPCodeDump} + function Dump : RegExprString; + // dump a compiled regexp in vaguely comprehensible form + {$ENDIF} + end; + + ERegExpr = class (Exception) + public + ErrorCode : integer; + CompilerErrorPos : integer; + end; + +const + RegExprInvertCaseFunction : TRegExprInvertCaseFunction = {$IFDEF FPC} nil {$ELSE} TRegExpr.InvertCaseFunction{$ENDIF}; + // defaul for InvertCase property + +function ExecRegExpr (const ARegExpr, AInputStr : RegExprString) : boolean; +// true if string AInputString match regular expression ARegExpr +// ! will raise exeption if syntax errors in ARegExpr + +procedure SplitRegExpr (const ARegExpr, AInputStr : RegExprString; APieces : TStrings); +// Split AInputStr into APieces by r.e. ARegExpr occurencies + +function ReplaceRegExpr (const ARegExpr, AInputStr, AReplaceStr : RegExprString; + AUseSubstitution : boolean{$IFDEF DefParam}= False{$ENDIF}) : RegExprString; //###0.947 +// Returns AInputStr with r.e. occurencies replaced by AReplaceStr +// If AUseSubstitution is true, then AReplaceStr will be used +// as template for Substitution methods. +// For example: +// ReplaceRegExpr ('({-i}block|var)\s*\(\s*([^ ]*)\s*\)\s*', +// 'BLOCK( test1)', 'def "$1" value "$2"', True) +// will return: def 'BLOCK' value 'test1' +// ReplaceRegExpr ('({-i}block|var)\s*\(\s*([^ ]*)\s*\)\s*', +// 'BLOCK( test1)', 'def "$1" value "$2"') +// will return: def "$1" value "$2" + +function QuoteRegExprMetaChars (const AStr : RegExprString) : RegExprString; +// Replace all metachars with its safe representation, +// for example 'abc$cd.(' converts into 'abc\$cd\.\(' +// This function usefull for r.e. autogeneration from +// user input + +function RegExprSubExpressions (const ARegExpr : string; + ASubExprs : TStrings; AExtendedSyntax : boolean{$IFDEF DefParam}= False{$ENDIF}) : integer; +// Makes list of subexpressions found in ARegExpr r.e. +// In ASubExps every item represent subexpression, +// from first to last, in format: +// String - subexpression text (without '()') +// low word of Object - starting position in ARegExpr, including '(' +// if exists! (first position is 1) +// high word of Object - length, including starting '(' and ending ')' +// if exist! +// AExtendedSyntax - must be True if modifier /m will be On while +// using the r.e. +// Usefull for GUI editors of r.e. etc (You can find example of using +// in TestRExp.dpr project) +// Returns +// 0 Success. No unbalanced brackets was found; +// -1 There are not enough closing brackets ')'; +// -(n+1) At position n was found opening '[' without //###0.942 +// corresponding closing ']'; +// n At position n was found closing bracket ')' without +// corresponding opening '('. +// If Result <> 0, then ASubExpr can contain empty items or illegal ones + + +implementation + +uses + Windows; // CharUpper/Lower + +const + TRegExprVersionMajor : integer = 0; + TRegExprVersionMinor : integer = 952; + // TRegExpr.VersionMajor/Minor return values of this constants + + MaskModI = 1; // modifier /i bit in fModifiers + MaskModR = 2; // -"- /r + MaskModS = 4; // -"- /s + MaskModG = 8; // -"- /g + MaskModM = 16; // -"- /m + MaskModX = 32; // -"- /x + + {$IFDEF UniCode} + XIgnoredChars = ' '#9#$d#$a; + {$ELSE} + XIgnoredChars = [' ', #9, #$d, #$a]; + {$ENDIF} + +{=============================================================} +{=================== WideString functions ====================} +{=============================================================} + +{$IFDEF UniCode} + +function StrPCopy (Dest: PRegExprChar; const Source: RegExprString): PRegExprChar; + var + i, Len : Integer; + begin + Len := length (Source); //###0.932 + for i := 1 to Len do + Dest [i - 1] := Source [i]; + Dest [Len] := #0; + Result := Dest; + end; { of function StrPCopy +--------------------------------------------------------------} + +function StrLCopy (Dest, Source: PRegExprChar; MaxLen: Cardinal): PRegExprChar; + var i: Integer; + begin + for i := 0 to MaxLen - 1 do + Dest [i] := Source [i]; + Result := Dest; + end; { of function StrLCopy +--------------------------------------------------------------} + +function StrLen (Str: PRegExprChar): Cardinal; + begin + Result:=0; + while Str [result] <> #0 + do Inc (Result); + end; { of function StrLen +--------------------------------------------------------------} + +function StrPos (Str1, Str2: PRegExprChar): PRegExprChar; + var n: Integer; + begin + Result := nil; + n := Pos (RegExprString (Str2), RegExprString (Str1)); + if n = 0 + then EXIT; + Result := Str1 + n - 1; + end; { of function StrPos +--------------------------------------------------------------} + +function StrLComp (Str1, Str2: PRegExprChar; MaxLen: Cardinal): Integer; + var S1, S2: RegExprString; + begin + S1 := Str1; + S2 := Str2; + if Copy (S1, 1, MaxLen) > Copy (S2, 1, MaxLen) + then Result := 1 + else + if Copy (S1, 1, MaxLen) < Copy (S2, 1, MaxLen) + then Result := -1 + else Result := 0; + end; { function StrLComp +--------------------------------------------------------------} + +function StrScan (Str: PRegExprChar; Chr: WideChar): PRegExprChar; + begin + Result := nil; + while (Str^ <> #0) and (Str^ <> Chr) + do Inc (Str); + if (Str^ <> #0) + then Result := Str; + end; { of function StrScan +--------------------------------------------------------------} + +{$ENDIF} + + +{=============================================================} +{===================== Global functions ======================} +{=============================================================} + +function ExecRegExpr (const ARegExpr, AInputStr : RegExprString) : boolean; + var r : TRegExpr; + begin + r := TRegExpr.Create; + try + r.Expression := ARegExpr; + Result := r.Exec (AInputStr); + finally r.Free; + end; + end; { of function ExecRegExpr +--------------------------------------------------------------} + +procedure SplitRegExpr (const ARegExpr, AInputStr : RegExprString; APieces : TStrings); + var r : TRegExpr; + begin + APieces.Clear; + r := TRegExpr.Create; + try + r.Expression := ARegExpr; + r.Split (AInputStr, APieces); + finally r.Free; + end; + end; { of procedure SplitRegExpr +--------------------------------------------------------------} + +function ReplaceRegExpr (const ARegExpr, AInputStr, AReplaceStr : RegExprString; + AUseSubstitution : boolean{$IFDEF DefParam}= False{$ENDIF}) : RegExprString; + begin + with TRegExpr.Create do try + Expression := ARegExpr; + Result := Replace (AInputStr, AReplaceStr, AUseSubstitution); + finally Free; + end; + end; { of function ReplaceRegExpr +--------------------------------------------------------------} + +function QuoteRegExprMetaChars (const AStr : RegExprString) : RegExprString; + const + RegExprMetaSet : RegExprString = '^$.[()|?+*'+EscChar+'{' + + ']}'; // - this last are additional to META. + // Very similar to META array, but slighly changed. + // !Any changes in META array must be synchronized with this set. + var + i, i0, Len : integer; + begin + Result := ''; + Len := length (AStr); + i := 1; + i0 := i; + while i <= Len do begin + if Pos (AStr [i], RegExprMetaSet) > 0 then begin + Result := Result + System.Copy (AStr, i0, i - i0) + + EscChar + AStr [i]; + i0 := i + 1; + end; + inc (i); + end; + Result := Result + System.Copy (AStr, i0, MaxInt); // Tail + end; { of function QuoteRegExprMetaChars +--------------------------------------------------------------} + +function RegExprSubExpressions (const ARegExpr : string; + ASubExprs : TStrings; AExtendedSyntax : boolean{$IFDEF DefParam}= False{$ENDIF}) : integer; + type + TStackItemRec = record //###0.945 + SubExprIdx : integer; + StartPos : integer; + end; + TStackArray = packed array [0 .. NSUBEXPMAX - 1] of TStackItemRec; + var + Len, SubExprLen : integer; + i, i0 : integer; + Modif : integer; + Stack : ^TStackArray; //###0.945 + StackIdx, StackSz : integer; + begin + Result := 0; // no unbalanced brackets found at this very moment + + ASubExprs.Clear; // I don't think that adding to non empty list + // can be usefull, so I simplified algorithm to work only with empty list + + Len := length (ARegExpr); // some optimization tricks + + // first we have to calculate number of subexpression to reserve + // space in Stack array (may be we'll reserve more then need, but + // it's faster then memory reallocation during parsing) + StackSz := 1; // add 1 for entire r.e. + for i := 1 to Len do + if ARegExpr [i] = '(' + then inc (StackSz); +// SetLength (Stack, StackSz); //###0.945 + GetMem (Stack, SizeOf (TStackItemRec) * StackSz); + try + + StackIdx := 0; + i := 1; + while (i <= Len) do begin + case ARegExpr [i] of + '(': begin + if (i < Len) and (ARegExpr [i + 1] = '?') then begin + // this is not subexpression, but comment or other + // Perl extension. We must check is it (?ismxrg-ismxrg) + // and change AExtendedSyntax if /x is changed. + inc (i, 2); // skip '(?' + i0 := i; + while (i <= Len) and (ARegExpr [i] <> ')') + do inc (i); + if i > Len + then Result := -1 // unbalansed '(' + else + if TRegExpr.ParseModifiersStr (System.Copy (ARegExpr, i, i - i0), Modif) + then AExtendedSyntax := (Modif and MaskModX) <> 0; + end + else begin // subexpression starts + ASubExprs.Add (''); // just reserve space + with Stack [StackIdx] do begin + SubExprIdx := ASubExprs.Count - 1; + StartPos := i; + end; + inc (StackIdx); + end; + end; + ')': begin + if StackIdx = 0 + then Result := i // unbalanced ')' + else begin + dec (StackIdx); + with Stack [StackIdx] do begin + SubExprLen := i - StartPos + 1; + ASubExprs.Objects [SubExprIdx] := + TObject (StartPos or (SubExprLen ShL 16)); + ASubExprs [SubExprIdx] := System.Copy ( + ARegExpr, StartPos + 1, SubExprLen - 2); // add without brackets + end; + end; + end; + EscChar: inc (i); // skip quoted symbol + '[': begin + // we have to skip character ranges at once, because they can + // contain '#', and '#' in it must NOT be recognized as eXtended + // comment beginning! + i0 := i; + inc (i); + if ARegExpr [i] = ']' // cannot be 'emty' ranges - this interpretes + then inc (i); // as ']' by itself + while (i <= Len) and (ARegExpr [i] <> ']') do + if ARegExpr [i] = EscChar //###0.942 + then inc (i, 2) // skip 'escaped' char to prevent stopping at '\]' + else inc (i); + if (i > Len) or (ARegExpr [i] <> ']') //###0.942 + then Result := - (i0 + 1); // unbalansed '[' //###0.942 + end; + '#': if AExtendedSyntax then begin + // skip eXtended comments + while (i <= Len) and (ARegExpr [i] <> #$d) and (ARegExpr [i] <> #$a) + // do not use [#$d, #$a] due to UniCode compatibility + do inc (i); + while (i + 1 <= Len) and ((ARegExpr [i + 1] = #$d) or (ARegExpr [i + 1] = #$a)) + do inc (i); // attempt to work with different kinds of line separators + // now we are at the line separator that must be skipped. + end; + // here is no 'else' clause - we simply skip ordinary chars + end; // of case + inc (i); // skip scanned char + // ! can move after Len due to skipping quoted symbol + end; + + // check brackets balance + if StackIdx <> 0 + then Result := -1; // unbalansed '(' + + // check if entire r.e. added + if (ASubExprs.Count = 0) + or ((integer (ASubExprs.Objects [0]) and $FFFF) <> 1) + or (((integer (ASubExprs.Objects [0]) ShR 16) and $FFFF) <> Len) + // whole r.e. wasn't added because it isn't bracketed + // well, we add it now: + then ASubExprs.InsertObject (0, ARegExpr, TObject ((Len ShL 16) or 1)); + + finally FreeMem (Stack); + end; + end; { of function RegExprSubExpressions +--------------------------------------------------------------} + + + +const + MAGIC = TREOp (216);// programm signature + +// name opcode opnd? meaning + EEND = TREOp (0); // - End of program + BOL = TREOp (1); // - Match "" at beginning of line + EOL = TREOp (2); // - Match "" at end of line + ANY = TREOp (3); // - Match any one character + ANYOF = TREOp (4); // Str Match any character in string Str + ANYBUT = TREOp (5); // Str Match any char. not in string Str + BRANCH = TREOp (6); // Node Match this alternative, or the next + BACK = TREOp (7); // - Jump backward (Next < 0) + EXACTLY = TREOp (8); // Str Match string Str + NOTHING = TREOp (9); // - Match empty string + STAR = TREOp (10); // Node Match this (simple) thing 0 or more times + PLUS = TREOp (11); // Node Match this (simple) thing 1 or more times + ANYDIGIT = TREOp (12); // - Match any digit (equiv [0-9]) + NOTDIGIT = TREOp (13); // - Match not digit (equiv [0-9]) + ANYLETTER = TREOp (14); // - Match any letter from property WordChars + NOTLETTER = TREOp (15); // - Match not letter from property WordChars + ANYSPACE = TREOp (16); // - Match any space char (see property SpaceChars) + NOTSPACE = TREOp (17); // - Match not space char (see property SpaceChars) + BRACES = TREOp (18); // Node,Min,Max Match this (simple) thing from Min to Max times. + // Min and Max are TREBracesArg + COMMENT = TREOp (19); // - Comment ;) + EXACTLYCI = TREOp (20); // Str Match string Str case insensitive + ANYOFCI = TREOp (21); // Str Match any character in string Str, case insensitive + ANYBUTCI = TREOp (22); // Str Match any char. not in string Str, case insensitive + LOOPENTRY = TREOp (23); // Node Start of loop (Node - LOOP for this loop) + LOOP = TREOp (24); // Node,Min,Max,LoopEntryJmp - back jump for LOOPENTRY. + // Min and Max are TREBracesArg + // Node - next node in sequence, + // LoopEntryJmp - associated LOOPENTRY node addr + ANYOFTINYSET= TREOp (25); // Chrs Match any one char from Chrs (exactly TinySetLen chars) + ANYBUTTINYSET=TREOp (26); // Chrs Match any one char not in Chrs (exactly TinySetLen chars) + ANYOFFULLSET= TREOp (27); // Set Match any one char from set of char + // - very fast (one CPU instruction !) but takes 32 bytes of p-code + BSUBEXP = TREOp (28); // Idx Match previously matched subexpression #Idx (stored as REChar) //###0.936 + BSUBEXPCI = TREOp (29); // Idx -"- in case-insensitive mode + + // Non-Greedy Style Ops //###0.940 + STARNG = TREOp (30); // Same as START but in non-greedy mode + PLUSNG = TREOp (31); // Same as PLUS but in non-greedy mode + BRACESNG = TREOp (32); // Same as BRACES but in non-greedy mode + LOOPNG = TREOp (33); // Same as LOOP but in non-greedy mode + + // Multiline mode \m + BOLML = TREOp (34); // - Match "" at beginning of line + EOLML = TREOp (35); // - Match "" at end of line + ANYML = TREOp (36); // - Match any one character + + // Word boundary + BOUND = TREOp (37); // Match "" between words //###0.943 + NOTBOUND = TREOp (38); // Match "" not between words //###0.943 + + // !!! Change OPEN value if you add new opcodes !!! + + OPEN = TREOp (39); // - Mark this point in input as start of \n + // OPEN + 1 is \1, etc. + CLOSE = TREOp (ord (OPEN) + NSUBEXP); + // - Analogous to OPEN. + + // !!! Don't add new OpCodes after CLOSE !!! + +// We work with p-code thru pointers, compatible with PRegExprChar. +// Note: all code components (TRENextOff, TREOp, TREBracesArg, etc) +// must have lengths that can be divided by SizeOf (REChar) ! +// A node is TREOp of opcode followed Next "pointer" of TRENextOff type. +// The Next is a offset from the opcode of the node containing it. +// An operand, if any, simply follows the node. (Note that much of +// the code generation knows about this implicit relationship!) +// Using TRENextOff=integer speed up p-code processing. + +// Opcodes description: +// +// BRANCH The set of branches constituting a single choice are hooked +// together with their "next" pointers, since precedence prevents +// anything being concatenated to any individual branch. The +// "next" pointer of the last BRANCH in a choice points to the +// thing following the whole choice. This is also where the +// final "next" pointer of each individual branch points; each +// branch starts with the operand node of a BRANCH node. +// BACK Normal "next" pointers all implicitly point forward; BACK +// exists to make loop structures possible. +// STAR,PLUS,BRACES '?', and complex '*' and '+', are implemented as +// circular BRANCH structures using BACK. Complex '{min,max}' +// - as pair LOOPENTRY-LOOP (see below). Simple cases (one +// character per match) are implemented with STAR, PLUS and +// BRACES for speed and to minimize recursive plunges. +// LOOPENTRY,LOOP {min,max} are implemented as special pair +// LOOPENTRY-LOOP. Each LOOPENTRY initialize loopstack for +// current level. +// OPEN,CLOSE are numbered at compile time. + + +{=============================================================} +{================== Error handling section ===================} +{=============================================================} + +const + reeOk = 0; + reeCompNullArgument = 100; + reeCompRegexpTooBig = 101; + reeCompParseRegTooManyBrackets = 102; + reeCompParseRegUnmatchedBrackets = 103; + reeCompParseRegUnmatchedBrackets2 = 104; + reeCompParseRegJunkOnEnd = 105; + reePlusStarOperandCouldBeEmpty = 106; + reeNestedSQP = 107; + reeBadHexDigit = 108; + reeInvalidRange = 109; + reeParseAtomTrailingBackSlash = 110; + reeNoHexCodeAfterBSlashX = 111; + reeHexCodeAfterBSlashXTooBig = 112; + reeUnmatchedSqBrackets = 113; + reeInternalUrp = 114; + reeQPSBFollowsNothing = 115; + reeTrailingBackSlash = 116; + reeRarseAtomInternalDisaster = 119; + reeBRACESArgTooBig = 122; + reeBracesMinParamGreaterMax = 124; + reeUnclosedComment = 125; + reeComplexBracesNotImplemented = 126; + reeUrecognizedModifier = 127; + reeBadLinePairedSeparator = 128; + reeRegRepeatCalledInappropriately = 1000; + reeMatchPrimMemoryCorruption = 1001; + reeMatchPrimCorruptedPointers = 1002; + reeNoExpression = 1003; + reeCorruptedProgram = 1004; + reeNoInpitStringSpecified = 1005; + reeOffsetMustBeGreaterThen0 = 1006; + reeExecNextWithoutExec = 1007; + reeGetInputStringWithoutInputString = 1008; + reeDumpCorruptedOpcode = 1011; + reeModifierUnsupported = 1013; + reeLoopStackExceeded = 1014; + reeLoopWithoutEntry = 1015; + reeBadPCodeImported = 2000; + +function TRegExpr.ErrorMsg (AErrorID : integer) : RegExprString; + begin + case AErrorID of + reeOk: Result := 'No errors'; + reeCompNullArgument: Result := 'TRegExpr(comp): Null Argument'; + reeCompRegexpTooBig: Result := 'TRegExpr(comp): Regexp Too Big'; + reeCompParseRegTooManyBrackets: Result := 'TRegExpr(comp): ParseReg Too Many ()'; + reeCompParseRegUnmatchedBrackets: Result := 'TRegExpr(comp): ParseReg Unmatched ()'; + reeCompParseRegUnmatchedBrackets2: Result := 'TRegExpr(comp): ParseReg Unmatched ()'; + reeCompParseRegJunkOnEnd: Result := 'TRegExpr(comp): ParseReg Junk On End'; + reePlusStarOperandCouldBeEmpty: Result := 'TRegExpr(comp): *+ Operand Could Be Empty'; + reeNestedSQP: Result := 'TRegExpr(comp): Nested *?+'; + reeBadHexDigit: Result := 'TRegExpr(comp): Bad Hex Digit'; + reeInvalidRange: Result := 'TRegExpr(comp): Invalid [] Range'; + reeParseAtomTrailingBackSlash: Result := 'TRegExpr(comp): Parse Atom Trailing \'; + reeNoHexCodeAfterBSlashX: Result := 'TRegExpr(comp): No Hex Code After \x'; + reeHexCodeAfterBSlashXTooBig: Result := 'TRegExpr(comp): Hex Code After \x Is Too Big'; + reeUnmatchedSqBrackets: Result := 'TRegExpr(comp): Unmatched []'; + reeInternalUrp: Result := 'TRegExpr(comp): Internal Urp'; + reeQPSBFollowsNothing: Result := 'TRegExpr(comp): ?+*{ Follows Nothing'; + reeTrailingBackSlash: Result := 'TRegExpr(comp): Trailing \'; + reeRarseAtomInternalDisaster: Result := 'TRegExpr(comp): RarseAtom Internal Disaster'; + reeBRACESArgTooBig: Result := 'TRegExpr(comp): BRACES Argument Too Big'; + reeBracesMinParamGreaterMax: Result := 'TRegExpr(comp): BRACE Min Param Greater then Max'; + reeUnclosedComment: Result := 'TRegExpr(comp): Unclosed (?#Comment)'; + reeComplexBracesNotImplemented: Result := 'TRegExpr(comp): If you want take part in beta-testing BRACES ''{min,max}'' and non-greedy ops ''*?'', ''+?'', ''??'' for complex cases - remove ''.'' from {.$DEFINE ComplexBraces}'; + reeUrecognizedModifier: Result := 'TRegExpr(comp): Urecognized Modifier'; + reeBadLinePairedSeparator: Result := 'TRegExpr(comp): LinePairedSeparator must countain two different chars or no chars at all'; + + reeRegRepeatCalledInappropriately: Result := 'TRegExpr(exec): RegRepeat Called Inappropriately'; + reeMatchPrimMemoryCorruption: Result := 'TRegExpr(exec): MatchPrim Memory Corruption'; + reeMatchPrimCorruptedPointers: Result := 'TRegExpr(exec): MatchPrim Corrupted Pointers'; + reeNoExpression: Result := 'TRegExpr(exec): Not Assigned Expression Property'; + reeCorruptedProgram: Result := 'TRegExpr(exec): Corrupted Program'; + reeNoInpitStringSpecified: Result := 'TRegExpr(exec): No Input String Specified'; + reeOffsetMustBeGreaterThen0: Result := 'TRegExpr(exec): Offset Must Be Greater Then 0'; + reeExecNextWithoutExec: Result := 'TRegExpr(exec): ExecNext Without Exec[Pos]'; + reeGetInputStringWithoutInputString: Result := 'TRegExpr(exec): GetInputString Without InputString'; + reeDumpCorruptedOpcode: Result := 'TRegExpr(dump): Corrupted Opcode'; + reeLoopStackExceeded: Result := 'TRegExpr(exec): Loop Stack Exceeded'; + reeLoopWithoutEntry: Result := 'TRegExpr(exec): Loop Without LoopEntry !'; + + reeBadPCodeImported: Result := 'TRegExpr(misc): Bad p-code imported'; + else Result := 'Unknown error'; + end; + end; { of procedure TRegExpr.Error +--------------------------------------------------------------} + +function TRegExpr.LastError : integer; + begin + Result := fLastError; + fLastError := reeOk; + end; { of function TRegExpr.LastError +--------------------------------------------------------------} + + +{=============================================================} +{===================== Common section ========================} +{=============================================================} + +class function TRegExpr.VersionMajor : integer; //###0.944 + begin + Result := TRegExprVersionMajor; + end; { of class function TRegExpr.VersionMajor +--------------------------------------------------------------} + +class function TRegExpr.VersionMinor : integer; //###0.944 + begin + Result := TRegExprVersionMinor; + end; { of class function TRegExpr.VersionMinor +--------------------------------------------------------------} + +constructor TRegExpr.Create; + begin + inherited; + programm := nil; + fExpression := nil; + fInputString := nil; + + regexpbeg := nil; + fExprIsCompiled := false; + + ModifierI := RegExprModifierI; + ModifierR := RegExprModifierR; + ModifierS := RegExprModifierS; + ModifierG := RegExprModifierG; + ModifierM := RegExprModifierM; //###0.940 + + SpaceChars := RegExprSpaceChars; //###0.927 + WordChars := RegExprWordChars; //###0.929 + fInvertCase := RegExprInvertCaseFunction; //###0.927 + + fLineSeparators := RegExprLineSeparators; //###0.941 + LinePairedSeparator := RegExprLinePairedSeparator; //###0.941 + end; { of constructor TRegExpr.Create +--------------------------------------------------------------} + +destructor TRegExpr.Destroy; + begin + if programm <> nil + then FreeMem (programm); + if fExpression <> nil + then FreeMem (fExpression); + if fInputString <> nil + then FreeMem (fInputString); + end; { of destructor TRegExpr.Destroy +--------------------------------------------------------------} + +class function TRegExpr.InvertCaseFunction (const Ch : REChar) : REChar; + begin + {$IFDEF UniCode} + if Ch >= #128 + then Result := Ch + else + {$ENDIF} + begin + Result := {$IFDEF FPC}AnsiUpperCase (Ch) [1]{$ELSE} REChar (CharUpper (PChar (Ch))){$ENDIF}; + if Result = Ch + then Result := {$IFDEF FPC}AnsiLowerCase (Ch) [1]{$ELSE} REChar (CharLower (PChar (Ch))){$ENDIF}; + end; + end; { of function TRegExpr.InvertCaseFunction +--------------------------------------------------------------} + +function TRegExpr.GetExpression : RegExprString; + begin + if fExpression <> nil + then Result := fExpression + else Result := ''; + end; { of function TRegExpr.GetExpression +--------------------------------------------------------------} + +procedure TRegExpr.SetExpression (const s : RegExprString); + var + Len : integer; //###0.950 + begin + if (s <> fExpression) or not fExprIsCompiled then begin + fExprIsCompiled := false; + if fExpression <> nil then begin + FreeMem (fExpression); + fExpression := nil; + end; + if s <> '' then begin + Len := length (s); //###0.950 + GetMem (fExpression, (Len + 1) * SizeOf (REChar)); +// StrPCopy (fExpression, s); //###0.950 replaced due to StrPCopy limitation of 255 chars + {$IFDEF UniCode} + StrPCopy (fExpression, Copy (s, 1, Len)); //###0.950 + {$ELSE} + StrLCopy (fExpression, PRegExprChar (s), Len); //###0.950 + {$ENDIF UniCode} + + InvalidateProgramm; //###0.941 + end; + end; + end; { of procedure TRegExpr.SetExpression +--------------------------------------------------------------} + +function TRegExpr.GetSubExprMatchCount : integer; + begin + if Assigned (fInputString) then begin + Result := NSUBEXP - 1; + while (Result > 0) and ((startp [Result] = nil) + or (endp [Result] = nil)) + do dec (Result); + end + else Result := -1; + end; { of function TRegExpr.GetSubExprMatchCount +--------------------------------------------------------------} + +function TRegExpr.GetMatchPos (Idx : integer) : integer; + begin + if (Idx >= 0) and (Idx < NSUBEXP) and Assigned (fInputString) + and Assigned (startp [Idx]) and Assigned (endp [Idx]) then begin + Result := (startp [Idx] - fInputString) + 1; + end + else Result := -1; + end; { of function TRegExpr.GetMatchPos +--------------------------------------------------------------} + +function TRegExpr.GetMatchLen (Idx : integer) : integer; + begin + if (Idx >= 0) and (Idx < NSUBEXP) and Assigned (fInputString) + and Assigned (startp [Idx]) and Assigned (endp [Idx]) then begin + Result := endp [Idx] - startp [Idx]; + end + else Result := -1; + end; { of function TRegExpr.GetMatchLen +--------------------------------------------------------------} + +function TRegExpr.GetMatch (Idx : integer) : RegExprString; + begin + if (Idx >= 0) and (Idx < NSUBEXP) and Assigned (fInputString) + and Assigned (startp [Idx]) and Assigned (endp [Idx]) + //then Result := copy (fInputString, MatchPos [Idx], MatchLen [Idx]) //###0.929 + then SetString (Result, startp [idx], endp [idx] - startp [idx]) + else Result := ''; + end; { of function TRegExpr.GetMatch +--------------------------------------------------------------} + +function TRegExpr.GetModifierStr : RegExprString; + begin + Result := '-'; + + if ModifierI + then Result := 'i' + Result + else Result := Result + 'i'; + if ModifierR + then Result := 'r' + Result + else Result := Result + 'r'; + if ModifierS + then Result := 's' + Result + else Result := Result + 's'; + if ModifierG + then Result := 'g' + Result + else Result := Result + 'g'; + if ModifierM + then Result := 'm' + Result + else Result := Result + 'm'; + if ModifierX + then Result := 'x' + Result + else Result := Result + 'x'; + + if Result [length (Result)] = '-' // remove '-' if all modifiers are 'On' + then System.Delete (Result, length (Result), 1); + end; { of function TRegExpr.GetModifierStr +--------------------------------------------------------------} + +class function TRegExpr.ParseModifiersStr (const AModifiers : RegExprString; +var AModifiersInt : integer) : boolean; +// !!! Be carefull - this is class function and must not use object instance fields + var + i : integer; + IsOn : boolean; + Mask : integer; + begin + Result := true; + IsOn := true; + Mask := 0; // prevent compiler warning + for i := 1 to length (AModifiers) do + if AModifiers [i] = '-' + then IsOn := false + else begin + if Pos (AModifiers [i], 'iI') > 0 + then Mask := MaskModI + else if Pos (AModifiers [i], 'rR') > 0 + then Mask := MaskModR + else if Pos (AModifiers [i], 'sS') > 0 + then Mask := MaskModS + else if Pos (AModifiers [i], 'gG') > 0 + then Mask := MaskModG + else if Pos (AModifiers [i], 'mM') > 0 + then Mask := MaskModM + else if Pos (AModifiers [i], 'xX') > 0 + then Mask := MaskModX + else begin + Result := false; + EXIT; + end; + if IsOn + then AModifiersInt := AModifiersInt or Mask + else AModifiersInt := AModifiersInt and not Mask; + end; + end; { of function TRegExpr.ParseModifiersStr +--------------------------------------------------------------} + +procedure TRegExpr.SetModifierStr (const AModifiers : RegExprString); + begin + if not ParseModifiersStr (AModifiers, fModifiers) + then Error (reeModifierUnsupported); + end; { of procedure TRegExpr.SetModifierStr +--------------------------------------------------------------} + +function TRegExpr.GetModifier (AIndex : integer) : boolean; + var + Mask : integer; + begin + Result := false; + case AIndex of + 1: Mask := MaskModI; + 2: Mask := MaskModR; + 3: Mask := MaskModS; + 4: Mask := MaskModG; + 5: Mask := MaskModM; + 6: Mask := MaskModX; + else begin + Error (reeModifierUnsupported); + EXIT; + end; + end; + Result := (fModifiers and Mask) <> 0; + end; { of function TRegExpr.GetModifier +--------------------------------------------------------------} + +procedure TRegExpr.SetModifier (AIndex : integer; ASet : boolean); + var + Mask : integer; + begin + case AIndex of + 1: Mask := MaskModI; + 2: Mask := MaskModR; + 3: Mask := MaskModS; + 4: Mask := MaskModG; + 5: Mask := MaskModM; + 6: Mask := MaskModX; + else begin + Error (reeModifierUnsupported); + EXIT; + end; + end; + if ASet + then fModifiers := fModifiers or Mask + else fModifiers := fModifiers and not Mask; + end; { of procedure TRegExpr.SetModifier +--------------------------------------------------------------} + + +{=============================================================} +{==================== Compiler section =======================} +{=============================================================} + +procedure TRegExpr.InvalidateProgramm; + begin + if programm <> nil then begin + FreeMem (programm); + programm := nil; + end; + end; { of procedure TRegExpr.InvalidateProgramm +--------------------------------------------------------------} + +procedure TRegExpr.Compile; //###0.941 + begin + if fExpression = nil then begin // No Expression assigned + Error (reeNoExpression); + EXIT; + end; + CompileRegExpr (fExpression); + end; { of procedure TRegExpr.Compile +--------------------------------------------------------------} + +function TRegExpr.IsProgrammOk : boolean; + {$IFNDEF UniCode} + var + i : integer; + {$ENDIF} + begin + Result := false; + + // check modifiers + if fModifiers <> fProgModifiers //###0.941 + then InvalidateProgramm; + + // can we optimize line separators by using sets? + {$IFNDEF UniCode} + fLineSeparatorsSet := []; + for i := 1 to length (fLineSeparators) + do System.Include (fLineSeparatorsSet, fLineSeparators [i]); + {$ENDIF} + + // [Re]compile if needed + if programm = nil + then Compile; //###0.941 + + // check [re]compiled programm + if programm = nil + then EXIT // error was set/raised by Compile (was reeExecAfterCompErr) + else if programm [0] <> MAGIC // Program corrupted. + then Error (reeCorruptedProgram) + else Result := true; + end; { of function TRegExpr.IsProgrammOk +--------------------------------------------------------------} + +procedure TRegExpr.Tail (p : PRegExprChar; val : PRegExprChar); +// set the next-pointer at the end of a node chain + var + scan : PRegExprChar; + temp : PRegExprChar; +// i : int64; + begin + if p = @regdummy + then EXIT; + // Find last node. + scan := p; + REPEAT + temp := regnext (scan); + if temp = nil + then BREAK; + scan := temp; + UNTIL false; + // Set Next 'pointer' + if val < scan + then PRENextOff (scan + REOpSz)^ := - (scan - val) //###0.948 + // work around PWideChar subtraction bug (Delphi uses + // shr after subtraction to calculate widechar distance %-( ) + // so, if difference is negative we have .. the "feature" :( + // I could wrap it in $IFDEF UniCode, but I didn't because + // "P – Q computes the difference between the address given + // by P (the higher address) and the address given by Q (the + // lower address)" - Delphi help quotation. + else PRENextOff (scan + REOpSz)^ := val - scan; //###0.933 + end; { of procedure TRegExpr.Tail +--------------------------------------------------------------} + +procedure TRegExpr.OpTail (p : PRegExprChar; val : PRegExprChar); +// regtail on operand of first argument; nop if operandless + begin + // "Operandless" and "op != BRANCH" are synonymous in practice. + if (p = nil) or (p = @regdummy) or (PREOp (p)^ <> BRANCH) + then EXIT; + Tail (p + REOpSz + RENextOffSz, val); //###0.933 + end; { of procedure TRegExpr.OpTail +--------------------------------------------------------------} + +function TRegExpr.EmitNode (op : TREOp) : PRegExprChar; //###0.933 +// emit a node, return location + begin + Result := regcode; + if Result <> @regdummy then begin + PREOp (regcode)^ := op; + inc (regcode, REOpSz); + PRENextOff (regcode)^ := 0; // Next "pointer" := nil + inc (regcode, RENextOffSz); + end + else inc (regsize, REOpSz + RENextOffSz); // compute code size without code generation + end; { of function TRegExpr.EmitNode +--------------------------------------------------------------} + +procedure TRegExpr.EmitC (b : REChar); +// emit a byte to code + begin + if regcode <> @regdummy then begin + regcode^ := b; + inc (regcode); + end + else inc (regsize); // Type of p-code pointer always is ^REChar + end; { of procedure TRegExpr.EmitC +--------------------------------------------------------------} + +procedure TRegExpr.InsertOperator (op : TREOp; opnd : PRegExprChar; sz : integer); +// insert an operator in front of already-emitted operand +// Means relocating the operand. + var + src, dst, place : PRegExprChar; + i : integer; + begin + if regcode = @regdummy then begin + inc (regsize, sz); + EXIT; + end; + src := regcode; + inc (regcode, sz); + dst := regcode; + while src > opnd do begin + dec (dst); + dec (src); + dst^ := src^; + end; + place := opnd; // Op node, where operand used to be. + PREOp (place)^ := op; + inc (place, REOpSz); + for i := 1 + REOpSz to sz do begin + place^ := #0; + inc (place); + end; + end; { of procedure TRegExpr.InsertOperator +--------------------------------------------------------------} + +function strcspn (s1 : PRegExprChar; s2 : PRegExprChar) : integer; +// find length of initial segment of s1 consisting +// entirely of characters not from s2 + var scan1, scan2 : PRegExprChar; + begin + Result := 0; + scan1 := s1; + while scan1^ <> #0 do begin + scan2 := s2; + while scan2^ <> #0 do + if scan1^ = scan2^ + then EXIT + else inc (scan2); + inc (Result); + inc (scan1) + end; + end; { of function strcspn +--------------------------------------------------------------} + +const +// Flags to be passed up and down. + HASWIDTH = 01; // Known never to match nil string. + SIMPLE = 02; // Simple enough to be STAR/PLUS/BRACES operand. + SPSTART = 04; // Starts with * or +. + WORST = 0; // Worst case. + META : array [0 .. 12] of REChar = ( + '^', '$', '.', '[', '(', ')', '|', '?', '+', '*', EscChar, '{', #0); + // Any modification must be synchronized with QuoteRegExprMetaChars !!! + +{$IFDEF UniCode} + RusRangeLo : array [0 .. 33] of REChar = + (#$430,#$431,#$432,#$433,#$434,#$435,#$451,#$436,#$437, + #$438,#$439,#$43A,#$43B,#$43C,#$43D,#$43E,#$43F, + #$440,#$441,#$442,#$443,#$444,#$445,#$446,#$447, + #$448,#$449,#$44A,#$44B,#$44C,#$44D,#$44E,#$44F,#0); + RusRangeHi : array [0 .. 33] of REChar = + (#$410,#$411,#$412,#$413,#$414,#$415,#$401,#$416,#$417, + #$418,#$419,#$41A,#$41B,#$41C,#$41D,#$41E,#$41F, + #$420,#$421,#$422,#$423,#$424,#$425,#$426,#$427, + #$428,#$429,#$42A,#$42B,#$42C,#$42D,#$42E,#$42F,#0); + RusRangeLoLow = #$430{'à'}; + RusRangeLoHigh = #$44F{'ÿ'}; + RusRangeHiLow = #$410{'À'}; + RusRangeHiHigh = #$42F{'ß'}; +{$ELSE} + RusRangeLo = 'àáâãä叿çèéêëìíîïðñòóôõö÷øùúûüýþÿ'; + RusRangeHi = 'ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞß'; + RusRangeLoLow = 'à'; + RusRangeLoHigh = 'ÿ'; + RusRangeHiLow = 'À'; + RusRangeHiHigh = 'ß'; +{$ENDIF} + +function TRegExpr.CompileRegExpr (exp : PRegExprChar) : boolean; +// compile a regular expression into internal code +// We can't allocate space until we know how big the compiled form will be, +// but we can't compile it (and thus know how big it is) until we've got a +// place to put the code. So we cheat: we compile it twice, once with code +// generation turned off and size counting turned on, and once "for real". +// This also means that we don't allocate space until we are sure that the +// thing really will compile successfully, and we never have to move the +// code and thus invalidate pointers into it. (Note that it has to be in +// one piece because free() must be able to free it all.) +// Beware that the optimization-preparation code in here knows about some +// of the structure of the compiled regexp. + var + scan, longest : PRegExprChar; + len : cardinal; + flags : integer; + begin + Result := false; // life too dark + + regparse := nil; // for correct error handling + regexpbeg := exp; + try + + if programm <> nil then begin + FreeMem (programm); + programm := nil; + end; + + if exp = nil then begin + Error (reeCompNullArgument); + EXIT; + end; + + fProgModifiers := fModifiers; + // well, may it's paranoia. I'll check it later... !!!!!!!! + + // First pass: determine size, legality. + fCompModifiers := fModifiers; + regparse := exp; + regnpar := 1; + regsize := 0; + regcode := @regdummy; + EmitC (MAGIC); + if ParseReg (0, flags) = nil + then EXIT; + + // Small enough for 2-bytes programm pointers ? + // ###0.933 no real p-code length limits now :))) +// if regsize >= 64 * 1024 then begin +// Error (reeCompRegexpTooBig); +// EXIT; +// end; + + // Allocate space. + GetMem (programm, regsize * SizeOf (REChar)); + + // Second pass: emit code. + fCompModifiers := fModifiers; + regparse := exp; + regnpar := 1; + regcode := programm; + EmitC (MAGIC); + if ParseReg (0, flags) = nil + then EXIT; + + // Dig out information for optimizations. + {$IFDEF UseFirstCharSet} //###0.929 + FirstCharSet := []; + FillFirstCharSet (programm + REOpSz); + {$ENDIF} + regstart := #0; // Worst-case defaults. + reganch := #0; + regmust := nil; + regmlen := 0; + scan := programm + REOpSz; // First BRANCH. + if PREOp (regnext (scan))^ = EEND then begin // Only one top-level choice. + scan := scan + REOpSz + RENextOffSz; + + // Starting-point info. + if PREOp (scan)^ = EXACTLY + then regstart := (scan + REOpSz + RENextOffSz)^ + else if PREOp (scan)^ = BOL + then inc (reganch); + + // If there's something expensive in the r.e., find the longest + // literal string that must appear and make it the regmust. Resolve + // ties in favor of later strings, since the regstart check works + // with the beginning of the r.e. and avoiding duplication + // strengthens checking. Not a strong reason, but sufficient in the + // absence of others. + if (flags and SPSTART) <> 0 then begin + longest := nil; + len := 0; + while scan <> nil do begin + if (PREOp (scan)^ = EXACTLY) + and (strlen (scan + REOpSz + RENextOffSz) >= len) then begin + longest := scan + REOpSz + RENextOffSz; + len := strlen (longest); + end; + scan := regnext (scan); + end; + regmust := longest; + regmlen := len; + end; + end; + + Result := true; + + finally begin + if not Result + then InvalidateProgramm; + regexpbeg := nil; + fExprIsCompiled := Result; //###0.944 + end; + end; + + end; { of function TRegExpr.CompileRegExpr +--------------------------------------------------------------} + +function TRegExpr.ParseReg (paren : integer; var flagp : integer) : PRegExprChar; +// regular expression, i.e. main body or parenthesized thing +// Caller must absorb opening parenthesis. +// Combining parenthesis handling with the base level of regular expression +// is a trifle forced, but the need to tie the tails of the branches to what +// follows makes it hard to avoid. + var + ret, br, ender : PRegExprChar; + parno : integer; + flags : integer; + SavedModifiers : integer; + begin + Result := nil; + flagp := HASWIDTH; // Tentatively. + parno := 0; // eliminate compiler stupid warning + SavedModifiers := fCompModifiers; + + // Make an OPEN node, if parenthesized. + if paren <> 0 then begin + if regnpar >= NSUBEXP then begin + Error (reeCompParseRegTooManyBrackets); + EXIT; + end; + parno := regnpar; + inc (regnpar); + ret := EmitNode (TREOp (ord (OPEN) + parno)); + end + else ret := nil; + + // Pick up the branches, linking them together. + br := ParseBranch (flags); + if br = nil then begin + Result := nil; + EXIT; + end; + if ret <> nil + then Tail (ret, br) // OPEN -> first. + else ret := br; + if (flags and HASWIDTH) = 0 + then flagp := flagp and not HASWIDTH; + flagp := flagp or flags and SPSTART; + while (regparse^ = '|') do begin + inc (regparse); + br := ParseBranch (flags); + if br = nil then begin + Result := nil; + EXIT; + end; + Tail (ret, br); // BRANCH -> BRANCH. + if (flags and HASWIDTH) = 0 + then flagp := flagp and not HASWIDTH; + flagp := flagp or flags and SPSTART; + end; + + // Make a closing node, and hook it on the end. + if paren <> 0 + then ender := EmitNode (TREOp (ord (CLOSE) + parno)) + else ender := EmitNode (EEND); + Tail (ret, ender); + + // Hook the tails of the branches to the closing node. + br := ret; + while br <> nil do begin + OpTail (br, ender); + br := regnext (br); + end; + + // Check for proper termination. + if paren <> 0 then + if regparse^ <> ')' then begin + Error (reeCompParseRegUnmatchedBrackets); + EXIT; + end + else inc (regparse); // skip trailing ')' + if (paren = 0) and (regparse^ <> #0) then begin + if regparse^ = ')' + then Error (reeCompParseRegUnmatchedBrackets2) + else Error (reeCompParseRegJunkOnEnd); + EXIT; + end; + fCompModifiers := SavedModifiers; // restore modifiers of parent + Result := ret; + end; { of function TRegExpr.ParseReg +--------------------------------------------------------------} + +function TRegExpr.ParseBranch (var flagp : integer) : PRegExprChar; +// one alternative of an | operator +// Implements the concatenation operator. + var + ret, chain, latest : PRegExprChar; + flags : integer; + begin + flagp := WORST; // Tentatively. + + ret := EmitNode (BRANCH); + chain := nil; + while (regparse^ <> #0) and (regparse^ <> '|') + and (regparse^ <> ')') do begin + latest := ParsePiece (flags); + if latest = nil then begin + Result := nil; + EXIT; + end; + flagp := flagp or flags and HASWIDTH; + if chain = nil // First piece. + then flagp := flagp or flags and SPSTART + else Tail (chain, latest); + chain := latest; + end; + if chain = nil // Loop ran zero times. + then EmitNode (NOTHING); + Result := ret; + end; { of function TRegExpr.ParseBranch +--------------------------------------------------------------} + +function TRegExpr.ParsePiece (var flagp : integer) : PRegExprChar; +// something followed by possible [*+?{] +// Note that the branching code sequences used for ? and the general cases +// of * and + and { are somewhat optimized: they use the same NOTHING node as +// both the endmarker for their branch list and the body of the last branch. +// It might seem that this node could be dispensed with entirely, but the +// endmarker role is not redundant. + function parsenum (AStart, AEnd : PRegExprChar) : TREBracesArg; + begin + Result := 0; + if AEnd - AStart + 1 > 8 then begin // prevent stupid scanning + Error (reeBRACESArgTooBig); + EXIT; + end; + while AStart <= AEnd do begin + Result := Result * 10 + (ord (AStart^) - ord ('0')); + inc (AStart); + end; + if (Result > MaxBracesArg) or (Result < 0) then begin + Error (reeBRACESArgTooBig); + EXIT; + end; + end; + + var + op : REChar; + NonGreedyOp, NonGreedyCh : boolean; //###0.940 + TheOp : TREOp; //###0.940 + NextNode : PRegExprChar; + flags : integer; + BracesMin, Bracesmax : TREBracesArg; + p, savedparse : PRegExprChar; + + procedure EmitComplexBraces (ABracesMin, ABracesMax : TREBracesArg; + ANonGreedyOp : boolean); //###0.940 + {$IFDEF ComplexBraces} + var + off : integer; + {$ENDIF} + begin + {$IFNDEF ComplexBraces} + Error (reeComplexBracesNotImplemented); + {$ELSE} + if ANonGreedyOp + then TheOp := LOOPNG + else TheOp := LOOP; + InsertOperator (LOOPENTRY, Result, REOpSz + RENextOffSz); + NextNode := EmitNode (TheOp); + if regcode <> @regdummy then begin + off := (Result + REOpSz + RENextOffSz) + - (regcode - REOpSz - RENextOffSz); // back to Atom after LOOPENTRY + PREBracesArg (regcode)^ := ABracesMin; + inc (regcode, REBracesArgSz); + PREBracesArg (regcode)^ := ABracesMax; + inc (regcode, REBracesArgSz); + PRENextOff (regcode)^ := off; + inc (regcode, RENextOffSz); + end + else inc (regsize, REBracesArgSz * 2 + RENextOffSz); + Tail (Result, NextNode); // LOOPENTRY -> LOOP + if regcode <> @regdummy then + Tail (Result + REOpSz + RENextOffSz, NextNode); // Atom -> LOOP + {$ENDIF} + end; + + procedure EmitSimpleBraces (ABracesMin, ABracesMax : TREBracesArg; + ANonGreedyOp : boolean); //###0.940 + begin + if ANonGreedyOp //###0.940 + then TheOp := BRACESNG + else TheOp := BRACES; + InsertOperator (TheOp, Result, REOpSz + RENextOffSz + REBracesArgSz * 2); + if regcode <> @regdummy then begin + PREBracesArg (Result + REOpSz + RENextOffSz)^ := ABracesMin; + PREBracesArg (Result + REOpSz + RENextOffSz + REBracesArgSz)^ := ABracesMax; + end; + end; + + begin + Result := ParseAtom (flags); + if Result = nil + then EXIT; + + op := regparse^; + if not ((op = '*') or (op = '+') or (op = '?') or (op = '{')) then begin + flagp := flags; + EXIT; + end; + if ((flags and HASWIDTH) = 0) and (op <> '?') then begin + Error (reePlusStarOperandCouldBeEmpty); + EXIT; + end; + + case op of + '*': begin + flagp := WORST or SPSTART; + NonGreedyCh := (regparse + 1)^ = '?'; //###0.940 + NonGreedyOp := NonGreedyCh or ((fCompModifiers and MaskModG) = 0); //###0.940 + if (flags and SIMPLE) = 0 then begin + if NonGreedyOp //###0.940 + then EmitComplexBraces (0, MaxBracesArg, NonGreedyOp) + else begin // Emit x* as (x&|), where & means "self". + InsertOperator (BRANCH, Result, REOpSz + RENextOffSz); // Either x + OpTail (Result, EmitNode (BACK)); // and loop + OpTail (Result, Result); // back + Tail (Result, EmitNode (BRANCH)); // or + Tail (Result, EmitNode (NOTHING)); // nil. + end + end + else begin // Simple + if NonGreedyOp //###0.940 + then TheOp := STARNG + else TheOp := STAR; + InsertOperator (TheOp, Result, REOpSz + RENextOffSz); + end; + if NonGreedyCh //###0.940 + then inc (regparse); // Skip extra char ('?') + end; { of case '*'} + '+': begin + flagp := WORST or SPSTART or HASWIDTH; + NonGreedyCh := (regparse + 1)^ = '?'; //###0.940 + NonGreedyOp := NonGreedyCh or ((fCompModifiers and MaskModG) = 0); //###0.940 + if (flags and SIMPLE) = 0 then begin + if NonGreedyOp //###0.940 + then EmitComplexBraces (1, MaxBracesArg, NonGreedyOp) + else begin // Emit x+ as x(&|), where & means "self". + NextNode := EmitNode (BRANCH); // Either + Tail (Result, NextNode); + Tail (EmitNode (BACK), Result); // loop back + Tail (NextNode, EmitNode (BRANCH)); // or + Tail (Result, EmitNode (NOTHING)); // nil. + end + end + else begin // Simple + if NonGreedyOp //###0.940 + then TheOp := PLUSNG + else TheOp := PLUS; + InsertOperator (TheOp, Result, REOpSz + RENextOffSz); + end; + if NonGreedyCh //###0.940 + then inc (regparse); // Skip extra char ('?') + end; { of case '+'} + '?': begin + flagp := WORST; + NonGreedyCh := (regparse + 1)^ = '?'; //###0.940 + NonGreedyOp := NonGreedyCh or ((fCompModifiers and MaskModG) = 0); //###0.940 + if NonGreedyOp then begin //###0.940 // We emit x?? as x{0,1}? + if (flags and SIMPLE) = 0 + then EmitComplexBraces (0, 1, NonGreedyOp) + else EmitSimpleBraces (0, 1, NonGreedyOp); + end + else begin // greedy '?' + InsertOperator (BRANCH, Result, REOpSz + RENextOffSz); // Either x + Tail (Result, EmitNode (BRANCH)); // or + NextNode := EmitNode (NOTHING); // nil. + Tail (Result, NextNode); + OpTail (Result, NextNode); + end; + if NonGreedyCh //###0.940 + then inc (regparse); // Skip extra char ('?') + end; { of case '?'} + '{': begin + savedparse := regparse; + // !!!!!!!!!!!! + // Filip Jirsak's note - what will happen, when we are at the end of regparse? + inc (regparse); + p := regparse; + while Pos (regparse^, '0123456789') > 0 // MUST appear + do inc (regparse); + if (regparse^ <> '}') and (regparse^ <> ',') or (p = regparse) then begin + regparse := savedparse; + flagp := flags; + EXIT; + end; + BracesMin := parsenum (p, regparse - 1); + if regparse^ = ',' then begin + inc (regparse); + p := regparse; + while Pos (regparse^, '0123456789') > 0 + do inc (regparse); + if regparse^ <> '}' then begin + regparse := savedparse; + EXIT; + end; + if p = regparse + then BracesMax := MaxBracesArg + else BracesMax := parsenum (p, regparse - 1); + end + else BracesMax := BracesMin; // {n} == {n,n} + if BracesMin > BracesMax then begin + Error (reeBracesMinParamGreaterMax); + EXIT; + end; + if BracesMin > 0 + then flagp := WORST; + if BracesMax > 0 + then flagp := flagp or HASWIDTH or SPSTART; + + NonGreedyCh := (regparse + 1)^ = '?'; //###0.940 + NonGreedyOp := NonGreedyCh or ((fCompModifiers and MaskModG) = 0); //###0.940 + if (flags and SIMPLE) <> 0 + then EmitSimpleBraces (BracesMin, BracesMax, NonGreedyOp) + else EmitComplexBraces (BracesMin, BracesMax, NonGreedyOp); + if NonGreedyCh //###0.940 + then inc (regparse); // Skip extra char '?' + end; { of case '{'} +// else // here we can't be + end; { of case op} + + inc (regparse); + if (regparse^ = '*') or (regparse^ = '+') or (regparse^ = '?') or (regparse^ = '{') then begin + Error (reeNestedSQP); + EXIT; + end; + end; { of function TRegExpr.ParsePiece +--------------------------------------------------------------} + +function TRegExpr.ParseAtom (var flagp : integer) : PRegExprChar; +// the lowest level +// Optimization: gobbles an entire sequence of ordinary characters so that +// it can turn them into a single node, which is smaller to store and +// faster to run. Backslashed characters are exceptions, each becoming a +// separate node; the code is simpler that way and it's not worth fixing. + var + ret : PRegExprChar; + flags : integer; + RangeBeg, RangeEnd : REChar; + CanBeRange : boolean; + len : integer; + ender : REChar; + begmodfs : PRegExprChar; + + {$IFDEF UseSetOfChar} //###0.930 + RangePCodeBeg : PRegExprChar; + RangePCodeIdx : integer; + RangeIsCI : boolean; + RangeSet : TSetOfREChar; + RangeLen : integer; + RangeChMin, RangeChMax : REChar; + {$ENDIF} + + procedure EmitExactly (ch : REChar); + begin + if (fCompModifiers and MaskModI) <> 0 + then ret := EmitNode (EXACTLYCI) + else ret := EmitNode (EXACTLY); + EmitC (ch); + EmitC (#0); + flagp := flagp or HASWIDTH or SIMPLE; + end; + + procedure EmitStr (const s : RegExprString); + var i : integer; + begin + for i := 1 to length (s) + do EmitC (s [i]); + end; + + function HexDig (ch : REChar) : integer; + begin + Result := 0; + if (ch >= 'a') and (ch <= 'f') + then ch := REChar (ord (ch) - (ord ('a') - ord ('A'))); + if (ch < '0') or (ch > 'F') or ((ch > '9') and (ch < 'A')) then begin + Error (reeBadHexDigit); + EXIT; + end; + Result := ord (ch) - ord ('0'); + if ch >= 'A' + then Result := Result - (ord ('A') - ord ('9') - 1); + end; + + function EmitRange (AOpCode : REChar) : PRegExprChar; + begin + {$IFDEF UseSetOfChar} + case AOpCode of + ANYBUTCI, ANYBUT: + Result := EmitNode (ANYBUTTINYSET); + else // ANYOFCI, ANYOF + Result := EmitNode (ANYOFTINYSET); + end; + case AOpCode of + ANYBUTCI, ANYOFCI: + RangeIsCI := True; + else // ANYBUT, ANYOF + RangeIsCI := False; + end; + RangePCodeBeg := regcode; + RangePCodeIdx := regsize; + RangeLen := 0; + RangeSet := []; + RangeChMin := #255; + RangeChMax := #0; + {$ELSE} + Result := EmitNode (AOpCode); + // ToDo: + // !!!!!!!!!!!!! Implement ANYOF[BUT]TINYSET generation for UniCode !!!!!!!!!! + {$ENDIF} + end; + +{$IFDEF UseSetOfChar} + procedure EmitRangeCPrim (b : REChar); //###0.930 + begin + if b in RangeSet + then EXIT; + inc (RangeLen); + if b < RangeChMin + then RangeChMin := b; + if b > RangeChMax + then RangeChMax := b; + Include (RangeSet, b); + end; + {$ENDIF} + + procedure EmitRangeC (b : REChar); + {$IFDEF UseSetOfChar} + var + Ch : REChar; + {$ENDIF} + begin + CanBeRange := false; + {$IFDEF UseSetOfChar} + if b <> #0 then begin + EmitRangeCPrim (b); //###0.930 + if RangeIsCI + then EmitRangeCPrim (InvertCase (b)); //###0.930 + end + else begin + {$IFDEF UseAsserts} + Assert (RangeLen > 0, 'TRegExpr.ParseAtom(subroutine EmitRangeC): empty range'); // impossible, but who knows.. + Assert (RangeChMin <= RangeChMax, 'TRegExpr.ParseAtom(subroutine EmitRangeC): RangeChMin > RangeChMax'); // impossible, but who knows.. + {$ENDIF} + if RangeLen <= TinySetLen then begin // emit "tiny set" + if regcode = @regdummy then begin + regsize := RangePCodeIdx + TinySetLen; // RangeChMin/Max !!! + EXIT; + end; + regcode := RangePCodeBeg; + for Ch := RangeChMin to RangeChMax do //###0.930 + if Ch in RangeSet then begin + regcode^ := Ch; + inc (regcode); + end; + // fill rest: + while regcode < RangePCodeBeg + TinySetLen do begin + regcode^ := RangeChMax; + inc (regcode); + end; + end + else begin + if regcode = @regdummy then begin + regsize := RangePCodeIdx + SizeOf (TSetOfREChar); + EXIT; + end; + if (RangePCodeBeg - REOpSz - RENextOffSz)^ = ANYBUTTINYSET + then RangeSet := [#0 .. #255] - RangeSet; + PREOp (RangePCodeBeg - REOpSz - RENextOffSz)^ := ANYOFFULLSET; + regcode := RangePCodeBeg; + Move (RangeSet, regcode^, SizeOf (TSetOfREChar)); + inc (regcode, SizeOf (TSetOfREChar)); + end; + end; + {$ELSE} + EmitC (b); + {$ENDIF} + end; + + procedure EmitSimpleRangeC (b : REChar); + begin + RangeBeg := b; + EmitRangeC (b); + CanBeRange := true; + end; + + procedure EmitRangeStr (const s : RegExprString); + var i : integer; + begin + for i := 1 to length (s) + do EmitRangeC (s [i]); + end; + + function UnQuoteChar (var APtr : PRegExprChar) : REChar; //###0.934 + begin + case APtr^ of + 't': Result := #$9; // tab (HT/TAB) + 'n': Result := #$a; // newline (NL) + 'r': Result := #$d; // car.return (CR) + 'f': Result := #$c; // form feed (FF) + 'a': Result := #$7; // alarm (bell) (BEL) + 'e': Result := #$1b; // escape (ESC) + 'x': begin // hex char + Result := #0; + inc (APtr); + if APtr^ = #0 then begin + Error (reeNoHexCodeAfterBSlashX); + EXIT; + end; + if APtr^ = '{' then begin // \x{nnnn} //###0.936 + REPEAT + inc (APtr); + if APtr^ = #0 then begin + Error (reeNoHexCodeAfterBSlashX); + EXIT; + end; + if APtr^ <> '}' then begin + if (Ord (Result) + ShR (SizeOf (REChar) * 8 - 4)) and $F <> 0 then begin + Error (reeHexCodeAfterBSlashXTooBig); + EXIT; + end; + Result := REChar ((Ord (Result) ShL 4) or HexDig (APtr^)); + // HexDig will cause Error if bad hex digit found + end + else BREAK; + UNTIL False; + end + else begin + Result := REChar (HexDig (APtr^)); + // HexDig will cause Error if bad hex digit found + inc (APtr); + if APtr^ = #0 then begin + Error (reeNoHexCodeAfterBSlashX); + EXIT; + end; + Result := REChar ((Ord (Result) ShL 4) or HexDig (APtr^)); + // HexDig will cause Error if bad hex digit found + end; + end; + else Result := APtr^; + end; + end; + + begin + Result := nil; + flagp := WORST; // Tentatively. + + inc (regparse); + case (regparse - 1)^ of + '^': if ((fCompModifiers and MaskModM) = 0) + or ((fLineSeparators = '') and not fLinePairedSeparatorAssigned) + then ret := EmitNode (BOL) + else ret := EmitNode (BOLML); + '$': if ((fCompModifiers and MaskModM) = 0) + or ((fLineSeparators = '') and not fLinePairedSeparatorAssigned) + then ret := EmitNode (EOL) + else ret := EmitNode (EOLML); + '.': + if (fCompModifiers and MaskModS) <> 0 then begin + ret := EmitNode (ANY); + flagp := flagp or HASWIDTH or SIMPLE; + end + else begin // not /s, so emit [^:LineSeparators:] + ret := EmitNode (ANYML); + flagp := flagp or HASWIDTH; // not so simple ;) +// ret := EmitRange (ANYBUT); +// EmitRangeStr (LineSeparators); //###0.941 +// EmitRangeStr (LinePairedSeparator); // !!! isn't correct if have to accept only paired +// EmitRangeC (#0); +// flagp := flagp or HASWIDTH or SIMPLE; + end; + '[': begin + if regparse^ = '^' then begin // Complement of range. + if (fCompModifiers and MaskModI) <> 0 + then ret := EmitRange (ANYBUTCI) + else ret := EmitRange (ANYBUT); + inc (regparse); + end + else + if (fCompModifiers and MaskModI) <> 0 + then ret := EmitRange (ANYOFCI) + else ret := EmitRange (ANYOF); + + CanBeRange := false; + + if (regparse^ = ']') then begin + EmitSimpleRangeC (regparse^); // []-a] -> ']' .. 'a' + inc (regparse); + end; + + while (regparse^ <> #0) and (regparse^ <> ']') do begin + if (regparse^ = '-') + and ((regparse + 1)^ <> #0) and ((regparse + 1)^ <> ']') + and CanBeRange then begin + inc (regparse); + RangeEnd := regparse^; + if RangeEnd = EscChar then begin + {$IFDEF UniCode} //###0.935 + if (ord ((regparse + 1)^) < 256) + and (char ((regparse + 1)^) + in ['d', 'D', 's', 'S', 'w', 'W']) then begin + {$ELSE} + if (regparse + 1)^ in ['d', 'D', 's', 'S', 'w', 'W'] then begin + {$ENDIF} + EmitRangeC ('-'); // or treat as error ?!! + CONTINUE; + end; + inc (regparse); + RangeEnd := UnQuoteChar (regparse); + end; + + // r.e.ranges extension for russian + if ((fCompModifiers and MaskModR) <> 0) + and (RangeBeg = RusRangeLoLow) and (RangeEnd = RusRangeLoHigh) then begin + EmitRangeStr (RusRangeLo); + end + else if ((fCompModifiers and MaskModR) <> 0) + and (RangeBeg = RusRangeHiLow) and (RangeEnd = RusRangeHiHigh) then begin + EmitRangeStr (RusRangeHi); + end + else if ((fCompModifiers and MaskModR) <> 0) + and (RangeBeg = RusRangeLoLow) and (RangeEnd = RusRangeHiHigh) then begin + EmitRangeStr (RusRangeLo); + EmitRangeStr (RusRangeHi); + end + else begin // standard r.e. handling + if RangeBeg > RangeEnd then begin + Error (reeInvalidRange); + EXIT; + end; + inc (RangeBeg); + EmitRangeC (RangeEnd); // prevent infinite loop if RangeEnd=$ff + while RangeBeg < RangeEnd do begin //###0.929 + EmitRangeC (RangeBeg); + inc (RangeBeg); + end; + end; + inc (regparse); + end + else begin + if regparse^ = EscChar then begin + inc (regparse); + if regparse^ = #0 then begin + Error (reeParseAtomTrailingBackSlash); + EXIT; + end; + case regparse^ of // r.e.extensions + 'd': EmitRangeStr ('0123456789'); + 'w': EmitRangeStr (WordChars); + 's': EmitRangeStr (SpaceChars); + else EmitSimpleRangeC (UnQuoteChar (regparse)); + end; { of case} + end + else EmitSimpleRangeC (regparse^); + inc (regparse); + end; + end; { of while} + EmitRangeC (#0); + if regparse^ <> ']' then begin + Error (reeUnmatchedSqBrackets); + EXIT; + end; + inc (regparse); + flagp := flagp or HASWIDTH or SIMPLE; + end; + '(': begin + if regparse^ = '?' then begin + // check for extended Perl syntax : (?..) + if (regparse + 1)^ = '#' then begin // (?#comment) + inc (regparse, 2); // find closing ')' + while (regparse^ <> #0) and (regparse^ <> ')') + do inc (regparse); + if regparse^ <> ')' then begin + Error (reeUnclosedComment); + EXIT; + end; + inc (regparse); // skip ')' + ret := EmitNode (COMMENT); // comment + end + else begin // modifiers ? + inc (regparse); // skip '?' + begmodfs := regparse; + while (regparse^ <> #0) and (regparse^ <> ')') + do inc (regparse); + if (regparse^ <> ')') + or not ParseModifiersStr (copy (begmodfs, 1, (regparse - begmodfs)), fCompModifiers) then begin + Error (reeUrecognizedModifier); + EXIT; + end; + inc (regparse); // skip ')' + ret := EmitNode (COMMENT); // comment +// Error (reeQPSBFollowsNothing); +// EXIT; + end; + end + else begin + ret := ParseReg (1, flags); + if ret = nil then begin + Result := nil; + EXIT; + end; + flagp := flagp or flags and (HASWIDTH or SPSTART); + end; + end; + #0, '|', ')': begin // Supposed to be caught earlier. + Error (reeInternalUrp); + EXIT; + end; + '?', '+', '*': begin + Error (reeQPSBFollowsNothing); + EXIT; + end; + EscChar: begin + if regparse^ = #0 then begin + Error (reeTrailingBackSlash); + EXIT; + end; + case regparse^ of // r.e.extensions + 'b': ret := EmitNode (BOUND); //###0.943 + 'B': ret := EmitNode (NOTBOUND); //###0.943 + 'A': ret := EmitNode (BOL); //###0.941 + 'Z': ret := EmitNode (EOL); //###0.941 + 'd': begin // r.e.extension - any digit ('0' .. '9') + ret := EmitNode (ANYDIGIT); + flagp := flagp or HASWIDTH or SIMPLE; + end; + 'D': begin // r.e.extension - not digit ('0' .. '9') + ret := EmitNode (NOTDIGIT); + flagp := flagp or HASWIDTH or SIMPLE; + end; + 's': begin // r.e.extension - any space char + {$IFDEF UseSetOfChar} + ret := EmitRange (ANYOF); + EmitRangeStr (SpaceChars); + EmitRangeC (#0); + {$ELSE} + ret := EmitNode (ANYSPACE); + {$ENDIF} + flagp := flagp or HASWIDTH or SIMPLE; + end; + 'S': begin // r.e.extension - not space char + {$IFDEF UseSetOfChar} + ret := EmitRange (ANYBUT); + EmitRangeStr (SpaceChars); + EmitRangeC (#0); + {$ELSE} + ret := EmitNode (NOTSPACE); + {$ENDIF} + flagp := flagp or HASWIDTH or SIMPLE; + end; + 'w': begin // r.e.extension - any english char / digit / '_' + {$IFDEF UseSetOfChar} + ret := EmitRange (ANYOF); + EmitRangeStr (WordChars); + EmitRangeC (#0); + {$ELSE} + ret := EmitNode (ANYLETTER); + {$ENDIF} + flagp := flagp or HASWIDTH or SIMPLE; + end; + 'W': begin // r.e.extension - not english char / digit / '_' + {$IFDEF UseSetOfChar} + ret := EmitRange (ANYBUT); + EmitRangeStr (WordChars); + EmitRangeC (#0); + {$ELSE} + ret := EmitNode (NOTLETTER); + {$ENDIF} + flagp := flagp or HASWIDTH or SIMPLE; + end; + '1' .. '9': begin //###0.936 + if (fCompModifiers and MaskModI) <> 0 + then ret := EmitNode (BSUBEXPCI) + else ret := EmitNode (BSUBEXP); + EmitC (REChar (ord (regparse^) - ord ('0'))); + flagp := flagp or HASWIDTH or SIMPLE; + end; + else EmitExactly (UnQuoteChar (regparse)); + end; { of case} + inc (regparse); + end; + else begin + dec (regparse); + if ((fCompModifiers and MaskModX) <> 0) and // check for eXtended syntax + ((regparse^ = '#') + or ({$IFDEF UniCode}StrScan (XIgnoredChars, regparse^) <> nil //###0.947 + {$ELSE}regparse^ in XIgnoredChars{$ENDIF})) then begin //###0.941 \x + if regparse^ = '#' then begin // Skip eXtended comment + // find comment terminator (group of \n and/or \r) + while (regparse^ <> #0) and (regparse^ <> #$d) and (regparse^ <> #$a) + do inc (regparse); + while (regparse^ = #$d) or (regparse^ = #$a) // skip comment terminator + do inc (regparse); // attempt to support different type of line separators + end + else begin // Skip the blanks! + while {$IFDEF UniCode}StrScan (XIgnoredChars, regparse^) <> nil //###0.947 + {$ELSE}regparse^ in XIgnoredChars{$ENDIF} + do inc (regparse); + end; + ret := EmitNode (COMMENT); // comment + end + else begin + len := strcspn (regparse, META); + if len <= 0 then + if regparse^ <> '{' then begin + Error (reeRarseAtomInternalDisaster); + EXIT; + end + else len := strcspn (regparse + 1, META) + 1; // bad {n,m} - compile as EXATLY + ender := (regparse + len)^; + if (len > 1) + and ((ender = '*') or (ender = '+') or (ender = '?') or (ender = '{')) + then dec (len); // Back off clear of ?+*{ operand. + flagp := flagp or HASWIDTH; + if len = 1 + then flagp := flagp or SIMPLE; + if (fCompModifiers and MaskModI) <> 0 + then ret := EmitNode (EXACTLYCI) + else ret := EmitNode (EXACTLY); + while (len > 0) + and (((fCompModifiers and MaskModX) = 0) or (regparse^ <> '#')) do begin + if ((fCompModifiers and MaskModX) = 0) or not ( //###0.941 + {$IFDEF UniCode}StrScan (XIgnoredChars, regparse^) <> nil //###0.947 + {$ELSE}regparse^ in XIgnoredChars{$ENDIF} ) + then EmitC (regparse^); + inc (regparse); + dec (len); + end; + EmitC (#0); + end; { of if not comment} + end; { of case else} + end; { of case} + + Result := ret; + end; { of function TRegExpr.ParseAtom +--------------------------------------------------------------} + +function TRegExpr.GetCompilerErrorPos : integer; + begin + Result := 0; + if (regexpbeg = nil) or (regparse = nil) + then EXIT; // not in compiling mode ? + Result := regparse - regexpbeg; + end; { of function TRegExpr.GetCompilerErrorPos +--------------------------------------------------------------} + + +{=============================================================} +{===================== Matching section ======================} +{=============================================================} + +{$IFNDEF UseSetOfChar} +function TRegExpr.StrScanCI (s : PRegExprChar; ch : REChar) : PRegExprChar; //###0.928 - now method of TRegExpr + begin + while (s^ <> #0) and (s^ <> ch) and (s^ <> InvertCase (ch)) + do inc (s); + if s^ <> #0 + then Result := s + else Result := nil; + end; { of function TRegExpr.StrScanCI +--------------------------------------------------------------} +{$ENDIF} + +function TRegExpr.regrepeat (p : PRegExprChar; AMax : integer) : integer; +// repeatedly match something simple, report how many + var + scan : PRegExprChar; + opnd : PRegExprChar; + TheMax : integer; + {Ch,} InvCh : REChar; //###0.931 + sestart, seend : PRegExprChar; //###0.936 + begin + Result := 0; + scan := reginput; + opnd := p + REOpSz + RENextOffSz; //OPERAND + TheMax := fInputEnd - scan; + if TheMax > AMax + then TheMax := AMax; + case PREOp (p)^ of + ANY: begin + // note - ANYML cannot be proceeded in regrepeat because can skip + // more than one char at once + Result := TheMax; + inc (scan, Result); + end; + EXACTLY: begin // in opnd can be only ONE char !!! +// Ch := opnd^; // store in register //###0.931 + while (Result < TheMax) and (opnd^ = scan^) do begin + inc (Result); + inc (scan); + end; + end; + EXACTLYCI: begin // in opnd can be only ONE char !!! +// Ch := opnd^; // store in register //###0.931 + while (Result < TheMax) and (opnd^ = scan^) do begin // prevent unneeded InvertCase //###0.931 + inc (Result); + inc (scan); + end; + if Result < TheMax then begin //###0.931 + InvCh := InvertCase (opnd^); // store in register + while (Result < TheMax) and + ((opnd^ = scan^) or (InvCh = scan^)) do begin + inc (Result); + inc (scan); + end; + end; + end; + BSUBEXP: begin //###0.936 + sestart := startp [ord (opnd^)]; + if sestart = nil + then EXIT; + seend := endp [ord (opnd^)]; + if seend = nil + then EXIT; + REPEAT + opnd := sestart; + while opnd < seend do begin + if (scan >= fInputEnd) or (scan^ <> opnd^) + then EXIT; + inc (scan); + inc (opnd); + end; + inc (Result); + reginput := scan; + UNTIL Result >= AMax; + end; + BSUBEXPCI: begin //###0.936 + sestart := startp [ord (opnd^)]; + if sestart = nil + then EXIT; + seend := endp [ord (opnd^)]; + if seend = nil + then EXIT; + REPEAT + opnd := sestart; + while opnd < seend do begin + if (scan >= fInputEnd) or + ((scan^ <> opnd^) and (scan^ <> InvertCase (opnd^))) + then EXIT; + inc (scan); + inc (opnd); + end; + inc (Result); + reginput := scan; + UNTIL Result >= AMax; + end; + ANYDIGIT: + while (Result < TheMax) and + (scan^ >= '0') and (scan^ <= '9') do begin + inc (Result); + inc (scan); + end; + NOTDIGIT: + while (Result < TheMax) and + ((scan^ < '0') or (scan^ > '9')) do begin + inc (Result); + inc (scan); + end; + {$IFNDEF UseSetOfChar} //###0.929 + ANYLETTER: + while (Result < TheMax) and + (Pos (scan^, fWordChars) > 0) //###0.940 + { ((scan^ >= 'a') and (scan^ <= 'z') !! I've forgotten (>='0') and (<='9') + or (scan^ >= 'A') and (scan^ <= 'Z') or (scan^ = '_'))} do begin + inc (Result); + inc (scan); + end; + NOTLETTER: + while (Result < TheMax) and + (Pos (scan^, fWordChars) <= 0) //###0.940 + { not ((scan^ >= 'a') and (scan^ <= 'z') !! I've forgotten (>='0') and (<='9') + or (scan^ >= 'A') and (scan^ <= 'Z') + or (scan^ = '_'))} do begin + inc (Result); + inc (scan); + end; + ANYSPACE: + while (Result < TheMax) and + (Pos (scan^, fSpaceChars) > 0) do begin + inc (Result); + inc (scan); + end; + NOTSPACE: + while (Result < TheMax) and + (Pos (scan^, fSpaceChars) <= 0) do begin + inc (Result); + inc (scan); + end; + {$ENDIF} + ANYOFTINYSET: begin + while (Result < TheMax) and //!!!TinySet + ((scan^ = opnd^) or (scan^ = (opnd + 1)^) + or (scan^ = (opnd + 2)^)) do begin + inc (Result); + inc (scan); + end; + end; + ANYBUTTINYSET: begin + while (Result < TheMax) and //!!!TinySet + (scan^ <> opnd^) and (scan^ <> (opnd + 1)^) + and (scan^ <> (opnd + 2)^) do begin + inc (Result); + inc (scan); + end; + end; + {$IFDEF UseSetOfChar} //###0.929 + ANYOFFULLSET: begin + while (Result < TheMax) and + (scan^ in PSetOfREChar (opnd)^) do begin + inc (Result); + inc (scan); + end; + end; + {$ELSE} + ANYOF: + while (Result < TheMax) and + (StrScan (opnd, scan^) <> nil) do begin + inc (Result); + inc (scan); + end; + ANYBUT: + while (Result < TheMax) and + (StrScan (opnd, scan^) = nil) do begin + inc (Result); + inc (scan); + end; + ANYOFCI: + while (Result < TheMax) and (StrScanCI (opnd, scan^) <> nil) do begin + inc (Result); + inc (scan); + end; + ANYBUTCI: + while (Result < TheMax) and (StrScanCI (opnd, scan^) = nil) do begin + inc (Result); + inc (scan); + end; + {$ENDIF} + else begin // Oh dear. Called inappropriately. + Result := 0; // Best compromise. + Error (reeRegRepeatCalledInappropriately); + EXIT; + end; + end; { of case} + reginput := scan; + end; { of function TRegExpr.regrepeat +--------------------------------------------------------------} + +function TRegExpr.regnext (p : PRegExprChar) : PRegExprChar; +// dig the "next" pointer out of a node + var offset : TRENextOff; + begin + if p = @regdummy then begin + Result := nil; + EXIT; + end; + offset := PRENextOff (p + REOpSz)^; //###0.933 inlined NEXT + if offset = 0 + then Result := nil + else Result := p + offset; + end; { of function TRegExpr.regnext +--------------------------------------------------------------} + +function TRegExpr.MatchPrim (prog : PRegExprChar) : boolean; +// recursively matching routine +// Conceptually the strategy is simple: check to see whether the current +// node matches, call self recursively to see whether the rest matches, +// and then act accordingly. In practice we make some effort to avoid +// recursion, in particular by going through "ordinary" nodes (that don't +// need to know whether the rest of the match failed) by a loop instead of +// by recursion. + var + scan : PRegExprChar; // Current node. + next : PRegExprChar; // Next node. + len : integer; + opnd : PRegExprChar; + no : integer; + save : PRegExprChar; + nextch : REChar; + BracesMin, BracesMax : integer; // we use integer instead of TREBracesArg for better support */+ + {$IFDEF ComplexBraces} + SavedLoopStack : array [1 .. LoopStackMax] of integer; // :(( very bad for recursion + SavedLoopStackIdx : integer; //###0.925 + {$ENDIF} + begin + Result := false; + scan := prog; + + while scan <> nil do begin + len := PRENextOff (scan + 1)^; //###0.932 inlined regnext + if len = 0 + then next := nil + else next := scan + len; + + case scan^ of + NOTBOUND, //###0.943 //!!! think about UseSetOfChar !!! + BOUND: + if (scan^ = BOUND) + xor ( + ((reginput = fInputStart) or (Pos ((reginput - 1)^, fWordChars) <= 0)) + and (reginput^ <> #0) and (Pos (reginput^, fWordChars) > 0) + or + (reginput <> fInputStart) and (Pos ((reginput - 1)^, fWordChars) > 0) + and ((reginput^ = #0) or (Pos (reginput^, fWordChars) <= 0))) + then EXIT; + + BOL: if reginput <> fInputStart + then EXIT; + EOL: if reginput^ <> #0 + then EXIT; + BOLML: if reginput > fInputStart then begin + nextch := (reginput - 1)^; + if (nextch <> fLinePairedSeparatorTail) + or ((reginput - 1) <= fInputStart) + or ((reginput - 2)^ <> fLinePairedSeparatorHead) + then begin + if (nextch = fLinePairedSeparatorHead) + and (reginput^ = fLinePairedSeparatorTail) + then EXIT; // don't stop between paired separator + if + {$IFNDEF UniCode} + not (nextch in fLineSeparatorsSet) + {$ELSE} + (pos (nextch, fLineSeparators) <= 0) + {$ENDIF} + then EXIT; + end; + end; + EOLML: if reginput^ <> #0 then begin + nextch := reginput^; + if (nextch <> fLinePairedSeparatorHead) + or ((reginput + 1)^ <> fLinePairedSeparatorTail) + then begin + if (nextch = fLinePairedSeparatorTail) + and (reginput > fInputStart) + and ((reginput - 1)^ = fLinePairedSeparatorHead) + then EXIT; // don't stop between paired separator + if + {$IFNDEF UniCode} + not (nextch in fLineSeparatorsSet) + {$ELSE} + (pos (nextch, fLineSeparators) <= 0) + {$ENDIF} + then EXIT; + end; + end; + ANY: begin + if reginput^ = #0 + then EXIT; + inc (reginput); + end; + ANYML: begin //###0.941 + if (reginput^ = #0) + or ((reginput^ = fLinePairedSeparatorHead) + and ((reginput + 1)^ = fLinePairedSeparatorTail)) + or {$IFNDEF UniCode} (reginput^ in fLineSeparatorsSet) + {$ELSE} (pos (reginput^, fLineSeparators) > 0) {$ENDIF} + then EXIT; + inc (reginput); + end; + ANYDIGIT: begin + if (reginput^ = #0) or (reginput^ < '0') or (reginput^ > '9') + then EXIT; + inc (reginput); + end; + NOTDIGIT: begin + if (reginput^ = #0) or ((reginput^ >= '0') and (reginput^ <= '9')) + then EXIT; + inc (reginput); + end; + {$IFNDEF UseSetOfChar} //###0.929 + ANYLETTER: begin + if (reginput^ = #0) or (Pos (reginput^, fWordChars) <= 0) //###0.943 + then EXIT; + inc (reginput); + end; + NOTLETTER: begin + if (reginput^ = #0) or (Pos (reginput^, fWordChars) > 0) //###0.943 + then EXIT; + inc (reginput); + end; + ANYSPACE: begin + if (reginput^ = #0) or not (Pos (reginput^, fSpaceChars) > 0) //###0.943 + then EXIT; + inc (reginput); + end; + NOTSPACE: begin + if (reginput^ = #0) or (Pos (reginput^, fSpaceChars) > 0) //###0.943 + then EXIT; + inc (reginput); + end; + {$ENDIF} + EXACTLYCI: begin + opnd := scan + REOpSz + RENextOffSz; // OPERAND + // Inline the first character, for speed. + if (opnd^ <> reginput^) + and (InvertCase (opnd^) <> reginput^) + then EXIT; + len := strlen (opnd); + //###0.929 begin + no := len; + save := reginput; + while no > 1 do begin + inc (save); + inc (opnd); + if (opnd^ <> save^) + and (InvertCase (opnd^) <> save^) + then EXIT; + dec (no); + end; + //###0.929 end + inc (reginput, len); + end; + EXACTLY: begin + opnd := scan + REOpSz + RENextOffSz; // OPERAND + // Inline the first character, for speed. + if opnd^ <> reginput^ + then EXIT; + len := strlen (opnd); + //###0.929 begin + no := len; + save := reginput; + while no > 1 do begin + inc (save); + inc (opnd); + if opnd^ <> save^ + then EXIT; + dec (no); + end; + //###0.929 end + inc (reginput, len); + end; + BSUBEXP: begin //###0.936 + no := ord ((scan + REOpSz + RENextOffSz)^); + if startp [no] = nil + then EXIT; + if endp [no] = nil + then EXIT; + save := reginput; + opnd := startp [no]; + while opnd < endp [no] do begin + if (save >= fInputEnd) or (save^ <> opnd^) + then EXIT; + inc (save); + inc (opnd); + end; + reginput := save; + end; + BSUBEXPCI: begin //###0.936 + no := ord ((scan + REOpSz + RENextOffSz)^); + if startp [no] = nil + then EXIT; + if endp [no] = nil + then EXIT; + save := reginput; + opnd := startp [no]; + while opnd < endp [no] do begin + if (save >= fInputEnd) or + ((save^ <> opnd^) and (save^ <> InvertCase (opnd^))) + then EXIT; + inc (save); + inc (opnd); + end; + reginput := save; + end; + ANYOFTINYSET: begin + if (reginput^ = #0) or //!!!TinySet + ((reginput^ <> (scan + REOpSz + RENextOffSz)^) + and (reginput^ <> (scan + REOpSz + RENextOffSz + 1)^) + and (reginput^ <> (scan + REOpSz + RENextOffSz + 2)^)) + then EXIT; + inc (reginput); + end; + ANYBUTTINYSET: begin + if (reginput^ = #0) or //!!!TinySet + (reginput^ = (scan + REOpSz + RENextOffSz)^) + or (reginput^ = (scan + REOpSz + RENextOffSz + 1)^) + or (reginput^ = (scan + REOpSz + RENextOffSz + 2)^) + then EXIT; + inc (reginput); + end; + {$IFDEF UseSetOfChar} //###0.929 + ANYOFFULLSET: begin + if (reginput^ = #0) + or not (reginput^ in PSetOfREChar (scan + REOpSz + RENextOffSz)^) + then EXIT; + inc (reginput); + end; + {$ELSE} + ANYOF: begin + if (reginput^ = #0) or (StrScan (scan + REOpSz + RENextOffSz, reginput^) = nil) + then EXIT; + inc (reginput); + end; + ANYBUT: begin + if (reginput^ = #0) or (StrScan (scan + REOpSz + RENextOffSz, reginput^) <> nil) + then EXIT; + inc (reginput); + end; + ANYOFCI: begin + if (reginput^ = #0) or (StrScanCI (scan + REOpSz + RENextOffSz, reginput^) = nil) + then EXIT; + inc (reginput); + end; + ANYBUTCI: begin + if (reginput^ = #0) or (StrScanCI (scan + REOpSz + RENextOffSz, reginput^) <> nil) + then EXIT; + inc (reginput); + end; + {$ENDIF} + NOTHING: ; + COMMENT: ; + BACK: ; + Succ (OPEN) .. TREOp (Ord (OPEN) + NSUBEXP - 1) : begin //###0.929 + no := ord (scan^) - ord (OPEN); +// save := reginput; + save := startp [no]; //###0.936 + startp [no] := reginput; //###0.936 + Result := MatchPrim (next); + if not Result //###0.936 + then startp [no] := save; +// if Result and (startp [no] = nil) +// then startp [no] := save; + // Don't set startp if some later invocation of the same + // parentheses already has. + EXIT; + end; + Succ (CLOSE) .. TREOp (Ord (CLOSE) + NSUBEXP - 1): begin //###0.929 + no := ord (scan^) - ord (CLOSE); +// save := reginput; + save := endp [no]; //###0.936 + endp [no] := reginput; //###0.936 + Result := MatchPrim (next); + if not Result //###0.936 + then endp [no] := save; +// if Result and (endp [no] = nil) +// then endp [no] := save; + // Don't set endp if some later invocation of the same + // parentheses already has. + EXIT; + end; + BRANCH: begin + if (next^ <> BRANCH) // No choice. + then next := scan + REOpSz + RENextOffSz // Avoid recursion + else begin + REPEAT + save := reginput; + Result := MatchPrim (scan + REOpSz + RENextOffSz); + if Result + then EXIT; + reginput := save; + scan := regnext (scan); + UNTIL (scan = nil) or (scan^ <> BRANCH); + EXIT; + end; + end; + {$IFDEF ComplexBraces} + LOOPENTRY: begin //###0.925 + no := LoopStackIdx; + inc (LoopStackIdx); + if LoopStackIdx > LoopStackMax then begin + Error (reeLoopStackExceeded); + EXIT; + end; + save := reginput; + LoopStack [LoopStackIdx] := 0; // init loop counter + Result := MatchPrim (next); // execute LOOP + LoopStackIdx := no; // cleanup + if Result + then EXIT; + reginput := save; + EXIT; + end; + LOOP, LOOPNG: begin //###0.940 + if LoopStackIdx <= 0 then begin + Error (reeLoopWithoutEntry); + EXIT; + end; + opnd := scan + PRENextOff (scan + REOpSz + RENextOffSz + 2 * REBracesArgSz)^; + BracesMin := PREBracesArg (scan + REOpSz + RENextOffSz)^; + BracesMax := PREBracesArg (scan + REOpSz + RENextOffSz + REBracesArgSz)^; + save := reginput; + if LoopStack [LoopStackIdx] >= BracesMin then begin // Min alredy matched - we can work + if scan^ = LOOP then begin + // greedy way - first try to max deep of greed ;) + if LoopStack [LoopStackIdx] < BracesMax then begin + inc (LoopStack [LoopStackIdx]); + no := LoopStackIdx; + Result := MatchPrim (opnd); + LoopStackIdx := no; + if Result + then EXIT; + reginput := save; + end; + dec (LoopStackIdx); // Fail. May be we are too greedy? ;) + Result := MatchPrim (next); + if not Result + then reginput := save; + EXIT; + end + else begin + // non-greedy - try just now + Result := MatchPrim (next); + if Result + then EXIT + else reginput := save; // failed - move next and try again + if LoopStack [LoopStackIdx] < BracesMax then begin + inc (LoopStack [LoopStackIdx]); + no := LoopStackIdx; + Result := MatchPrim (opnd); + LoopStackIdx := no; + if Result + then EXIT; + reginput := save; + end; + dec (LoopStackIdx); // Failed - back up + EXIT; + end + end + else begin // first match a min_cnt times + inc (LoopStack [LoopStackIdx]); + no := LoopStackIdx; + Result := MatchPrim (opnd); + LoopStackIdx := no; + if Result + then EXIT; + dec (LoopStack [LoopStackIdx]); + reginput := save; + EXIT; + end; + end; + {$ENDIF} + STAR, PLUS, BRACES, STARNG, PLUSNG, BRACESNG: begin + // Lookahead to avoid useless match attempts when we know + // what character comes next. + nextch := #0; + if next^ = EXACTLY + then nextch := (next + REOpSz + RENextOffSz)^; + BracesMax := MaxInt; // infinite loop for * and + //###0.92 + if (scan^ = STAR) or (scan^ = STARNG) + then BracesMin := 0 // STAR + else if (scan^ = PLUS) or (scan^ = PLUSNG) + then BracesMin := 1 // PLUS + else begin // BRACES + BracesMin := PREBracesArg (scan + REOpSz + RENextOffSz)^; + BracesMax := PREBracesArg (scan + REOpSz + RENextOffSz + REBracesArgSz)^; + end; + save := reginput; + opnd := scan + REOpSz + RENextOffSz; + if (scan^ = BRACES) or (scan^ = BRACESNG) + then inc (opnd, 2 * REBracesArgSz); + + if (scan^ = PLUSNG) or (scan^ = STARNG) or (scan^ = BRACESNG) then begin + // non-greedy mode + BracesMax := regrepeat (opnd, BracesMax); // don't repeat more than BracesMax + // Now we know real Max limit to move forward (for recursion 'back up') + // In some cases it can be faster to check only Min positions first, + // but after that we have to check every position separtely instead + // of fast scannig in loop. + no := BracesMin; + while no <= BracesMax do begin + reginput := save + no; + // If it could work, try it. + if (nextch = #0) or (reginput^ = nextch) then begin + {$IFDEF ComplexBraces} + System.Move (LoopStack, SavedLoopStack, SizeOf (LoopStack)); //###0.925 + SavedLoopStackIdx := LoopStackIdx; + {$ENDIF} + if MatchPrim (next) then begin + Result := true; + EXIT; + end; + {$IFDEF ComplexBraces} + System.Move (SavedLoopStack, LoopStack, SizeOf (LoopStack)); + LoopStackIdx := SavedLoopStackIdx; + {$ENDIF} + end; + inc (no); // Couldn't or didn't - move forward. + end; { of while} + EXIT; + end + else begin // greedy mode + no := regrepeat (opnd, BracesMax); // don't repeat more than max_cnt + while no >= BracesMin do begin + // If it could work, try it. + if (nextch = #0) or (reginput^ = nextch) then begin + {$IFDEF ComplexBraces} + System.Move (LoopStack, SavedLoopStack, SizeOf (LoopStack)); //###0.925 + SavedLoopStackIdx := LoopStackIdx; + {$ENDIF} + if MatchPrim (next) then begin + Result := true; + EXIT; + end; + {$IFDEF ComplexBraces} + System.Move (SavedLoopStack, LoopStack, SizeOf (LoopStack)); + LoopStackIdx := SavedLoopStackIdx; + {$ENDIF} + end; + dec (no); // Couldn't or didn't - back up. + reginput := save + no; + end; { of while} + EXIT; + end; + end; + EEND: begin + Result := true; // Success! + EXIT; + end; + else begin + Error (reeMatchPrimMemoryCorruption); + EXIT; + end; + end; { of case scan^} + scan := next; + end; { of while scan <> nil} + + // We get here only if there's trouble -- normally "case EEND" is the + // terminating point. + Error (reeMatchPrimCorruptedPointers); + end; { of function TRegExpr.MatchPrim +--------------------------------------------------------------} + +{$IFDEF UseFirstCharSet} //###0.929 +procedure TRegExpr.FillFirstCharSet (prog : PRegExprChar); + var + scan : PRegExprChar; // Current node. + next : PRegExprChar; // Next node. + opnd : PRegExprChar; + min_cnt : integer; + begin + scan := prog; + while scan <> nil do begin + next := regnext (scan); + case PREOp (scan)^ of + BSUBEXP, BSUBEXPCI: begin //###0.938 + FirstCharSet := [#0 .. #255]; // :((( we cannot + // optimize r.e. if it starts with back reference + EXIT; + end; + BOL, BOLML: ; // EXIT; //###0.937 + EOL, EOLML: begin //###0.948 was empty in 0.947, was EXIT in 0.937 + Include (FirstCharSet, #0); + if ModifierM + then begin + opnd := PRegExprChar (LineSeparators); + while opnd^ <> #0 do begin + Include (FirstCharSet, opnd^); + inc (opnd); + end; + end; + EXIT; + end; + BOUND, NOTBOUND: ; //###0.943 ?!! + ANY, ANYML: begin // we can better define ANYML !!! + FirstCharSet := [#0 .. #255]; //###0.930 + EXIT; + end; + ANYDIGIT: begin + FirstCharSet := FirstCharSet + ['0' .. '9']; + EXIT; + end; + NOTDIGIT: begin + FirstCharSet := FirstCharSet + ([#0 .. #255] - ['0' .. '9']); //###0.948 FirstCharSet was forgotten + EXIT; + end; + EXACTLYCI: begin + Include (FirstCharSet, (scan + REOpSz + RENextOffSz)^); + Include (FirstCharSet, InvertCase ((scan + REOpSz + RENextOffSz)^)); + EXIT; + end; + EXACTLY: begin + Include (FirstCharSet, (scan + REOpSz + RENextOffSz)^); + EXIT; + end; + ANYOFFULLSET: begin + FirstCharSet := FirstCharSet + PSetOfREChar (scan + REOpSz + RENextOffSz)^; + EXIT; + end; + ANYOFTINYSET: begin + //!!!TinySet + Include (FirstCharSet, (scan + REOpSz + RENextOffSz)^); + Include (FirstCharSet, (scan + REOpSz + RENextOffSz + 1)^); + Include (FirstCharSet, (scan + REOpSz + RENextOffSz + 2)^); + // ... // up to TinySetLen + EXIT; + end; + ANYBUTTINYSET: begin + //!!!TinySet + FirstCharSet := FirstCharSet + ([#0 .. #255] - [ //###0.948 FirstCharSet was forgotten + (scan + REOpSz + RENextOffSz)^, + (scan + REOpSz + RENextOffSz + 1)^, + (scan + REOpSz + RENextOffSz + 2)^]); + // ... // up to TinySetLen + EXIT; + end; + NOTHING: ; + COMMENT: ; + BACK: ; + Succ (OPEN) .. TREOp (Ord (OPEN) + NSUBEXP - 1) : begin //###0.929 + FillFirstCharSet (next); + EXIT; + end; + Succ (CLOSE) .. TREOp (Ord (CLOSE) + NSUBEXP - 1): begin //###0.929 + FillFirstCharSet (next); + EXIT; + end; + BRANCH: begin + if (PREOp (next)^ <> BRANCH) // No choice. + then next := scan + REOpSz + RENextOffSz // Avoid recursion. + else begin + REPEAT + FillFirstCharSet (scan + REOpSz + RENextOffSz); + scan := regnext (scan); + UNTIL (scan = nil) or (PREOp (scan)^ <> BRANCH); + EXIT; + end; + end; + {$IFDEF ComplexBraces} + LOOPENTRY: begin //###0.925 +// LoopStack [LoopStackIdx] := 0; //###0.940 line removed + FillFirstCharSet (next); // execute LOOP + EXIT; + end; + LOOP, LOOPNG: begin //###0.940 + opnd := scan + PRENextOff (scan + REOpSz + RENextOffSz + REBracesArgSz * 2)^; + min_cnt := PREBracesArg (scan + REOpSz + RENextOffSz)^; + FillFirstCharSet (opnd); + if min_cnt = 0 + then FillFirstCharSet (next); + EXIT; + end; + {$ENDIF} + STAR, STARNG: //###0.940 + FillFirstCharSet (scan + REOpSz + RENextOffSz); + PLUS, PLUSNG: begin //###0.940 + FillFirstCharSet (scan + REOpSz + RENextOffSz); + EXIT; + end; + BRACES, BRACESNG: begin //###0.940 + opnd := scan + REOpSz + RENextOffSz + REBracesArgSz * 2; + min_cnt := PREBracesArg (scan + REOpSz + RENextOffSz)^; // BRACES + FillFirstCharSet (opnd); + if min_cnt > 0 + then EXIT; + end; + EEND: begin + FirstCharSet := [#0 .. #255]; //###0.948 + EXIT; + end; + else begin + Error (reeMatchPrimMemoryCorruption); + EXIT; + end; + end; { of case scan^} + scan := next; + end; { of while scan <> nil} + end; { of procedure FillFirstCharSet +--------------------------------------------------------------} +{$ENDIF} + +function TRegExpr.Exec (const AInputString : RegExprString) : boolean; + begin + InputString := AInputString; + Result := ExecPrim (1); + end; { of function TRegExpr.Exec +--------------------------------------------------------------} + +{$IFDEF OverMeth} +{$IFNDEF FPC} +function TRegExpr.Exec : boolean; + begin + Result := ExecPrim (1); + end; { of function TRegExpr.Exec +--------------------------------------------------------------} +{$ENDIF} +function TRegExpr.Exec (AOffset: integer) : boolean; + begin + Result := ExecPrim (AOffset); + end; { of function TRegExpr.Exec +--------------------------------------------------------------} +{$ENDIF} + +function TRegExpr.ExecPos (AOffset: integer {$IFDEF DefParam}= 1{$ENDIF}) : boolean; + begin + Result := ExecPrim (AOffset); + end; { of function TRegExpr.ExecPos +--------------------------------------------------------------} + +function TRegExpr.ExecPrim (AOffset: integer) : boolean; + procedure ClearMatchs; + // Clears matchs array + var i : integer; + begin + for i := 0 to NSUBEXP - 1 do begin + startp [i] := nil; + endp [i] := nil; + end; + end; { of procedure ClearMatchs; +..............................................................} + function RegMatch (str : PRegExprChar) : boolean; + // try match at specific point + begin + //###0.949 removed clearing of start\endp + reginput := str; + Result := MatchPrim (programm + REOpSz); + if Result then begin + startp [0] := str; + endp [0] := reginput; + end; + end; { of function RegMatch +..............................................................} + var + s : PRegExprChar; + StartPtr: PRegExprChar; + InputLen : integer; + begin + Result := false; // Be paranoid... + + ClearMatchs; //###0.949 + // ensure that Match cleared either if optimization tricks or some error + // will lead to leaving ExecPrim without actual search. That is + // importent for ExecNext logic and so on. + + if not IsProgrammOk //###0.929 + then EXIT; + + // Check InputString presence + if not Assigned (fInputString) then begin + Error (reeNoInpitStringSpecified); + EXIT; + end; + + InputLen := length (fInputString); + + //Check that the start position is not negative + if AOffset < 1 then begin + Error (reeOffsetMustBeGreaterThen0); + EXIT; + end; + // Check that the start position is not longer than the line + // If so then exit with nothing found + if AOffset > (InputLen + 1) // for matching empty string after last char. + then EXIT; + + StartPtr := fInputString + AOffset - 1; + + // If there is a "must appear" string, look for it. + if regmust <> nil then begin + s := StartPtr; + REPEAT + s := StrScan (s, regmust [0]); + if s <> nil then begin + if StrLComp (s, regmust, regmlen) = 0 + then BREAK; // Found it. + inc (s); + end; + UNTIL s = nil; + if s = nil // Not present. + then EXIT; + end; + + // Mark beginning of line for ^ . + fInputStart := fInputString; + + // Pointer to end of input stream - for + // pascal-style string processing (may include #0) + fInputEnd := fInputString + InputLen; + + {$IFDEF ComplexBraces} + // no loops started + LoopStackIdx := 0; //###0.925 + {$ENDIF} + + // Simplest case: anchored match need be tried only once. + if reganch <> #0 then begin + Result := RegMatch (StartPtr); + EXIT; + end; + + // Messy cases: unanchored match. + s := StartPtr; + if regstart <> #0 then // We know what char it must start with. + REPEAT + s := StrScan (s, regstart); + if s <> nil then begin + Result := RegMatch (s); + if Result + then EXIT + else ClearMatchs; //###0.949 + inc (s); + end; + UNTIL s = nil + else begin // We don't - general case. + repeat //###0.948 + {$IFDEF UseFirstCharSet} + if s^ in FirstCharSet + then Result := RegMatch (s); + {$ELSE} + Result := RegMatch (s); + {$ENDIF} + if Result or (s^ = #0) // Exit on a match or after testing the end-of-string. + then EXIT + else ClearMatchs; //###0.949 + inc (s); + until false; +(* optimized and fixed by Martin Fuller - empty strings + were not allowed to pass thru in UseFirstCharSet mode + {$IFDEF UseFirstCharSet} //###0.929 + while s^ <> #0 do begin + if s^ in FirstCharSet + then Result := RegMatch (s); + if Result + then EXIT; + inc (s); + end; + {$ELSE} + REPEAT + Result := RegMatch (s); + if Result + then EXIT; + inc (s); + UNTIL s^ = #0; + {$ENDIF} +*) + end; + // Failure + end; { of function TRegExpr.ExecPrim +--------------------------------------------------------------} + +function TRegExpr.ExecNext : boolean; + var offset : integer; + begin + Result := false; + if not Assigned (startp[0]) or not Assigned (endp[0]) then begin + Error (reeExecNextWithoutExec); + EXIT; + end; +// Offset := MatchPos [0] + MatchLen [0]; +// if MatchLen [0] = 0 + Offset := endp [0] - fInputString + 1; //###0.929 + if endp [0] = startp [0] //###0.929 + then inc (Offset); // prevent infinite looping if empty string match r.e. + Result := ExecPrim (Offset); + end; { of function TRegExpr.ExecNext +--------------------------------------------------------------} + +function TRegExpr.GetInputString : RegExprString; + begin + if not Assigned (fInputString) then begin + Error (reeGetInputStringWithoutInputString); + EXIT; + end; + Result := fInputString; + end; { of function TRegExpr.GetInputString +--------------------------------------------------------------} + +procedure TRegExpr.SetInputString (const AInputString : RegExprString); + var + Len : integer; + i : integer; + begin + // clear Match* - before next Exec* call it's undefined + for i := 0 to NSUBEXP - 1 do begin + startp [i] := nil; + endp [i] := nil; + end; + + // need reallocation of input string buffer ? + Len := length (AInputString); + if Assigned (fInputString) and (Length (fInputString) <> Len) then begin + FreeMem (fInputString); + fInputString := nil; + end; + // buffer [re]allocation + if not Assigned (fInputString) + then GetMem (fInputString, (Len + 1) * SizeOf (REChar)); + + // copy input string into buffer + {$IFDEF UniCode} + StrPCopy (fInputString, Copy (AInputString, 1, Len)); //###0.927 + {$ELSE} + StrLCopy (fInputString, PRegExprChar (AInputString), Len); + {$ENDIF} + + { + fInputString : string; + fInputStart, fInputEnd : PRegExprChar; + + SetInputString: + fInputString := AInputString; + UniqueString (fInputString); + fInputStart := PChar (fInputString); + Len := length (fInputString); + fInputEnd := PRegExprChar (integer (fInputStart) + Len); ?? + !! startp/endp âñå ðàâíî áóäåò îïàñíî èñïîëüçîâàòü ? + } + end; { of procedure TRegExpr.SetInputString +--------------------------------------------------------------} + +procedure TRegExpr.SetLineSeparators (const AStr : RegExprString); + begin + if AStr <> fLineSeparators then begin + fLineSeparators := AStr; + InvalidateProgramm; + end; + end; { of procedure TRegExpr.SetLineSeparators +--------------------------------------------------------------} + +procedure TRegExpr.SetLinePairedSeparator (const AStr : RegExprString); + begin + if length (AStr) = 2 then begin + if AStr [1] = AStr [2] then begin + // it's impossible for our 'one-point' checking to support + // two chars separator for identical chars + Error (reeBadLinePairedSeparator); + EXIT; + end; + if not fLinePairedSeparatorAssigned + or (AStr [1] <> fLinePairedSeparatorHead) + or (AStr [2] <> fLinePairedSeparatorTail) then begin + fLinePairedSeparatorAssigned := true; + fLinePairedSeparatorHead := AStr [1]; + fLinePairedSeparatorTail := AStr [2]; + InvalidateProgramm; + end; + end + else if length (AStr) = 0 then begin + if fLinePairedSeparatorAssigned then begin + fLinePairedSeparatorAssigned := false; + InvalidateProgramm; + end; + end + else Error (reeBadLinePairedSeparator); + end; { of procedure TRegExpr.SetLinePairedSeparator +--------------------------------------------------------------} + +function TRegExpr.GetLinePairedSeparator : RegExprString; + begin + if fLinePairedSeparatorAssigned then begin + {$IFDEF UniCode} + // Here is some UniCode 'magic' + // If You do know better decision to concatenate + // two WideChars, please, let me know! + Result := fLinePairedSeparatorHead; //###0.947 + Result := Result + fLinePairedSeparatorTail; + {$ELSE} + Result := fLinePairedSeparatorHead + fLinePairedSeparatorTail; + {$ENDIF} + end + else Result := ''; + end; { of function TRegExpr.GetLinePairedSeparator +--------------------------------------------------------------} + +function TRegExpr.Substitute (const ATemplate : RegExprString) : RegExprString; +// perform substitutions after a regexp match +// completely rewritten in 0.929 + var + TemplateLen : integer; + TemplateBeg, TemplateEnd : PRegExprChar; + p, p0, ResultPtr : PRegExprChar; + ResultLen : integer; + n : integer; + Ch : REChar; + function ParseVarName (var APtr : PRegExprChar) : integer; + // extract name of variable (digits, may be enclosed with + // curly braces) from APtr^, uses TemplateEnd !!! + const + Digits = ['0' .. '9']; + var + p : PRegExprChar; + Delimited : boolean; + begin + Result := 0; + p := APtr; + Delimited := (p < TemplateEnd) and (p^ = '{'); + if Delimited + then inc (p); // skip left curly brace + if (p < TemplateEnd) and (p^ = '&') + then inc (p) // this is '$&' or '${&}' + else + while (p < TemplateEnd) and + {$IFDEF UniCode} //###0.935 + (ord (p^) < 256) and (char (p^) in Digits) + {$ELSE} + (p^ in Digits) + {$ENDIF} + do begin + Result := Result * 10 + (ord (p^) - ord ('0')); //###0.939 + inc (p); + end; + if Delimited then + if (p < TemplateEnd) and (p^ = '}') + then inc (p) // skip right curly brace + else p := APtr; // isn't properly terminated + if p = APtr + then Result := -1; // no valid digits found or no right curly brace + APtr := p; + end; + begin + // Check programm and input string + if not IsProgrammOk + then EXIT; + if not Assigned (fInputString) then begin + Error (reeNoInpitStringSpecified); + EXIT; + end; + // Prepare for working + TemplateLen := length (ATemplate); + if TemplateLen = 0 then begin // prevent nil pointers + Result := ''; + EXIT; + end; + TemplateBeg := pointer (ATemplate); + TemplateEnd := TemplateBeg + TemplateLen; + // Count result length for speed optimization. + ResultLen := 0; + p := TemplateBeg; + while p < TemplateEnd do begin + Ch := p^; + inc (p); + if Ch = '$' + then n := ParseVarName (p) + else n := -1; + if n >= 0 then begin + if (n < NSUBEXP) and Assigned (startp [n]) and Assigned (endp [n]) + then inc (ResultLen, endp [n] - startp [n]); + end + else begin + if (Ch = EscChar) and (p < TemplateEnd) + then inc (p); // quoted or special char followed + inc (ResultLen); + end; + end; + // Get memory. We do it once and it significant speed up work ! + if ResultLen = 0 then begin + Result := ''; + EXIT; + end; + SetString (Result, nil, ResultLen); + // Fill Result + ResultPtr := pointer (Result); + p := TemplateBeg; + while p < TemplateEnd do begin + Ch := p^; + inc (p); + if Ch = '$' + then n := ParseVarName (p) + else n := -1; + if n >= 0 then begin + p0 := startp [n]; + if (n < NSUBEXP) and Assigned (p0) and Assigned (endp [n]) then + while p0 < endp [n] do begin + ResultPtr^ := p0^; + inc (ResultPtr); + inc (p0); + end; + end + else begin + if (Ch = EscChar) and (p < TemplateEnd) then begin // quoted or special char followed + Ch := p^; + inc (p); + end; + ResultPtr^ := Ch; + inc (ResultPtr); + end; + end; + end; { of function TRegExpr.Substitute +--------------------------------------------------------------} + +procedure TRegExpr.Split (AInputStr : RegExprString; APieces : TStrings); + var PrevPos : integer; + begin + PrevPos := 1; + if Exec (AInputStr) then + REPEAT + APieces.Add (System.Copy (AInputStr, PrevPos, MatchPos [0] - PrevPos)); + PrevPos := MatchPos [0] + MatchLen [0]; + UNTIL not ExecNext; + APieces.Add (System.Copy (AInputStr, PrevPos, MaxInt)); // Tail + end; { of procedure TRegExpr.Split +--------------------------------------------------------------} + +function TRegExpr.Replace (AInputStr : RegExprString; const AReplaceStr : RegExprString; + AUseSubstitution : boolean{$IFDEF DefParam}= False{$ENDIF}) : RegExprString; + var + PrevPos : integer; + begin + Result := ''; + PrevPos := 1; + if Exec (AInputStr) then + REPEAT + Result := Result + System.Copy (AInputStr, PrevPos, + MatchPos [0] - PrevPos); + if AUseSubstitution //###0.946 + then Result := Result + Substitute (AReplaceStr) + else Result := Result + AReplaceStr; + PrevPos := MatchPos [0] + MatchLen [0]; + UNTIL not ExecNext; + Result := Result + System.Copy (AInputStr, PrevPos, MaxInt); // Tail + end; { of function TRegExpr.Replace +--------------------------------------------------------------} + +function TRegExpr.ReplaceEx (AInputStr : RegExprString; + AReplaceFunc : TRegExprReplaceFunction) + : RegExprString; + var + PrevPos : integer; + begin + Result := ''; + PrevPos := 1; + if Exec (AInputStr) then + REPEAT + Result := Result + System.Copy (AInputStr, PrevPos, + MatchPos [0] - PrevPos) + + AReplaceFunc (Self); + PrevPos := MatchPos [0] + MatchLen [0]; + UNTIL not ExecNext; + Result := Result + System.Copy (AInputStr, PrevPos, MaxInt); // Tail + end; { of function TRegExpr.ReplaceEx +--------------------------------------------------------------} + + +{$IFDEF OverMeth} +function TRegExpr.Replace (AInputStr : RegExprString; + AReplaceFunc : TRegExprReplaceFunction) + : RegExprString; + begin + ReplaceEx (AInputStr, AReplaceFunc); + end; { of function TRegExpr.Replace +--------------------------------------------------------------} +{$ENDIF} + +{=============================================================} +{====================== Debug section ========================} +{=============================================================} + +{$IFDEF RegExpPCodeDump} +function TRegExpr.DumpOp (op : TREOp) : RegExprString; +// printable representation of opcode + begin + case op of + BOL: Result := 'BOL'; + EOL: Result := 'EOL'; + BOLML: Result := 'BOLML'; + EOLML: Result := 'EOLML'; + BOUND: Result := 'BOUND'; //###0.943 + NOTBOUND: Result := 'NOTBOUND'; //###0.943 + ANY: Result := 'ANY'; + ANYML: Result := 'ANYML'; //###0.941 + ANYLETTER: Result := 'ANYLETTER'; + NOTLETTER: Result := 'NOTLETTER'; + ANYDIGIT: Result := 'ANYDIGIT'; + NOTDIGIT: Result := 'NOTDIGIT'; + ANYSPACE: Result := 'ANYSPACE'; + NOTSPACE: Result := 'NOTSPACE'; + ANYOF: Result := 'ANYOF'; + ANYBUT: Result := 'ANYBUT'; + ANYOFCI: Result := 'ANYOF/CI'; + ANYBUTCI: Result := 'ANYBUT/CI'; + BRANCH: Result := 'BRANCH'; + EXACTLY: Result := 'EXACTLY'; + EXACTLYCI: Result := 'EXACTLY/CI'; + NOTHING: Result := 'NOTHING'; + COMMENT: Result := 'COMMENT'; + BACK: Result := 'BACK'; + EEND: Result := 'END'; + BSUBEXP: Result := 'BSUBEXP'; + BSUBEXPCI: Result := 'BSUBEXP/CI'; + Succ (OPEN) .. TREOp (Ord (OPEN) + NSUBEXP - 1): //###0.929 + Result := Format ('OPEN[%d]', [ord (op) - ord (OPEN)]); + Succ (CLOSE) .. TREOp (Ord (CLOSE) + NSUBEXP - 1): //###0.929 + Result := Format ('CLOSE[%d]', [ord (op) - ord (CLOSE)]); + STAR: Result := 'STAR'; + PLUS: Result := 'PLUS'; + BRACES: Result := 'BRACES'; + {$IFDEF ComplexBraces} + LOOPENTRY: Result := 'LOOPENTRY'; //###0.925 + LOOP: Result := 'LOOP'; //###0.925 + LOOPNG: Result := 'LOOPNG'; //###0.940 + {$ENDIF} + ANYOFTINYSET: Result:= 'ANYOFTINYSET'; + ANYBUTTINYSET:Result:= 'ANYBUTTINYSET'; + {$IFDEF UseSetOfChar} //###0.929 + ANYOFFULLSET: Result:= 'ANYOFFULLSET'; + {$ENDIF} + STARNG: Result := 'STARNG'; //###0.940 + PLUSNG: Result := 'PLUSNG'; //###0.940 + BRACESNG: Result := 'BRACESNG'; //###0.940 + else Error (reeDumpCorruptedOpcode); + end; {of case op} + Result := ':' + Result; + end; { of function TRegExpr.DumpOp +--------------------------------------------------------------} + +function TRegExpr.Dump : RegExprString; +// dump a regexp in vaguely comprehensible form + var + s : PRegExprChar; + op : TREOp; // Arbitrary non-END op. + next : PRegExprChar; + i : integer; + Diff : integer; +{$IFDEF UseSetOfChar} //###0.929 + Ch : REChar; +{$ENDIF} + begin + if not IsProgrammOk //###0.929 + then EXIT; + + op := EXACTLY; + Result := ''; + s := programm + REOpSz; + while op <> EEND do begin // While that wasn't END last time... + op := s^; + Result := Result + Format ('%2d%s', [s - programm, DumpOp (s^)]); // Where, what. + next := regnext (s); + if next = nil // Next ptr. + then Result := Result + ' (0)' + else begin + if next > s //###0.948 PWideChar subtraction workaround (see comments in Tail method for details) + then Diff := next - s + else Diff := - (s - next); + Result := Result + Format (' (%d) ', [(s - programm) + Diff]); + end; + inc (s, REOpSz + RENextOffSz); + if (op = ANYOF) or (op = ANYOFCI) or (op = ANYBUT) or (op = ANYBUTCI) + or (op = EXACTLY) or (op = EXACTLYCI) then begin + // Literal string, where present. + while s^ <> #0 do begin + Result := Result + s^; + inc (s); + end; + inc (s); + end; + if (op = ANYOFTINYSET) or (op = ANYBUTTINYSET) then begin + for i := 1 to TinySetLen do begin + Result := Result + s^; + inc (s); + end; + end; + if (op = BSUBEXP) or (op = BSUBEXPCI) then begin + Result := Result + ' \' + IntToStr (Ord (s^)); + inc (s); + end; + {$IFDEF UseSetOfChar} //###0.929 + if op = ANYOFFULLSET then begin + for Ch := #0 to #255 do + if Ch in PSetOfREChar (s)^ then + if Ch < ' ' + then Result := Result + '#' + IntToStr (Ord (Ch)) //###0.936 + else Result := Result + Ch; + inc (s, SizeOf (TSetOfREChar)); + end; + {$ENDIF} + if (op = BRACES) or (op = BRACESNG) then begin //###0.941 + // show min/max argument of BRACES operator + Result := Result + Format ('{%d,%d}', [PREBracesArg (s)^, PREBracesArg (s + REBracesArgSz)^]); + inc (s, REBracesArgSz * 2); + end; + {$IFDEF ComplexBraces} + if (op = LOOP) or (op = LOOPNG) then begin //###0.940 + Result := Result + Format (' -> (%d) {%d,%d}', [ + (s - programm - (REOpSz + RENextOffSz)) + PRENextOff (s + 2 * REBracesArgSz)^, + PREBracesArg (s)^, PREBracesArg (s + REBracesArgSz)^]); + inc (s, 2 * REBracesArgSz + RENextOffSz); + end; + {$ENDIF} + Result := Result + #$d#$a; + end; { of while} + + // Header fields of interest. + + if regstart <> #0 + then Result := Result + 'start ' + regstart; + if reganch <> #0 + then Result := Result + 'anchored '; + if regmust <> nil + then Result := Result + 'must have ' + regmust; + {$IFDEF UseFirstCharSet} //###0.929 + Result := Result + #$d#$a'FirstCharSet:'; + for Ch := #0 to #255 do + if Ch in FirstCharSet + then begin + if Ch < ' ' + then Result := Result + '#' + IntToStr(Ord(Ch)) //###0.948 + else Result := Result + Ch; + end; + {$ENDIF} + Result := Result + #$d#$a; + end; { of function TRegExpr.Dump +--------------------------------------------------------------} +{$ENDIF} + +{$IFDEF reRealExceptionAddr} +{$OPTIMIZATION ON} +// ReturnAddr works correctly only if compiler optimization is ON +// I placed this method at very end of unit because there are no +// way to restore compiler optimization flag ... +{$ENDIF} +procedure TRegExpr.Error (AErrorID : integer); +{$IFDEF reRealExceptionAddr} + function ReturnAddr : pointer; //###0.938 + asm + mov eax,[ebp+4] + end; +{$ENDIF} + var + e : ERegExpr; + begin + fLastError := AErrorID; // dummy stub - useless because will raise exception + if AErrorID < 1000 // compilation error ? + then e := ERegExpr.Create (ErrorMsg (AErrorID) // yes - show error pos + + ' (pos ' + IntToStr (CompilerErrorPos) + ')') + else e := ERegExpr.Create (ErrorMsg (AErrorID)); + e.ErrorCode := AErrorID; + e.CompilerErrorPos := CompilerErrorPos; + raise e + {$IFDEF reRealExceptionAddr} + At ReturnAddr; //###0.938 + {$ENDIF} + end; { of procedure TRegExpr.Error +--------------------------------------------------------------} + +(* + PCode persistence: + FirstCharSet + programm, regsize + regstart // -> programm + reganch // -> programm + regmust, regmlen // -> programm + fExprIsCompiled +*) + +// be carefull - placed here code will be always compiled with +// compiler optimization flag + +{$IFDEF FPC} +initialization + RegExprInvertCaseFunction := TRegExpr.InvertCaseFunction; + +{$ENDIF} +end. + diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.ddp b/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.ddp differ diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.dfm b/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.dfm new file mode 100644 index 0000000..31a1551 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.dfm @@ -0,0 +1,16 @@ +object EDI_Inventary: TEDI_Inventary + OldCreateOrder = True + SessionManager = dmServer.SessionManager + ServiceSchema = dmEDIInventary.schEDIInventary + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 295 + Width = 296 + object DABINAdapter: TDABINAdapter + Left = 64 + Top = 32 + end +end diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.pas b/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.pas new file mode 100644 index 0000000..4c9f420 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/EDI_Inventary_Impl.pas @@ -0,0 +1,139 @@ +unit EDI_Inventary_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TEDI_Inventary } + TEDI_Inventary = class(TDARemoteService, IEDI_Inventary) + DABINAdapter: TDABINAdapter; + private + procedure InsertarLog(OK : Boolean; Error_msg : String = ''); + protected + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; + const FicheroCANT: String; out MsgError: String): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, + JclFileUtils, DateUtils, EDI_Log_Impl, uDataModuleEDI_Inventary; + +procedure Create_EDI_Inventary(out anInstance : IUnknown); +begin + anInstance := TEDI_Inventary.Create(NIL); +end; + +{ EDI_Inventary } +{ TEDI_Inventary } + +function TEDI_Inventary.CargarFicheroEDI(const FicheroCAB, FicheroLIN, + FicheroCANT: String; out MsgError: String): Boolean; +var + ADirEntrada : String; + ADirTemp : String; + NumRegNuevos : Integer; + + procedure GuardarFicheros; + var + AAlmacen : String; + ADate : String; + begin + DateTimeToString(ADate, 'yyyymmddhhnn', Now); + AAlmacen := PathAddSeparator(dmServer.FDirAlmacen); + AAlmacen := PathAddSeparator(AAlmacen + ADate); + if not DirectoryExists(AAlmacen) then + ForceDirectories(AAlmacen); + FileMove(ADirTemp + FicheroCAB, AAlmacen + FicheroCAB); + FileMove(ADirTemp + FicheroLIN, AAlmacen + FicheroLIN); + FileMove(ADirTemp + FicheroCANT, AAlmacen + FicheroCANT); + DeleteDirectory(ADirTemp, False); + end; + +begin + Result := False; + + // Hay que comprobar que existen los ficheros. + ADirEntrada := PathAddSeparator(dmServer.FDirEntrada); + + if not FileExists(ADirEntrada + FicheroCAB) or + not FileExists(ADirEntrada + FicheroLIN) or + not FileExists(ADirEntrada + FicheroCANT) then + begin + MsgError := 'No hay ficheros de datos'; + InsertarLog(False, MsgError + ' (CargarFicheroEDI1 INV)'); + end + else begin + + // Muevo los ficheros de carga a un directorio temporal + ADirTemp := PathAddSeparator(ADirEntrada + GetTempDirectory(ADirEntrada)); + try + if not DirectoryExists(ADirTemp) then + ForceDirectories(ADirTemp); + FileMove(ADirEntrada + FicheroCAB, ADirTemp + FicheroCAB); + FileMove(ADirEntrada + FicheroLIN, ADirTemp + FicheroLIN); + FileMove(ADirEntrada + FicheroCANT, ADirTemp + FicheroCANT); + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI2 INV)'); + Exit; + end; + end; + + try + try + dmEDIInventary.CargarFicheros (ADirTemp + FicheroCAB, ADirTemp + FicheroLIN, ADirTemp + FicheroCANT, NumRegNuevos); + if NumRegNuevos > 0 then + InsertarLog(True, Format('Se han cargado %d registros de inventario nuevos', [NumRegNuevos])) + else + InsertarLog(True, 'El fichero se ha cargado pero no hay registros de inventario nuevos'); + Result := True; + finally + GuardarFicheros; + dmServer.BorrarFicherosDeCargaAntiguos; + end; + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI3 INV)'); + end; + end; + end; +end; + +procedure TEDI_Inventary.InsertarLog(OK: Boolean; Error_msg: String); +var + LogService : IEDI_Log; +begin + LogService := EDI_Log_Impl.TEDI_Log.Create(Self); + try + LogService.InsertarLog(Now, 'INVRPT', OK, Error_msg); + finally + LogService := nil; + end; +end; + +initialization + TROClassFactory.Create('EDI_Inventary', Create_EDI_Inventary, TEDI_Inventary_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/schEDIInventaryClient_Intf.pas b/2.1.0/Source/Servidor/Services/EDI_Inventary/schEDIInventaryClient_Intf.pas new file mode 100644 index 0000000..8903964 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/schEDIInventaryClient_Intf.pas @@ -0,0 +1,742 @@ +unit schEDIInventaryClient_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_RDX_CANTINV = '{D890DD46-1103-4942-83FC-8BE8479D1101}'; + RID_RDX_LININV = '{B0D6E128-0438-4CA2-81F9-0893BE9A9A21}'; + RID_RDX_CABINV = '{21FBA86D-243E-4A6E-AC7D-DB040E6AA070}'; + + { Data table names } + nme_RDX_CANTINV = 'RDX_CANTINV'; + nme_RDX_LININV = 'RDX_LININV'; + nme_RDX_CABINV = 'RDX_CABINV'; + + { RDX_CANTINV fields } + fld_RDX_CANTINVNUMDOC = 'NUMDOC'; + fld_RDX_CANTINVNUMLIN = 'NUMLIN'; + fld_RDX_CANTINVNUMCANT = 'NUMCANT'; + fld_RDX_CANTINVTIPOCANT = 'TIPOCANT'; + fld_RDX_CANTINVCANTIDAD = 'CANTIDAD'; + fld_RDX_CANTINVCENTRO = 'CENTRO'; + fld_RDX_CANTINVTMOV = 'TMOV'; + fld_RDX_CANTINVFACT = 'FACT'; + fld_RDX_CANTINVDEPTO = 'DEPTO'; + fld_RDX_CANTINVIDVEN = 'IDVEN'; + + { RDX_CANTINV field indexes } + idx_RDX_CANTINVNUMDOC = 0; + idx_RDX_CANTINVNUMLIN = 1; + idx_RDX_CANTINVNUMCANT = 2; + idx_RDX_CANTINVTIPOCANT = 3; + idx_RDX_CANTINVCANTIDAD = 4; + idx_RDX_CANTINVCENTRO = 5; + idx_RDX_CANTINVTMOV = 6; + idx_RDX_CANTINVFACT = 7; + idx_RDX_CANTINVDEPTO = 8; + idx_RDX_CANTINVIDVEN = 9; + + { RDX_LININV fields } + fld_RDX_LININVNUMDOC = 'NUMDOC'; + fld_RDX_LININVNUMLIN = 'NUMLIN'; + fld_RDX_LININVCODART = 'CODART'; + fld_RDX_LININVFAMILIA = 'FAMILIA'; + fld_RDX_LININVBARRA = 'BARRA'; + fld_RDX_LININVTALLA = 'TALLA'; + fld_RDX_LININVMARCA = 'MARCA'; + fld_RDX_LININVTAMANO = 'TAMANO'; + fld_RDX_LININVSERIE = 'SERIE'; + fld_RDX_LININVCOLOR = 'COLOR'; + fld_RDX_LININVMODELO = 'MODELO'; + fld_RDX_LININVDIBUJO = 'DIBUJO'; + fld_RDX_LININVDESCRIP = 'DESCRIP'; + + { RDX_LININV field indexes } + idx_RDX_LININVNUMDOC = 0; + idx_RDX_LININVNUMLIN = 1; + idx_RDX_LININVCODART = 2; + idx_RDX_LININVFAMILIA = 3; + idx_RDX_LININVBARRA = 4; + idx_RDX_LININVTALLA = 5; + idx_RDX_LININVMARCA = 6; + idx_RDX_LININVTAMANO = 7; + idx_RDX_LININVSERIE = 8; + idx_RDX_LININVCOLOR = 9; + idx_RDX_LININVMODELO = 10; + idx_RDX_LININVDIBUJO = 11; + idx_RDX_LININVDESCRIP = 12; + + { RDX_CABINV fields } + fld_RDX_CABINVNUMDOC = 'NUMDOC'; + fld_RDX_CABINVTIPODOC = 'TIPODOC'; + fld_RDX_CABINVTIPOLIQ = 'TIPOLIQ'; + fld_RDX_CABINVFECHA = 'FECHA'; + fld_RDX_CABINVFECHALIQ = 'FECHALIQ'; + fld_RDX_CABINVEMISOR = 'EMISOR'; + fld_RDX_CABINVRECEPTOR = 'RECEPTOR'; + fld_RDX_CABINVDPTO = 'DPTO'; + fld_RDX_CABINVCENTRO = 'CENTRO'; + fld_RDX_CABINVFECHA_CARGA = 'FECHA_CARGA'; + + { RDX_CABINV field indexes } + idx_RDX_CABINVNUMDOC = 0; + idx_RDX_CABINVTIPODOC = 1; + idx_RDX_CABINVTIPOLIQ = 2; + idx_RDX_CABINVFECHA = 3; + idx_RDX_CABINVFECHALIQ = 4; + idx_RDX_CABINVEMISOR = 5; + idx_RDX_CABINVRECEPTOR = 6; + idx_RDX_CABINVDPTO = 7; + idx_RDX_CABINVCENTRO = 8; + idx_RDX_CABINVFECHA_CARGA = 9; + +type + { IRDX_CANTINV } + IRDX_CANTINV = interface(IDAStronglyTypedDataTable) + ['{2D19DA25-B122-468C-BB44-9B28F4025A0B}'] + { Property getters and setters } + function GetNUMDOCValue: String; + procedure SetNUMDOCValue(const aValue: String); + function GetNUMLINValue: Float; + procedure SetNUMLINValue(const aValue: Float); + function GetNUMCANTValue: Float; + procedure SetNUMCANTValue(const aValue: Float); + function GetTIPOCANTValue: String; + procedure SetTIPOCANTValue(const aValue: String); + function GetCANTIDADValue: Float; + procedure SetCANTIDADValue(const aValue: Float); + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetTMOVValue: String; + procedure SetTMOVValue(const aValue: String); + function GetFACTValue: String; + procedure SetFACTValue(const aValue: String); + function GetDEPTOValue: String; + procedure SetDEPTOValue(const aValue: String); + function GetIDVENValue: String; + procedure SetIDVENValue(const aValue: String); + + + { Properties } + property NUMDOC: String read GetNUMDOCValue write SetNUMDOCValue; + property NUMLIN: Float read GetNUMLINValue write SetNUMLINValue; + property NUMCANT: Float read GetNUMCANTValue write SetNUMCANTValue; + property TIPOCANT: String read GetTIPOCANTValue write SetTIPOCANTValue; + property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property TMOV: String read GetTMOVValue write SetTMOVValue; + property FACT: String read GetFACTValue write SetFACTValue; + property DEPTO: String read GetDEPTOValue write SetDEPTOValue; + property IDVEN: String read GetIDVENValue write SetIDVENValue; + end; + + { TRDX_CANTINVDataTableRules } + TRDX_CANTINVDataTableRules = class(TDADataTableRules, IRDX_CANTINV) + private + protected + { Property getters and setters } + function GetNUMDOCValue: String; virtual; + procedure SetNUMDOCValue(const aValue: String); virtual; + function GetNUMLINValue: Float; virtual; + procedure SetNUMLINValue(const aValue: Float); virtual; + function GetNUMCANTValue: Float; virtual; + procedure SetNUMCANTValue(const aValue: Float); virtual; + function GetTIPOCANTValue: String; virtual; + procedure SetTIPOCANTValue(const aValue: String); virtual; + function GetCANTIDADValue: Float; virtual; + procedure SetCANTIDADValue(const aValue: Float); virtual; + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetTMOVValue: String; virtual; + procedure SetTMOVValue(const aValue: String); virtual; + function GetFACTValue: String; virtual; + procedure SetFACTValue(const aValue: String); virtual; + function GetDEPTOValue: String; virtual; + procedure SetDEPTOValue(const aValue: String); virtual; + function GetIDVENValue: String; virtual; + procedure SetIDVENValue(const aValue: String); virtual; + + { Properties } + property NUMDOC: String read GetNUMDOCValue write SetNUMDOCValue; + property NUMLIN: Float read GetNUMLINValue write SetNUMLINValue; + property NUMCANT: Float read GetNUMCANTValue write SetNUMCANTValue; + property TIPOCANT: String read GetTIPOCANTValue write SetTIPOCANTValue; + property CANTIDAD: Float read GetCANTIDADValue write SetCANTIDADValue; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property TMOV: String read GetTMOVValue write SetTMOVValue; + property FACT: String read GetFACTValue write SetFACTValue; + property DEPTO: String read GetDEPTOValue write SetDEPTOValue; + property IDVEN: String read GetIDVENValue write SetIDVENValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRDX_LININV } + IRDX_LININV = interface(IDAStronglyTypedDataTable) + ['{7DF3D736-0E00-441C-A777-864BD96FA2A4}'] + { Property getters and setters } + function GetNUMDOCValue: String; + procedure SetNUMDOCValue(const aValue: String); + function GetNUMLINValue: Float; + procedure SetNUMLINValue(const aValue: Float); + function GetCODARTValue: String; + procedure SetCODARTValue(const aValue: String); + function GetFAMILIAValue: String; + procedure SetFAMILIAValue(const aValue: String); + function GetBARRAValue: String; + procedure SetBARRAValue(const aValue: String); + function GetTALLAValue: String; + procedure SetTALLAValue(const aValue: String); + function GetMARCAValue: String; + procedure SetMARCAValue(const aValue: String); + function GetTAMANOValue: String; + procedure SetTAMANOValue(const aValue: String); + function GetSERIEValue: String; + procedure SetSERIEValue(const aValue: String); + function GetCOLORValue: String; + procedure SetCOLORValue(const aValue: String); + function GetMODELOValue: String; + procedure SetMODELOValue(const aValue: String); + function GetDIBUJOValue: String; + procedure SetDIBUJOValue(const aValue: String); + function GetDESCRIPValue: String; + procedure SetDESCRIPValue(const aValue: String); + + + { Properties } + property NUMDOC: String read GetNUMDOCValue write SetNUMDOCValue; + property NUMLIN: Float read GetNUMLINValue write SetNUMLINValue; + property CODART: String read GetCODARTValue write SetCODARTValue; + property FAMILIA: String read GetFAMILIAValue write SetFAMILIAValue; + property BARRA: String read GetBARRAValue write SetBARRAValue; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property MARCA: String read GetMARCAValue write SetMARCAValue; + property TAMANO: String read GetTAMANOValue write SetTAMANOValue; + property SERIE: String read GetSERIEValue write SetSERIEValue; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property MODELO: String read GetMODELOValue write SetMODELOValue; + property DIBUJO: String read GetDIBUJOValue write SetDIBUJOValue; + property DESCRIP: String read GetDESCRIPValue write SetDESCRIPValue; + end; + + { TRDX_LININVDataTableRules } + TRDX_LININVDataTableRules = class(TDADataTableRules, IRDX_LININV) + private + protected + { Property getters and setters } + function GetNUMDOCValue: String; virtual; + procedure SetNUMDOCValue(const aValue: String); virtual; + function GetNUMLINValue: Float; virtual; + procedure SetNUMLINValue(const aValue: Float); virtual; + function GetCODARTValue: String; virtual; + procedure SetCODARTValue(const aValue: String); virtual; + function GetFAMILIAValue: String; virtual; + procedure SetFAMILIAValue(const aValue: String); virtual; + function GetBARRAValue: String; virtual; + procedure SetBARRAValue(const aValue: String); virtual; + function GetTALLAValue: String; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + function GetMARCAValue: String; virtual; + procedure SetMARCAValue(const aValue: String); virtual; + function GetTAMANOValue: String; virtual; + procedure SetTAMANOValue(const aValue: String); virtual; + function GetSERIEValue: String; virtual; + procedure SetSERIEValue(const aValue: String); virtual; + function GetCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetMODELOValue: String; virtual; + procedure SetMODELOValue(const aValue: String); virtual; + function GetDIBUJOValue: String; virtual; + procedure SetDIBUJOValue(const aValue: String); virtual; + function GetDESCRIPValue: String; virtual; + procedure SetDESCRIPValue(const aValue: String); virtual; + + { Properties } + property NUMDOC: String read GetNUMDOCValue write SetNUMDOCValue; + property NUMLIN: Float read GetNUMLINValue write SetNUMLINValue; + property CODART: String read GetCODARTValue write SetCODARTValue; + property FAMILIA: String read GetFAMILIAValue write SetFAMILIAValue; + property BARRA: String read GetBARRAValue write SetBARRAValue; + property TALLA: String read GetTALLAValue write SetTALLAValue; + property MARCA: String read GetMARCAValue write SetMARCAValue; + property TAMANO: String read GetTAMANOValue write SetTAMANOValue; + property SERIE: String read GetSERIEValue write SetSERIEValue; + property COLOR: String read GetCOLORValue write SetCOLORValue; + property MODELO: String read GetMODELOValue write SetMODELOValue; + property DIBUJO: String read GetDIBUJOValue write SetDIBUJOValue; + property DESCRIP: String read GetDESCRIPValue write SetDESCRIPValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRDX_CABINV } + IRDX_CABINV = interface(IDAStronglyTypedDataTable) + ['{4373F992-8872-4C21-BF37-CB9EB6F816CF}'] + { Property getters and setters } + function GetNUMDOCValue: String; + procedure SetNUMDOCValue(const aValue: String); + function GetTIPODOCValue: String; + procedure SetTIPODOCValue(const aValue: String); + function GetTIPOLIQValue: String; + procedure SetTIPOLIQValue(const aValue: String); + function GetFECHAValue: DateTime; + procedure SetFECHAValue(const aValue: DateTime); + function GetFECHALIQValue: DateTime; + procedure SetFECHALIQValue(const aValue: DateTime); + function GetEMISORValue: String; + procedure SetEMISORValue(const aValue: String); + function GetRECEPTORValue: String; + procedure SetRECEPTORValue(const aValue: String); + function GetDPTOValue: String; + procedure SetDPTOValue(const aValue: String); + function GetCENTROValue: String; + procedure SetCENTROValue(const aValue: String); + function GetFECHA_CARGAValue: DateTime; + procedure SetFECHA_CARGAValue(const aValue: DateTime); + + + { Properties } + property NUMDOC: String read GetNUMDOCValue write SetNUMDOCValue; + property TIPODOC: String read GetTIPODOCValue write SetTIPODOCValue; + property TIPOLIQ: String read GetTIPOLIQValue write SetTIPOLIQValue; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHALIQ: DateTime read GetFECHALIQValue write SetFECHALIQValue; + property EMISOR: String read GetEMISORValue write SetEMISORValue; + property RECEPTOR: String read GetRECEPTORValue write SetRECEPTORValue; + property DPTO: String read GetDPTOValue write SetDPTOValue; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property FECHA_CARGA: DateTime read GetFECHA_CARGAValue write SetFECHA_CARGAValue; + end; + + { TRDX_CABINVDataTableRules } + TRDX_CABINVDataTableRules = class(TDADataTableRules, IRDX_CABINV) + private + protected + { Property getters and setters } + function GetNUMDOCValue: String; virtual; + procedure SetNUMDOCValue(const aValue: String); virtual; + function GetTIPODOCValue: String; virtual; + procedure SetTIPODOCValue(const aValue: String); virtual; + function GetTIPOLIQValue: String; virtual; + procedure SetTIPOLIQValue(const aValue: String); virtual; + function GetFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetFECHALIQValue: DateTime; virtual; + procedure SetFECHALIQValue(const aValue: DateTime); virtual; + function GetEMISORValue: String; virtual; + procedure SetEMISORValue(const aValue: String); virtual; + function GetRECEPTORValue: String; virtual; + procedure SetRECEPTORValue(const aValue: String); virtual; + function GetDPTOValue: String; virtual; + procedure SetDPTOValue(const aValue: String); virtual; + function GetCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetFECHA_CARGAValue: DateTime; virtual; + procedure SetFECHA_CARGAValue(const aValue: DateTime); virtual; + + { Properties } + property NUMDOC: String read GetNUMDOCValue write SetNUMDOCValue; + property TIPODOC: String read GetTIPODOCValue write SetTIPODOCValue; + property TIPOLIQ: String read GetTIPOLIQValue write SetTIPOLIQValue; + property FECHA: DateTime read GetFECHAValue write SetFECHAValue; + property FECHALIQ: DateTime read GetFECHALIQValue write SetFECHALIQValue; + property EMISOR: String read GetEMISORValue write SetEMISORValue; + property RECEPTOR: String read GetRECEPTORValue write SetRECEPTORValue; + property DPTO: String read GetDPTOValue write SetDPTOValue; + property CENTRO: String read GetCENTROValue write SetCENTROValue; + property FECHA_CARGA: DateTime read GetFECHA_CARGAValue write SetFECHA_CARGAValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TRDX_CANTINVDataTableRules } +constructor TRDX_CANTINVDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRDX_CANTINVDataTableRules.Destroy; +begin + inherited; +end; + +function TRDX_CANTINVDataTableRules.GetNUMDOCValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVNUMDOC].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetNUMDOCValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVNUMDOC].AsString := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetNUMLINValue: Float; +begin + result := DataTable.Fields[idx_RDX_CANTINVNUMLIN].AsFloat; +end; + +procedure TRDX_CANTINVDataTableRules.SetNUMLINValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_CANTINVNUMLIN].AsFloat := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetNUMCANTValue: Float; +begin + result := DataTable.Fields[idx_RDX_CANTINVNUMCANT].AsFloat; +end; + +procedure TRDX_CANTINVDataTableRules.SetNUMCANTValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_CANTINVNUMCANT].AsFloat := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetTIPOCANTValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVTIPOCANT].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetTIPOCANTValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVTIPOCANT].AsString := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetCANTIDADValue: Float; +begin + result := DataTable.Fields[idx_RDX_CANTINVCANTIDAD].AsFloat; +end; + +procedure TRDX_CANTINVDataTableRules.SetCANTIDADValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_CANTINVCANTIDAD].AsFloat := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVCENTRO].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVCENTRO].AsString := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetTMOVValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVTMOV].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetTMOVValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVTMOV].AsString := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetFACTValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVFACT].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetFACTValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVFACT].AsString := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetDEPTOValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVDEPTO].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetDEPTOValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVDEPTO].AsString := aValue; +end; + +function TRDX_CANTINVDataTableRules.GetIDVENValue: String; +begin + result := DataTable.Fields[idx_RDX_CANTINVIDVEN].AsString; +end; + +procedure TRDX_CANTINVDataTableRules.SetIDVENValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CANTINVIDVEN].AsString := aValue; +end; + + +{ TRDX_LININVDataTableRules } +constructor TRDX_LININVDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRDX_LININVDataTableRules.Destroy; +begin + inherited; +end; + +function TRDX_LININVDataTableRules.GetNUMDOCValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVNUMDOC].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetNUMDOCValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVNUMDOC].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetNUMLINValue: Float; +begin + result := DataTable.Fields[idx_RDX_LININVNUMLIN].AsFloat; +end; + +procedure TRDX_LININVDataTableRules.SetNUMLINValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_LININVNUMLIN].AsFloat := aValue; +end; + +function TRDX_LININVDataTableRules.GetCODARTValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVCODART].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetCODARTValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVCODART].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetFAMILIAValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVFAMILIA].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetFAMILIAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVFAMILIA].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetBARRAValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVBARRA].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetBARRAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVBARRA].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetTALLAValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVTALLA].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetTALLAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVTALLA].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetMARCAValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVMARCA].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetMARCAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVMARCA].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetTAMANOValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVTAMANO].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetTAMANOValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVTAMANO].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetSERIEValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVSERIE].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetSERIEValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVSERIE].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetCOLORValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVCOLOR].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetCOLORValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVCOLOR].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetMODELOValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVMODELO].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetMODELOValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVMODELO].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetDIBUJOValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVDIBUJO].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetDIBUJOValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVDIBUJO].AsString := aValue; +end; + +function TRDX_LININVDataTableRules.GetDESCRIPValue: String; +begin + result := DataTable.Fields[idx_RDX_LININVDESCRIP].AsString; +end; + +procedure TRDX_LININVDataTableRules.SetDESCRIPValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LININVDESCRIP].AsString := aValue; +end; + + +{ TRDX_CABINVDataTableRules } +constructor TRDX_CABINVDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRDX_CABINVDataTableRules.Destroy; +begin + inherited; +end; + +function TRDX_CABINVDataTableRules.GetNUMDOCValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVNUMDOC].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetNUMDOCValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVNUMDOC].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetTIPODOCValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVTIPODOC].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetTIPODOCValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVTIPODOC].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetTIPOLIQValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVTIPOLIQ].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetTIPOLIQValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVTIPOLIQ].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetFECHAValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABINVFECHA].AsDateTime; +end; + +procedure TRDX_CABINVDataTableRules.SetFECHAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABINVFECHA].AsDateTime := aValue; +end; + +function TRDX_CABINVDataTableRules.GetFECHALIQValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABINVFECHALIQ].AsDateTime; +end; + +procedure TRDX_CABINVDataTableRules.SetFECHALIQValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABINVFECHALIQ].AsDateTime := aValue; +end; + +function TRDX_CABINVDataTableRules.GetEMISORValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVEMISOR].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetEMISORValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVEMISOR].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetRECEPTORValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVRECEPTOR].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetRECEPTORValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVRECEPTOR].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetDPTOValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVDPTO].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetDPTOValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVDPTO].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetCENTROValue: String; +begin + result := DataTable.Fields[idx_RDX_CABINVCENTRO].AsString; +end; + +procedure TRDX_CABINVDataTableRules.SetCENTROValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABINVCENTRO].AsString := aValue; +end; + +function TRDX_CABINVDataTableRules.GetFECHA_CARGAValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABINVFECHA_CARGA].AsDateTime; +end; + +procedure TRDX_CABINVDataTableRules.SetFECHA_CARGAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABINVFECHA_CARGA].AsDateTime := aValue; +end; + + +initialization + RegisterDataTableRules(RID_RDX_CANTINV, TRDX_CANTINVDataTableRules); + RegisterDataTableRules(RID_RDX_LININV, TRDX_LININVDataTableRules); + RegisterDataTableRules(RID_RDX_CABINV, TRDX_CABINVDataTableRules); + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/schEDIInventaryServer_Intf.pas b/2.1.0/Source/Servidor/Services/EDI_Inventary/schEDIInventaryServer_Intf.pas new file mode 100644 index 0000000..5429a9a --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/schEDIInventaryServer_Intf.pas @@ -0,0 +1,855 @@ +unit schEDIInventaryServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schEDIInventaryClient_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_RDX_CANTINVDelta = '{C803322D-5148-44E9-A06D-99D8B2E2781E}'; + RID_RDX_LININVDelta = '{59D21195-BB34-4A91-BD02-D48649A8F4B9}'; + RID_RDX_CABINVDelta = '{9A135F09-4540-4DAE-B701-2CDA92E0519B}'; + +type + { IRDX_CANTINVDelta } + IRDX_CANTINVDelta = interface(IRDX_CANTINV) + ['{C803322D-5148-44E9-A06D-99D8B2E2781E}'] + { Property getters and setters } + function GetOldNUMDOCValue : String; + function GetOldNUMLINValue : Float; + function GetOldNUMCANTValue : Float; + function GetOldTIPOCANTValue : String; + function GetOldCANTIDADValue : Float; + function GetOldCENTROValue : String; + function GetOldTMOVValue : String; + function GetOldFACTValue : String; + function GetOldDEPTOValue : String; + function GetOldIDVENValue : String; + + { Properties } + property OldNUMDOC : String read GetOldNUMDOCValue; + property OldNUMLIN : Float read GetOldNUMLINValue; + property OldNUMCANT : Float read GetOldNUMCANTValue; + property OldTIPOCANT : String read GetOldTIPOCANTValue; + property OldCANTIDAD : Float read GetOldCANTIDADValue; + property OldCENTRO : String read GetOldCENTROValue; + property OldTMOV : String read GetOldTMOVValue; + property OldFACT : String read GetOldFACTValue; + property OldDEPTO : String read GetOldDEPTOValue; + property OldIDVEN : String read GetOldIDVENValue; + end; + + { TRDX_CANTINVBusinessProcessorRules } + TRDX_CANTINVBusinessProcessorRules = class(TDABusinessProcessorRules, IRDX_CANTINV, IRDX_CANTINVDelta) + private + protected + { Property getters and setters } + function GetNUMDOCValue: String; virtual; + function GetOldNUMDOCValue: String; virtual; + procedure SetNUMDOCValue(const aValue: String); virtual; + function GetNUMLINValue: Float; virtual; + function GetOldNUMLINValue: Float; virtual; + procedure SetNUMLINValue(const aValue: Float); virtual; + function GetNUMCANTValue: Float; virtual; + function GetOldNUMCANTValue: Float; virtual; + procedure SetNUMCANTValue(const aValue: Float); virtual; + function GetTIPOCANTValue: String; virtual; + function GetOldTIPOCANTValue: String; virtual; + procedure SetTIPOCANTValue(const aValue: String); virtual; + function GetCANTIDADValue: Float; virtual; + function GetOldCANTIDADValue: Float; virtual; + procedure SetCANTIDADValue(const aValue: Float); virtual; + function GetCENTROValue: String; virtual; + function GetOldCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetTMOVValue: String; virtual; + function GetOldTMOVValue: String; virtual; + procedure SetTMOVValue(const aValue: String); virtual; + function GetFACTValue: String; virtual; + function GetOldFACTValue: String; virtual; + procedure SetFACTValue(const aValue: String); virtual; + function GetDEPTOValue: String; virtual; + function GetOldDEPTOValue: String; virtual; + procedure SetDEPTOValue(const aValue: String); virtual; + function GetIDVENValue: String; virtual; + function GetOldIDVENValue: String; virtual; + procedure SetIDVENValue(const aValue: String); virtual; + + { Properties } + property NUMDOC : String read GetNUMDOCValue write SetNUMDOCValue; + property OldNUMDOC : String read GetOldNUMDOCValue; + property NUMLIN : Float read GetNUMLINValue write SetNUMLINValue; + property OldNUMLIN : Float read GetOldNUMLINValue; + property NUMCANT : Float read GetNUMCANTValue write SetNUMCANTValue; + property OldNUMCANT : Float read GetOldNUMCANTValue; + property TIPOCANT : String read GetTIPOCANTValue write SetTIPOCANTValue; + property OldTIPOCANT : String read GetOldTIPOCANTValue; + property CANTIDAD : Float read GetCANTIDADValue write SetCANTIDADValue; + property OldCANTIDAD : Float read GetOldCANTIDADValue; + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property OldCENTRO : String read GetOldCENTROValue; + property TMOV : String read GetTMOVValue write SetTMOVValue; + property OldTMOV : String read GetOldTMOVValue; + property FACT : String read GetFACTValue write SetFACTValue; + property OldFACT : String read GetOldFACTValue; + property DEPTO : String read GetDEPTOValue write SetDEPTOValue; + property OldDEPTO : String read GetOldDEPTOValue; + property IDVEN : String read GetIDVENValue write SetIDVENValue; + property OldIDVEN : String read GetOldIDVENValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRDX_LININVDelta } + IRDX_LININVDelta = interface(IRDX_LININV) + ['{59D21195-BB34-4A91-BD02-D48649A8F4B9}'] + { Property getters and setters } + function GetOldNUMDOCValue : String; + function GetOldNUMLINValue : Float; + function GetOldCODARTValue : String; + function GetOldFAMILIAValue : String; + function GetOldBARRAValue : String; + function GetOldTALLAValue : String; + function GetOldMARCAValue : String; + function GetOldTAMANOValue : String; + function GetOldSERIEValue : String; + function GetOldCOLORValue : String; + function GetOldMODELOValue : String; + function GetOldDIBUJOValue : String; + function GetOldDESCRIPValue : String; + + { Properties } + property OldNUMDOC : String read GetOldNUMDOCValue; + property OldNUMLIN : Float read GetOldNUMLINValue; + property OldCODART : String read GetOldCODARTValue; + property OldFAMILIA : String read GetOldFAMILIAValue; + property OldBARRA : String read GetOldBARRAValue; + property OldTALLA : String read GetOldTALLAValue; + property OldMARCA : String read GetOldMARCAValue; + property OldTAMANO : String read GetOldTAMANOValue; + property OldSERIE : String read GetOldSERIEValue; + property OldCOLOR : String read GetOldCOLORValue; + property OldMODELO : String read GetOldMODELOValue; + property OldDIBUJO : String read GetOldDIBUJOValue; + property OldDESCRIP : String read GetOldDESCRIPValue; + end; + + { TRDX_LININVBusinessProcessorRules } + TRDX_LININVBusinessProcessorRules = class(TDABusinessProcessorRules, IRDX_LININV, IRDX_LININVDelta) + private + protected + { Property getters and setters } + function GetNUMDOCValue: String; virtual; + function GetOldNUMDOCValue: String; virtual; + procedure SetNUMDOCValue(const aValue: String); virtual; + function GetNUMLINValue: Float; virtual; + function GetOldNUMLINValue: Float; virtual; + procedure SetNUMLINValue(const aValue: Float); virtual; + function GetCODARTValue: String; virtual; + function GetOldCODARTValue: String; virtual; + procedure SetCODARTValue(const aValue: String); virtual; + function GetFAMILIAValue: String; virtual; + function GetOldFAMILIAValue: String; virtual; + procedure SetFAMILIAValue(const aValue: String); virtual; + function GetBARRAValue: String; virtual; + function GetOldBARRAValue: String; virtual; + procedure SetBARRAValue(const aValue: String); virtual; + function GetTALLAValue: String; virtual; + function GetOldTALLAValue: String; virtual; + procedure SetTALLAValue(const aValue: String); virtual; + function GetMARCAValue: String; virtual; + function GetOldMARCAValue: String; virtual; + procedure SetMARCAValue(const aValue: String); virtual; + function GetTAMANOValue: String; virtual; + function GetOldTAMANOValue: String; virtual; + procedure SetTAMANOValue(const aValue: String); virtual; + function GetSERIEValue: String; virtual; + function GetOldSERIEValue: String; virtual; + procedure SetSERIEValue(const aValue: String); virtual; + function GetCOLORValue: String; virtual; + function GetOldCOLORValue: String; virtual; + procedure SetCOLORValue(const aValue: String); virtual; + function GetMODELOValue: String; virtual; + function GetOldMODELOValue: String; virtual; + procedure SetMODELOValue(const aValue: String); virtual; + function GetDIBUJOValue: String; virtual; + function GetOldDIBUJOValue: String; virtual; + procedure SetDIBUJOValue(const aValue: String); virtual; + function GetDESCRIPValue: String; virtual; + function GetOldDESCRIPValue: String; virtual; + procedure SetDESCRIPValue(const aValue: String); virtual; + + { Properties } + property NUMDOC : String read GetNUMDOCValue write SetNUMDOCValue; + property OldNUMDOC : String read GetOldNUMDOCValue; + property NUMLIN : Float read GetNUMLINValue write SetNUMLINValue; + property OldNUMLIN : Float read GetOldNUMLINValue; + property CODART : String read GetCODARTValue write SetCODARTValue; + property OldCODART : String read GetOldCODARTValue; + property FAMILIA : String read GetFAMILIAValue write SetFAMILIAValue; + property OldFAMILIA : String read GetOldFAMILIAValue; + property BARRA : String read GetBARRAValue write SetBARRAValue; + property OldBARRA : String read GetOldBARRAValue; + property TALLA : String read GetTALLAValue write SetTALLAValue; + property OldTALLA : String read GetOldTALLAValue; + property MARCA : String read GetMARCAValue write SetMARCAValue; + property OldMARCA : String read GetOldMARCAValue; + property TAMANO : String read GetTAMANOValue write SetTAMANOValue; + property OldTAMANO : String read GetOldTAMANOValue; + property SERIE : String read GetSERIEValue write SetSERIEValue; + property OldSERIE : String read GetOldSERIEValue; + property COLOR : String read GetCOLORValue write SetCOLORValue; + property OldCOLOR : String read GetOldCOLORValue; + property MODELO : String read GetMODELOValue write SetMODELOValue; + property OldMODELO : String read GetOldMODELOValue; + property DIBUJO : String read GetDIBUJOValue write SetDIBUJOValue; + property OldDIBUJO : String read GetOldDIBUJOValue; + property DESCRIP : String read GetDESCRIPValue write SetDESCRIPValue; + property OldDESCRIP : String read GetOldDESCRIPValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRDX_CABINVDelta } + IRDX_CABINVDelta = interface(IRDX_CABINV) + ['{9A135F09-4540-4DAE-B701-2CDA92E0519B}'] + { Property getters and setters } + function GetOldNUMDOCValue : String; + function GetOldTIPODOCValue : String; + function GetOldTIPOLIQValue : String; + function GetOldFECHAValue : DateTime; + function GetOldFECHALIQValue : DateTime; + function GetOldEMISORValue : String; + function GetOldRECEPTORValue : String; + function GetOldDPTOValue : String; + function GetOldCENTROValue : String; + function GetOldFECHA_CARGAValue : DateTime; + + { Properties } + property OldNUMDOC : String read GetOldNUMDOCValue; + property OldTIPODOC : String read GetOldTIPODOCValue; + property OldTIPOLIQ : String read GetOldTIPOLIQValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property OldFECHALIQ : DateTime read GetOldFECHALIQValue; + property OldEMISOR : String read GetOldEMISORValue; + property OldRECEPTOR : String read GetOldRECEPTORValue; + property OldDPTO : String read GetOldDPTOValue; + property OldCENTRO : String read GetOldCENTROValue; + property OldFECHA_CARGA : DateTime read GetOldFECHA_CARGAValue; + end; + + { TRDX_CABINVBusinessProcessorRules } + TRDX_CABINVBusinessProcessorRules = class(TDABusinessProcessorRules, IRDX_CABINV, IRDX_CABINVDelta) + private + protected + { Property getters and setters } + function GetNUMDOCValue: String; virtual; + function GetOldNUMDOCValue: String; virtual; + procedure SetNUMDOCValue(const aValue: String); virtual; + function GetTIPODOCValue: String; virtual; + function GetOldTIPODOCValue: String; virtual; + procedure SetTIPODOCValue(const aValue: String); virtual; + function GetTIPOLIQValue: String; virtual; + function GetOldTIPOLIQValue: String; virtual; + procedure SetTIPOLIQValue(const aValue: String); virtual; + function GetFECHAValue: DateTime; virtual; + function GetOldFECHAValue: DateTime; virtual; + procedure SetFECHAValue(const aValue: DateTime); virtual; + function GetFECHALIQValue: DateTime; virtual; + function GetOldFECHALIQValue: DateTime; virtual; + procedure SetFECHALIQValue(const aValue: DateTime); virtual; + function GetEMISORValue: String; virtual; + function GetOldEMISORValue: String; virtual; + procedure SetEMISORValue(const aValue: String); virtual; + function GetRECEPTORValue: String; virtual; + function GetOldRECEPTORValue: String; virtual; + procedure SetRECEPTORValue(const aValue: String); virtual; + function GetDPTOValue: String; virtual; + function GetOldDPTOValue: String; virtual; + procedure SetDPTOValue(const aValue: String); virtual; + function GetCENTROValue: String; virtual; + function GetOldCENTROValue: String; virtual; + procedure SetCENTROValue(const aValue: String); virtual; + function GetFECHA_CARGAValue: DateTime; virtual; + function GetOldFECHA_CARGAValue: DateTime; virtual; + procedure SetFECHA_CARGAValue(const aValue: DateTime); virtual; + + { Properties } + property NUMDOC : String read GetNUMDOCValue write SetNUMDOCValue; + property OldNUMDOC : String read GetOldNUMDOCValue; + property TIPODOC : String read GetTIPODOCValue write SetTIPODOCValue; + property OldTIPODOC : String read GetOldTIPODOCValue; + property TIPOLIQ : String read GetTIPOLIQValue write SetTIPOLIQValue; + property OldTIPOLIQ : String read GetOldTIPOLIQValue; + property FECHA : DateTime read GetFECHAValue write SetFECHAValue; + property OldFECHA : DateTime read GetOldFECHAValue; + property FECHALIQ : DateTime read GetFECHALIQValue write SetFECHALIQValue; + property OldFECHALIQ : DateTime read GetOldFECHALIQValue; + property EMISOR : String read GetEMISORValue write SetEMISORValue; + property OldEMISOR : String read GetOldEMISORValue; + property RECEPTOR : String read GetRECEPTORValue write SetRECEPTORValue; + property OldRECEPTOR : String read GetOldRECEPTORValue; + property DPTO : String read GetDPTOValue write SetDPTOValue; + property OldDPTO : String read GetOldDPTOValue; + property CENTRO : String read GetCENTROValue write SetCENTROValue; + property OldCENTRO : String read GetOldCENTROValue; + property FECHA_CARGA : DateTime read GetFECHA_CARGAValue write SetFECHA_CARGAValue; + property OldFECHA_CARGA : DateTime read GetOldFECHA_CARGAValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TRDX_CANTINVBusinessProcessorRules } +constructor TRDX_CANTINVBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRDX_CANTINVBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetNUMDOCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVNUMDOC]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldNUMDOCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVNUMDOC]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetNUMDOCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVNUMDOC] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetNUMLINValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVNUMLIN]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldNUMLINValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVNUMLIN]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetNUMLINValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVNUMLIN] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetNUMCANTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVNUMCANT]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldNUMCANTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVNUMCANT]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetNUMCANTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVNUMCANT] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetTIPOCANTValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVTIPOCANT]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldTIPOCANTValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVTIPOCANT]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetTIPOCANTValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVTIPOCANT] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetCANTIDADValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVCANTIDAD]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldCANTIDADValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVCANTIDAD]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetCANTIDADValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVCANTIDAD] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVCENTRO]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVCENTRO]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVCENTRO] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetTMOVValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVTMOV]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldTMOVValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVTMOV]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetTMOVValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVTMOV] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetFACTValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVFACT]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldFACTValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVFACT]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetFACTValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVFACT] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetDEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVDEPTO]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldDEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVDEPTO]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetDEPTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVDEPTO] := aValue; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetIDVENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVIDVEN]; +end; + +function TRDX_CANTINVBusinessProcessorRules.GetOldIDVENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CANTINVIDVEN]; +end; + +procedure TRDX_CANTINVBusinessProcessorRules.SetIDVENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CANTINVIDVEN] := aValue; +end; + + +{ TRDX_LININVBusinessProcessorRules } +constructor TRDX_LININVBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRDX_LININVBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRDX_LININVBusinessProcessorRules.GetNUMDOCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVNUMDOC]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldNUMDOCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVNUMDOC]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetNUMDOCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVNUMDOC] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetNUMLINValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVNUMLIN]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldNUMLINValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVNUMLIN]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetNUMLINValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVNUMLIN] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetCODARTValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVCODART]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldCODARTValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVCODART]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetCODARTValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVCODART] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetFAMILIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVFAMILIA]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldFAMILIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVFAMILIA]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetFAMILIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVFAMILIA] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetBARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVBARRA]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldBARRAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVBARRA]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetBARRAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVBARRA] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVTALLA]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldTALLAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVTALLA]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetTALLAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVTALLA] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetMARCAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVMARCA]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldMARCAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVMARCA]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetMARCAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVMARCA] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetTAMANOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVTAMANO]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldTAMANOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVTAMANO]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetTAMANOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVTAMANO] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetSERIEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVSERIE]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldSERIEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVSERIE]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetSERIEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVSERIE] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVCOLOR]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldCOLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVCOLOR]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetCOLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVCOLOR] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetMODELOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVMODELO]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldMODELOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVMODELO]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetMODELOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVMODELO] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetDIBUJOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVDIBUJO]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldDIBUJOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVDIBUJO]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetDIBUJOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVDIBUJO] := aValue; +end; + +function TRDX_LININVBusinessProcessorRules.GetDESCRIPValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVDESCRIP]; +end; + +function TRDX_LININVBusinessProcessorRules.GetOldDESCRIPValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LININVDESCRIP]; +end; + +procedure TRDX_LININVBusinessProcessorRules.SetDESCRIPValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LININVDESCRIP] := aValue; +end; + + +{ TRDX_CABINVBusinessProcessorRules } +constructor TRDX_CABINVBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRDX_CABINVBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRDX_CABINVBusinessProcessorRules.GetNUMDOCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVNUMDOC]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldNUMDOCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVNUMDOC]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetNUMDOCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVNUMDOC] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetTIPODOCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVTIPODOC]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldTIPODOCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVTIPODOC]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetTIPODOCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVTIPODOC] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetTIPOLIQValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVTIPOLIQ]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldTIPOLIQValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVTIPOLIQ]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetTIPOLIQValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVTIPOLIQ] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVFECHA]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldFECHAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVFECHA]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetFECHAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVFECHA] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetFECHALIQValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVFECHALIQ]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldFECHALIQValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVFECHALIQ]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetFECHALIQValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVFECHALIQ] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetEMISORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVEMISOR]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldEMISORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVEMISOR]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetEMISORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVEMISOR] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetRECEPTORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVRECEPTOR]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldRECEPTORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVRECEPTOR]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetRECEPTORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVRECEPTOR] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetDPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVDPTO]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldDPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVDPTO]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetDPTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVDPTO] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVCENTRO]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldCENTROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVCENTRO]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetCENTROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVCENTRO] := aValue; +end; + +function TRDX_CABINVBusinessProcessorRules.GetFECHA_CARGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVFECHA_CARGA]; +end; + +function TRDX_CABINVBusinessProcessorRules.GetOldFECHA_CARGAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABINVFECHA_CARGA]; +end; + +procedure TRDX_CABINVBusinessProcessorRules.SetFECHA_CARGAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABINVFECHA_CARGA] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_RDX_CANTINVDelta, TRDX_CANTINVBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_RDX_LININVDelta, TRDX_LININVBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_RDX_CABINVDelta, TRDX_CABINVBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/uBizEDIInventary.pas b/2.1.0/Source/Servidor/Services/EDI_Inventary/uBizEDIInventary.pas new file mode 100644 index 0000000..51c3f6e --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/uBizEDIInventary.pas @@ -0,0 +1,323 @@ +unit uBizEDIInventary; + +interface + +uses + uDAInterfaces, uDADataTable, Classes, + DB, Controls, schEDIInventaryClient_Intf; + +const + BIZ_INVRPT_CAB = 'BizInvRptCab'; + BIZ_INVRPT_LIN = 'BizInvRptLin'; + BIZ_INVRPT_CANT = 'BizInvRptCant'; + +type + IBizEDIInv_Cab = interface(IRDX_CABINV) + ['{95AB3EC1-B8CC-4DB0-8052-03D1D225AC69}'] + end; + + IBizEDIInv_Lin = interface(IRDX_LININV) + ['{171361CD-EC4F-479C-9E86-2D369DEC4EA9}'] + end; + + IBizEDIInv_Cant = interface(IRDX_CANTINV) + ['{A91F8700-BD74-475A-8677-B349BB79FC07}'] + end; + + TBizEDIInv_Cab = class(TRDX_CABINVDataTableRules, IBizEDIInv_Cab) + protected + procedure SetNUMDOCValue(const aValue: String); override; + procedure SetTIPODOCValue(const aValue: String); override; + procedure SetTIPOLIQValue(const aValue: String); override; + procedure SetFECHAValue(const aValue: DateTime); override; + procedure SetFECHALIQValue(const aValue: DateTime); override; + procedure SetEMISORValue(const aValue: String); override; + procedure SetRECEPTORValue(const aValue: String); override; + procedure SetDPTOValue(const aValue: String); override; + procedure SetCENTROValue(const aValue: String); override; + end; + + TBizEDIInv_Lin = class(TRDX_LININVDataTableRules, IBizEDIInv_Lin) + protected + procedure SetNUMDOCValue(const aValue: String); override; + procedure SetNUMLINValue(const aValue: Float); override; + procedure SetCODARTValue(const aValue: String); override; + procedure SetFAMILIAValue(const aValue: String); override; + procedure SetBARRAValue(const aValue: String); override; + procedure SetTALLAValue(const aValue: String); override; + procedure SetMARCAValue(const aValue: String); override; + procedure SetTAMANOValue(const aValue: String); override; + procedure SetSERIEValue(const aValue: String); override; + procedure SetCOLORValue(const aValue: String); override; + procedure SetMODELOValue(const aValue: String); override; + procedure SetDIBUJOValue(const aValue: String); override; + procedure SetDESCRIPValue(const aValue: String); override; + end; + + TBizEDIInv_Cant = class(TRDX_CANTINVDataTableRules, IBizEDIInv_Cant) + protected + procedure SetNUMDOCValue(const aValue: String); override; + procedure SetNUMLINValue(const aValue: Float); override; + procedure SetNUMCANTValue(const aValue: Float); override; + procedure SetTIPOCANTValue(const aValue: String); override; + procedure SetCANTIDADValue(const aValue: Float); override; + procedure SetCENTROValue(const aValue: String); override; + procedure SetTMOVValue(const aValue: String); override; + procedure SetFACTValue(const aValue: String); override; + procedure SetDEPTOValue(const aValue: String); override; + procedure SetIDVENValue(const aValue: String); override; + end; + + +implementation + +uses + Variants; + +{ TBizEDIInv_Cab } + +procedure TBizEDIInv_Cab.SetCENTROValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABINVCENTRO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVCENTRO].AsString := aValue; +end; + +procedure TBizEDIInv_Cab.SetDPTOValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABINVDPTO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVDPTO].AsString := aValue; +end; + +procedure TBizEDIInv_Cab.SetEMISORValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABINVEMISOR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVEMISOR].AsString := aValue; +end; + +procedure TBizEDIInv_Cab.SetFECHALIQValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABINVFECHALIQ].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVFECHALIQ].AsDateTime := aValue; +end; + +procedure TBizEDIInv_Cab.SetFECHAValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABINVFECHA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVFECHA].AsDateTime := aValue; +end; + +procedure TBizEDIInv_Cab.SetNUMDOCValue(const aValue: String); +begin + inherited; +end; + +procedure TBizEDIInv_Cab.SetRECEPTORValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABINVRECEPTOR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVRECEPTOR].AsString := aValue; +end; + +procedure TBizEDIInv_Cab.SetTIPODOCValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABINVTIPODOC].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVTIPODOC].AsString := aValue; +end; + +procedure TBizEDIInv_Cab.SetTIPOLIQValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABINVTIPOLIQ].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABINVTIPOLIQ].AsString := aValue; +end; + +{ TBizEDIInv_Lin } + +procedure TBizEDIInv_Lin.SetBARRAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVBARRA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVBARRA].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetCODARTValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVCODART].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVCODART].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetCOLORValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVCOLOR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVCOLOR].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetDESCRIPValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVDESCRIP].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVDESCRIP].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetDIBUJOValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVDIBUJO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVDIBUJO].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetFAMILIAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVFAMILIA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVFAMILIA].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetMARCAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVMARCA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVMARCA].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetMODELOValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVMODELO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVMODELO].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetNUMDOCValue(const aValue: String); +begin + inherited; +end; + +procedure TBizEDIInv_Lin.SetNUMLINValue(const aValue: Float); +begin + inherited; +end; + +procedure TBizEDIInv_Lin.SetSERIEValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVSERIE].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVSERIE].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetTALLAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVTALLA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVTALLA].AsString := aValue; +end; + +procedure TBizEDIInv_Lin.SetTAMANOValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_LININVTAMANO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LININVTAMANO].AsString := aValue; +end; + +{ TBizEDIInv_Cant } + +procedure TBizEDIInv_Cant.SetCANTIDADValue(const aValue: Float); +begin + inherited; +end; + +procedure TBizEDIInv_Cant.SetCENTROValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CANTINVCENTRO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CANTINVCENTRO].AsString := aValue; +end; + +procedure TBizEDIInv_Cant.SetDEPTOValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CANTINVDEPTO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CANTINVDEPTO].AsString := aValue; +end; + +procedure TBizEDIInv_Cant.SetFACTValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CANTINVFACT].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CANTINVFACT].AsString := aValue; +end; + +procedure TBizEDIInv_Cant.SetIDVENValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CANTINVIDVEN].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CANTINVIDVEN].AsString := aValue; +end; + +procedure TBizEDIInv_Cant.SetNUMCANTValue(const aValue: Float); +begin + inherited; +end; + +procedure TBizEDIInv_Cant.SetNUMDOCValue(const aValue: String); +begin + inherited; +end; + +procedure TBizEDIInv_Cant.SetNUMLINValue(const aValue: Float); +begin + inherited; +end; + +procedure TBizEDIInv_Cant.SetTIPOCANTValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CANTINVTIPOCANT].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CANTINVTIPOCANT].AsString := aValue; +end; + +procedure TBizEDIInv_Cant.SetTMOVValue(const aValue: String); +begin + inherited; + +end; + +initialization + RegisterDataTableRules(BIZ_INVRPT_CAB, TBizEDIInv_Cab); + RegisterDataTableRules(BIZ_INVRPT_LIN, TBizEDIInv_Lin); + RegisterDataTableRules(BIZ_INVRPT_CANT, TBizEDIInv_Cant); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.ddp b/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.ddp differ diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.dfm b/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.dfm new file mode 100644 index 0000000..164e687 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.dfm @@ -0,0 +1,1061 @@ +object dmEDIInventary: TdmEDIInventary + OldCreateOrder = False + Height = 185 + Width = 396 + object schEDIInventary: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_CANTINV' + SQL = + 'SELECT '#10' NUMDOC, NUMLIN, NUMCANT, TIPOCANT, CANTIDAD, CENTRO,' + + ' '#10' TMOV, FACT, DEPTO, IDVEN'#10' FROM'#10' RDX_CANTINV' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMDOC' + TableField = 'NUMDOC' + end + item + DatasetField = 'NUMLIN' + TableField = 'NUMLIN' + end + item + DatasetField = 'NUMCANT' + TableField = 'NUMCANT' + end + item + DatasetField = 'TIPOCANT' + TableField = 'TIPOCANT' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'TMOV' + TableField = 'TMOV' + end + item + DatasetField = 'FACT' + TableField = 'FACT' + end + item + DatasetField = 'DEPTO' + TableField = 'DEPTO' + end + item + DatasetField = 'IDVEN' + TableField = 'IDVEN' + end> + end> + Name = 'RDX_CANTINV' + Fields = < + item + Name = 'NUMDOC' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMLIN' + DataType = datFloat + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCANT' + DataType = datFloat + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPOCANT' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANTIDAD' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TMOV' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FACT' + DataType = datString + Size = 12 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DEPTO' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'IDVEN' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LININV' + SQL = + 'SELECT '#10' NUMDOC, NUMLIN, CODART, FAMILIA, BARRA, TALLA, MARCA' + + ', '#10' TAMANO, SERIE, COLOR, MODELO, DIBUJO, DESCRIP'#10' FROM'#10' ' + + 'RDX_LININV' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMDOC' + TableField = 'NUMDOC' + end + item + DatasetField = 'NUMLIN' + TableField = 'NUMLIN' + end + item + DatasetField = 'CODART' + TableField = 'CODART' + end + item + DatasetField = 'FAMILIA' + TableField = 'FAMILIA' + end + item + DatasetField = 'BARRA' + TableField = 'BARRA' + end + item + DatasetField = 'TALLA' + TableField = 'TALLA' + end + item + DatasetField = 'MARCA' + TableField = 'MARCA' + end + item + DatasetField = 'TAMANO' + TableField = 'TAMANO' + end + item + DatasetField = 'SERIE' + TableField = 'SERIE' + end + item + DatasetField = 'COLOR' + TableField = 'COLOR' + end + item + DatasetField = 'MODELO' + TableField = 'MODELO' + end + item + DatasetField = 'DIBUJO' + TableField = 'DIBUJO' + end + item + DatasetField = 'DESCRIP' + TableField = 'DESCRIP' + end> + end> + Name = 'RDX_LININV' + Fields = < + item + Name = 'NUMDOC' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMLIN' + DataType = datFloat + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODART' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FAMILIA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BARRA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TALLA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MARCA' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TAMANO' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'SERIE' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'COLOR' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MODELO' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIBUJO' + DataType = datString + Size = 25 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIP' + DataType = datString + Size = 70 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_CABINV' + SQL = + 'SELECT '#10' NUMDOC, TIPODOC, TIPOLIQ, FECHA, FECHALIQ, EMISOR, '#10 + + ' RECEPTOR, DPTO, CENTRO, FECHA_CARGA'#10' FROM'#10' RDX_CABINV' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'NUMDOC' + TableField = 'NUMDOC' + end + item + DatasetField = 'TIPODOC' + TableField = 'TIPODOC' + end + item + DatasetField = 'TIPOLIQ' + TableField = 'TIPOLIQ' + end + item + DatasetField = 'FECHA' + TableField = 'FECHA' + end + item + DatasetField = 'FECHALIQ' + TableField = 'FECHALIQ' + end + item + DatasetField = 'EMISOR' + TableField = 'EMISOR' + end + item + DatasetField = 'RECEPTOR' + TableField = 'RECEPTOR' + end + item + DatasetField = 'DPTO' + TableField = 'DPTO' + end + item + DatasetField = 'CENTRO' + TableField = 'CENTRO' + end + item + DatasetField = 'FECHA_CARGA' + TableField = 'FECHA_CARGA' + end> + end> + Name = 'RDX_CABINV' + Fields = < + item + Name = 'NUMDOC' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPODOC' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TIPOLIQ' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHALIQ' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMISOR' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'RECEPTOR' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DPTO' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_CARGA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'RETURN_VALUE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptResult + end> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = 'RDX_P_SET_ULTIMOINVENTARIO' + StatementType = stStoredProcedure + ColumnMappings = <> + end> + Name = 'RDX_P_SET_ULTIMOINVENTARIO' + end + item + Params = < + item + Name = 'RETURN_VALUE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptResult + end> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = 'RDX_P_CARGAR_INVENTARIOEDI' + StatementType = stStoredProcedure + ColumnMappings = <> + end> + Name = 'RDX_P_CARGAR_INVENTARIOEDI' + end + item + Params = < + item + Name = 'NUMDOC' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPODOC' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPOLIQ' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHALIQ' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EMISOR' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'RECEPTOR' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DPTO' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_CARGA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_CABINV' + SQL = + 'INSERT'#10' INTO RDX_CABINV'#10' (NUMDOC, TIPODOC, TIPOLIQ, FECHA, F' + + 'ECHALIQ, EMISOR, '#10' RECEPTOR, DPTO, CENTRO, FECHA_CARGA)'#10' VA' + + 'LUES'#10' (:NUMDOC, :TIPODOC, :TIPOLIQ, :FECHA, :FECHALIQ, :EMISO' + + 'R, '#10' :RECEPTOR, :DPTO, :CENTRO, CURRENT_TIMESTAMP)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RDX_CABINV' + end + item + Params = < + item + Name = 'NUMDOC' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMLIN' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODART' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FAMILIA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BARRA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TALLA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'MARCA' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TAMANO' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'SERIE' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'COLOR' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'MODELO' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIBUJO' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIP' + DataType = datString + Size = 70 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LININV' + SQL = + 'INSERT'#10' INTO RDX_LININV'#10' (NUMDOC, NUMLIN, CODART, FAMILIA, B' + + 'ARRA, TALLA, MARCA, '#10' TAMANO, SERIE, COLOR, MODELO, DIBUJO, ' + + 'DESCRIP)'#10' VALUES'#10' (:NUMDOC, :NUMLIN, :CODART, :FAMILIA, :BAR' + + 'RA, :TALLA, '#10' :MARCA, :TAMANO, :SERIE, :COLOR, :MODELO, :DIB' + + 'UJO, '#10' :DESCRIP)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RDX_LININV' + end + item + Params = < + item + Name = 'NUMDOC' + DataType = datString + Size = 25 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMLIN' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMCANT' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TIPOCANT' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CANTIDAD' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CENTRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TMOV' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FACT' + DataType = datString + Size = 12 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DEPTO' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'IDVEN' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_CANTINV' + SQL = + 'INSERT'#10' INTO RDX_CANTINV'#10' (NUMDOC, NUMLIN, NUMCANT, TIPOCANT' + + ', CANTIDAD, CENTRO, '#10' TMOV, FACT, DEPTO, IDVEN)'#10' VALUES'#10' ' + + ' (:NUMDOC, :NUMLIN, :NUMCANT, :TIPOCANT, :CANTIDAD, :CENTRO, '#10' ' + + ' :TMOV, :FACT, :DEPTO, :IDVEN)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RDX_CANTINV' + end> + RelationShips = < + item + Name = 'FK_RDX_LININV_RDX_CABINV' + MasterDatasetName = 'RDX_CABINV' + MasterFields = 'NUMDOC' + DetailDatasetName = 'RDX_LININV' + DetailFields = 'NUMDOC' + RelationshipType = rtForeignKey + end + item + Name = 'FK_RDX_CANTINV_RDX_LININV' + MasterDatasetName = 'RDX_LININV' + MasterFields = 'NUMDOC;NUMLIN' + DetailDatasetName = 'RDX_CANTINV' + DetailFields = 'NUMDOC;NUMLIN' + RelationshipType = rtForeignKey + end> + UpdateRules = < + item + Name = 'Insert RDX_CABINV' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'RDX_CABINV' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert RDX_LININV' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'RDX_LININV' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert RDX_CANTINV' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'RDX_CANTINV' + FailureBehavior = fbRaiseException + end + item + Name = 'Update RDX_CABINV' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'RDX_CABINV' + FailureBehavior = fbRaiseException + end + item + Name = 'Update RDX_LININV' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'RDX_LININV' + FailureBehavior = fbRaiseException + end + item + Name = 'Update RDX_CANTINV' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'RDX_CANTINV' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete RDX_CANTINV' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'RDX_CANTINV' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete RDX_LININV' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'RDX_LININV' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete RDX_CABINV' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'RDX_CABINV' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 56 + Top = 16 + end +end diff --git a/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.pas b/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.pas new file mode 100644 index 0000000..e6b95a2 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Inventary/uDataModuleEDI_Inventary.pas @@ -0,0 +1,318 @@ +unit uDataModuleEDI_Inventary; + +interface + +uses + SysUtils, Classes, JvComponentBase, JvLogFile, uDAClasses, + uDABusinessProcessor, uDAScriptingProvider, uDADataTable, uDACDSDataTable, + uDataModuleServer, uBizEDIInventary, EDI_Reader, EDI_Inventary_Impl, + EDI_INVRPT, uDAInterfaces; + +type + TdmEDIInventary = class(TDataModule) + schEDIInventary: TDASchema; + private + function InsertarCabecera(const ACabData : TEDIFileData; var NumRegNuevos : integer) : Boolean; + function InsertarLineas(const ALinData : TEDIFileData; var NumRegNuevos : integer) : Boolean; + function InsertarCantidades(const ACantData : TEDIFileData; var NumRegNuevos : integer) : Boolean; + procedure InsertarLog(OK : Boolean; Error_msg : String = ''); + function GenerarInventarioEDI: Boolean; + function MarcarRegistrosUltimoInventarioEDI: Boolean; + public + function CargarFicheros(const FicheroCAB: String; const FicheroLIN: String; + const FicheroCANT: String; var NumRegNuevos: Integer ): Boolean; + end; + +var + dmEDIInventary: TdmEDIInventary; + +implementation + +uses + Controls, Forms, uDataTableUtils, DB, + Dialogs, Variants, schEDIInventaryClient_Intf, EDI_Utils, EDI_Log_Impl, + VARELA_Intf; + +{$R *.dfm} + +{ TdmEDIInventary } + +function TdmEDIInventary.CargarFicheros(const FicheroCAB, FicheroLIN, + FicheroCANT: String; var NumRegNuevos: Integer ): Boolean; +var + Cab_Reader : TCABINV_Reader; + Lin_Reader : TLININV_Reader; + Cant_Reader : TCANTINV_Reader; + + NumRegNuevosCab : Integer; + NumRegNuevosLin : Integer; + NumRegNuevosCant : Integer; +begin + Result := True; + + Cab_Reader := TCABINV_Reader.Create; + try + Cab_Reader.Filename := FicheroCAB; + Cab_Reader.ReadFile; + Result := InsertarCabecera (Cab_Reader.FileData, NumRegNuevosCab); + finally + FreeAndNIL(Cab_Reader); + end; + + if Result then + begin + Lin_Reader := TLININV_Reader.Create; + try + Lin_Reader.Filename := FicheroLIN; + Lin_Reader.ReadFile; + Result := InsertarLineas (Lin_Reader.FileData, NumRegNuevosLin); + finally + FreeAndNIL(Lin_Reader); + end; + + if Result then + begin + Cant_Reader := TCANTINV_Reader.Create; + try + Cant_Reader.Filename := FicheroCANT; + Cant_Reader.ReadFile; + Result := InsertarCantidades(Cant_Reader.FileData, NumRegNuevosCant); + finally + Cant_Reader.Free; + end; + end; + end; + + if Result then + begin + NumRegNuevos := NumRegNuevosCant; + Result := GenerarInventarioEDI; + if Result then + Result := MarcarRegistrosUltimoInventarioEDI; + end; +end; + +function TdmEDIInventary.GenerarInventarioEDI: Boolean; +var + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + ACommand := schEDIInventary.NewCommand(AConnection, 'RDX_P_CARGAR_INVENTARIOEDI'); + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (GenerarInventarioEDI)'); + end + end; +end; + +function TdmEDIInventary.InsertarCabecera(const ACabData: TEDIFileData; + var NumRegNuevos : integer) : Boolean; +var + i : integer; + Registro : PCABINV; + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + NumRegNuevos := 0; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + + for i := 0 to ACabData.Count - 1 do + begin + Registro := ACabData[i]; + + if not Registro.REGISTRO_OK then + Continue; + + ACommand := schEDIInventary.NewCommand(AConnection, 'Insert_RDX_CABINV'); + with ACommand do + begin + ParamByName('NUMDOC').AsString := Trim(Registro.NUMDOC); + ParamByName('TIPODOC').AsString := Trim(Registro.TIPODOC); + ParamByName('TIPOLIQ').AsString := Trim(Registro.TIPOLIQ); + ParamByName('FECHA').AsDateTime := EDIDateToDateF(Trim(Registro.FECHA)); + ParamByName('FECHALIQ').AsDateTime := EDIDateToDateF(Trim(Registro.FECHALIQ)); + ParamByName('EMISOR').AsString := Trim(Registro.EMISOR); + ParamByName('RECEPTOR').AsString := Trim(Registro.RECEPTOR); + ParamByName('DPTO').AsString := Trim(Registro.DPTO); + ParamByName('CENTRO').AsString := Trim(Registro.CENTRO); + end; + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + NumRegNuevos := NumRegNuevos + 1; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (InsertarCabecera INV)'); + end + end; + end; //for +end; + +function TdmEDIInventary.InsertarCantidades(const ACantData: TEDIFileData; + var NumRegNuevos : integer) : Boolean; +var + i : integer; + Registro : PCANTINV; + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + NumRegNuevos := 0; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + + for i := 0 to ACantData.Count - 1 do + begin + Registro := ACantData[i]; + + if not Registro.REGISTRO_OK then + Continue; + + ACommand := schEDIInventary.NewCommand(AConnection, 'Insert_RDX_CANTINV'); + with ACommand do + begin + ParamByName('NUMDOC').AsString := Trim(Registro.NUMDOC); + ParamByName('NUMLIN').AsInteger := StrToInt(Trim(Registro.NUMLIN)); + ParamByName('NUMCANT').AsInteger := StrToInt(Trim(Registro.NUMCANT)); + ParamByName('TIPOCANT').AsString := Trim(Registro.TIPOCANT); + ParamByName('CANTIDAD').AsFloat := StrToFloat(Trim(Registro.CANTIDAD)); + ParamByName('CENTRO').AsString := Trim(Registro.CENTRO); + ParamByName('TMOV').AsString := Trim(Registro.TMOV); + ParamByName('FACT').AsString := Trim(Registro.FACT); + ParamByName('DEPTO').AsString := Trim(Registro.DEPTO); + ParamByName('IDVEN').AsString := Trim(Registro.IDVEN); + end; + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + NumRegNuevos := NumRegNuevos + 1; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (InsertarCantidades INV)'); + end + end; + end; //for +end; + +function TdmEDIInventary.InsertarLineas(const ALinData: TEDIFileData; + var NumRegNuevos : integer) : Boolean; +var + i : integer; + Registro : PLININV; + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + NumRegNuevos := 0; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + + for i := 0 to ALinData.Count - 1 do + begin + Registro := ALinData[i]; + + if not Registro.REGISTRO_OK then + Continue; + + ACommand := schEDIInventary.NewCommand(AConnection, 'Insert_RDX_LININV'); + with ACommand do + begin + ParamByName('NUMDOC').AsString := Trim(Registro.NUMDOC); + ParamByName('NUMLIN').AsInteger := StrToInt(Trim(Registro.NUMLIN)); + ParamByName('CODART').AsString := Trim(Registro.CODART); + ParamByName('FAMILIA').AsString := Trim(Registro.FAMILIA); + ParamByName('BARRA').AsString := Trim(Registro.BARRA); + ParamByName('TALLA').AsString := Trim(Registro.TALLA); + ParamByName('MARCA').AsString := Trim(Registro.MARCA); + ParamByName('TAMANO').AsString := Trim(Registro.TAMANO); + ParamByName('SERIE').AsString := Trim(Registro.SERIE); + ParamByName('COLOR').AsString := Trim(Registro.COLOR); + ParamByName('MODELO').AsString := Trim(Registro.MODELO); + ParamByName('DIBUJO').AsString := Trim(Registro.DIBUJO); + ParamByName('DESCRIP').AsString := Trim(Registro.DESCRIP); + end; + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + NumRegNuevos := NumRegNuevos + 1; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (InsertarLineas INV)'); + end + end; + end; //for + Result := True; +end; + + +procedure TdmEDIInventary.InsertarLog(OK: Boolean; Error_msg: String); +var + LogService : IEDI_Log; +begin + LogService := EDI_Log_Impl.TEDI_Log.Create(Self); + try + LogService.InsertarLog(Now, 'INVRPT', OK, Error_msg); + finally + LogService := nil; + end; +end; + +function TdmEDIInventary.MarcarRegistrosUltimoInventarioEDI: Boolean; +var + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + ACommand := schEDIInventary.NewCommand(AConnection, 'RDX_P_SET_ULTIMOINVENTARIO'); + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (MarcarRegistrosUltimoInventarioEDI)'); + end + end; +end; + +initialization + dmEDIInventary := TdmEDIInventary.Create(nil); + +finalization + FreeAndNil(dmEDIInventary); + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.ddp b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.ddp differ diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.dfm b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.dfm new file mode 100644 index 0000000..2638b6c --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.dfm @@ -0,0 +1,17 @@ +object EDI_Sales: TEDI_Sales + OldCreateOrder = True + SessionManager = dmServer.SessionManager + ConnectionName = 'GFT_VARELA' + ServiceSchema = dmEDISales.schEDISales + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object DABINAdapter: TDABINAdapter + Left = 64 + Top = 32 + end +end diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.pas b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.pas new file mode 100644 index 0000000..f7d8bc9 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Impl.pas @@ -0,0 +1,143 @@ +unit EDI_Sales_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDAScriptingProvider, uDADataTable, + uDACDSDataTable, uDABusinessProcessor, uDABINAdapter, uDADataStreamer; + +type + { TEDI_Sales } + TEDI_Sales = class(TDARemoteService, IEDI_Sales) + DABINAdapter: TDABINAdapter; + private + procedure InsertarLog(OK : Boolean; Error_msg : String = ''); + protected + function CargarFicheroEDI(const FicheroCAB: String; + const FicheroLUG: String; const FicheroART: String; + out MsgError: String): Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDAInterfaces, + Dialogs, uDataModuleEDI_Sales, uDataModuleServer, + JclFileUtils, DateUtils, EDI_Log_Impl; + +procedure Create_EDI_Sales(out anInstance : IUnknown); +begin + anInstance := TEDI_Sales.Create(NIL); +end; + +{ EDI_Sales } +function TEDI_Sales.CargarFicheroEDI(const FicheroCAB: String; + const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; +var + ADirEntrada : String; + ADirTemp : String; + NumRegNuevos : Integer; + + procedure GuardarFicheros; + var + AAlmacen : String; + ADate : String; + begin + DateTimeToString(ADate, 'yyyymmddhhnn', Now); + AAlmacen := PathAddSeparator(dmServer.FDirAlmacen); + AAlmacen := PathAddSeparator(AAlmacen + ADate); + if not DirectoryExists(AAlmacen) then + ForceDirectories(AAlmacen); + FileMove(ADirTemp + FicheroCAB, AAlmacen + FicheroCAB); + FileMove(ADirTemp + FicheroLUG, AAlmacen + FicheroLUG); + FileMove(ADirTemp + FicheroART, AAlmacen + FicheroART); + FileMove(ADirTemp + FicheroART, AAlmacen + 'CONVEN.TXT'); + DeleteDirectory(ADirTemp, False); + end; + +begin + Result := False; + NumRegNuevos := 0; + + // Hay que comprobar que existen los ficheros. + ADirEntrada := PathAddSeparator(dmServer.FDirEntrada); + + if not FileExists(ADirEntrada + FicheroCAB) or + not FileExists(ADirEntrada + FicheroLUG) or + not FileExists(ADirEntrada + FicheroART) then + begin + MsgError := 'No hay ficheros de datos'; + InsertarLog(False, MsgError + ' (CargarFicheroEDI1 SLS)'); + end + else begin + + // Muevo los ficheros de carga a un directorio temporal + ADirTemp := PathAddSeparator(ADirEntrada + GetTempDirectory(ADirEntrada)); + try + if not DirectoryExists(ADirTemp) then + ForceDirectories(ADirTemp); + FileMove(ADirEntrada + FicheroCAB, ADirTemp + FicheroCAB); + FileMove(ADirEntrada + FicheroLUG, ADirTemp + FicheroLUG); + FileMove(ADirEntrada + FicheroART, ADirTemp + FicheroART); + FileMove(ADirEntrada + FicheroART, ADirTemp + 'CONVEN.TXT'); + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI2 SLS)'); + Exit; + end; + end; + + try + try + dmEDISales.CargarFicheros (ADirTemp + FicheroCAB, ADirTemp + FicheroLUG, ADirTemp + FicheroART, NumRegNuevos); + if NumRegNuevos > 0 then + InsertarLog(True, Format('Se han cargado %d registros de ventas nuevos', [NumRegNuevos])) + else + InsertarLog(True, 'El fichero se ha cargado pero no hay registros de ventas nuevos'); + Result := True; + finally + GuardarFicheros; + dmServer.BorrarFicherosDeCargaAntiguos; + end; + except + on E: Exception do + begin + MsgError := E.Message; + InsertarLog(False, MsgError + ' (CargarFicheroEDI3 SLS)'); + end; + end; + end; +end; + +procedure TEDI_Sales.InsertarLog(OK: Boolean; Error_msg: String); +var + LogService : IEDI_Log; +begin + LogService := EDI_Log_Impl.TEDI_Log.Create(Self); + try + LogService.InsertarLog(Now, 'SLSRPT', OK, Error_msg); + finally + LogService := nil; + end; +end; + +initialization + TROClassFactory.Create('EDI_Sales', Create_EDI_Sales, TEDI_Sales_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Types.pas b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Types.pas new file mode 100644 index 0000000..cb3a387 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/EDI_Sales_Types.pas @@ -0,0 +1,9 @@ +unit EDI_Sales_Types; + +interface + + + +implementation + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/schEDISalesClient_Intf.pas b/2.1.0/Source/Servidor/Services/EDI_Sales/schEDISalesClient_Intf.pas new file mode 100644 index 0000000..ccbf38c --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/schEDISalesClient_Intf.pas @@ -0,0 +1,1948 @@ +unit schEDISalesClient_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_RDX_ARTVEN = '{D0532CCF-994D-4445-B3AC-544120B18841}'; + RID_RDX_CABVEN = '{9B9CC64F-37C7-4B46-BF30-02E8CB14ED5B}'; + RID_RDX_LUGVEN = '{8CBF6BF1-7E83-43F2-BC61-6F692B9137CC}'; + + { Data table names } + nme_RDX_ARTVEN = 'RDX_ARTVEN'; + nme_RDX_CABVEN = 'RDX_CABVEN'; + nme_RDX_LUGVEN = 'RDX_LUGVEN'; + + { RDX_ARTVEN fields } + fld_RDX_ARTVENCLAVE1 = 'CLAVE1'; + fld_RDX_ARTVENCLAVE2 = 'CLAVE2'; + fld_RDX_ARTVENCLAVE3 = 'CLAVE3'; + fld_RDX_ARTVENEANART = 'EANART'; + fld_RDX_ARTVENCODCOM = 'CODCOM'; + fld_RDX_ARTVENNUMVAR = 'NUMVAR'; + fld_RDX_ARTVENCODPRO = 'CODPRO'; + fld_RDX_ARTVENDESARTCO = 'DESARTCO'; + fld_RDX_ARTVENDESART = 'DESART'; + fld_RDX_ARTVENNUMCON = 'NUMCON'; + fld_RDX_ARTVENNUMLIS = 'NUMLIS'; + fld_RDX_ARTVENCONESP1 = 'CONESP1'; + fld_RDX_ARTVENCONESP2 = 'CONESP2'; + fld_RDX_ARTVENCONESP3 = 'CONESP3'; + fld_RDX_ARTVENVALVEN = 'VALVEN'; + fld_RDX_ARTVENPRENETCT = 'PRENETCT'; + fld_RDX_ARTVENPREBRUCT = 'PREBRUCT'; + fld_RDX_ARTVENPREINFET = 'PREINFET'; + fld_RDX_ARTVENPREINFFT = 'PREINFFT'; + fld_RDX_ARTVENPRECALCT = 'PRECALCT'; + fld_RDX_ARTVENPRENETCA = 'PRENETCA'; + fld_RDX_ARTVENPREBRUCA = 'PREBRUCA'; + fld_RDX_ARTVENPREINFEA = 'PREINFEA'; + fld_RDX_ARTVENPREINFFA = 'PREINFFA'; + fld_RDX_ARTVENPRECALCA = 'PRECALCA'; + fld_RDX_ARTVENBAPRUN1 = 'BAPRUN1'; + fld_RDX_ARTVENUNIMED1 = 'UNIMED1'; + fld_RDX_ARTVENBAPRUN2 = 'BAPRUN2'; + fld_RDX_ARTVENUNIMED2 = 'UNIMED2'; + fld_RDX_ARTVENBAPRUN3 = 'BAPRUN3'; + fld_RDX_ARTVENUNIMED3 = 'UNIMED3'; + fld_RDX_ARTVENBAPRUN4 = 'BAPRUN4'; + fld_RDX_ARTVENUNIMED4 = 'UNIMED4'; + fld_RDX_ARTVENBAPRUN5 = 'BAPRUN5'; + fld_RDX_ARTVENUNIMED5 = 'UNIMED5'; + fld_RDX_ARTVENCANVEN = 'CANVEN'; + fld_RDX_ARTVENEXIPRO = 'EXIPRO'; + fld_RDX_ARTVENDESEXI = 'DESEXI'; + fld_RDX_ARTVENESPMEDCV = 'ESPMEDCV'; + fld_RDX_ARTVENESPMEDEP = 'ESPMEDEP'; + fld_RDX_ARTVENESPMEDDE = 'ESPMEDDE'; + fld_RDX_ARTVENCANDEV = 'CANDEV'; + fld_RDX_ARTVENEANVEN = 'EANVEN'; + fld_RDX_ARTVENNOMVEN = 'NOMVEN'; + fld_RDX_ARTVENNUMTALON = 'NUMTALON'; + fld_RDX_ARTVENCANVENNET = 'CANVENNET'; + fld_RDX_ARTVENUMEDVENNET = 'UMEDVENNET'; + fld_RDX_ARTVENCANESP = 'CANESP'; + fld_RDX_ARTVENUMEDESP = 'UMEDESP'; + + { RDX_ARTVEN field indexes } + idx_RDX_ARTVENCLAVE1 = 0; + idx_RDX_ARTVENCLAVE2 = 1; + idx_RDX_ARTVENCLAVE3 = 2; + idx_RDX_ARTVENEANART = 3; + idx_RDX_ARTVENCODCOM = 4; + idx_RDX_ARTVENNUMVAR = 5; + idx_RDX_ARTVENCODPRO = 6; + idx_RDX_ARTVENDESARTCO = 7; + idx_RDX_ARTVENDESART = 8; + idx_RDX_ARTVENNUMCON = 9; + idx_RDX_ARTVENNUMLIS = 10; + idx_RDX_ARTVENCONESP1 = 11; + idx_RDX_ARTVENCONESP2 = 12; + idx_RDX_ARTVENCONESP3 = 13; + idx_RDX_ARTVENVALVEN = 14; + idx_RDX_ARTVENPRENETCT = 15; + idx_RDX_ARTVENPREBRUCT = 16; + idx_RDX_ARTVENPREINFET = 17; + idx_RDX_ARTVENPREINFFT = 18; + idx_RDX_ARTVENPRECALCT = 19; + idx_RDX_ARTVENPRENETCA = 20; + idx_RDX_ARTVENPREBRUCA = 21; + idx_RDX_ARTVENPREINFEA = 22; + idx_RDX_ARTVENPREINFFA = 23; + idx_RDX_ARTVENPRECALCA = 24; + idx_RDX_ARTVENBAPRUN1 = 25; + idx_RDX_ARTVENUNIMED1 = 26; + idx_RDX_ARTVENBAPRUN2 = 27; + idx_RDX_ARTVENUNIMED2 = 28; + idx_RDX_ARTVENBAPRUN3 = 29; + idx_RDX_ARTVENUNIMED3 = 30; + idx_RDX_ARTVENBAPRUN4 = 31; + idx_RDX_ARTVENUNIMED4 = 32; + idx_RDX_ARTVENBAPRUN5 = 33; + idx_RDX_ARTVENUNIMED5 = 34; + idx_RDX_ARTVENCANVEN = 35; + idx_RDX_ARTVENEXIPRO = 36; + idx_RDX_ARTVENDESEXI = 37; + idx_RDX_ARTVENESPMEDCV = 38; + idx_RDX_ARTVENESPMEDEP = 39; + idx_RDX_ARTVENESPMEDDE = 40; + idx_RDX_ARTVENCANDEV = 41; + idx_RDX_ARTVENEANVEN = 42; + idx_RDX_ARTVENNOMVEN = 43; + idx_RDX_ARTVENNUMTALON = 44; + idx_RDX_ARTVENCANVENNET = 45; + idx_RDX_ARTVENUMEDVENNET = 46; + idx_RDX_ARTVENCANESP = 47; + idx_RDX_ARTVENUMEDESP = 48; + + { RDX_CABVEN fields } + fld_RDX_CABVENCLAVE1 = 'CLAVE1'; + fld_RDX_CABVENNUMINF = 'NUMINF'; + fld_RDX_CABVENFUNCION = 'FUNCION'; + fld_RDX_CABVENFECINI = 'FECINI'; + fld_RDX_CABVENFECFIN = 'FECFIN'; + fld_RDX_CABVENFECINF = 'FECINF'; + fld_RDX_CABVENPERVENINI = 'PERVENINI'; + fld_RDX_CABVENPERVENFIN = 'PERVENFIN'; + fld_RDX_CABVENEANOFI = 'EANOFI'; + fld_RDX_CABVENEANEMI = 'EANEMI'; + fld_RDX_CABVENEANREC = 'EANREC'; + fld_RDX_CABVENEANVEN = 'EANVEN'; + fld_RDX_CABVENEANALM = 'EANALM'; + fld_RDX_CABVENEANREP = 'EANREP'; + fld_RDX_CABVENEANPRO = 'EANPRO'; + fld_RDX_CABVENEANADMSA = 'EANADMSA'; + fld_RDX_CABVENEANREPSR = 'EANREPSR'; + fld_RDX_CABVENADMVENSA = 'ADMVENSA'; + fld_RDX_CABVENREPDEPSR = 'REPDEPSR'; + fld_RDX_CABVENEMAILSA = 'EMAILSA'; + fld_RDX_CABVENNUMFAXSA = 'NUMFAXSA'; + fld_RDX_CABVENNUMTELSA = 'NUMTELSA'; + fld_RDX_CABVENNUMTLXSA = 'NUMTLXSA'; + fld_RDX_CABVENX400SA = 'X400SA'; + fld_RDX_CABVENEMAILSR = 'EMAILSR'; + fld_RDX_CABVENNUMFAXSR = 'NUMFAXSR'; + fld_RDX_CABVENNUMTELSR = 'NUMTELSR'; + fld_RDX_CABVENNUMTLXSR = 'NUMTLXSR'; + fld_RDX_CABVENX400SR = 'X400SR'; + fld_RDX_CABVENNUMPRE = 'NUMPRE'; + fld_RDX_CABVENNUMINFSC = 'NUMINFSC'; + fld_RDX_CABVENNUMCON = 'NUMCON'; + fld_RDX_CABVENFECPRE = 'FECPRE'; + fld_RDX_CABVENFECINFSC = 'FECINFSC'; + fld_RDX_CABVENFECCON = 'FECCON'; + fld_RDX_CABVENDIVPED = 'DIVPED'; + fld_RDX_CABVENDIVPRE = 'DIVPRE'; + fld_RDX_CABVENDIVPAG = 'DIVPAG'; + fld_RDX_CABVENDIVPEDF = 'DIVPEDF'; + fld_RDX_CABVENDIVPREF = 'DIVPREF'; + fld_RDX_CABVENDIVPAGF = 'DIVPAGF'; + fld_RDX_CABVENTASCAM = 'TASCAM'; + fld_RDX_CABVENFECTAS = 'FECTAS'; + + { RDX_CABVEN field indexes } + idx_RDX_CABVENCLAVE1 = 0; + idx_RDX_CABVENNUMINF = 1; + idx_RDX_CABVENFUNCION = 2; + idx_RDX_CABVENFECINI = 3; + idx_RDX_CABVENFECFIN = 4; + idx_RDX_CABVENFECINF = 5; + idx_RDX_CABVENPERVENINI = 6; + idx_RDX_CABVENPERVENFIN = 7; + idx_RDX_CABVENEANOFI = 8; + idx_RDX_CABVENEANEMI = 9; + idx_RDX_CABVENEANREC = 10; + idx_RDX_CABVENEANVEN = 11; + idx_RDX_CABVENEANALM = 12; + idx_RDX_CABVENEANREP = 13; + idx_RDX_CABVENEANPRO = 14; + idx_RDX_CABVENEANADMSA = 15; + idx_RDX_CABVENEANREPSR = 16; + idx_RDX_CABVENADMVENSA = 17; + idx_RDX_CABVENREPDEPSR = 18; + idx_RDX_CABVENEMAILSA = 19; + idx_RDX_CABVENNUMFAXSA = 20; + idx_RDX_CABVENNUMTELSA = 21; + idx_RDX_CABVENNUMTLXSA = 22; + idx_RDX_CABVENX400SA = 23; + idx_RDX_CABVENEMAILSR = 24; + idx_RDX_CABVENNUMFAXSR = 25; + idx_RDX_CABVENNUMTELSR = 26; + idx_RDX_CABVENNUMTLXSR = 27; + idx_RDX_CABVENX400SR = 28; + idx_RDX_CABVENNUMPRE = 29; + idx_RDX_CABVENNUMINFSC = 30; + idx_RDX_CABVENNUMCON = 31; + idx_RDX_CABVENFECPRE = 32; + idx_RDX_CABVENFECINFSC = 33; + idx_RDX_CABVENFECCON = 34; + idx_RDX_CABVENDIVPED = 35; + idx_RDX_CABVENDIVPRE = 36; + idx_RDX_CABVENDIVPAG = 37; + idx_RDX_CABVENDIVPEDF = 38; + idx_RDX_CABVENDIVPREF = 39; + idx_RDX_CABVENDIVPAGF = 40; + idx_RDX_CABVENTASCAM = 41; + idx_RDX_CABVENFECTAS = 42; + + { RDX_LUGVEN fields } + fld_RDX_LUGVENCLAVE1 = 'CLAVE1'; + fld_RDX_LUGVENCLAVE2 = 'CLAVE2'; + fld_RDX_LUGVENEANLUG = 'EANLUG'; + fld_RDX_LUGVENLUGVEN = 'LUGVEN'; + fld_RDX_LUGVENFECINI = 'FECINI'; + fld_RDX_LUGVENFECFIN = 'FECFIN'; + fld_RDX_LUGVENPERVENINI = 'PERVENINI'; + fld_RDX_LUGVENPERVENFIN = 'PERVENFIN'; + + { RDX_LUGVEN field indexes } + idx_RDX_LUGVENCLAVE1 = 0; + idx_RDX_LUGVENCLAVE2 = 1; + idx_RDX_LUGVENEANLUG = 2; + idx_RDX_LUGVENLUGVEN = 3; + idx_RDX_LUGVENFECINI = 4; + idx_RDX_LUGVENFECFIN = 5; + idx_RDX_LUGVENPERVENINI = 6; + idx_RDX_LUGVENPERVENFIN = 7; + +type + { IRDX_ARTVEN } + IRDX_ARTVEN = interface(IDAStronglyTypedDataTable) + ['{9EC1A018-B12C-49B8-A8D7-852A5453C9B0}'] + { Property getters and setters } + function GetCLAVE1Value: Float; + procedure SetCLAVE1Value(const aValue: Float); + function GetCLAVE2Value: Float; + procedure SetCLAVE2Value(const aValue: Float); + function GetCLAVE3Value: Float; + procedure SetCLAVE3Value(const aValue: Float); + function GetEANARTValue: String; + procedure SetEANARTValue(const aValue: String); + function GetCODCOMValue: String; + procedure SetCODCOMValue(const aValue: String); + function GetNUMVARValue: String; + procedure SetNUMVARValue(const aValue: String); + function GetCODPROValue: String; + procedure SetCODPROValue(const aValue: String); + function GetDESARTCOValue: String; + procedure SetDESARTCOValue(const aValue: String); + function GetDESARTValue: String; + procedure SetDESARTValue(const aValue: String); + function GetNUMCONValue: String; + procedure SetNUMCONValue(const aValue: String); + function GetNUMLISValue: String; + procedure SetNUMLISValue(const aValue: String); + function GetCONESP1Value: String; + procedure SetCONESP1Value(const aValue: String); + function GetCONESP2Value: String; + procedure SetCONESP2Value(const aValue: String); + function GetCONESP3Value: String; + procedure SetCONESP3Value(const aValue: String); + function GetVALVENValue: Float; + procedure SetVALVENValue(const aValue: Float); + function GetPRENETCTValue: Float; + procedure SetPRENETCTValue(const aValue: Float); + function GetPREBRUCTValue: Float; + procedure SetPREBRUCTValue(const aValue: Float); + function GetPREINFETValue: Float; + procedure SetPREINFETValue(const aValue: Float); + function GetPREINFFTValue: Float; + procedure SetPREINFFTValue(const aValue: Float); + function GetPRECALCTValue: Float; + procedure SetPRECALCTValue(const aValue: Float); + function GetPRENETCAValue: Float; + procedure SetPRENETCAValue(const aValue: Float); + function GetPREBRUCAValue: Float; + procedure SetPREBRUCAValue(const aValue: Float); + function GetPREINFEAValue: Float; + procedure SetPREINFEAValue(const aValue: Float); + function GetPREINFFAValue: Float; + procedure SetPREINFFAValue(const aValue: Float); + function GetPRECALCAValue: Float; + procedure SetPRECALCAValue(const aValue: Float); + function GetBAPRUN1Value: Float; + procedure SetBAPRUN1Value(const aValue: Float); + function GetUNIMED1Value: String; + procedure SetUNIMED1Value(const aValue: String); + function GetBAPRUN2Value: Float; + procedure SetBAPRUN2Value(const aValue: Float); + function GetUNIMED2Value: String; + procedure SetUNIMED2Value(const aValue: String); + function GetBAPRUN3Value: Float; + procedure SetBAPRUN3Value(const aValue: Float); + function GetUNIMED3Value: String; + procedure SetUNIMED3Value(const aValue: String); + function GetBAPRUN4Value: Float; + procedure SetBAPRUN4Value(const aValue: Float); + function GetUNIMED4Value: String; + procedure SetUNIMED4Value(const aValue: String); + function GetBAPRUN5Value: Float; + procedure SetBAPRUN5Value(const aValue: Float); + function GetUNIMED5Value: String; + procedure SetUNIMED5Value(const aValue: String); + function GetCANVENValue: Float; + procedure SetCANVENValue(const aValue: Float); + function GetEXIPROValue: Float; + procedure SetEXIPROValue(const aValue: Float); + function GetDESEXIValue: Float; + procedure SetDESEXIValue(const aValue: Float); + function GetESPMEDCVValue: String; + procedure SetESPMEDCVValue(const aValue: String); + function GetESPMEDEPValue: String; + procedure SetESPMEDEPValue(const aValue: String); + function GetESPMEDDEValue: String; + procedure SetESPMEDDEValue(const aValue: String); + function GetCANDEVValue: Float; + procedure SetCANDEVValue(const aValue: Float); + function GetEANVENValue: String; + procedure SetEANVENValue(const aValue: String); + function GetNOMVENValue: String; + procedure SetNOMVENValue(const aValue: String); + function GetNUMTALONValue: String; + procedure SetNUMTALONValue(const aValue: String); + function GetCANVENNETValue: Float; + procedure SetCANVENNETValue(const aValue: Float); + function GetUMEDVENNETValue: String; + procedure SetUMEDVENNETValue(const aValue: String); + function GetCANESPValue: Float; + procedure SetCANESPValue(const aValue: Float); + function GetUMEDESPValue: String; + procedure SetUMEDESPValue(const aValue: String); + + + { Properties } + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE2: Float read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE3: Float read GetCLAVE3Value write SetCLAVE3Value; + property EANART: String read GetEANARTValue write SetEANARTValue; + property CODCOM: String read GetCODCOMValue write SetCODCOMValue; + property NUMVAR: String read GetNUMVARValue write SetNUMVARValue; + property CODPRO: String read GetCODPROValue write SetCODPROValue; + property DESARTCO: String read GetDESARTCOValue write SetDESARTCOValue; + property DESART: String read GetDESARTValue write SetDESARTValue; + property NUMCON: String read GetNUMCONValue write SetNUMCONValue; + property NUMLIS: String read GetNUMLISValue write SetNUMLISValue; + property CONESP1: String read GetCONESP1Value write SetCONESP1Value; + property CONESP2: String read GetCONESP2Value write SetCONESP2Value; + property CONESP3: String read GetCONESP3Value write SetCONESP3Value; + property VALVEN: Float read GetVALVENValue write SetVALVENValue; + property PRENETCT: Float read GetPRENETCTValue write SetPRENETCTValue; + property PREBRUCT: Float read GetPREBRUCTValue write SetPREBRUCTValue; + property PREINFET: Float read GetPREINFETValue write SetPREINFETValue; + property PREINFFT: Float read GetPREINFFTValue write SetPREINFFTValue; + property PRECALCT: Float read GetPRECALCTValue write SetPRECALCTValue; + property PRENETCA: Float read GetPRENETCAValue write SetPRENETCAValue; + property PREBRUCA: Float read GetPREBRUCAValue write SetPREBRUCAValue; + property PREINFEA: Float read GetPREINFEAValue write SetPREINFEAValue; + property PREINFFA: Float read GetPREINFFAValue write SetPREINFFAValue; + property PRECALCA: Float read GetPRECALCAValue write SetPRECALCAValue; + property BAPRUN1: Float read GetBAPRUN1Value write SetBAPRUN1Value; + property UNIMED1: String read GetUNIMED1Value write SetUNIMED1Value; + property BAPRUN2: Float read GetBAPRUN2Value write SetBAPRUN2Value; + property UNIMED2: String read GetUNIMED2Value write SetUNIMED2Value; + property BAPRUN3: Float read GetBAPRUN3Value write SetBAPRUN3Value; + property UNIMED3: String read GetUNIMED3Value write SetUNIMED3Value; + property BAPRUN4: Float read GetBAPRUN4Value write SetBAPRUN4Value; + property UNIMED4: String read GetUNIMED4Value write SetUNIMED4Value; + property BAPRUN5: Float read GetBAPRUN5Value write SetBAPRUN5Value; + property UNIMED5: String read GetUNIMED5Value write SetUNIMED5Value; + property CANVEN: Float read GetCANVENValue write SetCANVENValue; + property EXIPRO: Float read GetEXIPROValue write SetEXIPROValue; + property DESEXI: Float read GetDESEXIValue write SetDESEXIValue; + property ESPMEDCV: String read GetESPMEDCVValue write SetESPMEDCVValue; + property ESPMEDEP: String read GetESPMEDEPValue write SetESPMEDEPValue; + property ESPMEDDE: String read GetESPMEDDEValue write SetESPMEDDEValue; + property CANDEV: Float read GetCANDEVValue write SetCANDEVValue; + property EANVEN: String read GetEANVENValue write SetEANVENValue; + property NOMVEN: String read GetNOMVENValue write SetNOMVENValue; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property CANVENNET: Float read GetCANVENNETValue write SetCANVENNETValue; + property UMEDVENNET: String read GetUMEDVENNETValue write SetUMEDVENNETValue; + property CANESP: Float read GetCANESPValue write SetCANESPValue; + property UMEDESP: String read GetUMEDESPValue write SetUMEDESPValue; + end; + + { TRDX_ARTVENDataTableRules } + TRDX_ARTVENDataTableRules = class(TDADataTableRules, IRDX_ARTVEN) + private + protected + { Property getters and setters } + function GetCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE2Value: Float; virtual; + procedure SetCLAVE2Value(const aValue: Float); virtual; + function GetCLAVE3Value: Float; virtual; + procedure SetCLAVE3Value(const aValue: Float); virtual; + function GetEANARTValue: String; virtual; + procedure SetEANARTValue(const aValue: String); virtual; + function GetCODCOMValue: String; virtual; + procedure SetCODCOMValue(const aValue: String); virtual; + function GetNUMVARValue: String; virtual; + procedure SetNUMVARValue(const aValue: String); virtual; + function GetCODPROValue: String; virtual; + procedure SetCODPROValue(const aValue: String); virtual; + function GetDESARTCOValue: String; virtual; + procedure SetDESARTCOValue(const aValue: String); virtual; + function GetDESARTValue: String; virtual; + procedure SetDESARTValue(const aValue: String); virtual; + function GetNUMCONValue: String; virtual; + procedure SetNUMCONValue(const aValue: String); virtual; + function GetNUMLISValue: String; virtual; + procedure SetNUMLISValue(const aValue: String); virtual; + function GetCONESP1Value: String; virtual; + procedure SetCONESP1Value(const aValue: String); virtual; + function GetCONESP2Value: String; virtual; + procedure SetCONESP2Value(const aValue: String); virtual; + function GetCONESP3Value: String; virtual; + procedure SetCONESP3Value(const aValue: String); virtual; + function GetVALVENValue: Float; virtual; + procedure SetVALVENValue(const aValue: Float); virtual; + function GetPRENETCTValue: Float; virtual; + procedure SetPRENETCTValue(const aValue: Float); virtual; + function GetPREBRUCTValue: Float; virtual; + procedure SetPREBRUCTValue(const aValue: Float); virtual; + function GetPREINFETValue: Float; virtual; + procedure SetPREINFETValue(const aValue: Float); virtual; + function GetPREINFFTValue: Float; virtual; + procedure SetPREINFFTValue(const aValue: Float); virtual; + function GetPRECALCTValue: Float; virtual; + procedure SetPRECALCTValue(const aValue: Float); virtual; + function GetPRENETCAValue: Float; virtual; + procedure SetPRENETCAValue(const aValue: Float); virtual; + function GetPREBRUCAValue: Float; virtual; + procedure SetPREBRUCAValue(const aValue: Float); virtual; + function GetPREINFEAValue: Float; virtual; + procedure SetPREINFEAValue(const aValue: Float); virtual; + function GetPREINFFAValue: Float; virtual; + procedure SetPREINFFAValue(const aValue: Float); virtual; + function GetPRECALCAValue: Float; virtual; + procedure SetPRECALCAValue(const aValue: Float); virtual; + function GetBAPRUN1Value: Float; virtual; + procedure SetBAPRUN1Value(const aValue: Float); virtual; + function GetUNIMED1Value: String; virtual; + procedure SetUNIMED1Value(const aValue: String); virtual; + function GetBAPRUN2Value: Float; virtual; + procedure SetBAPRUN2Value(const aValue: Float); virtual; + function GetUNIMED2Value: String; virtual; + procedure SetUNIMED2Value(const aValue: String); virtual; + function GetBAPRUN3Value: Float; virtual; + procedure SetBAPRUN3Value(const aValue: Float); virtual; + function GetUNIMED3Value: String; virtual; + procedure SetUNIMED3Value(const aValue: String); virtual; + function GetBAPRUN4Value: Float; virtual; + procedure SetBAPRUN4Value(const aValue: Float); virtual; + function GetUNIMED4Value: String; virtual; + procedure SetUNIMED4Value(const aValue: String); virtual; + function GetBAPRUN5Value: Float; virtual; + procedure SetBAPRUN5Value(const aValue: Float); virtual; + function GetUNIMED5Value: String; virtual; + procedure SetUNIMED5Value(const aValue: String); virtual; + function GetCANVENValue: Float; virtual; + procedure SetCANVENValue(const aValue: Float); virtual; + function GetEXIPROValue: Float; virtual; + procedure SetEXIPROValue(const aValue: Float); virtual; + function GetDESEXIValue: Float; virtual; + procedure SetDESEXIValue(const aValue: Float); virtual; + function GetESPMEDCVValue: String; virtual; + procedure SetESPMEDCVValue(const aValue: String); virtual; + function GetESPMEDEPValue: String; virtual; + procedure SetESPMEDEPValue(const aValue: String); virtual; + function GetESPMEDDEValue: String; virtual; + procedure SetESPMEDDEValue(const aValue: String); virtual; + function GetCANDEVValue: Float; virtual; + procedure SetCANDEVValue(const aValue: Float); virtual; + function GetEANVENValue: String; virtual; + procedure SetEANVENValue(const aValue: String); virtual; + function GetNOMVENValue: String; virtual; + procedure SetNOMVENValue(const aValue: String); virtual; + function GetNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetCANVENNETValue: Float; virtual; + procedure SetCANVENNETValue(const aValue: Float); virtual; + function GetUMEDVENNETValue: String; virtual; + procedure SetUMEDVENNETValue(const aValue: String); virtual; + function GetCANESPValue: Float; virtual; + procedure SetCANESPValue(const aValue: Float); virtual; + function GetUMEDESPValue: String; virtual; + procedure SetUMEDESPValue(const aValue: String); virtual; + + { Properties } + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE2: Float read GetCLAVE2Value write SetCLAVE2Value; + property CLAVE3: Float read GetCLAVE3Value write SetCLAVE3Value; + property EANART: String read GetEANARTValue write SetEANARTValue; + property CODCOM: String read GetCODCOMValue write SetCODCOMValue; + property NUMVAR: String read GetNUMVARValue write SetNUMVARValue; + property CODPRO: String read GetCODPROValue write SetCODPROValue; + property DESARTCO: String read GetDESARTCOValue write SetDESARTCOValue; + property DESART: String read GetDESARTValue write SetDESARTValue; + property NUMCON: String read GetNUMCONValue write SetNUMCONValue; + property NUMLIS: String read GetNUMLISValue write SetNUMLISValue; + property CONESP1: String read GetCONESP1Value write SetCONESP1Value; + property CONESP2: String read GetCONESP2Value write SetCONESP2Value; + property CONESP3: String read GetCONESP3Value write SetCONESP3Value; + property VALVEN: Float read GetVALVENValue write SetVALVENValue; + property PRENETCT: Float read GetPRENETCTValue write SetPRENETCTValue; + property PREBRUCT: Float read GetPREBRUCTValue write SetPREBRUCTValue; + property PREINFET: Float read GetPREINFETValue write SetPREINFETValue; + property PREINFFT: Float read GetPREINFFTValue write SetPREINFFTValue; + property PRECALCT: Float read GetPRECALCTValue write SetPRECALCTValue; + property PRENETCA: Float read GetPRENETCAValue write SetPRENETCAValue; + property PREBRUCA: Float read GetPREBRUCAValue write SetPREBRUCAValue; + property PREINFEA: Float read GetPREINFEAValue write SetPREINFEAValue; + property PREINFFA: Float read GetPREINFFAValue write SetPREINFFAValue; + property PRECALCA: Float read GetPRECALCAValue write SetPRECALCAValue; + property BAPRUN1: Float read GetBAPRUN1Value write SetBAPRUN1Value; + property UNIMED1: String read GetUNIMED1Value write SetUNIMED1Value; + property BAPRUN2: Float read GetBAPRUN2Value write SetBAPRUN2Value; + property UNIMED2: String read GetUNIMED2Value write SetUNIMED2Value; + property BAPRUN3: Float read GetBAPRUN3Value write SetBAPRUN3Value; + property UNIMED3: String read GetUNIMED3Value write SetUNIMED3Value; + property BAPRUN4: Float read GetBAPRUN4Value write SetBAPRUN4Value; + property UNIMED4: String read GetUNIMED4Value write SetUNIMED4Value; + property BAPRUN5: Float read GetBAPRUN5Value write SetBAPRUN5Value; + property UNIMED5: String read GetUNIMED5Value write SetUNIMED5Value; + property CANVEN: Float read GetCANVENValue write SetCANVENValue; + property EXIPRO: Float read GetEXIPROValue write SetEXIPROValue; + property DESEXI: Float read GetDESEXIValue write SetDESEXIValue; + property ESPMEDCV: String read GetESPMEDCVValue write SetESPMEDCVValue; + property ESPMEDEP: String read GetESPMEDEPValue write SetESPMEDEPValue; + property ESPMEDDE: String read GetESPMEDDEValue write SetESPMEDDEValue; + property CANDEV: Float read GetCANDEVValue write SetCANDEVValue; + property EANVEN: String read GetEANVENValue write SetEANVENValue; + property NOMVEN: String read GetNOMVENValue write SetNOMVENValue; + property NUMTALON: String read GetNUMTALONValue write SetNUMTALONValue; + property CANVENNET: Float read GetCANVENNETValue write SetCANVENNETValue; + property UMEDVENNET: String read GetUMEDVENNETValue write SetUMEDVENNETValue; + property CANESP: Float read GetCANESPValue write SetCANESPValue; + property UMEDESP: String read GetUMEDESPValue write SetUMEDESPValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRDX_CABVEN } + IRDX_CABVEN = interface(IDAStronglyTypedDataTable) + ['{5180F5AB-5BAF-4C8C-80F8-498D0D1252B5}'] + { Property getters and setters } + function GetCLAVE1Value: Float; + procedure SetCLAVE1Value(const aValue: Float); + function GetNUMINFValue: String; + procedure SetNUMINFValue(const aValue: String); + function GetFUNCIONValue: String; + procedure SetFUNCIONValue(const aValue: String); + function GetFECINIValue: DateTime; + procedure SetFECINIValue(const aValue: DateTime); + function GetFECFINValue: DateTime; + procedure SetFECFINValue(const aValue: DateTime); + function GetFECINFValue: DateTime; + procedure SetFECINFValue(const aValue: DateTime); + function GetPERVENINIValue: DateTime; + procedure SetPERVENINIValue(const aValue: DateTime); + function GetPERVENFINValue: DateTime; + procedure SetPERVENFINValue(const aValue: DateTime); + function GetEANOFIValue: String; + procedure SetEANOFIValue(const aValue: String); + function GetEANEMIValue: String; + procedure SetEANEMIValue(const aValue: String); + function GetEANRECValue: String; + procedure SetEANRECValue(const aValue: String); + function GetEANVENValue: String; + procedure SetEANVENValue(const aValue: String); + function GetEANALMValue: String; + procedure SetEANALMValue(const aValue: String); + function GetEANREPValue: String; + procedure SetEANREPValue(const aValue: String); + function GetEANPROValue: String; + procedure SetEANPROValue(const aValue: String); + function GetEANADMSAValue: String; + procedure SetEANADMSAValue(const aValue: String); + function GetEANREPSRValue: String; + procedure SetEANREPSRValue(const aValue: String); + function GetADMVENSAValue: String; + procedure SetADMVENSAValue(const aValue: String); + function GetREPDEPSRValue: String; + procedure SetREPDEPSRValue(const aValue: String); + function GetEMAILSAValue: String; + procedure SetEMAILSAValue(const aValue: String); + function GetNUMFAXSAValue: String; + procedure SetNUMFAXSAValue(const aValue: String); + function GetNUMTELSAValue: String; + procedure SetNUMTELSAValue(const aValue: String); + function GetNUMTLXSAValue: String; + procedure SetNUMTLXSAValue(const aValue: String); + function GetX400SAValue: String; + procedure SetX400SAValue(const aValue: String); + function GetEMAILSRValue: String; + procedure SetEMAILSRValue(const aValue: String); + function GetNUMFAXSRValue: String; + procedure SetNUMFAXSRValue(const aValue: String); + function GetNUMTELSRValue: String; + procedure SetNUMTELSRValue(const aValue: String); + function GetNUMTLXSRValue: String; + procedure SetNUMTLXSRValue(const aValue: String); + function GetX400SRValue: String; + procedure SetX400SRValue(const aValue: String); + function GetNUMPREValue: String; + procedure SetNUMPREValue(const aValue: String); + function GetNUMINFSCValue: String; + procedure SetNUMINFSCValue(const aValue: String); + function GetNUMCONValue: String; + procedure SetNUMCONValue(const aValue: String); + function GetFECPREValue: DateTime; + procedure SetFECPREValue(const aValue: DateTime); + function GetFECINFSCValue: DateTime; + procedure SetFECINFSCValue(const aValue: DateTime); + function GetFECCONValue: DateTime; + procedure SetFECCONValue(const aValue: DateTime); + function GetDIVPEDValue: String; + procedure SetDIVPEDValue(const aValue: String); + function GetDIVPREValue: String; + procedure SetDIVPREValue(const aValue: String); + function GetDIVPAGValue: String; + procedure SetDIVPAGValue(const aValue: String); + function GetDIVPEDFValue: String; + procedure SetDIVPEDFValue(const aValue: String); + function GetDIVPREFValue: String; + procedure SetDIVPREFValue(const aValue: String); + function GetDIVPAGFValue: String; + procedure SetDIVPAGFValue(const aValue: String); + function GetTASCAMValue: Float; + procedure SetTASCAMValue(const aValue: Float); + function GetFECTASValue: DateTime; + procedure SetFECTASValue(const aValue: DateTime); + + + { Properties } + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property FUNCION: String read GetFUNCIONValue write SetFUNCIONValue; + property FECINI: DateTime read GetFECINIValue write SetFECINIValue; + property FECFIN: DateTime read GetFECFINValue write SetFECFINValue; + property FECINF: DateTime read GetFECINFValue write SetFECINFValue; + property PERVENINI: DateTime read GetPERVENINIValue write SetPERVENINIValue; + property PERVENFIN: DateTime read GetPERVENFINValue write SetPERVENFINValue; + property EANOFI: String read GetEANOFIValue write SetEANOFIValue; + property EANEMI: String read GetEANEMIValue write SetEANEMIValue; + property EANREC: String read GetEANRECValue write SetEANRECValue; + property EANVEN: String read GetEANVENValue write SetEANVENValue; + property EANALM: String read GetEANALMValue write SetEANALMValue; + property EANREP: String read GetEANREPValue write SetEANREPValue; + property EANPRO: String read GetEANPROValue write SetEANPROValue; + property EANADMSA: String read GetEANADMSAValue write SetEANADMSAValue; + property EANREPSR: String read GetEANREPSRValue write SetEANREPSRValue; + property ADMVENSA: String read GetADMVENSAValue write SetADMVENSAValue; + property REPDEPSR: String read GetREPDEPSRValue write SetREPDEPSRValue; + property EMAILSA: String read GetEMAILSAValue write SetEMAILSAValue; + property NUMFAXSA: String read GetNUMFAXSAValue write SetNUMFAXSAValue; + property NUMTELSA: String read GetNUMTELSAValue write SetNUMTELSAValue; + property NUMTLXSA: String read GetNUMTLXSAValue write SetNUMTLXSAValue; + property X400SA: String read GetX400SAValue write SetX400SAValue; + property EMAILSR: String read GetEMAILSRValue write SetEMAILSRValue; + property NUMFAXSR: String read GetNUMFAXSRValue write SetNUMFAXSRValue; + property NUMTELSR: String read GetNUMTELSRValue write SetNUMTELSRValue; + property NUMTLXSR: String read GetNUMTLXSRValue write SetNUMTLXSRValue; + property X400SR: String read GetX400SRValue write SetX400SRValue; + property NUMPRE: String read GetNUMPREValue write SetNUMPREValue; + property NUMINFSC: String read GetNUMINFSCValue write SetNUMINFSCValue; + property NUMCON: String read GetNUMCONValue write SetNUMCONValue; + property FECPRE: DateTime read GetFECPREValue write SetFECPREValue; + property FECINFSC: DateTime read GetFECINFSCValue write SetFECINFSCValue; + property FECCON: DateTime read GetFECCONValue write SetFECCONValue; + property DIVPED: String read GetDIVPEDValue write SetDIVPEDValue; + property DIVPRE: String read GetDIVPREValue write SetDIVPREValue; + property DIVPAG: String read GetDIVPAGValue write SetDIVPAGValue; + property DIVPEDF: String read GetDIVPEDFValue write SetDIVPEDFValue; + property DIVPREF: String read GetDIVPREFValue write SetDIVPREFValue; + property DIVPAGF: String read GetDIVPAGFValue write SetDIVPAGFValue; + property TASCAM: Float read GetTASCAMValue write SetTASCAMValue; + property FECTAS: DateTime read GetFECTASValue write SetFECTASValue; + end; + + { TRDX_CABVENDataTableRules } + TRDX_CABVENDataTableRules = class(TDADataTableRules, IRDX_CABVEN) + private + protected + { Property getters and setters } + function GetCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetFUNCIONValue: String; virtual; + procedure SetFUNCIONValue(const aValue: String); virtual; + function GetFECINIValue: DateTime; virtual; + procedure SetFECINIValue(const aValue: DateTime); virtual; + function GetFECFINValue: DateTime; virtual; + procedure SetFECFINValue(const aValue: DateTime); virtual; + function GetFECINFValue: DateTime; virtual; + procedure SetFECINFValue(const aValue: DateTime); virtual; + function GetPERVENINIValue: DateTime; virtual; + procedure SetPERVENINIValue(const aValue: DateTime); virtual; + function GetPERVENFINValue: DateTime; virtual; + procedure SetPERVENFINValue(const aValue: DateTime); virtual; + function GetEANOFIValue: String; virtual; + procedure SetEANOFIValue(const aValue: String); virtual; + function GetEANEMIValue: String; virtual; + procedure SetEANEMIValue(const aValue: String); virtual; + function GetEANRECValue: String; virtual; + procedure SetEANRECValue(const aValue: String); virtual; + function GetEANVENValue: String; virtual; + procedure SetEANVENValue(const aValue: String); virtual; + function GetEANALMValue: String; virtual; + procedure SetEANALMValue(const aValue: String); virtual; + function GetEANREPValue: String; virtual; + procedure SetEANREPValue(const aValue: String); virtual; + function GetEANPROValue: String; virtual; + procedure SetEANPROValue(const aValue: String); virtual; + function GetEANADMSAValue: String; virtual; + procedure SetEANADMSAValue(const aValue: String); virtual; + function GetEANREPSRValue: String; virtual; + procedure SetEANREPSRValue(const aValue: String); virtual; + function GetADMVENSAValue: String; virtual; + procedure SetADMVENSAValue(const aValue: String); virtual; + function GetREPDEPSRValue: String; virtual; + procedure SetREPDEPSRValue(const aValue: String); virtual; + function GetEMAILSAValue: String; virtual; + procedure SetEMAILSAValue(const aValue: String); virtual; + function GetNUMFAXSAValue: String; virtual; + procedure SetNUMFAXSAValue(const aValue: String); virtual; + function GetNUMTELSAValue: String; virtual; + procedure SetNUMTELSAValue(const aValue: String); virtual; + function GetNUMTLXSAValue: String; virtual; + procedure SetNUMTLXSAValue(const aValue: String); virtual; + function GetX400SAValue: String; virtual; + procedure SetX400SAValue(const aValue: String); virtual; + function GetEMAILSRValue: String; virtual; + procedure SetEMAILSRValue(const aValue: String); virtual; + function GetNUMFAXSRValue: String; virtual; + procedure SetNUMFAXSRValue(const aValue: String); virtual; + function GetNUMTELSRValue: String; virtual; + procedure SetNUMTELSRValue(const aValue: String); virtual; + function GetNUMTLXSRValue: String; virtual; + procedure SetNUMTLXSRValue(const aValue: String); virtual; + function GetX400SRValue: String; virtual; + procedure SetX400SRValue(const aValue: String); virtual; + function GetNUMPREValue: String; virtual; + procedure SetNUMPREValue(const aValue: String); virtual; + function GetNUMINFSCValue: String; virtual; + procedure SetNUMINFSCValue(const aValue: String); virtual; + function GetNUMCONValue: String; virtual; + procedure SetNUMCONValue(const aValue: String); virtual; + function GetFECPREValue: DateTime; virtual; + procedure SetFECPREValue(const aValue: DateTime); virtual; + function GetFECINFSCValue: DateTime; virtual; + procedure SetFECINFSCValue(const aValue: DateTime); virtual; + function GetFECCONValue: DateTime; virtual; + procedure SetFECCONValue(const aValue: DateTime); virtual; + function GetDIVPEDValue: String; virtual; + procedure SetDIVPEDValue(const aValue: String); virtual; + function GetDIVPREValue: String; virtual; + procedure SetDIVPREValue(const aValue: String); virtual; + function GetDIVPAGValue: String; virtual; + procedure SetDIVPAGValue(const aValue: String); virtual; + function GetDIVPEDFValue: String; virtual; + procedure SetDIVPEDFValue(const aValue: String); virtual; + function GetDIVPREFValue: String; virtual; + procedure SetDIVPREFValue(const aValue: String); virtual; + function GetDIVPAGFValue: String; virtual; + procedure SetDIVPAGFValue(const aValue: String); virtual; + function GetTASCAMValue: Float; virtual; + procedure SetTASCAMValue(const aValue: Float); virtual; + function GetFECTASValue: DateTime; virtual; + procedure SetFECTASValue(const aValue: DateTime); virtual; + + { Properties } + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property NUMINF: String read GetNUMINFValue write SetNUMINFValue; + property FUNCION: String read GetFUNCIONValue write SetFUNCIONValue; + property FECINI: DateTime read GetFECINIValue write SetFECINIValue; + property FECFIN: DateTime read GetFECFINValue write SetFECFINValue; + property FECINF: DateTime read GetFECINFValue write SetFECINFValue; + property PERVENINI: DateTime read GetPERVENINIValue write SetPERVENINIValue; + property PERVENFIN: DateTime read GetPERVENFINValue write SetPERVENFINValue; + property EANOFI: String read GetEANOFIValue write SetEANOFIValue; + property EANEMI: String read GetEANEMIValue write SetEANEMIValue; + property EANREC: String read GetEANRECValue write SetEANRECValue; + property EANVEN: String read GetEANVENValue write SetEANVENValue; + property EANALM: String read GetEANALMValue write SetEANALMValue; + property EANREP: String read GetEANREPValue write SetEANREPValue; + property EANPRO: String read GetEANPROValue write SetEANPROValue; + property EANADMSA: String read GetEANADMSAValue write SetEANADMSAValue; + property EANREPSR: String read GetEANREPSRValue write SetEANREPSRValue; + property ADMVENSA: String read GetADMVENSAValue write SetADMVENSAValue; + property REPDEPSR: String read GetREPDEPSRValue write SetREPDEPSRValue; + property EMAILSA: String read GetEMAILSAValue write SetEMAILSAValue; + property NUMFAXSA: String read GetNUMFAXSAValue write SetNUMFAXSAValue; + property NUMTELSA: String read GetNUMTELSAValue write SetNUMTELSAValue; + property NUMTLXSA: String read GetNUMTLXSAValue write SetNUMTLXSAValue; + property X400SA: String read GetX400SAValue write SetX400SAValue; + property EMAILSR: String read GetEMAILSRValue write SetEMAILSRValue; + property NUMFAXSR: String read GetNUMFAXSRValue write SetNUMFAXSRValue; + property NUMTELSR: String read GetNUMTELSRValue write SetNUMTELSRValue; + property NUMTLXSR: String read GetNUMTLXSRValue write SetNUMTLXSRValue; + property X400SR: String read GetX400SRValue write SetX400SRValue; + property NUMPRE: String read GetNUMPREValue write SetNUMPREValue; + property NUMINFSC: String read GetNUMINFSCValue write SetNUMINFSCValue; + property NUMCON: String read GetNUMCONValue write SetNUMCONValue; + property FECPRE: DateTime read GetFECPREValue write SetFECPREValue; + property FECINFSC: DateTime read GetFECINFSCValue write SetFECINFSCValue; + property FECCON: DateTime read GetFECCONValue write SetFECCONValue; + property DIVPED: String read GetDIVPEDValue write SetDIVPEDValue; + property DIVPRE: String read GetDIVPREValue write SetDIVPREValue; + property DIVPAG: String read GetDIVPAGValue write SetDIVPAGValue; + property DIVPEDF: String read GetDIVPEDFValue write SetDIVPEDFValue; + property DIVPREF: String read GetDIVPREFValue write SetDIVPREFValue; + property DIVPAGF: String read GetDIVPAGFValue write SetDIVPAGFValue; + property TASCAM: Float read GetTASCAMValue write SetTASCAMValue; + property FECTAS: DateTime read GetFECTASValue write SetFECTASValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IRDX_LUGVEN } + IRDX_LUGVEN = interface(IDAStronglyTypedDataTable) + ['{1F9C102A-BE07-4CEC-BBE3-7B062C9F8618}'] + { Property getters and setters } + function GetCLAVE1Value: Float; + procedure SetCLAVE1Value(const aValue: Float); + function GetCLAVE2Value: Integer; + procedure SetCLAVE2Value(const aValue: Integer); + function GetEANLUGValue: String; + procedure SetEANLUGValue(const aValue: String); + function GetLUGVENValue: String; + procedure SetLUGVENValue(const aValue: String); + function GetFECINIValue: DateTime; + procedure SetFECINIValue(const aValue: DateTime); + function GetFECFINValue: DateTime; + procedure SetFECFINValue(const aValue: DateTime); + function GetPERVENINIValue: DateTime; + procedure SetPERVENINIValue(const aValue: DateTime); + function GetPERVENFINValue: DateTime; + procedure SetPERVENFINValue(const aValue: DateTime); + + + { Properties } + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property EANLUG: String read GetEANLUGValue write SetEANLUGValue; + property LUGVEN: String read GetLUGVENValue write SetLUGVENValue; + property FECINI: DateTime read GetFECINIValue write SetFECINIValue; + property FECFIN: DateTime read GetFECFINValue write SetFECFINValue; + property PERVENINI: DateTime read GetPERVENINIValue write SetPERVENINIValue; + property PERVENFIN: DateTime read GetPERVENFINValue write SetPERVENFINValue; + end; + + { TRDX_LUGVENDataTableRules } + TRDX_LUGVENDataTableRules = class(TDADataTableRules, IRDX_LUGVEN) + private + protected + { Property getters and setters } + function GetCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetEANLUGValue: String; virtual; + procedure SetEANLUGValue(const aValue: String); virtual; + function GetLUGVENValue: String; virtual; + procedure SetLUGVENValue(const aValue: String); virtual; + function GetFECINIValue: DateTime; virtual; + procedure SetFECINIValue(const aValue: DateTime); virtual; + function GetFECFINValue: DateTime; virtual; + procedure SetFECFINValue(const aValue: DateTime); virtual; + function GetPERVENINIValue: DateTime; virtual; + procedure SetPERVENINIValue(const aValue: DateTime); virtual; + function GetPERVENFINValue: DateTime; virtual; + procedure SetPERVENFINValue(const aValue: DateTime); virtual; + + { Properties } + property CLAVE1: Float read GetCLAVE1Value write SetCLAVE1Value; + property CLAVE2: Integer read GetCLAVE2Value write SetCLAVE2Value; + property EANLUG: String read GetEANLUGValue write SetEANLUGValue; + property LUGVEN: String read GetLUGVENValue write SetLUGVENValue; + property FECINI: DateTime read GetFECINIValue write SetFECINIValue; + property FECFIN: DateTime read GetFECFINValue write SetFECFINValue; + property PERVENINI: DateTime read GetPERVENINIValue write SetPERVENINIValue; + property PERVENFIN: DateTime read GetPERVENFINValue write SetPERVENFINValue; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants; + +{ TRDX_ARTVENDataTableRules } +constructor TRDX_ARTVENDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRDX_ARTVENDataTableRules.Destroy; +begin + inherited; +end; + +function TRDX_ARTVENDataTableRules.GetCLAVE1Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCLAVE1].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCLAVE1Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCLAVE1].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCLAVE2Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCLAVE2].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCLAVE2Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCLAVE2].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCLAVE3Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCLAVE3].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCLAVE3Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCLAVE3].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetEANARTValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENEANART].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetEANARTValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENEANART].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCODCOMValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENCODCOM].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetCODCOMValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENCODCOM].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetNUMVARValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENNUMVAR].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetNUMVARValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENNUMVAR].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCODPROValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENCODPRO].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetCODPROValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENCODPRO].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetDESARTCOValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENDESARTCO].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetDESARTCOValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENDESARTCO].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetDESARTValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENDESART].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetDESARTValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENDESART].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetNUMCONValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENNUMCON].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetNUMCONValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENNUMCON].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetNUMLISValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENNUMLIS].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetNUMLISValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENNUMLIS].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCONESP1Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENCONESP1].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetCONESP1Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENCONESP1].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCONESP2Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENCONESP2].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetCONESP2Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENCONESP2].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCONESP3Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENCONESP3].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetCONESP3Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENCONESP3].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetVALVENValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENVALVEN].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetVALVENValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENVALVEN].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPRENETCTValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPRENETCT].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPRENETCTValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPRENETCT].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPREBRUCTValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPREBRUCT].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPREBRUCTValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPREBRUCT].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPREINFETValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPREINFET].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPREINFETValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPREINFET].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPREINFFTValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPREINFFT].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPREINFFTValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPREINFFT].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPRECALCTValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPRECALCT].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPRECALCTValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPRECALCT].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPRENETCAValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPRENETCA].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPRENETCAValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPRENETCA].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPREBRUCAValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPREBRUCA].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPREBRUCAValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPREBRUCA].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPREINFEAValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPREINFEA].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPREINFEAValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPREINFEA].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPREINFFAValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPREINFFA].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPREINFFAValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPREINFFA].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetPRECALCAValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENPRECALCA].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetPRECALCAValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENPRECALCA].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetBAPRUN1Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENBAPRUN1].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetBAPRUN1Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENBAPRUN1].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUNIMED1Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUNIMED1].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUNIMED1Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUNIMED1].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetBAPRUN2Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENBAPRUN2].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetBAPRUN2Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENBAPRUN2].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUNIMED2Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUNIMED2].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUNIMED2Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUNIMED2].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetBAPRUN3Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENBAPRUN3].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetBAPRUN3Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENBAPRUN3].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUNIMED3Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUNIMED3].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUNIMED3Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUNIMED3].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetBAPRUN4Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENBAPRUN4].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetBAPRUN4Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENBAPRUN4].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUNIMED4Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUNIMED4].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUNIMED4Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUNIMED4].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetBAPRUN5Value: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENBAPRUN5].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetBAPRUN5Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENBAPRUN5].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUNIMED5Value: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUNIMED5].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUNIMED5Value(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUNIMED5].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCANVENValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCANVEN].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCANVENValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCANVEN].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetEXIPROValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENEXIPRO].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetEXIPROValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENEXIPRO].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetDESEXIValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENDESEXI].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetDESEXIValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENDESEXI].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetESPMEDCVValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENESPMEDCV].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetESPMEDCVValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENESPMEDCV].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetESPMEDEPValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENESPMEDEP].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetESPMEDEPValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENESPMEDEP].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetESPMEDDEValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENESPMEDDE].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetESPMEDDEValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENESPMEDDE].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCANDEVValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCANDEV].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCANDEVValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCANDEV].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetEANVENValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENEANVEN].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetEANVENValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENEANVEN].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetNOMVENValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENNOMVEN].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetNOMVENValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENNOMVEN].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetNUMTALONValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENNUMTALON].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetNUMTALONValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENNUMTALON].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCANVENNETValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCANVENNET].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCANVENNETValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCANVENNET].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUMEDVENNETValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUMEDVENNET].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUMEDVENNETValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUMEDVENNET].AsString := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetCANESPValue: Float; +begin + result := DataTable.Fields[idx_RDX_ARTVENCANESP].AsFloat; +end; + +procedure TRDX_ARTVENDataTableRules.SetCANESPValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_ARTVENCANESP].AsFloat := aValue; +end; + +function TRDX_ARTVENDataTableRules.GetUMEDESPValue: String; +begin + result := DataTable.Fields[idx_RDX_ARTVENUMEDESP].AsString; +end; + +procedure TRDX_ARTVENDataTableRules.SetUMEDESPValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_ARTVENUMEDESP].AsString := aValue; +end; + + +{ TRDX_CABVENDataTableRules } +constructor TRDX_CABVENDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRDX_CABVENDataTableRules.Destroy; +begin + inherited; +end; + +function TRDX_CABVENDataTableRules.GetCLAVE1Value: Float; +begin + result := DataTable.Fields[idx_RDX_CABVENCLAVE1].AsFloat; +end; + +procedure TRDX_CABVENDataTableRules.SetCLAVE1Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_CABVENCLAVE1].AsFloat := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMINFValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMINF].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMINFValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMINF].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFUNCIONValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENFUNCION].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetFUNCIONValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENFUNCION].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECINIValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECINI].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECINIValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECINI].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECFINValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECFIN].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECFIN].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECINFValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECINF].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECINFValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECINF].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetPERVENINIValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENPERVENINI].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetPERVENINIValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENPERVENINI].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetPERVENFINValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENPERVENFIN].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetPERVENFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENPERVENFIN].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANOFIValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANOFI].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANOFIValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANOFI].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANEMIValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANEMI].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANEMIValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANEMI].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANRECValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANREC].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANRECValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANREC].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANVENValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANVEN].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANVENValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANVEN].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANALMValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANALM].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANALMValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANALM].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANREPValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANREP].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANREPValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANREP].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANPROValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANPRO].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANPROValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANPRO].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANADMSAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANADMSA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANADMSAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANADMSA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEANREPSRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEANREPSR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEANREPSRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEANREPSR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetADMVENSAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENADMVENSA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetADMVENSAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENADMVENSA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetREPDEPSRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENREPDEPSR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetREPDEPSRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENREPDEPSR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEMAILSAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEMAILSA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEMAILSAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEMAILSA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMFAXSAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMFAXSA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMFAXSAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMFAXSA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMTELSAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMTELSA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMTELSAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMTELSA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMTLXSAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMTLXSA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMTLXSAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMTLXSA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetX400SAValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENX400SA].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetX400SAValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENX400SA].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetEMAILSRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENEMAILSR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetEMAILSRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENEMAILSR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMFAXSRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMFAXSR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMFAXSRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMFAXSR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMTELSRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMTELSR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMTELSRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMTELSR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMTLXSRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMTLXSR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMTLXSRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMTLXSR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetX400SRValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENX400SR].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetX400SRValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENX400SR].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMPREValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMPRE].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMPREValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMPRE].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMINFSCValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMINFSC].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMINFSCValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMINFSC].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetNUMCONValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENNUMCON].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetNUMCONValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENNUMCON].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECPREValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECPRE].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECPREValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECPRE].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECINFSCValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECINFSC].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECINFSCValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECINFSC].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECCONValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECCON].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECCONValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECCON].AsDateTime := aValue; +end; + +function TRDX_CABVENDataTableRules.GetDIVPEDValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENDIVPED].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetDIVPEDValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENDIVPED].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetDIVPREValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENDIVPRE].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetDIVPREValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENDIVPRE].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetDIVPAGValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENDIVPAG].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetDIVPAGValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENDIVPAG].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetDIVPEDFValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENDIVPEDF].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetDIVPEDFValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENDIVPEDF].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetDIVPREFValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENDIVPREF].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetDIVPREFValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENDIVPREF].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetDIVPAGFValue: String; +begin + result := DataTable.Fields[idx_RDX_CABVENDIVPAGF].AsString; +end; + +procedure TRDX_CABVENDataTableRules.SetDIVPAGFValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_CABVENDIVPAGF].AsString := aValue; +end; + +function TRDX_CABVENDataTableRules.GetTASCAMValue: Float; +begin + result := DataTable.Fields[idx_RDX_CABVENTASCAM].AsFloat; +end; + +procedure TRDX_CABVENDataTableRules.SetTASCAMValue(const aValue: Float); +begin + DataTable.Fields[idx_RDX_CABVENTASCAM].AsFloat := aValue; +end; + +function TRDX_CABVENDataTableRules.GetFECTASValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_CABVENFECTAS].AsDateTime; +end; + +procedure TRDX_CABVENDataTableRules.SetFECTASValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_CABVENFECTAS].AsDateTime := aValue; +end; + + +{ TRDX_LUGVENDataTableRules } +constructor TRDX_LUGVENDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TRDX_LUGVENDataTableRules.Destroy; +begin + inherited; +end; + +function TRDX_LUGVENDataTableRules.GetCLAVE1Value: Float; +begin + result := DataTable.Fields[idx_RDX_LUGVENCLAVE1].AsFloat; +end; + +procedure TRDX_LUGVENDataTableRules.SetCLAVE1Value(const aValue: Float); +begin + DataTable.Fields[idx_RDX_LUGVENCLAVE1].AsFloat := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetCLAVE2Value: Integer; +begin + result := DataTable.Fields[idx_RDX_LUGVENCLAVE2].AsInteger; +end; + +procedure TRDX_LUGVENDataTableRules.SetCLAVE2Value(const aValue: Integer); +begin + DataTable.Fields[idx_RDX_LUGVENCLAVE2].AsInteger := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetEANLUGValue: String; +begin + result := DataTable.Fields[idx_RDX_LUGVENEANLUG].AsString; +end; + +procedure TRDX_LUGVENDataTableRules.SetEANLUGValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LUGVENEANLUG].AsString := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetLUGVENValue: String; +begin + result := DataTable.Fields[idx_RDX_LUGVENLUGVEN].AsString; +end; + +procedure TRDX_LUGVENDataTableRules.SetLUGVENValue(const aValue: String); +begin + DataTable.Fields[idx_RDX_LUGVENLUGVEN].AsString := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetFECINIValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_LUGVENFECINI].AsDateTime; +end; + +procedure TRDX_LUGVENDataTableRules.SetFECINIValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_LUGVENFECINI].AsDateTime := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetFECFINValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_LUGVENFECFIN].AsDateTime; +end; + +procedure TRDX_LUGVENDataTableRules.SetFECFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_LUGVENFECFIN].AsDateTime := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetPERVENINIValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_LUGVENPERVENINI].AsDateTime; +end; + +procedure TRDX_LUGVENDataTableRules.SetPERVENINIValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_LUGVENPERVENINI].AsDateTime := aValue; +end; + +function TRDX_LUGVENDataTableRules.GetPERVENFINValue: DateTime; +begin + result := DataTable.Fields[idx_RDX_LUGVENPERVENFIN].AsDateTime; +end; + +procedure TRDX_LUGVENDataTableRules.SetPERVENFINValue(const aValue: DateTime); +begin + DataTable.Fields[idx_RDX_LUGVENPERVENFIN].AsDateTime := aValue; +end; + + +initialization + RegisterDataTableRules(RID_RDX_ARTVEN, TRDX_ARTVENDataTableRules); + RegisterDataTableRules(RID_RDX_CABVEN, TRDX_CABVENDataTableRules); + RegisterDataTableRules(RID_RDX_LUGVEN, TRDX_LUGVENDataTableRules); + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/schEDISalesServer_Intf.pas b/2.1.0/Source/Servidor/Services/EDI_Sales/schEDISalesServer_Intf.pas new file mode 100644 index 0000000..8c11867 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/schEDISalesServer_Intf.pas @@ -0,0 +1,2329 @@ +unit schEDISalesServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, schEDISalesClient_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_RDX_ARTVENDelta = '{DBADAFB4-396F-45CF-969C-0E310CE772EF}'; + RID_RDX_CABVENDelta = '{EDFAD481-7C5C-49FE-9B6C-9F498CEC065D}'; + RID_RDX_LUGVENDelta = '{51ECAB19-FE1D-4141-82A8-F4078ADA6B11}'; + +type + { IRDX_ARTVENDelta } + IRDX_ARTVENDelta = interface(IRDX_ARTVEN) + ['{DBADAFB4-396F-45CF-969C-0E310CE772EF}'] + { Property getters and setters } + function GetOldCLAVE1Value : Float; + function GetOldCLAVE2Value : Float; + function GetOldCLAVE3Value : Float; + function GetOldEANARTValue : String; + function GetOldCODCOMValue : String; + function GetOldNUMVARValue : String; + function GetOldCODPROValue : String; + function GetOldDESARTCOValue : String; + function GetOldDESARTValue : String; + function GetOldNUMCONValue : String; + function GetOldNUMLISValue : String; + function GetOldCONESP1Value : String; + function GetOldCONESP2Value : String; + function GetOldCONESP3Value : String; + function GetOldVALVENValue : Float; + function GetOldPRENETCTValue : Float; + function GetOldPREBRUCTValue : Float; + function GetOldPREINFETValue : Float; + function GetOldPREINFFTValue : Float; + function GetOldPRECALCTValue : Float; + function GetOldPRENETCAValue : Float; + function GetOldPREBRUCAValue : Float; + function GetOldPREINFEAValue : Float; + function GetOldPREINFFAValue : Float; + function GetOldPRECALCAValue : Float; + function GetOldBAPRUN1Value : Float; + function GetOldUNIMED1Value : String; + function GetOldBAPRUN2Value : Float; + function GetOldUNIMED2Value : String; + function GetOldBAPRUN3Value : Float; + function GetOldUNIMED3Value : String; + function GetOldBAPRUN4Value : Float; + function GetOldUNIMED4Value : String; + function GetOldBAPRUN5Value : Float; + function GetOldUNIMED5Value : String; + function GetOldCANVENValue : Float; + function GetOldEXIPROValue : Float; + function GetOldDESEXIValue : Float; + function GetOldESPMEDCVValue : String; + function GetOldESPMEDEPValue : String; + function GetOldESPMEDDEValue : String; + function GetOldCANDEVValue : Float; + function GetOldEANVENValue : String; + function GetOldNOMVENValue : String; + function GetOldNUMTALONValue : String; + function GetOldCANVENNETValue : Float; + function GetOldUMEDVENNETValue : String; + function GetOldCANESPValue : Float; + function GetOldUMEDESPValue : String; + + { Properties } + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE2 : Float read GetOldCLAVE2Value; + property OldCLAVE3 : Float read GetOldCLAVE3Value; + property OldEANART : String read GetOldEANARTValue; + property OldCODCOM : String read GetOldCODCOMValue; + property OldNUMVAR : String read GetOldNUMVARValue; + property OldCODPRO : String read GetOldCODPROValue; + property OldDESARTCO : String read GetOldDESARTCOValue; + property OldDESART : String read GetOldDESARTValue; + property OldNUMCON : String read GetOldNUMCONValue; + property OldNUMLIS : String read GetOldNUMLISValue; + property OldCONESP1 : String read GetOldCONESP1Value; + property OldCONESP2 : String read GetOldCONESP2Value; + property OldCONESP3 : String read GetOldCONESP3Value; + property OldVALVEN : Float read GetOldVALVENValue; + property OldPRENETCT : Float read GetOldPRENETCTValue; + property OldPREBRUCT : Float read GetOldPREBRUCTValue; + property OldPREINFET : Float read GetOldPREINFETValue; + property OldPREINFFT : Float read GetOldPREINFFTValue; + property OldPRECALCT : Float read GetOldPRECALCTValue; + property OldPRENETCA : Float read GetOldPRENETCAValue; + property OldPREBRUCA : Float read GetOldPREBRUCAValue; + property OldPREINFEA : Float read GetOldPREINFEAValue; + property OldPREINFFA : Float read GetOldPREINFFAValue; + property OldPRECALCA : Float read GetOldPRECALCAValue; + property OldBAPRUN1 : Float read GetOldBAPRUN1Value; + property OldUNIMED1 : String read GetOldUNIMED1Value; + property OldBAPRUN2 : Float read GetOldBAPRUN2Value; + property OldUNIMED2 : String read GetOldUNIMED2Value; + property OldBAPRUN3 : Float read GetOldBAPRUN3Value; + property OldUNIMED3 : String read GetOldUNIMED3Value; + property OldBAPRUN4 : Float read GetOldBAPRUN4Value; + property OldUNIMED4 : String read GetOldUNIMED4Value; + property OldBAPRUN5 : Float read GetOldBAPRUN5Value; + property OldUNIMED5 : String read GetOldUNIMED5Value; + property OldCANVEN : Float read GetOldCANVENValue; + property OldEXIPRO : Float read GetOldEXIPROValue; + property OldDESEXI : Float read GetOldDESEXIValue; + property OldESPMEDCV : String read GetOldESPMEDCVValue; + property OldESPMEDEP : String read GetOldESPMEDEPValue; + property OldESPMEDDE : String read GetOldESPMEDDEValue; + property OldCANDEV : Float read GetOldCANDEVValue; + property OldEANVEN : String read GetOldEANVENValue; + property OldNOMVEN : String read GetOldNOMVENValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property OldCANVENNET : Float read GetOldCANVENNETValue; + property OldUMEDVENNET : String read GetOldUMEDVENNETValue; + property OldCANESP : Float read GetOldCANESPValue; + property OldUMEDESP : String read GetOldUMEDESPValue; + end; + + { TRDX_ARTVENBusinessProcessorRules } + TRDX_ARTVENBusinessProcessorRules = class(TDABusinessProcessorRules, IRDX_ARTVEN, IRDX_ARTVENDelta) + private + protected + { Property getters and setters } + function GetCLAVE1Value: Float; virtual; + function GetOldCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE2Value: Float; virtual; + function GetOldCLAVE2Value: Float; virtual; + procedure SetCLAVE2Value(const aValue: Float); virtual; + function GetCLAVE3Value: Float; virtual; + function GetOldCLAVE3Value: Float; virtual; + procedure SetCLAVE3Value(const aValue: Float); virtual; + function GetEANARTValue: String; virtual; + function GetOldEANARTValue: String; virtual; + procedure SetEANARTValue(const aValue: String); virtual; + function GetCODCOMValue: String; virtual; + function GetOldCODCOMValue: String; virtual; + procedure SetCODCOMValue(const aValue: String); virtual; + function GetNUMVARValue: String; virtual; + function GetOldNUMVARValue: String; virtual; + procedure SetNUMVARValue(const aValue: String); virtual; + function GetCODPROValue: String; virtual; + function GetOldCODPROValue: String; virtual; + procedure SetCODPROValue(const aValue: String); virtual; + function GetDESARTCOValue: String; virtual; + function GetOldDESARTCOValue: String; virtual; + procedure SetDESARTCOValue(const aValue: String); virtual; + function GetDESARTValue: String; virtual; + function GetOldDESARTValue: String; virtual; + procedure SetDESARTValue(const aValue: String); virtual; + function GetNUMCONValue: String; virtual; + function GetOldNUMCONValue: String; virtual; + procedure SetNUMCONValue(const aValue: String); virtual; + function GetNUMLISValue: String; virtual; + function GetOldNUMLISValue: String; virtual; + procedure SetNUMLISValue(const aValue: String); virtual; + function GetCONESP1Value: String; virtual; + function GetOldCONESP1Value: String; virtual; + procedure SetCONESP1Value(const aValue: String); virtual; + function GetCONESP2Value: String; virtual; + function GetOldCONESP2Value: String; virtual; + procedure SetCONESP2Value(const aValue: String); virtual; + function GetCONESP3Value: String; virtual; + function GetOldCONESP3Value: String; virtual; + procedure SetCONESP3Value(const aValue: String); virtual; + function GetVALVENValue: Float; virtual; + function GetOldVALVENValue: Float; virtual; + procedure SetVALVENValue(const aValue: Float); virtual; + function GetPRENETCTValue: Float; virtual; + function GetOldPRENETCTValue: Float; virtual; + procedure SetPRENETCTValue(const aValue: Float); virtual; + function GetPREBRUCTValue: Float; virtual; + function GetOldPREBRUCTValue: Float; virtual; + procedure SetPREBRUCTValue(const aValue: Float); virtual; + function GetPREINFETValue: Float; virtual; + function GetOldPREINFETValue: Float; virtual; + procedure SetPREINFETValue(const aValue: Float); virtual; + function GetPREINFFTValue: Float; virtual; + function GetOldPREINFFTValue: Float; virtual; + procedure SetPREINFFTValue(const aValue: Float); virtual; + function GetPRECALCTValue: Float; virtual; + function GetOldPRECALCTValue: Float; virtual; + procedure SetPRECALCTValue(const aValue: Float); virtual; + function GetPRENETCAValue: Float; virtual; + function GetOldPRENETCAValue: Float; virtual; + procedure SetPRENETCAValue(const aValue: Float); virtual; + function GetPREBRUCAValue: Float; virtual; + function GetOldPREBRUCAValue: Float; virtual; + procedure SetPREBRUCAValue(const aValue: Float); virtual; + function GetPREINFEAValue: Float; virtual; + function GetOldPREINFEAValue: Float; virtual; + procedure SetPREINFEAValue(const aValue: Float); virtual; + function GetPREINFFAValue: Float; virtual; + function GetOldPREINFFAValue: Float; virtual; + procedure SetPREINFFAValue(const aValue: Float); virtual; + function GetPRECALCAValue: Float; virtual; + function GetOldPRECALCAValue: Float; virtual; + procedure SetPRECALCAValue(const aValue: Float); virtual; + function GetBAPRUN1Value: Float; virtual; + function GetOldBAPRUN1Value: Float; virtual; + procedure SetBAPRUN1Value(const aValue: Float); virtual; + function GetUNIMED1Value: String; virtual; + function GetOldUNIMED1Value: String; virtual; + procedure SetUNIMED1Value(const aValue: String); virtual; + function GetBAPRUN2Value: Float; virtual; + function GetOldBAPRUN2Value: Float; virtual; + procedure SetBAPRUN2Value(const aValue: Float); virtual; + function GetUNIMED2Value: String; virtual; + function GetOldUNIMED2Value: String; virtual; + procedure SetUNIMED2Value(const aValue: String); virtual; + function GetBAPRUN3Value: Float; virtual; + function GetOldBAPRUN3Value: Float; virtual; + procedure SetBAPRUN3Value(const aValue: Float); virtual; + function GetUNIMED3Value: String; virtual; + function GetOldUNIMED3Value: String; virtual; + procedure SetUNIMED3Value(const aValue: String); virtual; + function GetBAPRUN4Value: Float; virtual; + function GetOldBAPRUN4Value: Float; virtual; + procedure SetBAPRUN4Value(const aValue: Float); virtual; + function GetUNIMED4Value: String; virtual; + function GetOldUNIMED4Value: String; virtual; + procedure SetUNIMED4Value(const aValue: String); virtual; + function GetBAPRUN5Value: Float; virtual; + function GetOldBAPRUN5Value: Float; virtual; + procedure SetBAPRUN5Value(const aValue: Float); virtual; + function GetUNIMED5Value: String; virtual; + function GetOldUNIMED5Value: String; virtual; + procedure SetUNIMED5Value(const aValue: String); virtual; + function GetCANVENValue: Float; virtual; + function GetOldCANVENValue: Float; virtual; + procedure SetCANVENValue(const aValue: Float); virtual; + function GetEXIPROValue: Float; virtual; + function GetOldEXIPROValue: Float; virtual; + procedure SetEXIPROValue(const aValue: Float); virtual; + function GetDESEXIValue: Float; virtual; + function GetOldDESEXIValue: Float; virtual; + procedure SetDESEXIValue(const aValue: Float); virtual; + function GetESPMEDCVValue: String; virtual; + function GetOldESPMEDCVValue: String; virtual; + procedure SetESPMEDCVValue(const aValue: String); virtual; + function GetESPMEDEPValue: String; virtual; + function GetOldESPMEDEPValue: String; virtual; + procedure SetESPMEDEPValue(const aValue: String); virtual; + function GetESPMEDDEValue: String; virtual; + function GetOldESPMEDDEValue: String; virtual; + procedure SetESPMEDDEValue(const aValue: String); virtual; + function GetCANDEVValue: Float; virtual; + function GetOldCANDEVValue: Float; virtual; + procedure SetCANDEVValue(const aValue: Float); virtual; + function GetEANVENValue: String; virtual; + function GetOldEANVENValue: String; virtual; + procedure SetEANVENValue(const aValue: String); virtual; + function GetNOMVENValue: String; virtual; + function GetOldNOMVENValue: String; virtual; + procedure SetNOMVENValue(const aValue: String); virtual; + function GetNUMTALONValue: String; virtual; + function GetOldNUMTALONValue: String; virtual; + procedure SetNUMTALONValue(const aValue: String); virtual; + function GetCANVENNETValue: Float; virtual; + function GetOldCANVENNETValue: Float; virtual; + procedure SetCANVENNETValue(const aValue: Float); virtual; + function GetUMEDVENNETValue: String; virtual; + function GetOldUMEDVENNETValue: String; virtual; + procedure SetUMEDVENNETValue(const aValue: String); virtual; + function GetCANESPValue: Float; virtual; + function GetOldCANESPValue: Float; virtual; + procedure SetCANESPValue(const aValue: Float); virtual; + function GetUMEDESPValue: String; virtual; + function GetOldUMEDESPValue: String; virtual; + procedure SetUMEDESPValue(const aValue: String); virtual; + + { Properties } + property CLAVE1 : Float read GetCLAVE1Value write SetCLAVE1Value; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property CLAVE2 : Float read GetCLAVE2Value write SetCLAVE2Value; + property OldCLAVE2 : Float read GetOldCLAVE2Value; + property CLAVE3 : Float read GetCLAVE3Value write SetCLAVE3Value; + property OldCLAVE3 : Float read GetOldCLAVE3Value; + property EANART : String read GetEANARTValue write SetEANARTValue; + property OldEANART : String read GetOldEANARTValue; + property CODCOM : String read GetCODCOMValue write SetCODCOMValue; + property OldCODCOM : String read GetOldCODCOMValue; + property NUMVAR : String read GetNUMVARValue write SetNUMVARValue; + property OldNUMVAR : String read GetOldNUMVARValue; + property CODPRO : String read GetCODPROValue write SetCODPROValue; + property OldCODPRO : String read GetOldCODPROValue; + property DESARTCO : String read GetDESARTCOValue write SetDESARTCOValue; + property OldDESARTCO : String read GetOldDESARTCOValue; + property DESART : String read GetDESARTValue write SetDESARTValue; + property OldDESART : String read GetOldDESARTValue; + property NUMCON : String read GetNUMCONValue write SetNUMCONValue; + property OldNUMCON : String read GetOldNUMCONValue; + property NUMLIS : String read GetNUMLISValue write SetNUMLISValue; + property OldNUMLIS : String read GetOldNUMLISValue; + property CONESP1 : String read GetCONESP1Value write SetCONESP1Value; + property OldCONESP1 : String read GetOldCONESP1Value; + property CONESP2 : String read GetCONESP2Value write SetCONESP2Value; + property OldCONESP2 : String read GetOldCONESP2Value; + property CONESP3 : String read GetCONESP3Value write SetCONESP3Value; + property OldCONESP3 : String read GetOldCONESP3Value; + property VALVEN : Float read GetVALVENValue write SetVALVENValue; + property OldVALVEN : Float read GetOldVALVENValue; + property PRENETCT : Float read GetPRENETCTValue write SetPRENETCTValue; + property OldPRENETCT : Float read GetOldPRENETCTValue; + property PREBRUCT : Float read GetPREBRUCTValue write SetPREBRUCTValue; + property OldPREBRUCT : Float read GetOldPREBRUCTValue; + property PREINFET : Float read GetPREINFETValue write SetPREINFETValue; + property OldPREINFET : Float read GetOldPREINFETValue; + property PREINFFT : Float read GetPREINFFTValue write SetPREINFFTValue; + property OldPREINFFT : Float read GetOldPREINFFTValue; + property PRECALCT : Float read GetPRECALCTValue write SetPRECALCTValue; + property OldPRECALCT : Float read GetOldPRECALCTValue; + property PRENETCA : Float read GetPRENETCAValue write SetPRENETCAValue; + property OldPRENETCA : Float read GetOldPRENETCAValue; + property PREBRUCA : Float read GetPREBRUCAValue write SetPREBRUCAValue; + property OldPREBRUCA : Float read GetOldPREBRUCAValue; + property PREINFEA : Float read GetPREINFEAValue write SetPREINFEAValue; + property OldPREINFEA : Float read GetOldPREINFEAValue; + property PREINFFA : Float read GetPREINFFAValue write SetPREINFFAValue; + property OldPREINFFA : Float read GetOldPREINFFAValue; + property PRECALCA : Float read GetPRECALCAValue write SetPRECALCAValue; + property OldPRECALCA : Float read GetOldPRECALCAValue; + property BAPRUN1 : Float read GetBAPRUN1Value write SetBAPRUN1Value; + property OldBAPRUN1 : Float read GetOldBAPRUN1Value; + property UNIMED1 : String read GetUNIMED1Value write SetUNIMED1Value; + property OldUNIMED1 : String read GetOldUNIMED1Value; + property BAPRUN2 : Float read GetBAPRUN2Value write SetBAPRUN2Value; + property OldBAPRUN2 : Float read GetOldBAPRUN2Value; + property UNIMED2 : String read GetUNIMED2Value write SetUNIMED2Value; + property OldUNIMED2 : String read GetOldUNIMED2Value; + property BAPRUN3 : Float read GetBAPRUN3Value write SetBAPRUN3Value; + property OldBAPRUN3 : Float read GetOldBAPRUN3Value; + property UNIMED3 : String read GetUNIMED3Value write SetUNIMED3Value; + property OldUNIMED3 : String read GetOldUNIMED3Value; + property BAPRUN4 : Float read GetBAPRUN4Value write SetBAPRUN4Value; + property OldBAPRUN4 : Float read GetOldBAPRUN4Value; + property UNIMED4 : String read GetUNIMED4Value write SetUNIMED4Value; + property OldUNIMED4 : String read GetOldUNIMED4Value; + property BAPRUN5 : Float read GetBAPRUN5Value write SetBAPRUN5Value; + property OldBAPRUN5 : Float read GetOldBAPRUN5Value; + property UNIMED5 : String read GetUNIMED5Value write SetUNIMED5Value; + property OldUNIMED5 : String read GetOldUNIMED5Value; + property CANVEN : Float read GetCANVENValue write SetCANVENValue; + property OldCANVEN : Float read GetOldCANVENValue; + property EXIPRO : Float read GetEXIPROValue write SetEXIPROValue; + property OldEXIPRO : Float read GetOldEXIPROValue; + property DESEXI : Float read GetDESEXIValue write SetDESEXIValue; + property OldDESEXI : Float read GetOldDESEXIValue; + property ESPMEDCV : String read GetESPMEDCVValue write SetESPMEDCVValue; + property OldESPMEDCV : String read GetOldESPMEDCVValue; + property ESPMEDEP : String read GetESPMEDEPValue write SetESPMEDEPValue; + property OldESPMEDEP : String read GetOldESPMEDEPValue; + property ESPMEDDE : String read GetESPMEDDEValue write SetESPMEDDEValue; + property OldESPMEDDE : String read GetOldESPMEDDEValue; + property CANDEV : Float read GetCANDEVValue write SetCANDEVValue; + property OldCANDEV : Float read GetOldCANDEVValue; + property EANVEN : String read GetEANVENValue write SetEANVENValue; + property OldEANVEN : String read GetOldEANVENValue; + property NOMVEN : String read GetNOMVENValue write SetNOMVENValue; + property OldNOMVEN : String read GetOldNOMVENValue; + property NUMTALON : String read GetNUMTALONValue write SetNUMTALONValue; + property OldNUMTALON : String read GetOldNUMTALONValue; + property CANVENNET : Float read GetCANVENNETValue write SetCANVENNETValue; + property OldCANVENNET : Float read GetOldCANVENNETValue; + property UMEDVENNET : String read GetUMEDVENNETValue write SetUMEDVENNETValue; + property OldUMEDVENNET : String read GetOldUMEDVENNETValue; + property CANESP : Float read GetCANESPValue write SetCANESPValue; + property OldCANESP : Float read GetOldCANESPValue; + property UMEDESP : String read GetUMEDESPValue write SetUMEDESPValue; + property OldUMEDESP : String read GetOldUMEDESPValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRDX_CABVENDelta } + IRDX_CABVENDelta = interface(IRDX_CABVEN) + ['{EDFAD481-7C5C-49FE-9B6C-9F498CEC065D}'] + { Property getters and setters } + function GetOldCLAVE1Value : Float; + function GetOldNUMINFValue : String; + function GetOldFUNCIONValue : String; + function GetOldFECINIValue : DateTime; + function GetOldFECFINValue : DateTime; + function GetOldFECINFValue : DateTime; + function GetOldPERVENINIValue : DateTime; + function GetOldPERVENFINValue : DateTime; + function GetOldEANOFIValue : String; + function GetOldEANEMIValue : String; + function GetOldEANRECValue : String; + function GetOldEANVENValue : String; + function GetOldEANALMValue : String; + function GetOldEANREPValue : String; + function GetOldEANPROValue : String; + function GetOldEANADMSAValue : String; + function GetOldEANREPSRValue : String; + function GetOldADMVENSAValue : String; + function GetOldREPDEPSRValue : String; + function GetOldEMAILSAValue : String; + function GetOldNUMFAXSAValue : String; + function GetOldNUMTELSAValue : String; + function GetOldNUMTLXSAValue : String; + function GetOldX400SAValue : String; + function GetOldEMAILSRValue : String; + function GetOldNUMFAXSRValue : String; + function GetOldNUMTELSRValue : String; + function GetOldNUMTLXSRValue : String; + function GetOldX400SRValue : String; + function GetOldNUMPREValue : String; + function GetOldNUMINFSCValue : String; + function GetOldNUMCONValue : String; + function GetOldFECPREValue : DateTime; + function GetOldFECINFSCValue : DateTime; + function GetOldFECCONValue : DateTime; + function GetOldDIVPEDValue : String; + function GetOldDIVPREValue : String; + function GetOldDIVPAGValue : String; + function GetOldDIVPEDFValue : String; + function GetOldDIVPREFValue : String; + function GetOldDIVPAGFValue : String; + function GetOldTASCAMValue : Float; + function GetOldFECTASValue : DateTime; + + { Properties } + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldNUMINF : String read GetOldNUMINFValue; + property OldFUNCION : String read GetOldFUNCIONValue; + property OldFECINI : DateTime read GetOldFECINIValue; + property OldFECFIN : DateTime read GetOldFECFINValue; + property OldFECINF : DateTime read GetOldFECINFValue; + property OldPERVENINI : DateTime read GetOldPERVENINIValue; + property OldPERVENFIN : DateTime read GetOldPERVENFINValue; + property OldEANOFI : String read GetOldEANOFIValue; + property OldEANEMI : String read GetOldEANEMIValue; + property OldEANREC : String read GetOldEANRECValue; + property OldEANVEN : String read GetOldEANVENValue; + property OldEANALM : String read GetOldEANALMValue; + property OldEANREP : String read GetOldEANREPValue; + property OldEANPRO : String read GetOldEANPROValue; + property OldEANADMSA : String read GetOldEANADMSAValue; + property OldEANREPSR : String read GetOldEANREPSRValue; + property OldADMVENSA : String read GetOldADMVENSAValue; + property OldREPDEPSR : String read GetOldREPDEPSRValue; + property OldEMAILSA : String read GetOldEMAILSAValue; + property OldNUMFAXSA : String read GetOldNUMFAXSAValue; + property OldNUMTELSA : String read GetOldNUMTELSAValue; + property OldNUMTLXSA : String read GetOldNUMTLXSAValue; + property OldX400SA : String read GetOldX400SAValue; + property OldEMAILSR : String read GetOldEMAILSRValue; + property OldNUMFAXSR : String read GetOldNUMFAXSRValue; + property OldNUMTELSR : String read GetOldNUMTELSRValue; + property OldNUMTLXSR : String read GetOldNUMTLXSRValue; + property OldX400SR : String read GetOldX400SRValue; + property OldNUMPRE : String read GetOldNUMPREValue; + property OldNUMINFSC : String read GetOldNUMINFSCValue; + property OldNUMCON : String read GetOldNUMCONValue; + property OldFECPRE : DateTime read GetOldFECPREValue; + property OldFECINFSC : DateTime read GetOldFECINFSCValue; + property OldFECCON : DateTime read GetOldFECCONValue; + property OldDIVPED : String read GetOldDIVPEDValue; + property OldDIVPRE : String read GetOldDIVPREValue; + property OldDIVPAG : String read GetOldDIVPAGValue; + property OldDIVPEDF : String read GetOldDIVPEDFValue; + property OldDIVPREF : String read GetOldDIVPREFValue; + property OldDIVPAGF : String read GetOldDIVPAGFValue; + property OldTASCAM : Float read GetOldTASCAMValue; + property OldFECTAS : DateTime read GetOldFECTASValue; + end; + + { TRDX_CABVENBusinessProcessorRules } + TRDX_CABVENBusinessProcessorRules = class(TDABusinessProcessorRules, IRDX_CABVEN, IRDX_CABVENDelta) + private + protected + { Property getters and setters } + function GetCLAVE1Value: Float; virtual; + function GetOldCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetNUMINFValue: String; virtual; + function GetOldNUMINFValue: String; virtual; + procedure SetNUMINFValue(const aValue: String); virtual; + function GetFUNCIONValue: String; virtual; + function GetOldFUNCIONValue: String; virtual; + procedure SetFUNCIONValue(const aValue: String); virtual; + function GetFECINIValue: DateTime; virtual; + function GetOldFECINIValue: DateTime; virtual; + procedure SetFECINIValue(const aValue: DateTime); virtual; + function GetFECFINValue: DateTime; virtual; + function GetOldFECFINValue: DateTime; virtual; + procedure SetFECFINValue(const aValue: DateTime); virtual; + function GetFECINFValue: DateTime; virtual; + function GetOldFECINFValue: DateTime; virtual; + procedure SetFECINFValue(const aValue: DateTime); virtual; + function GetPERVENINIValue: DateTime; virtual; + function GetOldPERVENINIValue: DateTime; virtual; + procedure SetPERVENINIValue(const aValue: DateTime); virtual; + function GetPERVENFINValue: DateTime; virtual; + function GetOldPERVENFINValue: DateTime; virtual; + procedure SetPERVENFINValue(const aValue: DateTime); virtual; + function GetEANOFIValue: String; virtual; + function GetOldEANOFIValue: String; virtual; + procedure SetEANOFIValue(const aValue: String); virtual; + function GetEANEMIValue: String; virtual; + function GetOldEANEMIValue: String; virtual; + procedure SetEANEMIValue(const aValue: String); virtual; + function GetEANRECValue: String; virtual; + function GetOldEANRECValue: String; virtual; + procedure SetEANRECValue(const aValue: String); virtual; + function GetEANVENValue: String; virtual; + function GetOldEANVENValue: String; virtual; + procedure SetEANVENValue(const aValue: String); virtual; + function GetEANALMValue: String; virtual; + function GetOldEANALMValue: String; virtual; + procedure SetEANALMValue(const aValue: String); virtual; + function GetEANREPValue: String; virtual; + function GetOldEANREPValue: String; virtual; + procedure SetEANREPValue(const aValue: String); virtual; + function GetEANPROValue: String; virtual; + function GetOldEANPROValue: String; virtual; + procedure SetEANPROValue(const aValue: String); virtual; + function GetEANADMSAValue: String; virtual; + function GetOldEANADMSAValue: String; virtual; + procedure SetEANADMSAValue(const aValue: String); virtual; + function GetEANREPSRValue: String; virtual; + function GetOldEANREPSRValue: String; virtual; + procedure SetEANREPSRValue(const aValue: String); virtual; + function GetADMVENSAValue: String; virtual; + function GetOldADMVENSAValue: String; virtual; + procedure SetADMVENSAValue(const aValue: String); virtual; + function GetREPDEPSRValue: String; virtual; + function GetOldREPDEPSRValue: String; virtual; + procedure SetREPDEPSRValue(const aValue: String); virtual; + function GetEMAILSAValue: String; virtual; + function GetOldEMAILSAValue: String; virtual; + procedure SetEMAILSAValue(const aValue: String); virtual; + function GetNUMFAXSAValue: String; virtual; + function GetOldNUMFAXSAValue: String; virtual; + procedure SetNUMFAXSAValue(const aValue: String); virtual; + function GetNUMTELSAValue: String; virtual; + function GetOldNUMTELSAValue: String; virtual; + procedure SetNUMTELSAValue(const aValue: String); virtual; + function GetNUMTLXSAValue: String; virtual; + function GetOldNUMTLXSAValue: String; virtual; + procedure SetNUMTLXSAValue(const aValue: String); virtual; + function GetX400SAValue: String; virtual; + function GetOldX400SAValue: String; virtual; + procedure SetX400SAValue(const aValue: String); virtual; + function GetEMAILSRValue: String; virtual; + function GetOldEMAILSRValue: String; virtual; + procedure SetEMAILSRValue(const aValue: String); virtual; + function GetNUMFAXSRValue: String; virtual; + function GetOldNUMFAXSRValue: String; virtual; + procedure SetNUMFAXSRValue(const aValue: String); virtual; + function GetNUMTELSRValue: String; virtual; + function GetOldNUMTELSRValue: String; virtual; + procedure SetNUMTELSRValue(const aValue: String); virtual; + function GetNUMTLXSRValue: String; virtual; + function GetOldNUMTLXSRValue: String; virtual; + procedure SetNUMTLXSRValue(const aValue: String); virtual; + function GetX400SRValue: String; virtual; + function GetOldX400SRValue: String; virtual; + procedure SetX400SRValue(const aValue: String); virtual; + function GetNUMPREValue: String; virtual; + function GetOldNUMPREValue: String; virtual; + procedure SetNUMPREValue(const aValue: String); virtual; + function GetNUMINFSCValue: String; virtual; + function GetOldNUMINFSCValue: String; virtual; + procedure SetNUMINFSCValue(const aValue: String); virtual; + function GetNUMCONValue: String; virtual; + function GetOldNUMCONValue: String; virtual; + procedure SetNUMCONValue(const aValue: String); virtual; + function GetFECPREValue: DateTime; virtual; + function GetOldFECPREValue: DateTime; virtual; + procedure SetFECPREValue(const aValue: DateTime); virtual; + function GetFECINFSCValue: DateTime; virtual; + function GetOldFECINFSCValue: DateTime; virtual; + procedure SetFECINFSCValue(const aValue: DateTime); virtual; + function GetFECCONValue: DateTime; virtual; + function GetOldFECCONValue: DateTime; virtual; + procedure SetFECCONValue(const aValue: DateTime); virtual; + function GetDIVPEDValue: String; virtual; + function GetOldDIVPEDValue: String; virtual; + procedure SetDIVPEDValue(const aValue: String); virtual; + function GetDIVPREValue: String; virtual; + function GetOldDIVPREValue: String; virtual; + procedure SetDIVPREValue(const aValue: String); virtual; + function GetDIVPAGValue: String; virtual; + function GetOldDIVPAGValue: String; virtual; + procedure SetDIVPAGValue(const aValue: String); virtual; + function GetDIVPEDFValue: String; virtual; + function GetOldDIVPEDFValue: String; virtual; + procedure SetDIVPEDFValue(const aValue: String); virtual; + function GetDIVPREFValue: String; virtual; + function GetOldDIVPREFValue: String; virtual; + procedure SetDIVPREFValue(const aValue: String); virtual; + function GetDIVPAGFValue: String; virtual; + function GetOldDIVPAGFValue: String; virtual; + procedure SetDIVPAGFValue(const aValue: String); virtual; + function GetTASCAMValue: Float; virtual; + function GetOldTASCAMValue: Float; virtual; + procedure SetTASCAMValue(const aValue: Float); virtual; + function GetFECTASValue: DateTime; virtual; + function GetOldFECTASValue: DateTime; virtual; + procedure SetFECTASValue(const aValue: DateTime); virtual; + + { Properties } + property CLAVE1 : Float read GetCLAVE1Value write SetCLAVE1Value; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property NUMINF : String read GetNUMINFValue write SetNUMINFValue; + property OldNUMINF : String read GetOldNUMINFValue; + property FUNCION : String read GetFUNCIONValue write SetFUNCIONValue; + property OldFUNCION : String read GetOldFUNCIONValue; + property FECINI : DateTime read GetFECINIValue write SetFECINIValue; + property OldFECINI : DateTime read GetOldFECINIValue; + property FECFIN : DateTime read GetFECFINValue write SetFECFINValue; + property OldFECFIN : DateTime read GetOldFECFINValue; + property FECINF : DateTime read GetFECINFValue write SetFECINFValue; + property OldFECINF : DateTime read GetOldFECINFValue; + property PERVENINI : DateTime read GetPERVENINIValue write SetPERVENINIValue; + property OldPERVENINI : DateTime read GetOldPERVENINIValue; + property PERVENFIN : DateTime read GetPERVENFINValue write SetPERVENFINValue; + property OldPERVENFIN : DateTime read GetOldPERVENFINValue; + property EANOFI : String read GetEANOFIValue write SetEANOFIValue; + property OldEANOFI : String read GetOldEANOFIValue; + property EANEMI : String read GetEANEMIValue write SetEANEMIValue; + property OldEANEMI : String read GetOldEANEMIValue; + property EANREC : String read GetEANRECValue write SetEANRECValue; + property OldEANREC : String read GetOldEANRECValue; + property EANVEN : String read GetEANVENValue write SetEANVENValue; + property OldEANVEN : String read GetOldEANVENValue; + property EANALM : String read GetEANALMValue write SetEANALMValue; + property OldEANALM : String read GetOldEANALMValue; + property EANREP : String read GetEANREPValue write SetEANREPValue; + property OldEANREP : String read GetOldEANREPValue; + property EANPRO : String read GetEANPROValue write SetEANPROValue; + property OldEANPRO : String read GetOldEANPROValue; + property EANADMSA : String read GetEANADMSAValue write SetEANADMSAValue; + property OldEANADMSA : String read GetOldEANADMSAValue; + property EANREPSR : String read GetEANREPSRValue write SetEANREPSRValue; + property OldEANREPSR : String read GetOldEANREPSRValue; + property ADMVENSA : String read GetADMVENSAValue write SetADMVENSAValue; + property OldADMVENSA : String read GetOldADMVENSAValue; + property REPDEPSR : String read GetREPDEPSRValue write SetREPDEPSRValue; + property OldREPDEPSR : String read GetOldREPDEPSRValue; + property EMAILSA : String read GetEMAILSAValue write SetEMAILSAValue; + property OldEMAILSA : String read GetOldEMAILSAValue; + property NUMFAXSA : String read GetNUMFAXSAValue write SetNUMFAXSAValue; + property OldNUMFAXSA : String read GetOldNUMFAXSAValue; + property NUMTELSA : String read GetNUMTELSAValue write SetNUMTELSAValue; + property OldNUMTELSA : String read GetOldNUMTELSAValue; + property NUMTLXSA : String read GetNUMTLXSAValue write SetNUMTLXSAValue; + property OldNUMTLXSA : String read GetOldNUMTLXSAValue; + property X400SA : String read GetX400SAValue write SetX400SAValue; + property OldX400SA : String read GetOldX400SAValue; + property EMAILSR : String read GetEMAILSRValue write SetEMAILSRValue; + property OldEMAILSR : String read GetOldEMAILSRValue; + property NUMFAXSR : String read GetNUMFAXSRValue write SetNUMFAXSRValue; + property OldNUMFAXSR : String read GetOldNUMFAXSRValue; + property NUMTELSR : String read GetNUMTELSRValue write SetNUMTELSRValue; + property OldNUMTELSR : String read GetOldNUMTELSRValue; + property NUMTLXSR : String read GetNUMTLXSRValue write SetNUMTLXSRValue; + property OldNUMTLXSR : String read GetOldNUMTLXSRValue; + property X400SR : String read GetX400SRValue write SetX400SRValue; + property OldX400SR : String read GetOldX400SRValue; + property NUMPRE : String read GetNUMPREValue write SetNUMPREValue; + property OldNUMPRE : String read GetOldNUMPREValue; + property NUMINFSC : String read GetNUMINFSCValue write SetNUMINFSCValue; + property OldNUMINFSC : String read GetOldNUMINFSCValue; + property NUMCON : String read GetNUMCONValue write SetNUMCONValue; + property OldNUMCON : String read GetOldNUMCONValue; + property FECPRE : DateTime read GetFECPREValue write SetFECPREValue; + property OldFECPRE : DateTime read GetOldFECPREValue; + property FECINFSC : DateTime read GetFECINFSCValue write SetFECINFSCValue; + property OldFECINFSC : DateTime read GetOldFECINFSCValue; + property FECCON : DateTime read GetFECCONValue write SetFECCONValue; + property OldFECCON : DateTime read GetOldFECCONValue; + property DIVPED : String read GetDIVPEDValue write SetDIVPEDValue; + property OldDIVPED : String read GetOldDIVPEDValue; + property DIVPRE : String read GetDIVPREValue write SetDIVPREValue; + property OldDIVPRE : String read GetOldDIVPREValue; + property DIVPAG : String read GetDIVPAGValue write SetDIVPAGValue; + property OldDIVPAG : String read GetOldDIVPAGValue; + property DIVPEDF : String read GetDIVPEDFValue write SetDIVPEDFValue; + property OldDIVPEDF : String read GetOldDIVPEDFValue; + property DIVPREF : String read GetDIVPREFValue write SetDIVPREFValue; + property OldDIVPREF : String read GetOldDIVPREFValue; + property DIVPAGF : String read GetDIVPAGFValue write SetDIVPAGFValue; + property OldDIVPAGF : String read GetOldDIVPAGFValue; + property TASCAM : Float read GetTASCAMValue write SetTASCAMValue; + property OldTASCAM : Float read GetOldTASCAMValue; + property FECTAS : DateTime read GetFECTASValue write SetFECTASValue; + property OldFECTAS : DateTime read GetOldFECTASValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IRDX_LUGVENDelta } + IRDX_LUGVENDelta = interface(IRDX_LUGVEN) + ['{51ECAB19-FE1D-4141-82A8-F4078ADA6B11}'] + { Property getters and setters } + function GetOldCLAVE1Value : Float; + function GetOldCLAVE2Value : Integer; + function GetOldEANLUGValue : String; + function GetOldLUGVENValue : String; + function GetOldFECINIValue : DateTime; + function GetOldFECFINValue : DateTime; + function GetOldPERVENINIValue : DateTime; + function GetOldPERVENFINValue : DateTime; + + { Properties } + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property OldEANLUG : String read GetOldEANLUGValue; + property OldLUGVEN : String read GetOldLUGVENValue; + property OldFECINI : DateTime read GetOldFECINIValue; + property OldFECFIN : DateTime read GetOldFECFINValue; + property OldPERVENINI : DateTime read GetOldPERVENINIValue; + property OldPERVENFIN : DateTime read GetOldPERVENFINValue; + end; + + { TRDX_LUGVENBusinessProcessorRules } + TRDX_LUGVENBusinessProcessorRules = class(TDABusinessProcessorRules, IRDX_LUGVEN, IRDX_LUGVENDelta) + private + protected + { Property getters and setters } + function GetCLAVE1Value: Float; virtual; + function GetOldCLAVE1Value: Float; virtual; + procedure SetCLAVE1Value(const aValue: Float); virtual; + function GetCLAVE2Value: Integer; virtual; + function GetOldCLAVE2Value: Integer; virtual; + procedure SetCLAVE2Value(const aValue: Integer); virtual; + function GetEANLUGValue: String; virtual; + function GetOldEANLUGValue: String; virtual; + procedure SetEANLUGValue(const aValue: String); virtual; + function GetLUGVENValue: String; virtual; + function GetOldLUGVENValue: String; virtual; + procedure SetLUGVENValue(const aValue: String); virtual; + function GetFECINIValue: DateTime; virtual; + function GetOldFECINIValue: DateTime; virtual; + procedure SetFECINIValue(const aValue: DateTime); virtual; + function GetFECFINValue: DateTime; virtual; + function GetOldFECFINValue: DateTime; virtual; + procedure SetFECFINValue(const aValue: DateTime); virtual; + function GetPERVENINIValue: DateTime; virtual; + function GetOldPERVENINIValue: DateTime; virtual; + procedure SetPERVENINIValue(const aValue: DateTime); virtual; + function GetPERVENFINValue: DateTime; virtual; + function GetOldPERVENFINValue: DateTime; virtual; + procedure SetPERVENFINValue(const aValue: DateTime); virtual; + + { Properties } + property CLAVE1 : Float read GetCLAVE1Value write SetCLAVE1Value; + property OldCLAVE1 : Float read GetOldCLAVE1Value; + property CLAVE2 : Integer read GetCLAVE2Value write SetCLAVE2Value; + property OldCLAVE2 : Integer read GetOldCLAVE2Value; + property EANLUG : String read GetEANLUGValue write SetEANLUGValue; + property OldEANLUG : String read GetOldEANLUGValue; + property LUGVEN : String read GetLUGVENValue write SetLUGVENValue; + property OldLUGVEN : String read GetOldLUGVENValue; + property FECINI : DateTime read GetFECINIValue write SetFECINIValue; + property OldFECINI : DateTime read GetOldFECINIValue; + property FECFIN : DateTime read GetFECFINValue write SetFECFINValue; + property OldFECFIN : DateTime read GetOldFECFINValue; + property PERVENINI : DateTime read GetPERVENINIValue write SetPERVENINIValue; + property OldPERVENINI : DateTime read GetOldPERVENINIValue; + property PERVENFIN : DateTime read GetPERVENFINValue write SetPERVENFINValue; + property OldPERVENFIN : DateTime read GetOldPERVENFINValue; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers; + +{ TRDX_ARTVENBusinessProcessorRules } +constructor TRDX_ARTVENBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRDX_ARTVENBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCLAVE1]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCLAVE1]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCLAVE1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCLAVE1] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCLAVE2Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCLAVE2]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCLAVE2Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCLAVE2]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCLAVE2Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCLAVE2] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCLAVE3Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCLAVE3]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCLAVE3Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCLAVE3]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCLAVE3Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCLAVE3] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetEANARTValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENEANART]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldEANARTValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENEANART]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetEANARTValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENEANART] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCODCOMValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCODCOM]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCODCOMValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCODCOM]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCODCOMValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCODCOM] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetNUMVARValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMVAR]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldNUMVARValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENNUMVAR]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetNUMVARValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMVAR] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCODPROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCODPRO]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCODPROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCODPRO]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCODPROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCODPRO] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetDESARTCOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENDESARTCO]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldDESARTCOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENDESARTCO]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetDESARTCOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENDESARTCO] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetDESARTValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENDESART]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldDESARTValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENDESART]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetDESARTValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENDESART] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetNUMCONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMCON]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldNUMCONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENNUMCON]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetNUMCONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMCON] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetNUMLISValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMLIS]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldNUMLISValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENNUMLIS]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetNUMLISValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMLIS] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCONESP1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCONESP1]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCONESP1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCONESP1]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCONESP1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCONESP1] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCONESP2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCONESP2]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCONESP2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCONESP2]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCONESP2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCONESP2] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCONESP3Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCONESP3]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCONESP3Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCONESP3]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCONESP3Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCONESP3] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetVALVENValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENVALVEN]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldVALVENValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENVALVEN]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetVALVENValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENVALVEN] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPRENETCTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRENETCT]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPRENETCTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPRENETCT]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPRENETCTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRENETCT] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPREBRUCTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREBRUCT]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPREBRUCTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPREBRUCT]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPREBRUCTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREBRUCT] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPREINFETValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFET]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPREINFETValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPREINFET]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPREINFETValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFET] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPREINFFTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFFT]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPREINFFTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPREINFFT]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPREINFFTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFFT] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPRECALCTValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRECALCT]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPRECALCTValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPRECALCT]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPRECALCTValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRECALCT] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPRENETCAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRENETCA]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPRENETCAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPRENETCA]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPRENETCAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRENETCA] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPREBRUCAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREBRUCA]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPREBRUCAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPREBRUCA]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPREBRUCAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREBRUCA] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPREINFEAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFEA]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPREINFEAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPREINFEA]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPREINFEAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFEA] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPREINFFAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFFA]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPREINFFAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPREINFFA]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPREINFFAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPREINFFA] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetPRECALCAValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRECALCA]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldPRECALCAValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENPRECALCA]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetPRECALCAValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENPRECALCA] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetBAPRUN1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN1]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldBAPRUN1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENBAPRUN1]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetBAPRUN1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN1] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUNIMED1Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED1]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUNIMED1Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUNIMED1]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUNIMED1Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED1] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetBAPRUN2Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN2]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldBAPRUN2Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENBAPRUN2]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetBAPRUN2Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN2] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUNIMED2Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED2]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUNIMED2Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUNIMED2]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUNIMED2Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED2] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetBAPRUN3Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN3]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldBAPRUN3Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENBAPRUN3]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetBAPRUN3Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN3] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUNIMED3Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED3]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUNIMED3Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUNIMED3]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUNIMED3Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED3] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetBAPRUN4Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN4]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldBAPRUN4Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENBAPRUN4]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetBAPRUN4Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN4] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUNIMED4Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED4]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUNIMED4Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUNIMED4]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUNIMED4Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED4] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetBAPRUN5Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN5]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldBAPRUN5Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENBAPRUN5]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetBAPRUN5Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENBAPRUN5] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUNIMED5Value: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED5]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUNIMED5Value: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUNIMED5]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUNIMED5Value(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUNIMED5] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCANVENValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANVEN]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCANVENValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCANVEN]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCANVENValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANVEN] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetEXIPROValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENEXIPRO]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldEXIPROValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENEXIPRO]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetEXIPROValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENEXIPRO] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetDESEXIValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENDESEXI]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldDESEXIValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENDESEXI]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetDESEXIValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENDESEXI] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetESPMEDCVValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENESPMEDCV]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldESPMEDCVValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENESPMEDCV]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetESPMEDCVValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENESPMEDCV] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetESPMEDEPValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENESPMEDEP]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldESPMEDEPValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENESPMEDEP]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetESPMEDEPValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENESPMEDEP] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetESPMEDDEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENESPMEDDE]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldESPMEDDEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENESPMEDDE]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetESPMEDDEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENESPMEDDE] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCANDEVValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANDEV]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCANDEVValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCANDEV]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCANDEVValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANDEV] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetEANVENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENEANVEN]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldEANVENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENEANVEN]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetEANVENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENEANVEN] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetNOMVENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNOMVEN]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldNOMVENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENNOMVEN]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetNOMVENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNOMVEN] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMTALON]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldNUMTALONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENNUMTALON]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetNUMTALONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENNUMTALON] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCANVENNETValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANVENNET]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCANVENNETValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCANVENNET]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCANVENNETValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANVENNET] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUMEDVENNETValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUMEDVENNET]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUMEDVENNETValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUMEDVENNET]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUMEDVENNETValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUMEDVENNET] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetCANESPValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANESP]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldCANESPValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENCANESP]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetCANESPValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENCANESP] := aValue; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetUMEDESPValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUMEDESP]; +end; + +function TRDX_ARTVENBusinessProcessorRules.GetOldUMEDESPValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_ARTVENUMEDESP]; +end; + +procedure TRDX_ARTVENBusinessProcessorRules.SetUMEDESPValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_ARTVENUMEDESP] := aValue; +end; + + +{ TRDX_CABVENBusinessProcessorRules } +constructor TRDX_CABVENBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRDX_CABVENBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRDX_CABVENBusinessProcessorRules.GetCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENCLAVE1]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENCLAVE1]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetCLAVE1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENCLAVE1] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMINF]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMINFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMINF]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMINFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMINF] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFUNCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFUNCION]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFUNCIONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFUNCION]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFUNCIONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFUNCION] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECINI]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECINI]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECINIValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECINI] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECFIN]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECFIN]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECFIN] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECINFValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECINF]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECINFValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECINF]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECINFValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECINF] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetPERVENINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENPERVENINI]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldPERVENINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENPERVENINI]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetPERVENINIValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENPERVENINI] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetPERVENFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENPERVENFIN]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldPERVENFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENPERVENFIN]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetPERVENFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENPERVENFIN] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANOFIValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANOFI]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANOFIValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANOFI]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANOFIValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANOFI] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANEMIValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANEMI]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANEMIValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANEMI]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANEMIValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANEMI] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANRECValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANREC]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANRECValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANREC]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANRECValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANREC] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANVENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANVEN]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANVENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANVEN]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANVENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANVEN] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANALMValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANALM]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANALMValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANALM]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANALMValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANALM] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANREPValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANREP]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANREPValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANREP]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANREPValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANREP] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANPROValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANPRO]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANPROValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANPRO]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANPROValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANPRO] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANADMSAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANADMSA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANADMSAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANADMSA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANADMSAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANADMSA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEANREPSRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANREPSR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEANREPSRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEANREPSR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEANREPSRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEANREPSR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetADMVENSAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENADMVENSA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldADMVENSAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENADMVENSA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetADMVENSAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENADMVENSA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetREPDEPSRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENREPDEPSR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldREPDEPSRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENREPDEPSR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetREPDEPSRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENREPDEPSR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEMAILSAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEMAILSA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEMAILSAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEMAILSA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEMAILSAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEMAILSA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMFAXSAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMFAXSA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMFAXSAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMFAXSA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMFAXSAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMFAXSA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMTELSAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTELSA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMTELSAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMTELSA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMTELSAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTELSA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMTLXSAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTLXSA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMTLXSAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMTLXSA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMTLXSAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTLXSA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetX400SAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENX400SA]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldX400SAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENX400SA]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetX400SAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENX400SA] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetEMAILSRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEMAILSR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldEMAILSRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENEMAILSR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetEMAILSRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENEMAILSR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMFAXSRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMFAXSR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMFAXSRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMFAXSR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMFAXSRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMFAXSR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMTELSRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTELSR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMTELSRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMTELSR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMTELSRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTELSR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMTLXSRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTLXSR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMTLXSRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMTLXSR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMTLXSRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMTLXSR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetX400SRValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENX400SR]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldX400SRValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENX400SR]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetX400SRValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENX400SR] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMPREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMPRE]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMPREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMPRE]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMPREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMPRE] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMINFSCValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMINFSC]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMINFSCValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMINFSC]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMINFSCValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMINFSC] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetNUMCONValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMCON]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldNUMCONValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENNUMCON]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetNUMCONValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENNUMCON] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECPREValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECPRE]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECPREValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECPRE]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECPREValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECPRE] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECINFSCValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECINFSC]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECINFSCValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECINFSC]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECINFSCValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECINFSC] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECCONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECCON]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECCONValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECCON]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECCONValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECCON] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetDIVPEDValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPED]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldDIVPEDValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENDIVPED]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetDIVPEDValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPED] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetDIVPREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPRE]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldDIVPREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENDIVPRE]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetDIVPREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPRE] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetDIVPAGValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPAG]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldDIVPAGValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENDIVPAG]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetDIVPAGValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPAG] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetDIVPEDFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPEDF]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldDIVPEDFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENDIVPEDF]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetDIVPEDFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPEDF] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetDIVPREFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPREF]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldDIVPREFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENDIVPREF]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetDIVPREFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPREF] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetDIVPAGFValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPAGF]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldDIVPAGFValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENDIVPAGF]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetDIVPAGFValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENDIVPAGF] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetTASCAMValue: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENTASCAM]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldTASCAMValue: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENTASCAM]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetTASCAMValue(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENTASCAM] := aValue; +end; + +function TRDX_CABVENBusinessProcessorRules.GetFECTASValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECTAS]; +end; + +function TRDX_CABVENBusinessProcessorRules.GetOldFECTASValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_CABVENFECTAS]; +end; + +procedure TRDX_CABVENBusinessProcessorRules.SetFECTASValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_CABVENFECTAS] := aValue; +end; + + +{ TRDX_LUGVENBusinessProcessorRules } +constructor TRDX_LUGVENBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TRDX_LUGVENBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENCLAVE1]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldCLAVE1Value: Float; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENCLAVE1]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetCLAVE1Value(const aValue: Float); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENCLAVE1] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENCLAVE2]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldCLAVE2Value: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENCLAVE2]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetCLAVE2Value(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENCLAVE2] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetEANLUGValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENEANLUG]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldEANLUGValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENEANLUG]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetEANLUGValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENEANLUG] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetLUGVENValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENLUGVEN]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldLUGVENValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENLUGVEN]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetLUGVENValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENLUGVEN] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetFECINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENFECINI]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldFECINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENFECINI]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetFECINIValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENFECINI] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetFECFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENFECFIN]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldFECFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENFECFIN]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetFECFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENFECFIN] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetPERVENINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENPERVENINI]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldPERVENINIValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENPERVENINI]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetPERVENINIValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENPERVENINI] := aValue; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetPERVENFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENPERVENFIN]; +end; + +function TRDX_LUGVENBusinessProcessorRules.GetOldPERVENFINValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_RDX_LUGVENPERVENFIN]; +end; + +procedure TRDX_LUGVENBusinessProcessorRules.SetPERVENFINValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_RDX_LUGVENPERVENFIN] := aValue; +end; + + +initialization + RegisterBusinessProcessorRules(RID_RDX_ARTVENDelta, TRDX_ARTVENBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_RDX_CABVENDelta, TRDX_CABVENBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_RDX_LUGVENDelta, TRDX_LUGVENBusinessProcessorRules); + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/uBizEDISales.pas b/2.1.0/Source/Servidor/Services/EDI_Sales/uBizEDISales.pas new file mode 100644 index 0000000..a6e6cdc --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/uBizEDISales.pas @@ -0,0 +1,476 @@ +unit uBizEDISales; + +interface + +uses + uDAInterfaces, uDADataTable, schEDISalesClient_Intf, Classes, + DB, Controls; + +const + BIZ_SLSRPT_CAB = 'BizSlsRptCab'; + BIZ_SLSRPT_LUG = 'BizSlsRptLug'; + BIZ_SLSRPT_ART = 'BizSlsRptArt'; + +type + IBizEDISls_Cab = interface(IRDX_CABVEN) + ['{E7A9D79B-C28F-48BC-A592-EF8C28CD8DFF}'] + end; + + IBizEDISls_Lug = interface(IRDX_LUGVEN) + ['{C3438D84-14A3-4501-879D-C24AE7847DBB}'] + end; + + IBizEDISls_Art = interface(IRDX_ARTVEN) + ['{8A2A5662-D75D-469A-95EB-03C02D2CD1F7}'] + end; + + TBizEDISls_Cab = class(TRDX_CABVENDataTableRules, IBizEDISls_Cab) + protected + procedure SetCLAVE1Value(const aValue: Float); override; + procedure SetNUMINFValue(const aValue: String); override; + procedure SetFUNCIONValue(const aValue: String); override; + + procedure SetEANOFIValue(const aValue: String); override; + procedure SetEANEMIValue(const aValue: String); override; + procedure SetEANRECValue(const aValue: String); override; + procedure SetEANVENValue(const aValue: String); override; + procedure SetEANALMValue(const aValue: String); override; + procedure SetEANREPValue(const aValue: String); override; + procedure SetEANPROValue(const aValue: String); override; + procedure SetEANADMSAValue(const aValue: String); override; + procedure SetEANREPSRValue(const aValue: String); override; + procedure SetADMVENSAValue(const aValue: String); override; + procedure SetREPDEPSRValue(const aValue: String); override; + procedure SetEMAILSAValue(const aValue: String); override; + procedure SetNUMFAXSAValue(const aValue: String); override; + procedure SetNUMTELSAValue(const aValue: String); override; + procedure SetNUMTLXSAValue(const aValue: String); override; + procedure SetX400SAValue(const aValue: String); override; + procedure SetEMAILSRValue(const aValue: String); override; + procedure SetNUMFAXSRValue(const aValue: String); override; + procedure SetNUMTELSRValue(const aValue: String); override; + procedure SetNUMTLXSRValue(const aValue: String); override; + procedure SetX400SRValue(const aValue: String); override; + procedure SetNUMPREValue(const aValue: String); override; + procedure SetNUMINFSCValue(const aValue: String); override; + procedure SetNUMCONValue(const aValue: String); override; + procedure SetDIVPEDValue(const aValue: String); override; + procedure SetDIVPREValue(const aValue: String); override; + procedure SetDIVPAGValue(const aValue: String); override; + procedure SetDIVPEDFValue(const aValue: String); override; + procedure SetDIVPREFValue(const aValue: String); override; + procedure SetDIVPAGFValue(const aValue: String); override; + + procedure SetTASCAMValue(const aValue: Float); override; + + procedure SetFECINIValue(const aValue: DateTime); override; + procedure SetFECFINValue(const aValue: DateTime); override; + procedure SetFECINFValue(const aValue: DateTime); override; + procedure SetFECPREValue(const aValue: DateTime); override; + procedure SetFECINFSCValue(const aValue: DateTime); override; + procedure SetFECCONValue(const aValue: DateTime); override; + procedure SetFECTASValue(const aValue: DateTime); override; + procedure SetPERVENINIValue(const aValue: DateTime); override; + procedure SetPERVENFINValue(const aValue: DateTime); override; + end; + + + TBizEDISls_Lug = class(TRDX_LUGVENDataTableRules, IBizEDISls_Lug) + protected + procedure SetFECINIValue(const aValue: DateTime); override; + procedure SetFECFINValue(const aValue: DateTime); override; + procedure SetPERVENINIValue(const aValue: DateTime); override; + procedure SetPERVENFINValue(const aValue: DateTime); override; + end; + + TBizEDISls_Art = class(TRDX_ARTVENDataTableRules, IBizEDISls_Art) + protected + end; + +implementation + +{ TBizEDISls_Cab } + +uses + Variants; + +procedure TBizEDISls_Cab.SetADMVENSAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENADMVENSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENADMVENSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetCLAVE1Value(const aValue: Float); +begin + inherited; +end; + +procedure TBizEDISls_Cab.SetDIVPAGFValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENDIVPAGF].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENDIVPAGF].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetDIVPAGValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENDIVPAG].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENDIVPAG].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetDIVPEDFValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENDIVPEDF].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENDIVPEDF].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetDIVPEDValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENDIVPED].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENDIVPED].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetDIVPREFValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENDIVPREF].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENDIVPREF].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetDIVPREValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENDIVPRE].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENDIVPRE].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANADMSAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANADMSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANADMSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANALMValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANALM].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANALM].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANEMIValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANEMI].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANEMI].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANOFIValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANOFI].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANOFI].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANPROValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANPRO].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANPRO].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANRECValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANREC].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANREC].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANREPSRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANREPSR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANREPSR].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANREPValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANREP].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANREP].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEANVENValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEANVEN].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEANVEN].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEMAILSAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEMAILSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEMAILSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetEMAILSRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENEMAILSR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENEMAILSR].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetFECCONValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECCON].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECCON].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFECFINValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECFIN].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECFIN].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFECINFSCValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECINFSC].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECINFSC].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFECINFValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECINF].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECINF].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFECINIValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECINI].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECINI].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFECPREValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECPRE].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECPRE].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFECTASValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENFECTAS].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFECTAS].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetFUNCIONValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENFUNCION].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENFUNCION].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMCONValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMCON].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMCON].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMFAXSAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMFAXSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMFAXSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMFAXSRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMFAXSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMFAXSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMINFSCValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMINFSC].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMINFSC].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMINFValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMINF].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMINF].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMPREValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMPRE].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMPRE].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMTELSAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMTELSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMTELSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMTELSRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMTELSR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMTELSR].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMTLXSAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMTLXSA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMTLXSA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetNUMTLXSRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENNUMTLXSR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENNUMTLXSR].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetPERVENFINValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENPERVENFIN].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENPERVENFIN].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetPERVENINIValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_CABVENPERVENINI].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENPERVENINI].AsDateTime := aValue; +end; + +procedure TBizEDISls_Cab.SetREPDEPSRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENREPDEPSR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENREPDEPSR].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetTASCAMValue(const aValue: Float); +begin + inherited; +end; + +procedure TBizEDISls_Cab.SetX400SAValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENX400SA].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENX400SA].AsString := aValue; +end; + +procedure TBizEDISls_Cab.SetX400SRValue(const aValue: String); +begin + if Length(aValue) = 0 then + DataTable.Fields[idx_RDX_CABVENX400SR].AsVariant := NULL + else + DataTable.Fields[idx_RDX_CABVENX400SR].AsString := aValue; +end; + +{ TBizEDISls_Lug } + +procedure TBizEDISls_Lug.SetFECFINValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_LUGVENFECFIN].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LUGVENFECFIN].AsDateTime := aValue; +end; + +procedure TBizEDISls_Lug.SetFECINIValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_LUGVENFECINI].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LUGVENFECINI].AsDateTime := aValue; +end; + +procedure TBizEDISls_Lug.SetPERVENFINValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_LUGVENPERVENFIN].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LUGVENPERVENFIN].AsDateTime := aValue; +end; + +procedure TBizEDISls_Lug.SetPERVENINIValue(const aValue: DateTime); +begin + if aValue = 0 then + DataTable.Fields[idx_RDX_LUGVENPERVENINI].AsVariant := NULL + else + DataTable.Fields[idx_RDX_LUGVENPERVENINI].AsDateTime := aValue; +end; + +initialization + RegisterDataTableRules(BIZ_SLSRPT_CAB, TBizEDISls_Cab); + RegisterDataTableRules(BIZ_SLSRPT_LUG, TBizEDISls_Lug); + RegisterDataTableRules(BIZ_SLSRPT_ART, TBizEDISls_Art); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.ddp b/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.ddp differ diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.dfm b/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.dfm new file mode 100644 index 0000000..571803f --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.dfm @@ -0,0 +1,2699 @@ +object dmEDISales: TdmEDISales + OldCreateOrder = False + Height = 184 + Width = 379 + object schEDISales: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_ARTVEN' + SQL = + 'SELECT '#10' CLAVE1, CLAVE2, CLAVE3, EANART, CODCOM, NUMVAR, CODP' + + 'RO, '#10' DESARTCO, DESART, NUMCON, NUMLIS, CONESP1, CONESP2, '#10' ' + + ' CONESP3, VALVEN, PRENETCT, PREBRUCT, PREINFET, PREINFFT, '#10' ' + + 'PRECALCT, PRENETCA, PREBRUCA, PREINFEA, PREINFFA, PRECALCA, '#10' ' + + ' BAPRUN1, UNIMED1, BAPRUN2, UNIMED2, BAPRUN3, UNIMED3, '#10' BAPR' + + 'UN4, UNIMED4, BAPRUN5, UNIMED5, CANVEN, EXIPRO, '#10' DESEXI, ESP' + + 'MEDCV, ESPMEDEP, ESPMEDDE, CANDEV, EANVEN, '#10' NOMVEN, NUMTALON' + + ', CANVENNET, UMEDVENNET, CANESP, UMEDESP'#10' FROM'#10' RDX_ARTVEN' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'CLAVE2' + TableField = 'CLAVE2' + end + item + DatasetField = 'CLAVE3' + TableField = 'CLAVE3' + end + item + DatasetField = 'EANART' + TableField = 'EANART' + end + item + DatasetField = 'CODCOM' + TableField = 'CODCOM' + end + item + DatasetField = 'NUMVAR' + TableField = 'NUMVAR' + end + item + DatasetField = 'CODPRO' + TableField = 'CODPRO' + end + item + DatasetField = 'DESARTCO' + TableField = 'DESARTCO' + end + item + DatasetField = 'DESART' + TableField = 'DESART' + end + item + DatasetField = 'NUMCON' + TableField = 'NUMCON' + end + item + DatasetField = 'NUMLIS' + TableField = 'NUMLIS' + end + item + DatasetField = 'CONESP1' + TableField = 'CONESP1' + end + item + DatasetField = 'CONESP2' + TableField = 'CONESP2' + end + item + DatasetField = 'CONESP3' + TableField = 'CONESP3' + end + item + DatasetField = 'VALVEN' + TableField = 'VALVEN' + end + item + DatasetField = 'PRENETCT' + TableField = 'PRENETCT' + end + item + DatasetField = 'PREBRUCT' + TableField = 'PREBRUCT' + end + item + DatasetField = 'PREINFET' + TableField = 'PREINFET' + end + item + DatasetField = 'PREINFFT' + TableField = 'PREINFFT' + end + item + DatasetField = 'PRECALCT' + TableField = 'PRECALCT' + end + item + DatasetField = 'PRENETCA' + TableField = 'PRENETCA' + end + item + DatasetField = 'PREBRUCA' + TableField = 'PREBRUCA' + end + item + DatasetField = 'PREINFEA' + TableField = 'PREINFEA' + end + item + DatasetField = 'PREINFFA' + TableField = 'PREINFFA' + end + item + DatasetField = 'PRECALCA' + TableField = 'PRECALCA' + end + item + DatasetField = 'BAPRUN1' + TableField = 'BAPRUN1' + end + item + DatasetField = 'UNIMED1' + TableField = 'UNIMED1' + end + item + DatasetField = 'BAPRUN2' + TableField = 'BAPRUN2' + end + item + DatasetField = 'UNIMED2' + TableField = 'UNIMED2' + end + item + DatasetField = 'BAPRUN3' + TableField = 'BAPRUN3' + end + item + DatasetField = 'UNIMED3' + TableField = 'UNIMED3' + end + item + DatasetField = 'BAPRUN4' + TableField = 'BAPRUN4' + end + item + DatasetField = 'UNIMED4' + TableField = 'UNIMED4' + end + item + DatasetField = 'BAPRUN5' + TableField = 'BAPRUN5' + end + item + DatasetField = 'UNIMED5' + TableField = 'UNIMED5' + end + item + DatasetField = 'CANVEN' + TableField = 'CANVEN' + end + item + DatasetField = 'EXIPRO' + TableField = 'EXIPRO' + end + item + DatasetField = 'DESEXI' + TableField = 'DESEXI' + end + item + DatasetField = 'ESPMEDCV' + TableField = 'ESPMEDCV' + end + item + DatasetField = 'ESPMEDEP' + TableField = 'ESPMEDEP' + end + item + DatasetField = 'ESPMEDDE' + TableField = 'ESPMEDDE' + end + item + DatasetField = 'CANDEV' + TableField = 'CANDEV' + end + item + DatasetField = 'EANVEN' + TableField = 'EANVEN' + end + item + DatasetField = 'NOMVEN' + TableField = 'NOMVEN' + end + item + DatasetField = 'NUMTALON' + TableField = 'NUMTALON' + end + item + DatasetField = 'CANVENNET' + TableField = 'CANVENNET' + end + item + DatasetField = 'UMEDVENNET' + TableField = 'UMEDVENNET' + end + item + DatasetField = 'CANESP' + TableField = 'CANESP' + end + item + DatasetField = 'UMEDESP' + TableField = 'UMEDESP' + end> + end> + Name = 'RDX_ARTVEN' + Fields = < + item + Name = 'CLAVE1' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CLAVE2' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CLAVE3' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANART' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODCOM' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMVAR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CODPRO' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESARTCO' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESART' + DataType = datString + Size = 70 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCON' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMLIS' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONESP1' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONESP2' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CONESP3' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VALVEN' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRENETCT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PREBRUCT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PREINFET' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PREINFFT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRECALCT' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRENETCA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PREBRUCA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PREINFEA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PREINFFA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PRECALCA' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BAPRUN1' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UNIMED1' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BAPRUN2' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UNIMED2' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BAPRUN3' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UNIMED3' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BAPRUN4' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UNIMED4' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'BAPRUN5' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UNIMED5' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANVEN' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EXIPRO' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESEXI' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ESPMEDCV' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ESPMEDEP' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ESPMEDDE' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANDEV' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANVEN' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMVEN' + DataType = datString + Size = 70 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANVENNET' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UMEDVENNET' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CANESP' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'UMEDESP' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_CABVEN' + SQL = + 'SELECT '#10' CLAVE1, NUMINF, FUNCION, FECINI, FECFIN, FECINF, PER' + + 'VENINI, PERVENFIN,'#10' EANOFI, EANEMI, EANREC, EANVEN, EANALM, E' + + 'ANREP, EANPRO, '#10' EANADMSA, EANREPSR, ADMVENSA, REPDEPSR, EMAI' + + 'LSA, NUMFAXSA, '#10' NUMTELSA, NUMTLXSA, X400SA, EMAILSR, NUMFAXS' + + 'R, NUMTELSR, '#10' NUMTLXSR, X400SR, NUMPRE, NUMINFSC, NUMCON, FE' + + 'CPRE, '#10' FECINFSC, FECCON, DIVPED, DIVPRE, DIVPAG, DIVPEDF, '#10' ' + + ' DIVPREF, DIVPAGF, TASCAM, FECTAS, FECHA_CARGA'#10' FROM'#10' RDX_' + + 'CABVEN' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'NUMINF' + TableField = 'NUMINF' + end + item + DatasetField = 'FUNCION' + TableField = 'FUNCION' + end + item + DatasetField = 'FECINI' + TableField = 'FECINI' + end + item + DatasetField = 'FECFIN' + TableField = 'FECFIN' + end + item + DatasetField = 'FECINF' + TableField = 'FECINF' + end + item + DatasetField = 'EANOFI' + TableField = 'EANOFI' + end + item + DatasetField = 'EANEMI' + TableField = 'EANEMI' + end + item + DatasetField = 'EANREC' + TableField = 'EANREC' + end + item + DatasetField = 'EANVEN' + TableField = 'EANVEN' + end + item + DatasetField = 'EANALM' + TableField = 'EANALM' + end + item + DatasetField = 'EANREP' + TableField = 'EANREP' + end + item + DatasetField = 'EANPRO' + TableField = 'EANPRO' + end + item + DatasetField = 'EANADMSA' + TableField = 'EANADMSA' + end + item + DatasetField = 'EANREPSR' + TableField = 'EANREPSR' + end + item + DatasetField = 'ADMVENSA' + TableField = 'ADMVENSA' + end + item + DatasetField = 'REPDEPSR' + TableField = 'REPDEPSR' + end + item + DatasetField = 'EMAILSA' + TableField = 'EMAILSA' + end + item + DatasetField = 'NUMFAXSA' + TableField = 'NUMFAXSA' + end + item + DatasetField = 'NUMTELSA' + TableField = 'NUMTELSA' + end + item + DatasetField = 'NUMTLXSA' + TableField = 'NUMTLXSA' + end + item + DatasetField = 'X400SA' + TableField = 'X400SA' + end + item + DatasetField = 'EMAILSR' + TableField = 'EMAILSR' + end + item + DatasetField = 'NUMFAXSR' + TableField = 'NUMFAXSR' + end + item + DatasetField = 'NUMTELSR' + TableField = 'NUMTELSR' + end + item + DatasetField = 'NUMTLXSR' + TableField = 'NUMTLXSR' + end + item + DatasetField = 'X400SR' + TableField = 'X400SR' + end + item + DatasetField = 'NUMPRE' + TableField = 'NUMPRE' + end + item + DatasetField = 'NUMINFSC' + TableField = 'NUMINFSC' + end + item + DatasetField = 'NUMCON' + TableField = 'NUMCON' + end + item + DatasetField = 'FECPRE' + TableField = 'FECPRE' + end + item + DatasetField = 'FECINFSC' + TableField = 'FECINFSC' + end + item + DatasetField = 'FECCON' + TableField = 'FECCON' + end + item + DatasetField = 'DIVPED' + TableField = 'DIVPED' + end + item + DatasetField = 'DIVPRE' + TableField = 'DIVPRE' + end + item + DatasetField = 'DIVPAG' + TableField = 'DIVPAG' + end + item + DatasetField = 'DIVPEDF' + TableField = 'DIVPEDF' + end + item + DatasetField = 'DIVPREF' + TableField = 'DIVPREF' + end + item + DatasetField = 'DIVPAGF' + TableField = 'DIVPAGF' + end + item + DatasetField = 'TASCAM' + TableField = 'TASCAM' + end + item + DatasetField = 'FECTAS' + TableField = 'FECTAS' + end + item + DatasetField = 'PERVENINI' + TableField = 'PERVENINI' + end + item + DatasetField = 'PERVENFIN' + TableField = 'PERVENFIN' + end + item + DatasetField = 'FECHA_CARGA' + TableField = 'FECHA_CARGA' + end> + end> + Name = 'RDX_CABVEN' + Fields = < + item + Name = 'CLAVE1' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMINF' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FUNCION' + DataType = datString + Size = 10 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECINI' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECINF' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERVENINI' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERVENFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANOFI' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANEMI' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANREC' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANVEN' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANALM' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANREP' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANPRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANADMSA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANREPSR' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ADMVENSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'REPDEPSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAILSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMFAXSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMTELSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMTLXSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'X400SA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EMAILSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMFAXSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMTELSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMTLXSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'X400SR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMPRE' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMINFSC' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NUMCON' + DataType = datString + Size = 35 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECPRE' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECINFSC' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECCON' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIVPED' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIVPRE' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIVPAG' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIVPEDF' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIVPREF' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DIVPAGF' + DataType = datString + Size = 3 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'TASCAM' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECTAS' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECHA_CARGA' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end + item + Params = <> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LUGVEN' + SQL = + 'SELECT '#10' CLAVE1, CLAVE2, EANLUG, LUGVEN, FECINI, FECFIN, PERV' + + 'ENINI, '#10' PERVENFIN'#10' FROM'#10' RDX_LUGVEN' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'CLAVE1' + TableField = 'CLAVE1' + end + item + DatasetField = 'CLAVE2' + TableField = 'CLAVE2' + end + item + DatasetField = 'EANLUG' + TableField = 'EANLUG' + end + item + DatasetField = 'LUGVEN' + TableField = 'LUGVEN' + end + item + DatasetField = 'FECINI' + TableField = 'FECINI' + end + item + DatasetField = 'FECFIN' + TableField = 'FECFIN' + end + item + DatasetField = 'PERVENINI' + TableField = 'PERVENINI' + end + item + DatasetField = 'PERVENFIN' + TableField = 'PERVENFIN' + end> + end> + Name = 'RDX_LUGVEN' + Fields = < + item + Name = 'CLAVE1' + DataType = datFloat + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CLAVE2' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'EANLUG' + DataType = datString + Size = 17 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'LUGVEN' + DataType = datString + Size = 70 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECINI' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'FECFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERVENINI' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'PERVENFIN' + DataType = datDateTime + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'RETURN_VALUE' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptResult + end> + Statements = < + item + Connection = 'GFT_VARELA' + SQL = 'RDX_P_CARGAR_VENTASEDI' + StatementType = stStoredProcedure + ColumnMappings = <> + end> + Name = 'RDX_P_CARGAR_VENTASEDI' + end + item + Params = < + item + Name = 'CLAVE1' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMINF' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FUNCION' + DataType = datString + Size = 10 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECINI' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECFIN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECINF' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANOFI' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANEMI' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANREC' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANVEN' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANALM' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANREP' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANPRO' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANADMSA' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANREPSR' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ADMVENSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'REPDEPSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EMAILSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMFAXSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMTELSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMTLXSA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'X400SA' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EMAILSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMFAXSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMTELSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMTLXSR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'X400SR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMPRE' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMINFSC' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMCON' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECPRE' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECINFSC' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECCON' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIVPED' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIVPRE' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIVPAG' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIVPEDF' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIVPREF' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DIVPAGF' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'TASCAM' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECTAS' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PERVENINI' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PERVENFIN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECHA_CARGA' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_CABVEN' + SQL = + 'INSERT'#10' INTO RDX_CABVEN'#10' (CLAVE1, NUMINF, FUNCION, FECINI, F' + + 'ECFIN, FECINF, EANOFI, '#10' EANEMI, EANREC, EANVEN, EANALM, EAN' + + 'REP, EANPRO, EANADMSA, '#10' EANREPSR, ADMVENSA, REPDEPSR, EMAIL' + + 'SA, NUMFAXSA, NUMTELSA, '#10' NUMTLXSA, X400SA, EMAILSR, NUMFAXS' + + 'R, NUMTELSR, NUMTLXSR, '#10' X400SR, NUMPRE, NUMINFSC, NUMCON, F' + + 'ECPRE, FECINFSC, '#10' FECCON, DIVPED, DIVPRE, DIVPAG, DIVPEDF, ' + + 'DIVPREF, DIVPAGF, '#10' TASCAM, FECTAS, PERVENINI, PERVENFIN, FE' + + 'CHA_CARGA)'#10' VALUES'#10' (:CLAVE1, :NUMINF, :FUNCION, :FECINI, :F' + + 'ECFIN, :FECINF, '#10' :EANOFI, :EANEMI, :EANREC, :EANVEN, :EANAL' + + 'M, :EANREP, '#10' :EANPRO, :EANADMSA, :EANREPSR, :ADMVENSA, :REP' + + 'DEPSR, '#10' :EMAILSA, :NUMFAXSA, :NUMTELSA, :NUMTLXSA, :X400SA,' + + ' '#10' :EMAILSR, :NUMFAXSR, :NUMTELSR, :NUMTLXSR, :X400SR, '#10' ' + + ' :NUMPRE, :NUMINFSC, :NUMCON, :FECPRE, :FECINFSC, :FECCON, '#10' ' + + ' :DIVPED, :DIVPRE, :DIVPAG, :DIVPEDF, :DIVPREF, :DIVPAGF, '#10' ' + + ':TASCAM, :FECTAS, :PERVENINI, :PERVENFIN, CURRENT_TIMESTAMP)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RDX_CABVEN' + end + item + Params = < + item + Name = 'CLAVE1' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE2' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANLUG' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'LUGVEN' + DataType = datString + Size = 70 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECINI' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'FECFIN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PERVENINI' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PERVENFIN' + DataType = datDateTime + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_LUGVEN' + SQL = + 'INSERT'#10' INTO RDX_LUGVEN'#10' (CLAVE1, CLAVE2, EANLUG, LUGVEN, FE' + + 'CINI, FECFIN, PERVENINI, '#10' PERVENFIN)'#10' VALUES'#10' (:CLAVE1,' + + ' :CLAVE2, :EANLUG, :LUGVEN, :FECINI, :FECFIN, '#10' :PERVENINI, ' + + ':PERVENFIN)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RDX_LUGVEN' + end + item + Params = < + item + Name = 'CLAVE1' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE2' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CLAVE3' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANART' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODCOM' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMVAR' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CODPRO' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESARTCO' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESART' + DataType = datString + Size = 70 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMCON' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMLIS' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CONESP1' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CONESP2' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CONESP3' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VALVEN' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PRENETCT' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PREBRUCT' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PREINFET' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PREINFFT' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PRECALCT' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PRENETCA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PREBRUCA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PREINFEA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PREINFFA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'PRECALCA' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BAPRUN1' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UNIMED1' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BAPRUN2' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UNIMED2' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BAPRUN3' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UNIMED3' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BAPRUN4' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UNIMED4' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'BAPRUN5' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UNIMED5' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CANVEN' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EXIPRO' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESEXI' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ESPMEDCV' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ESPMEDEP' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ESPMEDDE' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CANDEV' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'EANVEN' + DataType = datString + Size = 17 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NOMVEN' + DataType = datString + Size = 70 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NUMTALON' + DataType = datString + Size = 35 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CANVENNET' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UMEDVENNET' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'CANESP' + DataType = datFloat + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'UMEDESP' + DataType = datString + Size = 3 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_ARTVEN' + SQL = + 'INSERT'#10' INTO RDX_ARTVEN'#10' (CLAVE1, CLAVE2, CLAVE3, EANART, CO' + + 'DCOM, NUMVAR, CODPRO, '#10' DESARTCO, DESART, NUMCON, NUMLIS, CO' + + 'NESP1, CONESP2, '#10' CONESP3, VALVEN, PRENETCT, PREBRUCT, PREIN' + + 'FET, PREINFFT, '#10' PRECALCT, PRENETCA, PREBRUCA, PREINFEA, PRE' + + 'INFFA, PRECALCA, '#10' BAPRUN1, UNIMED1, BAPRUN2, UNIMED2, BAPRU' + + 'N3, UNIMED3, '#10' BAPRUN4, UNIMED4, BAPRUN5, UNIMED5, CANVEN, E' + + 'XIPRO, '#10' DESEXI, ESPMEDCV, ESPMEDEP, ESPMEDDE, CANDEV, EANVE' + + 'N, '#10' NOMVEN, NUMTALON, CANVENNET, UMEDVENNET, CANESP, UMEDES' + + 'P)'#10' VALUES'#10' (:CLAVE1, :CLAVE2, :CLAVE3, :EANART, :CODCOM, :N' + + 'UMVAR, '#10' :CODPRO, :DESARTCO, :DESART, :NUMCON, :NUMLIS, :CON' + + 'ESP1, '#10' :CONESP2, :CONESP3, :VALVEN, :PRENETCT, :PREBRUCT, '#10 + + ' :PREINFET, :PREINFFT, :PRECALCT, :PRENETCA, :PREBRUCA, '#10' ' + + ' :PREINFEA, :PREINFFA, :PRECALCA, :BAPRUN1, :UNIMED1, '#10' :BA' + + 'PRUN2, :UNIMED2, :BAPRUN3, :UNIMED3, :BAPRUN4, :UNIMED4, '#10' :' + + 'BAPRUN5, :UNIMED5, :CANVEN, :EXIPRO, :DESEXI, :ESPMEDCV, '#10' :' + + 'ESPMEDEP, :ESPMEDDE, :CANDEV, :EANVEN, :NOMVEN, :NUMTALON, '#10' ' + + ' :CANVENNET, :UMEDVENNET, :CANESP, :UMEDESP)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_RDX_ARTVEN' + end> + RelationShips = < + item + Name = 'FK_RDX_LUGVEN_RDX_CABVEN' + MasterDatasetName = 'RDX_CABVEN' + MasterFields = 'CLAVE1' + DetailDatasetName = 'RDX_LUGVEN' + DetailFields = 'CLAVE1' + RelationshipType = rtForeignKey + end + item + Name = 'FK_RDX_ARTVEN_RDX_LUGVEN' + MasterDatasetName = 'RDX_LUGVEN' + MasterFields = 'CLAVE1;CLAVE2' + DetailDatasetName = 'RDX_ARTVEN' + DetailFields = 'CLAVE1;CLAVE2' + RelationshipType = rtForeignKey + end> + UpdateRules = < + item + Name = 'Insert RDX_CABVEN' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'RDX_CABVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert RDX_LUGVEN' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'RDX_LUGVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert RDX_ARTVEN' + DoUpdate = False + DoInsert = True + DoDelete = False + DatasetName = 'RDX_ARTVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Update RDX_CABVEN' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'RDX_CABVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Update RDX_LUGVEN' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'RDX_LUGVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Update RDX_ARTVEN' + DoUpdate = True + DoInsert = False + DoDelete = False + DatasetName = 'RDX_ARTVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete RDX_ARTVEN' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'RDX_ARTVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete RDX_LUGVEN' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'RDX_LUGVEN' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete RDX_CABVEN' + DoUpdate = False + DoInsert = False + DoDelete = True + DatasetName = 'RDX_CABVEN' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 48 + Top = 16 + end +end diff --git a/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.pas b/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.pas new file mode 100644 index 0000000..1208366 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/EDI_Sales/uDataModuleEDI_Sales.pas @@ -0,0 +1,483 @@ +unit uDataModuleEDI_Sales; + +interface + +uses + SysUtils, Classes, uDAScriptingProvider, uDADataTable, uDACDSDataTable, + uBizEDISales, uDAEngine, uDAADODriver, uDABINAdapter, + uDABusinessProcessor, uDAClasses, EDI_Reader, JvComponentBase; + +type + TdmEDISales = class(TDataModule) + schEDISales: TDASchema; + private + function InsertarCabecera(const ACabData : TEDIFileData; var NumRegNuevos : integer) : Boolean; + function InsertarLugares(const ALugData : TEDIFileData; var NumRegNuevos : integer) : Boolean; + function InsertarArticulos(const AArtData : TEDIFileData; var NumRegNuevos : integer) : Boolean; + function GenerarVentasEDI: Boolean; + procedure InsertarLog(OK : Boolean; Error_msg : String = ''); + public + function CargarFicheros(const FicheroCAB: String; const FicheroLUG: String; + const FicheroART: String; var NumRegNuevos: Integer ): Boolean; + end; + +var + dmEDISales: TdmEDISales; + +implementation + +uses + EDI_Sales_Impl, Controls, Forms, uDataTableUtils, EDI_SLSRPT, uDAInterfaces, + Dialogs, schEDISalesClient_Intf, uDataModuleServer, Variants, EDI_Utils, + VARELA_Intf, EDI_Log_Impl, DB; + +{$R *.dfm} + +{ TdmEDISales } + +function TdmEDISales.CargarFicheros(const FicheroCAB: String; const FicheroLUG: String; + const FicheroART: String; var NumRegNuevos: Integer ): Boolean; +var + Cab_Reader : TCABVEN_Reader; + Lug_Reader : TLUGVEN_Reader; + Art_Reader : TARTVEN_Reader; + + NumRegNuevosCab : Integer; + NumRegNuevosLug : Integer; + NumRegNuevosArt : Integer; +begin + Result := True; + + Cab_Reader := TCABVEN_Reader.Create; + try + Cab_Reader.Filename := FicheroCAB; + Cab_Reader.ReadFile; + Result := InsertarCabecera (Cab_Reader.FileData, NumRegNuevosCab); + finally + FreeAndNIL(Cab_Reader); + end; + + if Result then + begin + Lug_Reader := TLUGVEN_Reader.Create; + try + Lug_Reader.Filename := FicheroLUG; + Lug_Reader.ReadFile; + Result := InsertarLugares (Lug_Reader.FileData, NumRegNuevosLug); + finally + FreeAndNIL(Lug_Reader); + end; + + if Result then + begin + Art_Reader := TARTVEN_Reader.Create; + try + Art_Reader.Filename := FicheroART; + Art_Reader.ReadFile; + Result := InsertarArticulos(Art_Reader.FileData, NumRegNuevosArt); + finally + FreeAndNil(Art_Reader); + end; + end; + end; + + if Result then + begin + NumRegNuevos := NumRegNuevosArt; + Result := GenerarVentasEDI; + end; +end; + +function TdmEDISales.GenerarVentasEDI: Boolean; +var + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + ACommand := schEDISales.NewCommand(AConnection, 'RDX_P_CARGAR_VENTASEDI'); + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (GenerarVentasEDI)'); + end + end; +end; + +function TdmEDISales.InsertarArticulos(const AArtData: TEDIFileData; + var NumRegNuevos : integer): Boolean; +var + i : integer; + Registro : PARTVEN; + AuxStr : String; + AuxInt : Integer; + AuxNum : Double; + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + NumRegNuevos := 0; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + + for i := 0 to AArtData.Count - 1 do + begin + Registro := AArtData[i]; + + if not Registro.REGISTRO_OK then + Continue; + + ACommand := schEDISales.NewCommand(AConnection, 'Insert_RDX_ARTVEN'); + with ACommand do + begin + ParamByName('CLAVE1').AsFloat := StrToFloat(Trim(Registro.CLAVE1)); + ParamByName('CLAVE2').AsFloat := StrToInt(Trim(Registro.CLAVE2)); + ParamByName('CLAVE3').AsFloat := StrToInt(Trim(Registro.CLAVE3)); + + ParamByName('EANART').AsString := Trim(Registro.EANART); + ParamByName('CODCOM').AsString := Trim(Registro.CODCOM); + ParamByName('NUMVAR').AsString := Trim(Registro.NUMVAR); + ParamByName('CODPRO').AsString := Trim(Registro.CODPRO); + ParamByName('DESARTCO').AsString := Trim(Registro.DESARTCO); + ParamByName('DESART').AsString := Trim(Registro.DESART); + ParamByName('NUMCON').AsString := Trim(Registro.NUMCON); + ParamByName('NUMLIS').AsString := Trim(Registro.NUMLIS); + ParamByName('CONESP1').AsString := Trim(Registro.CONESP1); + ParamByName('CONESP2').AsString := Trim(Registro.CONESP2); + ParamByName('CONESP3').AsString := Trim(Registro.CONESP3); + + ParamByName('VALVEN').AsVariant := Null; + AuxStr := Trim(Registro.VALVEN); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('VALVEN').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PRENETCT').AsVariant := Null; + AuxStr := Trim(Registro.PRENETCT); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PRENETCT').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PREBRUCT').AsVariant := Null; + AuxStr := Trim(Registro.PREBRUCT); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PREBRUCT').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PREINFET').AsVariant := Null; + AuxStr := Trim(Registro.PREINFET); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PREINFET').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PREINFFT').AsVariant := Null; + AuxStr := Trim(Registro.PREINFFT); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PREINFFT').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PRECALCT').AsVariant := Null; + AuxStr := Trim(Registro.PRECALCT); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PRECALCT').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PRENETCA').AsVariant := Null; + AuxStr := Trim(Registro.PRENETCA); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PRENETCA').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PREBRUCA').AsVariant := Null; + AuxStr := Trim(Registro.PREBRUCA); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PREBRUCA').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PREINFEA').AsVariant := Null; + AuxStr := Trim(Registro.PREINFEA); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PREINFEA').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PREINFFA').AsVariant := Null; + AuxStr := Trim(Registro.PREINFFA); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PREINFFA').AsFloat := AuxNum/1000; //N(15,3) + + ParamByName('PRECALCA').AsVariant := Null; + AuxStr := Trim(Registro.PRECALCA); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('PRECALCA').AsFloat := AuxNum/1000; //N(15,3) + + + ParamByName('BAPRUN1').AsVariant := Null; + AuxStr := Trim(Registro.BAPRUN1); + if TryStrToInt (AuxStr, AuxInt) then + ParamByName('BAPRUN1').AsInteger := AuxInt; + ParamByName('UNIMED1').AsString := Trim(Registro.UNIMED1); + + ParamByName('BAPRUN2').AsVariant := Null; + AuxStr := Trim(Registro.BAPRUN2); + if TryStrToInt (AuxStr, AuxInt) then + ParamByName('BAPRUN2').AsInteger := AuxInt; + ParamByName('UNIMED2').AsString := Trim(Registro.UNIMED2); + + ParamByName('BAPRUN3').AsVariant := Null; + AuxStr := Trim(Registro.BAPRUN3); + if TryStrToInt (AuxStr, AuxInt) then + ParamByName('BAPRUN3').AsInteger := AuxInt; + ParamByName('UNIMED3').AsString := Trim(Registro.UNIMED3); + + ParamByName('BAPRUN4').AsVariant := Null; + AuxStr := Trim(Registro.BAPRUN4); + if TryStrToInt (AuxStr, AuxInt) then + ParamByName('BAPRUN4').AsInteger := AuxInt; + ParamByName('UNIMED4').AsString := Trim(Registro.UNIMED4); + + ParamByName('BAPRUN5').AsVariant := Null; + AuxStr := Trim(Registro.BAPRUN5); + if TryStrToInt (AuxStr, AuxInt) then + ParamByName('BAPRUN5').AsInteger := AuxInt; + ParamByName('UNIMED5').AsString := Trim(Registro.UNIMED5); + + ParamByName('CANVEN').AsVariant := Null; + AuxStr := Trim(Registro.CANVEN); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('CANVEN').AsFloat := AuxNum/1000; // N(15,3) + + ParamByName('EXIPRO').AsVariant := Null; + AuxStr := Trim(Registro.EXIPRO); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('EXIPRO').AsFloat := AuxNum/1000; // N(15,3) + + ParamByName('DESEXI').AsVariant := Null; + AuxStr := Trim(Registro.DESEXI); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('DESEXI').AsFloat := AuxNum/1000; // N(15,3) + + ParamByName('ESPMEDCV').AsString := Trim(Registro.ESPMEDCV); + ParamByName('ESPMEDEP').AsString := Trim(Registro.ESPMEDEP); + ParamByName('ESPMEDDE').AsString := Trim(Registro.ESPMEDDE); + + ParamByName('CANDEV').AsVariant := Null; + AuxStr := Trim(Registro.CANDEV); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('CANDEV').AsFloat := AuxNum/1000; // N(15,3) + + ParamByName('EANVEN').AsString := Trim(Registro.EANVEN); + ParamByName('NOMVEN').AsString := Trim(Registro.NOMVEN); + ParamByName('NUMTALON').AsString := Trim(Registro.NUMTALON); + + ParamByName('CANVENNET').AsVariant := Null; + AuxStr := Trim(Registro.CANVENNET); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('CANVENNET').AsFloat := AuxNum/1000; // N(15,3) + ParamByName('UMEDVENNET').AsString := Trim(Registro.UMEDVENNET); + + ParamByName('CANESP').AsVariant := Null; + AuxStr := Trim(Registro.CANESP); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('CANESP').AsFloat := AuxNum/1000; // N(15,3) + ParamByName('UMEDESP').AsString := Trim(Registro.UMEDESP); + end; + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + NumRegNuevos := NumRegNuevos + 1; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (InsertarArticulos SLS)'); + end + end; + end; //for +end; + +function TdmEDISales.InsertarCabecera(const ACabData: TEDIFileData; + var NumRegNuevos : integer): Boolean; +var + i : integer; + Registro : PCABVEN; + AuxStr : String; + AuxNum : Double; + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + NumRegNuevos := 0; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + + for i := 0 to ACabData.Count - 1 do + begin + Registro := ACabData[i]; + + if not Registro.REGISTRO_OK then + Continue; + + ACommand := schEDISales.NewCommand(AConnection, 'Insert_RDX_CABVEN'); + with ACommand do + begin + ParamByName('CLAVE1').AsFloat := StrToFloat(Trim(Registro.CLAVE1)); + ParamByName('NUMINF').AsString := Trim(Registro.NUMINF); + ParamByName('FUNCION').AsString := Trim(Registro.FUNCION); + + ParamByName('FECINI').AsDateTime := EDIDateToDateF(Trim(Registro.FECINI)); + ParamByName('FECFIN').AsDateTime := EDIDateToDateF(Trim(Registro.FECFIN)); + ParamByName('FECINF').AsDateTime := EDIDateToDateF(Trim(Registro.FECINF)); + + ParamByName('PERVENINI').AsVariant := Null; + ParamByName('PERVENFIN').AsVariant := Null; + if Length(Trim(Registro.PERVEN)) = 16 then + begin + ParamByName('PERVENINI').AsDateTime := EDIDateToDateF(Copy(Trim(Registro.PERVEN), 0, 8)); + ParamByName('PERVENFIN').AsDateTime := EDIDateToDateF(Copy(Trim(Registro.PERVEN), 9, 8)); + end; + + ParamByName('EANOFI').AsString := Trim(Registro.EANOFI); + ParamByName('EANEMI').AsString := Trim(Registro.EANEMI); + ParamByName('EANREC').AsString := Trim(Registro.EANREC); + ParamByName('EANVEN').AsString := Trim(Registro.EANVEN); + ParamByName('EANALM').AsString := Trim(Registro.EANALM); + ParamByName('EANREP').AsString := Trim(Registro.EANREP); + ParamByName('EANPRO').AsString := Trim(Registro.EANPRO); + ParamByName('EANADMSA').AsString := Trim(Registro.EANADMSA); + ParamByName('EANREPSR').AsString := Trim(Registro.EANREPSR); + ParamByName('ADMVENSA').AsString := Trim(Registro.ADMVENSA); + ParamByName('REPDEPSR').AsString := Trim(Registro.REPDEPSR); + + ParamByName('EMAILSA').AsString := Trim(Registro.EMAILSA); + ParamByName('NUMFAXSA').AsString := Trim(Registro.NUMFAXSA); + ParamByName('NUMTELSA').AsString := Trim(Registro.NUMTELSA); + ParamByName('NUMTLXSA').AsString := Trim(Registro.NUMTLXSA); + ParamByName('X400SA').AsString := Trim(Registro.X400SA); + + ParamByName('EMAILSR').AsString := Trim(Registro.EMAILSR); + ParamByName('NUMFAXSR').AsString := Trim(Registro.NUMFAXSR); + ParamByName('NUMTELSR').AsString := Trim(Registro.NUMTELSR); + ParamByName('NUMTLXSR').AsString := Trim(Registro.NUMTLXSR); + ParamByName('X400SR').AsString := Trim(Registro.X400SR); + + ParamByName('NUMPRE').AsString := Trim(Registro.NUMPRE); + ParamByName('NUMINFSC').AsString := Trim(Registro.NUMINFSC); + ParamByName('NUMCON').AsString := Trim(Registro.NUMCON); + + ParamByName('FECPRE').AsDateTime := EDIDateToDateF(Trim(Registro.FECPRE)); + ParamByName('FECINFSC').AsDateTime := EDIDateToDateF(Trim(Registro.FECINFSC)); + ParamByName('FECCON').AsDateTime := EDIDateToDateF(Trim(Registro.FECCON)); + + ParamByName('DIVPED').AsString := Trim(Registro.DIVPED); + ParamByName('DIVPRE').AsString := Trim(Registro.DIVPRE); + ParamByName('DIVPAG').AsString := Trim(Registro.DIVPAG); + ParamByName('DIVPEDF').AsString := Trim(Registro.DIVPEDF); + ParamByName('DIVPREF').AsString := Trim(Registro.DIVPREF); + ParamByName('DIVPAGF').AsString := Trim(Registro.DIVPAGF); + + ParamByName('TASCAM').AsVariant := Null; + AuxStr := Trim(Registro.TASCAM); + if TryStrToFloat (AuxStr, AuxNum) then + ParamByName('TASCAM').AsFloat := AuxNum/1000; // N(15,3) + + ParamByName('FECTAS').AsDateTime := EDIDateToDateF(Trim(Registro.FECTAS)); + end; // with + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + NumRegNuevos := NumRegNuevos + 1; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + ' (InsertarCabecera SLS)'); + end + end; + + end; //for +end; + + +procedure TdmEDISales.InsertarLog(OK: Boolean; Error_msg: String); +var + LogService : IEDI_Log; +begin + LogService := EDI_Log_Impl.TEDI_Log.Create(Self); + try + LogService.InsertarLog(Now, 'SLSRPT', OK, Error_msg); + finally + LogService := nil; + end; +end; + +function TdmEDISales.InsertarLugares(const ALugData: TEDIFileData; + var NumRegNuevos : integer): Boolean; +var + i : integer; + Registro : PLUGVEN; + ACommand: IDASQLCommand; + AConnection : IDAConnection; +begin + Result := False; + NumRegNuevos := 0; + AConnection := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionName); + + for i := 0 to ALugData.Count - 1 do + begin + Registro := ALugData[i]; + + if not Registro.REGISTRO_OK then + Continue; + + ACommand := schEDISales.NewCommand(AConnection, 'Insert_RDX_LUGVEN'); + with ACommand do + begin + ParamByName('CLAVE1').AsFloat := StrToFloat(Trim(Registro.CLAVE1)); + ParamByName('CLAVE2').AsInteger := StrToInt(Trim(Registro.CLAVE2)); + ParamByName('EANLUG').AsString := Trim(Registro.EANLUG); + ParamByName('LUGVEN').AsString := Trim(Registro.LUGVEN); + + ParamByName('FECINI').AsDateTime := EDIDateToDateF(Trim(Registro.FECINI)); + ParamByName('FECFIN').AsDateTime := EDIDateToDateF(Trim(Registro.FECFIN)); + + ParamByName('PERVENINI').AsVariant := Null; + ParamByName('PERVENFIN').AsVariant := Null; + if Length(Trim(Registro.PERVEN)) >= 8 then + begin + ParamByName('PERVENINI').AsDateTime := EDIDateToDateF(Copy(Trim(Registro.PERVEN), 0, 8)); + if Length(Trim(Registro.PERVEN)) = 16 then + ParamByName('PERVENFIN').AsDateTime := EDIDateToDateF(Copy(Trim(Registro.PERVEN), 9, 8)) + end + end; // with + + AConnection.BeginTransaction; + try + ACommand.Execute; + AConnection.CommitTransaction; + NumRegNuevos := NumRegNuevos + 1; + Result := True; + except + on E : Exception do + begin + AConnection.RollbackTransaction; + if Pos('PRIMARY KEY', E.Message) = 0 then + InsertarLog(False, e.Message + '(InsertarLugares SLS)'); + end + end; + end; //for +end; + + +initialization + dmEDISales := TdmEDISales.Create(nil); + +finalization + FreeAndNil(dmEDISales); + +end. + diff --git a/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.ddp b/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.ddp differ diff --git a/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.dfm b/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.dfm new file mode 100644 index 0000000..83f2fdf --- /dev/null +++ b/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.dfm @@ -0,0 +1,78 @@ +object srvLogin: TsrvLogin + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schLogin + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 220 + Width = 339 + object schLogin: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'USERID' + DataType = datString + Value = 'zeus' + ParamType = daptInput + end + item + Name = 'PASSWORD' + DataType = datString + Value = 'zvg' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'USUARIOS' + SQL = + 'SELECT'#10' CLAVE AS ID, PASSW AS PASS'#10' FROM'#10' USUARIOS'#10' WH' + + 'ERE CLAVE = :USERID AND'#10' PASSW = :PASSWORD;' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'CLAVE' + SQLOrigin = 'ID' + end + item + DatasetField = 'PASS' + TableField = 'PASSW' + SQLOrigin = 'PASS' + end> + end> + Name = 'GetLoginInfo' + Fields = < + item + Name = 'ID' + DataType = datString + Size = 12 + InPrimaryKey = True + end + item + Name = 'PASS' + DataType = datString + Size = 12 + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = <> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 56 + Top = 24 + end + object DABINAdapter: TDABINAdapter + Left = 56 + Top = 96 + end +end diff --git a/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.pas b/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.pas new file mode 100644 index 0000000..901804b --- /dev/null +++ b/2.1.0/Source/Servidor/Services/Login/srvLogin_Impl.pas @@ -0,0 +1,135 @@ +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:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + {Required:} uRORemoteDataModule, uDAInterfaces, DARemoteService_Impl, DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDADataTable, uDABINAdapter, + uDADataStreamer; + +type + { TsrvLogin } + TsrvLogin = class(TDARemoteService, IsrvLogin) + DABINAdapter: TDABINAdapter; + schLogin: TDASchema; + private + protected + function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; + procedure Logout; + function UpdateUsers(const UsersDelta: Binary): Binary; + function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; + function Ping : Boolean; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, Dialogs, IB, Variants; + + +procedure Create_srvLogin(out anInstance : IUnknown); +begin + anInstance := TsrvLogin.Create(NIL); +end; + +{ TsrvLogin } + +function TsrvLogin.Login(const UserID, Password: String; + out LoginInfo: TLoginInfo): Boolean; +var + dsUserInfo : IDADataset; +begin + LoginInfo := NIL; + Result := False; + + dsUserInfo := schLogin.NewDataset(Connection, 'GetLoginInfo'); + with dsUserInfo do + begin + ParamByName('UserID').AsString := UserID; + ParamByName('Password').AsString := Password; + Open; + end; + + //dsUserInfo := schLogin.NewDataset(Connection, 'GetLoginInfo', ['UserID', 'Password'], [UserID, Password]); + + if not (dsUserInfo.IsEmpty) then + try + Result := TRUE; + + // Packages the user information that will be sent back to the client. + // This information will be used in many places client-side and when issing service calls + // so it's good practice to cache it there + LoginInfo := TLoginInfo.Create; + FillROStruct(dsUserInfo, LoginInfo); + LoginInfo.UserID := UserID; + LoginInfo.SessionID := GUIDToString(Session.SessionID); + //LoginInfo.Roles.Add(VarToStr(dsUserInfo.FieldValues[3])); + + // Collects the privileges for this user as a comma separated list of strings +{ privs := Schema.NewDataset(Connection, ds_GetUserPrivileges, ['UserInc'], [LoginInfo.UserInc]); + + while not privs.EOF do begin + LoginInfo.Privileges := LoginInfo.Privileges+Trim(VarToStr(privs.FieldValues[0]))+','; + privs.Next; + end; + LoginInfo.Privileges := Copy(LoginInfo.Privileges,1,Length(LoginInfo.Privileges)-1); + + + // Stores all the information we retrieved in the current session since it might be + // necessary for other services} + Session.SaveStruct(LoginInfo); + except + FreeAndNIL(LoginInfo); + raise + end; +end; + +procedure TsrvLogin.Logout; +begin + DestroySession; +end; + +function TsrvLogin.Ping: Boolean; +begin + Result := True; +end; + +function TsrvLogin.SetUserPassword(const UserID, + NewPassword: String): Boolean; +var + dsCommand : IDASQLCommand; + i : Integer; +begin + Result := False; + dsCommand := schLogin.NewCommand(Connection, 'SetUserPassword'); + with dsCommand do + begin + ParamByName('UserID').AsString := UserID; + ParamByName('Password').AsString := NewPassword; + i := Execute; + end; + if i > 0 then + Result := True; +end; + +function TsrvLogin.UpdateUsers(const UsersDelta: Binary): Binary; +begin + // +end; + +initialization + TROClassFactory.Create('srvLogin', Create_srvLogin, TsrvLogin_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.ddp b/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.ddp differ diff --git a/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.dfm b/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.dfm new file mode 100644 index 0000000..51978be --- /dev/null +++ b/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.dfm @@ -0,0 +1,6 @@ +object srvTransfereciaFicheros: TsrvTransfereciaFicheros + OldCreateOrder = True + SessionManager = dmServer.SessionManager + Height = 292 + Width = 296 +end diff --git a/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.pas b/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.pas new file mode 100644 index 0000000..5c48ec2 --- /dev/null +++ b/2.1.0/Source/Servidor/Services/TransferenciaFicheros/srvTransfereciaFicheros_Impl.pas @@ -0,0 +1,104 @@ +unit srvTransfereciaFicheros_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, + {Used RODLs:} DataAbstract3_Intf, + {Generated:} VARELA_Intf; + +type + { TsrvTransfereciaFicheros } + TsrvTransfereciaFicheros = class(TRORemoteDataModule, IsrvTransfereciaFicheros) + private + function getFileDirectory: String; + protected + { IsrvTransfereciaFicheros methods } + procedure DownloadSequence(const Filename: String; const Sequence: Integer; out Filedata: Binary; out Filesize: Int64); + procedure UploadChunk(const IsFirst: Boolean; const Filename: String; const Filedata: Binary); + procedure UploadFinished(const Filename: String; const Filesize: Int64); + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer, + JclFileUtils; + +procedure Create_srvTransfereciaFicheros(out anInstance : IUnknown); +begin + anInstance := TsrvTransfereciaFicheros.Create(NIL); +end; + +{ srvTransfereciaFicheros } +procedure TsrvTransfereciaFicheros.DownloadSequence(const Filename: String; const Sequence: Integer; out Filedata: Binary; out Filesize: Int64); +const + Block: Integer = 65536; +var + Position: Int64; + MemStream: TFileStream; + localfilename:String; +begin + fileData := Binary.Create; + localfilename:=getFileDirectory+filename; + if not FileExists(localfilename) then exit; + MemStream:=TFileStream.Create(localfilename,fmopenRead); + try + FileSize := MemStream.Size; + Position := Block * (Sequence - 1); + if Position <= FileSize then begin + MemStream.Position := Position; + if Position + Block > FileSize then + fileData.CopyFrom(MemStream, FileSize - Position) + else + fileData.CopyFrom(MemStream, Block); + end; + finally + MemStream.Free; + end; +end; + +function TsrvTransfereciaFicheros.getFileDirectory: String; +begin + result := PathAddSeparator(dmServer.FDirEntrada); +end; + +procedure TsrvTransfereciaFicheros.UploadChunk(const IsFirst: Boolean; const Filename: String; const Filedata: Binary); +var + NewFile: TFileStream; + localfilename:String; +begin + Localfilename:= GetFileDirectory + Filename; + if isfirst and Fileexists(localfilename) then DeleteFile(localfilename); + if FileExists(localfilename) + then NewFile := TFileStream.Create(localfilename,fmOpenReadWrite) + else NewFile := TFileStream.Create(localfilename,fmCreate); + try + NewFile.Seek(0,soFromEnd); + filedata.SaveToStream(NewFile); + finally + NewFile.Free; + end; +end; + +procedure TsrvTransfereciaFicheros.UploadFinished(const Filename: String; const Filesize: Int64); +begin +// (EventRepository as IFileEvents_Writer).OnNewFileAvailable(Session.SessionID, Filename, Filesize); +end; + +initialization + TROClassFactory.Create('srvTransfereciaFicheros', Create_srvTransfereciaFicheros, TsrvTransfereciaFicheros_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/VARELA.RODL b/2.1.0/Source/Servidor/VARELA.RODL new file mode 100644 index 0000000..32036dc --- /dev/null +++ b/2.1.0/Source/Servidor/VARELA.RODL @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/2.1.0/Source/Servidor/VARELA_Intf.pas b/2.1.0/Source/Servidor/VARELA_Intf.pas new file mode 100644 index 0000000..e80b443 --- /dev/null +++ b/2.1.0/Source/Servidor/VARELA_Intf.pas @@ -0,0 +1,1079 @@ +unit VARELA_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:} DataAbstract3_Intf; + +const + { Library ID } + LibraryUID = '{AD45905A-2C7F-4295-A913-3D4F93CE82CF}'; + TargetNamespace = ''; + + { Service Interface ID's } + IEDI_Inventary_IID : TGUID = '{079CAD81-712F-48D0-ACD9-3677BBB9B2AD}'; + IEDI_Sales_IID : TGUID = '{A9A65D73-350D-4530-AF81-FF69845C6B61}'; + IsrvLogin_IID : TGUID = '{6B132AE4-D45F-4AE8-8215-E95789358329}'; + IsrvVentasTerminadas_IID : TGUID = '{755D5EC4-06FD-4C26-BCD1-5C8F112B18A1}'; + IsrvInformes_IID : TGUID = '{78BEEBFF-E26F-48BB-82AF-F8D09A47E446}'; + IsrvTransfereciaFicheros_IID : TGUID = '{2A7AFE06-0600-46ED-9B7A-C694A1191311}'; + IsrvControles_IID : TGUID = '{A0C11144-A1B7-408D-BA07-63565D587662}'; + IsrvVentasEnProceso_IID : TGUID = '{1ADA4BDF-C8B6-4CD7-910B-EDB44C10ABDB}'; + IEDI_Log_IID : TGUID = '{F4EBB9F5-A0CC-4AF7-8B81-98ED00FA95B1}'; + IsrvReferenciaGenerica_IID : TGUID = '{994518CC-96BD-4976-ABC6-9B421A4B65D3}'; + IsrvRecepciones_IID : TGUID = '{02EB4B9C-155E-477C-AE2D-3E73B7846AB3}'; + IsrvDevoluciones_IID : TGUID = '{87C31D12-C353-437F-A7A3-10882373AB54}'; + IsrvTraspasos_IID : TGUID = '{47DA82A0-51AD-477A-85B3-CE9EEAAB29D6}'; + IsrvStock_IID : TGUID = '{F617B727-5B8B-4645-BBB2-3D645AB31981}'; + IsrvParametros_IID : TGUID = '{E5177628-952A-4217-80C0-36F59E423EC4}'; + + { Event ID's } + +type + { Forward declarations } + IEDI_Inventary = interface; + IEDI_Sales = interface; + IsrvLogin = interface; + IsrvVentasTerminadas = interface; + IsrvInformes = interface; + IsrvTransfereciaFicheros = interface; + IsrvControles = interface; + IsrvVentasEnProceso = interface; + IEDI_Log = interface; + IsrvReferenciaGenerica = interface; + IsrvRecepciones = interface; + IsrvDevoluciones = interface; + IsrvTraspasos = interface; + IsrvStock = interface; + IsrvParametros = interface; + + + TLoginInfo = class; + + + { TLoginInfo } + TLoginInfo = class(TDALoginInfo) + private + fRoles: TDAStringArray; + function GetRoles: TDAStringArray; + public + procedure Assign(iSource: TPersistent); override; + procedure ReadComplex(ASerializer: TObject); override; + procedure WriteComplex(ASerializer: TObject); override; + published + property Roles:TDAStringArray read GetRoles write fRoles; + end; + + { TLoginInfoCollection } + TLoginInfoCollection = class(TDALoginInfoCollection) + protected + constructor Create(aItemClass: TCollectionItemClass); overload; + function GetItems(aIndex: integer): TLoginInfo; + procedure SetItems(aIndex: integer; const Value: TLoginInfo); + public + constructor Create; overload; + function Add: TLoginInfo; reintroduce; + property Items[Index: integer]:TLoginInfo read GetItems write SetItems; default; + end; + + { IEDI_Inventary } + IEDI_Inventary = interface(IDARemoteService) + ['{079CAD81-712F-48D0-ACD9-3677BBB9B2AD}'] + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; const FicheroCANT: String; out MsgError: String): Boolean; + end; + + { CoEDI_Inventary } + CoEDI_Inventary = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IEDI_Inventary; + end; + + { TEDI_Inventary_Proxy } + TEDI_Inventary_Proxy = class(TDARemoteService_Proxy, IEDI_Inventary) + protected + function __GetInterfaceName:string; override; + + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; const FicheroCANT: String; out MsgError: String): Boolean; + end; + + { IEDI_Sales } + IEDI_Sales = interface(IDARemoteService) + ['{A9A65D73-350D-4530-AF81-FF69845C6B61}'] + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; + end; + + { CoEDI_Sales } + CoEDI_Sales = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IEDI_Sales; + end; + + { TEDI_Sales_Proxy } + TEDI_Sales_Proxy = class(TDARemoteService_Proxy, IEDI_Sales) + protected + function __GetInterfaceName:string; override; + + function CargarFicheroEDI(const FicheroCAB: String; const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; + end; + + { IsrvLogin } + IsrvLogin = interface + ['{6B132AE4-D45F-4AE8-8215-E95789358329}'] + function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; + function UpdateUsers(const UsersDelta: Binary): Binary; + end; + + { CosrvLogin } + CosrvLogin = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; + end; + + { TsrvLogin_Proxy } + TsrvLogin_Proxy = class(TROProxy, IsrvLogin) + protected + function __GetInterfaceName:string; override; + + function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; + procedure Logout; + function Ping: Boolean; + function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; + function UpdateUsers(const UsersDelta: Binary): Binary; + end; + + { IsrvVentasTerminadas } + IsrvVentasTerminadas = interface(IDARemoteService) + ['{755D5EC4-06FD-4C26-BCD1-5C8F112B18A1}'] + function GetDataEx(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; + function GetSchema(const DatasetName: String; const Columns: String): Binary; + function GetDataCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; + function GetSchemaCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; + end; + + { CosrvVentasTerminadas } + CosrvVentasTerminadas = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvVentasTerminadas; + end; + + { TsrvVentasTerminadas_Proxy } + TsrvVentasTerminadas_Proxy = class(TDARemoteService_Proxy, IsrvVentasTerminadas) + protected + function __GetInterfaceName:string; override; + + function GetDataEx(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; + function GetSchema(const DatasetName: String; const Columns: String): Binary; + function GetDataCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; + function GetSchemaCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; + end; + + { IsrvInformes } + IsrvInformes = interface(IDARemoteService) + ['{78BEEBFF-E26F-48BB-82AF-F8D09A47E446}'] + end; + + { CosrvInformes } + CosrvInformes = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvInformes; + end; + + { TsrvInformes_Proxy } + TsrvInformes_Proxy = class(TDARemoteService_Proxy, IsrvInformes) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvTransfereciaFicheros } + IsrvTransfereciaFicheros = interface + ['{2A7AFE06-0600-46ED-9B7A-C694A1191311}'] + procedure UploadChunk(const IsFirst: Boolean; const Filename: String; const Filedata: Binary); + procedure UploadFinished(const Filename: String; const Filesize: Int64); + end; + + { CosrvTransfereciaFicheros } + CosrvTransfereciaFicheros = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTransfereciaFicheros; + end; + + { TsrvTransfereciaFicheros_Proxy } + TsrvTransfereciaFicheros_Proxy = class(TROProxy, IsrvTransfereciaFicheros) + protected + function __GetInterfaceName:string; override; + + procedure UploadChunk(const IsFirst: Boolean; const Filename: String; const Filedata: Binary); + procedure UploadFinished(const Filename: String; const Filesize: Int64); + end; + + { IsrvControles } + IsrvControles = interface(IDARemoteService) + ['{A0C11144-A1B7-408D-BA07-63565D587662}'] + end; + + { CosrvControles } + CosrvControles = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvControles; + end; + + { TsrvControles_Proxy } + TsrvControles_Proxy = class(TDARemoteService_Proxy, IsrvControles) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvVentasEnProceso } + IsrvVentasEnProceso = interface(IDARemoteService) + ['{1ADA4BDF-C8B6-4CD7-910B-EDB44C10ABDB}'] + function GetData(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; + function GetSchema(const DatasetName: String; const Columns: String): Binary; + end; + + { CosrvVentasEnProceso } + CosrvVentasEnProceso = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvVentasEnProceso; + end; + + { TsrvVentasEnProceso_Proxy } + TsrvVentasEnProceso_Proxy = class(TDARemoteService_Proxy, IsrvVentasEnProceso) + protected + function __GetInterfaceName:string; override; + + function GetData(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; + function GetSchema(const DatasetName: String; const Columns: String): Binary; + end; + + { IEDI_Log } + IEDI_Log = interface(IDARemoteService) + ['{F4EBB9F5-A0CC-4AF7-8B81-98ED00FA95B1}'] + procedure InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); + end; + + { CoEDI_Log } + CoEDI_Log = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IEDI_Log; + end; + + { TEDI_Log_Proxy } + TEDI_Log_Proxy = class(TDARemoteService_Proxy, IEDI_Log) + protected + function __GetInterfaceName:string; override; + + procedure InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); + end; + + { IsrvReferenciaGenerica } + IsrvReferenciaGenerica = interface(IDARemoteService) + ['{994518CC-96BD-4976-ABC6-9B421A4B65D3}'] + function GetProducto(const Codigo: String; const Talla: String; const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; + function GenerateReport(const Centro: String; const Vendedor: String; const Estado: String; const FiltroUsuario: String): Binary; + procedure PasarProductosAEspera(const Centro: String; const Vendedor: String); + end; + + { CosrvReferenciaGenerica } + CosrvReferenciaGenerica = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvReferenciaGenerica; + end; + + { TsrvReferenciaGenerica_Proxy } + TsrvReferenciaGenerica_Proxy = class(TDARemoteService_Proxy, IsrvReferenciaGenerica) + protected + function __GetInterfaceName:string; override; + + function GetProducto(const Codigo: String; const Talla: String; const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; + function GenerateReport(const Centro: String; const Vendedor: String; const Estado: String; const FiltroUsuario: String): Binary; + procedure PasarProductosAEspera(const Centro: String; const Vendedor: String); + end; + + { IsrvRecepciones } + IsrvRecepciones = interface(IDARemoteService) + ['{02EB4B9C-155E-477C-AE2D-3E73B7846AB3}'] + end; + + { CosrvRecepciones } + CosrvRecepciones = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRecepciones; + end; + + { TsrvRecepciones_Proxy } + TsrvRecepciones_Proxy = class(TDARemoteService_Proxy, IsrvRecepciones) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvDevoluciones } + IsrvDevoluciones = interface(IDARemoteService) + ['{87C31D12-C353-437F-A7A3-10882373AB54}'] + end; + + { CosrvDevoluciones } + CosrvDevoluciones = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvDevoluciones; + end; + + { TsrvDevoluciones_Proxy } + TsrvDevoluciones_Proxy = class(TDARemoteService_Proxy, IsrvDevoluciones) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvTraspasos } + IsrvTraspasos = interface(IDARemoteService) + ['{47DA82A0-51AD-477A-85B3-CE9EEAAB29D6}'] + end; + + { CosrvTraspasos } + CosrvTraspasos = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTraspasos; + end; + + { TsrvTraspasos_Proxy } + TsrvTraspasos_Proxy = class(TDARemoteService_Proxy, IsrvTraspasos) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvStock } + IsrvStock = interface(IDARemoteService) + ['{F617B727-5B8B-4645-BBB2-3D645AB31981}'] + end; + + { CosrvStock } + CosrvStock = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvStock; + end; + + { TsrvStock_Proxy } + TsrvStock_Proxy = class(TDARemoteService_Proxy, IsrvStock) + protected + function __GetInterfaceName:string; override; + + end; + + { IsrvParametros } + IsrvParametros = interface(IDARemoteService) + ['{E5177628-952A-4217-80C0-36F59E423EC4}'] + end; + + { CosrvParametros } + CosrvParametros = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvParametros; + end; + + { TsrvParametros_Proxy } + TsrvParametros_Proxy = class(TDARemoteService_Proxy, IsrvParametros) + protected + function __GetInterfaceName:string; override; + + end; + +implementation + +uses + {vcl:} SysUtils, + {RemObjects:} uROEventRepository, uROSerializer, uRORes; + +{ TLoginInfo } + +procedure TLoginInfo.Assign(iSource: TPersistent); +var lSource: VARELA_Intf.TLoginInfo; +begin + inherited Assign(iSource); + if (iSource is VARELA_Intf.TLoginInfo) then begin + lSource := VARELA_Intf.TLoginInfo(iSource); + Roles.Assign(lSource.Roles); + end; +end; + +function TLoginInfo.GetRoles: TDAStringArray; +begin + if (fRoles = nil) then fRoles := TDAStringArray.Create(); + result := fRoles; +end; + +procedure TLoginInfo.ReadComplex(ASerializer: TObject); +var + l_Attributes: TDAStringArray; + l_Data: Binary; + l_Privileges: TDAStringArray; + l_Roles: TDAStringArray; + l_SessionID: String; + l_UserID: String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + l_Roles := Roles; + TROSerializer(ASerializer).ReadArray('Roles', TDAStringArray, l_Roles); + if Roles <> l_Roles then Roles.Free; + Roles := l_Roles; + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).ReadArray('Attributes', TDAStringArray, l_Attributes); + if Attributes <> l_Attributes then Attributes.Free; + Attributes := l_Attributes; + l_Data := Data; + TROSerializer(ASerializer).ReadBinary('Data', l_Data); + if Data <> l_Data then Data.Free; + Data := l_Data; + l_Privileges := Privileges; + TROSerializer(ASerializer).ReadArray('Privileges', TDAStringArray, l_Privileges); + if Privileges <> l_Privileges then Privileges.Free; + Privileges := l_Privileges; + l_Roles := Roles; + TROSerializer(ASerializer).ReadArray('Roles', TDAStringArray, l_Roles); + if Roles <> l_Roles then Roles.Free; + Roles := l_Roles; + l_SessionID := SessionID; + TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID); + SessionID := l_SessionID; + l_UserID := UserID; + TROSerializer(ASerializer).ReadUTF8String('UserID', l_UserID); + UserID := l_UserID; + end; +end; + +procedure TLoginInfo.WriteComplex(ASerializer: TObject); +var + l_Attributes: TDAStringArray; + l_Data: Binary; + l_Privileges: TDAStringArray; + l_Roles: TDAStringArray; + l_SessionID: String; + l_UserID: String; +begin + if TROSerializer(ASerializer).RecordStrictOrder then begin + inherited; + l_Roles := Roles; + TROSerializer(ASerializer).WriteArray('Roles', l_Roles); + end + else begin + l_Attributes := Attributes; + TROSerializer(ASerializer).WriteArray('Attributes', l_Attributes); + l_Data := Data; + TROSerializer(ASerializer).WriteBinary('Data', l_Data); + l_Privileges := Privileges; + TROSerializer(ASerializer).WriteArray('Privileges', l_Privileges); + l_Roles := Roles; + TROSerializer(ASerializer).WriteArray('Roles', l_Roles); + l_SessionID := SessionID; + TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID); + l_UserID := UserID; + TROSerializer(ASerializer).WriteUTF8String('UserID', l_UserID); + end; +end; + +{ TLoginInfoCollection } +constructor TLoginInfoCollection.Create; +begin + inherited Create(TLoginInfo); +end; + +constructor TLoginInfoCollection.Create(aItemClass: TCollectionItemClass); +begin + inherited Create(aItemClass); +end; + +function TLoginInfoCollection.Add: TLoginInfo; +begin + result := TLoginInfo(inherited Add); +end; + +function TLoginInfoCollection.GetItems(aIndex: integer): TLoginInfo; +begin + result := TLoginInfo(inherited Items[aIndex]); +end; + +procedure TLoginInfoCollection.SetItems(aIndex: integer; const Value: TLoginInfo); +begin + TLoginInfo(inherited Items[aIndex]).Assign(Value); +end; + +{ CoEDI_Inventary } + +class function CoEDI_Inventary.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IEDI_Inventary; +begin + result := TEDI_Inventary_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TEDI_Inventary_Proxy } + +function TEDI_Inventary_Proxy.__GetInterfaceName:string; +begin + result := 'EDI_Inventary'; +end; + +function TEDI_Inventary_Proxy.CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; const FicheroCANT: String; out MsgError: String): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'CargarFicheroEDI'); + __Message.Write('FicheroCAB', TypeInfo(String), FicheroCAB, []); + __Message.Write('FicheroLIN', TypeInfo(String), FicheroLIN, []); + __Message.Write('FicheroCANT', TypeInfo(String), FicheroCANT, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('MsgError', TypeInfo(String), MsgError, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoEDI_Sales } + +class function CoEDI_Sales.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IEDI_Sales; +begin + result := TEDI_Sales_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TEDI_Sales_Proxy } + +function TEDI_Sales_Proxy.__GetInterfaceName:string; +begin + result := 'EDI_Sales'; +end; + +function TEDI_Sales_Proxy.CargarFicheroEDI(const FicheroCAB: String; const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'CargarFicheroEDI'); + __Message.Write('FicheroCAB', TypeInfo(String), FicheroCAB, []); + __Message.Write('FicheroLUG', TypeInfo(String), FicheroLUG, []); + __Message.Write('FicheroART', TypeInfo(String), FicheroART, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('MsgError', TypeInfo(String), MsgError, []); + 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 UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; +begin + try + LoginInfo := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'Login'); + __Message.Write('UserID', TypeInfo(String), UserID, []); + __Message.Write('Password', TypeInfo(String), Password, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('LoginInfo', TypeInfo(VARELA_Intf.TLoginInfo), LoginInfo, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TsrvLogin_Proxy.Logout; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'Logout'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.FreeStream; + end +end; + +function TsrvLogin_Proxy.Ping: Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'Ping'); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvLogin_Proxy.SetUserPassword(const UserID: String; const NewPassword: String): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'SetUserPassword'); + __Message.Write('UserID', TypeInfo(String), UserID, []); + __Message.Write('NewPassword', TypeInfo(String), NewPassword, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvLogin_Proxy.UpdateUsers(const UsersDelta: Binary): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'UpdateUsers'); + __Message.Write('UsersDelta', TypeInfo(Binary), UsersDelta, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvVentasTerminadas } + +class function CosrvVentasTerminadas.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvVentasTerminadas; +begin + result := TsrvVentasTerminadas_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvVentasTerminadas_Proxy } + +function TsrvVentasTerminadas_Proxy.__GetInterfaceName:string; +begin + result := 'srvVentasTerminadas'; +end; + +function TsrvVentasTerminadas_Proxy.GetDataEx(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetDataEx'); + __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Write('Columns', TypeInfo(String), Columns, []); + __Message.Write('Params', TypeInfo(String), Params, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvVentasTerminadas_Proxy.GetSchema(const DatasetName: String; const Columns: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetSchema'); + __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Write('Columns', TypeInfo(String), Columns, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvVentasTerminadas_Proxy.GetDataCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetDataCrossTab'); + __Message.Write('FechaIni', TypeInfo(String), FechaIni, []); + __Message.Write('FechaFin', TypeInfo(String), FechaFin, []); + __Message.Write('Coleccion', TypeInfo(String), Coleccion, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvVentasTerminadas_Proxy.GetSchemaCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetSchemaCrossTab'); + __Message.Write('FechaIni', TypeInfo(String), FechaIni, []); + __Message.Write('FechaFin', TypeInfo(String), FechaFin, []); + __Message.Write('Coleccion', TypeInfo(String), Coleccion, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvInformes } + +class function CosrvInformes.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvInformes; +begin + result := TsrvInformes_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvInformes_Proxy.__GetInterfaceName:string; +begin + result := 'srvInformes'; +end; + +{ CosrvTransfereciaFicheros } + +class function CosrvTransfereciaFicheros.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTransfereciaFicheros; +begin + result := TsrvTransfereciaFicheros_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvTransfereciaFicheros_Proxy } + +function TsrvTransfereciaFicheros_Proxy.__GetInterfaceName:string; +begin + result := 'srvTransfereciaFicheros'; +end; + +procedure TsrvTransfereciaFicheros_Proxy.UploadChunk(const IsFirst: Boolean; const Filename: String; const Filedata: Binary); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'UploadChunk'); + __Message.Write('IsFirst', TypeInfo(Boolean), IsFirst, []); + __Message.Write('Filename', TypeInfo(String), Filename, []); + __Message.Write('Filedata', TypeInfo(Binary), Filedata, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TsrvTransfereciaFicheros_Proxy.UploadFinished(const Filename: String; const Filesize: Int64); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'UploadFinished'); + __Message.Write('Filename', TypeInfo(String), Filename, []); + __Message.Write('Filesize', TypeInfo(Int64), Filesize, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvControles } + +class function CosrvControles.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvControles; +begin + result := TsrvControles_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvControles_Proxy.__GetInterfaceName:string; +begin + result := 'srvControles'; +end; + +{ CosrvVentasEnProceso } + +class function CosrvVentasEnProceso.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvVentasEnProceso; +begin + result := TsrvVentasEnProceso_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvVentasEnProceso_Proxy } + +function TsrvVentasEnProceso_Proxy.__GetInterfaceName:string; +begin + result := 'srvVentasEnProceso'; +end; + +function TsrvVentasEnProceso_Proxy.GetData(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetData'); + __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Write('Columns', TypeInfo(String), Columns, []); + __Message.Write('Params', TypeInfo(String), Params, []); + __Message.Write('MaxRecords', TypeInfo(Integer), MaxRecords, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvVentasEnProceso_Proxy.GetSchema(const DatasetName: String; const Columns: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetSchema'); + __Message.Write('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Write('Columns', TypeInfo(String), Columns, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CoEDI_Log } + +class function CoEDI_Log.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IEDI_Log; +begin + result := TEDI_Log_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TEDI_Log_Proxy } + +function TEDI_Log_Proxy.__GetInterfaceName:string; +begin + result := 'EDI_Log'; +end; + +procedure TEDI_Log_Proxy.InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'InsertarLog'); + __Message.Write('Fecha', TypeInfo(DateTime), Fecha, [paIsDateTime]); + __Message.Write('Report', TypeInfo(String), Report, []); + __Message.Write('OK', TypeInfo(Boolean), OK, []); + __Message.Write('Error_msg', TypeInfo(String), Error_msg, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvReferenciaGenerica } + +class function CosrvReferenciaGenerica.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvReferenciaGenerica; +begin + result := TsrvReferenciaGenerica_Proxy.Create(aMessage, aTransportChannel); +end; + +{ TsrvReferenciaGenerica_Proxy } + +function TsrvReferenciaGenerica_Proxy.__GetInterfaceName:string; +begin + result := 'srvReferenciaGenerica'; +end; + +function TsrvReferenciaGenerica_Proxy.GetProducto(const Codigo: String; const Talla: String; const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GetProducto'); + __Message.Write('Codigo', TypeInfo(String), Codigo, []); + __Message.Write('Talla', TypeInfo(String), Talla, []); + __Message.Write('Color', TypeInfo(String), Color, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Boolean), result, []); + __Message.Read('CodigoBarras', TypeInfo(String), CodigoBarras, []); + __Message.Read('Descripcion', TypeInfo(String), Descripcion, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +function TsrvReferenciaGenerica_Proxy.GenerateReport(const Centro: String; const Vendedor: String; const Estado: String; const FiltroUsuario: String): Binary; +begin + try + result := nil; + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'GenerateReport'); + __Message.Write('Centro', TypeInfo(String), Centro, []); + __Message.Write('Vendedor', TypeInfo(String), Vendedor, []); + __Message.Write('Estado', TypeInfo(String), Estado, []); + __Message.Write('FiltroUsuario', TypeInfo(String), FiltroUsuario, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + __Message.Read('Result', TypeInfo(Binary), result, []); + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +procedure TsrvReferenciaGenerica_Proxy.PasarProductosAEspera(const Centro: String; const Vendedor: String); +begin + try + __Message.InitializeRequestMessage(__TransportChannel, 'VARELA', __InterfaceName, 'PasarProductosAEspera'); + __Message.Write('Centro', TypeInfo(String), Centro, []); + __Message.Write('Vendedor', TypeInfo(String), Vendedor, []); + __Message.Finalize; + + __TransportChannel.Dispatch(__Message); + + finally + __Message.UnsetAttributes(__TransportChannel); + __Message.FreeStream; + end +end; + +{ CosrvRecepciones } + +class function CosrvRecepciones.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRecepciones; +begin + result := TsrvRecepciones_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvRecepciones_Proxy.__GetInterfaceName:string; +begin + result := 'srvRecepciones'; +end; + +{ CosrvDevoluciones } + +class function CosrvDevoluciones.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvDevoluciones; +begin + result := TsrvDevoluciones_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvDevoluciones_Proxy.__GetInterfaceName:string; +begin + result := 'srvDevoluciones'; +end; + +{ CosrvTraspasos } + +class function CosrvTraspasos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTraspasos; +begin + result := TsrvTraspasos_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvTraspasos_Proxy.__GetInterfaceName:string; +begin + result := 'srvTraspasos'; +end; + +{ CosrvStock } + +class function CosrvStock.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvStock; +begin + result := TsrvStock_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvStock_Proxy.__GetInterfaceName:string; +begin + result := 'srvStock'; +end; + +{ CosrvParametros } + +class function CosrvParametros.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvParametros; +begin + result := TsrvParametros_Proxy.Create(aMessage, aTransportChannel); +end; + +function TsrvParametros_Proxy.__GetInterfaceName:string; +begin + result := 'srvParametros'; +end; + +initialization + RegisterROClass(TLoginInfo); + RegisterProxyClass(IEDI_Inventary_IID, TEDI_Inventary_Proxy); + RegisterProxyClass(IEDI_Sales_IID, TEDI_Sales_Proxy); + RegisterProxyClass(IsrvLogin_IID, TsrvLogin_Proxy); + RegisterProxyClass(IsrvVentasTerminadas_IID, TsrvVentasTerminadas_Proxy); + RegisterProxyClass(IsrvInformes_IID, TsrvInformes_Proxy); + RegisterProxyClass(IsrvTransfereciaFicheros_IID, TsrvTransfereciaFicheros_Proxy); + RegisterProxyClass(IsrvControles_IID, TsrvControles_Proxy); + RegisterProxyClass(IsrvVentasEnProceso_IID, TsrvVentasEnProceso_Proxy); + RegisterProxyClass(IEDI_Log_IID, TEDI_Log_Proxy); + RegisterProxyClass(IsrvReferenciaGenerica_IID, TsrvReferenciaGenerica_Proxy); + RegisterProxyClass(IsrvRecepciones_IID, TsrvRecepciones_Proxy); + RegisterProxyClass(IsrvDevoluciones_IID, TsrvDevoluciones_Proxy); + RegisterProxyClass(IsrvTraspasos_IID, TsrvTraspasos_Proxy); + RegisterProxyClass(IsrvStock_IID, TsrvStock_Proxy); + RegisterProxyClass(IsrvParametros_IID, TsrvParametros_Proxy); + + +finalization + UnregisterROClass(TLoginInfo); + UnregisterProxyClass(IEDI_Inventary_IID); + UnregisterProxyClass(IEDI_Sales_IID); + UnregisterProxyClass(IsrvLogin_IID); + UnregisterProxyClass(IsrvVentasTerminadas_IID); + UnregisterProxyClass(IsrvInformes_IID); + UnregisterProxyClass(IsrvTransfereciaFicheros_IID); + UnregisterProxyClass(IsrvControles_IID); + UnregisterProxyClass(IsrvVentasEnProceso_IID); + UnregisterProxyClass(IEDI_Log_IID); + UnregisterProxyClass(IsrvReferenciaGenerica_IID); + UnregisterProxyClass(IsrvRecepciones_IID); + UnregisterProxyClass(IsrvDevoluciones_IID); + UnregisterProxyClass(IsrvTraspasos_IID); + UnregisterProxyClass(IsrvStock_IID); + UnregisterProxyClass(IsrvParametros_IID); + +end. diff --git a/2.1.0/Source/Servidor/VARELA_Invk.pas b/2.1.0/Source/Servidor/VARELA_Invk.pas new file mode 100644 index 0000000..5bf9316 --- /dev/null +++ b/2.1.0/Source/Servidor/VARELA_Invk.pas @@ -0,0 +1,707 @@ +unit VARELA_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:} DataAbstract3_Intf, + {Used RODL Invk's:} DataAbstract3_Invk, + {Generated:} VARELA_Intf; + +type + {$M+} + TEDI_Inventary_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_CargarFicheroEDI(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TEDI_Sales_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_CargarFicheroEDI(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvLogin_Invoker = class(TROInvoker) + 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); + procedure Invoke_SetUserPassword(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UpdateUsers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvVentasTerminadas_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetDataCrossTab(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSchemaCrossTab(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvInformes_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvTransfereciaFicheros_Invoker = class(TROInvoker) + private + protected + published + procedure Invoke_UploadChunk(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_UploadFinished(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvControles_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvVentasEnProceso_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TEDI_Log_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_InsertarLog(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvReferenciaGenerica_Invoker = class(TDARemoteService_Invoker) + private + protected + published + procedure Invoke_GetProducto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + procedure Invoke_PasarProductosAEspera(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); + end; + {$M-} + + {$M+} + TsrvRecepciones_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvDevoluciones_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvTraspasos_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvStock_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + + {$M+} + TsrvParametros_Invoker = class(TDARemoteService_Invoker) + private + protected + published + end; + {$M-} + +implementation + +uses + {RemObjects:} uRORes, uROClient; + +{ TEDI_Inventary_Invoker } + +procedure TEDI_Inventary_Invoker.Invoke_CargarFicheroEDI(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function CargarFicheroEDI(const FicheroCAB: String; const FicheroLIN: String; const FicheroCANT: String; out MsgError: String): Boolean; } +var + FicheroCAB: String; + FicheroLIN: String; + FicheroCANT: String; + MsgError: String; + lResult: Boolean; +begin + try + __Message.Read('FicheroCAB', TypeInfo(String), FicheroCAB, []); + __Message.Read('FicheroLIN', TypeInfo(String), FicheroLIN, []); + __Message.Read('FicheroCANT', TypeInfo(String), FicheroCANT, []); + + lResult := (__Instance as IEDI_Inventary).CargarFicheroEDI(FicheroCAB, FicheroLIN, FicheroCANT, MsgError); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'EDI_Inventary', 'CargarFicheroEDIResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('MsgError', TypeInfo(String), MsgError, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TEDI_Sales_Invoker } + +procedure TEDI_Sales_Invoker.Invoke_CargarFicheroEDI(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function CargarFicheroEDI(const FicheroCAB: String; const FicheroLUG: String; const FicheroART: String; out MsgError: String): Boolean; } +var + FicheroCAB: String; + FicheroLUG: String; + FicheroART: String; + MsgError: String; + lResult: Boolean; +begin + try + __Message.Read('FicheroCAB', TypeInfo(String), FicheroCAB, []); + __Message.Read('FicheroLUG', TypeInfo(String), FicheroLUG, []); + __Message.Read('FicheroART', TypeInfo(String), FicheroART, []); + + lResult := (__Instance as IEDI_Sales).CargarFicheroEDI(FicheroCAB, FicheroLUG, FicheroART, MsgError); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'EDI_Sales', 'CargarFicheroEDIResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('MsgError', TypeInfo(String), MsgError, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +{ TsrvLogin_Invoker } + +procedure TsrvLogin_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function Login(const UserID: String; const Password: String; out LoginInfo: TLoginInfo): Boolean; } +var + UserID: String; + Password: String; + LoginInfo: VARELA_Intf.TLoginInfo; + lResult: Boolean; + __lObjectDisposer: TROObjectDisposer; +begin + LoginInfo := nil; + try + __Message.Read('UserID', TypeInfo(String), UserID, []); + __Message.Read('Password', TypeInfo(String), Password, []); + + lResult := (__Instance as IsrvLogin).Login(UserID, Password, LoginInfo); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvLogin', 'LoginResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('LoginInfo', TypeInfo(VARELA_Intf.TLoginInfo), 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, 'VARELA', '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, 'VARELA', 'srvLogin', 'PingResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TsrvLogin_Invoker.Invoke_SetUserPassword(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function SetUserPassword(const UserID: String; const NewPassword: String): Boolean; } +var + UserID: String; + NewPassword: String; + lResult: Boolean; +begin + try + __Message.Read('UserID', TypeInfo(String), UserID, []); + __Message.Read('NewPassword', TypeInfo(String), NewPassword, []); + + lResult := (__Instance as IsrvLogin).SetUserPassword(UserID, NewPassword); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvLogin', 'SetUserPasswordResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TsrvLogin_Invoker.Invoke_UpdateUsers(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function UpdateUsers(const UsersDelta: Binary): Binary; } +var + UsersDelta: Binary; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + UsersDelta := nil; + lResult := nil; + try + __Message.Read('UsersDelta', TypeInfo(Binary), UsersDelta, []); + + lResult := (__Instance as IsrvLogin).UpdateUsers(UsersDelta); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvLogin', 'UpdateUsersResponse'); + __Message.Write('Result', TypeInfo(Binary), lResult, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(UsersDelta); + __lObjectDisposer.Add(lResult); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +{ TsrvVentasTerminadas_Invoker } + +procedure TsrvVentasTerminadas_Invoker.Invoke_GetDataEx(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDataEx(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; } +var + DatasetName: String; + Columns: String; + Params: String; + MaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Read('Columns', TypeInfo(String), Columns, []); + __Message.Read('Params', TypeInfo(String), Params, []); + __Message.Read('MaxRecords', TypeInfo(Integer), MaxRecords, []); + + lResult := (__Instance as IsrvVentasTerminadas).GetDataEx(DatasetName, Columns, Params, MaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvVentasTerminadas', 'GetDataExResponse'); + __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 TsrvVentasTerminadas_Invoker.Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchema(const DatasetName: String; const Columns: String): Binary; } +var + DatasetName: String; + Columns: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Read('Columns', TypeInfo(String), Columns, []); + + lResult := (__Instance as IsrvVentasTerminadas).GetSchema(DatasetName, Columns); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvVentasTerminadas', 'GetSchemaResponse'); + __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 TsrvVentasTerminadas_Invoker.Invoke_GetDataCrossTab(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetDataCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; } +var + FechaIni: String; + FechaFin: String; + Coleccion: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('FechaIni', TypeInfo(String), FechaIni, []); + __Message.Read('FechaFin', TypeInfo(String), FechaFin, []); + __Message.Read('Coleccion', TypeInfo(String), Coleccion, []); + + lResult := (__Instance as IsrvVentasTerminadas).GetDataCrossTab(FechaIni, FechaFin, Coleccion); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvVentasTerminadas', 'GetDataCrossTabResponse'); + __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 TsrvVentasTerminadas_Invoker.Invoke_GetSchemaCrossTab(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchemaCrossTab(const FechaIni: String; const FechaFin: String; const Coleccion: String): Binary; } +var + FechaIni: String; + FechaFin: String; + Coleccion: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('FechaIni', TypeInfo(String), FechaIni, []); + __Message.Read('FechaFin', TypeInfo(String), FechaFin, []); + __Message.Read('Coleccion', TypeInfo(String), Coleccion, []); + + lResult := (__Instance as IsrvVentasTerminadas).GetSchemaCrossTab(FechaIni, FechaFin, Coleccion); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvVentasTerminadas', 'GetSchemaCrossTabResponse'); + __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; + +{ TsrvTransfereciaFicheros_Invoker } + +procedure TsrvTransfereciaFicheros_Invoker.Invoke_UploadChunk(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure UploadChunk(const IsFirst: Boolean; const Filename: String; const Filedata: Binary); } +var + IsFirst: Boolean; + Filename: String; + Filedata: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + Filedata := nil; + try + __Message.Read('IsFirst', TypeInfo(Boolean), IsFirst, []); + __Message.Read('Filename', TypeInfo(String), Filename, []); + __Message.Read('Filedata', TypeInfo(Binary), Filedata, []); + + (__Instance as IsrvTransfereciaFicheros).UploadChunk(IsFirst, Filename, Filedata); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvTransfereciaFicheros', 'UploadChunkResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + __lObjectDisposer := TROObjectDisposer.Create(__Instance); + try + __lObjectDisposer.Add(Filedata); + finally + __lObjectDisposer.Free(); + end; + end; +end; + +procedure TsrvTransfereciaFicheros_Invoker.Invoke_UploadFinished(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure UploadFinished(const Filename: String; const Filesize: Int64); } +var + Filename: String; + Filesize: Int64; +begin + try + __Message.Read('Filename', TypeInfo(String), Filename, []); + __Message.Read('Filesize', TypeInfo(Int64), Filesize, []); + + (__Instance as IsrvTransfereciaFicheros).UploadFinished(Filename, Filesize); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvTransfereciaFicheros', 'UploadFinishedResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TsrvVentasEnProceso_Invoker } + +procedure TsrvVentasEnProceso_Invoker.Invoke_GetData(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetData(const DatasetName: String; const Columns: String; const Params: String; const MaxRecords: Integer): Binary; } +var + DatasetName: String; + Columns: String; + Params: String; + MaxRecords: Integer; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Read('Columns', TypeInfo(String), Columns, []); + __Message.Read('Params', TypeInfo(String), Params, []); + __Message.Read('MaxRecords', TypeInfo(Integer), MaxRecords, []); + + lResult := (__Instance as IsrvVentasEnProceso).GetData(DatasetName, Columns, Params, MaxRecords); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvVentasEnProceso', 'GetDataResponse'); + __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 TsrvVentasEnProceso_Invoker.Invoke_GetSchema(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetSchema(const DatasetName: String; const Columns: String): Binary; } +var + DatasetName: String; + Columns: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('DatasetName', TypeInfo(String), DatasetName, []); + __Message.Read('Columns', TypeInfo(String), Columns, []); + + lResult := (__Instance as IsrvVentasEnProceso).GetSchema(DatasetName, Columns); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvVentasEnProceso', 'GetSchemaResponse'); + __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; + +{ TEDI_Log_Invoker } + +procedure TEDI_Log_Invoker.Invoke_InsertarLog(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure InsertarLog(const Fecha: DateTime; const Report: String; const OK: Boolean; const Error_msg: String); } +var + Fecha: DateTime; + Report: String; + OK: Boolean; + Error_msg: String; +begin + try + __Message.Read('Fecha', TypeInfo(DateTime), Fecha, [paIsDateTime]); + __Message.Read('Report', TypeInfo(String), Report, []); + __Message.Read('OK', TypeInfo(Boolean), OK, []); + __Message.Read('Error_msg', TypeInfo(String), Error_msg, []); + + (__Instance as IEDI_Log).InsertarLog(Fecha, Report, OK, Error_msg); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'EDI_Log', 'InsertarLogResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +{ TsrvReferenciaGenerica_Invoker } + +procedure TsrvReferenciaGenerica_Invoker.Invoke_GetProducto(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GetProducto(const Codigo: String; const Talla: String; const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean; } +var + Codigo: String; + Talla: String; + Color: String; + CodigoBarras: String; + Descripcion: String; + lResult: Boolean; +begin + try + __Message.Read('Codigo', TypeInfo(String), Codigo, []); + __Message.Read('Talla', TypeInfo(String), Talla, []); + __Message.Read('Color', TypeInfo(String), Color, []); + + lResult := (__Instance as IsrvReferenciaGenerica).GetProducto(Codigo, Talla, Color, CodigoBarras, Descripcion); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvReferenciaGenerica', 'GetProductoResponse'); + __Message.Write('Result', TypeInfo(Boolean), lResult, []); + __Message.Write('CodigoBarras', TypeInfo(String), CodigoBarras, []); + __Message.Write('Descripcion', TypeInfo(String), Descripcion, []); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + finally + end; +end; + +procedure TsrvReferenciaGenerica_Invoker.Invoke_GenerateReport(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerateReport(const Centro: String; const Vendedor: String; const Estado: String; const FiltroUsuario: String): Binary; } +var + Centro: String; + Vendedor: String; + Estado: String; + FiltroUsuario: String; + lResult: Binary; + __lObjectDisposer: TROObjectDisposer; +begin + lResult := nil; + try + __Message.Read('Centro', TypeInfo(String), Centro, []); + __Message.Read('Vendedor', TypeInfo(String), Vendedor, []); + __Message.Read('Estado', TypeInfo(String), Estado, []); + __Message.Read('FiltroUsuario', TypeInfo(String), FiltroUsuario, []); + + lResult := (__Instance as IsrvReferenciaGenerica).GenerateReport(Centro, Vendedor, Estado, FiltroUsuario); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvReferenciaGenerica', 'GenerateReportResponse'); + __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 TsrvReferenciaGenerica_Invoker.Invoke_PasarProductosAEspera(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ procedure PasarProductosAEspera(const Centro: String; const Vendedor: String); } +var + Centro: String; + Vendedor: String; +begin + try + __Message.Read('Centro', TypeInfo(String), Centro, []); + __Message.Read('Vendedor', TypeInfo(String), Vendedor, []); + + (__Instance as IsrvReferenciaGenerica).PasarProductosAEspera(Centro, Vendedor); + + __Message.InitializeResponseMessage(__Transport, 'VARELA', 'srvReferenciaGenerica', 'PasarProductosAEsperaResponse'); + __Message.Finalize; + __Message.UnsetAttributes(__Transport); + + __oResponseOptions := [roNoResponse]; + + finally + end; +end; + +end. diff --git a/2.1.0/Source/Servidor/cxVerticalGridD10.drc b/2.1.0/Source/Servidor/cxVerticalGridD10.drc new file mode 100644 index 0000000..e520ba1 --- /dev/null +++ b/2.1.0/Source/Servidor/cxVerticalGridD10.drc @@ -0,0 +1,23 @@ +/* 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 + "\x52", "\x00", "\x65", "\x00", "\x6d", "\x00", "\x4f", "\x00", /* 0000: R.e.m.O. */ + "\x62", "\x00", "\x6a", "\x00", "\x65", "\x00", "\x63", "\x00", /* 0008: b.j.e.c. */ + "\x74", "\x00", "\x73", "\x00", "\x20", "\x00", "\x53", "\x00", /* 0010: t.s. .S. */ + "\x44", "\x00", "\x4b", "\x00", "\x20", "\x00", "\x2d", "\x00", /* 0018: D.K. .-. */ + "\x20", "\x00", "\x52", "\x00", "\x4f", "\x00", "\x44", "\x00", /* 0020: .R.O.D. */ + "\x58", "\x00", "\x53", "\x00", "\x6f", "\x00", "\x63", "\x00", /* 0028: X.S.o.c. */ + "\x6b", "\x00", "\x20", "\x00", "\x4c", "\x00", "\x69", "\x00", /* 0030: k. .L.i. */ + "\x62", "\x00", "\x72", "\x00", "\x61", "\x00", "\x72", "\x00", /* 0038: b.r.a.r. */ + "\x79", "\x00", "\x00", "\x00" /* 0040: y... */ +END + diff --git a/2.1.0/Source/Servidor/fServerForm.ddp b/2.1.0/Source/Servidor/fServerForm.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/fServerForm.ddp differ diff --git a/2.1.0/Source/Servidor/fServerForm.dfm b/2.1.0/Source/Servidor/fServerForm.dfm new file mode 100644 index 0000000..6f00a4a --- /dev/null +++ b/2.1.0/Source/Servidor/fServerForm.dfm @@ -0,0 +1,1065 @@ +object ServerForm: TServerForm + 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 + 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 + 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...' + end + object actAcerca: TAction + Caption = 'Acerca de...' + OnExecute = actAcercaExecute + end + end + object XPManifest1: TXPManifest + Left = 40 + Top = 16 + end + object TrayIcon1: TTrayIcon + Animate = True + BalloonFlags = bfInfo + PopupMenu = PopupMenu1 + Left = 144 + Top = 16 + end +end diff --git a/2.1.0/Source/Servidor/fServerForm.pas b/2.1.0/Source/Servidor/fServerForm.pas new file mode 100644 index 0000000..0ce7d86 --- /dev/null +++ b/2.1.0/Source/Servidor/fServerForm.pas @@ -0,0 +1,99 @@ +unit fServerForm; + +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; + +type + TServerForm = 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; + Panel1: TPanel; + Image1: TImage; + JvGradient1: TJvGradient; + Button1: TButton; + actAcerca: TAction; + Acercade1: TMenuItem; + N1: TMenuItem; + TrayIcon1: TTrayIcon; + procedure actCerrarExecute(Sender: TObject); + procedure actRestartExecute(Sender: TObject); + procedure actOpcionesExecute(Sender: TObject); + procedure FormCreate(Sender: TObject); + procedure actAcercaExecute(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + ServerForm: TServerForm; + +implementation + +uses + uDataModuleServer, uConfiguracion, EDI_SLSRPT, uAcercaDe; + + +{$R *.dfm} + +procedure TServerForm.actCerrarExecute(Sender: TObject); +begin + Close; +end; + +procedure TServerForm.actRestartExecute(Sender: TObject); +begin + dmServer.RefrescarConexion; +end; + +procedure TServerForm.actOpcionesExecute(Sender: TObject); +var + AForm : TForm; +begin + AForm := TfConfiguracion.Create(NIL); + try + AForm.ShowModal; + finally + AForm.Release; + actRestart.Execute; + end; +end; + +procedure TServerForm.FormCreate(Sender: TObject); +begin + TrayIcon1.Visible := True; + TrayIcon1.Hint := 'Administración de puntos de venta (Servidor)' + + #10#13 + dmServer.ConnectionName; + TrayIcon1.ShowBalloonHint; + + Self.Visible := False; +end; + +procedure TServerForm.actAcercaExecute(Sender: TObject); +begin + with TfAcercaDe.Create(NIL) do + try + ShowModal; + finally + Free; + end; +end; + +end. diff --git a/2.1.0/Source/Servidor/srvInformes_Impl.ddp b/2.1.0/Source/Servidor/srvInformes_Impl.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/srvInformes_Impl.ddp differ diff --git a/2.1.0/Source/Servidor/srvInformes_Impl.dfm b/2.1.0/Source/Servidor/srvInformes_Impl.dfm new file mode 100644 index 0000000..90074b2 --- /dev/null +++ b/2.1.0/Source/Servidor/srvInformes_Impl.dfm @@ -0,0 +1,331 @@ +object srvInformes: TsrvInformes + OldCreateOrder = True + SessionManager = dmServer.SessionManager + AcquireConnection = True + ServiceSchema = schInformes + ServiceAdapter = DABINAdapter + OnAfterProcessTransactionAction = pptaNone + ExportedDataTables = <> + CacheElements = <> + Options = [rsoProcessDeltasWithoutUpdateRules] + Height = 297 + Width = 298 + object schInformes: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = dmServer.DataDictionary + Diagrams = dmServer.DADiagrams + Datasets = < + item + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + Value = 'VENTAS' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'SELECT '#10' ID, CATEGORIA, MODIFICABLE, ICONO, NOMBRE, DESCRIPCI' + + 'ON, ORDEN, VISTA'#10' FROM'#10' RDX_INFORMES' + StatementType = stSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'CATEGORIA' + TableField = 'CATEGORIA' + end + item + DatasetField = 'ICONO' + TableField = 'ICONO' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'DESCRIPCION' + TableField = 'DESCRIPCION' + end + item + DatasetField = 'ORDEN' + TableField = 'ORDEN' + end + item + DatasetField = 'VISTA' + TableField = 'VISTA' + end + item + DatasetField = 'MODIFICABLE' + TableField = 'MODIFICABLE' + end> + end> + Name = 'ListaInformesPorCategoria' + Fields = < + item + Name = 'ID' + DataType = datInteger + BlobType = dabtUnknown + Required = True + DisplayWidth = 0 + Alignment = taLeftJustify + ServerAutoRefresh = True + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'MODIFICABLE' + DataType = datString + Size = 1 + BlobType = dabtUnknown + DefaultValue = 'S' + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ICONO' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'ORDEN' + DataType = datInteger + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end + item + Name = 'VISTA' + DataType = datMemo + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = False + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + BusinessRulesClient.ScriptLanguage = rslPascalScript + BusinessRulesServer.ScriptLanguage = rslPascalScript + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ICONO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ORDEN' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VISTA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'INSERT'#10' INTO RDX_INFORMES'#10' (CATEGORIA, MODIFICABLE, ICONO, N' + + 'OMBRE, DESCRIPCION, ORDEN, VISTA)'#10' VALUES'#10' (:CATEGORIA, :MOD' + + 'IFICABLE, :ICONO, :NOMBRE, :DESCRIPCION, :ORDEN,'#10' :VISTA)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_ListaInformesPorCategoria' + end + item + Params = < + item + Name = 'CATEGORIA' + DataType = datString + Size = 15 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ICONO' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'NOMBRE' + DataType = datString + Size = 50 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'DESCRIPCION' + DataType = datString + Size = 255 + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'ORDEN' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'VISTA' + DataType = datMemo + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end + item + Name = 'OLD_ID' + DataType = datInteger + BlobType = dabtUnknown + Value = '' + ParamType = daptInput + end> + Statements = < + item + Connection = 'GFT_VARELA' + TargetTable = 'RDX_INFORMES' + SQL = + 'UPDATE RDX_INFORMES'#10' SET '#10' CATEGORIA = :CATEGORIA, '#10' MODI' + + 'FICABLE = :MODIFICABLE,'#10' ICONO = :ICONO, '#10' NOMBRE = :NOMBR' + + 'E, '#10' DESCRIPCION = :DESCRIPCION, '#10' ORDEN = :ORDEN, '#10' VI' + + 'STA = :VISTA'#10' WHERE'#10' (ID = :OLD_ID)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_ListaInformesPorCategoria' + end> + RelationShips = <> + UpdateRules = <> + Version = 0 + Left = 40 + Top = 24 + end + object bpInformes: TDABusinessProcessor + Schema = schInformes + InsertCommandName = 'Insert_ListaInformesPorCategoria' + UpdateCommandName = 'Update_ListaInformesPorCategoria' + ReferencedDataset = 'ListaInformesPorCategoria' + ProcessorOptions = [poAutoGenerateDelete, poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 144 + Top = 24 + end + object DABINAdapter: TDABINAdapter + BufferSize = 262144 + IsCompatibleV4 = True + Left = 40 + Top = 96 + end +end diff --git a/2.1.0/Source/Servidor/srvInformes_Impl.pas b/2.1.0/Source/Servidor/srvInformes_Impl.pas new file mode 100644 index 0000000..57b76b9 --- /dev/null +++ b/2.1.0/Source/Servidor/srvInformes_Impl.pas @@ -0,0 +1,48 @@ +unit srvInformes_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:} DataAbstract3_Intf, + {Generated:} VARELA_Intf, uDAClasses, uDAScriptingProvider, + uDABusinessProcessor, uDADataTable, uDABINAdapter, uDADataStreamer; + +type + { TsrvInformes } + TsrvInformes = class(TDARemoteService, IsrvInformes) + bpInformes: TDABusinessProcessor; + DABINAdapter: TDABINAdapter; + schInformes: TDASchema; + private + protected + { IsrvInformes methods } + end; + +implementation + +{$R *.dfm} +uses + {Generated:} VARELA_Invk, uDataModuleServer; + +procedure Create_srvInformes(out anInstance : IUnknown); +begin + anInstance := TsrvInformes.Create(NIL); +end; + +{ srvInformes } +initialization + TROClassFactory.Create('srvInformes', Create_srvInformes, TsrvInformes_Invoker); + +finalization + +end. diff --git a/2.1.0/Source/Servidor/uAcercaDe.ddp b/2.1.0/Source/Servidor/uAcercaDe.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/uAcercaDe.ddp differ diff --git a/2.1.0/Source/Servidor/uAcercaDe.dfm b/2.1.0/Source/Servidor/uAcercaDe.dfm new file mode 100644 index 0000000..f4ef396 --- /dev/null +++ b/2.1.0/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/2.1.0/Source/Servidor/uAcercaDe.pas b/2.1.0/Source/Servidor/uAcercaDe.pas new file mode 100644 index 0000000..466c9fe --- /dev/null +++ b/2.1.0/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 + ' - Versión ' + 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 DISEÑO S.L.'); + end; + finally + FreeAndNil(Obj); + end; +end; + +end. diff --git a/2.1.0/Source/Servidor/uDataModuleServer.ddp b/2.1.0/Source/Servidor/uDataModuleServer.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Servidor/uDataModuleServer.ddp differ diff --git a/2.1.0/Source/Servidor/uDataModuleServer.dfm b/2.1.0/Source/Servidor/uDataModuleServer.dfm new file mode 100644 index 0000000..b1f2b6b --- /dev/null +++ b/2.1.0/Source/Servidor/uDataModuleServer.dfm @@ -0,0 +1,107 @@ +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%\' + TraceActive = True + TraceFlags = [toPrepare, toExecute, toFetch, toError, toStmt, toConnect, toTransact, toBlob, toService, toMisc, toParams] + OnTraceEvent = DriverManagerTraceEvent + Left = 136 + Top = 80 + end + object ConnectionManager: TDAConnectionManager + Connections = < + item + Name = 'GFT_VARELA' + ConnectionString = + 'SDAC?Server=roberto;Database=GFT_VARELA_NUEVA_QUE_FALLA;UserID=s' + + 'a;Password=123456;Schemas=1;' + ConnectionType = 'MSSQL' + Default = True + end + item + Name = 'GFT_VARELA_ADO' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=ROBERTO;Database=GFT_VARELA_NUEV' + + 'A_QUE_FALLA;UserID=sa;Password=123456;' + end> + DriverManager = DriverManager + PoolingEnabled = True + Left = 40 + Top = 80 + end + object DataDictionary: TDADataDictionary + Fields = < + item + Name = 'IMPORTE' + DataType = datCurrency + DisplayLabel = 'Importe' + Alignment = taRightJustify + end> + Left = 40 + Top = 144 + end + object DADiagrams: TDADiagrams + Left = 136 + Top = 144 + DiagramData = + ''#13#10' '#13#10' '#13#10''#13#10 + 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 DAADODriver: TDAADODriver + Left = 304 + Top = 16 + end + object SessionManager: TROInMemorySessionManager + SessionDuration = -1 + Left = 224 + Top = 16 + end + object DAServerLog1: TDAServerLog + Active = True + OnAddSQLCommandLog = DAServerLog1AddSQLCommandLog + OnAddSQLErrorLog = DAServerLog1AddSQLErrorLog + Left = 224 + Top = 80 + end + object JvLogFile1: TJvLogFile + Left = 224 + Top = 144 + end + object DASDACDriver: TDASDACDriver + Left = 304 + Top = 80 + end +end diff --git a/2.1.0/Source/Servidor/uDataModuleServer.pas b/2.1.0/Source/Servidor/uDataModuleServer.pas new file mode 100644 index 0000000..1366ae5 --- /dev/null +++ b/2.1.0/Source/Servidor/uDataModuleServer.pas @@ -0,0 +1,366 @@ +unit uDataModuleServer; + +interface + +uses + SysUtils, Classes, uDAEngine, uDAIBXDriver, uDAClasses, uDADriverManager, + uROClient, uROBinMessage, uROServer, uROIndyTCPServer, uROIndyHTTPServer, + uROSessions, uDADataTable, uDABINAdapter, IBSQLMonitor, JvComponent, + JvAppStorage, JvAppRegistryStorage, uDAInterfaces, + JvComponentBase, uDAADODriver, uROEventRepository, uDAServerLog, + JvLogFile, SyncObjs, uDABDEDriver, uDADBXDriver, + uDASDACDriver; + +const + SERVER_PORT = '8099'; + +type + TdmServer = class(TDataModule) + HTTPServer: TROIndyHTTPServer; + BINMessage: TROBinMessage; + DriverManager: TDADriverManager; + DADiagrams: TDADiagrams; + JvAppRegistryStorage: TJvAppRegistryStorage; + DAADODriver: TDAADODriver; + SessionManager: TROInMemorySessionManager; + ConnectionManager: TDAConnectionManager; + DAServerLog1: TDAServerLog; + JvLogFile1: TJvLogFile; + DASDACDriver: TDASDACDriver; + DataDictionary: TDADataDictionary; + procedure DataModuleCreate(Sender: TObject); + procedure DataModuleDestroy(Sender: TObject); + procedure HTTPServerBeforeServerActivate(Sender: TObject); + procedure DAServerLog1AddSQLCommandLog(Sender: TDAServerLog; + SQLCommandLog: TDASQLCommandLog); + procedure DAServerLog1AddSQLErrorLog(Sender: TDAServerLog; + SQLErrorLog: TDASQLErrorLog); + procedure DriverManagerTraceEvent(Sender: TObject; const Text: string; + Tag: Integer); + private + FConnectionName : string; + FEscribirLog : TCriticalSection; + function GetConnectionString: string; + procedure FindFiles(StartDir: string; var FilesList: TStringList); + procedure IniciarLog; + procedure DetenerLog; + + public + FDBServer : string; + FDBName : string; + FDBUser : string; + FDBPass : string; + FInicioWindows : Boolean; + FServerPort : string; + FDirEntrada : String; + FDirAlmacen : String; + FDias : Integer; + procedure LeerConfiguracion; + procedure SalvarConfiguracion; + procedure RefrescarConexion; + procedure BorrarFicherosDeCargaAntiguos; + procedure EscribirLog(const AMensaje : String); + 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; +function GetTempDirectory(ABasePath : string) : string ; + + +var + dmServer: TdmServer; + +implementation + +{$R *.dfm} + +uses + DateUtils, JclFileUtils, ActiveX, Forms, fServerForm, Registry, Windows, Dialogs, + ADODB; + + +function GetTempDirectory(ABasePath : string) : string ; +var + fTime : TDateTime; + sFile : String; +Begin + Result := '' ; + + fTime := Frac(Now) ; + sFile := 'TMP' + Copy(FormatFloat('#.########', fTime), 5, 5); + + while FileExists(ABasePath + PathDelim + sFile) do + begin + fTime := Frac(Now); + sFile := 'TMP'+Copy(FormatFloat('#.########', fTime), 5, 5); + end; + Result := sFile ; +end; + +Function AddBS(s:String): String; +Begin + If Copy(s,Length(s),1)<>'\' Then + s := s + '\' ; + Result := s ; +End; + +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; + +procedure TdmServer.DAServerLog1AddSQLCommandLog(Sender: TDAServerLog; + SQLCommandLog: TDASQLCommandLog); +begin + EscribirLog(SQLCommandLog.OriginalSQLText); + EscribirLog(SQLCommandLog.OriginalSQLText); + EscribirLog('-----------------------------------------------------'); +end; + +procedure TdmServer.DAServerLog1AddSQLErrorLog(Sender: TDAServerLog; + SQLErrorLog: TDASQLErrorLog); +begin + EscribirLog(SQLErrorLog.ErrorMessage); + EscribirLog(SQLErrorLog.OriginalSQLText); + EscribirLog(SQLErrorLog.OriginalSQLText); + EscribirLog('-----------------------------------------------------'); +end; + +procedure TdmServer.DataModuleCreate(Sender: TObject); +begin + LeerConfiguracion; + RefrescarConexion; + IniciarLog; +end; + +function TdmServer.GetConnectionString: string; +begin +{ Result := 'SDAC?Server=' + FDBServer + + ';Database=' + FDBName + + ';UserID=' + FDBUser + + ';Password=' + Decrypt(FDBPass);} + + Result := 'ADO?AuxDriver=SQLOLEDB.1;Server=' + FDBServer + + ';Database=' + FDBName + + ';UserID=' + FDBUser + + ';Password=' + Decrypt(FDBPass); +end; + +procedure TdmServer.LeerConfiguracion; +begin + with JvAppRegistryStorage do + begin + FDBServer := ReadString('ServerDB'); + FDBName := ReadString('DBName'); + FDBUser := ReadString('UserDB'); + FDBPass := ReadString('PassDB'); + + FServerPort := ReadString('ServerPort', SERVER_PORT); + FInicioWindows := ReadBoolean('InicioWindows'); + + FDirEntrada := ReadString('DirEntradaEDI'); + FDirAlmacen := ReadString('DirAlmacenEDI'); + FDias := ReadInteger('DiasAlmacenEDI', 1); + end; +end; + +procedure TdmServer.SalvarConfiguracion; +begin + with JvAppRegistryStorage do + begin + BeginUpdate; + try + WriteString('ServerDB', FDBServer); + WriteString('DBName', FDBName); + WriteString('UserDB', FDBUser); + WriteString('PassDB', FDBPass); + WriteString('ServerPort', FServerPort); + + WriteString('DirEntradaEDI', FDirEntrada); + WriteString('DirAlmacenEDI', FDirAlmacen); + WriteInteger('DiasAlmacenEDI', FDias); + + WriteBoolean('InicioWindows', FInicioWindows); + if FInicioWindows then + WriteAutoRun('AdminPV_Server', Application.ExeName) + else + DeleteAutoRun('AdminPV_Server'); + finally + EndUpdate + end; + end; +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; + + HTTPServer.Active := TRUE; +end; + +procedure TdmServer.HTTPServerBeforeServerActivate(Sender: TObject); +begin + HTTPServer.Port := StrToInt(FServerPort); +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.BorrarFicherosDeCargaAntiguos; +var + AAlmacen : String; + ADate : TDateTime; + FilesList: TStringList; + i: integer; +begin + ADate := Now; + IncDay(ADate,((-1)*FDias)); //Establecemos fecha desde la que eliminaremos + + AAlmacen := PathAddSeparator(FDirAlmacen); + FilesList := TStringList.Create; + try + FindFiles(AAlmacen, FilesList); + for i:=0 to FilesList.Count-1 do + begin +// showmessage(FilesList.Strings[i]); + DeleteDirectory(FilesList.Strings[i], false) + end; + finally + FreeAndNil(FilesList); + end +end; + +procedure TdmServer.FindFiles(StartDir: string; var FilesList: TStringList); +const + MASK_ALL_FILES = '*.*'; + CHAR_POINT = '.'; +var + SR: TSearchRec; + IsFound: Boolean; + ADateTime: TDateTime; +begin + StartDir := PathAddSeparator(StartDir); + + IsFound := (FindFirst(StartDir + MASK_ALL_FILES, faAnyFile, SR) = 0); + while IsFound do + begin + if (SR.Name[1] <> CHAR_POINT) then + begin + ADateTime := FileDateToDateTime(SR.Time); + if (DaysBetween(ADateTime, Now) > FDias) then + FilesList.Add(StartDir + SR.Name); + end; + IsFound := (FindNext(SR) = 0); + end; + SysUtils.FindClose(SR); +end; + +end. diff --git a/2.1.0/Source/Servidor/uSchemaUtilsServer.pas b/2.1.0/Source/Servidor/uSchemaUtilsServer.pas new file mode 100644 index 0000000..ac5791a --- /dev/null +++ b/2.1.0/Source/Servidor/uSchemaUtilsServer.pas @@ -0,0 +1,161 @@ +unit uSchemaUtilsServer; + +interface + +uses + Classes, SysUtils, + uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, + DARemoteService_Impl, + DataAbstract3_Intf, + uDAClasses, uDAInterfaces, uDADataTable; + +type + TReplicarDataSet = class + protected + function GenerateNewSQL : String; + public + Service : TDARemoteService; + Columnas : String; + ColumnasQueSuman : 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 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/2.1.0/Source/Usuarios/Usuarios.bdsproj b/2.1.0/Source/Usuarios/Usuarios.bdsproj new file mode 100644 index 0000000..adb8eb4 --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.bdsproj @@ -0,0 +1,677 @@ + + + + + + + + + + + + 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 + Pedidos a proveedor + + + + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + 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/2.1.0/Source/Usuarios/Usuarios.cfg b/2.1.0/Source/Usuarios/Usuarios.cfg new file mode 100644 index 0000000..96c8d0b --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.cfg @@ -0,0 +1,45 @@ +-$A8 +-$B- +-$C+ +-$D+ +-$E- +-$F- +-$G+ +-$H+ +-$I+ +-$J- +-$K- +-$L+ +-$M- +-$N+ +-$O+ +-$P+ +-$Q- +-$R- +-$S- +-$T- +-$U- +-$V+ +-$W- +-$X+ +-$YD +-$Z1 +-GD +-cg +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +-H+ +-W+ +-M +-$M16384,1048576 +-K$00400000 +-N".\" +-LE"..\..\Output\Cliente" +-LN"..\Lib" +-U"..\Lib" +-O"..\Lib" +-I"..\Lib" +-R"..\Lib" +-Z +-w-UNSAFE_TYPE +-w-UNSAFE_CODE +-w-UNSAFE_CAST diff --git a/2.1.0/Source/Usuarios/Usuarios.dof b/2.1.0/Source/Usuarios/Usuarios.dof new file mode 100644 index 0000000..908913c --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.dof @@ -0,0 +1,471 @@ +[FileVersion] +Version=7.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +NamespacePrefix= +SymbolDeprecated=1 +SymbolLibrary=1 +SymbolPlatform=1 +UnitLibrary=1 +UnitPlatform=1 +UnitDeprecated=1 +HResultCompat=1 +HidingMember=1 +HiddenVirtual=1 +Garbage=1 +BoundsError=1 +ZeroNilCompat=1 +StringConstTruncated=1 +ForLoopVarVarPar=1 +TypedConstVarPar=1 +AsgToTypedConst=1 +CaseLabelRange=1 +ForVariable=1 +ConstructingAbstract=1 +ComparisonFalse=1 +ComparisonTrue=1 +ComparingSignedUnsigned=1 +CombiningSignedUnsigned=1 +UnsupportedConstruct=1 +FileOpen=1 +FileOpenUnitSrc=1 +BadGlobalSymbol=1 +DuplicateConstructorDestructor=1 +InvalidDirective=1 +PackageNoLink=1 +PackageThreadVar=1 +ImplicitImport=1 +HPPEMITIgnored=1 +NoRetVal=1 +UseBeforeDef=1 +ForLoopVarUndef=1 +UnitNameMismatch=1 +NoCFGFileFound=1 +MessageDirective=1 +ImplicitVariants=1 +UnicodeToLocale=1 +LocaleToUnicode=1 +ImagebaseMultiple=1 +SuspiciousTypecast=1 +PrivatePropAccessor=1 +UnsafeType=0 +UnsafeCode=0 +UnsafeCast=0 +[Linker] +MapFile=3 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Pedidos a proveedor +[Directories] +OutputDir= +UnitOutputDir=.\ +PackageDLLOutputDir=..\..\Output\Cliente +PackageDCPOutputDir=..\Lib +SearchPath=..\Lib +Packages=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 +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang= +RootDir=C:\Archivos de programa\Borland\Delphi7\Bin\ +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=3082 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.3.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= +[Excluded Packages] +c:\archivos de programa\borland\delphi7\Bin\designdgm70.bpl=Borland Module Diagram Editview +T:\BPL_D7\dxPSCoreD7.bpl=ExpressPrinting System by Developer Express Inc. +[HistoryLists\hlUnitAliases] +Count=1 +Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[HistoryLists\hlSearchPath] +Count=1 +Item0=..\Lib +[HistoryLists\hlUnitOutputDirectory] +Count=1 +Item0=.\ +[HistoryLists\hlBPLOutput] +Count=1 +Item0=..\..\Output\Cliente +[HistoryLists\hlDCPOutput] +Count=1 +Item0=..\Lib +[Exception Log] +EurekaLog Version=519 +Activate=1 +Activate Handle=1 +Save Log File=1 +Foreground Tab=0 +Freeze Activate=0 +Freeze Timeout=60 +Freeze Message=The application seems to be frozen. +SMTP From=eurekalog@email.com +SMTP Host= +SMTP Port=25 +SMTP UserID= +SMTP Password= +Append to Log=0 +Show TerminateBtn=1 +TerminateBtn Operation=1 +Errors Number=32 +Errors Terminate=3 +Email Address= +Email Object= +Email Send Options=0 +Output Path= +Encrypt Password= +AutoCloseDialogSecs=0 +WebSendMode=0 +SupportULR= +HTMLLayout Count=15 +HTMLLine0="%3Chtml%3E" +HTMLLine1=" %3Chead%3E" +HTMLLine2=" %3C/head%3E" +HTMLLine3=" %3Cbody TopMargin=10 LeftMargin=10%3E" +HTMLLine4=" %3Ctable width="100%%" border="0"%3E" +HTMLLine5=" %3Ctr%3E" +HTMLLine6=" %3Ctd nowrap%3E" +HTMLLine7=" %3Cfont face="Lucida Console, Courier" size="2"%3E" +HTMLLine8=" %3C%%HTML_TAG%%%3E" +HTMLLine9=" %3C/font%3E" +HTMLLine10=" %3C/td%3E" +HTMLLine11=" %3C/tr%3E" +HTMLLine12=" %3C/table%3E" +HTMLLine13=" %3C/body%3E" +HTMLLine14="%3C/html%3E" +AutoCrashOperation=1 +AutoCrashNumber=10 +AutoCrashMinutes=1 +WebURL= +WebUserID= +WebPassword= +WebPort=0 +AttachedFiles= +Count=0 +EMail Message Line Count=0 +loNoDuplicateErrors=0 +loAppendReproduceText=0 +loDeleteLogAtVersionChange=0 +loAddComputerNameInLogFileName=0 +loSaveModulesSection=1 +loSaveCPUSection=1 +soAppStartDate=1 +soAppName=1 +soAppVersionNumber=1 +soAppParameters=1 +soAppCompilationDate=1 +soExcDate=1 +soExcAddress=1 +soExcModule=1 +soExcType=1 +soExcMessage=1 +soActCtlsFormClass=1 +soActCtlsFormText=1 +soActCtlsControlClass=1 +soActCtlsControlText=1 +soCmpName=1 +soCmpUser=1 +soCmpTotalMemory=1 +soCmpFreeMemory=1 +soCmpTotalDisk=1 +soCmpFreeDisk=1 +soCmpSysUpTime=1 +soCmpProcessor=1 +soCmpDisplayMode=1 +soOSType=1 +soOSBuildN=1 +soOSUpdate=1 +soOSLanguage=1 +soNetIP=1 +soNetSubmask=1 +soNetGateway=1 +soNetDNS1=1 +soNetDNS2=1 +soNetDHCP=1 +sndShowSendDialog=1 +sndShowSuccessFailureMsg=0 +sndSendEntireLog=0 +sndSendXMLLogCopy=0 +sndSendScreenshot=1 +sndUseOnlyActiveWindow=0 +sndSendLastHTMLPage=1 +sndSendInSeparatedThread=0 +sndAddDateInFileName=0 +sndCompressAllFiles=0 +edoShowExceptionDialog=1 +edoSendEmailChecked=1 +edoAttachScreenshotChecked=1 +edoShowCopyToClipOption=1 +edoShowDetailsButton=1 +edoShowInDetailedMode=0 +edoShowInTopMostMode=0 +edoUseEurekaLogLookAndFeel=0 +csoShowDLLs=1 +csoShowBPLs=1 +csoShowBorlandThreads=1 +csoShowWindowsThreads=1 +csoShowProcedureOffset=0 +boActivateCrashDetection=0 +boPauseBorlandThreads=0 +boDoNotPauseMainThread=0 +boPauseWindowsThreads=0 +boUseMainModuleOptions=1 +boCopyLogInCaseOfError=1 +boSaveCompressedCopyInCaseOfError=0 +Count mtInformationMsgCaption=1 +mtInformationMsgCaption0="Information." +Count mtQuestionMsgCaption=1 +mtQuestionMsgCaption0="Question." +Count mtDialog_Caption=1 +mtDialog_Caption0="Error." +Count mtDialog_ErrorMsgCaption=2 +mtDialog_ErrorMsgCaption0="An error has occurred during program execution." +mtDialog_ErrorMsgCaption1="Please read the following information for further details." +Count mtDialog_GeneralCaption=1 +mtDialog_GeneralCaption0="General" +Count mtDialog_GeneralHeader=1 +mtDialog_GeneralHeader0="General Information" +Count mtDialog_CallStackCaption=1 +mtDialog_CallStackCaption0="Call Stack" +Count mtDialog_CallStackHeader=1 +mtDialog_CallStackHeader0="Call Stack Information" +Count mtDialog_ModulesCaption=1 +mtDialog_ModulesCaption0="Modules" +Count mtDialog_ModulesHeader=1 +mtDialog_ModulesHeader0="Modules Information" +Count mtDialog_CPUCaption=1 +mtDialog_CPUCaption0="CPU" +Count mtDialog_CPUHeader=1 +mtDialog_CPUHeader0="CPU Information" +Count mtDialog_CustomDataCaption=1 +mtDialog_CustomDataCaption0="Other" +Count mtDialog_CustomDataHeader=1 +mtDialog_CustomDataHeader0="Other Information" +Count mtDialog_OKButtonCaption=1 +mtDialog_OKButtonCaption0="%26OK" +Count mtDialog_TerminateButtonCaption=1 +mtDialog_TerminateButtonCaption0="%26Terminate" +Count mtDialog_RestartButtonCaption=1 +mtDialog_RestartButtonCaption0="%26Restart" +Count mtDialog_DetailsButtonCaption=1 +mtDialog_DetailsButtonCaption0="%26Details" +Count mtDialog_SendMessage=1 +mtDialog_SendMessage0="%26Send this error via Internet" +Count mtDialog_ScreenshotMessage=1 +mtDialog_ScreenshotMessage0="%26Attach a Screenshot image" +Count mtDialog_CopyMessage=1 +mtDialog_CopyMessage0="%26Copy to Clipboard" +Count mtDialog_SupportMessage=1 +mtDialog_SupportMessage0="Go to the Support Page" +Count mtLog_AppHeader=1 +mtLog_AppHeader0="Application" +Count mtLog_AppStartDate=1 +mtLog_AppStartDate0="Start Date" +Count mtLog_AppName=1 +mtLog_AppName0="Name/Description" +Count mtLog_AppVersionNumber=1 +mtLog_AppVersionNumber0="Version Number" +Count mtLog_AppParameters=1 +mtLog_AppParameters0="Parameters" +Count mtLog_AppCompilationDate=1 +mtLog_AppCompilationDate0="Compilation Date" +Count mtLog_ExcHeader=1 +mtLog_ExcHeader0="Exception" +Count mtLog_ExcDate=1 +mtLog_ExcDate0="Date" +Count mtLog_ExcAddress=1 +mtLog_ExcAddress0="Address" +Count mtLog_ExcModule=1 +mtLog_ExcModule0="Module" +Count mtLog_ExcType=1 +mtLog_ExcType0="Type" +Count mtLog_ExcMessage=1 +mtLog_ExcMessage0="Message" +Count mtLog_ActCtrlsHeader=1 +mtLog_ActCtrlsHeader0="Active Controls" +Count mtLog_ActCtrlsFormClass=1 +mtLog_ActCtrlsFormClass0="Form Class" +Count mtLog_ActCtrlsFormText=1 +mtLog_ActCtrlsFormText0="Form Text" +Count mtLog_ActCtrlsControlClass=1 +mtLog_ActCtrlsControlClass0="Control Class" +Count mtLog_ActCtrlsControlText=1 +mtLog_ActCtrlsControlText0="Control Text" +Count mtLog_CmpHeader=1 +mtLog_CmpHeader0="Computer" +Count mtLog_CmpName=1 +mtLog_CmpName0="Name" +Count mtLog_CmpUser=1 +mtLog_CmpUser0="User" +Count mtLog_CmpTotalMemory=1 +mtLog_CmpTotalMemory0="Total Memory" +Count mtLog_CmpFreeMemory=1 +mtLog_CmpFreeMemory0="Free Memory" +Count mtLog_CmpTotalDisk=1 +mtLog_CmpTotalDisk0="Total Disk" +Count mtLog_CmpFreeDisk=1 +mtLog_CmpFreeDisk0="Free Disk" +Count mtLog_CmpSystemUpTime=1 +mtLog_CmpSystemUpTime0="System Up Time" +Count mtLog_CmpProcessor=1 +mtLog_CmpProcessor0="Processor" +Count mtLog_CmpDisplayMode=1 +mtLog_CmpDisplayMode0="Display Mode" +Count mtLog_OSHeader=1 +mtLog_OSHeader0="Operating System" +Count mtLog_OSType=1 +mtLog_OSType0="Type" +Count mtLog_OSBuildN=1 +mtLog_OSBuildN0="Build #" +Count mtLog_OSUpdate=1 +mtLog_OSUpdate0="Update" +Count mtLog_OSLanguage=1 +mtLog_OSLanguage0="Language" +Count mtLog_NetHeader=1 +mtLog_NetHeader0="Network" +Count mtLog_NetIP=1 +mtLog_NetIP0="IP Address" +Count mtLog_NetSubmask=1 +mtLog_NetSubmask0="Submask" +Count mtLog_NetGateway=1 +mtLog_NetGateway0="Gateway" +Count mtLog_NetDNS1=1 +mtLog_NetDNS10="DNS 1" +Count mtLog_NetDNS2=1 +mtLog_NetDNS20="DNS 2" +Count mtLog_NetDHCP=1 +mtLog_NetDHCP0="DHCP" +Count mtLog_CustInfoHeader=1 +mtLog_CustInfoHeader0="Custom Information" +Count mtCallStack_Address=1 +mtCallStack_Address0="Address" +Count mtCallStack_Name=1 +mtCallStack_Name0="Module" +Count mtCallStack_Unit=1 +mtCallStack_Unit0="Unit" +Count mtCallStack_Class=1 +mtCallStack_Class0="Class" +Count mtCallStack_Procedure=1 +mtCallStack_Procedure0="Procedure/Method" +Count mtCallStack_Line=1 +mtCallStack_Line0="Line" +Count mtCallStack_MainThread=1 +mtCallStack_MainThread0="Main" +Count mtCallStack_ExceptionThread=1 +mtCallStack_ExceptionThread0="Exception Thread" +Count mtCallStack_RunningThread=1 +mtCallStack_RunningThread0="Running Thread" +Count mtCallStack_CallingThread=1 +mtCallStack_CallingThread0="Calling Thread" +Count mtCallStack_ThreadID=1 +mtCallStack_ThreadID0="ID" +Count mtCallStack_ThreadPriority=1 +mtCallStack_ThreadPriority0="Priority" +Count mtCallStack_ThreadClass=1 +mtCallStack_ThreadClass0="Class" +Count mtSendDialog_Caption=1 +mtSendDialog_Caption0="Send." +Count mtSendDialog_Message=1 +mtSendDialog_Message0="Message" +Count mtSendDialog_Resolving=1 +mtSendDialog_Resolving0="Resolving DNS..." +Count mtSendDialog_Connecting=1 +mtSendDialog_Connecting0="Connecting with server..." +Count mtSendDialog_Connected=1 +mtSendDialog_Connected0="Connected with server." +Count mtSendDialog_Sending=1 +mtSendDialog_Sending0="Sending message..." +Count mtReproduceDialog_Caption=1 +mtReproduceDialog_Caption0="Request" +Count mtReproduceDialog_Request=1 +mtReproduceDialog_Request0="Please describe the steps to reproduce the error:" +Count mtReproduceDialog_OKButtonCaption=1 +mtReproduceDialog_OKButtonCaption0="%26OK" +Count mtModules_Handle=1 +mtModules_Handle0="Handle" +Count mtModules_Name=1 +mtModules_Name0="Name" +Count mtModules_Description=1 +mtModules_Description0="Description" +Count mtModules_Version=1 +mtModules_Version0="Version" +Count mtModules_Size=1 +mtModules_Size0="Size" +Count mtModules_LastModified=1 +mtModules_LastModified0="Modified" +Count mtModules_Path=1 +mtModules_Path0="Path" +Count mtCPU_Registers=1 +mtCPU_Registers0="Registers" +Count mtCPU_Stack=1 +mtCPU_Stack0="Stack" +Count mtCPU_MemoryDump=1 +mtCPU_MemoryDump0="Memory Dump" +Count mtSend_SuccessMsg=1 +mtSend_SuccessMsg0="The message was sent successfully." +Count mtSend_FailureMsg=1 +mtSend_FailureMsg0="Sorry, sending the message didn't work." + + diff --git a/2.1.0/Source/Usuarios/Usuarios.dpk b/2.1.0/Source/Usuarios/Usuarios.dpk new file mode 100644 index 0000000..5c2b1a0 --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.dpk @@ -0,0 +1,51 @@ +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 ON} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Pedidos a proveedor'} +{$IMPLICITBUILD ON} +{$DEFINE DEBUG} + +requires + vcl, + vcldb, + PngComponentsD10, + PNG_D10, + vclactnband, + vclx, + vcljpg, + BaseD10, + rtl, + dbrtl, + dsnap, + adortl, + JvMMD10R; + +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/2.1.0/Source/Usuarios/Usuarios.dproj b/2.1.0/Source/Usuarios/Usuarios.dproj new file mode 100644 index 0000000..f3db28a --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.dproj @@ -0,0 +1,591 @@ + + + {c2514fab-bd64-47eb-ac2d-4b0b5460f98f} + Usuarios.dpk + Debug + AnyCPU + DCC32 + ..\..\Output\Debug\Cliente\Usuarios.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\Output\Debug\Cliente + ..\Lib + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + ..\Lib;..\Base + DEBUG + True + + + Delphi.Personality + Package + +FalseTrueFalsePedidos a proveedorTrueFalseFalseC:\Archivos de programa\Borland\Delphi7\Bin\TrueFalse1030FalseFalseFalseFalseFalse308212521.0.3.01.0.0.0Usuarios.dpk + 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 + + + + + + MainSource + + + + + + + + + + + + + + + +
fCambiarPassword
+
+ +
dmUsuarios
+
+ +
fLoginForm
+
+ +
fUsuario
+
+ +
fUsuarios
+
+
+
+ diff --git a/2.1.0/Source/Usuarios/Usuarios.drc b/2.1.0/Source/Usuarios/Usuarios.drc new file mode 100644 index 0000000..9b6eb83 --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.drc @@ -0,0 +1,21 @@ +/* VER185 + Generated by the CodeGear 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 + +/* C:\Varela_D2007\Source\Usuarios\uLoginForm.dfm */ +/* C:\Varela_D2007\Source\Usuarios\uCambiarPassword.dfm */ +/* C:\Varela_D2007\Source\Usuarios\uDataModuleUsuarios.dfm */ +/* C:\Varela_D2007\Source\Usuarios\uUsuarios.dfm */ +/* C:\Varela_D2007\Source\Usuarios\uUsuario.dfm */ +/* C:\Varela_D2007\Source\Usuarios\Usuarios.res */ +/* C:\DOCUME~1\Usuario\CONFIG~1\Temp\dtf10.tmp */ diff --git a/2.1.0/Source/Usuarios/Usuarios.identcache b/2.1.0/Source/Usuarios/Usuarios.identcache new file mode 100644 index 0000000..d414da5 Binary files /dev/null and b/2.1.0/Source/Usuarios/Usuarios.identcache differ diff --git a/2.1.0/Source/Usuarios/Usuarios.rc b/2.1.0/Source/Usuarios/Usuarios.rc new file mode 100644 index 0000000..169f997 --- /dev/null +++ b/2.1.0/Source/Usuarios/Usuarios.rc @@ -0,0 +1,22 @@ +1 VERSIONINFO +FILEVERSION 1,0,3,0 +PRODUCTVERSION 1,0,3,0 +FILEFLAGSMASK 0x3FL +FILEFLAGS 0x00L +FILEOS 0x40004L +FILETYPE 0x1L +FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0A04E4" + BEGIN + VALUE "FileVersion", "1.0.3.0\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0C0A, 1252 + END +END diff --git a/2.1.0/Source/Usuarios/Usuarios.res b/2.1.0/Source/Usuarios/Usuarios.res new file mode 100644 index 0000000..784f75e Binary files /dev/null and b/2.1.0/Source/Usuarios/Usuarios.res differ diff --git a/2.1.0/Source/Usuarios/uCambiarPassword.dfm b/2.1.0/Source/Usuarios/uCambiarPassword.dfm new file mode 100644 index 0000000..9169827 --- /dev/null +++ b/2.1.0/Source/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/2.1.0/Source/Usuarios/uCambiarPassword.pas b/2.1.0/Source/Usuarios/uCambiarPassword.pas new file mode 100644 index 0000000..03a158b --- /dev/null +++ b/2.1.0/Source/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 contraseña en los dos campos') + else + ModalResult := mrOK; +end; + +end. diff --git a/2.1.0/Source/Usuarios/uDataModuleUsuarios.ddp b/2.1.0/Source/Usuarios/uDataModuleUsuarios.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Usuarios/uDataModuleUsuarios.ddp differ diff --git a/2.1.0/Source/Usuarios/uDataModuleUsuarios.dfm b/2.1.0/Source/Usuarios/uDataModuleUsuarios.dfm new file mode 100644 index 0000000..5c031b4 --- /dev/null +++ b/2.1.0/Source/Usuarios/uDataModuleUsuarios.dfm @@ -0,0 +1,132 @@ +object dmUsuarios: TdmUsuarios + OldCreateOrder = True + OnCreate = DAClientDataModuleCreate + Height = 340 + Width = 423 + object ROLoginService: TRORemoteService + Message = dmBase.ROMessage + Channel = dmBase.ROChannel + ServiceName = 'srvLogin' + Left = 56 + Top = 40 + end + object tbl_Usuarios: TDACDSDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datString + Size = 8 + BlobType = dabtUnknown + DisplayWidth = 0 + Alignment = taLeftJustify + InPrimaryKey = True + Calculated = False + ServerCalculated = False + Lookup = False + LookupCache = False + end> + Params = <> + MasterMappingMode = mmDataRequest + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = DARemoteDataAdapter + ReadOnly = False + DetailOptions = [dtCascadeOpenClose, dtCascadeApplyUpdates, dtAutoFetch, dtCascadeDelete, dtCascadeUpdate, dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates, dtIncludeInAllInOneFetch] + MasterOptions = [moCascadeOpenClose, moCascadeApplyUpdates, moCascadeDelete, moCascadeUpdate, moDisableLogOfCascadeDeletes, moDisableLogOfCascadeUpdates] + LogicalName = 'Usuarios' + IndexDefs = <> + Left = 176 + Top = 40 + end + object ds_Usuarios: TDADataSource + DataSet = tbl_Usuarios.Dataset + DataTable = tbl_Usuarios + Left = 280 + Top = 40 + end + object DARemoteDataAdapter: TDARemoteDataAdapter + GetSchemaCall.RemoteService = ROLoginService + GetSchemaCall.MethodName = 'GetSchemaAsXML' + GetSchemaCall.Params = < + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetSchemaCall.Default = False + GetSchemaCall.IncomingSchemaParameter = 'Result' + GetSchemaCall.OutgoingFilterParameter = 'aFilter' + GetDataCall.RemoteService = ROLoginService + GetDataCall.MethodName = 'GetDatasetData' + GetDataCall.Params = < + item + Name = 'DatasetName' + DataType = rtString + Flag = fIn + end + item + Name = 'Params' + DataType = rtString + Flag = fIn + end + item + Name = 'IncludeSchema' + DataType = rtBoolean + Flag = fIn + end + item + Name = 'MaxRecords' + DataType = rtInteger + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + GetDataCall.Default = False + GetDataCall.OutgoingTableNamesParameter = 'DatasetName' + GetDataCall.OutgoingTableRequestInfosParameter = 'aTableRequestInfoArray' + GetDataCall.IncomingDataParameter = 'Result' + GetDataCall.OutgoingParamsParameter = 'Params' + GetDataCall.OutgoingIncludeSchemaParameter = 'IncludeSchema' + GetDataCall.OutgoingMaxRecordsParameter = 'MaxRecords' + UpdateDataCall.RemoteService = ROLoginService + UpdateDataCall.MethodName = 'UpdateData' + UpdateDataCall.Params = < + item + Name = 'Delta' + DataType = rtBinary + Flag = fIn + end + item + Name = 'Result' + DataType = rtBinary + Flag = fResult + end> + UpdateDataCall.Default = False + UpdateDataCall.OutgoingDeltaParameter = 'Delta' + UpdateDataCall.IncomingDeltaParameter = 'Result' + GetScriptsCall.RemoteService = ROLoginService + GetScriptsCall.MethodName = 'GetDatasetScripts' + GetScriptsCall.Params = < + item + Name = 'DatasetNames' + DataType = rtString + Flag = fIn + end + item + Name = 'Result' + DataType = rtString + Flag = fResult + end> + GetScriptsCall.Default = False + GetScriptsCall.OutgoingTableNamesParameter = 'DatasetNames' + GetScriptsCall.IncomingScriptParameter = 'Result' + RemoteService = ROLoginService + DataStreamer = dmBase.DABINAdapter + FailureBehavior = fbBoth + Left = 56 + Top = 104 + end +end diff --git a/2.1.0/Source/Usuarios/uDataModuleUsuarios.pas b/2.1.0/Source/Usuarios/uDataModuleUsuarios.pas new file mode 100644 index 0000000..57e1667 --- /dev/null +++ b/2.1.0/Source/Usuarios/uDataModuleUsuarios.pas @@ -0,0 +1,117 @@ +unit uDataModuleUsuarios; + +interface + +uses {vcl:} SysUtils, Classes, DB, DBClient, + {RemObjects:} uDAClientDataModule, uDADataTable, uDABINAdapter, + uROServiceComponent, uRORemoteService, uROClient, uROBinMessage, + uROWinInetHttpChannel, uDAScriptingProvider, uDACDSDataTable, + VARELA_Intf, uDARemoteDataAdapter, uDAInterfaces; + +const + ROL_ADMIN = 'Administrador'; + +type + TdmUsuarios = class(TDAClientDataModule) + ROLoginService: TRORemoteService; + tbl_Usuarios: TDACDSDataTable; + ds_Usuarios: TDADataSource; + DARemoteDataAdapter: TDARemoteDataAdapter; + procedure DAClientDataModuleCreate(Sender: TObject); + procedure DAClientDataModuleDestroy(Sender: TObject); + private + FLoginInfo: TLoginInfo; + function CambiarPassword (const APassword : String) : boolean; overload; + + public + function Login: Boolean; overload; + function Login(Usuario: String; Password: String): Boolean; overload; + procedure Logout; + procedure CambiarPassword; overload; + function EsAdmin : Boolean; + property LoginInfo: TLoginInfo read FLoginInfo write FLoginInfo; + end; + +var + dmUsuarios: TdmUsuarios; + +implementation + +{$R *.DFM} + +uses + Forms, Controls, uDataTableUtils, uDataModuleBase, uLoginForm, + uCambiarPassword, Dialogs, Windows; + +{ TDAClientDataModule1 } + +procedure TdmUsuarios.DAClientDataModuleCreate(Sender: TObject); +begin + ROLoginService.Channel := dmBase.Channel; + ROLoginService.Message := dmBase.Message; + + // *********************** PENDIENTE ADAPTAR + // Adapter := dmBase.Adapter; +end; + +function TdmUsuarios.Login: Boolean; +begin + with TfLoginForm.Create(NIL) do + try + if Assigned(FLoginInfo) then + edtUser.Text := FLoginInfo.UserID; + Result := (ShowModal = mrOK) + finally + Free; + end; +end; + +function TdmUsuarios.Login(Usuario: String; Password: String): Boolean; +begin + Result := (ROLoginService as IsrvLogin).Login(Usuario, Password, FLoginInfo); +end; + +procedure TdmUsuarios.Logout; +begin + (ROLoginService as IsrvLogin).Logout; +end; + +procedure TdmUsuarios.DAClientDataModuleDestroy(Sender: TObject); +begin + FreeAndNIL(FLoginInfo); +end; + +function TdmUsuarios.EsAdmin: Boolean; +begin + Result := False; + if LoginInfo.Roles.Count > 0 then + Result := (Pos(ROL_ADMIN, LoginInfo.Roles.Items[0]) > 0); +end; + +procedure TdmUsuarios.CambiarPassword; +begin + with TfCambiarPassword.Create(NIL) do + try + if ShowModal = mrOk then + if CambiarPassword(edtPassword.Text) then + Application.MessageBox('La contraseña ha sido cambiada correctamente.', 'Información', MB_OK); + finally + Free; + end; +end; + +function TdmUsuarios.CambiarPassword(const APassword: String): boolean; +begin + Result := False; + if not (ROLoginService as IsrvLogin).SetUserPassword(LoginInfo.UserID, APassword) then + raise Exception.Create('Error en el servidor. No se ha podido cambiar la contraseña'); + Result := True; +end; + +initialization + dmUsuarios := TdmUsuarios.Create(nil); + +finalization + FreeAndNil(dmUsuarios); + +end. diff --git a/2.1.0/Source/Usuarios/uLoginForm.ddp b/2.1.0/Source/Usuarios/uLoginForm.ddp new file mode 100644 index 0000000..4370276 Binary files /dev/null and b/2.1.0/Source/Usuarios/uLoginForm.ddp differ diff --git a/2.1.0/Source/Usuarios/uLoginForm.dfm b/2.1.0/Source/Usuarios/uLoginForm.dfm new file mode 100644 index 0000000..049b239 --- /dev/null +++ b/2.1.0/Source/Usuarios/uLoginForm.dfm @@ -0,0 +1,784 @@ +object fLoginForm: TfLoginForm + Left = 790 + Top = 387 + ActiveControl = edtUser + BorderStyle = bsDialog + Caption = 'Administraci'#243'n de puntos de venta' + 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 + Picture.Data = { + 0B544A76474946496D616765E84E0000474946383961C201FA00F70000FFFFFF + BD810BE3CEAFE8E8E8B59167AE6606D2D1D1C4930FD3AB37C59410C28D0ECA96 + 34B26C088D4205D6AE6AB48658D6AD51CCC3B7C0880CB97C0BBAA78FCDA616E2 + C670A55405E6D08BB9790A904205C69550A14C03C6BBAAB47109AD7A4B8A4207 + A95E06F8F3EAB16B07E7D6C4C89A12BE820CDADADBD5D5D5C28E10CEC9C29443 + 04BE840CCBA014B77609B06908964203B57209AD6406B26E08A04903BF830BF1 + E8DAB7761AC69811C99D13B8770AC99F14A85B05A75A17D1CEC89C4504AB6007 + B7780AA96327A35105A35003F3F3F2964303AC6608A45204A24D04F2ECE4C18A + 0CECE2D4984403BD8735AE6707A65805B6750A9842038641089B4403C28A0EB6 + 7508FCF9F4D9BA9EB6730AC5A8869D48039A561CE0C59AA66A33B87924B06C08 + C69A70F2E8C7BC7E0B874107B574099C4402AC6206EEDFB7AD6419B77E3FDAB9 + 88AF6807D3D0CDC0B29E9D6430995C26CBA215FAF6F0EDDFC9904203D1A984C1 + AE939A4C0CFDFCFAB5720AFAF9F8954E13CCA51AD5D4D2AD640FA67040994304 + B16E1CCBA415C4900FB36F09934A0CD3D2D2BE82178C4509FEFEFDAA5D0FCA9E + 1BC0860CF7F0DBB99C788D4911A4510AC79610A35E22C18B0CAF6B28924304FC + FAF8B7760BAC6307AE6406944403C08A0E914609FFFEFEDCBC54934403C0870F + B77208DDBB66B46D05B36503A85503D6D6D7FCFBFBCFA824CEA819D9D8D7C48A + 22BD7E1B8B4105D2D2D3CEAA17A54D01E0C383D7D6D5B97A0EFEFDFCB27138AB + 5E05D0D0D0A55002C79516FEFEFEA04602DDDDDEA04A03D7D7D8B5720CD4D3D3 + FFFFFEBA7E0BB5740ABA7306AF64098E470CB0690DCECDCDA04E0BC89B16B16F + 09AF702D9B5012A55604BDA281B57609BD7F0FB46F0D8F4506CA95229B4201B6 + 7008C69117984708954806F7F7F6D4D4D5EEEEEDA34A01C38E0FC4B18FB7740F + B36F12B4700BB5760AA95909B36F0EA24E02B06505E2E2E3A8580FB36D09D0AE + 92B7710AC49212C38C19CF9E26B46A0EBF890DA35403CFCFD1BB7912D9D9D98A + 4306B57207EAD8A0C3871292511AA25214AA5805AA5C03AC5903AF60042C0000 + 0000C201FA000008FF005355182890E0C00A05111E4CC870E1C2571021128CD8 + 90202A0B6844D002C0B1A3C78F20438A1C49B2A4C9932853AA5CC9B2A5CB9730 + 63CA9C49B326498502732AACC047A74F9C3B05FDF42988E7509CA95E79C227E6 + 8ACDA750A34A9D4AB5AAD5AB5867F2292A686B85AE5C0571F50AF62BD9AD62CF + 8E15CBD6EC5AB3A83C611491B5AEDDBB78F3EADDCB17001F9E80FF0A161BB8B0 + E0C05E0F2BFE4A78B162547131D0ED4BB9B2E5CB9833433DC8B9B3E7CFA0438B + EEFCF71506319A53AB5ECDBA35DED1B063CB0E8DC04223D7B873EBDECD3BE4EC + DFC047A7F2842651B0DEC8932B5F6E7720E1CE4565473F385DF4F4EB5F072A45 + 73050FF3EFE0C38BFF5729288E79C64517C559849E6D58AEE6CB9B8FB38370DB + B63BE214CD0F3F7E1C3E4B8970C571E31568E081CAE9A71F575FC5D1427C4529 + 58411CD945E81F1FF33146E17DE76568218571A082C069726C84E08928A698D9 + 7CF3C9A7A07F2CC2C8E283EAC5C8A28B2DE467638B7120B09418DEA928E49044 + 62F59E7BED71B861791332B9645B204ED8607C49BAD79527A73955E4965C7609 + 9395EE2D68E58B0BD25726846CED28C8830A8269655CF84CE6E59C74D6F9D18E + 78E6A9E79E2DF4B9A7797C40804F2389D869E8A15BF6A9E8A28CFAD9E8A39046 + DAE70E90CED7426D4D158AE8A69C1A28E9A39446BAC3A8A0925AAAA98A5A5A1B + 779A76EAEAABC929FF3A6A0E39EE406B0EA6927AABAEB58E3A6B0BB8FA2AACAD + C00E4B29ADB9C20924ACCC368B9BB1BF1EDB2BA9B3425BEDB5BEE28A6CB1C3F6 + 5AEB3B72892187B3E4968B99AEC3EE8A2CBAD8AE1B6CB6F06ACBADB0F3E6606F + 1CE00E8A47ABE6F6EB6F56CAE45002B1F6DA5B82BD3B1C1CF0C1BB06AC8CAD05 + 0F1C70C1C56A6B2BC1C0029BC3C402CF3A221A25FE2BF2C853096CB2C0252873 + 30C32697E0B2C12B0BACF2CB289F0CF3C431172C33CD05C3D9081E04922CF4D0 + 2FE96CB0CD46B78CB4D2391BDD74D247B36CEF229EC4F273D04467AD75492FBB + EC320E2EABBCF3CC607F2D76D961A78C43C168978DF2CA5D7BDDB632AB5EC1EF + D678E70D40CA5ECFFFCC37D37EFBFDB6D870171E78DF2B1F9EB6CB3EEAABF7E3 + 789700F6E4924BAE72E0944FAE0C0E9B57AE76E799571EFAC1A187BE08A68442 + AEFAD05EB7EEFAEBB0C72EFBECB4BFFC8E2818D8A0E5EABCFB5BFBEFC0075FFB + 22EF60346EEFC8972BFCF2CC07AFCCE918DC96FCF4CC366FFDF5B1A3220A6AD4 + 77DFE9EB93E310090E68BB3C7EEB608F5F7E09E74B2EBEDCF0932FBFE8F24722 + 7A09547317A4F7FCD72977020970DFF812403EF405D0650988040109D8BE48E4 + 8280604B60F820584006BA2F82E2AB1FF9E846A2FE79704EEAC3010571F04005 + 6A3081EA53E00345C842074A907C2624DF08E547C11026608503249FCFEEF6C1 + 1EA62801ED002010FF8598400006D1880A8CC4119308C003105181404CE21187 + 684421B6438A006462249C98C05CDCAE293E0CA38A6EB8C01516F18166442319 + 4BB840008A50856B24A308D358C638BE918C002C612E96723C31FAD1404C24A2 + 200749C82C16F1899180220A034948461632010BC89D89FE4849F034F2919844 + E12013A9484D663291994C80F632C2C34A9A72379B3C642857C9CA560E921A08 + 10C51C7677CA5AEA46958674A5100F30C55DF6B295EDE02226490801C9D8F298 + B9D9E50184B9CC6512B199CBEC6433A138882D423389CB1CC433A7A94D683A33 + 8BCE54E00116100B3158026BC84C276694C9CC66266010C1F4E60122A1CD045C + 739EF22C6234B739FF4D790AD39EF34CE001F2F533751A143307D066379BA950 + 7F3A549E0D756844A1F9CE8A66B3A21375622E6209B2521EF4A376E1E620DC59 + CD4198F4A423CDA649B3A9D293D2D39F2B65284A4DFA4E9A5653A60C4D00358A + D9085A82F4A77599A950871A53A20E159A46256A4D156A4FA2B6831A4B69C424 + 814A55AB78E3AA58CDAA564F7A55AE6AF5AB5D152A58C17A546FA034ABEDF898 + 4FABCA56A8A4E0AD0A88EB5B532057BA2A00AB71C56B5C1530D7BDFA15AC7E0D + 6C60BB8AD541BC35AB7C85EB3B1C10A7B63A362A7DADAB5DE1CA57BF4656B282 + 4D6C0AAE4AD9CC06F6B09C9D6B64FBBAD172DAEDB1A89DC9652DBB5ACF6AD6B5 + 9AB52B6C593BD9CEFFBE36050B8040177497DADEBE24B0835040703D3B5CE0CE + 96B8C2DD6B708B7B5CCF5E630101F2AD745712D849CCD6BA82C56E73FDAA5DEE + 6E17B6B88DC51CF637DDF28E44BBD6AD827ABD915CF506D6BD7B55AF7AAD4B5F + 05D437BDF0B5AF7CAB60DF14ECF7BFF98D6B7DDDAB0C41A5CEBC08068902E4AB + 0009C897BE0CB66F5CDD0B60FE4EA20A1290707D1DBC5FFC32B80A9B78701526 + 018AFD4A58C0FA552F6E4541CA04BB982317562F87D5BB894DF897C621966F8D + 2B6C5D07DF57BF33B6B0892791821CD7F8C8FBCDF18825CCE06B20600D607C71 + 8231BC04094C221E55AE423C267161092C81CB5876F0961DEC653267B9CC5416 + F324CCCCE6345319FFCC93087199AF7CE63A93190102E8A394CBDB650C5B99CB + 4BF832A0035D672E1BFAD0184EF4A1C9CCE544FB58029066749F036DE844075A + D28826E7B2F6CC673263D8D097F632A19760E9439BDAD37F6EB48FD7ECE83543 + 5AD1AC16B5A1CD4CEA552F7AA759E2F4746BED6751877AD47506F6A81DDDEB60 + 6318148CA84295234D655E03DBD2C11E760ADE6160F2EAFAB191CEB6B6B30D8A + 6D7BFBDBE00EB7B8C71DE94D50C30173D0F3B51D4B6E486F0214DD6EB7BCE74D + EF6C23C0B4EB462DB819C1EF6D838205F10638A401CE086DF79BDB0497C0C1F9 + 5D706D233BDEDE3EB8C2FF0D7150B80302B1B041BEB11D0F09C483E10507450D + 18EEF19277FCE425FF17793EFADDF17FA3FCE5FC1E79CCBBFD729383DCE42C58 + 39BF5D6E720998DB0179B6F6C641CA0213181DE445AF81D26BC002A59B80E22C + 88FABFA3BEF49147DD04518F3A2300CE7546283DE635C03A0BB62E75809BA0EA + 64A77ACC8D8E75B66F1D140B584346D039F483567DE4780F3B28CEEEF4AF7BDD + 045EFF3ADE035FF5A7F3DDEB8447FCDDF59E77A78B1CED83CFFBD3F18E6B2608 + BDEEEA347AD8CF1EF8AB8B9DED4BA73AE4EF9EF5AC479EE945FF7BE94DEF74A3 + AF3EEB7FE77BD867AFF4432C80B14AF028E66D69827C9C5DF64CFF3DD57B1FFA + A6177FF1AF277DD47D1FF6D71BDFE9F9703EEA7B0F78EADF1D140860EC8177AF + CEA2BB1EF59EF7BEFFF3456F8200645DF3C167BBFAC5FEFAF58BBEF9ECF7BCD1 + CD5FFCF047DDF60EC808F70DBAFE1A987FFD01F07FDE777601E07A01A87E01E0 + 7FFE17800CC8800058740D58809A677EF2377F11A88058677E12C8768780005D + 7035FB874C00E88016D8806C978027B881D110800B18812498822E78829BB77E + E5D7800A1883087808BA65039717827FE4820CD882E5578309788030D8822C08 + 844648844A888417A88450D88287B00A10906753E5839404855AE88263B085C2 + B08560188662D880877008E8A66E58E84701F88563188163D0855B08876D1800 + 72488772F88575388774484EDC9186951400C210888008886F38886FF885C250 + 8888288888F8868EFF38068198888A68875D888876D888957889801889967888 + 86388978F888EE404E1AE7877F148813008991988A9C3801ABA88A89E88AAD38 + 06A9588B13508BB0488BB01888B4C889B9288BC2808B91D88BC3C88ABE588BD1 + 200C17D787A62846A8088CC19801A89801B7F88CB2788BD41888D4888DB7D88D + DCA88DD5188CDC888DC1B88AC03801DB688DD2088EE1188DDD488DD1B0015026 + 029DD08C3ED48DB4788BF9688BDEC88FFBF88FF8D88FFA1890032990005990FC + E88DFBA890043901D140855D1065F6E841DE288EDD288EDBF88E02A9911BC991 + 1B9901B3208DAE28921D898ED5388E1A99911B1992C2E0040EF081573891D4D3 + 8F16598E2AE99125FF999325998E17B991C2A09216A99302B98DB6270A022027 + 32D93D219901D4D894E8C8945009925109952169925069955879954EC9943A90 + 015D09925F599552199556E99562F9945B99954C3901B3E00471C78C49493D5D + F9955339973AA003B3609773B99451D9954130955079978069967B5998814998 + 3AF0975C99977D19957FF99819F097820992ACB0015D304B71493D5E19987729 + 9841D0997A299876C999A0499AA0599A73B999A93999A1D999AAF999931999A7 + 399B9D697B72B756990939B4099A41009B9DD99BBEF998BF199979B99BC6799C + B3099CBE7997BD299BBF199CBDB99BACB000BBD583B989372EE002C0999DDCD9 + 9BDCF99DDDE99DDAFF1904E0999DE4499EE5999EE3899EDFE99DE2999E56D09E + EFA903C4A09EE6E902876099E3759DAB639FFEF99F001AA002AA9EEC39A0E579 + 09D3997131C99F5A139FE0190551909E106AA0DF39A1DC69A1FF09A11A1A050E + FA9D56D0A11DBAA1171AA1EAA9A12E1005F4B00102A00496C0A07A63051BCAA1 + 1FAAA1200AA31EFAA1334AA338AAA3109AA33D5AA3DC89A3420AA31B1A9FF189 + A13A4AA4187AA23BFAA35140852BEAA279C30A2E6005A1F0A34AFAA1D939A337 + DAA4589AA544EAA3321AA4353AA44A8AA5274AA2692AA3675AA15E3AA397E004 + 61B0A2BA27A5FEE204AC400CE0900565500659F0A77FDAA7304A0C7C6A05C4C0 + A17E1AA87DBAA88CFF0AA87C9AA880BAA85140A882EAA896BAA8803A0CC3F0A1 + 967AA990FAA71FDAA88AFAA737B001F9A711764A348E80A73A100AF700A87990 + 073110031E10037F2AABB67A0FB31AABB83AAB8C5A06B69A05B11A039FFAA8C1 + 9A05B31A03BCDAA97DBAABBC9AACD0FAACC9FAA7CADAABD09A05BACAAB797003 + 0B204B6898AAFED201DFB0014E000EA1600D5620ACB8DAA7D24AACCE6AADBF1A + ACC35AACCDFA0BD43AABC310ABCC0AACD53AACD0FAAED78AACCAFAAFB31A0A56 + D0AFB25AAA507605F508AE22E3031DE000E4FA0B79A0AB1E70B1189BB11A9BB1 + 04FBAF18DBB1B45AABD0FAB11DABB123BBB1241BB2282BB2B3AAB10A2B2E75EA + B0AFD207103BAEABFFE0952ABBB23A0BB239CBB12D7BB1270BB4C03AB43DCBB2 + 45ABB32B9BAC1B3B0CACF092BC25B3FD620A28E0031130AE4E400CA170B448BB + B55B4B085CFBB5600BB6CBB0B1E0F00561B05BB809B5AFB20DF5200B7D10011D + B0AAE0000E1E600D84600D757BB71A8BB7176BB78470B780FBB778EBB779EBB5 + 7D9BB17F6BB82BEBB7899BB18C3BB87AEBB87A6BB77C7BB1893BB8184B084D0B + 936A4B2EAE800228D0076F6BB337200D60A00EA7AB0EAA9BB884B0BA7FABBA33 + 3003AAABBAA93BBBB53B03CB90B8EAF0B7B1EBBAACABBBEA10BBBDCBBABD3BBB + 33D0BABBFBBAB3BBBCC94B080CC0BC7FBB0C33500E2E799469DBB9886208DABB + 0D27A00A55BB010BFFC00AD6D0BBCBC0BCE60BBBB24BBBCB50BB6050BEB0BB0C + F7A0BCC19BBEE7BBBCC24BBFE86BBFE90BBCF5AB0EEB7BBEB80B06E0E0046B40 + 028DD0B0D8EB2ADA0B0CAE200BA6F0B66EE0080B400FD6300A8470BA6020BC18 + 8CBA1C8CC1F7DBC1BD7BBAF73BC233B0C1B1BBC11E7CBF265CC21C7CC22DFCC1 + 28DCC1202CBBA7BB0C6D59C0DF9AC086720BAED0C386800227500F2A80058EF0 + 0037700FBBCB000C20BC0C00064D5C0EED0B0650BCC41A0CC5EBCBC4541CBB59 + ACC423D0C44B6CC552ACC4593CBD4E2CC60C3002503C0362CCC4F76BC667ECC5 + 5D5CC625BCBECFABB0E916B33ACC2506700B7B7C0B86500FBCA00A10FB0C1B70 + 03A330022390C1B1FFFB0260700C0CC0C818DCC830DCC4F3ABC66EBCC58ECCC8 + 4BECC499BCC61AECC68EECC496ECC66DECC68C9CC98DBCC4942CC63740C02440 + 8F799CBDAEC0C386E00A866000AEE00B6D10015AB001E1A00E877CC9C23CCC62 + 0C06C12CC6A340CCC39CCC979CCCCC7CC9882CCCCECC00CFACCC878CC6A57A99 + 2113CB76A20A7D6C00E07C0BDBE00BF530C81B90A7A3300A2FC0006C30022FF0 + 02EDECCEEF8CC82FE0CE887CCFF43CCFF58CCFEE7C0EFB0CC9F23CCFF6BCCFFC + 4CCFF28CC8FE1CCF600006FC9CD0F7CC062F700EF80CCFFFFC05FA79BDDC4C24 + E8500FB8CCC706A0BD28E00BB2E0032AF00D10C00AE0200DF03002C7C0C82F70 + 0CF4DCD2880C0602FF3DD1F04CD30CCDCFEFACD0FB8CD33DCDC8057DCF381DCF + F00CD3EE4CD313CD0646CDD2353D024ABDCFC7700C16ADCD789CD127C20DBC50 + 0FC0B0C7E0FCD1DB600A6E5BD28EA0065F100E67ECD42F500CF45C0CFBCCD6F1 + 9CD4690DCF054DD1880CD1751DD788ECD6419DD7748DD66AEDCE6C8DCF10FDD7 + 23A0D7F78CD785FDD2168DC356ED25DAC00DE8C00B7DC0D51F6D08DB8002AAD0 + 06252DB14E500E470DD16C40D3118DD66C50DAF0CC064F60DAA00D064F70D3A9 + 1DDAAB5DDAE70006107D0EA87DD3A08DDA6C60DBAD0DDB11ADDBB35DDBAA4DDB + BFDDDBAC5DDAC70DDBBBADD4168D059657D58D3D1EBAA0074510D993EDD15CBD + 0D6E5BB304E004E1FF000FA440DABAEDCE105D00A66DDE0510D12F80DE6C90DE + A5EDDEE7DDDEF2CDDEB95DDEF3ADDAA57DDFECEDDEA7FDDEF80DDF003EDFAD8C + 05E916DD5BA20BDA500403C00428700BF380CB5E0DBA6D40B56EB00185AC0E75 + 8DDA4F500023D0DB05F004B4FD0422FECFA92DE2BE5DDA208EE2ED2DE22C9EE2 + A81DE21B8EE2C90DE326BEE2235EE26090DEAD5DE2AF1DE32F5EE28A7DD1065E + 24D3ADE0BC000CD86DCB86D007A10BC145FC05D2400AED5D0054CEE255DEE2A9 + 6DDE586EE247B0E553BEE5C560E356FEE11A9EDA5DCEE2F33DE6562EE561BEE5 + 577E04BA6DE2ADBC069839E429D247A7A00D03800E28B0D5958DCB6CAB0AAAA0 + 021D40C85F000FE7FF40E557BEE105500C1FBEE5901EE98AEEE5BCDDE28B1EE9 + B62DE68AEEE83ABEDB2CEEE88C1EE9223EE7756EE708D2531D710A46AED55D0D + CEAEF0D1A04BB5847C0399A0E8B67EEBB89EEBBABEEB9920E2BBBEEB58AEEBC1 + FEEBB7FE04C7100E4E1091FB62EA073228BBA3EA7BAE0A86300F1E5DCB06600A + 224DB5BDFC052320E5B57EEB472003325000475000E25EEE8A2EEEEA5EEEE53E + EEB81EEEDF4EEEE26EEBEA7EEEE47EEFB79E09992003E88EEBF34EE5ECBEEBE5 + 9ECD4CD0A2CC5E2016701A221024790ED9B2E00A0FCEC31FDD070EDCE062CD0C + E09DE8FEEEEEE6CEF1545EEF1CFFEFFE1EEF1D4FEFF54EECFAEEF1B72EF2C4BE + E95F40C0E986C007FFFF1D4A711ABA5328D30DD927B00DB7D00610DE0786000C + A6500F27E003E34AD6C7A0EFFB0EF24CDFF44D9FEE4E1FF552AFEF50CFEF549E + F2275F00582FF5EEFE04D95CEA33CF1CA8A0141630282692F303500FB7800C7C + FCEAAF7ED927D0072AE006CFE0045F500C99700699800979BFF798F0F7800FF8 + 4E0FF800FFF7E2FEF77A7F06816FF820BFF87C4FF587FFF78A9EF78C3FEE47A0 + F78E5FF97F8FEE47D0DCCF1DF6CC9114648F061289070AAE0AB3DCD5D87DD914 + 5FB504A0068190F43280F9992FF8F5CEF78A8FF87ECFF780BFF7BB1FF87D1FF9 + B52FFC7DCFFBE13EFBBE9FFBB50FFC8ADFF996C904390CFAB911117181259902 + 009D700ADC3000BCFFB00DD47E0BD80D0CC0A0DD355BC4CC500CFF7006CABFFC + ECDFFEEEFFFEF01FFF8E9F06533D077A20FDC9111110E123A701108DE4740290 + 481B375E288019B8C5D0D0C33EA664B58980E5D90666F0FE9D01820908478F67 + 308D2439B2E3C7932051864CD932A44995314BBAEC089366CC964056FAF9B2A1 + 0B932B00840E255AD4E851A449952E65DAD4E953A851A54EA55AD5EA55AC4C5F + 6D7D95AA42855716308811114CA8B601BC78C97285ACA12B03AEB6995225CB47 + 042D1BBE043AA25327479D2501EBB4F597B0DFC2218084183C1848E19A8625AF + C474A6B0ADC68B15FB05BC19F167943ABF385933276856D4A955AF66DDDAF56B + D84F2B78A53DFB95FFA7B17284EA3A981685AB5BAE0CC13530DCD0B6BBDF1C39 + 61E6C723689C80311FFE08F98CE7D0D3634E7F6C38A448C2D2FD32AE8E98A365 + E82919170BE4040B133DB462CFA75FDFFE7DFCF90178FDDA7F362ADCC418400F + A1F0408B17530C3180A1051704C6141428B2E31935C2F9E71F5B420821C3C534 + DB50C30F35CC504410470CF14413432087440DAFD3B04314415471C6126B6411 + 440F350CE4813548D04D3F208314724822639BEDC80AF8F88A8FDB2CC0478C2B + E403408F01D0A9AB41B886DB06857A0C51A1030A2DECEEC3F33ECCF04C33D344 + 73CD34AF0382071233BCEECC8FD43413CE157960734FC5FAE490BC40D4E85104 + 3C8A34F450441345FFB4B6FEE2E82F15043C799250A14EE166801364C1B24160 + 7C39A18F36C074221045FEE9E7461353B5314654655C911C555B95F5555951A4 + B54FCD6C39468D3A0410E1148214157658628BC5CA3F24914CC59300AF2874CA + 4B4F3024B8E1B29C0B055023B0E381632E4C53C6174F05574634E31CF7DC1B65 + CC115D76DB6D11DC5D1D20815263EBB5F7DE7B91D5B7BF571070B291D34E2902 + 53141A9AA7C186E2AA47151528F8809934CEE8C71672E03CD7627429EE07E313 + DDDD906310416EB762912F1E97A75E9538055F965B7659487D05E143107D11F0 + 171F801329E8406090F121E1E25C71C597892270C39107020162621E7838F5E9 + A69D0E21EA109EAEFFBAE97E368E5A6AADB78EFA54ACA76EFA6A38ADA61A6CAF + CBFEBA6AB1D31E1B1E351CF035D897EBB6FBEED41AFD4A90381CADC05147F960 + 5294B11AB144284B106AABC1060D890818BB3A403A90346C89DA1FB7316F5A73 + 1E38E77CEBCF33BF7CF4CD49EFDC6DD443479D9C5D533E1C6FD863977DA9FEF8 + EEDBF63870AF4066002D4003A84A11F2058569DB882B2EB94E60A28F08280843 + 8D40AEDEB86B459CE6A1FAE9ADCFBEFAA6B1BF3E6AEEBFDFD87BEFB3DF5EFBAF + D3EF1E7DACC14F3F8D5AE456E2D9D9EBB71FEFDD6DDFA1EF38F6EFDB7FBEC92C + 524F0A5811D09110E21C0F2EAE00461F92E3880F0482643C986005A366C1A661 + 908217E460063BB8FF410F86108423D460093F48893008400972D0D9FD5CF842 + 7BF1EF7680E3DBDF6A98BBC0310B03681081503A41255ED4A360B7A0D643E632 + 1115B8210C0FF8821FBAA63528A00E8A518B62D3AAD83E1E40E18956A4E2D6A6 + C8453066B18B56ECDA18B358461EF8216E5DB001FD60F846381A4A8633A4230E + E9C8A49B89808500E8CD097A06B4E1A040900EEC801608A086CA95E27451BCE2 + 1531C7483142D29162F45C242D593A495A329399E4DC264FC74528F881121BC0 + 821806124754A6323F73FC5B2B01E74A58C6810F37234BA17431B0B5004341C4 + 71451FB6B1308A48CE0969F8A218C3D8C84B1A737A903C663291D94C68F6A393 + 9A34663551F89E3DFFAA529BDB6C4D1C5AC0BF1608429CDF1CE71CFBF64D5936 + 490C8DD80D2E55018C043E0418DBF005A8BE44802FF8C31650E06716F9090567 + F0E39FFF7406144A015081FEF3A0504868410FEAD08102D4A0FC6CE840FD59D0 + 813E74A2FCD4E84213CA518932320469D8C03AE6F0236EA654A5553127CD6CB7 + BBBED9D09C7DEBDD3AF1A00BDE70031D7E6C03B58413972DA9C2071D3824C4FC + C18F823A43A9FD8C6252258A513142B5A94FA5AA5393CA8380F213AA56AD6A48 + B1DA556744B5AAE40828494B2302BAAD54AD6B4D0A3ABDE9D616A033AEE0742B + FFF8B0084FF8CE943A13183A7CC1908624CC10F3EC431FBEF40C0230A318477D + E852B9AA54C83ED5FFB100856C652D3B59AB2EB5B1977D2C65935A59CF8616AA + A3ACC3BCA4C456D4A636AEAB656D6B5DFBDA16F021AF93D205006861C013B8A2 + A744844B1F86D3877AC8420576C0C831184B56A59243AB17606E73934BD97468 + 351DCDBD00642F8004E696E20200552E14980BD9EE7E57A9D4EDAE33CA5BDDF1 + 7E57B9CFF52E75B7AB08D2CEA187A9A5EF5A5F9B83D7EE40BFB06D410EF40B20 + 0CF8400996D0854130352D642C8838B700C609D0215C373C83398A80022EAE3B + 51675C001748C06E7321B161244062BBE90D312EACCBE10F5717C3E275C64359 + 0CE20B7494B21EDEF076B55BDD877EB8C3CCC56E0F78458222B4B0BE43D6A67E + 8DBC5FD71E59C947FF5EED0E5071B346888016BC1940977A2A1C2C17A73886A0 + C83712AB0867C8E3C6D4153373CB7C81339379CCD45DB37BDD9B5E35BB39CE68 + 6E6E9AEB9CE1EBDEB8071B28AD9489FC6754F657D0F8F5EF0E5A4B68411B79D0 + FDDD81329E2C16B2542A2DDB30805B80B6A03EF8C217123A242514518A1BCB83 + CEF240B1A8E5A163EC9A7AD41AC62E2490200F53971AD6293EF58655DD6A0E8F + 1AD5D75D35AC538D6652939AB93AAEAE107E5C0440271B868636346B91CC5F45 + B7D6C8A968120F83724B4C6D83889706060A8667D80E50002369E0873F9A7B63 + 2494A2C3EAE6F5BACF8DDD74C33BD4EC468233D62D6F37A7FBDD793EF7BEF5DD + EE3CE39B1C3E2EADFF124EAB6C84C38ED1882EF4A219DE024533DCC8FE5D042D + 7F35A5B4FC15610A76050AB66197E611E00FE40678ADDB8DE257A79CCEAF8604 + AA833D84535FF7D4B9E670885F2DEA56A738E528B630BC65FE6A98A73CD8250E + 31AB43ECE314CE2FE14BBF5B0E9CEE70A8337C110FA77A0B2A0E811D9EE620BC + 782743B214B42D45485BCF4B03128830849AFB1CEDF1E6F510AE1B66522361ED + 6DBF0024E2EE769F8B39E8D7957B87E1DDF7B9FBDCE77647FBDCF15E779A5FA0 + 075F483AD31DEFB21C28C3E94F9F7C7F293F79CC575EF3945746091CED3B81E0 + E11468F99482DEC2A98EB72189109420AB832E8F21E002E6AF4782EC612D0F22 + C0DEF63B7F7DEC85FF0E745B035DEE4387BDDC774FFCDFEB7EF6B69EFDD0435C + 8B14B6F1F1D3AF17A1735082EB675EFBDBE7FEE4B1EF687F6140BE7C4D8B2AFA + 40C4E30D761B85F50132C2CD4445900317B810B1D98770FF21E41ED6F7873511 + CE8EFF59BB80FCF33F0204B6DCB33F983BB5FBF33F03FCBFFC633960AB3FDC23 + 40FC5BC0FF3340DC1B82C57B002C903EEAFB4045E9BCEBEBBC12C0BEEECB3EED + C33E132441CF2B4165588477C8AB753A9C8340877A589CE0D832A13185130815 + 43528337903F5CA040FCF3BF0A1C40073C4224A440D823C0FF833DD81BC02274 + 4023544227ACC2293C420A6C394550830E7423100C432151C1EC33C113DC8113 + 743A3224431CC0AFFFD932A5534884813185B7180EE3890B53E0851E8C003021 + 004A480727AC402CB4C024D4C22B14B640B4422A5C44255CC241944241C44222 + 48031E99033014434CBC8F122C011C28C1EBDBC44E2CC1507441CF1BC516E444 + 5024C5CE7BC148198B5FD1039D92085D3A1EC6692003B80B0A780021E881FCB3 + C2214802470C44603CBB2B4CC2451CC65FECC56124026444460B44460A6C4665 + 84C4C24B0341F1C04CCCC6FA38456E64416F5C43520C471514C755AC38DCE0A1 + 42814574308579E8A9A0318036300414A00B5C24800F48835298BFFF2B467EEC + C740F44780DCC7801C487E94422240024AFC8983D346866C0D54EC44887C4889 + 1CC588AC488914C5FF892CC14713001B908360E82B4D39BD0509248950BD0843 + A47C4C028224C85F5CC9626C499774497358C221B0C63560024B10B286DC49D4 + D8449FCCC888F449534CC59F244A50AC384893323DC0A56D501005033B143801 + A17A3F6648075C80057388C97E9CC981348721BCC22408CB62FC4A0AE44A22C8 + 4AB4ECC75EBC424AC4269DE449B8A48AA29C4BBAAC4BBB9C4B1C58842713051E + B284D1C31460B805B7502003789089B80B3B482C22C0050E60C621C84A6054C9 + B34B027398499584CCB3CCCCC86446CD6CC9CAFCCC96BCCCCA4C46B4AC4CCEDC + CCCDAC4C9544CDD0244D228084B62481D7894BDA948ABBBC4DDCCC4D1C4000BE + 240B3DE8AB7AA034FF06F9A991340412B82788014473E806CA7C4C661C4DD574 + 4EB4C405B47C4CEBACCE99FC4CD5CC4EE91CCDB0D44EEE0CCFC784CEEB2C4FCB + 94CC21A0041E210102A94DF7748ADC8C4FF92CCAABB30001688442C125146088 + 041B49E1E836E6399A0760064548826E60CEEFE4000E08CB245050067D500865 + 50D58CD006E50073480258A04CF054D005CDD009FDCE0F055108FD4C06B5D0B0 + 84CD5A28ADF67C4F16458AF97CD1F9548659FA1739B8821AAC876DF3BA919485 + E141CC0DA8853480045858500E18520435D005A5500A0DD107E5806E28520C2D + D2CF3452281DD20C2DD1271DD10B7D501235D06ED852604C875A58071F79CB16 + 6D51184D53DC8C84FF48C081188C0534B0013DB8251B4C205A8C085FA807C352 + 0E35F8C364E8050E4DD2063D5225E552308550053DD227FD4C0E555441AD5042 + D5502D0553130DCB278504E85381F93A534E05C536C5011CF8D45045C536FDC9 + 500555501CD54EFCD4871C55BC045565F017345099A53CA06DC032A1A996B868 + A0A1D28201E5C50A35874065D0214D06134D06EDB4504065540BAD4C0E7DD064 + 084B0795D64015D46A1554676D56099D5063D54E48108230F0114EE5541C4880 + 724D80048884746D077445D7736D875335D7744DD7369D577745577695D77635 + D77A3DD57C4D805CB819749003BF4488A61CCEB850BF4DFB120A382472808527 + BD8340BD50739058FF0BBD830BE5008CAD500EB5588D25D26B0DD98E0D598FF5 + D84035D989A54C8CE55022B8A64D1D57F704D57A55D75C00587905D572CD0551 + 05D579C5599BF5D99AE5D99BFD547505D5A04DD74580807324144BD92959303D + E13022149085C2FA124750831E10D26A15560B15D96B0554AF0D5BB11D5BB2BD + D66F4D2139D083B482599E4457757DDB795557B76D57B95D57B885DBB9CDDB7D + 8DDBBD4D807FCD0500438346288222B8145EF82BA0C992A139817AB0DA077803 + 48385091055B0EA55C05ED05CCF55ACADDDCCA0D59CEBDDCB2AD56CB1D0270E5 + 486D605BDAB4D9BADD579ADDDBBA6D5DD6B5D9BE9D5B365D5DBADDD71280947F + 11013DD8BA85309EFF2C3B0E59785A15D01602E80188ED06B0C55CE66DDEE6AD + DCCC0DD4E8E580E9ADDEE7855EE7C55ECBFDDAEBBDDC7D48512C3038D4854BDA + 9D5DDBC5DB743D80BE45DFD8AD5DDBE5DB763D805C5800C2895339D00603E205 + 57988784218E79701C6010AA5CEC81ACED865DA001E74D60EBA55C89B55EE8D5 + 5ECB5560ED0DDBECBD5CCCFDDE30E8C0D91C5F6D9C5D0FF6E0F7FDE0F5655311 + DE5B65884151C0071BD006033B8179408604330EE1D8866D5005D5A300A4A184 + C8DD05E5C55C1AF861204EE01F166204F6E122EE852136E220665E206E620E6D + 62056662283662CCED816BC2460ECEC412F660F5DD62BFF5622F56DF76C8056A + 00107C90AFDE9D34FFF4631C8525A46DF943586862399E633AAE633BBEE33996 + E22446623C9663E63D5B6CCAE26C44D72E0EE3761D847F9DDD42E6E2441661F5 + 3D807618840AC00D1258213AD5B6C12CCEE43981E324AA07F0821EA0816EE863 + 522E6553F663252E65264E06217880756002941264103C005AA6E541B8E5423E + 8041A8655A3EE441885F5B26E45E16E67DBDE55DE6E54236665D3E665B9E5F51 + 30DDA65D881C649C5D85C7C3FAE47D38656DDE666E36E524E8010E6482D395E5 + 594666733E67744E6775E665665E675E2E017FE98239E0865350473ABC857694 + 61B998DA7AAC857418E51FDE823BDE058116E83BDE8203B663840E682046E884 + 4EE8839663842EE8FF8626E83B68E557DE607276BC5A4E8175F6E87676E75ADE + 658F46E79016695A2E8177E0CD595D4ADC3A3F6458A0E280A7E1F581D5FB0021 + 48061AD80582DE8289F6E99EF669A10E6AA21E6AA306EAA3FEE91F286AA14EEA + A666EA9F9E681AE8810F28B84BDC68654369ADDEEA745666941E04599D031BE0 + 86C24587DFD0D506F136AA65589C4E0603DE851F68EA2D58EAA68E6BB9BE6BBC + CEEBA58E6BBECE6BA1DEEBA0F66B9FA66B9FA6817DA86A8EC483B5C56A4043E6 + 141884C72E695B966C5E7EEC5B8E6CC8CE6CC97EECCA866C73CEECCBF66A5D8E + EC666E451F90D35398345DB25303D886796A835071983448021A88EB6C18EC1F + F80133986BDD3683FFDCC606DECEEDB8066E6C106EE0CEED2608EEDC3603E6F6 + EDDFDE82E4766EE1EE6DE6FEEBE9BE6EDD9E6EE64E06E85321C65E3A6436665C + 1EE993166FF3366FF266E7F156EFF36666D1BEE56B5869FB5C613988966DE05F + 9F1AC93C5485E679805AC8699EDEEDBE1EEC2D10F0DC9E6B04BFEEE04670028F + 6BDF16F0056F7004DF6DDF96F0BEEE6BE7E6EDDDBE03E89B97C5FEEEFAD2EC41 + F006122771F3F606D0CEEC125F711437E6163766CC2E71F3B6EC1167F1C82EF1 + 9126F16B6801DEFC092548E3BF1ACCAFEB36A2192A0115021AA8865D906EEC5E + 6E26CF6D2A606EE196F226A76EED7EF22B9F722CBF6E2AB7F2C3D6022003F164 + 63713237F11A7FF1FF324FF31657F3173F733697F15B5EF1413861C2110325C0 + 5F8460C7DD4A98799A0B1B8E8067D0C57408F01FA0822AEF7228EF6D2DAF722B + 77F22D77F245677445777433B8837DF8313F13F3217B7333877337E7F4385773 + F1E6743977F31438F541A0060848612610811ADC064BA36603F005B590100892 + 845E3083283FF427D7F52E47742EFF7560CF7248977461A7720CAEE40FD7F495 + 5200676771678FF6349776127FF66AA7766F70F6534F8168B77612DFF66DEF76 + 052873715FF1804D61B2285C5E681CE2E43843F081A17218494886E68E7449C7 + EE7ABF777DDF7747BF77C3C67466A7AF331F8471AF768277F36827783917F783 + 578086177788C7F6FF84777805387513A7786727F8673FF56B4000088805154A + 5B9DBA6F4B93691AE6673079987DD8856AA80643078428676E43176E2AA8799B + B7F942B77998A7F9979FEE9AFF01987FF99B77F9490F7AA0FF79A34FFA983783 + 5DF872D90C78D462F1814771687778AA5FF16E1F71ADA7FA88EFFA12CF78AEB7 + 781347F167D7F8AF8FEF7748E18E5CCA01F005E078FBA8A561AAA588A3C15A7A + E779A3F7799DFFF99A877940D8F9449F799A2F74C23774C3A702403870DF36FC + C26F7CA13F7CA33FEC3A68F58584FA6DAA716E2FF86CEFFA8CD77CB2EFF6CDA7 + 788DE77CD0F7066E6F7882DF7614AF82AC97F88C4FFB2E400374206B8291E691 + 0C1A53A8273EBCF5FF7DC86DBFAF06BF477CC4077EE20F7E40287EE137FEE45F + 7EE307FEBFA78226387AE59F7EE04FFEE2FF812F572133B5FC54E2FC6CAF02D6 + 7778F0277D6707FFF087F8F117F7F4277FF55F7FF38FF804A00604901B1B4804 + 5A4088FDAC43050106C80108147DDA4470F480520F6C54AA5101F483CAC38880 + 1A52816831E2C58C0F294ED4E8F1C744871F358694D8F0C7BE0FCF48C801E0F2 + 25CC983267D2AC69F326CE9C3A77F2ECE9F327D0A03E1510AD6294A882490A8C + 5699C41429D4A84637452D7A546A15A49B4065AD8AB5EBD2AB51376DAA420D02 + 3E26458A7043C7CB95815B060CC09D0B6CDB098214087C1072C74CC38E202B56 + 0354783044C18A2BFF0E36EC183164C5850B335E9C98B0E1C4930DDFA9158644 + 11A1A247932E6DFA34EAD43A958665EADAA8842A1290B26E9D14A90477466B67 + 7D4AD4E95309658F027FADF43572DAB2155C430021160925DAB4B575E5EA569B + B97481A1F0250B590437CF0E26DB129263E08E142D6EA9A8FE7DC5F8F0E36F3C + AF3EBDFD88520085E4DF11103629D5C1444BAA19782082092AB8204DB22D811C + 535B2D119B044E39352153B165E59404135AD89471143E384987116AB8DB8927 + 1AC5D5860E8A98550ACDC522800DDC1431003ABEB8828C5C7019F2A329F5F4E1 + 4307143CE00517BD9861866385F9D74443D5403965945352D6C495555281E544 + 4DF807C87E9B3501FFE5975C4AE99F1467FA17A54302CE5144220CCA39279D75 + DAE91285109A285B15544D42E26BB32995E79F1B16071C859BE4B99BA2530DC7 + A76BF90CC7219F142635493C912060411773D820475BA65C678021AEFC78CB36 + F5F0A20A416E10F08024BD54538D14B5A6B7A5AD63EA9A2B15526C491194EEC9 + 271F7FB68624C5945F72E42598FCE147E6AFFBA831A008775A7B2DB6D9EE5429 + B7896E82E99F80E6392E9F7FC6D32DBA159E3B2EA67CC65328B9C295A5AEB8E5 + FEA9E8350B38100B1A4A8830002FA6A04017C1DA6D270B918E7CB00F48B5D68A + A6C311473CE5C3C53A4CE59712FFDA04AF54522931B2B8D6EA71800FACC392B6 + 29ABBC729DE37E1BFF6E9E4BC82CF3BD7FC6DB54874B501A5BB8F63EC873B893 + CC3CB4CE94FE49F3D145077DB470F1B4F3CE7368D820C25AE86C330F8FA41A32 + 9721B29CA08A0A1D18244432B3D23AB1AEBA5663C4AEC88E3932C7308CB905C7 + 15C1DD76DA7973ECB6DE7DA70D03369284B18E0D78B07C38E28993E66215EF86 + 8B61CE339B0B2FE4134A90338990C3ECA1D0145E5EA1D04423DD21E8484BBE74 + D21280328937B920E0800068D8D8962F73C9A575A9BE08E443047638E245323F + 9811B1DC63B2FDB6119ABCCD370C6E37AF2B984D682245F178FBBD77DAC737A1 + 7DDFD4076EB25A712A3E3EF9E5CB34EEE7A4F329FAE532DFDCBECCB2353AF3FA + F17B1EB9E8F4C7C6FF3EFC33C32FA286A086010130C1463812D5EDB8F623147C + CD07AEF282249A4137EAF14D7A63AA46F59E273D18148F7A166C9E118CD03CE5 + EDAA7A6322E1DB4C983DEDA1507923BC83240880050299AF8636445CFA72A8C3 + 1DF2B0873EFC2110830844B32C00025DB0811EA8C38B79C4652E70810B3082D4 + 071588E74877389B0BA5A03CB66DD1835CE4A005B9B8BD0D364F6E623C6318D3 + B8C53472906D6D949E075D18B80D10CE1237BC231EAD25C43DF2B18F7EFC633C + AE210A0C88610022E006C0B621975B58676BAED8862CFA4082DE118019924846 + 13B650C6BE69704C60BC1E073B79BD51E6ED93D43B5E2739F83D2C142E8FAE7C + 6582FE28CB59D2B2FF8F2CF0C6594421007468430FDC780B8F126808EE6C0318 + BC73D591F6E1491884D00880588111A0D9CCEDB531846FD4441BD7B8C5668670 + 9B22646633C1E846667E109CDFACE6F6EEC0850760A15AB07C273C49934346D0 + 939EE9B3A704EAA9CF7D32E29EF3D4E73D019A4F7C7E8EA004BD1C3F135A507E + 4A2005EE40802E9970488099A254D861A4A95C210B534CB10376200092B6E0C5 + 1002C299DC5C6638E5E642726E8F84DC7CA935CDF9CD945A306E2945E798B0F1 + 8630084004B488275083BA937FD633A0084D68426B70D0811675A14D6DEA42A3 + 1A50A44235A12C60013DA136232628A12D27D8860190C1B5B9F4C117F5401815 + 09F00749DCA109E0FF2CE9334F3A3D7372708BD50CE11861FAD2BBCE34A66BBC + 6B28C119469DB2D39D423D2C626152CF78309505A0D0A76325108F7A82C2B196 + AD2C662FBB58D55D56B292ED2C632BDB4FC63296114AA5670D40E1D9D05AD6B4 + 8CB86C64599BD9D9E6831A0B58033E6AD4165EC8A2898D7C22A9BEE30685BD21 + 19A7DC2B5FFB8A8D153C131B814D29379F1B5DBA9A93B92BC00674F51A426CF4 + 200C73B06362C32BD4D79217AB2CA8017AD17BDEF492D704E97DAF09E2FBDEF9 + D6E0AAEB55EA7A4D7B5FF49277BEAFE52F7D035C0313B0C004FD15F080B1EA8E + 0588A20B6840075B06E08B79DCAE2EDB111215C723042CB9D59C748081349BB9 + 8215C04013308566FF8845C8B6E49158A6227E2989B54B074D6CD39B24F5421D + 48A007F1F2189EF8752D56D9ABD42197F7BDA64DAF094041E425BF1614061EB2 + 92511B64D7FE98C9EAA5328253EBDE201B39C0F4CC57D4D482C87AF8626B8C24 + D5235110C963C2EA0774AB66284F8C4DBDA658C5CAC36672A3095371EE59A578 + 35F14BEF80E339D0A2133D3E341EB37CE400CB77C04376B47B874CE0231BB8C0 + 8F5E7297912CDF48A3D7BD8B46707C398DE44BD3F710B914002FBA4AD1EB9CB9 + 2EDD31AB0AECF0803770E10ECCBC350CE8D0CC0F43B3C4271E7174675CE20F33 + 13D8211C71AE6F1AECBA963894780E742D5879054453BB862CC8877B096CDFF7 + 5E35BDDD56EF7EC1FFED6DCCD637DBE0FE74A7B1CD6DFB5E55DD49B6ECB7D5CD + EE6D7B3BDCF5BDF696F3710DA8E1630E5453C20976D4864692751BDDE9A84124 + A1C9BACE14C58046B19E59ACE71243BCC5209E73AFDB58713D6FBCE3D10C258A + 25F1001A55BBE4E32B707CE7BDEE7A83DBDEDF2EB77CAF4A6071CF97C0DAAE37 + BB438D726DAF57E7F3DEEFCBEBADF30098200067818E0D06A00474041C6B3DD2 + CE23F3120123D11ABBC70631B0291E4D60AF00E323C626D791AD01126B62C424 + E6F5D6511C76B5B33DEDB9063627441E012588CFE4764F19A70B1C809D879AE8 + F1DDFBDF59E0F75013BEF03E37BCB60B0F78C317D8BE860F400DF62EF394DB5C + F191A737E26B908FFF05DCB65345D006C06E810CB196EA4786D8867754109EB1 + 714C8424EEB8D93D5ED7B24793C6B4973DD6BB5EECE4959DEB1F2F76EC915D08 + CF90C0A7773F3EB6141F80C1177DF9D158FEE0973F60133C9FF97F773EE197DF + 77ED17BDFA018846A8BD5FFDE6639FC0DCCFFEF99D0FFDC18BFFFC8C7007351C + D0A901ECD614C03018D750A07F031049D66CA526AFAD5DECA51DB2CD58EFF15E + EF059FD9694200D2D8021EA0D91941002A201DACC01E105F68209F06D649F615 + 9D07FE9D07125DF4A51FE289A0E29D20089A60079A200B0E9DF591DF0A9220F4 + 151DCA415F0D9C1A0970830EBEC5225987A9185C3D9C0009A4D507704121B458 + DA1120EC91DDEDD9FF9E02C61E9E7DDDB1755D02725CEE29602875468E15C806 + 76A182AC1F187ADFFAB51F1896A1199E211A429F18A6211BB6A1FAB9610008C3 + 3518112FE8E0009802583951C118C0361802EF884D11DE81065CE1133EA11316 + 62F039E0D72520222E62238ED81E7CC03A1088A179A125AA061C66221A8E8126 + 76A227B62127BAA130D44011C5820FA8C58DF02013950A5D3C1230201CAC2CDC + EB3DE2236AC2275CE127E4222D6683266483021E221542E12AD9C0B45DA2319A + C627A6A13098E1322EE3FA35231B3A63324EA3342A23E4D996FCD90075B8451F + E0DF8FDC8540DC42048C075B91D8D8D16223DA62059A5D2E7E022DDA22232E62 + 022AE22216021CB0FF131380D731EE6350ACDF1884A226FEA33F026400086419 + 0A433532A3191AE434A2E132FE234412E4414A1F350C12133041D2E54837FAA0 + 13A1DE09F4C1D481141764433670103A16A22EC65E3BEE622FFE223DD2633016 + C24EB5133FD6E44F44E418648030E0244F22244242A44E42E4044CC04EFEE304 + 64C03FFEE43F660051FA244F26A5531A25513E255416255556A54FFAE4501EE5 + 50F6A45216650DAC0204AC01012192D5C4852369C736080C32A49517C8433668 + C03A16A25CAEC05C065F5DD2415DC6DE5CEAE55DDA655ECA653B56A05F02E65D + 0ADA4AD042DDD92463DA44446EE55562A5504E80508E01654A256662E6505A25 + 4E0A03641AE51870FF66672A6564FE64536AA56576254F52E66586A6670A8358 + 8A42BFA91A30654746B5A22AF0C22D0C575F34038811A2D90DE220D2250C0867 + 710667EE15E7719A9D721A673B3627749E2327AC4033D4C2246A436366674D6C + 25530E657772A57772A77886E7568A273DE4E47882A77A7E277BA6677B966778 + 9E275292E77AA667797EE77D72A709AC421175812AD8A12F8C9E1E920A776098 + 1B188917D81A88E9E5D855C22754825D3EE82730E80A382884EAA5856AC0D851 + 28876A28606EA8877628888E2860AE00177C00160C8076AE684CB0267CB2A665 + C6288CCEA88C76A58BDEA88CE6287CEA686A42268DCEA88DEAE88BF2E88BFE68 + 90CE68341C427F92FF40D2D90099C1C5EDF4C130ADA52CB40A48ED81820AE727 + 4CC3270C22974E43715682066C69971627996A809886A970A6299AAEA99BAA29 + 9CB6699C560227AC930070218B6AA77AE6277DBEE79EDA2757FA6977CE82A016 + 69A1F62977E227A2BE28536600A1BAE756060165DA962ECD4157E50885DDC28F + D4055E9C5578F0051CDC815FA2E9830AA6831226A98A69055AA861B66A61BE6A + 60A2AAACBA6AAC0AC167144125E66963326A79BE66777A669112A5B01A6AB002 + 6BB02A2AAF06EBB02EEA78FAAAB2C2A7B1DA6734AC822ED9005B040CD76494E9 + 994A1BF0CE7884EA20D2C134544225D0C184DA65AE4DE8719AEB86C200B98EA9 + B9C62BBAC6EBBAA6FFEB87C1EBB896EB838AE9348C9D068CAB5D4E0317A8C124 + EAA3AEDA24A1CE8277266CA38AA74E1265C3466CA006EAA30AAB3038EAC31E65 + 06482CC63E2AC73AEBC35E6CA06EEC51326CC9462CC9E667C75AECC636AAC71E + A59246CD00E84111588DD315CC30F5812A10C978D0DAD995AB5C6AA85C022D1D + 10AD5CD2815F96ABD232A8D0162DD23A6DB922EDD2326DD14E2DD4D24121AC13 + 4D1E2C63A26CA366800EA46CCAD627A2B6ECC48667C36A2CA4A62DD9B6EDD74A + 6CD9922CDBC2ADDAD667061C423E20C037E4A02FE508706DCD3075C777509123 + AC554922ADBF6AA8D4A26925F4EB0A1CAD5EE66BE3BEABD0FEEBA9566DD492EB + B822AEE2EE6BE34AFF6DBE6A0027BCC14AE8C16272AD3182ADEA6E6CD8826DEB + B62CECC6AEECC66ED8BE2EEBAEEEECC2AEEDE62EEFE6EEEEFA2EEED62EEEEA2E + EE06C12C040152EACB2ED1A629E01F5DA00047B501E1FE8111C2402B046DE726 + EDA83EEDD05E6DE576AFD43A6DF8466DD35EEDF832E8059E8C1C9C2EEA7AA10E + BC2FFCC66FD80681FCD6AFFDDEEFFB6600FDE22FFFE22FF2EE6FFFDAAFFE0630 + 01F7EF0444C35974011368C3B5DE9F1EFEC8364012C288CD5A7142E4226EE86A + 68BFF62BBF0A6DBF56EE067FAF0673EEBB7EF0BF9EB009A7F0D0BEC103748112 + 184EFB1A63FFBA80EB167000D3B00D177006E0700EC32F0FF7700E0781108F43 + 346C4017F002FDB5FF453D34D1801A0099B5016FBEC11E64C3D32E6DE58A69F7 + 6A28167FEF165FF1D16A71D18A709B6AB1D06231D2EE811738420EC6B0311AAF + 101B2FFC1EAF10CBB11BBFF11BD3B11DD3311EDB311FC32F1FFFB11EBF71FCE6 + F11DDFF1FBF2712003F21FD731001F3200CFB1108F4129D2C87460EA2D2410A9 + 98822C18023214C90330C34832AD079FB006A330068FB20AA732298F3208A3B2 + D072823E808FC1B2B10606C125BCF12D0B712EDBF225DC722EBB800BE0F21BBB + 402EEFF22E07B3102333302F333127B32E03B32EE3722FDBF2302373314F332F + 5F023447333707C13253F33747732F1BF338DF3230E7B20ECC027F92A5B57A15 + 5861F22BA68A2CF4FFCE037C001C1402F75EEF18EFB3AA86B11897B118773140 + 93B1086F719DB29312D0B217163224373436277330EF3131273223E331339FB3 + 1E6BB30B04F23817323067742FCB712F2333451F6F387B3334D331368B34366F + F32C8CC33804C1E6C91F4622122FE4219AB5E209F0423D50D15EBC013E336D08 + 8FF0069F7229ABF251FFAB289B70292775E58E2E4F89C02C2BB4C95DB4555F35 + 5667B5565B35315881156C355887B5588F35595FF42C38811159AA57D91FC158 + D85D00830AA88091DC730368C0F5DEF5F75E6F034C035EEB3516EFB507D7752B + 60B13E6B705DFFEB6157C25D13B65D6BE81EFC418E191655DBDD324781655BB6 + 5733F3654781557FFFF5575F35672FB3578FF66647C167BB00669FB60B58C166 + 577668A336677BF66BAFF668BBF668B3F665AF363097B66503B36A9B3669A7B6 + 7063B665B38258AE81D424D1009C00D6B4C1EDB441D7780748EEC51FC04125E4 + 9A8622C22A37350A7F6F08ABF2770BAD7687B77627F53470C23DCEDD641F9F6B + 5F7666F7766B5FB415743568BFF66D7B756967366CEBB70B74757CC3B66BD336 + 6B33F36DDB7670F7F67BF3B66F9F3670E3F7703BB869733631D0032B28EFA720 + D209D8CEED18421F08CCC010EE0748425CEAB5060876639B785D9B3889374025 + A47889BFB88BC7388CCFB88CD775DC8D1CAEAEB7C9F1B670C3B48257B6154003 + 3484F68F0BF8810FFF776A13F87F03386A2FF880EF776DEF7683E3F6650B398F + BB37348C837B8F761674B9834338980F83BE604074EC603D188273938A5DF4C1 + 5911899108C11E7082E27EF0614F0383DA399D1BF6502B755117752BE3B9778B + 2B9F17C21F7CC6FAEA78B59581A22F7A9737BAA2377A97978115383AA347FAA3 + 433AA65BFAA2C7400C2C7AA5673AA65F3AA597C1A87FFA300C83A7A7BAA797BA + AAA77A0C407AAAC33AA967410CD0C32A38C11ACC811CF8D24D67CDD638919AF9 + A1277BC123202D5F37402B344003D041B227FB5E2FFBB3D381604B3BB2573BB4 + 1F7B2B4CC3B52F7BB323BBB6333BB24BBBB60BEC0750403E223AB5A97AA8CF3A + A597FAA883FABA6FFF7AA7C73ABCCBFA30C83ABBAB7B979F7AABEB7B16F47BAB + C7401EB0BAAC37FA3078400C2C401794B94DE334CEBAC240A415504F686367BB + 8A8FFBB3637C89F375C56BBC5E63BCB657FCC6A338C617C21E3C4004E029BA8B + 17A7C7800794C132B4BCCCDF4328C8BCCDDF7C19BCFCCD0B7C1E0C7C162C43CE + 9701A7F77C1E047DCC733ACDDF4316DC83CDBF7CCC2BFDCEC33CA74B3DA703FD + CD5BFDD423BCCD077DCB533DA77B80D6CB7CCEDF7C28DC03D1DF43853B400414 + 9012B902D6188C750CC4741FC91E2876892BBB5DB782B3E3BDB2A738DFF3BDDE + 5BFBDD0BB6DEDF7DB713FEE197782BBCC124AEFCA1753AE40BBDE4373DE47F7D + E56FBDCC83FDCBF7FFBC07B043E4B73CD17FBED037FDE44FFECE5FFED48BBEEA + 977ED45F7EE96B3EEB8F7ED70F7DCF77BA71CBDF1C7003E8DDB4DB3BD137A60A + 48BACA1FE843366C7BC7673CF283FC5EE375F293BCF38B7CC6B7829DBE70AE3A + FE6105FDCB673FD77F7DF6B77CF76FBDCE733FD8133D2180FDF6133DF6A77FF6 + 9BBFF67FBFD887FFD7ABBFFCB7BFEC673DD7ABBFE6D37FD8C7BF0700441E811E + CA7820E604C21A12038A0CE0B5CDD52D03065C197205CC97AF3E2ADC10F8C0C5 + 58033A225B3528D9609A48942A538E6CD9C0A4C9972D4BB672599366CC562F1B + 207AF34000375A008816357A146952A54B993675FA146A54A953A956ADEA016B + 56AD5BB976F5FA15FF6C58B163C996355B7696930D6BD02811818E97A93EAE2A + 4E343411D809641D1C7D2CD440C34A0D3B05B70A3CCDF04A4480511A269C72F0 + E0942917DB736C0F7062CC903979D162E39455D1A34997367D1AB5E8AFCBB612 + F2C01AAB6BD85B677B20747BB6EBB3AF6D13AACD1BEC6FAEC281AFDE4DBBABEC + 1BD1368822C1841BB701BE80CD9B78DDC0B613BE22B8E9CBE5D3E55698C9D76C + 00E2BC4EF5E6D9AFC79CBE7D7B7D6178E1497D1F7F7EFDFB4F67B5268EABFF7A + D34A1CDD00D46DC0AC6E5BD036010911D02B047BBBADB5DB1CD4CA1A090364D0 + AB03152CEBC10E35F400C0ACEEA16703070480AE086E7891053BBC50F0451664 + 22A0E0012E383169FFBC063683C94798D003F2BD20612A1249227D1CF248259B + 2CE403016C188ABF2AADBC124BD46CB34D9D6528BC4D9D2FC55C509D325D2344 + 9A05D524A44C2FCF94C6CC2DCFB42DCD2DCD5C934D34C10C93CC30E5FC93CD38 + CFC4B3CB65D449F34B4027AC73CE33CB54B4510F6E40A80B12946891175FEE92 + 885314EA39A18F1BFD22A949CB78440F0410E25B4FA756D87B0FBD556BB20711 + 2FC2082ACB5C75DD95D7A2FA9C61863285E5734F75801D16D93BD52CB31C3793 + 7D16DA68930536D8649785160C6A855D068C72A41DF65862BFC5561D7056596B + 0E3DB471711B4E27AA0885190D50810202E040AC15265DB5673357FDFD176094 + F80518607E79CCD7FF47CC5C3D0F913D3ED082894E3AE995E28A2D2EEDD76A87 + BDD6588DA125541D309C1D976469B5B5B64F684F0E996592C34DB964648FB961 + 81582CD5A60874EA01C68079243244A26D68A4F70138F658CC24557B5498E0A6 + C93BD8691F5D45B53C84D1D3E7012CE408EDE2AEBDFE3AA98C9FA5D6E38EC7AE + B6D871C32D936C61450623DAB7A15D66066B463E3B666457E6736FB3856D7B5B + 71585940451100D0C6A1769171C5AE6D4C51A58DEE08F8030E63E8D8F7DFF4D0 + E3D732A5ADD61CBE7CC7B30755D14B2ADD737BF6F8631D26F4001BF6D82D76DB + 6FBDFB0E17EEBFCB4E16EEDC7507776FDFC9E53D646009119EE5DCD71E16F9B3 + 3D86FB768F012F13FF6E69C07142140144D0438F01D031E516EB7E064616596E + F1C1BB0FE0286447D25B2123DF5453E55C55F855951FFF544527835FFCDF8F5F + 7EFF0301ADE0400001286162B253E002AD443D6E2D4F77100C17B77E27AD7288 + CC76C05B9BDCB045416471AB1C3320C40C2E382C10B2AD6C27FCD6CABA952D09 + 4A8F851764C00888B10A1529817B0D4181016ED186EB6C0305B2A8471B3A80A3 + 3F70611A96995AAAD2C3397F290D74A83A8FBFFA37C5A99D477F531B4FC33ED0 + 3A4B30108C614C0D03C858466A9591016443631AD5C8C619AC916C6D5C2319CF + 38473BBAD18E7104161CEB58C6DEB9F18D74DC231EEFF8C73B12B28F7764C50D + B5710A6EA00346B7FF601C76DAA5820ED8E1017FD883FCE0673FFD79327FF9EB + 2427FFD749FA81C094FC2243AA1EF1064744C0706294E52CA932476A8D8201B8 + 4CE3329631023406128EA318812F75F9CB41E67114C03C64318F694C3A8E020C + BE446332CBF8025F92ED1ED41AA620D958C6629A519969B4E520CF98CC6F92F1 + 050751910D5E873857CC631E3EBC0B5D5060081F484E9388809F13F775CAFC01 + 507E9C23DDFC064A50FFF5D31EFAE862BA12484B873E142987EC261987294D89 + CE209A23C0A844EF98C83C72D496D9B2A820C1804E8D9AB1A4141DA938E99852 + 8E36F3A5E19C2103C0C10A0844C07500C8992F2262170318A20FF5DC48478E68 + 8C7EDA4FA0A1D45FFFFE926AD0801654809C43041C1E100125D807A25985E808 + E0E14BAE7A7304BAACA8345F708C91BE800D66ADE80CC43AC7AEA2B59A66FDE6 + 4A554AC6B4BE209AF0982357C7EA55BD8E000C6078C10CB7C9578B6EF38E88F5 + 255ED728D8931EF218831D2B03BA5AC611A0551D8BC40213B4A187869C601B77 + A1884580E129595892004533EAC0F6E9CF8332D59FFD7B2A295BCBAFD541EC8B + 5AD5ED2CFBDA5BDFA215AD2360C30B8A015C36B06198C545AE6F2B3ADC8A0677 + B8C54D2E70954B5CE31E7798C0ED6D74C70ADC232C97B9CFADAE78A99BDDE55A + 77B8E945AF79D10A5EED0A97B86365072BC2D00126C8E170D3D9865D186788D2 + A260237CF9803E4AFF690F53AE929308562A2A153CC00693817F0D4E15841F01 + 8730B421B7BBD530037B6B4D6B66B7AFC37D8187D30B86F4B297B91F36F16547 + F0041207F7B2EA95B171337AE2BEBE77982286F16F9B6B5C16CF38C71F2EF18C + 9D0B5F1B1B19C5E605C317D0258744AC8B1728E8E14FDBD0D3F2D9A82FFA40C4 + 78C6C3BF01E24FC2A15C65830DCC49D2159493207804178052840DBF5981C02D + 001BE63CE7F4D219CF0568AF9D8F7B5D3BB7F7B87F0E749EF36C5C43CBB8CFE7 + A0F39E01BDE7E33EBACE8026B47A05DDE740BFE01CD71D6EA6896C694FDF59CF + 97E6B49FF1FC046930790D73104122F4E02257204322D73144BC6E6149473C80 + C0AE82F0AE79DDEBFF5E1B98D713F6F5B0814D064420E20F6E60822512016767 + 7B8D0D8265838B9F306DB48281DAD6AE76B6A98DD6636CFB18C3E5F60BB64D6E + 6D6BFBDA238E76B5D31AED688F78DCDB16ECB5CB5DEF7377FBDDF736B78BD3FB + 6D6DB3B8BDE136F1BC5D0C6F13EBBBC4EADEB7B95F508E1BA04B04B48032E328 + 6E97B9C8227238D28751DF376C8F0FFB7D0CEE352A3BEEEB29D8C3C2563D4543 + 9FDDF25DBDE0082F987331F04CF3E3D27CE635D7F9B64B3D6D36E0FCE73ACF79 + CE871BF3A2F7BCE8E6063AD08DEEE8A50B3DE8491F7AD073CEF3A91777CEEC86 + B9D2DBFBF4AAB3A1E95EFFF913C040B80372CF45BEB8C5DAB153DA21DEA868D3 + F8B8C9A7E0F129D4FF7DEE1F6FA523DAA00796BB1CF0573AAEA2073FED276CFB + F03E2F4001847BF86A9FC3F19197BCE3153D79C93F9AE790773CE6271FE83957 + DEE78F37BCE513FF78C72FFEF405E83CE2511FF9D03F21EBA33F2EE97D3EFAC3 + 83FEF0E1D8401DDA82F617495292D871451B54A0024C1238EFBBC6FBB0EBBEFC + E4379F0C5380C30722E0E4C05FFF4AC2557C01484167EE1BFEBBB047AEF7EDAC + FAC92F1EFDE957FFFAD50F69F4477EFDC85DBCE751EFF3EEB3BFFDF87F7FEA53 + AF7FFFFF1F00D12F109CA00E56040F7461A736053BFCCB1088AF2FE0E0113AE9 + EE94EFEE2A10FA20AC0229D0023370EE5A490B44E0EFB04F0453A31CE081FCD8 + 0FFE180FFF2C2F00FF5B50FD5250FF4ED0055D3005FB6F066FF0FF5E201CD4A2 + 0B6C000FD4C52150A0A72C0E18EA0105E88500DE600F5C6502317003E96EF936 + D002F30E11E6C30747100BEF430D026104D2EF08600FF5BE100CD36F0C614FF2 + 70700661300DBF100D5F90FF0EAF0DE310058F80C9BA800944401B10E77B444B + D67CE10454010995F002A34F0AA34F039D500A9B90104DEE111E8004DC2C0B23 + B13436C009A4E11C32C10B0BE0083491FD363113D76F134311FD3CB113D58F14 + 17EF1447911345311533911539D1154D711555F11303F0156F111655311559F1 + 18586103BA600EF0ABD5D041152262F826C271402502EC20091F610A13111AA3 + 511A37B01123E00AFF25111BABA20328311C18401651F1FF5AF11B6D311C4B11 + 1CCF711C49511CD7911673511CF14F1DDB311ED1B1163DF1081E2E16D040044E + C191A6639E26E2160CC114C087239A1111A7112113F2EE1EE10F9EC107F02B1B + 23322A6C6D03BE201C8A21136420146580233D91233912163FB22339512465C0 + FC8E00134E4F143B920D4D72136500136EF1238F80265731260B20133261233B + F2264311134412256500137551136F72248FA02469F2F036322761722535F227 + 67322A3F32267BD22651F2258F81074920E24EA1215441087F0A5E4C21B40211 + D814122DA5F1112A2C6B944022DFD2294E80231CA12203A118CE0126A7B224F7 + 722A31E127FD522FCD5DF227D12F2FF572F14A1230A9D22FA91231171324176F + 31139323FB1226F7B23227D3312BB32F071332F35224033331255331FFF23135 + 333367660114821B4223674E40CAD8CE00DCEE087104020F322D6FD302DF200C + 98002E7B532978A11E542002BEE1199CE006F0B22AA9122911332827132B93F3 + 339B9327A5D332B1522A97132A81B22AB1B2289F133B9BD33A9D723BAF933CC5 + 533B9F733AAF733BF5D23B411229BD332A8F200468A67026E6B3DA25D6FCCB17 + 5EA420DF20027113402D501F0880047CD3408D222000003B} + 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\Administraci'#243'n de puntos de venta' + 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/2.1.0/Source/Usuarios/uLoginForm.pas b/2.1.0/Source/Usuarios/uLoginForm.pas new file mode 100644 index 0000000..6f0cb5a --- /dev/null +++ b/2.1.0/Source/Usuarios/uLoginForm.pas @@ -0,0 +1,100 @@ +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; + Image1: TImage; + JvGradient1: TJvGradient; + Button1: TButton; + Timer1: TTimer; + JvAppRegistryStorage1: TJvAppRegistryStorage; + JvFormStorage1: TJvFormStorage; + 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, 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 válido. Compruebe si ha escrito correctamente' + + #13 + #10 + 'el usuario y la contraseña.', 'Atención', 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; + dmBase.ConfigurarConexion; +end; + +procedure TfLoginForm.FormShow(Sender: TObject); +begin + Self.Caption := Self.Caption + ' - ' + dmBase.DarVersion; + JvFormStorage1.RestoreFormPlacement; + // Hacer login automática si hay usuario/password y no hay más de una base + // de datos como opción 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/2.1.0/Source/Usuarios/uUsuario.dfm b/2.1.0/Source/Usuarios/uUsuario.dfm new file mode 100644 index 0000000..93fcc6e --- /dev/null +++ b/2.1.0/Source/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/2.1.0/Source/Usuarios/uUsuario.pas b/2.1.0/Source/Usuarios/uUsuario.pas new file mode 100644 index 0000000..90e722c --- /dev/null +++ b/2.1.0/Source/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/2.1.0/Source/Usuarios/uUsuarios.dfm b/2.1.0/Source/Usuarios/uUsuarios.dfm new file mode 100644 index 0000000..a2faae2 --- /dev/null +++ b/2.1.0/Source/Usuarios/uUsuarios.dfm @@ -0,0 +1,119 @@ +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 + DataTable = dmUsuarios.tbl_Usuarios + 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/2.1.0/Source/Usuarios/uUsuarios.pas b/2.1.0/Source/Usuarios/uUsuarios.pas new file mode 100644 index 0000000..dfad797 --- /dev/null +++ b/2.1.0/Source/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/2.1.0/Source/leeme.txt b/2.1.0/Source/leeme.txt new file mode 100644 index 0000000..a3637e2 --- /dev/null +++ b/2.1.0/Source/leeme.txt @@ -0,0 +1,5 @@ +El archivo uDADataTable.pas es una versión +modificada del original de Data Abstract 5 para +implementar el uso de Where en TDADataTable. + +Ver procedimiento OnWhereChange. \ No newline at end of file diff --git a/2.1.0/Source/uDADataTable.pas b/2.1.0/Source/uDADataTable.pas new file mode 100644 index 0000000..bb94913 --- /dev/null +++ b/2.1.0/Source/uDADataTable.pas @@ -0,0 +1,4645 @@ +unit uDADataTable; + +{----------------------------------------------------------------------------} +{ Data Abstract Library - Core Library } +{ } +{ compiler: Delphi 6 and up, Kylix 3 and up } +{ platform: Win32, Linux } +{ } +{ (c)opyright RemObjects Software. all rights reserved. } +{ } +{ Using this code requires a valid license of the Data Abstract } +{ which can be obtained at http://www.remobjects.com. } +{----------------------------------------------------------------------------} + +{$I DataAbstract.inc} + +interface + +uses + Classes, DB, Contnrs, SysUtils, + {$IFDEF MSWINDOWS}ActiveX,{$ENDIF} + uRODL, uROTypes, uROClasses, uROClientIntf, uRODynamicRequest,uDAExpressionEvaluator, + uDAInterfaces, uDAClasses, uDAEngine, uDAScriptingProvider, uDADataStreamer, uDADelta, + DataAbstract3_Intf, DataAbstract4_Intf,uDAWhere; + +const + RecIDFieldName = 'RecID'; // Do not change! + AllChanges = [ctInsert, ctUpdate, ctDelete]; + +type + //ToDo: remove and replace these three with TRO(Dynamic)Request* + TDARemoteRequest = TRODynamicRequest; + TDARemoteRequestParam = TRORequestParam; + TDARemoteRequestParams = TRORequestParamCollection; + + { Other types } + float = double; + datetime = TDateTime; + + TDADataTable = class; + TDatasetClass = class of TDataset; + TDADataTableRules = class; + + TDADataTableNotifyEvent = procedure(DataTable: TDADataTable) of object; + TDADataTableFilterEvent = procedure(DataTable: TDADataTable; var Accept: Boolean) of object; + TDADataTableErrorEvent = procedure(DataTable: TDADataTable; Error: EDatabaseError; var Action: TDataAction) of object; + TDADataTableDynamicMethodEvent = procedure(DataTable: TDADataTable; const aMessage: IROMessage) of object; + TDADataTableRemoteRequestEvent = procedure(DataTable: TDADataTable; Request: TDARemoteRequest) of object; + TDADataTableDataChangeEvent = procedure(DataTable: TDADataTable; Field: TDAField) of object; + TDADataRequestStreamEvent = procedure(DataTable: TDADataTable; Stream: TStream) of object; + + //TDADelta = class; + + TDAApplyUpdatesError = procedure(DataTable: TDADataTable; const Delta: IDADelta; var Ignore: boolean) of object; + TDAAfterApplyUpdatesEvent = procedure(DataTable: TDADataTable; const Delta: IDADelta) of object; + TDABeforeApplyUpdatesEvent = procedure(DataTable: TDADataTable; const Delta: IDADelta) of object; + + TDADetailOption = (dtCascadeOpenClose, + dtCascadeApplyUpdates, + dtAutoFetch, + dtCascadeDelete, + dtCascadeUpdate, + dtDisableLogOfCascadeDeletes, + dtDisableLogOfCascadeUpdates, + dtIncludeInAllInOneFetch); + TDADetailOptions = set of TDADetailOption; + + TDAMasterOption = (moCascadeOpenClose, + moCascadeApplyUpdates, + moCascadeDelete, + moCascadeUpdate, + moDisableLogOfCascadeDeletes, + moDisableLogOfCascadeUpdates, + moAllInOneFetch); + + TDAMasterOptions = set of TDAMasterOption; + + TDAStreamingOption = (soIgnoreStreamSchema, soDisableEventsWhileStreaming); + TDAStreamingOptions = set of TDAStreamingOption; + + TDARemoteUpdatesOption = (ruoOnPost); + TDARemoteUpdatesOptions = set of TDARemoteUpdatesOption; + + TDABaseRemoteDataAdapter = class(TComponent) + protected + function GetDataStreamer: TDADataStreamer; virtual; abstract; + + { backward compatibility: to provide access to these in the legacy events } + function Get_GetSchemaCall: TDARemoteRequest; virtual; + function Get_GetDataCall: TDARemoteRequest; virtual; + function Get_UpdateDataCall: TDARemoteRequest; virtual; + function Get_GetScriptsCall: TDARemoteRequest; virtual; + public + function ApplyUpdates(aTables: array of TDADataTable; aRefetchAll: boolean = false): boolean; virtual; abstract; + procedure Fill(aTables: array of TDADataTable; aSaveCursor: boolean; aIncludeSchema: boolean); virtual; abstract; + procedure FillSchema(aTables: array of TDADataTable; aPreserveLookupFields: boolean = false; areserveClientCalcFields : boolean = false); virtual; abstract; + procedure FillScripts(aTables: array of TDADataTable); virtual; abstract; + + property DataStreamer: TDADataStreamer read GetDataStreamer; + end; + + { IDADataTableDataset } + IDADataTableDataset = interface + ['{3BADA4F8-BA32-411C-A7CD-DEBD10A4AF06}'] + function GetDataTable: TDADataTable; safecall; + end; + + { IDARangeController } + IDARangeController = interface + ['{5A182854-B824-496F-80C2-6F8064003E13}'] + procedure ApplyRange; safecall; + procedure CancelRange; safecall; + procedure SetRange(const StartValues, EndValues: array of const); safecall; + procedure EditRangeEnd; safecall; + procedure EditRangeStart; safecall; + procedure SetRangeEnd; safecall; + procedure SetRangeStart; safecall; + end; + + { IDANativeDatasetStreaming } + TDANativeDataFormat = (ndfBinary, ndfXML); + IDANativeDatasetStreaming = interface + ['{00B37B20-23DA-49A5-BB5D-B96E50C210F4}'] + procedure NativeSaveToFile(const aFileName : string; DataFormat : TDANativeDataFormat = ndfBinary); + procedure NativeLoadFromFile(const aFileName : string); + procedure NativeSaveToStream(aStream : TStream; DataFormat : TDANativeDataFormat = ndfBinary); + procedure NativeLoadFromStream(aStream : TStream); + end; + + + { TDADataSource } + TDADataSource = class(TDABaseDataSource) + private + fDataTable: TDADataTable; + + function GetDataset: TDataset; + procedure SetDataTable(const Value: TDADataTable); + procedure SetDataset(const Value: TDataset); + function GetOpening: boolean; + function GetActive: boolean; + + protected + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + + property Dataset: TDataset read GetDataset write SetDataset; // hide base class property + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + + property Opening: boolean read GetOpening; + property Active: boolean read GetActive; + published + property DataTable: TDADataTable read fDataTable write SetDataTable; + end; + + { TDADataTable } + TDASortDirection = (sdAscending, sdDescending); + TDAMasterMappingMode = (mmDataRequest, mmParams, mmWhere); + + TDASortDirectionArray = array of TDASortDirection; + TStringArray = array of string; + + IDADataTableScriptingProvider = interface(IDAScriptingProvider) + ['{E16B7359-C733-4F09-96A8-10527CFABB6D}'] + procedure RunDataTableScript(aDataTable: TDADataTable; const aScript: string; const aMethod: string; aLanguage:TROSEScriptLanguage); + end; + + TAutoIncArray = array of Int64; + + {$WARN SYMBOL_DEPRECATED OFF} + TDADataTable = class(TScriptableComponent, {$IFDEF MSWINDOWS}ISupportErrorInfo,{$ENDIF} IDADataTable, IDASQLCommand, IDADataset, IDAEditableDataset, IDADeltaOwner, IDADataReader, IDADatasetEx) + private + fCurrRecId: integer; + + fMasterLink: TMasterDataLink; + + fDelta: IDADelta; + fWhere: TDAWhere; + + fRecIDField: TIntegerField; + + fStreamedActive, + fRefreshing, + fOpening: boolean; + + fDataset: TDataset; + + fFields: TDAFieldCollection; + + fAfterEdit: TDADataTableNotifyEvent; + fAfterInsert: TDADataTableNotifyEvent; + fAfterDelete: TDADataTableNotifyEvent; + fBeforeScroll: TDADataTableNotifyEvent; + fAfterClose: TDADataTableNotifyEvent; + fBeforePost: TDADataTableNotifyEvent; + fAfterScroll: TDADataTableNotifyEvent; + fBeforeCancel: TDADataTableNotifyEvent; + fBeforeRefresh: TDADataTableNotifyEvent; + fBeforeOpen: TDADataTableNotifyEvent; + fAfterRefresh: TDADataTableNotifyEvent; + fAfterOpen: TDADataTableNotifyEvent; + fBeforeEdit: TDADataTableNotifyEvent; + fBeforeClose: TDADataTableNotifyEvent; + fBeforeDelete: TDADataTableNotifyEvent; + fAfterPost: TDADataTableNotifyEvent; + fOnCalcFields: TDADataTableNotifyEvent; + fOnNewRecord: TDADataTableNotifyEvent; + fAfterCancel: TDADataTableNotifyEvent; + fBeforeInsert: TDADataTableNotifyEvent; + fOnFilterRecord: TDADataTableFilterEvent; + fOnEditError: TDADataTableErrorEvent; + fOnDeleteError: TDADataTableErrorEvent; + fOnPostError: TDADataTableErrorEvent; + fBeforeFieldChange: TDADataTableDataChangeEvent; + fAfterFieldChange: TDADataTableDataChangeEvent; + fLogChanges: boolean; + + fRemoteFetchEnabled: boolean; + fSortDirections: TDASortDirectionArray; + fSortFieldNames: TStringArray; + fParams: TDAParamCollection; + + fFetchedMasters: TStringList; + + fMasterParamsMappings, + fMasterRequestMappings: TStringList; + fDynamicWhere: TDAWhereBuilder; + + fDetailOptions: TDADetailOptions; + fMasterOptions: TDAMasterOptions; + fLogicalName: string; + fClosing: boolean; + fFetching: boolean; + fStreaming: boolean; + fOnAfterSchemaCall: TDADataTableRemoteRequestEvent; + fOnAfterDataRequestCall: TDADataTableRemoteRequestEvent; + fOnBeforeSchemaCall: TDADataTableRemoteRequestEvent; + fOnBeforeDataRequestCall: TDADataTableRemoteRequestEvent; + fOnBeforeDataUpdateCall: TDADataTableRemoteRequestEvent; + fOnAfterDataUpdateCall: TDADataTableRemoteRequestEvent; + //fOnApplyUpdatesError: TDAApplyUpdatesError; + fOnReceiveDataStream: TDADataRequestStreamEvent; + fStreamingOptions: TDAStreamingOptions; + fRemoteUpdateOptions: TDARemoteUpdatesOptions; + fLocalSchema: TDASchema; + fLocalConnection: string; + + fBusinessRulesID: string; + fBusinessRules: TDADataTableRules; + fFieldRules: TObjectList; + + fAutoIncs : TAutoIncArray; + fOnAfterApplyUpdates: TDADataTableNotifyEvent; + fOnBeforeApplyUpdates: TDABeforeApplyUpdatesEvent; + fMasterMappingMode: TDAMasterMappingMode; + fMaxRecords: integer; + fOnBeforeMergeDelta: TDADataTableNotifyEvent; + fOnAfterMergeDelta: TDADataTableNotifyEvent; + fStoreActive: boolean; + fScriptCode: TStrings; + fOnBeforeScriptCall: TDADataTableRemoteRequestEvent; + fOnAfterScriptCall: TDADataTableRemoteRequestEvent; + + fOpenTick: cardinal; + fAfterOpenIDataset: TDAAfterOpenDatasetEvent; + fBeforeOpenIDataset: TDABeforeOpenDatasetEvent; + + fRemoteDataAdapter: TDABaseRemoteDataAdapter; + fLocalDataStreamer: TDADataStreamer; + fCustomAttributes: TStrings; + fExpressionEvaluator: TDAStdExpressionEvaluator; + fHasReducedDelta: Boolean; + procedure SetLocalDataStreamer(const Value: TDADataStreamer); + procedure SetRemoteDataAdapter(const Value: TDABaseRemoteDataAdapter); + + procedure SetLogChanges(const Value: boolean); + function GetDataset: TDataset; safecall; + function GetFields: TDAFieldCollection; safecall; + procedure SetFields(const Value: TDAFieldCollection); + function GetActive: boolean; safecall; + procedure SetActive(Value: boolean); safecall; + function GetLogChanges: boolean; + procedure SetParams(const Value: TDAParamCollection); + function GetEditing: boolean; + function GetMasterRequestMappings: TStrings; + procedure SetMasterRequestMappings(const Value: TStrings); + + procedure TempSetRowRecIDValue(Sender: TDataset); + + procedure SetLocalSchema(const Value: TDASchema); + procedure LoadFromLocalSchema; + + procedure SetBusinessRulesID(const Value: string); + function GetHasDelta: boolean; + function GetHasDeltaRecursive: boolean; + function GetRecNo: integer; + procedure SetRecNo(const Value: integer); + + { published property accessors cannot be safecall, so we need wrappers: } + function GetFieldsProperty: TDAFieldCollection; + function GetActiveProperty: boolean; + procedure SetActiveProperty(const Value: boolean); + function GetParamsProperty: TDAParamCollection; + function GetMasterParamsMappings: TStrings; + procedure SetMasterParamsMappings(const Value: TStrings); + + procedure PackAllInOneFetchInfoArray(aDataTable : TDADataTable; OutArray: TDADatasetRequestInfoArray); + procedure OnWhereChange(Sender: TObject); + procedure SetScriptCode(const Value: TStrings); + function GetDeltaInitialized: boolean; + procedure SetCustomAttributes(const Value: TStrings); + function Local_ApplyUpdates(RefetchAll: boolean = FALSE): boolean; + procedure InternalCancelUpdateChange(Change: TDADeltaChange); + procedure ExpessionEvaluatorGetValue(Sender: TDAExpressionEvaluator; const aIdentifier: string; out aValue: Variant); + procedure DoCascadeRemoteAllInOneFetch(aStreamer: TDADataStreamer); + protected + function CreateAutoIncArray: TAutoIncArray; + function GetAutoIncs: TAutoIncArray; virtual; + procedure SetAutoIncs(const Value: TAutoIncArray); virtual; + + property AutoIncs: TAutoIncArray read GetAutoIncs write SetAutoIncs; + + function GetCurrRecId: integer; virtual; + procedure SetCurrRecId(const Value: integer); virtual; + + procedure Loaded; override; + + // To override + function GetDatasetClass: TDatasetClass; virtual; abstract; + procedure CreateInternalFields(aDataset: TDataset; someFieldDefinitions: TDAFieldCollection); virtual; + procedure DoRefresh(aDataset: TDataset); + procedure DoSort(const FieldNames: array of string; const Directions: array of TDASortDirection); virtual; abstract; + + procedure SetMasterSource(const Value: TDADataSource); virtual; + function GetMasterSource: TDADataSource; virtual; abstract; + procedure SetDetailsFields(const Value: string); virtual; abstract; + procedure SetMasterFields(const Value: string); virtual; + function GetDetailFields: string; virtual; abstract; + function GetMasterFields: string; virtual; abstract; + + function GetFilter: string; virtual; abstract; + function GetFiltered: boolean; virtual; abstract; + procedure SetFilter(const Value: string); virtual; abstract; + procedure SetFiltered(const Value: boolean); virtual; abstract; + + function GetReadOnly: boolean; virtual; + procedure SetReadOnly(const Value: boolean); virtual; + + procedure AttachEventHooks(aDataset: TDataset); virtual; + procedure DetachEventHooks(aDataset: TDataset); virtual; + + // Internal + procedure DoBeforeOpenDataset; virtual; + procedure DoBeforeCloseDataset; virtual; + procedure DoAfterOpenDataset; virtual; + procedure DoAfterCloseDataset; virtual; + procedure DoOpen(IgnoreAutoFetchSettings: Boolean = False); virtual; + + // Internal TDataset event handler hooks + procedure InternalAfterInsert(Sender: TDataset); dynamic; + procedure InternalAfterEdit(Sender: TDataset); dynamic; + procedure InternalBeforePost(Sender: TDataset); dynamic; + procedure InternalBeforeCancel(Sender: TDataset); dynamic; + procedure InternalAfterDelete(Sender: TDataset); dynamic; + procedure InternalBeforeScroll(Sender: TDataset); dynamic; + procedure InternalAfterScroll(Sender: TDataset); dynamic; + procedure InternalBeforeRefresh(Sender: TDataset); dynamic; + procedure InternalAfterRefresh(Sender: TDataset); dynamic; + procedure InternalOnCalcFields(Sender: TDataset); dynamic; + procedure InternalOnNewRecord(Sender: TDataset); dynamic; + procedure InternalAfterCancel(Sender: TDataset); dynamic; + procedure InternalBeforeInsert(Sender: TDataset); dynamic; + procedure InternalBeforeDelete(Sender: TDataset); dynamic; + procedure InternalBeforeEdit(Sender: TDataset); dynamic; + procedure InternalAfterPost(Sender: TDataset); dynamic; + procedure InternalBeforeFieldUpdate(Sender: TDACustomField); + procedure InternalAfterFieldUpdate(Sender: TDACustomField); + + procedure InternalOnFilterRecord(Dataset: TDataset; var Accept: Boolean); dynamic; + + procedure InternalOnDeleteError(DataSet: TDataSet; Error: EDatabaseError; var Action: TDataAction); dynamic; + procedure InternalOnEditError(DataSet: TDataSet; Error: EDatabaseError; var Action: TDataAction); dynamic; + procedure InternalOnPostError(DataSet: TDataSet; Error: EDatabaseError; var Action: TDataAction); dynamic; + + // IDASQLCommand + function GetParams: TDAParamCollection; safecall; + procedure RefreshParams; safecall; + function Execute: integer; safecall; + function GetText: string; safecall; + procedure SetText(const Value: string); safecall; + function GetName: string; safecall; + + // IDADeltaOwner + function GetDelta: IDADelta; safecall; + + // IDADataReader + function IDADataReader.First = DataReaderFirst; + function IDADataReader.Next = DataReaderNext; + function DataReaderFirst: boolean; safecall; + function DataReaderNext: boolean; safecall; + + function GetFieldNames(Index: integer): string; safecall; + function GetFieldIndexes(const aName: string): integer; safecall; + function GetAsBoolean(Index: integer): boolean; overload; safecall; + function GetAsCurrency(Index: integer): currency; overload; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAsDateTime(Index: integer): TDateTime; overload; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAsFloat(Index: integer): double; overload; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAsInteger(Index: integer): integer; overload; safecall; + function GetAsString(Index: integer): string; overload; safecall; + function GetAsVariant(Index: integer): variant; overload; safecall; + function GetAsBoolean(const FieldName: string): boolean; overload; safecall; + function GetAsCurrency(const FieldName: string): currency; overload; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAsDateTime(const FieldName: string): TDateTime; overload; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAsFloat(const FieldName: string): double; overload; {$IFNDEF FPC_SAFECALL_BUG}safecall;{$ENDIF} + function GetAsInteger(const FieldName: string): integer; overload; safecall; + function GetAsString(const FieldName: string): string; overload; safecall; + function GetAsVariant(const FieldName: string): variant; overload; safecall; + + // IDADataset + function GetIsEmpty: boolean; safecall; + function GetRecordCount: integer; safecall; + function GetFieldCount: integer; safecall; + function GetBOF: boolean; safecall; + function GetEOF: boolean; safecall; + function GetSQL: string; safecall; + procedure SetSQL(const Value: string); safecall; + function GetFieldValues(Index: integer): Variant; safecall; + function GetNames(Index: integer): string; safecall; + function GetWhere: TDAWhere; safecall; deprecated; + function GetDynamicWhere: TDAWhereBuilder; safecall; + procedure SetDynamicWhere(const Value: TDAWhereBuilder);safecall; + function GetPrepared: boolean; safecall; + procedure SetPrepared(Value: boolean); safecall; + function GetState: TDataSetState; safecall; + function GetLogicalName: string; safecall; + procedure SetLogicalName(aName : string); safecall; + + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + + procedure OnMasterChange(Sender: TObject); virtual; + procedure OnMasterDisable(Sender: TObject); virtual; + + function GetOnAfterOpen: TDAAfterOpenDatasetEvent; safecall; + function GetOnBeforeOpen: TDABeforeOpenDatasetEvent; safecall; + procedure SetOnAfterOpen(const Value: TDAAfterOpenDatasetEvent); safecall; + procedure SetOnBeforeOpen(const Value: TDABeforeOpenDatasetEvent); safecall; + + function GetOnAfterExecute: TDAAfterExecuteCommandEvent; safecall; + function GetOnBeforeExecute: TDABeforeExecuteCommandEvent; safecall; + procedure SetOnAfterExecute(const Value: TDAAfterExecuteCommandEvent); safecall; + procedure SetOnBeforeExecute(const Value: TDABeforeExecuteCommandEvent); safecall; + function GetOnExecuteError: TDAExecuteCommandErrorEvent; safecall; + procedure SetOnExecuteError(const Value: TDAExecuteCommandErrorEvent); safecall; + function GetOnOpenError: TDAOpenDatasetErrorEvent; safecall; + procedure SetOnOpenError(const Value: TDAOpenDatasetErrorEvent); safecall; + + procedure NotifyFieldsClear; + + // IInterface + function QueryInterface(const IID: TGUID; out Obj): HResult; override; + + property MasterLink: TMasterDataLink read fMasterLink; + + {$IFDEF MSWINDOWS} + protected + function InterfaceSupportsErrorInfo(const iid: TGUID): HResult; stdcall; + + public + function SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; override; + {$ENDIF} + + public { for Delta } + property RecIDField : TIntegerField read fRecIDField write fRecIDField; + function GetRowRecIDValue: integer; + + + procedure CallScript(const aEvent: string); + + procedure InitializeDataTable; + procedure DoCascadeOperation(aStreamer: TDADataStreamer; aOption: TDAMasterOption); + procedure WriteDeltaToStream(aStreamer: TDADataStreamer); + procedure ReadDeltaFromStream(aStreamer: TDADataStreamer; aFailedDeltas:TList);overload; + procedure ReadDeltaFromStream(aStreamer: TDADataStreamer); overload; + + public + constructor Create(aOwner: TComponent); override; + destructor Destroy; override; + + procedure EnableConstraints; virtual; safecall; abstract; + procedure DisableConstraints; virtual; safecall; abstract; + + procedure LoadFromRemoteSource(BookmarkPosition: boolean = FALSE); virtual; + procedure FetchMastersDetails(aMasterTable : TDADataTable = NIL; aRequestMappings : TStrings = NIL; IgnoreAutoFetchSettings : Boolean = False); dynamic; + procedure LoadSchema(PreserveLookupFields : boolean = FALSE; PreserveClientCalcFields : boolean = FALSE); + procedure LoadScript(aDatasetName : string = ''); + + function ApplyUpdates(RefetchAll: boolean = FALSE): boolean; dynamic; + procedure CancelUpdates(IncludeDetails : boolean = TRUE); + procedure CancelUpdateChange(Change: TDADeltaChange;IncludeDetails : boolean = TRUE); + + procedure Sort(const FieldNames: array of string; const Directions: array of TDASortDirection); + procedure UnSort; + + procedure ClearFields; + procedure ClearRows; + + procedure CloneSelectedRecord(Source: TDADataTable; DoPost: boolean = TRUE); overload; + procedure CloneSelectedRecord(const Source: IDADataset; DoPost: boolean = TRUE); overload; + + procedure SaveToStream(aStream: TStream); + procedure LoadFromStream(aStream: TStream); + procedure SaveToFile(const aFileName: string); + procedure LoadFromFile(const aFileName: string); + + procedure MergeDelta; virtual; + + // Master detail + function GetDetailDataTables: TList; + function GetDetailTablesforApplyUpdate(aRecursive: boolean = True): TList; + procedure GetDetailTablesforAllinOneFetch(aRemote, aLocal:TList; aRecursive: boolean); + function GetMasterDataTable : TDADataTable; + + // Methods + procedure Open; safecall; + procedure Close; safecall; + + procedure EnableControls; safecall; + procedure DisableControls; safecall; + + procedure Next; safecall; + + procedure Edit; safecall; + procedure Insert; safecall; + procedure Post; safecall; + procedure Cancel; safecall; + procedure Append; safecall; + procedure Delete; safecall; + + procedure Prior; safecall; + procedure First; safecall; + procedure Last; safecall; + + procedure Refresh; safecall; + + function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; safecall; + function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; safecall; + + function FieldByName(const aName: string): TDAField; safecall; + function FindField(const aName: string): TDAField; safecall; + function ParamByName(const aName: string): TDAParam; safecall; + + function GetBookmark: pointer; safecall; + procedure GotoBookmark(Bookmark: TBookmark); safecall; + procedure FreeBookmark(Bookmark: TBookmark); safecall; + + procedure EnableEventHandlers; safecall; + procedure DisableEventHandlers; safecall; + + procedure InternalSetFetching(aFetching: boolean); + + procedure AddRecord(const FieldNames : array of string; const FieldValues : array of Variant); safecall; + + function GetCurrentRecIdValue: integer; + procedure SetCurrentRecIdValue(Value: integer); + + // Properties + property CurrRecId: integer read GetCurrRecId write SetCurrRecId; + property RecIDValue: integer read GetRowRecIDValue; + property Delta: IDADelta read GetDelta write fDelta; + property RecNo : integer read GetRecNo write SetRecNo; + + property BOF: boolean read GetBOF; + property EOF: boolean read GetEOF; + property RecordCount: integer read GetRecordCount; + property FieldCount: integer read GetFieldCount; + property FieldValues[Index: integer]: Variant read GetFieldValues; + property Names[Index: integer]: string read GetNames; + + property SortFieldNames: TStringArray read fSortFieldNames; + property SortDirections: TDASortDirectionArray read fSortDirections; + + property Opening: boolean read fOpening; + property Closing: boolean read fClosing; + property Editing: boolean read GetEditing; + property Fetching: boolean read fFetching; + + property State: TDataSetState read GetState; + property Dataset: TDataset read GetDataset; + + property IsEmpty : boolean read GetIsEmpty; + + property BusinessEventsObj: TDADataTableRules read fBusinessRules; + + property HasDelta: boolean read GetHasDelta; + property HasDeltaRecursive: boolean read GetHasDeltaRecursive; + property DeltaInitialized: boolean read GetDeltaInitialized; + + property Where : TDAWhere read GetWhere; + property DynamicWhere: TDAWhereBuilder read GetDynamicWhere write SetDynamicWhere; + procedure CheckProperties(ACheckRemoteFetching: Boolean=False); virtual; + property HasReducedDelta: boolean read fHasReducedDelta; + published + property Active: boolean read GetActiveProperty write SetActiveProperty stored fStoreActive default false; + property StoreActive: boolean read fStoreActive write fStoreActive default false; + + property RemoteUpdatesOptions: TDARemoteUpdatesOptions read fRemoteUpdateOptions write fRemoteUpdateOptions; + + property MaxRecords : integer read fMaxRecords write fMaxRecords default -1; + + property Fields: TDAFieldCollection read GetFieldsProperty write SetFields; + property Params: TDAParamCollection read GetParamsProperty write SetParams; + + property MasterMappingMode : TDAMasterMappingMode read fMasterMappingMode write fMasterMappingMode default mmParams; + property MasterParamsMappings : TStrings read GetMasterParamsMappings write SetMasterParamsMappings; + + property LogChanges: boolean read GetLogChanges write SetLogChanges default true; + property StreamingOptions: TDAStreamingOptions read fStreamingOptions write fStreamingOptions; + property RemoteFetchEnabled: boolean read fRemoteFetchEnabled write fRemoteFetchEnabled default true; + + property ScriptCode : TStrings read fScriptCode write SetScriptCode; + property CustomAttributes : TStrings read fCustomAttributes write SetCustomAttributes; + + property RemoteDataAdapter: TDABaseRemoteDataAdapter read fRemoteDataAdapter write SetRemoteDataAdapter; + + property BeforeOpen: TDADataTableNotifyEvent read fBeforeOpen write fBeforeOpen; + property AfterOpen: TDADataTableNotifyEvent read fAfterOpen write fAfterOpen; + property BeforeClose: TDADataTableNotifyEvent read fBeforeClose write fBeforeClose; + property AfterClose: TDADataTableNotifyEvent read fAfterClose write fAfterClose; + property BeforeInsert: TDADataTableNotifyEvent read fBeforeInsert write fBeforeInsert; + property AfterInsert: TDADataTableNotifyEvent read fAfterInsert write fAfterInsert; + property BeforeEdit: TDADataTableNotifyEvent read fBeforeEdit write fBeforeEdit; + property AfterEdit: TDADataTableNotifyEvent read fAfterEdit write fAfterEdit; + property BeforePost: TDADataTableNotifyEvent read fBeforePost write fBeforePost; + property AfterPost: TDADataTableNotifyEvent read fAfterPost write fAfterPost; + property BeforeCancel: TDADataTableNotifyEvent read fBeforeCancel write fBeforeCancel; + property AfterCancel: TDADataTableNotifyEvent read fAfterCancel write fAfterCancel; + property BeforeDelete: TDADataTableNotifyEvent read fBeforeDelete write fBeforeDelete; + property AfterDelete: TDADataTableNotifyEvent read fAfterDelete write fAfterDelete; + property BeforeScroll: TDADataTableNotifyEvent read fBeforeScroll write fBeforeScroll; + property AfterScroll: TDADataTableNotifyEvent read fAfterScroll write fAfterScroll; + property BeforeRefresh: TDADataTableNotifyEvent read fBeforeRefresh write fBeforeRefresh; + property AfterRefresh: TDADataTableNotifyEvent read fAfterRefresh write fAfterRefresh; + property OnCalcFields: TDADataTableNotifyEvent read fOnCalcFields write fOnCalcFields; + property OnNewRecord: TDADataTableNotifyEvent read fOnNewRecord write fOnNewRecord; + + property OnFilterRecord: TDADataTableFilterEvent read fOnFilterRecord write fOnFilterRecord; + + property ReadOnly : boolean read GetReadOnly write SetReadOnly; + + property OnDeleteError: TDADataTableErrorEvent read fOnDeleteError write fOnDeleteError; + property OnEditError: TDADataTableErrorEvent read fOnEditError write fOnEditError; + property OnPostError: TDADataTableErrorEvent read fOnPostError write fOnPostError; + + property LocalSchema: TDASchema read fLocalSchema write SetLocalSchema; + property LocalDataStreamer: TDADataStreamer read fLocalDataStreamer write SetLocalDataStreamer; + property LocalConnection: string read fLocalConnection write fLocalConnection; + + property MasterSource: TDADataSource read GetMasterSource write SetMasterSource; + property MasterFields: string read GetMasterFields write SetMasterFields; + property DetailFields: string read GetDetailFields write SetDetailsFields; + property MasterRequestMappings: TStrings read GetMasterRequestMappings write SetMasterRequestMappings; + + property DetailOptions: TDADetailOptions read fDetailOptions write fDetailOptions; + property MasterOptions: TDAMasterOptions read fMasterOptions write fMasterOptions; + + property Filtered: boolean read GetFiltered write SetFiltered default false; + property Filter: string read GetFilter write SetFilter; + + property LogicalName: string read fLogicalName write fLogicalName; + + //property OnApplyUpdatesError: TDAApplyUpdatesError read fOnApplyUpdatesError write fOnApplyUpdatesError; + + property OnAfterApplyUpdates : TDADataTableNotifyEvent read fOnAfterApplyUpdates write fOnAfterApplyUpdates; + property OnBeforeApplyUpdates : TDABeforeApplyUpdatesEvent read fOnBeforeApplyUpdates write fOnBeforeApplyUpdates; + property OnBeforeMergeDelta : TDADataTableNotifyEvent read fOnBeforeMergeDelta write fOnBeforeMergeDelta; + property OnAfterMergeDelta : TDADataTableNotifyEvent read fOnAfterMergeDelta write fOnAfterMergeDelta; + + property OnBeforeDataRequestCall: TDADataTableRemoteRequestEvent read fOnBeforeDataRequestCall write fOnBeforeDataRequestCall; + property OnAfterDataRequestCall: TDADataTableRemoteRequestEvent read fOnAfterDataRequestCall write fOnAfterDataRequestCall; + property OnBeforeDataUpdateCall: TDADataTableRemoteRequestEvent read fOnBeforeDataUpdateCall write fOnBeforeDataUpdateCall; + property OnAfterDataUpdateCall: TDADataTableRemoteRequestEvent read fOnAfterDataUpdateCall write fOnAfterDataUpdateCall; + property OnBeforeSchemaCall: TDADataTableRemoteRequestEvent read fOnBeforeSchemaCall write fOnBeforeSchemaCall; + property OnAfterSchemaCall: TDADataTableRemoteRequestEvent read fOnAfterSchemaCall write fOnAfterSchemaCall; + property OnBeforeScriptCall: TDADataTableRemoteRequestEvent read fOnBeforeScriptCall write fOnBeforeScriptCall; + property OnAfterScriptCall: TDADataTableRemoteRequestEvent read fOnAfterScriptCall write fOnAfterScriptCall; + + property OnReceiveDataStream: TDADataRequestStreamEvent read fOnReceiveDataStream write fOnReceiveDataStream; + + property OnBeforeFieldChange: TDADataTableDataChangeEvent read fBeforeFieldChange write fBeforeFieldChange; + property OnAfterFieldChange: TDADataTableDataChangeEvent read fAfterFieldChange write fAfterFieldChange; + property BusinessRulesID: string read fBusinessRulesID write SetBusinessRulesID; + end; + + TDADataTableClass = class of TDADataTable; + {$WARN SYMBOL_DEPRECATED ON} + + { Exceptions } + EDABizValidationException = class(EROException); + + { TDABusinessRules } + TDABusinessRules = class(TDAEngineBaseObject) + private + protected + function _AddRef: Integer; override; + function _Release: Integer; override; + + public + constructor Create; virtual; + destructor Destroy; override; + + end; + + IDAStronglyTypedDataTable = interface + ['{4D4063AA-DFD0-4B4D-8CC2-FCE3BE1D2F87}'] + procedure Open; + procedure Close; + + function GetActive: boolean; + procedure SetActive(const Value: boolean); + + property Active: boolean read GetActive write SetActive; + + procedure Append; + procedure Cancel; + procedure Delete; + procedure Edit; + procedure First; + procedure Insert; + procedure Last; + procedure Next; + procedure Post; + procedure Prior; + + function Locate(const aKeyFields: string; const aKeyValues: Variant; aOptions: TLocateOptions = []): Boolean; + function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; + + function GetDataTable : TDADataTable; + + function GetState : TDatasetState; + function GetIsEmpty : boolean; + function GetRecNo : integer; + procedure SetRecNo(Value : integer); + function GetMasterOptions : TDAMasterOptions; + procedure SetMasterOptions(Value : TDAMasterOptions); + function GetDetailOptions : TDADetailOptions; + procedure SetDetailOptions(Value : TDADetailOptions); + + function IsFieldNull(const FieldIndexOrName : Variant) : boolean; + procedure ClearField(const FieldIndexOrName : Variant); + + function GetBOF: boolean; + function GetEOF: boolean; + function GetRecordCount: integer; + + property BOF: boolean read GetBOF; + property EOF: boolean read GetEOF; + property RecordCount: integer read GetRecordCount; + property RecNo : integer read GetRecNo write SetRecNo; + + property MasterOptions : TDAMasterOptions read GetMasterOptions write SetMasterOptions; + property DetailOptions : TDADetailOptions read GetDetailOptions write SetDetailOptions; + + property IsEmpty : boolean read GetIsEmpty; + property State : TDatasetState read GetState; + property DataTable : TDADataTable read GetDataTable; + end; + + { TDAFieldRules } + TDAFieldRules = class(TDABusinessRules) + private + fField : TDAField; + fDataTable : TDADataTable; + + protected + // Misc + procedure Attach(aDataTable: TDADataTable); virtual; + procedure Detach(aDataTable: TDADataTable); virtual; + + // Event handler hooks + procedure OnValidate(Sender: TDACustomField); virtual; + procedure OnChange(Sender: TDACustomField); virtual; + + property DataTable : TDADataTable read fDataTable; + + public + constructor Create(aField : TDAField; aDataTable : TDADataTable); reintroduce; virtual; + destructor Destroy; override; + end; + + TDAFieldRulesClass = class of TDAFieldRules; + + { TDADataTableRules } + TDADataTableRules = class(TDABusinessRules, IDAStronglyTypedDataTable, IDARangeController) + private + fDataTable: TDADataTable; + fDetails : TStringList; + + function GetDetails(Index: integer): TDADataTable; + function GetDetailsCount: integer; + + protected + // Misc + function GetDataTable: TDADataTable; + procedure Attach(aDataTable: TDADataTable); virtual; + procedure Detach(aDataTable: TDADataTable); virtual; + + procedure RefreshDetails; + + function FindDetail(const aLogicalName : string) : TDADataTable; + function DetailByName(const aLogicalName : string) : TDADataTable; + + // Business events + procedure BeforeOpen(Sender: TDADataTable); virtual; + procedure AfterOpen(Sender: TDADataTable); virtual; + procedure BeforeClose(Sender: TDADataTable); virtual; + procedure AfterClose(Sender: TDADataTable); virtual; + procedure BeforeInsert(Sender: TDADataTable); virtual; + procedure AfterInsert(Sender: TDADataTable); virtual; + procedure BeforeEdit(Sender: TDADataTable); virtual; + procedure AfterEdit(Sender: TDADataTable); virtual; + procedure BeforePost(Sender: TDADataTable); virtual; + procedure AfterPost(Sender: TDADataTable); virtual; + procedure BeforeCancel(Sender: TDADataTable); virtual; + procedure AfterCancel(Sender: TDADataTable); virtual; + procedure BeforeDelete(Sender: TDADataTable); virtual; + procedure AfterDelete(Sender: TDADataTable); virtual; + procedure BeforeScroll(Sender: TDADataTable); virtual; + procedure AfterScroll(Sender: TDADataTable); virtual; + procedure BeforeRefresh(Sender: TDADataTable); virtual; + procedure AfterRefresh(Sender: TDADataTable); virtual; + procedure OnCalcFields(Sender: TDADataTable); virtual; + procedure OnNewRecord(Sender: TDADataTable); virtual; + + procedure OnDeleteError(DataTable: TDADataTable; Error: EDatabaseError; var Action: TDataAction); virtual; + procedure OnEditError(DataTable: TDADataTable; Error: EDatabaseError; var Action: TDataAction); virtual; + procedure OnPostError(DataTable: TDADataTable; Error: EDatabaseError; var Action: TDataAction); virtual; + procedure OnFilterRecord(DataTable: TDADataTable; var Accept : boolean); virtual; + + procedure OnAfterSchemaCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnAfterDataRequestCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnBeforeSchemaCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnBeforeDataRequestCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnBeforeDataUpdateCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnAfterDataUpdateCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnBeforeScriptCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + procedure OnAfterScriptCall(DataTable: TDADataTable; Request: TDARemoteRequest); virtual; + + procedure OnAfterApplyUpdates(DataTable: TDADataTable); virtual; + procedure OnBeforeMergeDelta(DataTable: TDADataTable); virtual; + procedure OnAfterMergeDelta(DataTable: TDADataTable); virtual; + + procedure OnReceiveDataStream(DataTable: TDADataTable; Stream: TStream); virtual; + procedure OnBeforeApplyUpdates(DataTable: TDADataTable; const Delta: IDADelta); virtual; + + procedure Open; virtual; + procedure Close; virtual; + + function GetActive: boolean; + procedure SetActive(const Value: boolean); + + property Active: boolean read GetActive write SetActive; + + procedure Append; virtual; + procedure Cancel; virtual; + procedure Delete; virtual; + procedure Edit; virtual; + procedure First; virtual; + procedure Insert; virtual; + procedure Last; virtual; + procedure Next; virtual; + procedure Post; virtual; + procedure Prior; virtual; + + function GetBOF: Boolean; virtual; + function GetEOF: Boolean; virtual; + function GetRecordCount: Integer; virtual; + function Locate(const aKeyFields: String; const aKeyValues: Variant; aOptions: TLocateOptions = []): Boolean; virtual; + function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant; + + function GetMasterOptions : TDAMasterOptions; + procedure SetMasterOptions(Value : TDAMasterOptions); + function GetDetailOptions : TDADetailOptions; + procedure SetDetailOptions(Value : TDADetailOptions); + function GetRecNo : integer; + procedure SetRecNo(Value : integer); + function GetIsEmpty: boolean; + function GetState: TDatasetState; + + function IsFieldNull(const FieldIndexOrName : Variant) : boolean; + procedure ClearField(const FieldIndexOrName : Variant); + + property DataTable: TDADataTable read GetDataTable; + property Details[Index : integer] : TDADataTable read GetDetails; + property DetailCount : integer read GetDetailsCount; + property State : TDatasetState read GetState; + property IsEmpty : boolean read GetIsEmpty; + + { IDARangeController } + procedure ApplyRange; safecall; + procedure CancelRange; safecall; + procedure SetRange(const StartValues, EndValues: array of const); safecall; + procedure EditRangeEnd; safecall; + procedure EditRangeStart; safecall; + procedure SetRangeEnd; safecall; + procedure SetRangeStart; safecall; + + public + constructor Create(aDataTable: TDADataTable); reintroduce; virtual; + destructor Destroy; override; + end; + + TDADataTableRulesClass = class of TDADataTableRules; + + { TDADataTableList } + TDADataTableList = class(TList) + private + function GetItems(Index: integer): TDADataTable; + function GetPendingChangeCount: integer; + protected + public + constructor Create(aOwnerComponent : TComponent); + + function ScanAndAdd(aOwnerComponent : TComponent) : integer; + + function Add(aDataTable : TDADataTable) : integer; + procedure Remove(aDataTable : TDADataTable); + + property Items[Index : integer] : TDADataTable read GetItems; default; + property PendingChangeCount : integer read GetPendingChangeCount; + end; + +// Registration routines +procedure RegisterDataTableRules(const anID: string; const aDataTableRulesClass: TDADataTableRulesClass); +function FindDataTableRules(const anID: string; out aDataTableRulesClass: TDADataTableRulesClass): boolean; + +procedure RegisterFieldRules(const anID: string; const aFieldRulesClass: TDAFieldRulesClass); +function FindFieldRules(const anID: string; out aFieldRulesClass: TDAFieldRulesClass): boolean; + +// Helper functions +function NewDelta(aDataTable: TDADataTable): IDADelta; overload; + +function DatatableFromStream(aStream : TStream; + aDataTableClass : TDADataTableClass; + anAdapter : TDADataAdapter; + const aDatasetName : string = '') : TDADataTable; + +implementation + +uses + {$IFDEF DESIGNTIME} + {$IFDEF MSWINDOWS} + Dialogs, + {$ENDIF MSWINDOWS} + {$IFDEF LINUX} + QDialogs, + {$ENDIF LINUX} + {$ENDIF DESIGNTIME} + TypInfo, Variants, + uROClient, uROSessions, uROXMLIntf, + uDARegExpr, uDABusinessProcessor, + uDARemoteDataAdapter; + +var + _bizfields, + _bizdatatables: TStringList; + +type + TDataSetHack = class(TDataSet); + +function NewDelta(aDataTable: TDADataTable): IDADelta; +begin + result := TDADelta.Create(aDataTable); +end; + +procedure RegisterDataTableRules(const anID: string; const aDataTableRulesClass: TDADataTableRulesClass); +var + idx: integer; +begin + idx := _bizdatatables.IndexOf(anID); + + if (idx >= 0) then + _bizdatatables.Objects[idx] := TObject(aDataTableRulesClass) + else + _bizdatatables.AddObject(anID, TObject(aDataTableRulesClass)); +end; + +function FindDataTableRules(const anID: string; out aDataTableRulesClass: TDADataTableRulesClass): boolean; +var + idx: integer; +begin + result := FALSE; + idx := _bizdatatables.IndexOf(anID); + if (idx >= 0) then begin + aDataTableRulesClass := TDADataTableRulesClass(_bizdatatables.Objects[idx]); + result := TRUE; + end + else + aDataTableRulesClass := nil; +end; + +procedure RegisterFieldRules(const anID: string; const aFieldRulesClass: TDAFieldRulesClass); +var + idx: integer; +begin + idx := _bizfields.IndexOf(anID); + + if (idx >= 0) then + _bizfields.Objects[idx] := TObject(aFieldRulesClass) + else + _bizfields.AddObject(anID, TObject(aFieldRulesClass)); +end; + +function FindFieldRules(const anID: string; out aFieldRulesClass: TDAFieldRulesClass): boolean; +var + idx: integer; +begin + result := FALSE; + idx := _bizfields.IndexOf(anID); + if (idx >= 0) then begin + aFieldRulesClass := TDAFieldRulesClass(_bizfields.Objects[idx]); + result := TRUE; + end + else + aFieldRulesClass := nil; +end; + +function DatatableFromStream(aStream : TStream; + aDataTableClass : TDADataTableClass; + anAdapter : TDADataAdapter; + const aDatasetName : string = '') : TDADataTable; +begin + result := aDataTableClass.Create(NIL); + result.RemoteFetchEnabled := FALSE; + anAdapter.ReadDataset(aStream, result, TRUE, aDatasetName); + result.First; +end; + +{ TDADataTable } + +constructor TDADataTable.Create(aOwner: TComponent); +begin + inherited; + fHasReducedDelta := False; + fScriptCode := TStringList.Create; + fCustomAttributes := TStringList.Create; + fMaxRecords := -1; + + fMasterMappingMode := mmParams; + fMasterParamsMappings := TStringList.Create; + + fFieldRules := TObjectList.Create; + + fRemoteUpdateOptions := []; + fStreamingOptions := [soDisableEventsWhileStreaming]; + fDetailOptions := [dtCascadeOpenClose, + dtCascadeApplyUpdates, + dtAutoFetch, + dtCascadeDelete, + dtCascadeUpdate, + dtDisableLogOfCascadeDeletes, + dtDisableLogOfCascadeUpdates, + dtIncludeInAllInOneFetch // Done to avoid breaking existing apps + ]; + + fMasterOptions := [moCascadeOpenClose, + moCascadeApplyUpdates, + moCascadeDelete, + moCascadeUpdate, + moDisableLogOfCascadeDeletes, + moDisableLogOfCascadeUpdates]; + + fFetchedMasters := TStringList.Create; + fFetchedMasters.Duplicates := dupError; + fFetchedMasters.Sorted := TRUE; + + fMasterRequestMappings := TStringList.Create; + + fRemoteFetchEnabled := TRUE; + fStreaming := False; + + SetLength(fSortDirections, 0); + SetLength(fSortFieldNames, 0); + + fFields := TDAFieldCollection.Create(Self); + fFields.OnFieldBeforeUpdate := InternalBeforeFieldUpdate; + fFields.OnFieldAfterUpdate := InternalAfterFieldUpdate; + fParams := TDAParamCollection.Create(Self); + + fWhere := TDAWhere.Create(fFields, TRUE); + fWhere.OnChange := OnWhereChange; + + fDataset := GetDatasetClass.Create(Self); + fDataset.Name := 'Dataset'; + + fMasterLink := TMasterDataLink.Create(fDataset); + fMasterLink.OnMasterChange := OnMasterChange; + fMasterLink.OnMasterDisable := OnMasterDisable; + + fExpressionEvaluator := TDAStdExpressionEvaluator.Create; + fExpressionEvaluator.OnGetValue := ExpessionEvaluatorGetValue; + + fDynamicWhere := TDAWhereBuilder.Create; + fLogChanges := TRUE; +end; + +destructor TDADataTable.Destroy; +begin + fDynamicWhere.Free; + fExpressionEvaluator.Free; + fFields.Free; + fWhere.Free; + + fMasterLink.Free; + fMasterRequestMappings.Free; + fMasterParamsMappings.Free; + + fFetchedMasters.Free; + + if (fBusinessRules <> nil) then begin + fBusinessRules.Detach(Self); + fBusinessRules.Free; + end; + + fFieldRules.Free; + fParams.Free; + + fDelta := NIL; + fScriptCode.Free; + fCustomAttributes.Free; + + inherited; +end; + +procedure TDADataTable.OnWhereChange(Sender : TObject); +var + par : TRORequestParam; +begin + //TODO: par := DataRequestCall.FindParam(par_UserFilter); + //if (par<>NIL) then par.AsString := fWhere.Clause; + + if RemoteFetchEnabled and (RemoteDataAdapter <> nil) then + begin + par := (TDARemoteDataAdapter(RemoteDataAdapter).GetDataCall).FindParam('UserFilter'); + if (par <> NIL) then + par.AsString := fWhere.Clause; + end; +end; + +procedure TDADataTable.AttachEventHooks(aDataset: TDataset); +var i : integer; + lFieldRulesClass : TDAFieldRulesClass; + lFieldRules : TDAFieldRules; + lField : TDAField; +begin + if (csDesigning in ComponentState) then Exit; + + aDataset.BeforeInsert := InternalBeforeInsert; + aDataset.AfterInsert := InternalAfterInsert; + aDataset.BeforeEdit := InternalBeforeEdit; + aDataset.AfterEdit := InternalAfterEdit; + aDataset.BeforePost := InternalBeforePost; + aDataset.AfterPost := InternalAfterPost; + aDataset.BeforeCancel := InternalBeforeCancel; + aDataset.AfterCancel := InternalAfterCancel; + aDataset.BeforeDelete := InternalBeforeDelete; + aDataset.AfterDelete := InternalAfterDelete; + aDataset.BeforeScroll := InternalBeforeScroll; + aDataset.AfterScroll := InternalAfterScroll; + aDataset.BeforeRefresh := InternalBeforeRefresh; + aDataset.AfterRefresh := InternalAfterRefresh; + + aDataset.OnCalcFields := InternalOnCalcFields; + aDataset.OnNewRecord := InternalOnNewRecord; + + aDataset.OnFilterRecord := InternalOnFilterRecord; + + aDataset.OnDeleteError := InternalOnDeleteError; + aDataset.OnEditError := InternalOnEditError; + aDataset.OnPostError := InternalOnPostError; + + for i := 0 to (fFields.Count-1) do begin + lField := Fields[i]; + if (lField.BusinessClassID='') then Continue; + + Check(not FindFieldRules(lField.BusinessClassID, lFieldRulesClass), 'Invalid BusinessClassID "%s"', [lField.BusinessClassID]); + + lFieldRules := lFieldRulesClass.Create(lField, Self); + fFieldRules.Add(lFieldRules); + end; + + fFields.FieldEventsDisabled := FALSE; +end; + +procedure TDADataTable.DetachEventHooks(aDataset: TDataset); +begin + if (csDesigning in ComponentState) then Exit; + + aDataset.BeforeInsert := nil; + aDataset.AfterInsert := nil; + aDataset.BeforeEdit := nil; + aDataset.AfterEdit := nil; + aDataset.BeforePost := TempSetRowRecIDValue; // We still need to autoinc the RecID!!! + aDataset.AfterPost := nil; + aDataset.BeforeCancel := nil; + aDataset.AfterCancel := nil; + aDataset.BeforeDelete := nil; + aDataset.AfterDelete := nil; + aDataset.BeforeScroll := nil; + aDataset.AfterScroll := nil; + aDataset.BeforeRefresh := nil; + aDataset.AfterRefresh := nil; + if not Filtered then + aDataset.OnCalcFields := nil; + aDataset.OnNewRecord := nil; + + aDataset.OnFilterRecord := nil; + + aDataset.OnDeleteError := nil; + aDataset.OnEditError := nil; + aDataset.OnPostError := nil; + + fFields.FieldEventsDisabled := TRUE; + fFieldRules.Clear; // Destroyes them +end; + +procedure TDADataTable.InternalAfterDelete(Sender: TDataset); +begin + CallScript('AfterDelete'); + if Assigned(AfterDelete) then AfterDelete(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterDelete(Self); + + if (ruoOnPost in RemoteUpdatesOptions) then ApplyUpdates(); +end; + +procedure TDADataTable.InternalAfterEdit(Sender: TDataset); +begin + CallScript('AfterEdit'); + if Assigned(AfterEdit) then AfterEdit(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterEdit(Self); +end; + +procedure TDADataTable.InternalAfterInsert(Sender: TDataset); +var + i: integer; +begin + CallScript('AfterInsert'); + + if (State <> dsEdit) then begin // Somehow it's gets in dsBrowse here... + // (autoinc) + for i := 0 to (fFields.Count-1) do + if (fFields[i].DataType=datLargeAutoInc) then begin + fFields[i].AsLargeInt := AutoIncs[i]; + AutoIncs[i] := AutoIncs[i]-1; + end else + if (fFields[i].DataType=datAutoInc) then begin + fFields[i].AsInteger := AutoIncs[i]; + AutoIncs[i] := AutoIncs[i]-1; + end; + end; + + if Assigned(AfterInsert) then AfterInsert(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterInsert(Self); +end; + +procedure TDADataTable.InternalAfterRefresh(Sender: TDataset); +begin + CallScript('AfterRefresh'); + if Assigned(AfterRefresh) then AfterRefresh(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterRefresh(Self); +end; + +procedure TDADataTable.InternalAfterScroll(Sender: TDataset); +begin + if fStreaming and (soDisableEventsWhileStreaming in fStreamingOptions) + then Exit; + CallScript('AfterScroll'); + if Assigned(AfterScroll) then AfterScroll(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterScroll(Self); +end; + +procedure TDADataTable.InternalBeforeCancel(Sender: TDataset); +begin + CallScript('BeforeCancel'); + if Assigned(BeforeCancel) then BeforeCancel(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeCancel(Self); +end; + +procedure TDADataTable.InternalBeforeRefresh(Sender: TDataset); +begin + CallScript('BeforeRefresh'); + if Assigned(BeforeRefresh) then BeforeRefresh(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeRefresh(Self); + DoRefresh(fDataset); +end; + +procedure TDADataTable.InternalBeforeScroll(Sender: TDataset); +begin + if fStreaming and (soDisableEventsWhileStreaming in fStreamingOptions) + then Exit; + CallScript('BeforeScroll'); + if Assigned(BeforeScroll) then BeforeScroll(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeScroll(Self); +end; + +procedure TDADataTable.InternalOnCalcFields(Sender: TDataset); +var + i: integer; +begin + CallScript('OnCalcFields'); + if Assigned(OnCalcFields) then OnCalcFields(Self); + if Assigned(fBusinessRules) then fBusinessRules.OnCalcFields(Self); + For i:= 0 to fFields.Count-1 do + With fFields[i] do + if Calculated and (Expression <> '') then Value:= fExpressionEvaluator.Evaluate(Expression); +end; + +procedure TDADataTable.InternalOnDeleteError(DataSet: TDataSet; Error: EDatabaseError; var Action: TDataAction); +begin + if Assigned(OnDeleteError) then OnDeleteError(Self, Error, Action); + if Assigned(fBusinessRules) then fBusinessRules.OnDeleteError(Self, Error, Action); +end; + +procedure TDADataTable.InternalOnEditError(DataSet: TDataSet; Error: EDatabaseError; var Action: TDataAction); +begin + if Assigned(OnEditError) then OnEditError(Self, Error, Action); + if Assigned(fBusinessRules) then fBusinessRules.OnEditError(Self, Error, Action); +end; + +procedure TDADataTable.InternalOnFilterRecord(Dataset: TDataset; var Accept: Boolean); +begin + if Assigned(OnFilterRecord) then OnFilterRecord(Self, Accept); + if Assigned(fBusinessRules) then fBusinessRules.OnFilterRecord(Self, Accept); +end; + +procedure TDADataTable.InternalOnPostError(DataSet: TDataSet; Error: EDatabaseError; var Action: TDataAction); +begin + fDelta.RestoreLastChange; // ALEF: added as follow up to the Post errors (Jeff B.) + + if Assigned(OnPostError) then OnPostError(Self, Error, Action); + if Assigned(fBusinessRules) then fBusinessRules.OnPostError(Self, Error, Action); +end; + +procedure TDADataTable.SetLogChanges(const Value: boolean); +begin + fLogChanges := Value; +end; + +function TDADataTable.GetDataset: TDataset; +begin + result := fDataset // inherited Dataset; +end; + +function TDADataTable.GetFields: TDAFieldCollection; +begin + result := fFields; +end; + +procedure TDADataTable.SetFields(const Value: TDAFieldCollection); +begin + if Active then Close; + fFields.Assign(Value); +end; + +function TDADataTable.GetActive: boolean; +begin + result := fDataset.Active; +end; + +procedure TDADataTable.SetActive(Value: boolean); +begin + if (csLoading in ComponentState) then + fStreamedActive := Value + else begin + if (Value <> Active) then begin + if Value then + Open + else + Close + end; + end; +end; + +procedure TDADataTable.InternalOnNewRecord(Sender: TDataset); +var + i: integer; +begin + fFields.FieldEventsDisabled := TRUE; + try + try + for i := 0 to (fFields.Count - 1) do + if (fFields[i].DefaultValue <> '') then fFields[i].Value := fFields[i].DefaultValue; + + fFields.FieldEventsDisabled := FALSE; + + CallScript('OnNewRecord'); + if Assigned(OnNewRecord) then OnNewRecord(Self); + if Assigned(fBusinessRules) then fBusinessRules.OnNewRecord(Self); + except + fDelta.CancelChange; // OnNewRecord's exception put the dataset in read mode so we must cancel the change + raise; + end; + finally + fFields.FieldEventsDisabled := FALSE; // Just in case... + end; +end; + +procedure TDADataTable.DoCascadeOperation(aStreamer: TDADataStreamer; aOption: TDAMasterOption); +var + i: integer; + details: TList; + dt: TDADataTable; + flag: boolean; +begin + if aOption = moAllInOneFetch then begin + DoCascadeRemoteAllInOneFetch(aStreamer); + exit; + end; + details := GetDetailDataTables; + try + for i := 0 to (details.Count - 1) do begin + dt := TDADataTable(details[i]); + flag := dt.LogChanges; + + case aOption of + moCascadeDelete: begin + if (dtDisableLogOfCascadeDeletes in dt.DetailOptions) then dt.LogChanges := FALSE; + + dt.ClearRows; + end; + + moCascadeOpenClose: begin + if (dtCascadeOpenClose in dt.DetailOptions) then begin + if Opening then + dt.DoOpen + else if Closing then + dt.Close; + end; + end; + + moCascadeUpdate: begin + end; + + moAllInOneFetch: begin + { + if (dtIncludeInAllInOneFetch in dt.DetailOptions) then try + dt.LogChanges := FALSE; + + if Opening and not (soIgnoreStreamSchema in fStreamingOptions) then + begin + aStreamer.ReadDataset(dt.LogicalName, dt, TRUE, FALSE); + dt.InitializeDataTable; + end; + + aStreamer.ReadDataset(dt.LogicalName, dt); + dt.DoCascadeOperation(aStreamer, moAllInOneFetch); + finally + dt.LogChanges := flag; + end; } + end; + end; + + dt.LogChanges := flag; + end; + finally + details.Free; + end; +end; + +procedure TDADataTable.DoCascadeRemoteAllInOneFetch(aStreamer: TDADataStreamer); +var + lFetchedMasters: TStringList; + + procedure ProcessDetailTable(aTable: TDADataTable); + begin + with aTable do begin + fFetchedMasters.Sorted:=False; + fFetchedMasters.AddStrings(lFetchedMasters); + fFetchedMasters.Sorted:=True; + DoCascadeRemoteAllInOneFetch(aStreamer); + end; + end; + +var + lLocalList, lRemoteList: TList; + ltbl: TDADataTable; + i: integer; + lflag: boolean; +begin + if moAllInOneFetch in fMasterOptions then begin + lRemoteList:= TList.Create; + lLocalList:= TList.Create; + try + GetDetailTablesforAllinOneFetch(lRemoteList,lLocalList, False); + if (lRemoteList.Count > 0) or (lLocalList.Count > 0) then begin + lFetchedMasters:= TStringList.Create; + try + First; + while not EOF do begin + lFetchedMasters.Add(IntToStr(GetRowRecIDValue)); + Next; + end; + lFetchedMasters.Sort; + + // these tables are read in RDA + for i := 0 to lRemoteList.Count - 1 do begin + ProcessDetailTable(TDADataTable(lRemoteList[i])); + end; + + // these tables we should read manually from streamer + for i := 0 to lLocalList.Count - 1 do begin + ltbl:= TDADataTable(lLocalList[i]); + if aStreamer.FindDatasetIndex(ltbl.LogicalName) = -1 then Continue; // may be to better raise an exception! + lflag := ltbl.LogChanges; + try + ltbl.LogChanges := False; + if Opening and not (soIgnoreStreamSchema in fStreamingOptions) then begin + aStreamer.ReadDataset(ltbl.LogicalName, ltbl, TRUE, FALSE); + ltbl.InitializeDataTable; + end; + aStreamer.ReadDataset(ltbl.LogicalName, ltbl); + finally + ltbl.LogChanges := lflag; + end; + ProcessDetailTable(ltbl); + end; + finally + lFetchedMasters.Free; + end; + end; + finally + lRemoteList.Free; + lLocalList.Free; + end; + end; +end; + +procedure TDADataTable.TempSetRowRecIDValue(Sender: TDataset); +begin + if (State <> dsEdit) then begin // Somehow it's gets in dsBrowse here... + fRecIDField.AsInteger := CurrRecId; + CurrRecId := CurrRecId + 1; + end; +end; + +procedure TDADataTable.CreateInternalFields(aDataset: TDataset; someFieldDefinitions: TDAFieldCollection); +var + i, cnt: integer; + fld: TFieldDef; + fldcls: TFieldClass; + realfld: TField; +begin + // Creates the RecID field + fld := aDataset.FieldDefs.AddFieldDef; + fld.DataType := ftInteger; + fld.Name := RecIDFieldName; + + // Creates the autoinc map (autoinc) + AutoIncs := CreateAutoIncArray; + + // Adds the data fields (non calculated) to the FieldDefs + for i := 0 to (Fields.Count - 1) do begin + if Fields[i].Calculated or Fields[i].Lookup then Continue; // Added as fields later + + fld := aDataset.FieldDefs.AddFieldDef; + + // (autoinc) + if (Fields[i].DataType=datLargeAutoInc) + then fld.DataType := ftLargeint + else + if (Fields[i].DataType=datAutoInc) + then fld.DataType := ftInteger + else fld.DataType := DATypeToVCLType(Fields[i].DataType); + + fld.Name := Fields[i].Name; + + {if not (fld.DataType in [ftFloat, ftCurrency, ftBlob, ftInteger]) + then fld.Size := Fields[i].Size;} + + if (fld.DataType = ftString) or (fld.DataType = ftWideString) then fld.Size := Fields[i].Size; + if (fld.DataType = ftGuid) then fld.Size := 38; + + fld.Required := Fields[i].Required; + end; + + // Creates the data fields + for i := 0 to (aDataset.FieldDefs.Count - 1) do begin + realfld := aDataset.FieldDefs[i].CreateField(aDataset); + realfld.DataSet := aDataset; // NEW + end; + + // Creates the calculated fields + for i := 0 to (Fields.Count - 1) do begin + if not Fields[i].Calculated then Continue; + + fldcls := DefaultFieldClasses[DATypeToVCLType(Fields[i].DataType)]; + if fldcls = nil then fldcls := TStringField; + realfld := fldcls.Create(Self); + realfld.Name := aDataset.Name + Fields[i].Name; + realfld.FieldName := Fields[i].Name; + realfld.DataSet := aDataset; + + if (Fields[i].DataType = datString) or (Fields[i].DataType = datWideString) then realfld.Size := Fields[i].Size; + + realfld.Required := Fields[i].Required; + if Fields[i].Calculated then realfld.FieldKind := fkCalculated; + + realfld.DataSet := aDataset; + end; + + // Creates the lookup fields + for i := 0 to (Fields.Count - 1) do begin + if not Fields[i].Lookup then Continue; + + fldcls := DefaultFieldClasses[DATypeToVCLType(Fields[i].DataType)]; + + if not Assigned(fldcls) then + RaiseError('No or invalid DataType specified for lookup field %s.%s',[self.Name, Fields[i].Name]); + + realfld := fldcls.Create(Self); + realfld.Name := aDataset.Name + Fields[i].Name; + realfld.FieldName := Fields[i].Name; + realfld.DataSet := aDataset; // NEW + + // Sets lookup properties + with Fields[i] do begin + {$IFDEF FPC} + realfld.FieldKind:=fkLookup; + {$ELSE} + realfld.Lookup := TRUE; + {$ENDIF} + if (LookupSource<>NIL) then + with TDADataSource(LookupSource) do + if Assigned(DataTable) + then realfld.LookupDataSet := DataTable.Dataset; + + realfld.LookupKeyFields := LookupKeyFields; + realfld.LookupCache := LookupCache; + realfld.LookupResultField := LookupResultField; + realfld.KeyFields := KeyFields; + end; + + if (Fields[i].DataType = datString) or (Fields[i].DataType = datWideString) then realfld.Size := Fields[i].Size; + + //realfld.DataSet := aDataset; + end; + + // Adjusts field positions (less intrusive than changing the code above) + cnt := Fields.Count-1; + for i := 0 to cnt do + aDataSet.FieldByName(Fields[i].Name).Index := i+1; +end; + +procedure TDADataTable.Loaded; +begin + inherited; + + if Assigned(fBusinessRules) + then fBusinessRules.Attach(Self); + + Active := fStreamedActive; + + AttachEventHooks(fDataset); +end; + +procedure TDADataTable.DoRefresh(aDataset: TDataset); +begin + if fRefreshing then Exit; + + fRefreshing := TRUE; + try + Close; + Open; + finally + fRefreshing := FALSE; + end; +end; + +procedure TDADataTable.InternalBeforeInsert(Sender: TDataset); +begin + CallScript('BeforeInsert'); + if Assigned(BeforeInsert) then BeforeInsert(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeInsert(Self); + + if not LogChanges or (csDesigning in ComponentState) then Exit; + + fDelta.StartChange(ctInsert); +end; + +procedure TDADataTable.InternalBeforeDelete(Sender: TDataset); +begin + CallScript('BeforeDelete'); + if Assigned(BeforeDelete) then BeforeDelete(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeDelete(Self); + + if not LogChanges or (csDesigning in ComponentState) then Exit; + + // Deletes the records from the detail tables + if (moCascadeDelete in MasterOptions) then DoCascadeOperation(nil, moCascadeDelete); + + // Logs the delete + fDelta.StartChange(ctDelete); + fDelta.EndChange; +end; + +procedure TDADataTable.InternalBeforeEdit(Sender: TDataset); +begin + CallScript('BeforeEdit'); + if Assigned(BeforeEdit) then BeforeEdit(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeEdit(Self); + + if not LogChanges or (csDesigning in ComponentState) then Exit; + + fDelta.StartChange(ctUpdate); +end; + +procedure TDADataTable.InternalBeforePost(Sender: TDataset); +var details : TList; + key : string; + i : integer; +begin + CallScript('BeforePost'); + if Assigned(BeforePost) then BeforePost(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforePost(Self); + + for i := 0 to (fFields.Count - 1) do + if (fFields[i].RegExpression <> '') and not fFields[i].IsNull then begin + if not ExecRegExpr(fFields[i].RegExpression, fFields[i].AsString) then RaiseError('Invalid input value for field ' + fFields[i].Name); + end; + + if (State <> dsEdit) then begin // Somehow it's gets in dsBrowse here... + fRecIDField.AsInteger := CurrRecId; + CurrRecId := CurrRecId + 1; + end; + + // This was originally in AfterPost. Moved here because after a post filters might step in and the current + // record can change resulting in half change from record X and the remaining from record Y + + if not LogChanges or (csDesigning in ComponentState) then Exit; + fDelta.EndChange; + + // Adds a reference to the RecID of this record to avoid double fetching records + // This is a new master record, so it means there are no details to fetch remotely + if (State=dsInsert) then begin + key := IntToStr(GetRowRecIDValue); + details := GetDetailDataTables; + try + for i := 0 to (details.Count-1) do begin + with TDADataTable(details[i]) do + if Active and (fFetchedMasters.IndexOf(key)<0) then fFetchedMasters.Add(key); + end; + finally + details.Free; + end; + end; + + if (ruoOnPost in RemoteUpdatesOptions) then try + ApplyUpdates(); + except + on E: Exception do + begin + fDelta.RestoreLastChange; + raise; + end; + end; +end; + +procedure TDADataTable.InternalAfterPost(Sender: TDataset); +begin + CallScript('AfterPost'); + if Assigned(AfterPost) then AfterPost(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterPost(Self); + + if not LogChanges or (csDesigning in ComponentState) then Exit; + +end; + +procedure TDADataTable.InternalAfterCancel(Sender: TDataset); +begin + CallScript('AfterCancel'); + if Assigned(AfterCancel) then AfterCancel(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterCancel(Self); + + fDelta.CancelChange; +end; + +function TDADataTable.GetLogChanges: boolean; +begin + result := fLogChanges; +end; + +procedure TDADataTable.DisableControls; +begin + fDataset.DisableControls; +end; + +procedure TDADataTable.EnableControls; +begin + fDataset.EnableControls; +end; + +function TDADataTable.GetBOF: boolean; +begin + result := fDataset.BOF +end; + +function TDADataTable.GetEOF: boolean; +begin + result := fDataset.EOF +end; + +function TDADataTable.GetFieldCount: integer; +begin + result := fFields.Count +end; + +function TDADataTable.GetFieldValues(Index: integer): Variant; +begin + result := Fields[Index].Value +end; + +function TDADataTable.GetNames(Index: integer): string; +begin + result := Fields[Index].Name +end; + +function TDADataTable.GetRecordCount: integer; +begin + result := fDataset.RecordCount; +end; + +function TDADataTable.GetSQL: string; +begin + // Not implemented in DataTables + result := ''; +end; + +function TDADataTable.Locate(const KeyFields: string; + const KeyValues: Variant; Options: TLocateOptions): Boolean; +begin + if VarIsArray(KeyValues) and (VarArrayHighBound(KeyValues, 1) = 0) + then result := fDataset.Locate(KeyFields, KeyValues[0], Options) + else result := fDataset.Locate(KeyFields, KeyValues, Options); +end; + +procedure TDADataTable.Next; +begin + fDataset.Next; +end; + +procedure TDADataTable.SetSQL(const Value: string); +begin + // Not implemented in DataTables +end; + +function TDADataTable.Execute: integer; +begin + // Not implemented in DataTables + result := -1; +end; + +function TDADataTable.GetParams: TDAParamCollection; +begin + // Not implemented in DataTables + result := fParams; +end; + +procedure TDADataTable.RefreshParams; +begin + // Not implemented in DataTables +end; + +procedure TDADataTable.Append; +begin + fDataset.Append; +end; + +procedure TDADataTable.Delete; +begin + fDataset.Delete; +end; + +procedure TDADataTable.Cancel; +begin + fDataset.Cancel; +end; + +procedure TDADataTable.Edit; +begin + fDataset.Edit; +end; + +procedure TDADataTable.Insert; +begin + fDataset.Insert; +end; + +procedure TDADataTable.Post; +begin + fDataset.Post; +end; + +{$WARN SYMBOL_DEPRECATED OFF} +function TDADataTable.GetWhere: TDAWhere; +begin + result := fWhere +end; +{$WARN SYMBOL_DEPRECATED ON} + +procedure TDADataTable.SetRemoteDataAdapter(const Value: TDABaseRemoteDataAdapter); +begin + if Value <> fRemoteDataAdapter then begin + fRemoteDataAdapter := Value; + if assigned(fRemoteDataAdapter) then fRemoteDataAdapter.FreeNotification(self); + end; +end; + +procedure TDADataTable.Close; +begin + if not Active then Exit; + + fClosing := TRUE; + try + DoBeforeCloseDataset; + if Assigned(BeforeClose) then BeforeClose(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeClose(Self); + + if (moCascadeOpenClose in MasterOptions) then DoCascadeOperation(nil, moCascadeOpenClose); + + Dataset.Close; + fFields.Unbind; + + //Dataset.Fields.Clear; + + fDelta := nil; + + fFetchedMasters.Clear; + + DoAfterCloseDataset; + if Assigned(AfterClose) then AfterClose(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterClose(Self); + finally + fClosing := FALSE; + end; +end; + +procedure TDADataTable.InitializeDataTable; +begin + fCurrRecId := 1; + + try + fDataset.Fields.Clear; + fDataset.FieldDefs.Clear; + finally + NotifyFieldsClear; + end; + try + // Creates the fields for the internal dataset + CreateInternalFields(fDataset, Fields); + finally + NotifyFieldsClear; + end; + + fRecIDField := fDataset.FieldByName(RecIDFieldName) as TIntegerField; + fRecIDField.Visible := FALSE; + + fFields.Bind(fDataset); + + // Prepares the delta + fDelta := TDADelta.Create(Self); + +(* + // Finishes to prepare the internal dataset (descendant might need additional customization and might not be open) + if RemoteFetchEnabled and + (RemoteDataAdapter<>nil) and + (TDARemoteDataAdapter(RemoteDataAdapter).GetDataCall.Default) then + LoadScript(); +*) + DoBeforeOpenDataset; + if not Dataset.Active then Dataset.Open; + DoAfterOpenDataset; +end; + +procedure TDADataTable.LoadFromLocalSchema; +var + lConnection: IDAConnection; + data: TStream; + gofirst, oldlog: boolean; + ds: IDADataset; + i: integer; + lDynFields: array of string; +begin + if (LocalSchema = nil) or (LogicalName = '') then begin + InitializeDataTable; + Exit; + end; + + // Local but from schema. Client/Server mode + CheckProperties; + + lConnection := LocalSchema.ConnectionManager.NewConnection(fLocalConnection); + try + SetLength(lDynFields, 0); + ds := LocalSchema.NewDataset(lConnection, fLogicalName,lDynFields,fDynamicWhere.Xml); + + oldlog := LogChanges; + fFetching := TRUE; + LogChanges := FALSE; +// book := nil; + + data := Binary.Create; + Binary(data).CapacityIncrement := LocalDataStreamer.BufferSize; + try + for i := 0 to (ds.Params.Count - 1) do + ds.Params[i].Value := ParamByName(ds.Params[i].Name).Value; + + LocalDataStreamer.WriteDataset(data, ds, [woRows, woSchema], -1); + + if Active then + gofirst := FALSE + else + gofirst := TRUE; + + if Assigned(fOnReceiveDataStream) then fOnReceiveDataStream(Self, data); + if Assigned(fBusinessRules) then fBusinessRules.OnReceiveDataStream(Self, data); + data.Position := 0; + + // Reads the data + LocalDataStreamer.Initialize(data, aiRead); + if (LocalDataStreamer.DatasetCount = 0) then RaiseError('Stream does not contain any dataset'); + + if Opening then begin + if not (soIgnoreStreamSchema in fStreamingOptions) then LocalDataStreamer.ReadDataset(LogicalName, Self, TRUE, FALSE); + + InitializeDataTable; + end; + + LocalDataStreamer.ReadDataset(LogicalName, Self, FALSE); + { + if (moAllInOneFetch in MasterOptions) then begin + DoCascadeOperation(LocalDataStreamer, moAllInOneFetch); + end;} + + LocalDataStreamer.Finalize; + + if gofirst then First; + finally + fFetching := FALSE; + data.Free; + LogChanges := oldlog; + end; + finally + lConnection := nil; + end; +end; + +procedure TDADataTable.DoOpen(IgnoreAutoFetchSettings: Boolean); +var i : integer; +begin + if Active or fOpening then Exit; + + fOpening := TRUE; + try + { Checks that all the lookup datasets are open. If not, we would get the error "Missing Data Provider"} + for i := 0 to (FieldCount-1) do + if Fields[i].Lookup and (Fields[i].LookupSource<>NIL) then begin + if (Fields[i].LookupSource is TDADataSource) then begin + if Assigned(TDADataSource(Fields[i].LookupSource).DataTable) + then TDADataSource(Fields[i].LookupSource).DataTable.Open; + end + else begin + if Assigned(Fields[i].LookupSource.DataSet) + then Fields[i].LookupSource.DataSet.Open; + end; + end; + + + if Assigned(BeforeOpen) then BeforeOpen(Self); + if Assigned(fBusinessRules) then fBusinessRules.BeforeOpen(Self); + + try + if not fFetching then begin + if fMasterLink.Active then + FetchMastersDetails(nil, nil, IgnoreAutoFetchSettings) // This calls InitializeDataTable possibily applying a new schema + else + if RemoteFetchEnabled then LoadFromRemoteSource else LoadFromLocalSchema; + end; + + if (moCascadeOpenClose in MasterOptions) then DoCascadeOperation(nil, moCascadeOpenClose); + + if Assigned(AfterOpen) then AfterOpen(Self); + if Assigned(fBusinessRules) then fBusinessRules.AfterOpen(Self); + except + on E: Exception do begin + Close; + {$IFDEF DESIGNTIME} + if (csDesigning in ComponentState) then begin + SysUtils.Beep; + MessageDlg(E.Message, mtError, [mbOK], 0); + end + else + {$ENDIF DESIGNTIME} + raise; + end; + end; + finally + fOpening := FALSE; + end; +end; + +procedure TDADataTable.Open; +begin + DoOpen(True); +end; + + +procedure TDADataTable.OnMasterChange(Sender: TObject); +begin + if (MasterSource <> nil) and (MasterSource.DataTable <> nil) then begin + if MasterSource.DataTable.fFetching then + exit; + end; + + FetchMastersDetails; +end; + +procedure TDADataTable.OnMasterDisable(Sender: TObject); +begin + +end; + +procedure TDADataTable.LoadFromRemoteSource(BookmarkPosition: boolean = FALSE); +begin + CheckProperties(True); + if Assigned(fOnBeforeDataRequestCall) then fOnBeforeDataRequestCall(Self, RemoteDataAdapter.Get_GetDataCall); + if Assigned(fBusinessRules) then fBusinessRules.OnBeforeDataRequestCall(Self, RemoteDataAdapter.Get_GetDataCall); + RemoteDataAdapter.Fill([self], BookmarkPosition, FieldCount = 0); + if Assigned(fOnAfterDataRequestCall) then fOnAfterDataRequestCall(Self, RemoteDataAdapter.Get_GetDataCall); + if Assigned(fBusinessRules) then fBusinessRules.OnAfterDataRequestCall(Self, RemoteDataAdapter.Get_GetDataCall); +end; + +function TDADataTable.ApplyUpdates(RefetchAll: boolean = FALSE): boolean; +var + details: TList; + i: integer; + dt: TDADataTable; +begin + details:= GetDetailTablesforApplyUpdate; + try + // check RDA + CheckProperties; + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + {if dt.RemoteFetchEnabled then } dt.CheckProperties; + end; + + //fOnBeforeApplyUpdates + if Assigned(fOnBeforeApplyUpdates) then fOnBeforeApplyUpdates(Self, fDelta); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fOnBeforeApplyUpdates) then dt.fOnBeforeApplyUpdates(dt, fDelta); + end; + + //fBusinessRules.OnBeforeApplyUpdates + if Assigned(fBusinessRules) then fBusinessRules.OnBeforeApplyUpdates(Self, fDelta); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fBusinessRules) then dt.fBusinessRules.OnBeforeApplyUpdates(dt, fDelta); + end; + + if RemoteFetchEnabled then begin + + //fOnBeforeDataUpdateCall + if Assigned(fOnBeforeDataUpdateCall) then fOnBeforeDataUpdateCall(Self, RemoteDataAdapter.Get_UpdateDataCall); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fOnBeforeDataUpdateCall) then dt.fOnBeforeDataUpdateCall(dt, dt.RemoteDataAdapter.Get_UpdateDataCall); + end; + + //fBusinessRules.OnBeforeDataUpdateCall + if Assigned(fBusinessRules) then fBusinessRules.OnBeforeDataUpdateCall(Self, RemoteDataAdapter.Get_UpdateDataCall); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fBusinessRules) then dt.fBusinessRules.OnBeforeDataUpdateCall(dt, dt.RemoteDataAdapter.Get_UpdateDataCall); + end; + + result := RemoteDataAdapter.ApplyUpdates([self], RefetchAll); + + //fOnAfterDataUpdateCall + if Assigned(fOnAfterDataUpdateCall) then fOnAfterDataUpdateCall(Self, RemoteDataAdapter.Get_UpdateDataCall); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fOnAfterDataUpdateCall) then dt.fOnAfterDataUpdateCall(dt, dt.RemoteDataAdapter.Get_UpdateDataCall); + end; + + //fBusinessRules.OnAfterDataUpdateCall + if Assigned(fBusinessRules) then fBusinessRules.OnAfterDataUpdateCall(Self, RemoteDataAdapter.Get_UpdateDataCall); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fBusinessRules) then dt.fBusinessRules.OnAfterDataUpdateCall(dt, dt.RemoteDataAdapter.Get_UpdateDataCall); + end; + + end + else begin + result := Local_ApplyUpdates(RefetchAll); + end; + + //fOnAfterApplyUpdates + if Assigned(fOnAfterApplyUpdates) then fOnAfterApplyUpdates(Self); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fOnAfterApplyUpdates) then dt.fOnAfterApplyUpdates(dt); + end; + + //fBusinessRules.OnAfterApplyUpdates + if Assigned(fBusinessRules) then fBusinessRules.OnAfterApplyUpdates(Self); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fBusinessRules) then dt.fBusinessRules.OnAfterApplyUpdates(dt); + end; + finally + details.Free; + end; +end; + +procedure TDADataTable.LoadSchema(PreserveLookupFields : boolean = FALSE; PreserveClientCalcFields : boolean = FALSE); +begin + CheckProperties(True); + if Assigned(fOnBeforeSchemaCall) then fOnBeforeSchemaCall(Self, RemoteDataAdapter.Get_GetSchemaCall); + if Assigned(fBusinessRules) then fBusinessRules.OnBeforeSchemaCall(self, RemoteDataAdapter.Get_GetSchemaCall); + RemoteDataAdapter.FillSchema([self], PreserveLookupFields, PreserveClientCalcFields); + if Assigned(fOnAfterSchemaCall) then fOnAfterSchemaCall(Self, RemoteDataAdapter.Get_GetSchemaCall); + if Assigned(fBusinessRules) then fBusinessRules.OnAfterSchemaCall(self, RemoteDataAdapter.Get_GetSchemaCall); +end; + +procedure TDADataTable.LoadScript(aDatasetName : string = ''); +begin + CheckProperties(True); + if Assigned(fOnBeforeScriptCall) then fOnBeforeScriptCall(Self, RemoteDataAdapter.Get_GetScriptsCall); + if Assigned(fBusinessRules) then fBusinessRules.OnBeforeScriptCall(Self, RemoteDataAdapter.Get_GetScriptsCall); + RemoteDataAdapter.FillScripts([self]); + if Assigned(fOnAfterScriptCall) then fOnAfterScriptCall(Self, RemoteDataAdapter.Get_GetScriptsCall); + if Assigned(fBusinessRules) then fBusinessRules.OnAfterScriptCall(Self, RemoteDataAdapter.Get_GetScriptsCall); +end; + +procedure TDADataTable.FetchMastersDetails(aMasterTable : TDADataTable = NIL; aRequestMappings : TStrings = NIL; IgnoreAutoFetchSettings: Boolean = False); + + procedure CombineDynamicWhere(aWhereExpression:TDAWhereExpression); + begin + if fMasterMappingMode = mmWhere then begin + if fDynamicWhere.Expression = nil then + fDynamicWhere.Expression:= aWhereExpression + else + fDynamicWhere.Expression:= fDynamicWhere.NewBinaryExpression(fDynamicWhere.Expression,aWhereExpression,dboAnd); + end; + end; + + procedure RevertDynamicWhere(aWhereExpression:TDAWhereExpression); + var + fUserWhereExpression: TDAWhereExpression; + begin + if fMasterMappingMode = mmWhere then begin + fUserWhereExpression:= nil; + if fDynamicWhere.Expression <> aWhereExpression then begin + fUserWhereExpression:= TDABinaryExpression(fDynamicWhere.Expression).Left; + TDABinaryExpression(fDynamicWhere.Expression).Left:=nil; + end; + fDynamicWhere.Clear; + fDynamicWhere.Expression:= fUserWhereExpression; + end; + end; + + + function GenerateWhereStatement: TDAWhereExpression; + var + lFieldName: string; + pos1, pos2: integer; + lfld1: TDAField; + lfld2: TDAField; + lExpression: TDAWhereExpression; + begin + //fDynamicWhere.Clear; + Pos1 := 1; + pos2 := 1; + Result:=nil; + while True do begin + if (Pos1 > Length(DetailFields)) and (Pos2 > Length(MasterFields)) then Break; + + if ((Pos1 > Length(DetailFields)) and (Pos2 <= Length(MasterFields))) or + ((Pos1 <= Length(DetailFields)) and (Pos2 > Length(MasterFields))) then + RaiseError('DetailFields should have same number of items as MasterFields'); + + {$WARN SYMBOL_DEPRECATED OFF} + lFieldName:= ExtractFieldName(DetailFields, Pos1); + {$WARN SYMBOL_DEPRECATED ON} + lfld1 := FindField(lFieldName); + if lfld1 = nil then RaiseError('Invalid field name %s in DetailFields', [lFieldName]); + {$WARN SYMBOL_DEPRECATED OFF} + lFieldName:= ExtractFieldName(MasterFields, Pos2); + {$WARN SYMBOL_DEPRECATED ON} + lfld2 := MasterSource.DataTable.Fields.FindField(lFieldName); + if lfld2 = nil then RaiseError('Invalid field name %s in MasterFields', [lFieldName]); + + lExpression := fDynamicWhere.NewBinaryExpression( + fDynamicWhere.NewField('',lfld1.Name), + fDynamicWhere.NewConstant(lfld2.Value,lfld2.DataType), + dboEqual); + + if Result <> nil then + Result:=fDynamicWhere.NewBinaryExpression(Result,lExpression,dboAnd) + else + Result:= lExpression; + end; + end; + +var + master: TDataset; + par: TDARemoteRequestParam; + fld: TDAField; + key: string; + i: integer; + dofetch: boolean; + mappings : TStrings; + detailparam : TDAParam; + lmmWhereExpression: TDAWhereExpression; +begin + if RemoteFetchEnabled then CheckProperties + else if not(Assigned(LocalSchema) and Assigned(LocalDataStreamer)) then begin + if fOpening then InitializeDataTable; + Exit; + end; + + // + // + // TODO: this doesnt properly use the new RDA's DMB yet. we need to discuss/rethink how to handle that! + // + // + + mappings := NIL; + + dofetch := (((dtAutoFetch in DetailOptions) or IgnoreAutoFetchSettings) {and RemoteFetchEnabled}) or (aMasterTable<>NIL); + + if (aRequestMappings<>NIL) then mappings := aRequestMappings + else begin + case fMasterMappingMode of + mmDataRequest : mappings := MasterRequestMappings; + mmParams : mappings := MasterParamsMappings; + end; + end; + + if (aMasterTable<>NIL) + then master := aMasterTable.Dataset + else master := fMasterLink.DataSet; + + if master = nil then exit; + + if (master.RecordCount = 0) then begin + if not Active then InitializeDataTable; // Master opened with 0 records and detail wasn't open yet + + Exit; + end + else if (MasterSource = nil) then Exit; + if (master.State=dsBrowse) and not MasterSource.DataTable.Delta.IsNewRecord then begin + if dofetch then begin + // Determines if the details for this master have been fetched + key := IntToStr(MasterSource.DataTable.GetRowRecIDValue); + if (fFetchedMasters.IndexOf(key) >= 0) then Exit; + if (fMasterMappingMode = mmWhere) or ((mappings<>NIL) and (mappings.Count > 0)) then begin + lmmWhereExpression:=nil; + if RemoteFetchEnabled then begin + // remotemode + + // If not, then assigns the param values from the current master record, + // invokes the remote call and loads the data + case MasterMappingMode of + mmWhere: begin + lmmWhereExpression:=GenerateWhereStatement; + end; + mmDataRequest : begin + for i := 0 to (mappings.Count - 1) do begin + par := nil; + if RemoteDataAdapter.Get_GetDataCall <> nil then + par := RemoteDataAdapter.Get_GetDataCall.Params.ParamByName(Trim(mappings.Names[i])); + if (par=NIL) then RaiseError('Invalid parameter name %s in master mappings', [Trim(mappings.Names[i])]); + + fld := MasterSource.DataTable.Fields.FindField(Trim(mappings.Values[mappings.Names[i]])); + if (fld=NIL) then RaiseError('Invalid field name %s in master mappings', [Trim(mappings.Values[mappings.Names[i]])]); + + if (par <> nil) and (fld <> nil) and not VarIsNull(fld.Value) + then par.AsVariant := fld.Value + end; + end; + mmParams : begin + // Fills it in + for i := 0 to (mappings.Count - 1) do begin + detailparam := Params.ParamByName(Trim(mappings.Names[i])); + if (detailparam=NIL) then RaiseError('Invalid parameter name %s in param mappings', [Trim(mappings.Names[i])]); + + fld := MasterSource.DataTable.Fields.FindField(Trim(mappings.Values[mappings.Names[i]])); + if (fld=NIL) then RaiseError('Invalid field name %s in param mappings', [Trim(mappings.Values[mappings.Names[i]])]); + + if (detailparam <> nil) and (fld <> nil) and not VarIsNull(fld.Value) + then detailparam.Value := fld.Value + end; + end; + end; + + CombineDynamicWhere(lmmWhereExpression); + try + LoadFromRemoteSource; + finally + RevertDynamicWhere(lmmWhereExpression); + end; + + try + fFetchedMasters.Add(key); + except + raise Exception.CreateFmt('Master record %s has been fetched twice', [key]); + end; + end { RemoteFetchEnabled }else begin + // localmode + + // If not, then assigns the param values from the current master record, + // invokes the remote call and loads the data + case MasterMappingMode of + mmWhere: begin + lmmWhereExpression := GenerateWhereStatement; + end; + mmParams: begin + // Fills it in + for i := 0 to (mappings.Count - 1) do begin + detailparam := Params.ParamByName(Trim(mappings.Names[i])); + if (detailparam=NIL) then RaiseError('Invalid parameter name %s in param mappings', [Trim(mappings.Names[i])]); + + fld := MasterSource.DataTable.Fields.FindField(Trim(mappings.Values[mappings.Names[i]])); + if (fld=NIL) then RaiseError('Invalid field name %s in param mappings', [Trim(mappings.Values[mappings.Names[i]])]); + + if (detailparam <> nil) and (fld <> nil) and not VarIsNull(fld.Value) then detailparam.Value := fld.Value + end; + end; + mmDataRequest: raise Exception.Create('mmDataRequest mode only supported in RemoteFetchEnabled mode'); + end; + + CombineDynamicWhere(lmmWhereExpression); + try + LoadFromLocalSchema; + finally + RevertDynamicWhere(lmmWhereExpression); + end; + + try + fFetchedMasters.Add(key); + except + raise Exception.CreateFmt('Master record %s has been fetched twice', [key]); + end; + end; + end else begin + { ALEF: I removed the code below because it was never meant to be here to begin with. Very error prone. + Who added this??? + + // Automatics + for i := 0 to (DataRequestCall.Params.Count - 1) do begin + par := DataRequestCall.Params[i]; + fld := MasterSource.DataTable.Fields.FindField(par.Name); + + if (par <> nil) and (fld <> nil) and not VarIsNull(fld.Value) then par.Value := fld.Value; + end;} + + RaiseError('There are no mappings defined. Cannot fetch records for detail table '+Name); + end; + end; {dofetch} + end; +end; + +procedure TDADataTable.WriteDeltaToStream(aStreamer: TDADataStreamer); +var + i: integer; + details: TList; + lHasReducedDelta: Boolean; + oldMode: boolean; +begin + // And the details' updates (if specified) + details := GetDetailTablesforApplyUpdate; + try + lHasReducedDelta:= fHasReducedDelta; + if not aStreamer.SendReducedDelta then begin + if not lHasReducedDelta then + for i := 0 to (details.Count - 1) do begin + lHasReducedDelta:= TDADataTable(details[i]).fHasReducedDelta; + if lHasReducedDelta then Break; + end; + end; + oldMode:=aStreamer.SendReducedDelta; + if lHasReducedDelta then aStreamer.SendReducedDelta:=True; + try + // Writes its own updates + if self.HasDelta then aStreamer.WriteDelta(Self); + for i := 0 to (details.Count - 1) do + TDADataTable(details[i]).WriteDeltaToStream(aStreamer); + finally + aStreamer.SendReducedDelta := oldMode; + end; + finally + details.Free; + end; +end; + +procedure TDADataTable.ReadDeltaFromStream(aStreamer: TDADataStreamer;aFailedDeltas:TList); +var + i: integer; + details: TList; +begin + // Reads its own updates + if aStreamer.FindDeltaIndex(Self.LogicalName) <> -1 then begin + Delta.Clear; + aStreamer.ReadDelta(Self); + if Delta.Count>0 then fHasReducedDelta := aStreamer.HasReducedDelta; + + For i := 0 to Delta.Count-1 do + if Delta.Changes[i].Status = csFailed then + aFailedDeltas.Add(Delta.Changes[i]); + end; + + // And the details' updates (if specified) + details := GetDetailTablesforApplyUpdate; + try + for i := 0 to (details.Count - 1) do + TDADataTable(details[i]).ReadDeltaFromStream(aStreamer, aFailedDeltas); + finally + details.Free; + end; +end; + +procedure TDADataTable.ReadDeltaFromStream(aStreamer: TDADataStreamer); +var + List: TList; +begin + List:= TList.Create; + try + ReadDeltaFromStream(aStreamer,List); + finally + List.Free; + end; +end; + +procedure TDADataTable.MergeDelta; +var + i, k, x: integer; + details: TList; + dt: TDADataTable; +// ok : boolean; +// failed, pending, resolved : integer; + oldval, newval, val : Variant; + fld : TDAField; + pkfields : string; + oldopt : TDARemoteUpdatesOptions; + oldlog : boolean; + keyvals : array of variant; + oldmastersource : TDADataSource; + lhasDelta: Boolean; + pk_array: array of boolean; +begin + details:=GetDetailTablesforApplyUpdate; + try + //fOnBeforeMergeDelta + if Assigned(fOnBeforeMergeDelta) then fOnBeforeMergeDelta(Self); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fOnBeforeMergeDelta) then dt.fOnBeforeMergeDelta(dt); + end; + + //fBusinessRules.OnBeforeMergeDelta + if Assigned(fBusinessRules) then fBusinessRules.OnBeforeMergeDelta(Self); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fBusinessRules) then dt.fBusinessRules.OnBeforeMergeDelta(dt); + end; + + oldopt := RemoteUpdatesOptions; + oldlog := LogChanges; + oldmastersource := MasterSource; + + lhasDelta := Delta.Count > 0; + if lhasDelta then begin + RemoteUpdatesOptions := RemoteUpdatesOptions-[ruoOnPost]; + LogChanges := FALSE; + // Disables the M/D relationship so that Locates can work in all cases (master or detail tables, regardless + // of their positioning) + MasterSource := NIL; + end; + + try + pkfields := ''; + for i := 0 to (Delta.KeyFieldCount-1) do + pkfields := pkfields+Delta.KeyFieldNames[i]+';'; + pkfields := Copy(pkfields, 1, Length(pkfields)-1); + + SetLength(keyvals, Delta.KeyFieldCount); + + // Merges the updates + if (Delta.Count>0) then begin + SetLength(pk_array, Delta.LoggedFieldCount); + for i := 0 to Delta.LoggedFieldCount - 1 do + pk_array[i]:=False; + + for i := 0 to Delta.KeyFieldCount - 1 do begin + x := Delta.IndexOfLoggedField(Delta.KeyFieldNames[i]); + if x <> -1 then pk_array[x]:=True; + end; + for i := (Delta.Count-1) downto 0 do begin + if (Delta[i].Status<>csResolved) + then Continue; + if (Delta[i].ChangeType<>ctDelete) then begin + if (Self.State in [dsEdit, dsInsert]) and (ruoOnPost in oldopt) then begin + // Merge the details + for x := 0 to (details.Count - 1) do + TDADataTable(details[x]).MergeDelta; + for x := 0 to (Delta.LoggedFieldCount-1) do begin + fld := FieldByName(Delta.LoggedFieldNames[x]); + + newval := Delta[i].NewValueByName[fld.Name]; + oldval := Delta[i].OldValueByName[fld.Name]; + if fHasReducedDelta then begin + if not pk_array[x] and ROVariantsEqual(oldVal,newVal) then continue; + end; + if fld.ServerAutoRefresh or (not VarIsArray(newVal) and not ROVariantsEqual(newval,oldval)) then begin + VariantToFieldValue(Delta[i].NewValueByName[fld.Name], fld); + end; + end; + end + else begin + for k := 0 to (Delta.KeyFieldCount-1) do begin + val := Delta[i].OldValueByName[Delta.KeyFieldNames[k]]; + keyvals[k] := val; + end; + + // Locates the original record + First; + if not Locate(pkfields, keyvals, []) then Continue; + + // Merge the details + for x := 0 to (details.Count - 1) do + TDADataTable(details[x]).MergeDelta; + + // Merges its own updates + Edit; + for x := 0 to (Delta.LoggedFieldCount-1) do begin + fld := FieldByName(Delta.LoggedFieldNames[x]); + + newval := Delta[i].NewValueByName[fld.Name]; + oldval := Delta[i].OldValueByName[fld.Name]; + if fHasReducedDelta then begin + if not pk_array[x] and ROVariantsEqual(oldVal,newVal) then continue; + end; + if fld.ServerAutoRefresh or (not VarIsArray(newVal) and (newval<>oldval)) then begin + VariantToFieldValue(Delta[i].NewValueByName[fld.Name], fld); + end; + end; + Post; + end; + end; + // Removes this merged change + Delta.Delete(i); + end; + end + + // If there are no updates for this master, the children still need to be processed + else begin + // Merge the details + for x := 0 to (details.Count - 1) do + TDADataTable(details[x]).MergeDelta; + end; + finally + if lhasDelta then begin + RemoteUpdatesOptions := oldopt; + LogChanges := oldlog; + + // Restores the M/D relationship + MasterSource := oldmastersource; + end; + //fOnAfterMergeDelta + if Assigned(fOnAfterMergeDelta) then fOnAfterMergeDelta(Self); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fOnAfterMergeDelta) then dt.fOnAfterMergeDelta(dt); + end; + + //fBusinessRules.OnAfterMergeDelta + if Assigned(fBusinessRules) then fBusinessRules.OnAfterMergeDelta(Self); + for i := 0 to details.Count-1 do begin + dt:= TDADataTable(details[i]); + if Assigned(dt.fBusinessRules) then dt.fBusinessRules.OnAfterMergeDelta(dt); + end; + end; + finally + details.Free; + if Delta.Count = 0 then fHasReducedDelta:=False; + end; +end; + + +procedure TDADataTable.PackAllInOneFetchInfoArray(aDataTable : TDADataTable; OutArray: TDADatasetRequestInfoArray); +var outinfo : TDADatasetRequestInfo; + details : TList; + dt : TDADataTable; + i : integer; +begin + outinfo := outarray.Add; + outinfo.DatasetName := aDataTable.LogicalName; + outinfo.MaxRecords := aDataTable.MaxRecords; + outinfo.IncludeSchema := TRUE; + outinfo.Params := NIL; + + details := aDataTable.GetDetailDataTables; + try + for i := 0 to (details.Count - 1) do begin + dt := TDADataTable(details[i]); + + if (dtIncludeInAllInOneFetch in dt.DetailOptions) + then PackAllInOneFetchInfoArray(dt, OutArray); + end; + finally + details.Free; + end; +end; + +function TDADataTable.FieldByName(const aName: string): TDAField; +begin + result := fFields.FieldByName(aName) +end; + +function TDADataTable.ParamByName(const aName: string): TDAParam; +begin + result := fParams.ParamByName(aName) +end; + +procedure TDADataTable.First; +begin + fDataset.First +end; + +procedure TDADataTable.Last; +begin + fDataset.Last +end; + +procedure TDADataTable.Prior; +begin + fDataset.Prior +end; + +procedure TDADataTable.Sort(const FieldNames: array of string; const Directions: array of TDASortDirection); +var + i: integer; +begin + DoSort(FieldNames, Directions); + + // Stores the new settings for convenience + SetLength(fSortDirections, Length(Directions)); + for i := 0 to Length(Directions) - 1 do + fSortDirections[i] := Directions[i]; + + SetLength(fSortFieldNames, Length(FieldNames)); + for i := 0 to Length(FieldNames) - 1 do + fSortFieldNames[i] := FieldNames[i]; +end; + +procedure TDADataTable.UnSort; +begin + Sort([], []); +end; + +procedure TDADataTable.LoadFromStream(aStream: TStream); +var + //remfetch, + oldlogchanges, oldcascadeopenclose: boolean; + lStreamer: TDADataStreamer; + i: integer; +begin + Check(RemoteFetchEnabled, Name+'. Cannot do this operation when RemoteFetchEnabled is set to TRUE'); + if RemoteDataAdapter <> nil then + lStreamer:=RemoteDataAdapter.DataStreamer + else + lStreamer:=LocalDataStreamer; + + Check(lStreamer = nil, Name+'. RemoteDataAdapter or LocalDataStreamer must be assigned.'); + + Close; + + oldlogchanges := LogChanges; +// remfetch := RemoteFetchEnabled; + oldcascadeopenclose := moCascadeOpenClose in fMasterOptions; + +// RemoteFetchEnabled := FALSE; + LogChanges := FALSE; + if oldcascadeopenclose + then fMasterOptions := fMasterOptions - [moCascadeOpenClose]; + try + fStreaming := True; + try + lStreamer.Initialize(aStream, aiRead); + + if not (soIgnoreStreamSchema in fStreamingOptions) then + lStreamer.ReadDataset(LogicalName, Self, TRUE) + else + lStreamer.ReadDataset(LogicalName, Self, FALSE); + + lStreamer.ReadDelta(Self); + if Delta <> nil then + For i:= 0 to Delta.Count-1 do + if fCurrRecId <= Delta.Changes[i].RecID then + fCurrRecId := Delta.Changes[i].RecID+1; + finally + fStreaming := False; + end; + finally + lStreamer.Finalize; + LogChanges := oldlogchanges; +// RemoteFetchEnabled := remfetch; + if oldcascadeopenclose then begin + fMasterOptions := fMasterOptions + [moCascadeOpenClose]; + fOpening := True; + try + DoCascadeOperation(nil, moCascadeOpenClose); + finally + fOpening := False; + end; + end; + if Active then First; + end; +end; + +procedure TDADataTable.SaveToStream(aStream: TStream); +var + lStreamer: TDADataStreamer; + OldMasterSource: TDADataSource; +begin + if (soDisableEventsWhileStreaming in fStreamingOptions) then DisableControls; + try + OldMasterSource := MasterSource; + MasterSource := nil; + fStreaming := True; + try + First; // Important! + if RemoteFetchEnabled then + lStreamer:= RemoteDataAdapter.DataStreamer + else + lStreamer:=LocalDataStreamer; + if lStreamer = nil then CheckProperties; + lStreamer.Initialize(aStream, aiWrite); + lStreamer.WriteDataset(Self, [woRows, woSchema]); + lStreamer.WriteDelta(Self); + lStreamer.Finalize; + finally + fStreaming := False; + MasterSource := OldMasterSource; + end; + finally + if (soDisableEventsWhileStreaming in fStreamingOptions) then EnableControls; + end; +end; + +procedure TDADataTable.LoadFromFile(const aFileName: string); +var + fs: TFileStream; + oldval : boolean; +begin + oldval := RemoteFetchEnabled; + RemoteFetchEnabled := FALSE; + try + fs := TFileStream.Create(aFileName, fmOpenRead); + try + LoadFromStream(fs); + finally + fs.Free; + end; + finally + RemoteFetchEnabled := oldval; + end; +end; + +procedure TDADataTable.SaveToFile(const aFileName: string); +var + fs: TFileStream; +begin + fs := TFileStream.Create(aFileName, fmCreate); + try + SaveToStream(fs); + finally + fs.Free; + end; +end; + +procedure TDADataTable.SetParams(const Value: TDAParamCollection); +begin + fParams.Assign(Value); +end; + +procedure TDADataTable.ClearFields; +var + i: integer; +begin + for i := 0 to FieldCount - 1 do + Fields[i].Value := Null; +end; + +procedure TDADataTable.ClearRows; +var + CurChange: TDADeltaChange; +begin + while (RecordCount > 0) do begin + if (not LogChanges) and Assigned(Delta) then begin + CurChange := Delta.FindChange(RecIDValue); + if Assigned(CurChange) then + Delta.RemoveChange(CurChange); + end; + Delete; + end; +end; + +function TDADataTable.GetState: TDataSetState; +begin + result := fDataset.State +end; + +function TDADataTable.GetEditing: boolean; +begin + result := State in [dsEdit, dsInsert] +end; + +function TDADataTable.GetPrepared: boolean; +begin + result := FALSE +end; + +procedure TDADataTable.SetPrepared(Value: boolean); +begin + +end; + +function TDADataTable.GetText: string; +begin + result := '' +end; + +procedure TDADataTable.SetText(const Value: string); +begin + +end; + +procedure TDADataTable.Notification(AComponent: TComponent; + Operation: TOperation); +var + i: Integer; +begin + inherited; + + if (Operation = opRemove) then begin + if (AComponent = fLocalSchema) then fLocalSchema := nil; + if (AComponent = fRemoteDataAdapter) then fRemoteDataAdapter := nil; + if (AComponent = fLocalDataStreamer) then fLocalDataStreamer := nil; + if AComponent is TDataSource then begin + for i := 0 to Fields.Count - 1 do begin + if Fields[i].LookupSource = AComponent then + Fields[i].LookupSource := nil; + end; + end; + + end; + +end; + +procedure TDADataTable.SetMasterSource(const Value: TDADataSource); +begin + fMasterLink.DataSource := Value; +end; + +procedure TDADataTable.SetMasterFields(const Value: string); +begin + fMasterLink.FieldNames := Value; +end; + +function TDADataTable.GetMasterRequestMappings: TStrings; +begin + result := fMasterRequestMappings; +end; + +procedure TDADataTable.SetMasterRequestMappings(const Value: TStrings); +begin + fMasterRequestMappings.Assign(Value); +end; + +function TDADataTable.GetDetailDataTables: TList; +var + i: integer; + ownerdt: TDADataTable; + dtdataset: IDADataTableDataset; + tmplist: TList; +begin + // This function only returns the linked datatables and removes duplicates + // from the GetDetailDataSets call. I assume the duplicates are because of + // the masterlink TDADatatables create. + + result := TList.Create; + tmplist := TList.Create; + + try + {$IFNDEF FPC} + Dataset.GetDetailDataSets(tmplist); + {$ENDIF} + for i := 0 to (tmplist.Count - 1) do begin + if not Supports(TDataset(tmplist[i]), IDADataTableDataset, dtdataset) then Continue; + ownerdt := dtdataset.GetDataTable; + + if (result.IndexOf(ownerdt) < 0) then result.Add(ownerdt); + end; + finally + tmplist.Free; + end; +end; + +function TDADataTable.GetDelta: IDADelta; +begin + if (fDelta = nil) then raise Exception.Create('Delta has not yet been initialized by the datatable'); + result := fDelta; +end; + +function TDADataTable.GetName: string; +begin + if (LogicalName = '') then + result := Name + else + result := LogicalName; +end; + +procedure TDADataTable.DoAfterCloseDataset; +begin + CallScript('AfterClose'); +end; + +procedure TDADataTable.DoAfterOpenDataset; +begin + CallScript('AfterOpen'); + + if Assigned(fAfterOpenIDataset) then fAfterOpenIDataset(Self, '', ROGetTickCount-fOpenTick); +end; + +procedure TDADataTable.DoBeforeCloseDataset; +begin + CallScript('BeforeClose'); +end; + +procedure TDADataTable.CloneSelectedRecord(Source: TDADataTable; DoPost: boolean = TRUE); +begin + CloneSelectedRecord(Source as IDADataset, DoPost); +end; + +procedure TDADataTable.CloneSelectedRecord(const Source: IDADataset; DoPost: boolean = TRUE); +var + i: integer; + destfld, + srcfld: TDAField; + lreadonly: boolean; +begin + Insert; + for i := 0 to (Source.FieldCount - 1) do begin + srcfld := Source.Fields[i]; + destfld := Fields.FindField(srcfld.Name); + lreadonly := destfld.ReadOnly; + destfld.ReadOnly := False; + try + if destfld <> nil then destfld.Value := srcfld.Value; + finally + destfld.ReadOnly := lreadonly; + end; + end; + if DoPost then Post; +end; + +procedure TDADataTable.FreeBookmark(Bookmark: TBookmark); +begin + Dataset.FreeBookmark(Bookmark); +end; + +function TDADataTable.GetBookmark: pointer; +begin + result := Dataset.GetBookmark; +end; + +procedure TDADataTable.GotoBookmark(Bookmark: TBookmark); +begin + Dataset.GotoBookmark(Bookmark); +end; + +function TDADataTable.GetRowRecIDValue: integer; +begin + result := fRecIDField.AsInteger +end; + +procedure TDADataTable.DisableEventHandlers; +begin + DetachEventHooks(Dataset); +end; + +procedure TDADataTable.EnableEventHandlers; +begin + AttachEventHooks(Dataset); +end; + +procedure TDADataTable.Refresh; +begin + fDataset.Refresh; +end; + +procedure TDADataTable.SetLocalDataStreamer(const Value: TDADataStreamer); +begin + fLocalDataStreamer := Value; + if (fLocalDataStreamer <> nil) then + fLocalDataStreamer.FreeNotification(Self); +end; + +procedure TDADataTable.SetLocalSchema(const Value: TDASchema); +begin + fLocalSchema := Value; + if (fLocalSchema <> nil) then begin + fLocalSchema.FreeNotification(Self); + + RemoteFetchEnabled := FALSE; + end; +end; + +function TDADataTable.DataReaderFirst: boolean; +begin + result := RecordCount > 0; + if result then First; +end; + +function TDADataTable.DataReaderNext: boolean; +begin + result := not EOF; + if result then Next; +end; + +function TDADataTable.GetAsBoolean(Index: integer): boolean; +begin + result := fFields[Index].AsBoolean; +end; + +function TDADataTable.GetAsBoolean(const FieldName: string): boolean; +begin + result := FieldByName(FieldName).AsBoolean; +end; + +function TDADataTable.GetAsCurrency(Index: integer): Currency; +begin + Result:= fFields[Index].AsCurrency; +end; + +function TDADataTable.GetAsCurrency(const FieldName: string): currency; +begin + result := FieldByName(FieldName).AsCurrency; +end; + +function TDADataTable.GetAsDateTime(const FieldName: string): TDateTime; +begin + result := FieldByName(FieldName).AsDateTime; +end; + +function TDADataTable.GetAsDateTime(Index: integer): TDateTime; +begin + result := fFields[Index].AsDateTime; +end; + +function TDADataTable.GetAsFloat(const FieldName: string): double; +begin + result := FieldByName(FieldName).AsFloat; +end; + +function TDADataTable.GetAsFloat(Index: integer): double; +begin + result := fFields[Index].AsFloat; +end; + +function TDADataTable.GetAsInteger(Index: integer): integer; +begin + result := fFields[Index].AsInteger; +end; + +function TDADataTable.GetAsInteger(const FieldName: string): integer; +begin + result := FieldByName(FieldName).AsInteger; +end; + +function TDADataTable.GetAsString(const FieldName: string): string; +begin + result := FieldByName(FieldName).AsString; +end; + +function TDADataTable.GetAsString(Index: integer): string; +begin + result := fFields[Index].AsString; +end; + +function TDADataTable.GetAsVariant(const FieldName: string): variant; +begin + result := FieldByName(FieldName).Value; +end; + +function TDADataTable.GetAsVariant(Index: integer): variant; +begin + result := fFields[Index].Value +end; + +function TDADataTable.GetFieldIndexes(const aName: string): integer; +begin + result := fFields.FindItem(aName).Index +end; + +function TDADataTable.GetFieldNames(Index: integer): string; +begin + result := fFields[Index].Name +end; + +procedure TDADataTable.SetBusinessRulesID(const Value: string); +var + bizclass: TDADataTableRulesClass; +begin + if (Value = fBusinessRulesID) then Exit; + + if Assigned(fBusinessRules) then begin + fBusinessRules.Detach(Self); + FreeAndNIL(fBusinessRules); + end; + + fBusinessRulesID := Trim(Value); + + if (fBusinessRulesID <> '') and not (csDesigning in ComponentState) then begin + Check(not FindDataTableRules(Value, bizclass), 'Invalid BusinessRulesID "%s"', [Value]); + + fBusinessRules := bizclass.Create(Self); + fBusinessRules.Attach(Self); + end; +end; + +function TDADataTable.QueryInterface(const IID: TGUID; out Obj): HResult; +begin + result := inherited QueryInterface(IID, Obj); + + if (result <> S_OK) and Assigned(fBusinessRules) then begin + // Users might introduce specific interfaces at the business rule level + // This allows to type cast the data table to any additional business oriented interface + // they decide to create. + result := fBusinessRules.QueryInterface(IID, Obj); + end; +end; + +function TDADataTable.GetHasDelta: boolean; +begin + result := Assigned(fDelta) and (fDelta.Count > 0); +end; + +function TDADataTable.GetHasDeltaRecursive: boolean; +var + lDetails: TList; + lTable: TDADataTable; + i: integer; +begin + result := Assigned(fDelta) and (fDelta.Count > 0); + if not result then begin + lDetails := nil; + if (moCascadeApplyUpdates in fMasterOptions) then try + lDetails := GetDetailDataTables; + for i := 0 to (lDetails.Count-1) do begin + lTable := TDADataTable(lDetails[i]); + if lTable.HasDeltaRecursive then begin + result := true; + exit; + end; + end; + finally + lDetails.Free; + end; + end; +end; + +function TDADataTable.GetMasterDataTable: TDADataTable; +var lDatatableDataset : IDADataTableDataset; +begin + if Supports(fMasterLink.DataSet, IDADataTableDataset, lDatatableDataset) + then result := lDatatableDataset.GetDataTable + else result := NIL; +end; + +function TDADataTable.GetRecNo: integer; +begin + result := fDataset.RecNo +end; + +procedure TDADataTable.SetRecNo(const Value: integer); +begin + fDataset.RecNo := Value +end; + +function TDADataTable.GetFieldsProperty: TDAFieldCollection; +begin + result := GetFields; +end; + +function TDADataTable.GetActiveProperty: boolean; +begin + result := GetActive(); +end; + +procedure TDADataTable.SetActiveProperty(const Value: boolean); +begin + SetActive(Value); +end; + +function TDADataTable.GetParamsProperty: TDAParamCollection; +begin + result := GetParams(); +end; + +{$IFNDEF LINUX} +function TDADataTable.InterfaceSupportsErrorInfo(const iid: TGUID): HResult; +begin + if GetInterfaceEntry(iid) <> nil then + Result := S_OK + else + Result := S_FALSE; +end; + +function TDADataTable.SafeCallException(ExceptObject: TObject; ExceptAddr: Pointer): HResult; +begin + Result := uDAEngine.DAHandleSafeCallException(self,ExceptObject, ExceptAddr); +end; +{$ENDIF} + +procedure TDADataTable.CancelUpdates(IncludeDetails: boolean); +var list : TList; + i, orignextinc : integer; + wasfiltered, + remotefetch : boolean; + lOldMasterFields: string; +begin + if Editing then Cancel; + if not LogChanges then Exit; + + DisableControls; + wasfiltered := Filtered; + Filtered := FALSE; + try + // Truns off the remote fetching for this datatable and its details + remotefetch := RemoteFetchEnabled; + RemoteFetchEnabled := FALSE; + if IncludeDetails then list := GetDetailDataTables else list := TList.Create; + + // Disable the log of changes (we're about to make a bunch!) + LogChanges := FALSE; + + // Saves the current recinc (we'll change this during the restore) + orignextinc := CurrRecId; + try + lOldMasterFields := MasterFields; + MasterFields := ''; + try + // Reverts the records to the original state + for i := 0 to (Delta.Count-1) do + InternalCancelUpdateChange(Delta[i]); + finally + MasterFields := lOldMasterFields; + end; + + // Cancels the updates for the details + for i := 0 to list.Count-1 do begin + TDADataTable(list[i]).CancelUpdates(TRUE); + end; + + // Erases the delta + Delta.Clear; + + finally + fHasReducedDelta:=False; + list.Free; + CurrRecId := orignextinc; + LogChanges := TRUE; + RemoteFetchEnabled := remotefetch; + end; + finally + Filtered := wasfiltered; + EnableControls; + end; +end; + +procedure TDADataTable.DoBeforeOpenDataset; +begin + CallScript('BeforeOpen'); + + fOpenTick := ROGetTickCount; + if Assigned(fBeforeOpenIDataset) then fBeforeOpenIDataset(Self); +end; + +function TDADataTable.Lookup(const KeyFields: string; + const KeyValues: Variant; const ResultFields: string): Variant; +begin + result := fDataset.Lookup(KeyFields, KeyValues, ResultFields); +end; + +function TDADataTable.GetIsEmpty: boolean; +begin + result := fDataset.IsEmpty; +end; + +function TDADataTable.GetMasterParamsMappings: TStrings; +begin + result := fMasterParamsMappings +end; + +procedure TDADataTable.SetMasterParamsMappings(const Value: TStrings); +begin + fMasterParamsMappings.Assign(Value); +end; + +function TDADataTable.GetLogicalName: string; +begin + result := fLogicalName; +end; + +function TDADataTable.GetReadOnly: boolean; +begin + result := FALSE; +end; + +procedure TDADataTable.SetReadOnly(const Value: boolean); +begin + // By default this property cannot be set. Raising exceptions creates problems + // at design time and it's useless +end; + +procedure TDADataTable.SetScriptCode(const Value: TStrings); +begin + fScriptCode.Assign(Value); +end; + +procedure TDADataTable.CallScript(const aEvent: string); +begin + if Assigned(ScriptingProvider) and (ScriptCode.Count > 0) then begin + (ScriptingProvider as IDADataTableScriptingProvider).RunDataTableScript(self, ScriptCode.Text, aEvent, rslPascalScript); + end; +end; + +function TDADataTable.FindField(const aName: string): TDAField; +begin + result := fFields.FindField(aName); +end; + +procedure TDADataTable.AddRecord(const FieldNames: array of string; + const FieldValues: array of Variant); +var i : integer; +begin + Insert; + for i := 0 to Length(FieldNames)-1 do + FieldByName(FieldNames[i]).Value := FieldValues[i]; + Post; +end; + +procedure TDADataTable.SetLogicalName(aName: string); +begin + fLogicalName := aName; +end; + +function TDADataTable.GetDeltaInitialized: boolean; +begin + result := fDelta<>NIL +end; + +procedure TDADataTable.NotifyFieldsClear; +var + i, lLockCount: integer; +begin + // This method patches VCL issue with notification + // of datasources when clearing fields and controls is disabled + lLockCount := 0; + while DataSet.ControlsDisabled do begin + inc(lLockCount); + DataSet.EnableControls; + end; + TDataSetHack(DataSet).DataEvent(deFieldListChange, 0); + for i := 0 to lLockCount - 1 do begin + DataSet.DisableControls; + end; +end; + +function TDADataTable.GetOnAfterOpen: TDAAfterOpenDatasetEvent; +begin + result := fAfterOpenIDataset; +end; + +function TDADataTable.GetOnBeforeOpen: TDABeforeOpenDatasetEvent; +begin + result := fBeforeOpenIDataset; +end; + +procedure TDADataTable.SetOnAfterOpen( + const Value: TDAAfterOpenDatasetEvent); +begin + fAfterOpenIDataset := Value; +end; + +procedure TDADataTable.SetOnBeforeOpen( + const Value: TDABeforeOpenDatasetEvent); +begin + fBeforeOpenIDataset := Value; +end; + +function TDADataTable.GetOnAfterExecute: TDAAfterExecuteCommandEvent; +begin + NotSupported(); +end; + +function TDADataTable.GetOnBeforeExecute: TDABeforeExecuteCommandEvent; +begin + NotSupported(); +end; + +procedure TDADataTable.SetOnAfterExecute( + const Value: TDAAfterExecuteCommandEvent); +begin + NotSupported(); +end; + +procedure TDADataTable.SetOnBeforeExecute( + const Value: TDABeforeExecuteCommandEvent); +begin + NotSupported(); +end; + +function TDADataTable.GetOnExecuteError: TDAExecuteCommandErrorEvent; +begin + NotSupported(); +end; + +function TDADataTable.GetOnOpenError: TDAOpenDatasetErrorEvent; +begin + NotSupported(); +end; + +procedure TDADataTable.SetOnExecuteError( + const Value: TDAExecuteCommandErrorEvent); +begin + NotSupported(); +end; + +procedure TDADataTable.SetOnOpenError( + const Value: TDAOpenDatasetErrorEvent); +begin + NotSupported(); +end; + +function TDADataTable.GetCurrRecId: integer; +begin + result := fCurrRecId; +end; + +procedure TDADataTable.SetCurrRecId(const Value: integer); +begin + fCurrRecId := Value; +end; + +function TDADataTable.GetAutoIncs: TAutoIncArray; +begin + result := fAutoIncs; +end; + +procedure TDADataTable.SetAutoIncs(const Value: TAutoIncArray); +begin + fAutoIncs := Value; +end; + +function TDADataTable.CreateAutoIncArray: TAutoIncArray; +var i: integer; +begin + SetLength(result, Fields.Count); + for i := 0 to Fields.Count-1 do result[i] := -1; +end; + +function TDADataTable.GetCurrentRecIdValue: integer; +begin + result := fCurrRecId; +end; + +procedure TDADataTable.SetCurrentRecIdValue(Value: integer); +begin + fCurrRecId := Value; +end; + +procedure TDADataTable.InternalAfterFieldUpdate(Sender: TDACustomField); +begin + if assigned(fAfterFieldChange) and (Sender is TDAField) then + fAfterFieldChange(self, TDAField(Sender)); +end; + +procedure TDADataTable.InternalBeforeFieldUpdate(Sender: TDACustomField); +begin + if assigned(fBeforeFieldChange) and (Sender is TDAField) then + fBeforeFieldChange(self, TDAField(Sender)); +end; + +procedure TDADataTable.InternalSetFetching(aFetching: boolean); +begin + fFetching := aFetching; +end; + +procedure TDADataTable.SetCustomAttributes(const Value: TStrings); +begin + fCustomAttributes.Assign(Value); +end; + +function TDADataTable.Local_ApplyUpdates(RefetchAll: boolean): boolean; + + function UnpackDeltas(var lStruct: TDADeltaStruct): TDABusinessProcessor; + var + j: integer; + lBizProc: TDABusinessProcessor; + lDetails: TDADatasetRelationshipList; + lFound: boolean; + begin + result := nil; + lStruct := nil; + // Reads the deltas. + lFound := false; + { Tries to locate a user-defined business processor } + if LocalSchema.Owner <> nil then + for j := 0 to (LocalSchema.Owner.ComponentCount - 1) do begin + if (LocalSchema.Owner.Components[j] is TDABusinessProcessor) then begin + lBizProc := TDABusinessProcessor(LocalSchema.Owner.Components[j]); + if SameText(lBizProc.ReferencedDataset, Self.LogicalName) then begin + lStruct := TDADeltaStruct.Create(Self.Delta, lBizProc); + lFound := true; + Break; + end; + end; + end; + { Either creates one} + if not lFound then begin + lBizProc := TDABusinessProcessor.Create(nil); + lBizProc.ReferencedDataset := Self.LogicalName; + lBizProc.Schema := LocalSchema; + Result := lBizProc; + lStruct := TDADeltaStruct.Create(Self.Delta, lBizProc); + end; + + { Sets the master/detail relationships } + if (LocalSchema.RelationShips.Count > 0) then begin + lDetails := TDADatasetRelationshipList.Create; + try + LocalSchema.RelationShips.GetDetails(lStruct.BusinessProcessor.ReferencedDataset, lDetails); + if (lDetails.Count <> 0) then begin + { Prepares an array with the references to the detail deltas that will be used later on to adjust + autoincs, etc. } + for j := 0 to lDetails.Count - 1 do begin + if lDetails[j].DetailDatasetName = LogicalName then begin + lStruct.DetailDeltas.Add(lStruct.Delta); + lStruct.RelationShips.Add(lDetails[j]); + end; + end; + end; + finally + lDetails.Free; + end; + end; + end; + +var + FLocalConnection: IDAConnection; + lProcessedDeltas: TStringList; + lStruct: TDADeltaStruct; + lBizProc: TDABusinessProcessor; + i, j: integer; +begin + Result:=False; + CheckProperties; + FLocalConnection := LocalSchema.ConnectionManager.NewConnection(LocalConnection); + if (Delta = nil) or (Delta.Count = 0) then Exit; + lBizProc := UnpackDeltas(lStruct); + try + {if TriggerTransactionEvent(fOnUpdateDataBeginTransaction) then} FLocalConnection.BeginTransaction; + try + if (LocalSchema.UpdateRules.Count = 0) then begin + lStruct.BusinessProcessor.ProcessDelta(FLocalConnection, lStruct.Delta, AllChanges); + end + else begin + lProcessedDeltas := TStringList.Create; + try + + for i := 0 to (LocalSchema.UpdateRules.Count - 1) do begin + // Processes them in the order defined in the schema + if LocalSchema.UpdateRules[i].DatasetName = LogicalName then begin + // Adds the dataset name to the list of processed deltas. Those that don't have update rules will be processed later + lProcessedDeltas.Add(LogicalName); + + // Processes the delta + lStruct.BusinessProcessor.ProcessDelta(FLocalConnection, lStruct.Delta, LocalSchema.UpdateRules[i].ChangeTypes); + + if (ctInsert in LocalSchema.UpdateRules[i].ChangeTypes) then begin + for j := 0 to (lStruct.DetailDeltas.Count - 1) do + lStruct.BusinessProcessor.SynchronizeAutoIncs(lStruct.Delta, lStruct.DetailDeltas[j], lStruct.RelationShips[j]); + end; + end; + end; + // Processes the deltas for which update rules were not defined + if lProcessedDeltas.IndexOf(LogicalName) = -1 then + lStruct.BusinessProcessor.ProcessDelta(FLocalConnection, lStruct.Delta, AllChanges); + finally + lProcessedDeltas.Free; + end; + end; + if FLocalConnection.InTransaction {and TriggerTransactionEvent(fOnUpdateDataCommitTransaction)} then FLocalConnection.CommitTransaction; + MergeDelta; + Result:=True; + except + on E: Exception do begin + if FLocalConnection.InTransaction {and TriggerTransactionEvent(fOnUpdateDataRollBackTransaction)} then FLocalConnection.RollbackTransaction; + raise; + end; + end; + finally + if lStruct <> nil then lStruct.Free; + if lBizProc <> nil then lBizProc.Free; + end; + if RefetchAll and result then begin + if Active then Close; + Open; + end; +end; + +procedure TDADataTable.GetDetailTablesforAllinOneFetch(aRemote, aLocal:TList; aRecursive: boolean); +var + i: integer; + dt: TDADataTable; + dtList: TList; + scc: IDASimpleClonedCursorsSupport; +begin + if (moAllInOneFetch in fMasterOptions) then begin + dtList:=GetDetailDataTables; + try + for i := 0 to dtList.Count-1 do begin + dt := TDADataTable(dtList[i]); + if (dtIncludeInAllInOneFetch in dt.DetailOptions) then begin + if (dt.QueryInterface(IDASimpleClonedCursorsSupport, scc) = S_OK) and (scc.GetSimpleCloneSource <> nil) then begin + dt:= TDADatatable(scc.GetSimpleCloneSource); + end; + + if self.RemoteFetchEnabled and dt.RemoteFetchEnabled and (dt.RemoteDataAdapter = Self.RemoteDataAdapter) then begin + if aRemote.IndexOf(dt) = -1 then aRemote.Add(dt); + end + else begin + if aLocal.IndexOf(dt) = -1 then aLocal.Add(dt); + end; + if aRecursive then dt.GetDetailTablesforAllinOneFetch(aRemote,aLocal, aRecursive); + end; + end; + finally + dtList.Free; + end; + end +end; + +function TDADataTable.GetDetailTablesforApplyUpdate(aRecursive: boolean): TList; +var + i: integer; + dt: TDADataTable; + dtList, dtlist1: TList; + scc: IDASimpleClonedCursorsSupport; +begin + Result:= TList.Create; + if (moCascadeApplyUpdates in fMasterOptions) then begin + dtList:=GetDetailDataTables; + try + for i := 0 to dtList.Count-1 do begin + dt := TDADataTable(dtList[i]); + if dt.Active and (dtCascadeApplyUpdates in dt.DetailOptions) then begin + if (dt.QueryInterface(IDASimpleClonedCursorsSupport, scc) = S_OK) and (scc.GetSimpleCloneSource <> nil) then begin + dt:= TDADatatable(scc.GetSimpleCloneSource); + end; + if Result.IndexOf(dt) = -1 then Result.Add(dt); + if aRecursive then begin + dtlist1:= dt.GetDetailTablesforApplyUpdate(aRecursive); + try + Result.Assign(dtlist1,laOr); + finally + dtlist1.Free; + end; + end; + end; + end; + finally + dtList.Free; + end; + end +end; + +procedure TDADataTable.CancelUpdateChange(Change: TDADeltaChange;IncludeDetails : boolean = TRUE); +var + orignextinc : integer; + wasfiltered, + remotefetch : boolean; + lOldMasterFields: string; + details: TList; + i,j,k: integer; + detailChange: TDADeltaChange; + ChangePKValueArray: array of Variant; + lNeedDeleteChange: boolean; + keyvalue: variant; +begin + if Editing then Cancel; + if not LogChanges then Exit; + + DisableControls; + wasfiltered := Filtered; + Filtered := FALSE; + try + // Truns off the remote fetching for this datatable and its details + remotefetch := RemoteFetchEnabled; + RemoteFetchEnabled := FALSE; + + // Disable the log of changes (we're about to make a bunch!) + LogChanges := FALSE; + // Saves the current recinc (we'll change this during the restore) + orignextinc := CurrRecId; + try + lOldMasterFields := MasterFields; + MasterFields := ''; + try + // Reverts the records to the original state + + if IncludeDetails then begin + SetLength(ChangePKValueArray,Change.Delta.KeyFieldCount); + For i:=1 to Change.Delta.KeyFieldCount do begin + if Change.ChangeType = ctInsert then + keyvalue:=Change.NewValueByName[Change.Delta.KeyFieldNames[i-1]] + else + keyvalue:=Change.OldValueByName[Change.Delta.KeyFieldNames[i-1]]; + ChangePKValueArray[0]:=keyvalue; + end; + details:=GetDetailTablesforApplyUpdate; + try + for i:=0 to details.Count-1 do begin + for j:=0 to TDADataTable(details[i]).Delta.Count-1 do begin + detailChange :=TDADataTable(details[i]).Delta.Changes[j]; + if detailChange.Status <> csResolved then begin + lNeedDeleteChange:= True; + for k:=0 to Change.Delta.KeyFieldCount-1 do begin + if detailChange.ChangeType = ctInsert then + keyvalue:=detailChange.NewValueByName[Change.Delta.KeyFieldNames[k]] + else + keyvalue:=detailChange.oldValueByName[Change.Delta.KeyFieldNames[k]]; + if not VarSameValue(keyValue, ChangePKValueArray[k]) then begin + lNeedDeleteChange:= False; + Break; + end; + end; + if lNeedDeleteChange then TDADataTable(details[i]).CancelUpdateChange(detailChange,IncludeDetails); + end; + end; + end; + finally + details.Free; + end; + end; + InternalCancelUpdateChange(change); + Delta.RemoveChange(change); + finally + if Delta.Count = 0 then fHasReducedDelta:=False; + MasterFields := lOldMasterFields; + end; + finally + CurrRecId := orignextinc; + LogChanges := TRUE; + RemoteFetchEnabled := remotefetch; + end; + finally + Filtered := wasfiltered; + EnableControls; + end; +end; + +procedure TDADataTable.InternalCancelUpdateChange(Change: TDADeltaChange); +var + i, x : integer; + fldname : string; + fldvalue : Variant; + details: TList; + RecID:string; +begin + case Change.ChangeType of + ctDelete : begin + CurrRecId := change.RecID; // We want the same autoinc regenerated + RecID:=IntToStr(Change.RecID); + Insert; + for x := 0 to (Delta.LoggedFieldCount-1) do begin + fldname := Delta.LoggedFieldNames[x]; + fldvalue := change.OldValues[x]; + VariantToFieldValue(fldValue, FieldByName(fldname)); + end; + Post; + + details := GetDetailDataTables; + try + for x := 0 to (details.Count-1) do begin + i:=TDADataTable(details[x]).fFetchedMasters.IndexOf(RecID); + if i<>-1 then TDADataTable(details[x]).fFetchedMasters.Delete(i); + end; + finally + details.Free; + end; + + + end; + + else begin + if not Locate(RecIDFieldName, change.RecID, []) then RaiseError('Couldn''t find record #'+FormatRecIDString(change.RecID)); + + if (change.ChangeType=ctInsert) then Delete + else begin + Edit; + for x := 0 to (Delta.LoggedFieldCount-1) do begin + fldname := Delta.LoggedFieldNames[x]; + fldvalue := change.OldValues[x]; + if fHasReducedDelta and ROVariantsEqual(fldvalue, change.NewValues[x]) then Continue; + VariantToFieldValue(fldValue, FieldByName(fldname)); + end; + Post; + end; + end; + end; +end; + +procedure TDADataTable.CheckProperties(ACheckRemoteFetching: Boolean=False); +begin + if RemoteFetchEnabled or ACheckRemoteFetching then begin + Check(RemoteDataAdapter = nil, Name+'.RemoteDataAdapter must be assigned.'); + end + else begin + Check(LocalDataStreamer = nil , Name+'.LocalDataStreamer must be assigned.'); + Check(LocalSchema = nil, Name+'.LocalSchema must be assigned.'); + LocalSchema.CheckProperties; + end; +end; + + +procedure TDADataTable.ExpessionEvaluatorGetValue( + Sender: TDAExpressionEvaluator; const aIdentifier: string; + out aValue: Variant); +begin + aValue := Fields.FieldByName(aIdentifier).Value; +end; + +function TDADataTable.GetDynamicWhere: TDAWhereBuilder; +begin + Result := fDynamicWhere; +end; + +procedure TDADataTable.SetDynamicWhere(const Value: TDAWhereBuilder); +begin + if Value <> nil then + FDynamicWhere.Xml := Value.Xml + else + FDynamicWhere.Clear; +end; + +{ TDADataSource } + +constructor TDADataSource.Create(aOwner: TComponent); +begin + inherited; +end; + +destructor TDADataSource.Destroy; +begin + inherited; +end; + +function TDADataSource.GetActive: boolean; +begin + result := (fDataTable <> nil) and fDataTable.Active +end; + +function TDADataSource.GetDataset: TDataset; +begin + result := nil; +end; + +function TDADataSource.GetOpening: boolean; +begin + result := (fDataTable <> nil) and fDataTable.Opening +end; + +procedure TDADataSource.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited; + + if (AComponent = fDataTable) then begin + fDataTable := nil; + inherited Dataset := nil; + end; +end; + +procedure TDADataSource.SetDataset(const Value: TDataset); +begin + +end; + +procedure TDADataSource.SetDataTable(const Value: TDADataTable); +begin + fDataTable := Value; + if (fDataTable <> nil) then begin + fDataTable.FreeNotification(Self); + inherited Dataset := fDataTable.Dataset; + end + else + inherited Dataset := nil; +end; + +{ TDABusinessRules } + +constructor TDABusinessRules.Create; +begin + inherited; +end; + +destructor TDABusinessRules.Destroy; +begin + inherited; +end; + +function TDABusinessRules._AddRef: Integer; +begin + result := -1; +end; + +function TDABusinessRules._Release: Integer; +begin + result := -1; +end; + +{ TDADataTableRules } + +constructor TDADataTableRules.Create(aDataTable: TDADataTable); +begin + inherited Create; + + Check(not Assigned(aDatatable), 'DataTable cannot be NIL'); + + fDetails := TStringList.Create; + fDetails.Sorted := TRUE; + fDetails.Duplicates := dupError; + + fDataTable := aDataTable; +end; + +destructor TDADataTableRules.Destroy; +begin + fDetails.Free; + + inherited; +end; + +procedure TDADataTableRules.AfterCancel(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterClose(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterDelete(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterEdit(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterInsert(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterOpen(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterPost(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterRefresh(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.AfterScroll(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeCancel(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeClose(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeDelete(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeEdit(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeInsert(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeOpen(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforePost(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeRefresh(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.BeforeScroll(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.OnCalcFields(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.OnNewRecord(Sender: TDADataTable); +begin + +end; + +procedure TDADataTableRules.OnDeleteError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + +end; + +procedure TDADataTableRules.OnEditError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + +end; + +procedure TDADataTableRules.Attach(aDataTable: TDADataTable); +begin + RefreshDetails; +end; + +procedure TDADataTableRules.Detach(aDataTable: TDADataTable); +begin + fDetails.Clear; +end; + +procedure TDADataTableRules.Append; +begin + fDataTable.Append(); +end; + +procedure TDADataTableRules.Cancel; +begin + fDataTable.Cancel(); +end; + +procedure TDADataTableRules.Delete; +begin + fDataTable.Delete(); +end; + +procedure TDADataTableRules.Edit; +begin + fDataTable.Edit(); +end; + +procedure TDADataTableRules.First; +begin + fDataTable.First(); +end; + +procedure TDADataTableRules.Insert; +begin + fDataTable.Insert(); +end; + +procedure TDADataTableRules.Last; +begin + fDataTable.Last(); +end; + +procedure TDADataTableRules.Next; +begin + fDataTable.Next(); +end; + +procedure TDADataTableRules.Post; +begin + fDataTable.Post(); +end; + +procedure TDADataTableRules.Prior; +begin + fDataTable.Prior(); +end; + +function TDADataTableRules.GetBOF: Boolean; +begin + result := fDataTable.BOF; +end; + +function TDADataTableRules.GetEOF: Boolean; +begin + result := fDataTable.EOF; +end; + +function TDADataTableRules.GetRecordCount: Integer; +begin + result := fDataTable.RecordCount; +end; + +function TDADataTableRules.Locate(const aKeyFields: String; const aKeyValues: Variant; aOptions: TLocateOptions = []): boolean; +begin + result := fDataTable.Locate(aKeyFields, aKeyValues, aOptions); +end; + +function TDADataTableRules.GetDetails(Index: integer): TDADataTable; +begin + result := TDADataTable(fDetails[Index]) +end; + +function TDADataTableRules.GetDetailsCount: integer; +begin + result := fDetails.Count +end; + +function TDADataTableRules.FindDetail( + const aLogicalName: string): TDADataTable; +var i : integer; +begin + result := NIL; + i := fDetails.IndexOf(aLogicalName); + + if (i>=0) then result := TDADataTable(fDetails.Objects[i]); +end; + +function TDADataTableRules.DetailByName( + const aLogicalName: string): TDADataTable; +begin + result := FindDetail(aLogicalName); + if (result=NIL) + then raise Exception.CreateFmt('Cannot find the detail DataTable %s ', [aLogicalName]); +end; + +procedure TDADataTableRules.RefreshDetails; +var lList : TList; + i : integer; + lLogicalName : string; +begin + lList := DataTable.GetDetailDataTables; + fDetails.Clear; + try + for i := 0 to (lList.Count-1) do begin + lLogicalName := TDADataTable(lList[i]).LogicalName; + + if (lLogicalName<>'') + then fDetails.AddObject(lLogicalName, lList[i]); + end; + finally + lList.Free; + end; +end; + +function TDADataTableRules.GetDetailOptions: TDADetailOptions; +begin + result := DataTable.DetailOptions +end; + +function TDADataTableRules.GetMasterOptions: TDAMasterOptions; +begin + result := DataTable.MasterOptions +end; + +procedure TDADataTableRules.SetDetailOptions(Value: TDADetailOptions); +begin + DataTable.DetailOptions := Value +end; + +procedure TDADataTableRules.SetMasterOptions(Value: TDAMasterOptions); +begin + DataTable.MasterOptions := Value +end; + +function TDADataTableRules.GetRecNo: integer; +begin + result := fDataTable.RecNo +end; + +procedure TDADataTableRules.SetRecNo(Value: integer); +begin + fDataTable.RecNo := Value +end; + +procedure TDADataTableRules.OnFilterRecord(DataTable: TDADataTable; + var Accept: boolean); +begin + +end; + +procedure TDADataTableRules.OnPostError(DataTable: TDADataTable; + Error: EDatabaseError; var Action: TDataAction); +begin + +end; + +function TDADataTableRules.Lookup(const KeyFields: string; + const KeyValues: Variant; const ResultFields: string): Variant; +begin + result := fDataTable.Lookup(KeyFields, KeyValues, ResultFields); +end; + +function TDADataTableRules.GetIsEmpty: boolean; +begin + result := fDataTable.IsEmpty +end; + +function TDADataTableRules.GetState: TDatasetState; +begin + result := fDataTable.State +end; + +function TDADataTableRules.IsFieldNull( + const FieldIndexOrName: Variant): boolean; +var fld : TDAField; +begin + case VarType(FieldIndexOrName) of + varString, varOleStr, varStrArg : fld := DataTable.FieldByName(VarToStr(FieldIndexOrName)); + else fld := DataTable.Fields[FieldIndexOrName]; + end; + + result := fld.IsNull; +end; + +procedure TDADataTableRules.ClearField(const FieldIndexOrName: Variant); +var fld : TDAField; +begin + case VarType(FieldIndexOrName) of + varString, varOleStr, varStrArg : fld := DataTable.FieldByName(VarToStr(FieldIndexOrName)); + else fld := DataTable.Fields[FieldIndexOrName]; + end; + + fld.Clear; +end; + +function TDADataTableRules.GetDataTable: TDADataTable; +begin + result := fDataTable; +end; + +procedure TDADataTableRules.ApplyRange; +begin + (fDataTable as IDARangeController).ApplyRange +end; + +procedure TDADataTableRules.CancelRange; +begin + (fDataTable as IDARangeController).CancelRange +end; + +procedure TDADataTableRules.EditRangeEnd; +begin + (fDataTable as IDARangeController).EditRangeEnd +end; + +procedure TDADataTableRules.EditRangeStart; +begin + (fDataTable as IDARangeController).EditRangeStart +end; + +procedure TDADataTableRules.SetRange(const StartValues, + EndValues: array of const); +begin + (fDataTable as IDARangeController).SetRange(StartValues, EndValues); +end; + +procedure TDADataTableRules.SetRangeEnd; +begin + (fDataTable as IDARangeController).SetRangeEnd +end; + +procedure TDADataTableRules.SetRangeStart; +begin + (fDataTable as IDARangeController).SetRangeStart +end; + +procedure TDADataTableRules.Close; +begin + fDataTable.Close; +end; + +procedure TDADataTableRules.Open; +begin + fDataTable.Open; +end; + +function TDADataTableRules.GetActive: boolean; +begin + result := fDataTable.Active; +end; + +procedure TDADataTableRules.SetActive(const Value: boolean); +begin + fDataTable.Active := Value; +end; + +procedure TDADataTableRules.OnAfterApplyUpdates(DataTable: TDADataTable); +begin + +end; + +procedure TDADataTableRules.OnAfterDataRequestCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnAfterDataUpdateCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnAfterMergeDelta(DataTable: TDADataTable); +begin + +end; + +procedure TDADataTableRules.OnAfterSchemaCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnAfterScriptCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnBeforeApplyUpdates(DataTable: TDADataTable; + const Delta: IDADelta); +begin + +end; + +procedure TDADataTableRules.OnBeforeDataRequestCall( + DataTable: TDADataTable; Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnBeforeDataUpdateCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnBeforeMergeDelta(DataTable: TDADataTable); +begin + +end; + +procedure TDADataTableRules.OnBeforeSchemaCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnBeforeScriptCall(DataTable: TDADataTable; + Request: TDARemoteRequest); +begin + +end; + +procedure TDADataTableRules.OnReceiveDataStream(DataTable: TDADataTable; + Stream: TStream); +begin + +end; + +{ TDAFieldRules } +constructor TDAFieldRules.Create(aField : TDAField; aDataTable : TDADataTable); +begin + inherited Create; + + fDataTable := aDataTable; + + fField := aField; + fField.OnValidate := OnValidate; + fField.OnChange := OnChange; + + Attach(fDataTable); +end; + +destructor TDAFieldRules.Destroy; +begin + Detach(fDataTable); + inherited; +end; + +procedure TDAFieldRules.Attach(aDataTable: TDADataTable); +begin + +end; + +procedure TDAFieldRules.Detach(aDataTable: TDADataTable); +begin + +end; + +procedure TDAFieldRules.OnChange(Sender: TDACustomField); +begin +end; + +procedure TDAFieldRules.OnValidate(Sender: TDACustomField); +begin +end; + +{ TDADataTableList } +constructor TDADataTableList.Create(aOwnerComponent: TComponent); +begin + inherited Create; + + ScanAndAdd(aOwnerComponent); +end; + +function TDADataTableList.Add(aDataTable: TDADataTable): integer; +begin + result := inherited Add(aDataTable); +end; + +function TDADataTableList.GetItems(Index: integer): TDADataTable; +begin + result := TDADataTable(inherited Items[Index]); +end; + +procedure TDADataTableList.Remove(aDataTable: TDADataTable); +begin + inherited Remove(aDataTable); +end; + + +function TDADataTableList.ScanAndAdd(aOwnerComponent: TComponent): integer; +var i : integer; +begin + result := 0; + with aOwnerComponent do begin + for i := 0 to (Count-1) do + if (Components[i] is TDADataTable) then begin + Add(TDADataTable(Components[i])); + Inc(result); + end; + end; +end; + +function TDADataTableList.GetPendingChangeCount: integer; +var i : integer; +begin + result := 0; + for i := 0 to (Count-1) do + if Items[i].Active and Items[i].LogChanges + then Inc(result, Items[i].Delta.Count); +end; + +{ TDABaseRemoteDataAdapter } + +function TDABaseRemoteDataAdapter.Get_GetDataCall: TDARemoteRequest; +begin + result := nil; +end; + +function TDABaseRemoteDataAdapter.Get_GetSchemaCall: TDARemoteRequest; +begin + result := nil; +end; + +function TDABaseRemoteDataAdapter.Get_GetScriptsCall: TDARemoteRequest; +begin + result := nil; +end; + +function TDABaseRemoteDataAdapter.Get_UpdateDataCall: TDARemoteRequest; +begin + result := nil; +end; + +initialization + RegisterExceptionClass(EDABizValidationException); + + _bizfields := TStringList.Create; + _bizfields.Sorted := TRUE; + + _bizdatatables := TStringList.Create; + _bizdatatables.Sorted := TRUE; + +finalization + UnregisterExceptionClass(EDABizValidationException); + _bizdatatables.Free; + _bizfields.Free; + +end. diff --git a/2.1.0/Tools/librerias cliente/AdminPV.exe b/2.1.0/Tools/librerias cliente/AdminPV.exe new file mode 100644 index 0000000..fdd2e65 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/AdminPV.exe differ diff --git a/2.1.0/Tools/librerias cliente/AdminPV_Server.exe b/2.1.0/Tools/librerias cliente/AdminPV_Server.exe new file mode 100644 index 0000000..720a525 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/AdminPV_Server.exe differ diff --git a/2.1.0/Tools/librerias cliente/BaseD10.bpl b/2.1.0/Tools/librerias cliente/BaseD10.bpl new file mode 100644 index 0000000..957498d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/BaseD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/CargaEDI.exe b/2.1.0/Tools/librerias cliente/CargaEDI.exe new file mode 100644 index 0000000..3940893 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/CargaEDI.exe differ diff --git a/2.1.0/Tools/librerias cliente/Configuracion.bpl b/2.1.0/Tools/librerias cliente/Configuracion.bpl new file mode 100644 index 0000000..8b9a597 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Configuracion.bpl differ diff --git a/2.1.0/Tools/librerias cliente/ControlesBaseD10.bpl b/2.1.0/Tools/librerias cliente/ControlesBaseD10.bpl new file mode 100644 index 0000000..6fbe253 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/ControlesBaseD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_ADODriver_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_ADODriver_D10.bpl new file mode 100644 index 0000000..b63b3d0 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_ADODriver_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_BDEDriver_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_BDEDriver_D10.bpl new file mode 100644 index 0000000..4f274d9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_BDEDriver_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_Core_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_Core_D10.bpl new file mode 100644 index 0000000..ff94f68 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_Core_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_DBXDriver_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_DBXDriver_D10.bpl new file mode 100644 index 0000000..44c9abd Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_DBXDriver_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_DBXDriver_D10B.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_DBXDriver_D10B.bpl new file mode 100644 index 0000000..274fc29 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_DBXDriver_D10B.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_IBXDriver_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_IBXDriver_D10.bpl new file mode 100644 index 0000000..c998081 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_IBXDriver_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_IDE_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_IDE_D10.bpl new file mode 100644 index 0000000..6b1caa6 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_IDE_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_SQLiteDriver_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_SQLiteDriver_D10.bpl new file mode 100644 index 0000000..2e5fdf1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_SQLiteDriver_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/DataAbstract_Scripting_D10.bpl b/2.1.0/Tools/librerias cliente/DataAbstract_Scripting_D10.bpl new file mode 100644 index 0000000..f931c9b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/DataAbstract_Scripting_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Devoluciones.bpl b/2.1.0/Tools/librerias cliente/Devoluciones.bpl new file mode 100644 index 0000000..253ac33 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Devoluciones.bpl differ diff --git a/2.1.0/Tools/librerias cliente/EasyListviewD11.bpl b/2.1.0/Tools/librerias cliente/EasyListviewD11.bpl new file mode 100644 index 0000000..4938b7e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/EasyListviewD11.bpl differ diff --git a/2.1.0/Tools/librerias cliente/EasyListviewD11D.bpl b/2.1.0/Tools/librerias cliente/EasyListviewD11D.bpl new file mode 100644 index 0000000..ffdbbc5 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/EasyListviewD11D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/FicherosEDI.bpl b/2.1.0/Tools/librerias cliente/FicherosEDI.bpl new file mode 100644 index 0000000..86f7bb3 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/FicherosEDI.bpl differ diff --git a/2.1.0/Tools/librerias cliente/GUISDK_D10.bpl b/2.1.0/Tools/librerias cliente/GUISDK_D10.bpl new file mode 100644 index 0000000..98bce01 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/GUISDK_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Jcl100.bpl b/2.1.0/Tools/librerias cliente/Jcl100.bpl new file mode 100644 index 0000000..49872e1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Jcl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JclVcl100.bpl b/2.1.0/Tools/librerias cliente/JclVcl100.bpl new file mode 100644 index 0000000..e8613c9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JclVcl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Jv3rdD10R.bpl b/2.1.0/Tools/librerias cliente/Jv3rdD10R.bpl new file mode 100644 index 0000000..509f4f0 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Jv3rdD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvAppFrmD10D.bpl b/2.1.0/Tools/librerias cliente/JvAppFrmD10D.bpl new file mode 100644 index 0000000..2020e2b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvAppFrmD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvAppFrmD10R.bpl b/2.1.0/Tools/librerias cliente/JvAppFrmD10R.bpl new file mode 100644 index 0000000..7449487 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvAppFrmD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvBDED10D.bpl b/2.1.0/Tools/librerias cliente/JvBDED10D.bpl new file mode 100644 index 0000000..196a37c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvBDED10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvBDED10R.bpl b/2.1.0/Tools/librerias cliente/JvBDED10R.bpl new file mode 100644 index 0000000..2256847 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvBDED10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvBandsD10D.bpl b/2.1.0/Tools/librerias cliente/JvBandsD10D.bpl new file mode 100644 index 0000000..ed9f40a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvBandsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvBandsD10R.bpl b/2.1.0/Tools/librerias cliente/JvBandsD10R.bpl new file mode 100644 index 0000000..68c8689 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvBandsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCmpD10D.bpl b/2.1.0/Tools/librerias cliente/JvCmpD10D.bpl new file mode 100644 index 0000000..7a5ff2d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCmpD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCmpD10R.bpl b/2.1.0/Tools/librerias cliente/JvCmpD10R.bpl new file mode 100644 index 0000000..5f3136a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCmpD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCoreD10D.bpl b/2.1.0/Tools/librerias cliente/JvCoreD10D.bpl new file mode 100644 index 0000000..f5835d1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCoreD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCoreD10R.bpl b/2.1.0/Tools/librerias cliente/JvCoreD10R.bpl new file mode 100644 index 0000000..4066b85 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCoreD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCryptD10D.bpl b/2.1.0/Tools/librerias cliente/JvCryptD10D.bpl new file mode 100644 index 0000000..aa7dbb2 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCryptD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCryptD10R.bpl b/2.1.0/Tools/librerias cliente/JvCryptD10R.bpl new file mode 100644 index 0000000..5c642d4 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCryptD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCtrlsD10D.bpl b/2.1.0/Tools/librerias cliente/JvCtrlsD10D.bpl new file mode 100644 index 0000000..7cd6ac3 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCtrlsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCtrlsD10R.bpl b/2.1.0/Tools/librerias cliente/JvCtrlsD10R.bpl new file mode 100644 index 0000000..f1fd0db Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCtrlsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCustomD10D.bpl b/2.1.0/Tools/librerias cliente/JvCustomD10D.bpl new file mode 100644 index 0000000..8e91a31 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCustomD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvCustomD10R.bpl b/2.1.0/Tools/librerias cliente/JvCustomD10R.bpl new file mode 100644 index 0000000..a57a8b8 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvCustomD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDBD10D.bpl b/2.1.0/Tools/librerias cliente/JvDBD10D.bpl new file mode 100644 index 0000000..3f16f7c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDBD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDBD10R.bpl b/2.1.0/Tools/librerias cliente/JvDBD10R.bpl new file mode 100644 index 0000000..b9b835d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDBD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDlgsD10D.bpl b/2.1.0/Tools/librerias cliente/JvDlgsD10D.bpl new file mode 100644 index 0000000..1c5a7b1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDlgsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDlgsD10R.bpl b/2.1.0/Tools/librerias cliente/JvDlgsD10R.bpl new file mode 100644 index 0000000..f504fe1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDlgsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDockingD10D.bpl b/2.1.0/Tools/librerias cliente/JvDockingD10D.bpl new file mode 100644 index 0000000..0ddec30 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDockingD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDockingD10R.bpl b/2.1.0/Tools/librerias cliente/JvDockingD10R.bpl new file mode 100644 index 0000000..224784a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDockingD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDotNetCtrlsD10D.bpl b/2.1.0/Tools/librerias cliente/JvDotNetCtrlsD10D.bpl new file mode 100644 index 0000000..910db51 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDotNetCtrlsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvDotNetCtrlsD10R.bpl b/2.1.0/Tools/librerias cliente/JvDotNetCtrlsD10R.bpl new file mode 100644 index 0000000..8bfdd40 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvDotNetCtrlsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvEDID10D.bpl b/2.1.0/Tools/librerias cliente/JvEDID10D.bpl new file mode 100644 index 0000000..4b74e6b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvEDID10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvEDID10R.bpl b/2.1.0/Tools/librerias cliente/JvEDID10R.bpl new file mode 100644 index 0000000..d9673eb Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvEDID10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvGlobusD10D.bpl b/2.1.0/Tools/librerias cliente/JvGlobusD10D.bpl new file mode 100644 index 0000000..2ca0103 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvGlobusD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvGlobusD10R.bpl b/2.1.0/Tools/librerias cliente/JvGlobusD10R.bpl new file mode 100644 index 0000000..01e6d31 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvGlobusD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvHMID10D.bpl b/2.1.0/Tools/librerias cliente/JvHMID10D.bpl new file mode 100644 index 0000000..ef10201 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvHMID10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvHMID10R.bpl b/2.1.0/Tools/librerias cliente/JvHMID10R.bpl new file mode 100644 index 0000000..1450b50 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvHMID10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvInterpreterD10D.bpl b/2.1.0/Tools/librerias cliente/JvInterpreterD10D.bpl new file mode 100644 index 0000000..95363c9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvInterpreterD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvInterpreterD10R.bpl b/2.1.0/Tools/librerias cliente/JvInterpreterD10R.bpl new file mode 100644 index 0000000..da966b3 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvInterpreterD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvJansD10D.bpl b/2.1.0/Tools/librerias cliente/JvJansD10D.bpl new file mode 100644 index 0000000..36275e6 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvJansD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvJansD10R.bpl b/2.1.0/Tools/librerias cliente/JvJansD10R.bpl new file mode 100644 index 0000000..088ea91 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvJansD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvMMD10D.bpl b/2.1.0/Tools/librerias cliente/JvMMD10D.bpl new file mode 100644 index 0000000..a73a63f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvMMD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvMMD10R.bpl b/2.1.0/Tools/librerias cliente/JvMMD10R.bpl new file mode 100644 index 0000000..5aead3b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvMMD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvManagedThreadsD10D.bpl b/2.1.0/Tools/librerias cliente/JvManagedThreadsD10D.bpl new file mode 100644 index 0000000..61acd1a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvManagedThreadsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvManagedThreadsD10R.bpl b/2.1.0/Tools/librerias cliente/JvManagedThreadsD10R.bpl new file mode 100644 index 0000000..8cc14af Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvManagedThreadsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvNetD10D.bpl b/2.1.0/Tools/librerias cliente/JvNetD10D.bpl new file mode 100644 index 0000000..43d6b4f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvNetD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvNetD10R.bpl b/2.1.0/Tools/librerias cliente/JvNetD10R.bpl new file mode 100644 index 0000000..62f4662 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvNetD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvPageCompsD10D.bpl b/2.1.0/Tools/librerias cliente/JvPageCompsD10D.bpl new file mode 100644 index 0000000..da8e613 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvPageCompsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvPageCompsD10R.bpl b/2.1.0/Tools/librerias cliente/JvPageCompsD10R.bpl new file mode 100644 index 0000000..fbf8705 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvPageCompsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvPluginD10D.bpl b/2.1.0/Tools/librerias cliente/JvPluginD10D.bpl new file mode 100644 index 0000000..a8b0dc7 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvPluginD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvPluginD10R.bpl b/2.1.0/Tools/librerias cliente/JvPluginD10R.bpl new file mode 100644 index 0000000..36c81ef Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvPluginD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvPrintPreviewD10D.bpl b/2.1.0/Tools/librerias cliente/JvPrintPreviewD10D.bpl new file mode 100644 index 0000000..f0d8905 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvPrintPreviewD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvPrintPreviewD10R.bpl b/2.1.0/Tools/librerias cliente/JvPrintPreviewD10R.bpl new file mode 100644 index 0000000..7bd2582 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvPrintPreviewD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvRuntimeDesignD10D.bpl b/2.1.0/Tools/librerias cliente/JvRuntimeDesignD10D.bpl new file mode 100644 index 0000000..46ee799 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvRuntimeDesignD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvRuntimeDesignD10R.bpl b/2.1.0/Tools/librerias cliente/JvRuntimeDesignD10R.bpl new file mode 100644 index 0000000..1de3641 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvRuntimeDesignD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvStdCtrlsD10D.bpl b/2.1.0/Tools/librerias cliente/JvStdCtrlsD10D.bpl new file mode 100644 index 0000000..416eda3 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvStdCtrlsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvStdCtrlsD10R.bpl b/2.1.0/Tools/librerias cliente/JvStdCtrlsD10R.bpl new file mode 100644 index 0000000..3d80e12 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvStdCtrlsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvSystemD10D.bpl b/2.1.0/Tools/librerias cliente/JvSystemD10D.bpl new file mode 100644 index 0000000..9e61b37 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvSystemD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvSystemD10R.bpl b/2.1.0/Tools/librerias cliente/JvSystemD10R.bpl new file mode 100644 index 0000000..3784d8f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvSystemD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvTimeFrameworkD10D.bpl b/2.1.0/Tools/librerias cliente/JvTimeFrameworkD10D.bpl new file mode 100644 index 0000000..13fbb11 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvTimeFrameworkD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvTimeFrameworkD10R.bpl b/2.1.0/Tools/librerias cliente/JvTimeFrameworkD10R.bpl new file mode 100644 index 0000000..30ea27e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvTimeFrameworkD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvUIBD10D.bpl b/2.1.0/Tools/librerias cliente/JvUIBD10D.bpl new file mode 100644 index 0000000..f3554d1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvUIBD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvUIBD10R.bpl b/2.1.0/Tools/librerias cliente/JvUIBD10R.bpl new file mode 100644 index 0000000..5376534 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvUIBD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvValidatorsD10D.bpl b/2.1.0/Tools/librerias cliente/JvValidatorsD10D.bpl new file mode 100644 index 0000000..95faaa0 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvValidatorsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvValidatorsD10R.bpl b/2.1.0/Tools/librerias cliente/JvValidatorsD10R.bpl new file mode 100644 index 0000000..c1d2708 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvValidatorsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvWizardD10D.bpl b/2.1.0/Tools/librerias cliente/JvWizardD10D.bpl new file mode 100644 index 0000000..587300f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvWizardD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvWizardD10R.bpl b/2.1.0/Tools/librerias cliente/JvWizardD10R.bpl new file mode 100644 index 0000000..6b2c699 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvWizardD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvXPCtrlsD10D.bpl b/2.1.0/Tools/librerias cliente/JvXPCtrlsD10D.bpl new file mode 100644 index 0000000..215672f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvXPCtrlsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/JvXPCtrlsD10R.bpl b/2.1.0/Tools/librerias cliente/JvXPCtrlsD10R.bpl new file mode 100644 index 0000000..2f256ed Binary files /dev/null and b/2.1.0/Tools/librerias cliente/JvXPCtrlsD10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/MPCommonLibD11.bpl b/2.1.0/Tools/librerias cliente/MPCommonLibD11.bpl new file mode 100644 index 0000000..ad7bfc9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/MPCommonLibD11.bpl differ diff --git a/2.1.0/Tools/librerias cliente/MPCommonLibD11D.bpl b/2.1.0/Tools/librerias cliente/MPCommonLibD11D.bpl new file mode 100644 index 0000000..6d8e674 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/MPCommonLibD11D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/PNG_D10.bpl b/2.1.0/Tools/librerias cliente/PNG_D10.bpl new file mode 100644 index 0000000..c82d906 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/PNG_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Parametros.bpl b/2.1.0/Tools/librerias cliente/Parametros.bpl new file mode 100644 index 0000000..e01ad08 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Parametros.bpl differ diff --git a/2.1.0/Tools/librerias cliente/PluginSDK_D10D.bpl b/2.1.0/Tools/librerias cliente/PluginSDK_D10D.bpl new file mode 100644 index 0000000..9e038d9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/PluginSDK_D10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/PluginSDK_D10R.bpl b/2.1.0/Tools/librerias cliente/PluginSDK_D10R.bpl new file mode 100644 index 0000000..f7d3415 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/PluginSDK_D10R.bpl differ diff --git a/2.1.0/Tools/librerias cliente/PngComponentsD10.bpl b/2.1.0/Tools/librerias cliente/PngComponentsD10.bpl new file mode 100644 index 0000000..b51fedd Binary files /dev/null and b/2.1.0/Tools/librerias cliente/PngComponentsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/PngComponentsD10D.bpl b/2.1.0/Tools/librerias cliente/PngComponentsD10D.bpl new file mode 100644 index 0000000..4265626 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/PngComponentsD10D.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Recepciones.bpl b/2.1.0/Tools/librerias cliente/Recepciones.bpl new file mode 100644 index 0000000..63a6a24 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Recepciones.bpl differ diff --git a/2.1.0/Tools/librerias cliente/ReferenciaGenerica.bpl b/2.1.0/Tools/librerias cliente/ReferenciaGenerica.bpl new file mode 100644 index 0000000..de89a09 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/ReferenciaGenerica.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_BPDX_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_BPDX_D10.bpl new file mode 100644 index 0000000..37816c7 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_BPDX_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_Core_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_Core_D10.bpl new file mode 100644 index 0000000..0299728 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_Core_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_DataSnap_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_DataSnap_D10.bpl new file mode 100644 index 0000000..e39c148 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_DataSnap_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_IDE_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_IDE_D10.bpl new file mode 100644 index 0000000..d067c6e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_IDE_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_Indy_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_Indy_D10.bpl new file mode 100644 index 0000000..9d108ad Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_Indy_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_RODX_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_RODX_D10.bpl new file mode 100644 index 0000000..c58d97a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_RODX_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_Synapse_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_Synapse_D10.bpl new file mode 100644 index 0000000..a42c103 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_Synapse_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/RemObjects_WebBroker_D10.bpl b/2.1.0/Tools/librerias cliente/RemObjects_WebBroker_D10.bpl new file mode 100644 index 0000000..dad85c4 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/RemObjects_WebBroker_D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Stock.bpl b/2.1.0/Tools/librerias cliente/Stock.bpl new file mode 100644 index 0000000..4dbde1b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Stock.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Traspasos.bpl b/2.1.0/Tools/librerias cliente/Traspasos.bpl new file mode 100644 index 0000000..f00fc8e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Traspasos.bpl differ diff --git a/2.1.0/Tools/librerias cliente/Usuarios.bpl b/2.1.0/Tools/librerias cliente/Usuarios.bpl new file mode 100644 index 0000000..35a83f6 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/Usuarios.bpl differ diff --git a/2.1.0/Tools/librerias cliente/VentasProceso.bpl b/2.1.0/Tools/librerias cliente/VentasProceso.bpl new file mode 100644 index 0000000..7c16be9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/VentasProceso.bpl differ diff --git a/2.1.0/Tools/librerias cliente/VentasTerminadas.bpl b/2.1.0/Tools/librerias cliente/VentasTerminadas.bpl new file mode 100644 index 0000000..4eda19e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/VentasTerminadas.bpl differ diff --git a/2.1.0/Tools/librerias cliente/adortl100.bpl b/2.1.0/Tools/librerias cliente/adortl100.bpl new file mode 100644 index 0000000..8980cf5 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/adortl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/bdertl100.bpl b/2.1.0/Tools/librerias cliente/bdertl100.bpl new file mode 100644 index 0000000..9049cef Binary files /dev/null and b/2.1.0/Tools/librerias cliente/bdertl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/ccpack10.bpl b/2.1.0/Tools/librerias cliente/ccpack10.bpl new file mode 100644 index 0000000..60eac02 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/ccpack10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/ccpack10dsg.bpl b/2.1.0/Tools/librerias cliente/ccpack10dsg.bpl new file mode 100644 index 0000000..acb10ac Binary files /dev/null and b/2.1.0/Tools/librerias cliente/ccpack10dsg.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cfpack_d10.bpl b/2.1.0/Tools/librerias cliente/cfpack_d10.bpl new file mode 100644 index 0000000..c11c9fb Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cfpack_d10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxADOAdaptersD10.bpl b/2.1.0/Tools/librerias cliente/cxADOAdaptersD10.bpl new file mode 100644 index 0000000..ede183a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxADOAdaptersD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxBDEAdaptersD10.bpl b/2.1.0/Tools/librerias cliente/cxBDEAdaptersD10.bpl new file mode 100644 index 0000000..484531e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxBDEAdaptersD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxDataD10.bpl b/2.1.0/Tools/librerias cliente/cxDataD10.bpl new file mode 100644 index 0000000..c90031d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxDataD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxEditorsD10.bpl b/2.1.0/Tools/librerias cliente/cxEditorsD10.bpl new file mode 100644 index 0000000..098eee5 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxEditorsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxExportD10.bpl b/2.1.0/Tools/librerias cliente/cxExportD10.bpl new file mode 100644 index 0000000..b301914 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxExportD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxExtEditorsD10.bpl b/2.1.0/Tools/librerias cliente/cxExtEditorsD10.bpl new file mode 100644 index 0000000..e699840 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxExtEditorsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxGridD10.bpl b/2.1.0/Tools/librerias cliente/cxGridD10.bpl new file mode 100644 index 0000000..3c4b7b7 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxGridD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxIBXAdaptersD10.bpl b/2.1.0/Tools/librerias cliente/cxIBXAdaptersD10.bpl new file mode 100644 index 0000000..eb8dc74 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxIBXAdaptersD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxIntl5D10.bpl b/2.1.0/Tools/librerias cliente/cxIntl5D10.bpl new file mode 100644 index 0000000..24b3bd3 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxIntl5D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxIntlPrintSys3D10.bpl b/2.1.0/Tools/librerias cliente/cxIntlPrintSys3D10.bpl new file mode 100644 index 0000000..cd69617 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxIntlPrintSys3D10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxLibraryD10.bpl b/2.1.0/Tools/librerias cliente/cxLibraryD10.bpl new file mode 100644 index 0000000..2a17181 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxLibraryD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxPageControlD10.bpl b/2.1.0/Tools/librerias cliente/cxPageControlD10.bpl new file mode 100644 index 0000000..4743bd6 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxPageControlD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxSchedulerD10.bpl b/2.1.0/Tools/librerias cliente/cxSchedulerD10.bpl new file mode 100644 index 0000000..1ad055c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxSchedulerD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxTreeListD10.bpl b/2.1.0/Tools/librerias cliente/cxTreeListD10.bpl new file mode 100644 index 0000000..e12f239 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxTreeListD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/cxVerticalGridD10.bpl b/2.1.0/Tools/librerias cliente/cxVerticalGridD10.bpl new file mode 100644 index 0000000..191138f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/cxVerticalGridD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dbrtl100.bpl b/2.1.0/Tools/librerias cliente/dbrtl100.bpl new file mode 100644 index 0000000..49981b6 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dbrtl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxEditorsD10.bpl b/2.1.0/Tools/librerias cliente/dclcxEditorsD10.bpl new file mode 100644 index 0000000..3008bbd Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxEditorsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxExtEditorsD10.bpl b/2.1.0/Tools/librerias cliente/dclcxExtEditorsD10.bpl new file mode 100644 index 0000000..d8fe53a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxExtEditorsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxGridD10.bpl b/2.1.0/Tools/librerias cliente/dclcxGridD10.bpl new file mode 100644 index 0000000..9bdef64 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxGridD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxLibraryD10.bpl b/2.1.0/Tools/librerias cliente/dclcxLibraryD10.bpl new file mode 100644 index 0000000..ae453c8 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxLibraryD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxPageControlD10.bpl b/2.1.0/Tools/librerias cliente/dclcxPageControlD10.bpl new file mode 100644 index 0000000..1c09945 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxPageControlD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxSchedulerD10.bpl b/2.1.0/Tools/librerias cliente/dclcxSchedulerD10.bpl new file mode 100644 index 0000000..0ace6ee Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxSchedulerD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxTreeListD10.bpl b/2.1.0/Tools/librerias cliente/dclcxTreeListD10.bpl new file mode 100644 index 0000000..13f36c9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxTreeListD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclcxVerticalGridD10.bpl b/2.1.0/Tools/librerias cliente/dclcxVerticalGridD10.bpl new file mode 100644 index 0000000..fe1af72 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclcxVerticalGridD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxBarD10.bpl b/2.1.0/Tools/librerias cliente/dcldxBarD10.bpl new file mode 100644 index 0000000..461530c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxBarD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxBarDBNavD10.bpl b/2.1.0/Tools/librerias cliente/dcldxBarDBNavD10.bpl new file mode 100644 index 0000000..bb569c4 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxBarDBNavD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxBarExtDBItemsD10.bpl b/2.1.0/Tools/librerias cliente/dcldxBarExtDBItemsD10.bpl new file mode 100644 index 0000000..7fc4575 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxBarExtDBItemsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxBarExtItemsD10.bpl b/2.1.0/Tools/librerias cliente/dcldxBarExtItemsD10.bpl new file mode 100644 index 0000000..e9a1167 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxBarExtItemsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxDockingD10.bpl b/2.1.0/Tools/librerias cliente/dcldxDockingD10.bpl new file mode 100644 index 0000000..fc34ffc Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxDockingD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxLayoutControlD10.bpl b/2.1.0/Tools/librerias cliente/dcldxLayoutControlD10.bpl new file mode 100644 index 0000000..e303453 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxLayoutControlD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxNavBarD10.bpl b/2.1.0/Tools/librerias cliente/dcldxNavBarD10.bpl new file mode 100644 index 0000000..cf2e060 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxNavBarD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxPSCoreD10.bpl b/2.1.0/Tools/librerias cliente/dcldxPSCoreD10.bpl new file mode 100644 index 0000000..c4549b2 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxPSCoreD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dcldxsbD10.bpl b/2.1.0/Tools/librerias cliente/dcldxsbD10.bpl new file mode 100644 index 0000000..5cf26df Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dcldxsbD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfqb100.bpl b/2.1.0/Tools/librerias cliente/dclfqb100.bpl new file mode 100644 index 0000000..1e8a64a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfqb100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrx10.bpl b/2.1.0/Tools/librerias cliente/dclfrx10.bpl new file mode 100644 index 0000000..368be85 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrx10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxADO10.bpl b/2.1.0/Tools/librerias cliente/dclfrxADO10.bpl new file mode 100644 index 0000000..0f0769c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxADO10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxBDE10.bpl b/2.1.0/Tools/librerias cliente/dclfrxBDE10.bpl new file mode 100644 index 0000000..266ab39 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxBDE10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxDB10.bpl b/2.1.0/Tools/librerias cliente/dclfrxDB10.bpl new file mode 100644 index 0000000..8601b82 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxDB10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxDBX10.bpl b/2.1.0/Tools/librerias cliente/dclfrxDBX10.bpl new file mode 100644 index 0000000..afd89f2 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxDBX10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxIBX10.bpl b/2.1.0/Tools/librerias cliente/dclfrxIBX10.bpl new file mode 100644 index 0000000..24e3da1 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxIBX10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxTee10.bpl b/2.1.0/Tools/librerias cliente/dclfrxTee10.bpl new file mode 100644 index 0000000..c268f13 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxTee10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfrxe10.bpl b/2.1.0/Tools/librerias cliente/dclfrxe10.bpl new file mode 100644 index 0000000..1f53b3e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfrxe10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfs10.bpl b/2.1.0/Tools/librerias cliente/dclfs10.bpl new file mode 100644 index 0000000..7d21e80 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfs10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfsADO10.bpl b/2.1.0/Tools/librerias cliente/dclfsADO10.bpl new file mode 100644 index 0000000..70692d0 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfsADO10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfsBDE10.bpl b/2.1.0/Tools/librerias cliente/dclfsBDE10.bpl new file mode 100644 index 0000000..949dc2d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfsBDE10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfsDB10.bpl b/2.1.0/Tools/librerias cliente/dclfsDB10.bpl new file mode 100644 index 0000000..e68af7f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfsDB10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfsIBX10.bpl b/2.1.0/Tools/librerias cliente/dclfsIBX10.bpl new file mode 100644 index 0000000..f4f8bb4 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfsIBX10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dclfsTee10.bpl b/2.1.0/Tools/librerias cliente/dclfsTee10.bpl new file mode 100644 index 0000000..4393698 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dclfsTee10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/designide100.bpl b/2.1.0/Tools/librerias cliente/designide100.bpl new file mode 100644 index 0000000..c3f1ce0 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/designide100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dsnap100.bpl b/2.1.0/Tools/librerias cliente/dsnap100.bpl new file mode 100644 index 0000000..6595a1e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dsnap100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxBarD10.bpl b/2.1.0/Tools/librerias cliente/dxBarD10.bpl new file mode 100644 index 0000000..df6dc37 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxBarD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxBarDBNavD10.bpl b/2.1.0/Tools/librerias cliente/dxBarDBNavD10.bpl new file mode 100644 index 0000000..ac121fc Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxBarDBNavD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxBarExtDBItemsD10.bpl b/2.1.0/Tools/librerias cliente/dxBarExtDBItemsD10.bpl new file mode 100644 index 0000000..cd26f6d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxBarExtDBItemsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxBarExtItemsD10.bpl b/2.1.0/Tools/librerias cliente/dxBarExtItemsD10.bpl new file mode 100644 index 0000000..34b991e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxBarExtItemsD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxComnD10.bpl b/2.1.0/Tools/librerias cliente/dxComnD10.bpl new file mode 100644 index 0000000..5a1acb0 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxComnD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxDockingD10.bpl b/2.1.0/Tools/librerias cliente/dxDockingD10.bpl new file mode 100644 index 0000000..a5ed89f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxDockingD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxGDIPlusD10.bpl b/2.1.0/Tools/librerias cliente/dxGDIPlusD10.bpl new file mode 100644 index 0000000..a44e42a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxGDIPlusD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxLayoutControlD10.bpl b/2.1.0/Tools/librerias cliente/dxLayoutControlD10.bpl new file mode 100644 index 0000000..18d9308 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxLayoutControlD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxLayoutControlcxEditAdaptersD10.bpl b/2.1.0/Tools/librerias cliente/dxLayoutControlcxEditAdaptersD10.bpl new file mode 100644 index 0000000..8b3149d Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxLayoutControlcxEditAdaptersD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxNavBarD10.bpl b/2.1.0/Tools/librerias cliente/dxNavBarD10.bpl new file mode 100644 index 0000000..f187a90 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxNavBarD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPSCoreD10.bpl b/2.1.0/Tools/librerias cliente/dxPSCoreD10.bpl new file mode 100644 index 0000000..f3c39b2 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPSCoreD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPSDBTeeChartD10.bpl b/2.1.0/Tools/librerias cliente/dxPSDBTeeChartD10.bpl new file mode 100644 index 0000000..24affd8 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPSDBTeeChartD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPSLnksD10.bpl b/2.1.0/Tools/librerias cliente/dxPSLnksD10.bpl new file mode 100644 index 0000000..844c9d8 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPSLnksD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPSPrVwAdvD10.bpl b/2.1.0/Tools/librerias cliente/dxPSPrVwAdvD10.bpl new file mode 100644 index 0000000..ab6c81e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPSPrVwAdvD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPSTeeChartD10.bpl b/2.1.0/Tools/librerias cliente/dxPSTeeChartD10.bpl new file mode 100644 index 0000000..c3bf139 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPSTeeChartD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPScxCommonD10.bpl b/2.1.0/Tools/librerias cliente/dxPScxCommonD10.bpl new file mode 100644 index 0000000..4b6ac8e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPScxCommonD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPScxExtCommonD10.bpl b/2.1.0/Tools/librerias cliente/dxPScxExtCommonD10.bpl new file mode 100644 index 0000000..cdf88c9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPScxExtCommonD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPScxGridLnkD10.bpl b/2.1.0/Tools/librerias cliente/dxPScxGridLnkD10.bpl new file mode 100644 index 0000000..459bec7 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPScxGridLnkD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPScxPCProdD10.bpl b/2.1.0/Tools/librerias cliente/dxPScxPCProdD10.bpl new file mode 100644 index 0000000..e8e9193 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPScxPCProdD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPScxScheduler2LnkD10.bpl b/2.1.0/Tools/librerias cliente/dxPScxScheduler2LnkD10.bpl new file mode 100644 index 0000000..c33c7d9 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPScxScheduler2LnkD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPSdxLCLnkD10.bpl b/2.1.0/Tools/librerias cliente/dxPSdxLCLnkD10.bpl new file mode 100644 index 0000000..552b9eb Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPSdxLCLnkD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxPscxTLLnkD10.bpl b/2.1.0/Tools/librerias cliente/dxPscxTLLnkD10.bpl new file mode 100644 index 0000000..9369447 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxPscxTLLnkD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxThemeD10.bpl b/2.1.0/Tools/librerias cliente/dxThemeD10.bpl new file mode 100644 index 0000000..46572c7 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxThemeD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/dxsbD10.bpl b/2.1.0/Tools/librerias cliente/dxsbD10.bpl new file mode 100644 index 0000000..cb21e4c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/dxsbD10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fqb100.bpl b/2.1.0/Tools/librerias cliente/fqb100.bpl new file mode 100644 index 0000000..cd25a1b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fqb100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frx10.bpl b/2.1.0/Tools/librerias cliente/frx10.bpl new file mode 100644 index 0000000..5421a75 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frx10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxADO10.bpl b/2.1.0/Tools/librerias cliente/frxADO10.bpl new file mode 100644 index 0000000..36a6a01 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxADO10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxBDE10.bpl b/2.1.0/Tools/librerias cliente/frxBDE10.bpl new file mode 100644 index 0000000..974f71a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxBDE10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxDB10.bpl b/2.1.0/Tools/librerias cliente/frxDB10.bpl new file mode 100644 index 0000000..73a4212 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxDB10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxDBX10.bpl b/2.1.0/Tools/librerias cliente/frxDBX10.bpl new file mode 100644 index 0000000..897b54b Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxDBX10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxIBX10.bpl b/2.1.0/Tools/librerias cliente/frxIBX10.bpl new file mode 100644 index 0000000..809edd5 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxIBX10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxTee10.bpl b/2.1.0/Tools/librerias cliente/frxTee10.bpl new file mode 100644 index 0000000..e2856c8 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxTee10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/frxe10.bpl b/2.1.0/Tools/librerias cliente/frxe10.bpl new file mode 100644 index 0000000..029cc35 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/frxe10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fs10.bpl b/2.1.0/Tools/librerias cliente/fs10.bpl new file mode 100644 index 0000000..00dad58 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fs10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fsADO10.bpl b/2.1.0/Tools/librerias cliente/fsADO10.bpl new file mode 100644 index 0000000..378c1ef Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fsADO10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fsBDE10.bpl b/2.1.0/Tools/librerias cliente/fsBDE10.bpl new file mode 100644 index 0000000..44bb4f8 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fsBDE10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fsDB10.bpl b/2.1.0/Tools/librerias cliente/fsDB10.bpl new file mode 100644 index 0000000..cdafc0e Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fsDB10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fsIBX10.bpl b/2.1.0/Tools/librerias cliente/fsIBX10.bpl new file mode 100644 index 0000000..191582a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fsIBX10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/fsTee10.bpl b/2.1.0/Tools/librerias cliente/fsTee10.bpl new file mode 100644 index 0000000..5363d33 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/fsTee10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/rtl100.bpl b/2.1.0/Tools/librerias cliente/rtl100.bpl new file mode 100644 index 0000000..755830c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/rtl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/tb2k_d10.bpl b/2.1.0/Tools/librerias cliente/tb2k_d10.bpl new file mode 100644 index 0000000..78fe1af Binary files /dev/null and b/2.1.0/Tools/librerias cliente/tb2k_d10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/tb2kdsgn_d10.bpl b/2.1.0/Tools/librerias cliente/tb2kdsgn_d10.bpl new file mode 100644 index 0000000..e2e646a Binary files /dev/null and b/2.1.0/Tools/librerias cliente/tb2kdsgn_d10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/tbx_d10.bpl b/2.1.0/Tools/librerias cliente/tbx_d10.bpl new file mode 100644 index 0000000..07a9d69 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/tbx_d10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/tbxdsgn_d10.bpl b/2.1.0/Tools/librerias cliente/tbxdsgn_d10.bpl new file mode 100644 index 0000000..cca0528 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/tbxdsgn_d10.bpl differ diff --git a/2.1.0/Tools/librerias cliente/vcl100.bpl b/2.1.0/Tools/librerias cliente/vcl100.bpl new file mode 100644 index 0000000..9fd9b7f Binary files /dev/null and b/2.1.0/Tools/librerias cliente/vcl100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/vclactnband100.bpl b/2.1.0/Tools/librerias cliente/vclactnband100.bpl new file mode 100644 index 0000000..01b1423 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/vclactnband100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/vcldb100.bpl b/2.1.0/Tools/librerias cliente/vcldb100.bpl new file mode 100644 index 0000000..7723534 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/vcldb100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/vcljpg100.bpl b/2.1.0/Tools/librerias cliente/vcljpg100.bpl new file mode 100644 index 0000000..51342f2 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/vcljpg100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/vclshlctrls100.bpl b/2.1.0/Tools/librerias cliente/vclshlctrls100.bpl new file mode 100644 index 0000000..f49ff59 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/vclshlctrls100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/vclx100.bpl b/2.1.0/Tools/librerias cliente/vclx100.bpl new file mode 100644 index 0000000..eb7238c Binary files /dev/null and b/2.1.0/Tools/librerias cliente/vclx100.bpl differ diff --git a/2.1.0/Tools/librerias cliente/xmlrtl100.bpl b/2.1.0/Tools/librerias cliente/xmlrtl100.bpl new file mode 100644 index 0000000..c56d5d4 Binary files /dev/null and b/2.1.0/Tools/librerias cliente/xmlrtl100.bpl differ diff --git a/2.1.0/Tools/windows 2000/MDAC_TYP.EXE b/2.1.0/Tools/windows 2000/MDAC_TYP.EXE new file mode 100644 index 0000000..bfaa968 Binary files /dev/null and b/2.1.0/Tools/windows 2000/MDAC_TYP.EXE differ