diff --git a/Build/Build.fbl6 b/Build/Build.fbl6 index e938b1a..309bbaf 100644 Binary files a/Build/Build.fbl6 and b/Build/Build.fbl6 differ diff --git a/Build/Build.fbpInf b/Build/Build.fbpInf index 5c98d39..6e740fa 100644 --- a/Build/Build.fbpInf +++ b/Build/Build.fbpInf @@ -14,8 +14,8 @@ - 00:00:04 - 14/11/2011 20:46:39 + 00:00:01 + 22/11/2011 10:50:47 False diff --git a/Build/Build.fbz6 b/Build/Build.fbz6 index 820c7eb..92c03d9 100644 Binary files a/Build/Build.fbz6 and b/Build/Build.fbz6 differ diff --git a/Build/Installer.fbl6 b/Build/Installer.fbl6 index f244ae1..d6c0a32 100644 Binary files a/Build/Installer.fbl6 and b/Build/Installer.fbl6 differ diff --git a/Database/scripts/etiquetas.sql b/Database/scripts/etiquetas.sql index 33ebd7f..7526880 100644 --- a/Database/scripts/etiquetas.sql +++ b/Database/scripts/etiquetas.sql @@ -95,15 +95,6 @@ VARCHAR(30); /**** Generators ****/ /******************************************************************************/ -CREATE GENERATOR GEN_ALBARANES_CLI_DETALLES_ID; -SET GENERATOR GEN_ALBARANES_CLI_DETALLES_ID TO 933; - -CREATE GENERATOR GEN_ALBARANES_CLI_ID; -SET GENERATOR GEN_ALBARANES_CLI_ID TO 511; - -CREATE GENERATOR GEN_ARTICULOS_ID; -SET GENERATOR GEN_ARTICULOS_ID TO 3547; - CREATE GENERATOR GEN_CATEGORIAS_ID; SET GENERATOR GEN_CATEGORIAS_ID TO 4; diff --git a/Source/ApplicationBase/ApplicationBase.identcache b/Source/ApplicationBase/ApplicationBase.identcache deleted file mode 100644 index fc03293..0000000 Binary files a/Source/ApplicationBase/ApplicationBase.identcache and /dev/null differ diff --git a/Source/Base/Base.dproj b/Source/Base/Base.dproj index 2c33b27..714b6e8 100644 --- a/Source/Base/Base.dproj +++ b/Source/Base/Base.dproj @@ -45,8 +45,6 @@ Package FalseTrueFalseLibreria baseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 - - Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components Base.dpk @@ -56,58 +54,58 @@ MainSource - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
fConfigurarConexion
TForm diff --git a/Source/Base/Base.identcache b/Source/Base/Base.identcache deleted file mode 100644 index 23ef0d5..0000000 Binary files a/Source/Base/Base.identcache and /dev/null differ diff --git a/Source/Base/Base.res b/Source/Base/Base.res index 8b251f3..1641339 100644 Binary files a/Source/Base/Base.res and b/Source/Base/Base.res differ diff --git a/Source/Cliente/uBootStrap.pas b/Source/Cliente/uBootStrap.pas index a9d3423..57c90bc 100644 --- a/Source/Cliente/uBootStrap.pas +++ b/Source/Cliente/uBootStrap.pas @@ -26,10 +26,8 @@ begin //LoadModule('Familias_plugin.bpl'); //LoadModule('Fabricantes_plugin.bpl'); LoadModule('UnidadesMedida_plugin.bpl'); - LoadModule('Contactos_plugin.bpl'); - - //LoadModule('Articulos_plugin.bpl'); + LoadModule('Medicaciones_plugin.bpl'); //LoadModule(MODULENAME_ALBARANES_CLIENTE); end; diff --git a/Source/GUIBase/GUIBase.dproj b/Source/GUIBase/GUIBase.dproj index 3ca7da8..3038af0 100644 --- a/Source/GUIBase/GUIBase.dproj +++ b/Source/GUIBase/GUIBase.dproj @@ -59,30 +59,30 @@ MainSource - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +
fDialogBase
diff --git a/Source/GUIBase/GUIBase.identcache b/Source/GUIBase/GUIBase.identcache deleted file mode 100644 index 5ad8345..0000000 Binary files a/Source/GUIBase/GUIBase.identcache and /dev/null differ diff --git a/Source/GUIBase/GUIBase.res b/Source/GUIBase/GUIBase.res index 8b251f3..1641339 100644 Binary files a/Source/GUIBase/GUIBase.res and b/Source/GUIBase/GUIBase.res differ diff --git a/Source/Modulos/Articulos/Articulos_Group.groupproj b/Source/Modulos/Articulos/Articulos_Group.groupproj index 063cf2d..5b8ca0a 100644 --- a/Source/Modulos/Articulos/Articulos_Group.groupproj +++ b/Source/Modulos/Articulos/Articulos_Group.groupproj @@ -6,18 +6,12 @@ - + - - - - - - + - @@ -53,15 +47,6 @@ - - - - - - - - - @@ -98,77 +83,32 @@ - - + + - - + + - - + + - - + + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + - + \ No newline at end of file diff --git a/Source/Modulos/Articulos/Controller/Articulos_controller.dproj b/Source/Modulos/Articulos/Controller/Articulos_controller.dproj index f1cf7bf..240abe3 100644 --- a/Source/Modulos/Articulos/Controller/Articulos_controller.dproj +++ b/Source/Modulos/Articulos/Controller/Articulos_controller.dproj @@ -55,22 +55,22 @@ MainSource - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Articulos/Controller/Articulos_controller.identcache b/Source/Modulos/Articulos/Controller/Articulos_controller.identcache deleted file mode 100644 index 6e7dffe..0000000 Binary files a/Source/Modulos/Articulos/Controller/Articulos_controller.identcache and /dev/null differ diff --git a/Source/Modulos/Articulos/Controller/uArticulosController.pas b/Source/Modulos/Articulos/Controller/uArticulosController.pas index 00024be..1cab2fe 100644 --- a/Source/Modulos/Articulos/Controller/uArticulosController.pas +++ b/Source/Modulos/Articulos/Controller/uArticulosController.pas @@ -5,101 +5,55 @@ interface uses Classes, SysUtils, uDADataTable, uControllerBase, uEditorDBItem, - uIDataModuleArticulos, uBizArticulos, uProveedoresController, + uIDataModuleArticulos, uBizArticulos, uBizContactos; type TEnumReferencia = (tReferenciaParaVentas, tRefProveedorParaVentas, tReferenciaParaCompras, tRefProveedorParaCompras); IArticulosController = interface(IControllerBase) - ['{C7EA6486-7BE4-468E-A27A-621E1BA13430}'] - function Buscar(const ID: Integer; AClienteID: Integer = -1): IBizArticulo; overload; - function BuscarInventariables: IBizArticulo; - function BuscarTodos: IBizArticulo; overload; - function BuscarTodosPorProveedor: IBizArticulo; overload; - function BuscarTodos(ACliente: IBizCliente): IBizArticulo; overload; - function BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; overload; - function BuscarReferencia(const TipoReferencia: TEnumReferencia; const Ref: String; ACliProvID: Integer): IBizArticulo; -// function BuscarReferenciaProveedor(const Ref: String; ACliProvID: Integer): IBizArticulo; + ['{814B8A9D-E87F-4BDD-A96F-CEE04F2B348F}'] + function Buscar(const ID: Integer): IBizArticulo; + function BuscarTodos: IBizArticulo; + function BuscarReferencia(const Ref: String): IBizArticulo; + procedure Ver(AArticulo : IBizArticulo); procedure VerTodos; - function Nuevo : IBizArticulo; - procedure Anadir(AArticulo : IBizArticulo); - function Eliminar(const ID : Integer): Boolean; overload; - function Eliminar(AArticulo : IBizArticulo): Boolean; overload; - function Guardar(AArticulo : IBizArticulo): Boolean; - procedure DescartarCambios(AArticulo : IBizArticulo); function Existe(const ID: Integer) : Boolean; - function Duplicar(AArticulo: IBizArticulo): IBizArticulo; - procedure Preview(AArticulo : IBizArticulo); - procedure Print(AArticulo : IBizArticulo); - - procedure ElegirProveedor(AArticulo : IBizArticulo); - procedure AnadirProveedor(AArticulo : IBizArticulo); - procedure VerProveedor(AArticulo : IBizArticulo); - function DarListaProveedoresConArticulos: TStringList; + //procedure Preview(AArticulo : IBizArticulo); + //procedure Print(AArticulo : IBizArticulo); function ExtraerSeleccionados(AArticulos: IBizArticulo) : IBizArticulo; function ElegirArticulos(AArticulos : IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo; - procedure CalcularPrecioNeto(AArticulos: IBizArticulo); - - function GetProveedoresController: IProveedoresController; - property ProveedoresController: IProveedoresController read GetProveedoresController; - function DarPrecioPVPVenta(IdArticulo: Integer): TStringList; end; TArticulosController = class(TControllerBase, IArticulosController) + private protected FDataModule : IDataModuleArticulos; - FProveedoresController: IProveedoresController; - function GetProveedoresController: IProveedoresController; procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; function _Vacio : IBizArticulo; - procedure FiltrarEmpresa(AArticulo: IBizArticulo); - function ValidarArticulo(AArticulo: IBizArticulo): Boolean; virtual; - procedure RecuperarObjetos(AArticulo: IBizArticulo); virtual; procedure AsignarDataModule; virtual; public - property ProveedoresController: IProveedoresController read GetProveedoresController; - constructor Create; override; destructor Destroy; override; - function Eliminar(const ID : Integer): Boolean; overload; - function Eliminar(AArticulo : IBizArticulo): Boolean; overload; - function Guardar(AArticulo : IBizArticulo): Boolean; - procedure DescartarCambios(AArticulo : IBizArticulo); virtual; function Existe(const ID: Integer) : Boolean; virtual; - procedure Anadir(AArticulo : IBizArticulo); virtual; - function Buscar(const ID: Integer; AClienteID: Integer = -1): IBizArticulo; virtual; + function Buscar(const ID: Integer): IBizArticulo; function BuscarTodos: IBizArticulo; overload; - function BuscarTodosPorProveedor: IBizArticulo; overload; - function BuscarInventariables: IBizArticulo; - function BuscarTodos(ACliente: IBizCliente): IBizArticulo; overload; - function BuscarTodos(ACliente: Integer): IBizArticulo; overload; - function BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; overload; - function BuscarReferencia(const TipoReferencia: TEnumReferencia; const Ref: String; ACliProvID: Integer = -1): IBizArticulo; virtual; + function BuscarReferencia(const Ref: String): IBizArticulo; - function Nuevo : IBizArticulo; virtual; procedure Ver(AArticulo : IBizArticulo); virtual; procedure VerTodos; virtual; - function Duplicar(AArticulo: IBizArticulo): IBizArticulo; virtual; procedure Preview(AArticulo : IBizArticulo); virtual; procedure Print(AArticulo : IBizArticulo); virtual; function ExtraerSeleccionados(AArticulos: IBizArticulo) : IBizArticulo; virtual; function ElegirArticulos(AArticulos : IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo; virtual; - procedure CalcularPrecioNeto(AArticulos: IBizArticulo); - - procedure ElegirProveedor(AArticulo : IBizArticulo); - procedure AnadirProveedor(AArticulo : IBizArticulo); - procedure VerProveedor(AArticulo : IBizArticulo); - function DarListaProveedoresConArticulos: TStringList; - function DarPrecioPVPVenta(IdArticulo: Integer): TStringList; end; implementation @@ -112,267 +66,39 @@ uses { TArticulosController } -procedure TArticulosController.Anadir(AArticulo: IBizArticulo); -begin - AArticulo.Insert; -end; - -procedure TArticulosController.AnadirProveedor(AArticulo: IBizArticulo); -var - AProveedor : IBizContacto; -begin - inherited; -{ AProveedor := (FProveedoresController.Nuevo as IBizProveedor); - FProveedoresController.Ver(AProveedor); - if Assigned(AProveedor) then - begin - if not AArticulo.DataTable.Editing then - AArticulo.Edit; - AArticulo.ID_PROVEEDOR := AProveedor.ID; - AArticulo.NOMBRE_PROVEEDOR := AProveedor.NOMBRE; - end; - AProveedor := Nil; -} -end; - procedure TArticulosController.AsignarDataModule; begin FDataModule := TDataModuleArticulos.Create(Nil); - FProveedoresController := TProveedoresController.Create; end; -function TArticulosController.Buscar(const ID: Integer; AClienteID: Integer = -1): IBizArticulo; +function TArticulosController.Buscar(const ID: Integer): IBizArticulo; begin -//Quitamos la funcionalidad de poder dar una lista de articulos particular de los clientes -// if (AClienteID = -1) then Result := (FDataModule as IDataModuleArticulos).GetItem(ID); -// else -// Result := (FDataModule as IDataModuleArticulos).GetItem(ID, AClienteID); - -//Los articulos serán comunes para todas las empresas. -// FiltrarEmpresa(Result); end; -function TArticulosController.BuscarInventariables: IBizArticulo; +function TArticulosController.BuscarReferencia(const Ref: String): IBizArticulo; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try - Result := BuscarTodos; - - // Filtrar los articulos inventariables - with Result.DataTable.DynamicWhere do - begin - // (ID_EMPRESA >= ID) - Condicion := NewBinaryExpression(NewField('', fld_ArticulosINVENTARIABLE), NewConstant(1, datInteger), dboEqual); - - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - + with Result.DataTable.DynamicWhere do + begin + Condicion := NewBinaryExpression(NewMacro('UpperCase('+fld_ArticulosREFERENCIA+')'), + NewConstant(UpperCase(Ref), datString),dboEqual); + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; finally HideHourglassCursor; end; end; -function TArticulosController.BuscarReferencia(const TipoReferencia: TEnumReferencia; const Ref: String; ACliProvID: Integer = -1): IBizArticulo; -var - Condicion: TDAWhereExpression; -begin - ShowHourglassCursor; - try - - case TipoReferencia of - //Siempre que sea para ventas consultaremos la lista de articulos para ventas (BuscarTodos), en el caso hipotetico de que la lista de ventas - //sea propia para cada cliente se podria filtrar por cliente (ACliProvID) - tReferenciaParaVentas, tRefProveedorParaVentas: Result := BuscarTodos; - - //Siempre que sea para compras consultaremos la lista de articulos para compras (BuscarTodosPorProveedor), en el caso hipotetico de que la lista de compras - //sea propia para cada proveedor se podria filtrar por proveedor (ACliProvID) - tReferenciaParaCompras, tRefProveedorParaCompras: Result := BuscarTodosPorProveedor; - end; - - //FILTRO DE LOS CAMPOS REFERENCIA Y REFERENCIA_PROV - case TipoReferencia of - tReferenciaParaVentas, tReferenciaParaCompras: begin - // Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER - with Result.DataTable.DynamicWhere do - begin - if TipoReferencia = TipoReferencia then - - Condicion := NewBinaryExpression(NewMacro('UpperCase('+fld_ArticulosREFERENCIA+')'), - NewConstant(UpperCase(Ref), datString),dboEqual); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - - tRefProveedorParaVentas, tRefProveedorParaCompras: begin - // Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER - with Result.DataTable.DynamicWhere do - begin - Condicion := NewBinaryExpression(NewMacro('UpperCase('+fld_ArticulosREFERENCIA_PROV+')'), - NewConstant(UpperCase(Ref), datString),dboEqual); - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - end; - - //FILTRO DE LOS CAMPOS CLIENTE Y PROVEEDOR - case TipoReferencia of - tReferenciaParaVentas, tRefProveedorParaVentas: begin - //NO SE IMPLEMENTA EN TECSITEL - end; - - tReferenciaParaCompras, tRefProveedorParaCompras: begin - // Filtrar por proveedor - with Result.DataTable.DynamicWhere do - begin - Condicion := NewBinaryExpression(NewField('', fld_Articulos_ProveedoresID_PROVEEDOR), - NewConstant(ACliProvID, datInteger), dboEqual); - - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - end; - end; - - finally - HideHourglassCursor; - end; -end; - -{function TArticulosController.BuscarReferenciaProveedor(const Ref: String; ACliProvID: Integer): IBizArticulo; -{var - Condicion: TDAWhereExpression;} -{begin - ShowHourglassCursor; - try -//En tecsitel se desactiva el sacar una lista de articulos personalizada por cliente -// if (AClienteID = -1) then - Result := BuscarTodosPorProveedor; -// else -// Result := BuscarTodos(AClienteID); - - // Filtrar por referencia, se cambia por el where anterior porque luego no nos reconoce bien la cadena, al contener UPPER - with Result.DataTable.Where do - begin - AddText(Format('UPPER(%s) = ''%s''', [fld_ArticulosREFERENCIA_PROV, UpperCase(Ref)])); - end; - - {with Result.DataTable.DynamicWhere do - begin - // (REFERENCIA >= Ref) - Condicion := NewBinaryExpression(NewField('', fld_ArticulosREFERENCIA_PROV), NewConstant(UpperCase(Ref), datString), dboEqual); - - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end;} - -{ finally - HideHourglassCursor; - end; -end; -} - -function TArticulosController.BuscarTodos(ACliente: Integer): IBizArticulo; -begin - Result := FDataModule.GetItems(txArticulo); //ACliente); -//Los articulos serán comunes para todas las empresas. -// FiltrarEmpresa(Result); -end; - -function TArticulosController.BuscarTodos(ACliente: IBizCliente): IBizArticulo; -begin -//En tecsitel se desactiva el sacar una lista de articulos personalizada por cliente -// if not Assigned(ACliente) then -// raise Exception.Create('Falta ACliente: BuscarTodos'); - - Result := BuscarTodos; //(ACliente.ID); -end; - -function TArticulosController.BuscarTodos(AProveedor: IBizProveedor): IBizArticulo; -var - Condicion: TDAWhereExpression; -begin - if Assigned(AProveedor) then - begin - ShowHourglassCursor; - try - Result := BuscarTodosPorProveedor; - - // Filtrar los articulos del proveedor - with Result.DataTable.DynamicWhere do - begin - // (ID_PROVEEDOR = ID) - Condicion := NewBinaryExpression(NewField('', fld_ArticulosParaCompraID_PROVEEDOR), NewConstant(AProveedor.ID, datInteger), dboEqual); - - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; - finally - HideHourglassCursor; - end; - end; -end; - -function TArticulosController.BuscarTodosPorProveedor: IBizArticulo; -begin - Result := FDataModule.GetItems(txProveedor); -//Los articulos serán comunes para todas las empresas. -// FiltrarEmpresa(Result); -end; - function TArticulosController.BuscarTodos: IBizArticulo; begin - Result := FDataModule.GetItems(txArticulo); -//Los articulos serán comunes para todas las empresas. -// FiltrarEmpresa(Result); -end; - -procedure TArticulosController.CalcularPrecioNeto(AArticulos: IBizArticulo); -var - lPrecioNeto: Double; -begin -{ - if Assigned(AArticulos) then - begin - with AArticulos do - begin - try - ShowHourglassCursor; - DataTable.DisableControls; - if not DataTable.Active then - DataTable.Active := True; - //Calcular precio neto - lPrecioNeto := PRECIO_COSTE - ((PRECIO_COSTE * DESCUENTO)/100); - if (PRECIO_NETO <> lPrecioNeto) then - begin - if not DataTable.Editing then - DataTable.Edit; - PRECIO_NETO := lPrecioNeto; - end; - finally - DataTable.EnableControls; - HideHourglassCursor; - end; - end; - end; -} + Result := FDataModule.GetItems; end; constructor TArticulosController.Create; @@ -387,101 +113,12 @@ begin Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); end; -function TArticulosController.DarListaProveedoresConArticulos: TStringList; -begin - Result := (FDataModule as IDataModuleArticulos).DarListaProveedoresConArticulos(AppFactuGES.EmpresaActiva.ID); -end; - -function TArticulosController.DarPrecioPVPVenta(IdArticulo: Integer): TStringList; -var - AArticulo: IBizArticulo; -begin - AArticulo := Buscar(IdArticulo); - AArticulo.DataTable.Active := True; - Result := TStringList.Create; - try - with Result do - begin - Add(CurrToStr(AArticulo.PRECIO_PVP_TOTAL)); - Add(CurrToStr(AArticulo.PRECIO_PVP_VENTA)); - end; - finally - AArticulo := NIL; - end; -end; - -procedure TArticulosController.DescartarCambios(AArticulo: IBizArticulo); -begin - if not Assigned(AArticulo) then - raise Exception.Create ('Articulo no asignado'); - - ShowHourglassCursor; - try - if (AArticulo.State in dsEditModes) then - AArticulo.Cancel; - - AArticulo.DataTable.CancelUpdates; - finally - HideHourglassCursor; - end; -end; - destructor TArticulosController.Destroy; begin FDataModule := Nil; - FProveedoresController := Nil; inherited; end; -function TArticulosController.Duplicar(AArticulo: IBizArticulo): IBizArticulo; -begin - Result := Self._Vacio; - ShowHourglassCursor; - try - DuplicarRegistros(AArticulo.DataTable, Result.DataTable, mdrActual); - - // Hay que dejar algunos campos como si fuera un artículo nuevo - Result.Edit; - with Result do - begin - ID_EMPRESA := AppFactuGES.EmpresaActiva.ID; - USUARIO := AppFactuGES.UsuarioActivo.UserName; - REFERENCIA := ''; - end; - - Result.Post; - finally - HideHourglassCursor; - end; -end; - -function TArticulosController.ValidarArticulo(AArticulo: IBizArticulo): Boolean; -begin - Result := False; - - if not Assigned(AArticulo) then - raise Exception.Create ('Artículo no asignado'); - - if (AArticulo.DataTable.State in dsEditModes) then - AArticulo.DataTable.Post; - - //Tambien hacemos post de sus tablas hija - if (AArticulo.Proveedores.DataTable.State in dsEditModes) then - AArticulo.Proveedores.DataTable.Post; - - if Length(AArticulo.DESCRIPCION) = 0 then - raise Exception.Create('Debe indicar al menos la descripción de este artículo.'); - - // Asegurarse de valores en campos "automáticos" - AArticulo.Edit; - try - AArticulo.USUARIO := AppFactuGES.UsuarioActivo.UserName; - Result := True; - finally - AArticulo.Post; - end; -end; - procedure TArticulosController.Ver(AArticulo: IBizArticulo); var AEditor : IEditorArticulo; @@ -502,24 +139,6 @@ begin end; end; -procedure TArticulosController.VerProveedor(AArticulo: IBizArticulo); -var - AProveedor : IBizContacto; -begin -{ - AProveedor := FProveedoresController.Buscar(AArticulo.ID_PROVEEDOR); - FProveedoresController.Ver(AProveedor); - if Assigned(AProveedor) then - begin - if not AArticulo.DataTable.Editing then - AArticulo.Edit; - AArticulo.ID_PROVEEDOR := AProveedor.ID; - AArticulo.NOMBRE_PROVEEDOR := AProveedor.NOMBRE; - end; - AProveedor := Nil; -} -end; - procedure TArticulosController.VerTodos; var AEditor : IEditorArticulos; @@ -540,20 +159,6 @@ begin Result := Buscar(ID_NULO); end; -function TArticulosController.Eliminar(const ID: Integer): Boolean; -var - AArticulo : IBizArticulo; -begin - AArticulo := Buscar(ID); - - if not Assigned(AArticulo) then - raise Exception.Create(Format('No se ha encontrado el artículo con ID = %d', [ID])); - - AArticulo.DataTable.Active := True; - Result := Eliminar(AArticulo); - AArticulo := NIL; -end; - function TArticulosController.ElegirArticulos(AArticulos: IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo; var AEditor : IEditorElegirArticulos; @@ -575,51 +180,6 @@ begin end; end; -procedure TArticulosController.ElegirProveedor(AArticulo: IBizArticulo); -var - AProveedor : IBizContacto; -begin - inherited; -{ - AProveedor := (FProveedoresController.ElegirContacto(FProveedoresController.BuscarTodos, '', False) as IBizProveedor); - if Assigned(AProveedor) then - begin - if not AArticulo.DataTable.Editing then - AArticulo.Edit; - AArticulo.ID_PROVEEDOR := AProveedor.ID; - AArticulo.NOMBRE_PROVEEDOR := AProveedor.NOMBRE; - end; - AProveedor := Nil; -} -end; - -function TArticulosController.Eliminar(AArticulo: IBizArticulo): Boolean; -begin - Result := False; - - if not Assigned(AArticulo) then - raise Exception.Create ('Articulo no asignada'); - - ShowHourglassCursor; - try - if (AArticulo.State in dsEditModes) then - AArticulo.Cancel; - - AArticulo.Delete; - AArticulo.DataTable.ApplyUpdates; - HideHourglassCursor; - Result := True; - except - on E: Exception do - begin - AArticulo.DataTable.CancelUpdates; - HideHourglassCursor; - if (Pos('FOREIGN KEY', E.Message) > 0) then - MessageBox(0, 'No se puede borrar este artículo porque tiene artículos', 'Atención', MB_ICONWARNING or MB_OK); - end; - end; -end; - procedure TArticulosController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); begin inherited; @@ -652,72 +212,6 @@ begin Result := ASeleccionados; end; -procedure TArticulosController.FiltrarEmpresa(AArticulo: IBizArticulo); -var - Condicion: TDAWhereExpression; -begin - if AArticulo.DataTable.Active then - AArticulo.DataTable.Active := False; - - // Filtrar los Articulos actuales por empresa - with AArticulo.DataTable.DynamicWhere do - begin - // (ID_EMPRESA >= ID) - Condicion := NewBinaryExpression(NewField('', fld_ArticulosID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual); - - if IsEmpty then - Expression := Condicion - else - Expression := NewBinaryExpression(Expression, Condicion, dboAnd); - end; -end; - -function TArticulosController.GetProveedoresController: IProveedoresController; -begin - Result := FProveedoresController; -end; - -function TArticulosController.Guardar(AArticulo: IBizArticulo): Boolean; -begin - Result := False; - - if ValidarArticulo(AArticulo) then - begin - ShowHourglassCursor; - try - //Para que no salten los eventos de calculo de PVP que daría un pete importante - AArticulo.DataTable.DisableControls; - AArticulo.Proveedores.DataTable.DisableControls; - AArticulo.DataTable.DisableEventHandlers; - AArticulo.Proveedores.DataTable.DisableEventHandlers; - - AArticulo.DataTable.ApplyUpdates; - - Result := True; - finally - //Para que no salten los eventos de calculo de PVP que daría un pete importante - AArticulo.DataTable.EnableControls; - AArticulo.DataTable.EnableEventHandlers; - AArticulo.Proveedores.Datatable.EnableControls; - AArticulo.Proveedores.Datatable.EnableEventHandlers; - - HideHourglassCursor; - end; - end; -end; - -function TArticulosController.Nuevo: IBizArticulo; -var - AArticulo : IBizArticulo; -begin - AArticulo := FDataModule.NewItem; -//Los articulos serán comunes para todas las empresas. -// FiltrarEmpresa(AArticulo); - AArticulo.DataTable.Active := True; - AArticulo.Insert; - Result := AArticulo; -end; - procedure TArticulosController.Preview(AArticulo: IBizArticulo); //var // AReportController : IArticulosReportController; diff --git a/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas b/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas index d06f46e..0de005b 100644 --- a/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas +++ b/Source/Modulos/Articulos/Controller/uControllerDetallesArticulos.pas @@ -13,12 +13,11 @@ type IControllerDetallesArticulos = interface(IControllerDetallesBase) ['{6E156796-DB1F-4727-BBFB-FBAEF2E5C098}'] procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True); - function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; ACliProvID: Integer = -1; const ACantidad: Float = 1): Boolean; overload; - function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1; const ACantidad: Float = 1): Boolean; overload; + function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; const ACantidad: Float = 1): Boolean; overload; + function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; const ACantidad: Float = 1): Boolean; overload; procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean = True); procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String); - function DarPrecioPVPVenta(IdArticulo: Integer): TStringList; end; TControllerDetallesArticulos = class (TControllerDetallesBase, IControllerDetallesArticulos) @@ -32,18 +31,15 @@ type procedure RellenarGenerales(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); virtual; procedure RellenarCantidad(ADetalles: IDAStronglyTypedDataTable; const ACantidad: Float); virtual; procedure RellenarDetalle(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Float = 1); virtual; - procedure Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Float = 1); overload; - procedure AsignarController; virtual; - + procedure Add(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo; const ACantidad: Float = 1); overload; public - function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; ACliProvID: Integer = -1; const ACantidad: Float = 1): Boolean; overload; - function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; AClienteID: Integer = -1; const ACantidad: Float = 1): Boolean; overload; + function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; const ACantidad: Float = 1): Boolean; overload; + function AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; const ACantidad: Float = 1): Boolean; overload; procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True); virtual; procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable; AArticulos: IBizArticulo); procedure CambiarSignoDetalles(ADetalles: IDAStronglyTypedDataTable; const AAll: Boolean = True); procedure AnadirConceptoInicial(ADetalles: IDAStronglyTypedDataTable; AConcepto: String); - function DarPrecioPVPVenta(IdArticulo: Integer): TStringList; constructor Create; override; destructor Destroy; override; @@ -134,20 +130,19 @@ begin end; end; -function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo, AClienteID: Integer; +function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; IDArticulo: Integer; const ACantidad: Float): Boolean; var AArticulo: IBizArticulo; begin { Añade el artículo con la referencia pasada por parametro a los detalles pasados por parametro - En el caso de asignar un AClienteID el articulo debe contener el descuento para ese cliente } Result := False; BeginUpdate(ADetalles); ShowHourglassCursor; try - AArticulo := FArticulosController.Buscar(IDArticulo, AClienteID); + AArticulo := FArticulosController.Buscar(IDArticulo); if Assigned(AArticulo) then begin @@ -271,11 +266,6 @@ begin AsignarController; end; -function TControllerDetallesArticulos.DarPrecioPVPVenta(IdArticulo: Integer): TStringList; -begin - Result := FArticulosController.DarPrecioPVPVenta(IdArticulo); -end; - destructor TControllerDetallesArticulos.Destroy; begin FArticulosController := Nil; @@ -298,7 +288,7 @@ begin end; end; -function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; TipoReferencia: TEnumReferencia; ACliProvID: Integer = -1; const ACantidad: Float = 1): Boolean; +function TControllerDetallesArticulos.AnadirArticulo(ADetalles: IDAStronglyTypedDataTable; Referencia: String; const ACantidad: Float = 1): Boolean; var AArticulo: IBizArticulo; begin @@ -310,7 +300,7 @@ begin BeginUpdate(ADetalles); ShowHourglassCursor; try - AArticulo := FArticulosController.BuscarReferencia(TipoReferencia, Referencia, ACliProvID); + AArticulo := FArticulosController.BuscarReferencia(Referencia); if Assigned(AArticulo) then begin AArticulo.DataTable.Active := True; @@ -367,9 +357,7 @@ begin begin ADetalles.DataTable.FieldByName(CAMPO_ID_ARTICULOS).AsVariant := AArticulos.ID; ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA).AsVariant := AArticulos.REFERENCIA; - ADetalles.DataTable.FieldByName(CAMPO_REFERENCIA_PROVEEDOR).AsVariant := AArticulos.REFERENCIA_PROV; ADetalles.DataTable.FieldByName(CAMPO_CONCEPTO).AsVariant := AArticulos.DESCRIPCION; - ADetalles.DataTable.FieldByName(CAMPO_UNIDADMEDIDA).AsVariant := AArticulos.UNIDAD_MEDIDA; end; end; diff --git a/Source/Modulos/Articulos/Data/Articulos_data.identcache b/Source/Modulos/Articulos/Data/Articulos_data.identcache deleted file mode 100644 index cf1fafe..0000000 Binary files a/Source/Modulos/Articulos/Data/Articulos_data.identcache and /dev/null differ diff --git a/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm b/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm index c6bb52f..8024383 100644 --- a/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm +++ b/Source/Modulos/Articulos/Data/uDataModuleArticulos.dfm @@ -26,172 +26,23 @@ inherited DataModuleArticulos: TDataModuleArticulos object tbl_Articulos: TDAMemDataTable RemoteUpdatesOptions = [] Fields = < - item - Name = 'ID' - DataType = datAutoInc - GeneratorName = 'GEN_ARTICULOS_ID' - Required = True - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_ID' - InPrimaryKey = True - end - item - Name = 'ID_EMPRESA' - DataType = datInteger - DictionaryEntry = 'Articulos_ID_EMPRESA' - end item Name = 'REFERENCIA' DataType = datString Size = 255 + LogChanges = False DisplayLabel = 'Referencia' + ReadOnly = True DictionaryEntry = 'Articulos_REFERENCIA' end item Name = 'DESCRIPCION' DataType = datString Size = 255 + LogChanges = False DisplayLabel = 'Descripci'#243'n' + ReadOnly = True DictionaryEntry = 'Articulos_DESCRIPCION' - end - item - Name = 'UNIDAD_MEDIDA' - DataType = datString - Size = 255 - DisplayLabel = 'Unidad de medida' - DictionaryEntry = 'Articulos_UNIDAD_MEDIDA' - end - item - Name = 'FAMILIA' - DataType = datString - Size = 255 - DisplayLabel = 'Familia' - DictionaryEntry = 'Articulos_FAMILIA' - end - item - Name = 'IMAGEN' - DataType = datBlob - DisplayLabel = 'Foto' - DictionaryEntry = 'Articulos_IMAGEN' - end - item - Name = 'COMISIONABLE' - DataType = datInteger - DisplayLabel = 'Comisionable' - DictionaryEntry = 'Articulos_COMISIONABLE' - end - item - Name = 'FECHA_ALTA' - DataType = datDateTime - DictionaryEntry = 'Articulos_FECHA_ALTA' - end - item - Name = 'FECHA_MODIFICACION' - DataType = datDateTime - DictionaryEntry = 'Articulos_FECHA_MODIFICACION' - end - item - Name = 'USUARIO' - DataType = datString - Size = 20 - DictionaryEntry = 'Articulos_USUARIO' - end - item - Name = 'REFERENCIA_PROV' - DataType = datString - Size = 255 - DisplayLabel = 'Ref. proveedor' - DictionaryEntry = 'Articulos_REFERENCIA_PROVEEDOR' - end - item - Name = 'PRECIO_COSTE' - DataType = datCurrency - DisplayLabel = 'Importe' - DictionaryEntry = 'Articulos_PRECIO_COSTE' - end - item - Name = 'PRECIO_PORTE' - DataType = datCurrency - DisplayLabel = 'Precio porte' - DictionaryEntry = 'Articulos_PRECIO_PORTE' - end - item - Name = 'DESCUENTO' - DataType = datFloat - DisplayLabel = 'Descuento' - DictionaryEntry = 'Articulos_DESCUENTO' - end - item - Name = 'PRECIO_NETO' - DataType = datCurrency - DecimalPrecision = 2 - DecimalScale = 2 - DisplayLabel = 'Precio neto' - DictionaryEntry = 'Articulos_PRECIO_NETO' - end - item - Name = 'INVENTARIABLE' - DataType = datSmallInt - DisplayLabel = 'Inventariable' - DictionaryEntry = 'Articulos_INVENTARIABLE' - end - item - Name = 'ELIMINADO' - DataType = datSmallInt - DisplayLabel = 'Eliminado' - DictionaryEntry = 'Articulos_ELIMINADO' - end - item - Name = 'FABRICANTE' - DataType = datString - Size = 255 - DisplayLabel = 'Fabricante' - DictionaryEntry = 'Articulos_FABRICANTE' - end - item - Name = 'REFERENCIA_FABR' - DataType = datString - Size = 255 - DisplayLabel = 'Ref. fabricante' - DictionaryEntry = 'Articulos_REFERENCIA_FABR' - end - item - Name = 'PARAM_MARGEN' - DataType = datFloat - end - item - Name = 'PRECIO_PVP_VENTA' - DataType = datCurrency - DisplayLabel = 'Precio PVP (Solo suministro)' - Alignment = taRightJustify - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_PRECIO_PVP_VENTA' - end - item - Name = 'TIEMPO' - DataType = datInteger - end - item - Name = 'PARAM_TIEMPO' - DataType = datFloat - DisplayLabel = 'Precio min' - Alignment = taRightJustify - DictionaryEntry = 'Articulos_PARAM_TIEMPO' - end - item - Name = 'MANO_OBRA' - DataType = datCurrency - DisplayLabel = 'Mano de obra' - Alignment = taRightJustify - DictionaryEntry = 'Articulos_MANO_OBRA' - end - item - Name = 'PRECIO_PVP_TOTAL' - DataType = datCurrency - DisplayLabel = 'Precio P.V.P (Total)' - Alignment = taRightJustify - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_PRECIO_PVP_TOTAL' end> Params = <> StreamingOptions = [soDisableEventsWhileStreaming] @@ -207,318 +58,4 @@ inherited DataModuleArticulos: TDataModuleArticulos Left = 232 Top = 32 end - object tbl_ProveedoresConArticulos: TDAMemDataTable - RemoteUpdatesOptions = [] - Fields = < - item - Name = 'ID_PROVEEDOR' - DataType = datInteger - end - item - Name = 'NOMBRE' - DataType = datString - Size = 255 - end> - Params = < - item - Name = 'ID_EMPRESA' - Value = '' - ParamType = daptInput - end> - StreamingOptions = [soDisableEventsWhileStreaming] - RemoteDataAdapter = rda_Articulos - LogicalName = 'ProveedoresConArticulos' - IndexDefs = <> - Left = 232 - Top = 248 - end - object ds_ProveedoresConArticulos: TDADataSource - DataSet = tbl_ProveedoresConArticulos.Dataset - DataTable = tbl_ProveedoresConArticulos - Left = 232 - Top = 192 - end - object tbl_Articulos_Proveedores: TDAMemDataTable - RemoteUpdatesOptions = [] - Fields = < - item - Name = 'ID' - DataType = datAutoInc - GeneratorName = 'GEN_ARTICULOS_PROVEEDORES_ID' - Required = True - InPrimaryKey = True - end - item - Name = 'ID_ARTICULO' - DataType = datInteger - end - item - Name = 'ID_PROVEEDOR' - DataType = datInteger - end - item - Name = 'REFERENCIA_PROV' - DataType = datString - Size = 255 - DisplayLabel = 'Ref. proveedor' - DictionaryEntry = 'Articulos_REFERENCIA_PROVEEDOR' - end - item - Name = 'PRECIO_COSTE' - DataType = datCurrency - DisplayLabel = 'Importe' - DictionaryEntry = 'Articulos_PRECIO_COSTE' - end - item - Name = 'DESCUENTO' - DataType = datFloat - DisplayLabel = 'Descuento' - DictionaryEntry = 'Articulos_DESCUENTO' - end - item - Name = 'PRECIO_NETO' - DataType = datCurrency - DecimalPrecision = 2 - DecimalScale = 2 - DisplayLabel = 'Precio neto' - DictionaryEntry = 'Articulos_PRECIO_NETO' - end - item - Name = 'PRECIO_PORTE' - DataType = datCurrency - DisplayLabel = 'Precio porte' - DictionaryEntry = 'Articulos_PRECIO_PORTE' - end - item - Name = 'PRECIO_PVP_VENTA' - DataType = datCurrency - DisplayLabel = 'Precio PVP (Solo suministro)' - Alignment = taRightJustify - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_PRECIO_PVP_VENTA' - end - item - Name = 'PRECIO_PVP_TOTAL' - DataType = datCurrency - ServerAutoRefresh = True - end - item - Name = 'FECHA_ACTUALIZACION' - DataType = datDateTime - end> - Params = <> - MasterMappingMode = mmWhere - StreamingOptions = [soDisableEventsWhileStreaming] - RemoteDataAdapter = rda_Articulos - MasterSource = ds_Articulos - MasterFields = 'ID' - DetailFields = 'ID_ARTICULO' - LogicalName = 'Articulos_Proveedores' - IndexDefs = <> - Left = 368 - Top = 88 - end - object ds_Articulos_Proveedores: TDADataSource - DataSet = tbl_Articulos_Proveedores.Dataset - DataTable = tbl_Articulos_Proveedores - Left = 368 - Top = 32 - end - object tbl_ArticulosParaCompra: TDAMemDataTable - RemoteUpdatesOptions = [] - Fields = < - item - Name = 'ID' - DataType = datAutoInc - GeneratorName = 'GEN_ARTICULOS_ID' - Required = True - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_ID' - InPrimaryKey = True - end - item - Name = 'ID_EMPRESA' - DataType = datInteger - DictionaryEntry = 'Articulos_ID_EMPRESA' - end - item - Name = 'REFERENCIA' - DataType = datString - Size = 255 - DisplayLabel = 'Referencia' - DictionaryEntry = 'Articulos_REFERENCIA' - end - item - Name = 'DESCRIPCION' - DataType = datString - Size = 255 - DisplayLabel = 'Descripci'#243'n' - DictionaryEntry = 'Articulos_DESCRIPCION' - end - item - Name = 'UNIDAD_MEDIDA' - DataType = datString - Size = 255 - DisplayLabel = 'Unidad de medida' - DictionaryEntry = 'Articulos_UNIDAD_MEDIDA' - end - item - Name = 'FAMILIA' - DataType = datString - Size = 255 - DisplayLabel = 'Familia' - DictionaryEntry = 'Articulos_FAMILIA' - end - item - Name = 'IMAGEN' - DataType = datBlob - DisplayLabel = 'Foto' - DictionaryEntry = 'Articulos_IMAGEN' - end - item - Name = 'COMISIONABLE' - DataType = datInteger - DisplayLabel = 'Comisionable' - DictionaryEntry = 'Articulos_COMISIONABLE' - end - item - Name = 'FECHA_ALTA' - DataType = datDateTime - DictionaryEntry = 'Articulos_FECHA_ALTA' - end - item - Name = 'FECHA_MODIFICACION' - DataType = datDateTime - DictionaryEntry = 'Articulos_FECHA_MODIFICACION' - end - item - Name = 'USUARIO' - DataType = datString - Size = 20 - DictionaryEntry = 'Articulos_USUARIO' - end - item - Name = 'REFERENCIA_PROV' - DataType = datString - Size = 255 - DisplayLabel = 'Ref. proveedor' - DictionaryEntry = 'Articulos_REFERENCIA_PROVEEDOR' - end - item - Name = 'PRECIO_COSTE' - DataType = datCurrency - DisplayLabel = 'Importe' - DictionaryEntry = 'Articulos_PRECIO_COSTE' - end - item - Name = 'PRECIO_PORTE' - DataType = datCurrency - DisplayLabel = 'Precio porte' - DictionaryEntry = 'Articulos_PRECIO_PORTE' - end - item - Name = 'DESCUENTO' - DataType = datFloat - DisplayLabel = 'Descuento' - DictionaryEntry = 'Articulos_DESCUENTO' - end - item - Name = 'PRECIO_NETO' - DataType = datCurrency - DecimalPrecision = 2 - DecimalScale = 2 - DisplayLabel = 'Precio neto' - DictionaryEntry = 'Articulos_PRECIO_NETO' - end - item - Name = 'INVENTARIABLE' - DataType = datSmallInt - DisplayLabel = 'Inventariable' - DictionaryEntry = 'Articulos_INVENTARIABLE' - end - item - Name = 'ID_PROVEEDOR' - DataType = datInteger - end - item - Name = 'NOMBRE_PROVEEDOR' - DataType = datString - Size = 255 - end - item - Name = 'ELIMINADO' - DataType = datSmallInt - DisplayLabel = 'Eliminado' - DictionaryEntry = 'Articulos_ELIMINADO' - end - item - Name = 'FABRICANTE' - DataType = datString - Size = 255 - DisplayLabel = 'Fabricante' - DictionaryEntry = 'Articulos_FABRICANTE' - end - item - Name = 'REFERENCIA_FABR' - DataType = datString - Size = 255 - DisplayLabel = 'Ref. fabricante' - DictionaryEntry = 'Articulos_REFERENCIA_FABR' - end - item - Name = 'PARAM_MARGEN' - DataType = datFloat - end - item - Name = 'PRECIO_PVP_VENTA' - DataType = datCurrency - DisplayLabel = 'Precio PVP (Solo suministro)' - Alignment = taRightJustify - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_PRECIO_PVP_VENTA' - end - item - Name = 'TIEMPO' - DataType = datInteger - end - item - Name = 'PARAM_TIEMPO' - DataType = datFloat - DisplayLabel = 'Precio min' - Alignment = taRightJustify - DictionaryEntry = 'Articulos_PARAM_TIEMPO' - end - item - Name = 'MANO_OBRA' - DataType = datCurrency - DisplayLabel = 'Mano de obra' - Alignment = taRightJustify - DictionaryEntry = 'Articulos_MANO_OBRA' - end - item - Name = 'PRECIO_PVP_TOTAL' - DataType = datCurrency - DisplayLabel = 'Precio P.V.P (Total)' - Alignment = taRightJustify - ServerAutoRefresh = True - DictionaryEntry = 'Articulos_PRECIO_PVP_TOTAL' - end - item - Name = 'ID_ARTICULO' - DataType = datInteger - end> - Params = <> - StreamingOptions = [soDisableEventsWhileStreaming] - RemoteDataAdapter = rda_Articulos - LogicalName = 'ArticulosParaCompra' - IndexDefs = <> - Left = 416 - Top = 240 - end - object ds_ArticulosParaCompra: TDADataSource - DataSet = tbl_ArticulosParaCompra.Dataset - DataTable = tbl_ArticulosParaCompra - Left = 416 - Top = 192 - end end diff --git a/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas b/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas index b5eb28d..fcf3959 100644 --- a/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas +++ b/Source/Modulos/Articulos/Data/uDataModuleArticulos.pas @@ -8,8 +8,7 @@ uses uRORemoteService, uROClient, uROBinMessage, uDADesigntimeCall, uIDataModuleArticulos, uBizArticulos, uDataModuleBase, uDARemoteDataAdapter, - uDADataStreamer, uDABin2DataStreamer, uDAInterfaces, uDAMemDataTable, - uBizArticulosProveedores; + uDADataStreamer, uDABin2DataStreamer, uDAInterfaces, uDAMemDataTable; type TDataModuleArticulos = class(TDataModuleBase, IDataModuleArticulos) @@ -18,24 +17,15 @@ type rda_Articulos: TDARemoteDataAdapter; tbl_Articulos: TDAMemDataTable; ds_Articulos: TDADataSource; - tbl_ProveedoresConArticulos: TDAMemDataTable; - ds_ProveedoresConArticulos: TDADataSource; - tbl_Articulos_Proveedores: TDAMemDataTable; - ds_Articulos_Proveedores: TDADataSource; - tbl_ArticulosParaCompra: TDAMemDataTable; - ds_ArticulosParaCompra: TDADataSource; procedure DAClientDataModuleCreate(Sender: TObject); - private - function _GetProveedores : IBizArticulosProveedores; protected procedure AsignarClaseNegocio(AArticulo: TDADataTable); virtual; public - function GetItems (const Tipo: TEnumArticulos) : IBizArticulo; + function GetItems : IBizArticulo; function GetItem(const ID : Integer) : IBizArticulo; function NewItem : IBizArticulo; - function DarListaProveedoresConArticulos(const IDEmpresa: Integer) : TStringList; end; implementation @@ -59,43 +49,18 @@ begin RORemoteService.Message := dmConexion.Message; end; -function TDataModuleArticulos.DarListaProveedoresConArticulos(const IDEmpresa: Integer): TStringList; -begin - Result := TStringList.Create; - Result.LoadFromStream((RORemoteService as IsrvArticulos).DarListaProveedoresConArticulos(IDEmpresa)); -end; - function TDataModuleArticulos.NewItem: IBizArticulo; begin Result := GetItem(ID_NULO) end; -function TDataModuleArticulos._GetProveedores: IBizArticulosProveedores; -var - AProveedores : TDAMemDataTable; -begin - ShowHourglassCursor; - try - AProveedores := CloneDataTable(tbl_Articulos_Proveedores); - with AProveedores do - begin - BusinessRulesID := BIZ_CLIENT_ARTICULOS_PROVEEDORES; - DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; - end; - Result := (AProveedores as IBizArticulosProveedores); - finally - HideHourglassCursor; - end; - -end; - function TDataModuleArticulos.GetItem(const ID: Integer): IBizArticulo; var Condicion: TDAWhereExpression; begin ShowHourglassCursor; try - Result := Self.GetItems(txArticulo); + Result := Self.GetItems; with Result.DataTable.DynamicWhere do begin @@ -113,25 +78,15 @@ begin end; end; -function TDataModuleArticulos.GetItems(const Tipo: TEnumArticulos): IBizArticulo; +function TDataModuleArticulos.GetItems: IBizArticulo; var AArticulo : TDAMemDataTable; begin ShowHourglassCursor; try - case Tipo of - txArticulo: AArticulo := CloneDataTable(tbl_Articulos); - txProveedor: AArticulo := CloneDataTable(tbl_ArticulosParaCompra); - end; - + AArticulo := CloneDataTable(tbl_Articulos); AsignarClaseNegocio(AArticulo); - - case Tipo of - txArticulo: TBizArticulo(AArticulo.BusinessEventsObj).Proveedores := _GetProveedores; - end; - Result := (AArticulo as IBizArticulo); - finally HideHourglassCursor; end; diff --git a/Source/Modulos/Articulos/Model/Articulos_model.dpk b/Source/Modulos/Articulos/Model/Articulos_model.dpk index 0041dd5..647f2d9 100644 Binary files a/Source/Modulos/Articulos/Model/Articulos_model.dpk and b/Source/Modulos/Articulos/Model/Articulos_model.dpk differ diff --git a/Source/Modulos/Articulos/Model/Articulos_model.dproj b/Source/Modulos/Articulos/Model/Articulos_model.dproj index c517ac1..2db0f3f 100644 --- a/Source/Modulos/Articulos/Model/Articulos_model.dproj +++ b/Source/Modulos/Articulos/Model/Articulos_model.dproj @@ -55,21 +55,20 @@ MainSource - - - - + + + + + + + + + + - - - - - - - diff --git a/Source/Modulos/Medicaciones/Controller/Medicaciones_controller.rc b/Source/Modulos/Medicaciones/Controller/Medicaciones_controller.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/Medicaciones_controller.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/Source/Modulos/Medicaciones/Controller/Medicaciones_controller.res b/Source/Modulos/Medicaciones/Controller/Medicaciones_controller.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/Source/Modulos/Medicaciones/Controller/Medicaciones_controller.res differ diff --git a/Source/Modulos/Medicaciones/Controller/View/uIEditorElegirArticulosMedicaciones.pas b/Source/Modulos/Medicaciones/Controller/View/uIEditorElegirArticulosMedicaciones.pas new file mode 100644 index 0000000..b1db743 --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/View/uIEditorElegirArticulosMedicaciones.pas @@ -0,0 +1,16 @@ +unit uIEditorElegirArticulosMedicaciones; + +interface + +uses + uIEditorElegirArticulos; + +type + IEditorElegirArticulosMedicaciones = interface(IEditorElegirArticulos) + ['{87C1F6FB-B7A7-4ABC-83CE-E0722CC4B5F5}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Controller/View/uIEditorElegirMedicacion.pas b/Source/Modulos/Medicaciones/Controller/View/uIEditorElegirMedicacion.pas new file mode 100644 index 0000000..c9b1fae --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/View/uIEditorElegirMedicacion.pas @@ -0,0 +1,22 @@ +unit uIEditorElegirMedicacion; + +interface + +uses + uIEditorMedicaciones, uBizMedicaciones, uGUIBase; + +type + IEditorElegirMedicacion = interface(IEditorMedicaciones) + ['{CC89BE98-7ACB-47C5-9E18-8A882160D59C}'] + function GetMedicacionesSeleccionadas: IBizMedicacion; + property MedicacionesSeleccionadas: IBizMedicacion read GetMedicacionesSeleccionadas; + + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + property Mensaje : String read GetMensaje write SetMensaje; + end; + + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicacion.pas b/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicacion.pas new file mode 100644 index 0000000..77f6746 --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicacion.pas @@ -0,0 +1,23 @@ +unit uIEditorMedicacion; + +interface + +uses + uEditorDBItem, uBizMedicaciones, uMedicacionesController; + +type + IEditorMedicacion = interface(IEditorDBItem) + ['{C93FCE02-23B3-4EAA-8579-681992208020}'] + function GetController : IMedicacionesController; + procedure SetController (const Value : IMedicacionesController); + property Controller : IMedicacionesController read GetController + write SetController; + + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + end; + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicaciones.pas b/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicaciones.pas new file mode 100644 index 0000000..3002b1d --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicaciones.pas @@ -0,0 +1,23 @@ +unit uIEditorMedicaciones; + +interface + +uses + uEditorGridBase, uBizMedicaciones, uMedicacionesController; + +type + IEditorMedicaciones = interface(IEditorGridBase) + ['{83A76815-FBD8-4E27-BF87-3E83C55F697B}'] + function GetMedicaciones: IBizMedicacion; + procedure SetMedicaciones(const Value: IBizMedicacion); + property Medicaciones: IBizMedicacion read GetMedicaciones write SetMedicaciones; + + function GetController : IMedicacionesController; + procedure SetController (const Value : IMedicacionesController); + property Controller : IMedicacionesController read GetController write SetController; + end; + + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicacionesPreview.pas b/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicacionesPreview.pas new file mode 100644 index 0000000..349a6ec --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/View/uIEditorMedicacionesPreview.pas @@ -0,0 +1,16 @@ +unit uIEditorMedicacionesPreview; + +interface + +uses + uEditorPreview; + +type + IEditorMedicacionesPreview = interface(IEditorPreview) + ['{0F6DB309-50CC-4715-B6E8-2E35FEA96B67}'] + end; + + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Controller/uArticulosMedicacionController.pas b/Source/Modulos/Medicaciones/Controller/uArticulosMedicacionController.pas new file mode 100644 index 0000000..b16a1d9 --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/uArticulosMedicacionController.pas @@ -0,0 +1,46 @@ +unit uArticulosMedicacionController; + +interface + +uses + uDADataTable, cxControls, uArticulosController, uBizArticulos; + +type + IArticulosMedicacionController = interface(IArticulosController) + ['{364399D6-0D30-4FBD-BD69-864DF882AC07}'] + end; + + TArticulosMedicacionController = class(TArticulosController, IArticulosMedicacionController) + public + function ElegirArticulos(AArticulos : IBizArticulo; AMensaje: String; AMultiSelect: Boolean): IBizArticulo; override; + end; + +implementation + +{ TArticulosMedicacionController } + +uses + Controls, uIEditorElegirArticulosMedicaciones, uIEditorElegirArticulos; + +function TArticulosMedicacionController.ElegirArticulos(AArticulos: IBizArticulo; AMensaje: String; + AMultiSelect: Boolean): IBizArticulo; +var + AEditor : IEditorElegirArticulosMedicaciones; +begin + Result := NIL; + CreateEditor('EditorElegirArticulosMedicaciones', IEditorElegirArticulosMedicaciones, AEditor); + if Assigned(AEditor) then + try + AEditor.Controller := Self; + AEditor.Articulos := AArticulos; + AEditor.MultiSelect := AMultiSelect; + AEditor.Mensaje := AMensaje; + if IsPositiveResult(AEditor.ShowModal) then + Result := AEditor.ArticulosSeleccionados; + finally + AEditor.Release; + AEditor := NIL; + end; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Controller/uDetallesMedicacionController.pas b/Source/Modulos/Medicaciones/Controller/uDetallesMedicacionController.pas new file mode 100644 index 0000000..e7837a8 --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/uDetallesMedicacionController.pas @@ -0,0 +1,124 @@ +unit uDetallesMedicacionController; + +interface + +uses + uDADataTable, uBizDetallesMedicacion, uIDataModuleMedicacion, uControllerDetallesArticulos, + uBizArticulos, uBizContactos; + +type + IDetallesMedicacionController = interface(IControllerDetallesArticulos) + ['{38B4EE57-A247-4A41-A62C-CC18B8793FB3}'] + procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload; + procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable); overload; + end; + + TDetallesMedicacionController = class(TControllerDetallesArticulos, IDetallesMedicacionController) + private + FDataModule : IDataModuleMedicacion; + protected + procedure AsignarController; override; + //Si sobreescribimos este método podremos tener en cuenta otras columnas para el calculo del importe total de un concepto + function CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; override; + procedure ValidarCampos(DataTable: TDADataTable); override; + public + procedure AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean = True; const ACantidad: Integer = 1); overload; + procedure ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable); overload; + constructor Create; override; + destructor Destroy; override; + end; + +implementation + +uses + Dialogs, uDialogUtils, Variants, uControllerDetallesBase, + uCalculosUtils, uDataModuleMedicaciones, uArticulosMedicacionController; + +{ TDetallesMedicacionController } + +procedure TDetallesMedicacionController.ActualizarDetalles(ADetalles: IDAStronglyTypedDataTable); +var + AArticulos : IBizArticulo; +begin + if Assigned(ADetalles) then + begin + try + AArticulos := (FArticulosController.BuscarTodos as IBizArticulo); + ActualizarDetalles(ADetalles, AArticulos); +// ShowInfoMessage('Se ha actualizado el descuento para el cliente seleccionado'); Esta desactivado el descuento general para los albaranes de cliente + finally + AArticulos := Nil; + end; + end; +end; + +procedure TDetallesMedicacionController.AnadirArticulos(ADetalles: IDAStronglyTypedDataTable; const ANuevaFila :Boolean; const ACantidad: Integer); +var + AArticulos: IBizArticulo; +begin + if Assigned(ADetalles) then + begin + try + AArticulos := (FArticulosController.BuscarTodos as IBizArticulo); + + //Si nueva fila es false, quiere decir que se sustituye un determinado artículo, por ello la lista a seleccionar no debe ser multiselect + if ANuevaFila then + begin + AArticulos := (FArticulosController as IArticulosMedicacionController).ElegirArticulos(AArticulos, 'Elija los artículos que desea añadir a este albarán de cliente', True); + Add(ADetalles, AArticulos, ACantidad) + end + else + begin + AArticulos := (FArticulosController as IArticulosMedicacionController).ElegirArticulos(AArticulos, 'Elija el artículo que desea añadir a este albarán de cliente', False); + RellenarDetalle(ADetalles, AArticulos, ACantidad); + end; + + finally + AArticulos := Nil; + end; + end; +end; + +procedure TDetallesMedicacionController.AsignarController; +begin + FArticulosController := TArticulosMedicacionController.Create; +end; + +{procedure TDetallesMedicacionController.AsignarDatos(ADetalles: IDAStronglyTypedDataTable; IDCabecera: Integer); +begin + inherited; + + with (ADetalles as IBizDetallesMedicacion) do + begin + Edit; +// ID := FDataModule.GetNextID(DataTable.LogicalName); + ID_ALBARAN := IDCabecera; + Post + end; +end;} + +function TDetallesMedicacionController.CalcularImporteTotalConcepto(DataTable: TDADataTable): Double; +begin + Result := CalcularLineaConcepto(DataTable); +end; + +constructor TDetallesMedicacionController.Create; +begin + inherited; + FDataModule := TDataModuleMedicacion.Create(Nil); +end; + +destructor TDetallesMedicacionController.Destroy; +begin + FDataModule := Nil; + inherited; +end; + + +procedure TDetallesMedicacionController.ValidarCampos(DataTable: TDADataTable); +begin + inherited; + ValidarCamposLineaConcepto(DataTable); +end; + +end. diff --git a/Source/Modulos/Medicaciones/Controller/uMedicacionReportController.pas b/Source/Modulos/Medicaciones/Controller/uMedicacionReportController.pas new file mode 100644 index 0000000..a886760 --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/uMedicacionReportController.pas @@ -0,0 +1,185 @@ +unit uMedicacionReportController; + +interface + +uses + Classes, SysUtils, uDADataTable, uControllerBase, uIDataModuleMedicacionReport, + uPacientesController, uMedicacionesController, uDetallesMedicacionController, + uBizMedicaciones, uIntegerListUtils; + +type + IMedicacionReportController = interface(IControllerBase) + ['{9DD34D7A-C396-4DBF-9A16-C060DE111AA8}'] + procedure Preview(const AListaID : TIntegerList); + procedure Print(const AListaID : TIntegerList); + procedure EtiquetasPreview(const AID : integer; Const withRefCliente: Boolean); + procedure EtiquetasPrint(const AID : integer; Const withRefCliente: Boolean); + end; + + TMedicacionReportController = class(TControllerBase, IMedicacionReportController) + private + FDataModule : IDataModuleMedicacionReport; + function CreateEditor(const AName: String; const IID: TGUID; out Intf): Boolean; + + public + constructor Create; override; + destructor Destroy; override; + + procedure Preview(const AListaID : TIntegerList); + procedure Print(const AListaID : TIntegerList); + procedure EtiquetasPreview(const AID : integer; const withRefCliente: Boolean); + procedure EtiquetasPrint(const AID : integer; const withRefCliente: Boolean); + end; + + +implementation + +uses + uROTypes, uEditorRegistryUtils, uIEditorMedicacionesPreview, + uEditorPreview, uDataModuleMedicaciones, uEditorBase, cxControls, + uStringsUtils, uSistemaFunc, uFactuGES_App; + +{ TMedicacionReportController } + +constructor TMedicacionReportController.Create; +begin + inherited; + FDataModule := TDataModuleMedicacion.Create(Nil); +end; + +function TMedicacionReportController.CreateEditor(const AName: String; + const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + + +destructor TMedicacionReportController.Destroy; +begin + FDataModule := NIL; + inherited; +end; + +procedure TMedicacionReportController.EtiquetasPreview(const AID: integer; const withRefCliente: Boolean); +var + AStream: Binary; + AEditor : IEditorMedicacionesPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetEtiquetas(AID, withRefCliente); + try + CreateEditor('EditorMedicacionesPreview', IEditorMedicacionesPreview, AEditor); + if Assigned(AEditor) then + try + AEditor.LoadFromStream(AStream); + AEditor.Preview; + finally + AEditor.Release; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; + finally + HideHourglassCursor; + end; +end; + +procedure TMedicacionReportController.EtiquetasPrint(const AID: integer; const withRefCliente: Boolean); +var + AStream: Binary; + AEditor : IEditorMedicacionesPreview; +begin + AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetEtiquetas(AID, withRefCliente); + try + CreateEditor('EditorMedicacionesPreview', IEditorMedicacionesPreview, AEditor); + if Assigned(AEditor) then + try + AEditor.LoadFromStream(AStream); + AEditor.Print; + finally + AEditor.Release; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; + finally + HideHourglassCursor; + end; +end; + +procedure TMedicacionReportController.Preview(const AListaID : TIntegerList); +var + AStream: Binary; + AEditor : IEditorMedicacionesPreview; +begin +{ AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetEtiquetas(AListaID); + try + CreateEditor('EditorMedicacionPreview', IEditorMedicacionPreview, AEditor); + if Assigned(AEditor) then + begin + try + AEditor.Controller := Self; + AEditor.ListaID := AListaID; + AEditor.Title := 'Albarán - ' + AppFactuGES.EmpresaActiva.NOMBRE; + AEditor.LoadFromStream(AStream); + AEditor.Preview; + finally + AEditor.Release; + end; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; + finally + HideHourglassCursor; + end; } +end; + +procedure TMedicacionReportController.Print(const AListaID : TIntegerList); +var + AStream: Binary; + AEditor : IEditorMedicacionesPreview; +begin +{ AEditor := NIL; + + ShowHourglassCursor; + try + AStream := FDataModule.GetRptAlbaranes(AListaID); + try + CreateEditor('EditorMedicacionPreview', IEditorMedicacionPreview, AEditor); + if Assigned(AEditor) then + begin + try + AEditor.Controller := Self; + AEditor.ListaID := AListaID; + AEditor.Title := 'Albarán - ' + AppFactuGES.EmpresaActiva.NOMBRE; + AEditor.LoadFromStream(AStream); + AEditor.Print; + finally + AEditor.Release; + end; + end; + finally + FreeAndNil(AStream); + AEditor := Nil; + end; + finally + HideHourglassCursor; + end; } +end; + +end. diff --git a/Source/Modulos/Medicaciones/Controller/uMedicacionesController.pas b/Source/Modulos/Medicaciones/Controller/uMedicacionesController.pas new file mode 100644 index 0000000..861cd4d --- /dev/null +++ b/Source/Modulos/Medicaciones/Controller/uMedicacionesController.pas @@ -0,0 +1,688 @@ +unit uMedicacionesController; + +interface + + +uses + Classes, SysUtils, uDADataTable, uEditorDBItem, + uControllerBase, uIDataModuleMedicacion, uPacientesController, + uDetallesMedicacionController, uBizMedicaciones; + +type + IMedicacionesController = interface(IControllerBase) + ['{351B9280-F927-427D-9042-11EDED8067EF}'] + function GetPacienteController: IPacientesController; + procedure SetPacienteController(const Value: IPacientesController); + property PacienteController: IPacientesController read GetPacienteController write SetPacienteController; + + function GetDetallesController: IDetallesMedicacionController; + procedure SetDetallesController(const Value: IDetallesMedicacionController); + property DetallesController: IDetallesMedicacionController read GetDetallesController write SetDetallesController; + + function Buscar(const ID: Integer): IBizMedicacion; + function BuscarTodos: IBizMedicacion; overload; + function BuscarTodos(const ID_Paciente: Integer): IBizMedicacion; overload; + procedure Ver(AMedicacion : IBizMedicacion); + procedure VerTodos(AMedicaciones: IBizMedicacion; + const AVerModal : Boolean = False; const AWindowCaption: String = ''; + const AHeaderText: String = ''); + function Nuevo(withInsert: Boolean = True): IBizMedicacion; + function Anadir(AMedicacion : IBizMedicacion): Boolean; overload; + function Eliminar(const ID : Integer): Boolean; overload; + function Eliminar(AMedicacion : IBizMedicacion; AllItems: Boolean = false): Boolean; overload; + function Guardar(AMedicacion : IBizMedicacion): Boolean; + procedure DescartarCambios(AMedicacion : IBizMedicacion); + function Existe(const ID: Integer) : Boolean; + function Duplicar(AMedicacion: IBizMedicacion): IBizMedicacion; + + function ExtraerSeleccionados(AMedicacion: IBizMedicacion) : IBizMedicacion; + function ElegirMedicacion(AMedicacion: IBizMedicacion; AMensaje: String; AMultiSelect: Boolean): IBizMedicacion; + + procedure Preview(AMedicacion : IBizMedicacion; AllItems: Boolean = false); + procedure Print(AMedicacion : IBizMedicacion; AllItems: Boolean = false); + procedure EtiquetasPreview(AMedicacion : IBizMedicacion; Const withRefPaciente: Boolean); + procedure EtiquetasPrint(AMedicacion : IBizMedicacion; Const withRefPaciente: Boolean); + + function EsModificable(AMedicacion: IBizMedicacion): Boolean; + function EsEliminable(AMedicacion: IBizMedicacion): Boolean; + + procedure RecuperarPaciente(AMedicacion: IBizMedicacion); + + {function DarListaAnosAlbaranes: TStringList; + procedure FiltrarAno(AMedicacion: IBizMedicacion; ADynWhereDataTable: WideString; const Ano: String);} + end; + + TMedicacionesController = class(TControllerBase, IMedicacionesController) + protected + FDataModule : IDataModuleMedicacion; + FPacienteController : IPacientesController; + FDetallesController : IDetallesMedicacionController; + + function GetPacienteController: IPacientesController; + procedure SetPacienteController(const Value: IPacientesController); + function GetDetallesController: IDetallesMedicacionController; + procedure SetDetallesController(const Value: IDetallesMedicacionController); + + //Estos son los tres métodos a sobre escribir si se desea heredar toda la logica de + //este controller + procedure AsignarDataModule; virtual; + procedure RecuperarObjetos(AMedicacion: IBizMedicacion); virtual; + + procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override; + function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean; + function _Vacio : IBizMedicacion; + function ValidarMedicacion(AMedicacion: IBizMedicacion): Boolean; + public + property PacienteController: IPacientesController read GetPacienteController write SetPacienteController; + property DetallesController: IDetallesMedicacionController read GetDetallesController write SetDetallesController; + + constructor Create; override; + destructor Destroy; override; + + function Eliminar(const ID : Integer): Boolean; overload; + function Eliminar(AMedicacion : IBizMedicacion; AllItems: Boolean = false): Boolean; overload; + function Guardar(AMedicacion : IBizMedicacion): Boolean; + procedure DescartarCambios(AMedicacion : IBizMedicacion); virtual; + function Existe(const ID: Integer) : Boolean; virtual; + function Anadir(AMedicacion : IBizMedicacion): Boolean; overload; + function Buscar(const ID: Integer): IBizMedicacion; + function BuscarTodos: IBizMedicacion; overload; + function BuscarTodos(const ID_Paciente: Integer): IBizMedicacion; overload; + + function Nuevo (withInsert: Boolean = True) : IBizMedicacion; + procedure Ver(AMedicacion : IBizMedicacion); + procedure VerTodos(AMedicaciones: IBizMedicacion; + const AVerModal : Boolean = False; const AWindowCaption: String = ''; + const AHeaderText: String = ''); + function Duplicar(AMedicacion: IBizMedicacion): IBizMedicacion; + + function ExtraerSeleccionados(AMedicacion: IBizMedicacion) : IBizMedicacion; + function ElegirMedicacion(AMedicacion: IBizMedicacion; AMensaje: String; AMultiSelect: Boolean): IBizMedicacion; + + procedure RecuperarPaciente(AMedicacion : IBizMedicacion); + + function EsModificable(AMedicacion: IBizMedicacion): Boolean; + function EsEliminable(AMedicacion: IBizMedicacion): Boolean; + + procedure Preview(AMedicacion : IBizMedicacion; AllItems: Boolean = false); + procedure Print(AMedicacion : IBizMedicacion; AllItems: Boolean = false); + procedure EtiquetasPreview(AMedicacion : IBizMedicacion; Const withRefPaciente: Boolean); + procedure EtiquetasPrint(AMedicacion : IBizMedicacion; Const withRefPaciente: Boolean); + + {function DarListaAnosAlbaranes: TStringList; + procedure FiltrarAno(AMedicacion: IBizMedicacion; ADynWhereDataTable: WideString; const Ano: String);} + end; + +implementation + +uses + uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils, + uIEditorMedicacion, uIEditorElegirMedicacion, + uDataModuleMedicaciones, Variants, uBizDetallesMedicacion, + uBizContactos, uDataTableUtils, uDataModuleUsuarios, uFactuGES_App, + schMedicacionClient_Intf, uDAInterfaces, uDateUtils, uIEditorMedicaciones, + + schContactosClient_Intf, uMedicacionReportController, uControllerDetallesBase, + + uDialogUtils, Windows, Forms, Dialogs, uGUIBase, uIntegerListUtils, + uSistemaFunc, uEMailUtils, uDialogElegirEMail, uStringsUtils; + + + +{ TMedicacionesController } + +function TMedicacionesController.Anadir(AMedicacion: IBizMedicacion): Boolean; +begin + if not Assigned(AMedicacion) then + raise Exception.Create ('Albarán no asignado (Anadir)'); + + if not AMedicacion.DataTable.Active then + AMedicacion.DataTable.Active := True; + + AMedicacion.Insert; + Result := True; +end; + +procedure TMedicacionesController.AsignarDataModule; +begin + FDataModule := TDataModuleMedicacion.Create(Nil); +end; + +function TMedicacionesController.Buscar(const ID: Integer): IBizMedicacion; +begin + Result := FDataModule.GetItem(ID); +end; + +function TMedicacionesController.BuscarTodos: IBizMedicacion; +begin + Result := FDataModule.GetItems; +end; + +function TMedicacionesController.BuscarTodos( + const ID_Paciente: Integer): IBizMedicacion; +var + Condicion: TDAWhereExpression; +begin + ShowHourglassCursor; + try + Result := BuscarTodos; + + with Result.DataTable.DynamicWhere do + begin + // ID_PACIENTE + Condicion := NewBinaryExpression(NewField('', fld_MedicacionID_PACIENTE), NewConstant(ID_Paciente, datInteger), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + finally + HideHourglassCursor; + end; +end; + +constructor TMedicacionesController.Create; +begin + inherited; + AsignarDataModule; + + FPacienteController := TPacientesController.Create; + FDetallesController := TDetallesMedicacionController.Create; + FDetallesController.addObservador(Self); +end; + +function TMedicacionesController.CreateEditor(const AName: String; + const IID: TGUID; out Intf): Boolean; +begin + Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf); +end; + +{function TMedicacionesController.DarListaAnosAlbaranes: TStringList; +begin + Result := FDataModule.GetAnosItems; +end;} + +procedure TMedicacionesController.DescartarCambios(AMedicacion: IBizMedicacion); +begin + if not Assigned(AMedicacion) then + raise Exception.Create ('Albarán no asignado'); + + ShowHourglassCursor; + try + if (AMedicacion.State in dsEditModes) then + AMedicacion.Cancel; + + AMedicacion.DataTable.CancelUpdates; + finally + HideHourglassCursor; + end; +end; + +destructor TMedicacionesController.Destroy; +begin + FDataModule := Nil; + FPacienteController := Nil; + FDetallesController := Nil; + inherited; +end; + +function TMedicacionesController.Duplicar(AMedicacion: IBizMedicacion): IBizMedicacion; +begin + Result := Self._Vacio; + ShowHourglassCursor; + try + DuplicarRegistros(AMedicacion.DataTable, Result.DataTable, mdrActual); + DuplicarRegistros(AMedicacion.Detalles.DataTable, Result.Detalles.DataTable, mdrTodos); + + // Hay que dejar algunos campos como si fuera un presupuesto nuevo + Result.Edit; + with Result do + begin + FECHA_DESDE := DateOf(Now); + FECHA_HASTA := DateOf(Now) + 6; + REFERENCIA := ''; + end; + Result.Post; + finally + HideHourglassCursor; + end; +end; + +function TMedicacionesController.ValidarMedicacion( + AMedicacion: IBizMedicacion): Boolean; +begin + if not Assigned(AMedicacion) then + raise Exception.Create ('Medicacion no asignada'); + + if (AMedicacion.DataTable.State in dsEditModes) then + AMedicacion.DataTable.Post; + + //Tambien hacemos post de sus tablas hija + if (AMedicacion.Detalles.DataTable.State in dsEditModes) then + AMedicacion.Detalles.DataTable.Post; + + if (AMedicacion.ID_PACIENTE <= 0) then + // Si hay altas automáticas no hay objeto Paciente pero sí hay ID_PACIENTE +{ (not Assigned(AMedicacion.Paciente)) or + (AMedicacion.Paciente.IsEmpty) then} + raise Exception.Create('Debe indicar el paciente de esta medicación'); + + if (EsFechaVacia(AMedicacion.FECHA_DESDE)) then + raise Exception.Create('Debe indicar la fecha inicial de esta medicación'); + + if (EsFechaVacia(AMedicacion.FECHA_HASTA)) then + raise Exception.Create('Debe indicar la fecha final de esta medicación'); + + if (AMedicacion.Detalles.DataTable.RecordCount = 0) then + raise Exception.Create('La medicación debe tener en su contenido al menos un concepto'); + + //Validamos las fechas del albarán +// if not (EsFechaVacia(AMedicacion.FECHA_ENVIO)) then +// if AMedicacion.FECHA_ENVIO < AMedicacion.FECHA_PREVISTA_ENVIO then +// raise Exception.Create('La fecha de envio debe ser posterior a la fecha prevista de envio'); + + if AMedicacion.FECHA_HASTA < AMedicacion.FECHA_DESDE then + raise Exception.Create('La fecha final debe ser posterior a la fecha inicial'); + + { Asegurarse de valores en campos "automáticos" tanto + en MODIFICACIÓN como en INSERCIÓN. } + AMedicacion.Edit; + try + Result := True; + finally + AMedicacion.Post; + end; +end; + +procedure TMedicacionesController.Ver(AMedicacion: IBizMedicacion); +var + AEditor : IEditorMedicacion; +begin + AEditor := NIL; + RecuperarObjetos(AMedicacion); + + CreateEditor('EditorMedicacion', IEditorMedicacion, AEditor); + + if Assigned(AEditor) then + try + //MODO CONSULTAR + AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE + AEditor.Medicacion := AMedicacion; + + if not EsModificable(AMedicacion) then + begin + SetDataTableReadOnly(AMedicacion.DataTable, True); + AEditor.ReadOnly := True; + end; + + AEditor.ShowModal; + + //MODO CONSULTAR (Se deja la tabla como estaba) + if AEditor.ReadOnly then + SetDataTableReadOnly(AMedicacion.DataTable, False); + finally + AEditor.Release; + AEditor := NIL; + end; +end; + +procedure TMedicacionesController.VerTodos(AMedicaciones: IBizMedicacion; + const AVerModal : Boolean = False; const AWindowCaption: String = ''; + const AHeaderText: String = ''); +var + AEditor : IEditorMedicaciones; +begin + AEditor := NIL; + CreateEditor('EditorMedicaciones', IEditorMedicaciones, AEditor); + if Assigned(AEditor) then + try + if not EsCadenaVacia(AWindowCaption) then + AEditor.WindowCaption := AWindowCaption; + + if not EsCadenaVacia(AHeaderText) then + AEditor.HeaderText := AHeaderText; + + AEditor.Controller := Self; //OJO ORDEN MUY IMPORTANTE + AEditor.Medicaciones := AMedicaciones; + AEditor.MultiSelect := True; + + if AVerModal then + AEditor.ShowModal + else + AEditor.ShowEmbedded; + finally + if AVerModal then + AEditor.Release; + AEditor := NIL; + end; +end; + +function TMedicacionesController._Vacio: IBizMedicacion; +begin + Result := Buscar(ID_NULO); +end; + +function TMedicacionesController.Eliminar(const ID: Integer): Boolean; +var + AMedicacion : IBizMedicacion; +begin + AMedicacion := Buscar(ID); + + if not Assigned(AMedicacion) then + raise Exception.Create(Format('No se ha encontrado el albarán con ID = %d', [ID])); + + Result := Eliminar(AMedicacion); + AMedicacion := NIL; +end; + +function TMedicacionesController.ElegirMedicacion(AMedicacion: IBizMedicacion; AMensaje: String; AMultiSelect: Boolean): IBizMedicacion; +var + AEditor : IEditorElegirMedicacion; +begin + Result := NIL; + CreateEditor('EditorElegirMedicacion', IEditorElegirMedicacion, AEditor); + if Assigned(AEditor) then + try + AEditor.Controller := Self; + AEditor.Medicaciones := AMedicacion; + AEditor.MultiSelect := AMultiSelect; + AEditor.Mensaje := AMensaje; + if IsPositiveResult(AEditor.ShowModal) then + Result := AEditor.MedicacionesSeleccionadas; + finally + AEditor.Release; + AEditor := NIL; + end; +end; + +function TMedicacionesController.Eliminar(AMedicacion: IBizMedicacion; AllItems: Boolean = false): Boolean; +//En el caso de eliminar almenos un elemento del conjunto se devuelve true +var + bEliminado: Boolean; + +begin + bEliminado := False; + + if not Assigned(AMedicacion) then + raise Exception.Create ('Albarán no asignada'); + + ShowHourglassCursor; + try + if (AMedicacion.State in dsEditModes) then + AMedicacion.Cancel; + + //Siempre eliminaremos el seleccionado + if EsEliminable(AMedicacion) then + begin + AMedicacion.Delete; + bEliminado := True; + end; + + //En el caso de querer eliminar todos los items del objeto AMedicacion + if AllItems then + begin + with AMedicacion.DataTable do + begin + First; + while not EOF do + begin + if EsEliminable(AMedicacion) then + begin + AMedicacion.Delete; + bEliminado := True + end + else Next; + end; + end; + end; + + if bEliminado then + begin + AMedicacion.DataTable.ApplyUpdates; + Result := True; + end + else + Result := False; + + finally + HideHourglassCursor; + end; +end; + +function TMedicacionesController.EsEliminable(AMedicacion: IBizMedicacion): Boolean; +begin + if not Assigned(AMedicacion) then + raise Exception.Create ('Albarán no asignado: EsModificable'); + + Result := EsModificable(AMedicacion); +end; + +function TMedicacionesController.EsModificable(AMedicacion: IBizMedicacion): Boolean; +begin + Result := True; +end; + +procedure TMedicacionesController.EtiquetasPreview(AMedicacion: IBizMedicacion; Const withRefPaciente: Boolean); +var + AReportController : IMedicacionReportController; +begin + AReportController := TMedicacionReportController.Create; + try + AReportController.EtiquetasPreview(AMedicacion.ID, withRefPaciente); + finally + AReportController := NIL; + end; +end; + +procedure TMedicacionesController.EtiquetasPrint(AMedicacion: IBizMedicacion; Const withRefPaciente: Boolean); +var + AReportController : IMedicacionReportController; +begin + AReportController := TMedicacionReportController.Create; + try + AReportController.EtiquetasPrint(AMedicacion.ID, withRefPaciente); + finally + AReportController := NIL; + end; +end; + +procedure TMedicacionesController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); +var + AMedicacion : IBizMedicacion; + ADetalles : IBizDetallesMedicacion; +begin + inherited; + + if Supports(ADataTable, IBizDetallesMedicacion, ADetalles) and + Supports(ADetalles.DataTable.MasterSource.DataTable, IBizMedicacion, AMedicacion) then + begin + //RecalcularImportes(AMedicacion); + end; +end; + +procedure TMedicacionesController.RecuperarObjetos(AMedicacion: IBizMedicacion); +begin + RecuperarPaciente(AMedicacion); +end; + +procedure TMedicacionesController.RecuperarPaciente( + AMedicacion: IBizMedicacion); +begin + AMedicacion._Paciente := (FPacienteController.Buscar(AMedicacion.ID_Paciente) as IBizPaciente); +end; + +function TMedicacionesController.Existe(const ID: Integer): Boolean; +var + AMedicacion : IBizMedicacion; +begin + try + AMedicacion := Buscar(ID); + Result := Assigned(AMedicacion) and (AMedicacion.ID = ID); + finally + AMedicacion := NIL; + end; +end; + +function TMedicacionesController.ExtraerSeleccionados(AMedicacion: IBizMedicacion): IBizMedicacion; +var + ASeleccionados : IBizMedicacion; +begin + ASeleccionados := (Self.Buscar(ID_NULO) as IBizMedicacion); + CopyDataTableDA5(AMedicacion.DataTable, ASeleccionados.DataTable, True); + Result := ASeleccionados; +end; + +{procedure TMedicacionesController.FiltrarAno(AMedicacion: IBizMedicacion; ADynWhereDataTable: WideString; const Ano: String); +var + Condicion: TDAWhereExpression; + FechaIni: String; + FechaFin: String; + +begin + AMedicacion.DataTable.DynamicWhere.Clear; + AMedicacion.DataTable.DynamicWhere.Xml := ADynWhereDataTable; + + if (Ano <> 'Todos') then + begin + // Filtrar las facturas actuales por empresa + FechaIni := '01/01/' + Ano; + FechaFin := '31/12/' + Ano; + with AMedicacion.DataTable.DynamicWhere do + begin + // (FECHA_INICIO between FECHA_FIN) + Condicion := NewBinaryExpression(NewField('', fld_MedicacionFECHA_ALBARAN), NewConstant(FechaIni, datString), dboGreaterOrEqual); + Condicion := NewBinaryExpression(NewBinaryExpression(NewField('', fld_MedicacionFECHA_ALBARAN), NewConstant(FechaFin, datString), dboLessOrEqual), Condicion, dboAnd); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Condicion, Expression, dboAnd); + end; + end; +end; } + +procedure TMedicacionesController.SetPacienteController(const Value: IPacientesController); +begin + FPacienteController := Value; +end; + +procedure TMedicacionesController.SetDetallesController(const Value: IDetallesMedicacionController); +begin + FDetallesController := Value; +end; + +function TMedicacionesController.Guardar(AMedicacion: IBizMedicacion): Boolean; +begin + Result := False; + + if not Assigned(AMedicacion) then + raise Exception.Create ('Albarán no asignada'); + + if not Assigned(FDetallesController) then + raise Exception.Create ('Controller detalles no asignado'); + + if ValidarMedicacion(AMedicacion) then + begin + ShowHourglassCursor; + try + AMedicacion.DataTable.ApplyUpdates; + Result := True; + finally + HideHourglassCursor; + end; + end; +end; + +function TMedicacionesController.Nuevo(withInsert: Boolean = True): IBizMedicacion; +var + AMedicacion : IBizMedicacion; +begin + AMedicacion := FDataModule.NewItem; + AMedicacion.DataTable.Active := True; + if WithInsert then + AMedicacion.Insert; + Result := AMedicacion; +end; + +procedure TMedicacionesController.Preview(AMedicacion: IBizMedicacion; AllItems: Boolean = false); +var + AReportController : IMedicacionReportController; + ID_Albaranes: TIntegerList; + +begin + AReportController := TMedicacionReportController.Create; + ID_Albaranes := TIntegerList.Create; + + try + + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AMedicacion.DataTable do + begin + First; + while not EOF do + begin + ID_Albaranes.Add(AMedicacion.ID); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ID_Albaranes.Add(AMedicacion.ID); + + AReportController.Preview(ID_Albaranes); + + finally + AReportController := NIL; + FreeANDNIL(ID_Albaranes); + end; +end; + +procedure TMedicacionesController.Print(AMedicacion: IBizMedicacion; AllItems: Boolean = false); +var + AReportController : IMedicacionReportController; + ID_Albaranes: TIntegerList; + +begin + AReportController := TMedicacionReportController.Create; + ID_Albaranes := TIntegerList.Create; + try + //Si deseamos previsualizar todos los items del objeto albaran + if AllItems then + begin + with AMedicacion.DataTable do + begin + First; + while not EOF do + begin + ID_Albaranes.Add(AMedicacion.ID); + Next; + end; + end; + end + //Solo previsualizamos el item seleccionado + else + ID_Albaranes.Add(AMedicacion.ID); + + AReportController.Print(ID_Albaranes); + + finally + AReportController := NIL; + FreeANDNIL(ID_Albaranes); + end; +end; + +function TMedicacionesController.GetPacienteController: IPacientesController; +begin + Result := FPacienteController; +end; + +function TMedicacionesController.GetDetallesController: IDetallesMedicacionController; +begin + Result := FDetallesController; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Data/Medicacion_data.bdsproj b/Source/Modulos/Medicaciones/Data/Medicacion_data.bdsproj new file mode 100644 index 0000000..1c8d4a1 --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/Medicacion_data.bdsproj @@ -0,0 +1,492 @@ + + + + + + + + + + + + Medicaciones_data.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + diff --git a/Source/Modulos/Medicaciones/Data/Medicacion_data.rc b/Source/Modulos/Medicaciones/Data/Medicacion_data.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/Medicacion_data.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/Source/Modulos/Medicaciones/Data/Medicaciones_data.dpk b/Source/Modulos/Medicaciones/Data/Medicaciones_data.dpk new file mode 100644 index 0000000..796be2d --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/Medicaciones_data.dpk @@ -0,0 +1,44 @@ +package Medicaciones_data; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + rtl, + dbrtl, + cxLibraryD11, + dxThemeD11, + vcl, + dsnap, + vcldb, + adortl, + Base, + ApplicationBase, + Medicaciones_model; + +contains + uDataModuleMedicaciones in 'uDataModuleMedicaciones.pas' {DataModuleMedicacion}; + +end. + \ No newline at end of file diff --git a/Source/Modulos/Medicaciones/Data/Medicaciones_data.dproj b/Source/Modulos/Medicaciones/Data/Medicaciones_data.dproj new file mode 100644 index 0000000..9f8bc24 --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/Medicaciones_data.dproj @@ -0,0 +1,550 @@ + + + + {38eef566-1895-4bdd-8007-f92f5e32cce6} + Medicaciones_data.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Medicaciones_data.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Medicaciones_data.dpk + + + + + MainSource + + + + + + + + + + + + + +
DataModuleMedicacion
+
+
+
+ diff --git a/Source/Modulos/Medicaciones/Data/Medicaciones_data.rc b/Source/Modulos/Medicaciones/Data/Medicaciones_data.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/Medicaciones_data.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/Source/Modulos/Medicaciones/Data/Medicaciones_data.res b/Source/Modulos/Medicaciones/Data/Medicaciones_data.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/Source/Modulos/Medicaciones/Data/Medicaciones_data.res differ diff --git a/Source/Modulos/Medicaciones/Data/uDataModuleMedicaciones.dfm b/Source/Modulos/Medicaciones/Data/uDataModuleMedicaciones.dfm new file mode 100644 index 0000000..adcd20c --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/uDataModuleMedicaciones.dfm @@ -0,0 +1,167 @@ +inherited DataModuleMedicacion: TDataModuleMedicacion + OnCreate = DAClientDataModuleCreate + Height = 394 + Width = 512 + object RORemoteService: TRORemoteService + Message = dmConexion.ROMessage + Channel = dmConexion.ROChannel + ServiceName = 'srvMedicacion' + Left = 40 + Top = 16 + end + object rda_Medicacion: TDARemoteDataAdapter + DataStreamer = Bin2DataStreamer + GetSchemaCall.RemoteService = RORemoteService + GetDataCall.RemoteService = RORemoteService + UpdateDataCall.RemoteService = RORemoteService + GetScriptsCall.RemoteService = RORemoteService + RemoteService = RORemoteService + Left = 43 + Top = 151 + end + object Bin2DataStreamer: TDABin2DataStreamer + Left = 40 + Top = 84 + end + object tbl_Medicacion: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datAutoInc + GeneratorName = 'GEN_MEDICACION_ID' + Required = True + DictionaryEntry = 'Medicacion_ID' + InPrimaryKey = True + end + item + Name = 'ID_PACIENTE' + DataType = datInteger + DictionaryEntry = 'Medicacion_ID_PACIENTE' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + DictionaryEntry = 'Medicacion_REFERENCIA' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre del paciente' + DictionaryEntry = 'Medicacion_NOMBRE' + end + item + Name = 'FECHA_DESDE' + DataType = datDateTime + DisplayLabel = 'Desde' + DictionaryEntry = 'Medicacion_FECHA_DESDE' + end + item + Name = 'FECHA_HASTA' + DataType = datDateTime + DisplayLabel = 'Hasta' + DictionaryEntry = 'Medicacion_FECHA_HASTA' + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + DisplayLabel = 'Tipo' + DictionaryEntry = 'Medicacion_TIPO' + end> + Params = <> + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_Medicacion + LogicalName = 'Medicacion' + IndexDefs = <> + Left = 232 + Top = 128 + end + object ds_Medicacion: TDADataSource + DataSet = tbl_Medicacion.Dataset + DataTable = tbl_Medicacion + Left = 232 + Top = 56 + end + object tbl_Medicacion_Detalles: TDAMemDataTable + RemoteUpdatesOptions = [] + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'ID_MEDICACION' + DataType = datInteger + Required = True + end + item + Name = 'POSICION' + DataType = datInteger + end + item + Name = 'TIPO_DETALLE' + DataType = datString + Size = 25 + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end + item + Name = 'CANTIDAD' + DataType = datCurrency + end + item + Name = 'POSOLOGIA' + DataType = datString + Size = 255 + end + item + Name = 'FORMA_COLOR' + DataType = datString + Size = 255 + end + item + Name = 'LOTE' + DataType = datString + Size = 255 + end + item + Name = 'VISIBLE' + DataType = datSmallInt + end> + Params = <> + MasterMappingMode = mmWhere + StreamingOptions = [soDisableEventsWhileStreaming] + RemoteDataAdapter = rda_Medicacion + MasterSource = ds_Medicacion + MasterFields = 'ID' + DetailFields = 'ID_MEDICACION' + LogicalName = 'Medicacion_Detalles' + IndexDefs = <> + Left = 384 + Top = 128 + end + object ds_Medicacion_Detalles: TDADataSource + DataSet = tbl_Medicacion_Detalles.Dataset + DataTable = tbl_Medicacion_Detalles + Left = 384 + Top = 56 + end +end diff --git a/Source/Modulos/Medicaciones/Data/uDataModuleMedicaciones.pas b/Source/Modulos/Medicaciones/Data/uDataModuleMedicaciones.pas new file mode 100644 index 0000000..102b556 --- /dev/null +++ b/Source/Modulos/Medicaciones/Data/uDataModuleMedicaciones.pas @@ -0,0 +1,136 @@ +unit uDataModuleMedicaciones; + +interface + +uses + DB, Classes, SysUtils, uDADesigntimeCall, uROTypes, + uRORemoteService, uROClient, uROBinMessage, uDAScriptingProvider, + uDACDSDataTable, uROWinInetHttpChannel, uDADataTable, uDABINAdapter, + + uIDataModuleMedicacion, uBizMedicaciones, uBizDetallesMedicacion, + uIDataModuleMedicacionReport, uDataModuleBase, uDABin2DataStreamer, uDAMemDataTable, + uDAInterfaces, uDADataStreamer, uDARemoteDataAdapter, uIntegerListUtils; + +type + TDataModuleMedicacion = class(TDataModuleBase, IDataModuleMedicacion, IDataModuleMedicacionReport) + RORemoteService: TRORemoteService; + rda_Medicacion: TDARemoteDataAdapter; + Bin2DataStreamer: TDABin2DataStreamer; + tbl_Medicacion: TDAMemDataTable; + ds_Medicacion: TDADataSource; + tbl_Medicacion_Detalles: TDAMemDataTable; + ds_Medicacion_Detalles: TDADataSource; + procedure DAClientDataModuleCreate(Sender: TObject); + + private + function _GetDetalles : IBizDetallesMedicacion; + + protected + procedure AsignarClaseNegocio(AAlbaran: TDADataTable); virtual; + + public + function GetItems : IBizMedicacion; virtual; + function GetItem(const ID : Integer) : IBizMedicacion; + function NewItem : IBizMedicacion; + + // Report + function GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; + end; + +implementation + +{$R *.DFM} + +uses + cxControls, Etiquetas_Intf, uDataModuleConexion, + uDataTableUtils, schMedicacionClient_Intf, uBizContactos; + +{ TdmMedicacion } + +procedure TDataModuleMedicacion.AsignarClaseNegocio(AAlbaran: TDADataTable); +begin + AAlbaran.BusinessRulesID := BIZ_CLIENT_MEDICACION; +end; + +procedure TDataModuleMedicacion.DAClientDataModuleCreate(Sender: TObject); +begin + RORemoteService.Channel := dmConexion.Channel; + RORemoteService.Message := dmConexion.Message; +end; + +function TDataModuleMedicacion.NewItem: IBizMedicacion; +begin + Result := GetItem(ID_NULO) +end; + +function TDataModuleMedicacion._GetDetalles: IBizDetallesMedicacion; +var + ADetalles : TDAMemDataTable; +begin + ShowHourglassCursor; + try + ADetalles := CloneDataTable(tbl_Medicacion_Detalles); + with ADetalles do + begin + BusinessRulesID := BIZ_CLIENT_DETALLES_MEDICACION; + DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates]; + end; + Result := (ADetalles as IBizDetallesMedicacion); + finally + HideHourglassCursor; + end; +end; + +function TDataModuleMedicacion.GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; +begin + Result := (RORemoteService as IsrvMedicacion).GenerarInformeEtiquetas(AID) +end; + +function TDataModuleMedicacion.GetItem(const ID: Integer): IBizMedicacion; +var + Condicion: TDAWhereExpression; +begin + ShowHourglassCursor; + try + Result := Self.GetItems; + + with Result.DataTable.DynamicWhere do + begin + // (ID = :ID) + Condicion := NewBinaryExpression(NewField('', fld_MedicacionID), NewConstant(ID, datInteger), dboEqual); + + if IsEmpty then + Expression := Condicion + else + Expression := NewBinaryExpression(Expression, Condicion, dboAnd); + end; + + finally + HideHourglassCursor; + end; +end; + +function TDataModuleMedicacion.GetItems: IBizMedicacion; +var + AMedicacion : TDAMemDataTable; +begin + ShowHourglassCursor; + try + AMedicacion := CloneDataTable(tbl_Medicacion); + AsignarClaseNegocio(AMedicacion); + + // EL CAMPO REFERENCIA TIENE QUE SER AUTOREFRESH!!!!! + AMedicacion.FieldByName(fld_MedicacionREFERENCIA).ServerAutoRefresh := TRUE; + + with TBizMedicacion(AMedicacion.BusinessEventsObj) do + begin + Detalles := _GetDetalles; + end; + + Result := (AMedicacion as IBizMedicacion); + finally + HideHourglassCursor; + end; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Medicaciones_Group.groupproj b/Source/Modulos/Medicaciones/Medicaciones_Group.groupproj new file mode 100644 index 0000000..71e33ba --- /dev/null +++ b/Source/Modulos/Medicaciones/Medicaciones_Group.groupproj @@ -0,0 +1,124 @@ + + + {6fa7160e-0b4c-4f7c-9c55-08938cd225c4} + + + + + + + + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Modulos/Medicaciones/Model/Data/uIDataModuleMedicacion.pas b/Source/Modulos/Medicaciones/Model/Data/uIDataModuleMedicacion.pas new file mode 100644 index 0000000..9156dfc --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/Data/uIDataModuleMedicacion.pas @@ -0,0 +1,18 @@ +unit uIDataModuleMedicacion; + +interface + +uses + Classes, uBizMedicaciones; + +type + IDataModuleMedicacion = interface + ['{41C24486-3827-4851-AA9D-F168760F09E0}'] + function GetItems: IBizMedicacion; + function GetItem(const ID : Integer) : IBizMedicacion; + function NewItem : IBizMedicacion; + end; + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Model/Data/uIDataModuleMedicacionReport.pas b/Source/Modulos/Medicaciones/Model/Data/uIDataModuleMedicacionReport.pas new file mode 100644 index 0000000..507a392 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/Data/uIDataModuleMedicacionReport.pas @@ -0,0 +1,16 @@ +unit uIDataModuleMedicacionReport; + +interface + +uses + uROTypes, uIntegerListUtils; + +type + IDataModuleMedicacionReport = interface + ['{6A0E016B-A505-4389-9265-C0F711311F14}'] + function GetEtiquetas(const AID: Integer; withRefCliente: Boolean): Binary; + end; + +implementation + +end. diff --git a/Source/Modulos/Medicaciones/Model/Medicaciones_model.dpk b/Source/Modulos/Medicaciones/Model/Medicaciones_model.dpk new file mode 100644 index 0000000..17ea9e1 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/Medicaciones_model.dpk @@ -0,0 +1,48 @@ +package Medicaciones_model; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + Base, + ApplicationBase, + rtl, + dbrtl, + RemObjects_Core_D11, + vcl, + DataAbstract_Core_D11, + vcldb, + dsnap, + adortl, + Contactos_model; + +contains + schMedicacionClient_Intf in 'schMedicacionClient_Intf.pas', + schMedicacionServer_Intf in 'schMedicacionServer_Intf.pas', + uBizDetallesMedicacion in 'uBizDetallesMedicacion.pas', + uBizMedicaciones in 'uBizMedicaciones.pas', + uIDataModuleMedicacionReport in 'Data\uIDataModuleMedicacionReport.pas', + uIDataModuleMedicacion in 'Data\uIDataModuleMedicacion.pas'; + +end. diff --git a/Source/Modulos/Medicaciones/Model/Medicaciones_model.dproj b/Source/Modulos/Medicaciones/Model/Medicaciones_model.dproj new file mode 100644 index 0000000..fc49403 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/Medicaciones_model.dproj @@ -0,0 +1,542 @@ + + + + {f845e061-2687-4410-b3dd-33ac3d5daa72} + Medicaciones_model.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Medicaciones_model.bpl + + + 7.0 + False + False + 0 + RELEASE + + + 7.0 + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\..\Output\Debug\Cliente + .\ + .\ + .\ + ..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0Medicaciones_model.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + diff --git a/Source/Modulos/Medicaciones/Model/Medicaciones_model.rc b/Source/Modulos/Medicaciones/Model/Medicaciones_model.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/Medicaciones_model.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/Source/Modulos/Medicaciones/Model/Medicaciones_model.res b/Source/Modulos/Medicaciones/Model/Medicaciones_model.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/Source/Modulos/Medicaciones/Model/Medicaciones_model.res differ diff --git a/Source/Modulos/Medicaciones/Model/schMedicacionClient_Intf.pas b/Source/Modulos/Medicaciones/Model/schMedicacionClient_Intf.pas new file mode 100644 index 0000000..bf37677 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/schMedicacionClient_Intf.pas @@ -0,0 +1,771 @@ +unit schMedicacionClient_Intf; + +interface + +uses + Classes, DB, schBase_Intf, SysUtils, uROClasses, uDAInterfaces, uDADataTable, FmtBCD, uROXMLIntf; + +const + { Data table rules ids + Feel free to change them to something more human readable + but make sure they are unique in the context of your application } + RID_Medicacion = '{A41E617B-34FF-45CF-95FA-02FB06807AC6}'; + RID_Medicacion_Detalles = '{75541923-C610-4F76-BEDA-8BA7956715F0}'; + + { Data table names } + nme_Medicacion = 'Medicacion'; + nme_Medicacion_Detalles = 'Medicacion_Detalles'; + + { Medicacion fields } + fld_MedicacionID = 'ID'; + fld_MedicacionID_PACIENTE = 'ID_PACIENTE'; + fld_MedicacionREFERENCIA = 'REFERENCIA'; + fld_MedicacionNOMBRE = 'NOMBRE'; + fld_MedicacionFECHA_DESDE = 'FECHA_DESDE'; + fld_MedicacionFECHA_HASTA = 'FECHA_HASTA'; + fld_MedicacionTIPO = 'TIPO'; + + { Medicacion field indexes } + idx_MedicacionID = 0; + idx_MedicacionID_PACIENTE = 1; + idx_MedicacionREFERENCIA = 2; + idx_MedicacionNOMBRE = 3; + idx_MedicacionFECHA_DESDE = 4; + idx_MedicacionFECHA_HASTA = 5; + idx_MedicacionTIPO = 6; + + { Medicacion_Detalles fields } + fld_Medicacion_DetallesID = 'ID'; + fld_Medicacion_DetallesID_MEDICACION = 'ID_MEDICACION'; + fld_Medicacion_DetallesPOSICION = 'POSICION'; + fld_Medicacion_DetallesTIPO_DETALLE = 'TIPO_DETALLE'; + fld_Medicacion_DetallesID_ARTICULO = 'ID_ARTICULO'; + fld_Medicacion_DetallesREFERENCIA = 'REFERENCIA'; + fld_Medicacion_DetallesCONCEPTO = 'CONCEPTO'; + fld_Medicacion_DetallesCANTIDAD = 'CANTIDAD'; + fld_Medicacion_DetallesPOSOLOGIA = 'POSOLOGIA'; + fld_Medicacion_DetallesFORMA_COLOR = 'FORMA_COLOR'; + fld_Medicacion_DetallesLOTE = 'LOTE'; + fld_Medicacion_DetallesVISIBLE = 'VISIBLE'; + + { Medicacion_Detalles field indexes } + idx_Medicacion_DetallesID = 0; + idx_Medicacion_DetallesID_MEDICACION = 1; + idx_Medicacion_DetallesPOSICION = 2; + idx_Medicacion_DetallesTIPO_DETALLE = 3; + idx_Medicacion_DetallesID_ARTICULO = 4; + idx_Medicacion_DetallesREFERENCIA = 5; + idx_Medicacion_DetallesCONCEPTO = 6; + idx_Medicacion_DetallesCANTIDAD = 7; + idx_Medicacion_DetallesPOSOLOGIA = 8; + idx_Medicacion_DetallesFORMA_COLOR = 9; + idx_Medicacion_DetallesLOTE = 10; + idx_Medicacion_DetallesVISIBLE = 11; + +type + { IMedicacion } + IMedicacion = interface(IDAStronglyTypedDataTable) + ['{A5790FFD-99FA-410D-AD32-283A9878F9C0}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetIDIsNull: Boolean; + procedure SetIDIsNull(const aValue: Boolean); + function GetID_PACIENTEValue: Integer; + procedure SetID_PACIENTEValue(const aValue: Integer); + function GetID_PACIENTEIsNull: Boolean; + procedure SetID_PACIENTEIsNull(const aValue: Boolean); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetREFERENCIAIsNull: Boolean; + procedure SetREFERENCIAIsNull(const aValue: Boolean); + function GetNOMBREValue: String; + procedure SetNOMBREValue(const aValue: String); + function GetNOMBREIsNull: Boolean; + procedure SetNOMBREIsNull(const aValue: Boolean); + function GetFECHA_DESDEValue: DateTime; + procedure SetFECHA_DESDEValue(const aValue: DateTime); + function GetFECHA_DESDEIsNull: Boolean; + procedure SetFECHA_DESDEIsNull(const aValue: Boolean); + function GetFECHA_HASTAValue: DateTime; + procedure SetFECHA_HASTAValue(const aValue: DateTime); + function GetFECHA_HASTAIsNull: Boolean; + procedure SetFECHA_HASTAIsNull(const aValue: Boolean); + function GetTIPOValue: String; + procedure SetTIPOValue(const aValue: String); + function GetTIPOIsNull: Boolean; + procedure SetTIPOIsNull(const aValue: Boolean); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property ID_PACIENTE: Integer read GetID_PACIENTEValue write SetID_PACIENTEValue; + property ID_PACIENTEIsNull: Boolean read GetID_PACIENTEIsNull write SetID_PACIENTEIsNull; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NOMBREIsNull: Boolean read GetNOMBREIsNull write SetNOMBREIsNull; + property FECHA_DESDE: DateTime read GetFECHA_DESDEValue write SetFECHA_DESDEValue; + property FECHA_DESDEIsNull: Boolean read GetFECHA_DESDEIsNull write SetFECHA_DESDEIsNull; + property FECHA_HASTA: DateTime read GetFECHA_HASTAValue write SetFECHA_HASTAValue; + property FECHA_HASTAIsNull: Boolean read GetFECHA_HASTAIsNull write SetFECHA_HASTAIsNull; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property TIPOIsNull: Boolean read GetTIPOIsNull write SetTIPOIsNull; + end; + + { TMedicacionDataTableRules } + TMedicacionDataTableRules = class(TIntfObjectDADataTableRules, IMedicacion) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetIDIsNull: Boolean; virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetID_PACIENTEValue: Integer; virtual; + procedure SetID_PACIENTEValue(const aValue: Integer); virtual; + function GetID_PACIENTEIsNull: Boolean; virtual; + procedure SetID_PACIENTEIsNull(const aValue: Boolean); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetREFERENCIAIsNull: Boolean; virtual; + procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual; + function GetNOMBREValue: String; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + function GetNOMBREIsNull: Boolean; virtual; + procedure SetNOMBREIsNull(const aValue: Boolean); virtual; + function GetFECHA_DESDEValue: DateTime; virtual; + procedure SetFECHA_DESDEValue(const aValue: DateTime); virtual; + function GetFECHA_DESDEIsNull: Boolean; virtual; + procedure SetFECHA_DESDEIsNull(const aValue: Boolean); virtual; + function GetFECHA_HASTAValue: DateTime; virtual; + procedure SetFECHA_HASTAValue(const aValue: DateTime); virtual; + function GetFECHA_HASTAIsNull: Boolean; virtual; + procedure SetFECHA_HASTAIsNull(const aValue: Boolean); virtual; + function GetTIPOValue: String; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + function GetTIPOIsNull: Boolean; virtual; + procedure SetTIPOIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property ID_PACIENTE: Integer read GetID_PACIENTEValue write SetID_PACIENTEValue; + property ID_PACIENTEIsNull: Boolean read GetID_PACIENTEIsNull write SetID_PACIENTEIsNull; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull; + property NOMBRE: String read GetNOMBREValue write SetNOMBREValue; + property NOMBREIsNull: Boolean read GetNOMBREIsNull write SetNOMBREIsNull; + property FECHA_DESDE: DateTime read GetFECHA_DESDEValue write SetFECHA_DESDEValue; + property FECHA_DESDEIsNull: Boolean read GetFECHA_DESDEIsNull write SetFECHA_DESDEIsNull; + property FECHA_HASTA: DateTime read GetFECHA_HASTAValue write SetFECHA_HASTAValue; + property FECHA_HASTAIsNull: Boolean read GetFECHA_HASTAIsNull write SetFECHA_HASTAIsNull; + property TIPO: String read GetTIPOValue write SetTIPOValue; + property TIPOIsNull: Boolean read GetTIPOIsNull write SetTIPOIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + + { IMedicacion_Detalles } + IMedicacion_Detalles = interface(IDAStronglyTypedDataTable) + ['{449C29DA-CEB8-4445-916A-BB35EF463CCF}'] + { Property getters and setters } + function GetIDValue: Integer; + procedure SetIDValue(const aValue: Integer); + function GetIDIsNull: Boolean; + procedure SetIDIsNull(const aValue: Boolean); + function GetID_MEDICACIONValue: Integer; + procedure SetID_MEDICACIONValue(const aValue: Integer); + function GetID_MEDICACIONIsNull: Boolean; + procedure SetID_MEDICACIONIsNull(const aValue: Boolean); + function GetPOSICIONValue: Integer; + procedure SetPOSICIONValue(const aValue: Integer); + function GetPOSICIONIsNull: Boolean; + procedure SetPOSICIONIsNull(const aValue: Boolean); + function GetTIPO_DETALLEValue: String; + procedure SetTIPO_DETALLEValue(const aValue: String); + function GetTIPO_DETALLEIsNull: Boolean; + procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); + function GetID_ARTICULOValue: Integer; + procedure SetID_ARTICULOValue(const aValue: Integer); + function GetID_ARTICULOIsNull: Boolean; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); + function GetREFERENCIAValue: String; + procedure SetREFERENCIAValue(const aValue: String); + function GetREFERENCIAIsNull: Boolean; + procedure SetREFERENCIAIsNull(const aValue: Boolean); + function GetCONCEPTOValue: String; + procedure SetCONCEPTOValue(const aValue: String); + function GetCONCEPTOIsNull: Boolean; + procedure SetCONCEPTOIsNull(const aValue: Boolean); + function GetCANTIDADValue: Currency; + procedure SetCANTIDADValue(const aValue: Currency); + function GetCANTIDADIsNull: Boolean; + procedure SetCANTIDADIsNull(const aValue: Boolean); + function GetPOSOLOGIAValue: String; + procedure SetPOSOLOGIAValue(const aValue: String); + function GetPOSOLOGIAIsNull: Boolean; + procedure SetPOSOLOGIAIsNull(const aValue: Boolean); + function GetFORMA_COLORValue: String; + procedure SetFORMA_COLORValue(const aValue: String); + function GetFORMA_COLORIsNull: Boolean; + procedure SetFORMA_COLORIsNull(const aValue: Boolean); + function GetLOTEValue: String; + procedure SetLOTEValue(const aValue: String); + function GetLOTEIsNull: Boolean; + procedure SetLOTEIsNull(const aValue: Boolean); + function GetVISIBLEValue: SmallInt; + procedure SetVISIBLEValue(const aValue: SmallInt); + function GetVISIBLEIsNull: Boolean; + procedure SetVISIBLEIsNull(const aValue: Boolean); + + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property ID_MEDICACION: Integer read GetID_MEDICACIONValue write SetID_MEDICACIONValue; + property ID_MEDICACIONIsNull: Boolean read GetID_MEDICACIONIsNull write SetID_MEDICACIONIsNull; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property POSICIONIsNull: Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull; + property TIPO_DETALLE: String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue; + property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; + property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property CANTIDAD: Currency read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; + property POSOLOGIA: String read GetPOSOLOGIAValue write SetPOSOLOGIAValue; + property POSOLOGIAIsNull: Boolean read GetPOSOLOGIAIsNull write SetPOSOLOGIAIsNull; + property FORMA_COLOR: String read GetFORMA_COLORValue write SetFORMA_COLORValue; + property FORMA_COLORIsNull: Boolean read GetFORMA_COLORIsNull write SetFORMA_COLORIsNull; + property LOTE: String read GetLOTEValue write SetLOTEValue; + property LOTEIsNull: Boolean read GetLOTEIsNull write SetLOTEIsNull; + property VISIBLE: SmallInt read GetVISIBLEValue write SetVISIBLEValue; + property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; + end; + + { TMedicacion_DetallesDataTableRules } + TMedicacion_DetallesDataTableRules = class(TIntfObjectDADataTableRules, IMedicacion_Detalles) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + function GetIDIsNull: Boolean; virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetID_MEDICACIONValue: Integer; virtual; + procedure SetID_MEDICACIONValue(const aValue: Integer); virtual; + function GetID_MEDICACIONIsNull: Boolean; virtual; + procedure SetID_MEDICACIONIsNull(const aValue: Boolean); virtual; + function GetPOSICIONValue: Integer; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + function GetPOSICIONIsNull: Boolean; virtual; + procedure SetPOSICIONIsNull(const aValue: Boolean); virtual; + function GetTIPO_DETALLEValue: String; virtual; + procedure SetTIPO_DETALLEValue(const aValue: String); virtual; + function GetTIPO_DETALLEIsNull: Boolean; virtual; + procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); virtual; + function GetID_ARTICULOValue: Integer; virtual; + procedure SetID_ARTICULOValue(const aValue: Integer); virtual; + function GetID_ARTICULOIsNull: Boolean; virtual; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetREFERENCIAValue: String; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + function GetREFERENCIAIsNull: Boolean; virtual; + procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + function GetCANTIDADValue: Currency; virtual; + procedure SetCANTIDADValue(const aValue: Currency); virtual; + function GetCANTIDADIsNull: Boolean; virtual; + procedure SetCANTIDADIsNull(const aValue: Boolean); virtual; + function GetPOSOLOGIAValue: String; virtual; + procedure SetPOSOLOGIAValue(const aValue: String); virtual; + function GetPOSOLOGIAIsNull: Boolean; virtual; + procedure SetPOSOLOGIAIsNull(const aValue: Boolean); virtual; + function GetFORMA_COLORValue: String; virtual; + procedure SetFORMA_COLORValue(const aValue: String); virtual; + function GetFORMA_COLORIsNull: Boolean; virtual; + procedure SetFORMA_COLORIsNull(const aValue: Boolean); virtual; + function GetLOTEValue: String; virtual; + procedure SetLOTEValue(const aValue: String); virtual; + function GetLOTEIsNull: Boolean; virtual; + procedure SetLOTEIsNull(const aValue: Boolean); virtual; + function GetVISIBLEValue: SmallInt; virtual; + procedure SetVISIBLEValue(const aValue: SmallInt); virtual; + function GetVISIBLEIsNull: Boolean; virtual; + procedure SetVISIBLEIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID: Integer read GetIDValue write SetIDValue; + property IDIsNull: Boolean read GetIDIsNull write SetIDIsNull; + property ID_MEDICACION: Integer read GetID_MEDICACIONValue write SetID_MEDICACIONValue; + property ID_MEDICACIONIsNull: Boolean read GetID_MEDICACIONIsNull write SetID_MEDICACIONIsNull; + property POSICION: Integer read GetPOSICIONValue write SetPOSICIONValue; + property POSICIONIsNull: Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull; + property TIPO_DETALLE: String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue; + property TIPO_DETALLEIsNull: Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; + property ID_ARTICULO: Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull: Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property REFERENCIA: String read GetREFERENCIAValue write SetREFERENCIAValue; + property REFERENCIAIsNull: Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull; + property CONCEPTO: String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull: Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property CANTIDAD: Currency read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDADIsNull: Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; + property POSOLOGIA: String read GetPOSOLOGIAValue write SetPOSOLOGIAValue; + property POSOLOGIAIsNull: Boolean read GetPOSOLOGIAIsNull write SetPOSOLOGIAIsNull; + property FORMA_COLOR: String read GetFORMA_COLORValue write SetFORMA_COLORValue; + property FORMA_COLORIsNull: Boolean read GetFORMA_COLORIsNull write SetFORMA_COLORIsNull; + property LOTE: String read GetLOTEValue write SetLOTEValue; + property LOTEIsNull: Boolean read GetLOTEIsNull write SetLOTEIsNull; + property VISIBLE: SmallInt read GetVISIBLEValue write SetVISIBLEValue; + property VISIBLEIsNull: Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; + + public + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + + end; + +implementation + +uses Variants, uROBinaryHelpers; + +{ TMedicacionDataTableRules } +constructor TMedicacionDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TMedicacionDataTableRules.Destroy; +begin + inherited; +end; + +function TMedicacionDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_MedicacionID].AsInteger; +end; + +procedure TMedicacionDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_MedicacionID].AsInteger := aValue; +end; + +function TMedicacionDataTableRules.GetIDIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionID].IsNull; +end; + +procedure TMedicacionDataTableRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionID].AsVariant := Null; +end; + +function TMedicacionDataTableRules.GetID_PACIENTEValue: Integer; +begin + result := DataTable.Fields[idx_MedicacionID_PACIENTE].AsInteger; +end; + +procedure TMedicacionDataTableRules.SetID_PACIENTEValue(const aValue: Integer); +begin + DataTable.Fields[idx_MedicacionID_PACIENTE].AsInteger := aValue; +end; + +function TMedicacionDataTableRules.GetID_PACIENTEIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionID_PACIENTE].IsNull; +end; + +procedure TMedicacionDataTableRules.SetID_PACIENTEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionID_PACIENTE].AsVariant := Null; +end; + +function TMedicacionDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_MedicacionREFERENCIA].AsString; +end; + +procedure TMedicacionDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_MedicacionREFERENCIA].AsString := aValue; +end; + +function TMedicacionDataTableRules.GetREFERENCIAIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionREFERENCIA].IsNull; +end; + +procedure TMedicacionDataTableRules.SetREFERENCIAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionREFERENCIA].AsVariant := Null; +end; + +function TMedicacionDataTableRules.GetNOMBREValue: String; +begin + result := DataTable.Fields[idx_MedicacionNOMBRE].AsString; +end; + +procedure TMedicacionDataTableRules.SetNOMBREValue(const aValue: String); +begin + DataTable.Fields[idx_MedicacionNOMBRE].AsString := aValue; +end; + +function TMedicacionDataTableRules.GetNOMBREIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionNOMBRE].IsNull; +end; + +procedure TMedicacionDataTableRules.SetNOMBREIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionNOMBRE].AsVariant := Null; +end; + +function TMedicacionDataTableRules.GetFECHA_DESDEValue: DateTime; +begin + result := DataTable.Fields[idx_MedicacionFECHA_DESDE].AsDateTime; +end; + +procedure TMedicacionDataTableRules.SetFECHA_DESDEValue(const aValue: DateTime); +begin + DataTable.Fields[idx_MedicacionFECHA_DESDE].AsDateTime := aValue; +end; + +function TMedicacionDataTableRules.GetFECHA_DESDEIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionFECHA_DESDE].IsNull; +end; + +procedure TMedicacionDataTableRules.SetFECHA_DESDEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionFECHA_DESDE].AsVariant := Null; +end; + +function TMedicacionDataTableRules.GetFECHA_HASTAValue: DateTime; +begin + result := DataTable.Fields[idx_MedicacionFECHA_HASTA].AsDateTime; +end; + +procedure TMedicacionDataTableRules.SetFECHA_HASTAValue(const aValue: DateTime); +begin + DataTable.Fields[idx_MedicacionFECHA_HASTA].AsDateTime := aValue; +end; + +function TMedicacionDataTableRules.GetFECHA_HASTAIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionFECHA_HASTA].IsNull; +end; + +procedure TMedicacionDataTableRules.SetFECHA_HASTAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionFECHA_HASTA].AsVariant := Null; +end; + +function TMedicacionDataTableRules.GetTIPOValue: String; +begin + result := DataTable.Fields[idx_MedicacionTIPO].AsString; +end; + +procedure TMedicacionDataTableRules.SetTIPOValue(const aValue: String); +begin + DataTable.Fields[idx_MedicacionTIPO].AsString := aValue; +end; + +function TMedicacionDataTableRules.GetTIPOIsNull: boolean; +begin + result := DataTable.Fields[idx_MedicacionTIPO].IsNull; +end; + +procedure TMedicacionDataTableRules.SetTIPOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_MedicacionTIPO].AsVariant := Null; +end; + + +{ TMedicacion_DetallesDataTableRules } +constructor TMedicacion_DetallesDataTableRules.Create(aDataTable: TDADataTable); +begin + inherited; +end; + +destructor TMedicacion_DetallesDataTableRules.Destroy; +begin + inherited; +end; + +function TMedicacion_DetallesDataTableRules.GetIDValue: Integer; +begin + result := DataTable.Fields[idx_Medicacion_DetallesID].AsInteger; +end; + +procedure TMedicacion_DetallesDataTableRules.SetIDValue(const aValue: Integer); +begin + DataTable.Fields[idx_Medicacion_DetallesID].AsInteger := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetIDIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesID].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesID].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetID_MEDICACIONValue: Integer; +begin + result := DataTable.Fields[idx_Medicacion_DetallesID_MEDICACION].AsInteger; +end; + +procedure TMedicacion_DetallesDataTableRules.SetID_MEDICACIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_Medicacion_DetallesID_MEDICACION].AsInteger := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetID_MEDICACIONIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesID_MEDICACION].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetID_MEDICACIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesID_MEDICACION].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetPOSICIONValue: Integer; +begin + result := DataTable.Fields[idx_Medicacion_DetallesPOSICION].AsInteger; +end; + +procedure TMedicacion_DetallesDataTableRules.SetPOSICIONValue(const aValue: Integer); +begin + DataTable.Fields[idx_Medicacion_DetallesPOSICION].AsInteger := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetPOSICIONIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesPOSICION].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetPOSICIONIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesPOSICION].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetTIPO_DETALLEValue: String; +begin + result := DataTable.Fields[idx_Medicacion_DetallesTIPO_DETALLE].AsString; +end; + +procedure TMedicacion_DetallesDataTableRules.SetTIPO_DETALLEValue(const aValue: String); +begin + DataTable.Fields[idx_Medicacion_DetallesTIPO_DETALLE].AsString := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetTIPO_DETALLEIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesTIPO_DETALLE].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetTIPO_DETALLEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesTIPO_DETALLE].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetID_ARTICULOValue: Integer; +begin + result := DataTable.Fields[idx_Medicacion_DetallesID_ARTICULO].AsInteger; +end; + +procedure TMedicacion_DetallesDataTableRules.SetID_ARTICULOValue(const aValue: Integer); +begin + DataTable.Fields[idx_Medicacion_DetallesID_ARTICULO].AsInteger := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetID_ARTICULOIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesID_ARTICULO].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetID_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesID_ARTICULO].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetREFERENCIAValue: String; +begin + result := DataTable.Fields[idx_Medicacion_DetallesREFERENCIA].AsString; +end; + +procedure TMedicacion_DetallesDataTableRules.SetREFERENCIAValue(const aValue: String); +begin + DataTable.Fields[idx_Medicacion_DetallesREFERENCIA].AsString := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetREFERENCIAIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesREFERENCIA].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetREFERENCIAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesREFERENCIA].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetCONCEPTOValue: String; +begin + result := DataTable.Fields[idx_Medicacion_DetallesCONCEPTO].AsString; +end; + +procedure TMedicacion_DetallesDataTableRules.SetCONCEPTOValue(const aValue: String); +begin + DataTable.Fields[idx_Medicacion_DetallesCONCEPTO].AsString := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetCONCEPTOIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesCONCEPTO].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesCONCEPTO].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetCANTIDADValue: Currency; +begin + result := DataTable.Fields[idx_Medicacion_DetallesCANTIDAD].AsCurrency; +end; + +procedure TMedicacion_DetallesDataTableRules.SetCANTIDADValue(const aValue: Currency); +begin + DataTable.Fields[idx_Medicacion_DetallesCANTIDAD].AsCurrency := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetCANTIDADIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesCANTIDAD].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetCANTIDADIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesCANTIDAD].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetPOSOLOGIAValue: String; +begin + result := DataTable.Fields[idx_Medicacion_DetallesPOSOLOGIA].AsString; +end; + +procedure TMedicacion_DetallesDataTableRules.SetPOSOLOGIAValue(const aValue: String); +begin + DataTable.Fields[idx_Medicacion_DetallesPOSOLOGIA].AsString := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetPOSOLOGIAIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesPOSOLOGIA].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetPOSOLOGIAIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesPOSOLOGIA].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetFORMA_COLORValue: String; +begin + result := DataTable.Fields[idx_Medicacion_DetallesFORMA_COLOR].AsString; +end; + +procedure TMedicacion_DetallesDataTableRules.SetFORMA_COLORValue(const aValue: String); +begin + DataTable.Fields[idx_Medicacion_DetallesFORMA_COLOR].AsString := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetFORMA_COLORIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesFORMA_COLOR].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetFORMA_COLORIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesFORMA_COLOR].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetLOTEValue: String; +begin + result := DataTable.Fields[idx_Medicacion_DetallesLOTE].AsString; +end; + +procedure TMedicacion_DetallesDataTableRules.SetLOTEValue(const aValue: String); +begin + DataTable.Fields[idx_Medicacion_DetallesLOTE].AsString := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetLOTEIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesLOTE].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetLOTEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesLOTE].AsVariant := Null; +end; + +function TMedicacion_DetallesDataTableRules.GetVISIBLEValue: SmallInt; +begin + result := DataTable.Fields[idx_Medicacion_DetallesVISIBLE].AsSmallInt; +end; + +procedure TMedicacion_DetallesDataTableRules.SetVISIBLEValue(const aValue: SmallInt); +begin + DataTable.Fields[idx_Medicacion_DetallesVISIBLE].AsSmallInt := aValue; +end; + +function TMedicacion_DetallesDataTableRules.GetVISIBLEIsNull: boolean; +begin + result := DataTable.Fields[idx_Medicacion_DetallesVISIBLE].IsNull; +end; + +procedure TMedicacion_DetallesDataTableRules.SetVISIBLEIsNull(const aValue: Boolean); +begin + if aValue then + DataTable.Fields[idx_Medicacion_DetallesVISIBLE].AsVariant := Null; +end; + + +initialization + RegisterDataTableRules(RID_Medicacion, TMedicacionDataTableRules); + RegisterDataTableRules(RID_Medicacion_Detalles, TMedicacion_DetallesDataTableRules); + +end. diff --git a/Source/Modulos/Medicaciones/Model/schMedicacionServer_Intf.pas b/Source/Modulos/Medicaciones/Model/schMedicacionServer_Intf.pas new file mode 100644 index 0000000..4a730f4 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/schMedicacionServer_Intf.pas @@ -0,0 +1,910 @@ +unit schMedicacionServer_Intf; + +interface + +uses + Classes, DB, SysUtils, uROClasses, uDADataTable, uDABusinessProcessor, FmtBCD, uROXMLIntf, schMedicacionClient_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_MedicacionDelta = '{A005475F-47E2-46A7-91C0-9A3F50703B8B}'; + RID_Medicacion_DetallesDelta = '{AA562D34-48F5-4B76-807C-3551B87B84CA}'; + +type + { IMedicacionDelta } + IMedicacionDelta = interface(IMedicacion) + ['{A005475F-47E2-46A7-91C0-9A3F50703B8B}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_PACIENTEValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldNOMBREValue : String; + function GetOldFECHA_DESDEValue : DateTime; + function GetOldFECHA_HASTAValue : DateTime; + function GetOldTIPOValue : String; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_PACIENTE : Integer read GetOldID_PACIENTEValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldFECHA_DESDE : DateTime read GetOldFECHA_DESDEValue; + property OldFECHA_HASTA : DateTime read GetOldFECHA_HASTAValue; + property OldTIPO : String read GetOldTIPOValue; + end; + + { TMedicacionBusinessProcessorRules } + TMedicacionBusinessProcessorRules = class(TDABusinessProcessorRules, IMedicacion, IMedicacionDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetIDIsNull: Boolean; virtual; + function GetOldIDValue: Integer; virtual; + function GetOldIDIsNull: Boolean; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetID_PACIENTEValue: Integer; virtual; + function GetID_PACIENTEIsNull: Boolean; virtual; + function GetOldID_PACIENTEValue: Integer; virtual; + function GetOldID_PACIENTEIsNull: Boolean; virtual; + procedure SetID_PACIENTEValue(const aValue: Integer); virtual; + procedure SetID_PACIENTEIsNull(const aValue: Boolean); virtual; + function GetREFERENCIAValue: String; virtual; + function GetREFERENCIAIsNull: Boolean; virtual; + function GetOldREFERENCIAValue: String; virtual; + function GetOldREFERENCIAIsNull: Boolean; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual; + function GetNOMBREValue: String; virtual; + function GetNOMBREIsNull: Boolean; virtual; + function GetOldNOMBREValue: String; virtual; + function GetOldNOMBREIsNull: Boolean; virtual; + procedure SetNOMBREValue(const aValue: String); virtual; + procedure SetNOMBREIsNull(const aValue: Boolean); virtual; + function GetFECHA_DESDEValue: DateTime; virtual; + function GetFECHA_DESDEIsNull: Boolean; virtual; + function GetOldFECHA_DESDEValue: DateTime; virtual; + function GetOldFECHA_DESDEIsNull: Boolean; virtual; + procedure SetFECHA_DESDEValue(const aValue: DateTime); virtual; + procedure SetFECHA_DESDEIsNull(const aValue: Boolean); virtual; + function GetFECHA_HASTAValue: DateTime; virtual; + function GetFECHA_HASTAIsNull: Boolean; virtual; + function GetOldFECHA_HASTAValue: DateTime; virtual; + function GetOldFECHA_HASTAIsNull: Boolean; virtual; + procedure SetFECHA_HASTAValue(const aValue: DateTime); virtual; + procedure SetFECHA_HASTAIsNull(const aValue: Boolean); virtual; + function GetTIPOValue: String; virtual; + function GetTIPOIsNull: Boolean; virtual; + function GetOldTIPOValue: String; virtual; + function GetOldTIPOIsNull: Boolean; virtual; + procedure SetTIPOValue(const aValue: String); virtual; + procedure SetTIPOIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; + property OldID : Integer read GetOldIDValue; + property OldIDIsNull : Boolean read GetOldIDIsNull; + property ID_PACIENTE : Integer read GetID_PACIENTEValue write SetID_PACIENTEValue; + property ID_PACIENTEIsNull : Boolean read GetID_PACIENTEIsNull write SetID_PACIENTEIsNull; + property OldID_PACIENTE : Integer read GetOldID_PACIENTEValue; + property OldID_PACIENTEIsNull : Boolean read GetOldID_PACIENTEIsNull; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property REFERENCIAIsNull : Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldREFERENCIAIsNull : Boolean read GetOldREFERENCIAIsNull; + property NOMBRE : String read GetNOMBREValue write SetNOMBREValue; + property NOMBREIsNull : Boolean read GetNOMBREIsNull write SetNOMBREIsNull; + property OldNOMBRE : String read GetOldNOMBREValue; + property OldNOMBREIsNull : Boolean read GetOldNOMBREIsNull; + property FECHA_DESDE : DateTime read GetFECHA_DESDEValue write SetFECHA_DESDEValue; + property FECHA_DESDEIsNull : Boolean read GetFECHA_DESDEIsNull write SetFECHA_DESDEIsNull; + property OldFECHA_DESDE : DateTime read GetOldFECHA_DESDEValue; + property OldFECHA_DESDEIsNull : Boolean read GetOldFECHA_DESDEIsNull; + property FECHA_HASTA : DateTime read GetFECHA_HASTAValue write SetFECHA_HASTAValue; + property FECHA_HASTAIsNull : Boolean read GetFECHA_HASTAIsNull write SetFECHA_HASTAIsNull; + property OldFECHA_HASTA : DateTime read GetOldFECHA_HASTAValue; + property OldFECHA_HASTAIsNull : Boolean read GetOldFECHA_HASTAIsNull; + property TIPO : String read GetTIPOValue write SetTIPOValue; + property TIPOIsNull : Boolean read GetTIPOIsNull write SetTIPOIsNull; + property OldTIPO : String read GetOldTIPOValue; + property OldTIPOIsNull : Boolean read GetOldTIPOIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + + { IMedicacion_DetallesDelta } + IMedicacion_DetallesDelta = interface(IMedicacion_Detalles) + ['{AA562D34-48F5-4B76-807C-3551B87B84CA}'] + { Property getters and setters } + function GetOldIDValue : Integer; + function GetOldID_MEDICACIONValue : Integer; + function GetOldPOSICIONValue : Integer; + function GetOldTIPO_DETALLEValue : String; + function GetOldID_ARTICULOValue : Integer; + function GetOldREFERENCIAValue : String; + function GetOldCONCEPTOValue : String; + function GetOldCANTIDADValue : Currency; + function GetOldPOSOLOGIAValue : String; + function GetOldFORMA_COLORValue : String; + function GetOldLOTEValue : String; + function GetOldVISIBLEValue : SmallInt; + + { Properties } + property OldID : Integer read GetOldIDValue; + property OldID_MEDICACION : Integer read GetOldID_MEDICACIONValue; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue; + property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldCANTIDAD : Currency read GetOldCANTIDADValue; + property OldPOSOLOGIA : String read GetOldPOSOLOGIAValue; + property OldFORMA_COLOR : String read GetOldFORMA_COLORValue; + property OldLOTE : String read GetOldLOTEValue; + property OldVISIBLE : SmallInt read GetOldVISIBLEValue; + end; + + { TMedicacion_DetallesBusinessProcessorRules } + TMedicacion_DetallesBusinessProcessorRules = class(TDABusinessProcessorRules, IMedicacion_Detalles, IMedicacion_DetallesDelta) + private + protected + { Property getters and setters } + function GetIDValue: Integer; virtual; + function GetIDIsNull: Boolean; virtual; + function GetOldIDValue: Integer; virtual; + function GetOldIDIsNull: Boolean; virtual; + procedure SetIDValue(const aValue: Integer); virtual; + procedure SetIDIsNull(const aValue: Boolean); virtual; + function GetID_MEDICACIONValue: Integer; virtual; + function GetID_MEDICACIONIsNull: Boolean; virtual; + function GetOldID_MEDICACIONValue: Integer; virtual; + function GetOldID_MEDICACIONIsNull: Boolean; virtual; + procedure SetID_MEDICACIONValue(const aValue: Integer); virtual; + procedure SetID_MEDICACIONIsNull(const aValue: Boolean); virtual; + function GetPOSICIONValue: Integer; virtual; + function GetPOSICIONIsNull: Boolean; virtual; + function GetOldPOSICIONValue: Integer; virtual; + function GetOldPOSICIONIsNull: Boolean; virtual; + procedure SetPOSICIONValue(const aValue: Integer); virtual; + procedure SetPOSICIONIsNull(const aValue: Boolean); virtual; + function GetTIPO_DETALLEValue: String; virtual; + function GetTIPO_DETALLEIsNull: Boolean; virtual; + function GetOldTIPO_DETALLEValue: String; virtual; + function GetOldTIPO_DETALLEIsNull: Boolean; virtual; + procedure SetTIPO_DETALLEValue(const aValue: String); virtual; + procedure SetTIPO_DETALLEIsNull(const aValue: Boolean); virtual; + function GetID_ARTICULOValue: Integer; virtual; + function GetID_ARTICULOIsNull: Boolean; virtual; + function GetOldID_ARTICULOValue: Integer; virtual; + function GetOldID_ARTICULOIsNull: Boolean; virtual; + procedure SetID_ARTICULOValue(const aValue: Integer); virtual; + procedure SetID_ARTICULOIsNull(const aValue: Boolean); virtual; + function GetREFERENCIAValue: String; virtual; + function GetREFERENCIAIsNull: Boolean; virtual; + function GetOldREFERENCIAValue: String; virtual; + function GetOldREFERENCIAIsNull: Boolean; virtual; + procedure SetREFERENCIAValue(const aValue: String); virtual; + procedure SetREFERENCIAIsNull(const aValue: Boolean); virtual; + function GetCONCEPTOValue: String; virtual; + function GetCONCEPTOIsNull: Boolean; virtual; + function GetOldCONCEPTOValue: String; virtual; + function GetOldCONCEPTOIsNull: Boolean; virtual; + procedure SetCONCEPTOValue(const aValue: String); virtual; + procedure SetCONCEPTOIsNull(const aValue: Boolean); virtual; + function GetCANTIDADValue: Currency; virtual; + function GetCANTIDADIsNull: Boolean; virtual; + function GetOldCANTIDADValue: Currency; virtual; + function GetOldCANTIDADIsNull: Boolean; virtual; + procedure SetCANTIDADValue(const aValue: Currency); virtual; + procedure SetCANTIDADIsNull(const aValue: Boolean); virtual; + function GetPOSOLOGIAValue: String; virtual; + function GetPOSOLOGIAIsNull: Boolean; virtual; + function GetOldPOSOLOGIAValue: String; virtual; + function GetOldPOSOLOGIAIsNull: Boolean; virtual; + procedure SetPOSOLOGIAValue(const aValue: String); virtual; + procedure SetPOSOLOGIAIsNull(const aValue: Boolean); virtual; + function GetFORMA_COLORValue: String; virtual; + function GetFORMA_COLORIsNull: Boolean; virtual; + function GetOldFORMA_COLORValue: String; virtual; + function GetOldFORMA_COLORIsNull: Boolean; virtual; + procedure SetFORMA_COLORValue(const aValue: String); virtual; + procedure SetFORMA_COLORIsNull(const aValue: Boolean); virtual; + function GetLOTEValue: String; virtual; + function GetLOTEIsNull: Boolean; virtual; + function GetOldLOTEValue: String; virtual; + function GetOldLOTEIsNull: Boolean; virtual; + procedure SetLOTEValue(const aValue: String); virtual; + procedure SetLOTEIsNull(const aValue: Boolean); virtual; + function GetVISIBLEValue: SmallInt; virtual; + function GetVISIBLEIsNull: Boolean; virtual; + function GetOldVISIBLEValue: SmallInt; virtual; + function GetOldVISIBLEIsNull: Boolean; virtual; + procedure SetVISIBLEValue(const aValue: SmallInt); virtual; + procedure SetVISIBLEIsNull(const aValue: Boolean); virtual; + + { Properties } + property ID : Integer read GetIDValue write SetIDValue; + property IDIsNull : Boolean read GetIDIsNull write SetIDIsNull; + property OldID : Integer read GetOldIDValue; + property OldIDIsNull : Boolean read GetOldIDIsNull; + property ID_MEDICACION : Integer read GetID_MEDICACIONValue write SetID_MEDICACIONValue; + property ID_MEDICACIONIsNull : Boolean read GetID_MEDICACIONIsNull write SetID_MEDICACIONIsNull; + property OldID_MEDICACION : Integer read GetOldID_MEDICACIONValue; + property OldID_MEDICACIONIsNull : Boolean read GetOldID_MEDICACIONIsNull; + property POSICION : Integer read GetPOSICIONValue write SetPOSICIONValue; + property POSICIONIsNull : Boolean read GetPOSICIONIsNull write SetPOSICIONIsNull; + property OldPOSICION : Integer read GetOldPOSICIONValue; + property OldPOSICIONIsNull : Boolean read GetOldPOSICIONIsNull; + property TIPO_DETALLE : String read GetTIPO_DETALLEValue write SetTIPO_DETALLEValue; + property TIPO_DETALLEIsNull : Boolean read GetTIPO_DETALLEIsNull write SetTIPO_DETALLEIsNull; + property OldTIPO_DETALLE : String read GetOldTIPO_DETALLEValue; + property OldTIPO_DETALLEIsNull : Boolean read GetOldTIPO_DETALLEIsNull; + property ID_ARTICULO : Integer read GetID_ARTICULOValue write SetID_ARTICULOValue; + property ID_ARTICULOIsNull : Boolean read GetID_ARTICULOIsNull write SetID_ARTICULOIsNull; + property OldID_ARTICULO : Integer read GetOldID_ARTICULOValue; + property OldID_ARTICULOIsNull : Boolean read GetOldID_ARTICULOIsNull; + property REFERENCIA : String read GetREFERENCIAValue write SetREFERENCIAValue; + property REFERENCIAIsNull : Boolean read GetREFERENCIAIsNull write SetREFERENCIAIsNull; + property OldREFERENCIA : String read GetOldREFERENCIAValue; + property OldREFERENCIAIsNull : Boolean read GetOldREFERENCIAIsNull; + property CONCEPTO : String read GetCONCEPTOValue write SetCONCEPTOValue; + property CONCEPTOIsNull : Boolean read GetCONCEPTOIsNull write SetCONCEPTOIsNull; + property OldCONCEPTO : String read GetOldCONCEPTOValue; + property OldCONCEPTOIsNull : Boolean read GetOldCONCEPTOIsNull; + property CANTIDAD : Currency read GetCANTIDADValue write SetCANTIDADValue; + property CANTIDADIsNull : Boolean read GetCANTIDADIsNull write SetCANTIDADIsNull; + property OldCANTIDAD : Currency read GetOldCANTIDADValue; + property OldCANTIDADIsNull : Boolean read GetOldCANTIDADIsNull; + property POSOLOGIA : String read GetPOSOLOGIAValue write SetPOSOLOGIAValue; + property POSOLOGIAIsNull : Boolean read GetPOSOLOGIAIsNull write SetPOSOLOGIAIsNull; + property OldPOSOLOGIA : String read GetOldPOSOLOGIAValue; + property OldPOSOLOGIAIsNull : Boolean read GetOldPOSOLOGIAIsNull; + property FORMA_COLOR : String read GetFORMA_COLORValue write SetFORMA_COLORValue; + property FORMA_COLORIsNull : Boolean read GetFORMA_COLORIsNull write SetFORMA_COLORIsNull; + property OldFORMA_COLOR : String read GetOldFORMA_COLORValue; + property OldFORMA_COLORIsNull : Boolean read GetOldFORMA_COLORIsNull; + property LOTE : String read GetLOTEValue write SetLOTEValue; + property LOTEIsNull : Boolean read GetLOTEIsNull write SetLOTEIsNull; + property OldLOTE : String read GetOldLOTEValue; + property OldLOTEIsNull : Boolean read GetOldLOTEIsNull; + property VISIBLE : SmallInt read GetVISIBLEValue write SetVISIBLEValue; + property VISIBLEIsNull : Boolean read GetVISIBLEIsNull write SetVISIBLEIsNull; + property OldVISIBLE : SmallInt read GetOldVISIBLEValue; + property OldVISIBLEIsNull : Boolean read GetOldVISIBLEIsNull; + + public + constructor Create(aBusinessProcessor: TDABusinessProcessor); override; + destructor Destroy; override; + + end; + +implementation + +uses + Variants, uROBinaryHelpers, uDAInterfaces; + +{ TMedicacionBusinessProcessorRules } +constructor TMedicacionBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TMedicacionBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TMedicacionBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID]; +end; + +function TMedicacionBusinessProcessorRules.GetIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID]); +end; + +function TMedicacionBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionID]; +end; + +function TMedicacionBusinessProcessorRules.GetOldIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionID]); +end; + +procedure TMedicacionBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID] := Null; +end; + +function TMedicacionBusinessProcessorRules.GetID_PACIENTEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID_PACIENTE]; +end; + +function TMedicacionBusinessProcessorRules.GetID_PACIENTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID_PACIENTE]); +end; + +function TMedicacionBusinessProcessorRules.GetOldID_PACIENTEValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionID_PACIENTE]; +end; + +function TMedicacionBusinessProcessorRules.GetOldID_PACIENTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionID_PACIENTE]); +end; + +procedure TMedicacionBusinessProcessorRules.SetID_PACIENTEValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID_PACIENTE] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetID_PACIENTEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionID_PACIENTE] := Null; +end; + +function TMedicacionBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionREFERENCIA]; +end; + +function TMedicacionBusinessProcessorRules.GetREFERENCIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionREFERENCIA]); +end; + +function TMedicacionBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionREFERENCIA]; +end; + +function TMedicacionBusinessProcessorRules.GetOldREFERENCIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionREFERENCIA]); +end; + +procedure TMedicacionBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionREFERENCIA] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetREFERENCIAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionREFERENCIA] := Null; +end; + +function TMedicacionBusinessProcessorRules.GetNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionNOMBRE]; +end; + +function TMedicacionBusinessProcessorRules.GetNOMBREIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionNOMBRE]); +end; + +function TMedicacionBusinessProcessorRules.GetOldNOMBREValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionNOMBRE]; +end; + +function TMedicacionBusinessProcessorRules.GetOldNOMBREIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionNOMBRE]); +end; + +procedure TMedicacionBusinessProcessorRules.SetNOMBREValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionNOMBRE] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetNOMBREIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionNOMBRE] := Null; +end; + +function TMedicacionBusinessProcessorRules.GetFECHA_DESDEValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_DESDE]; +end; + +function TMedicacionBusinessProcessorRules.GetFECHA_DESDEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_DESDE]); +end; + +function TMedicacionBusinessProcessorRules.GetOldFECHA_DESDEValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionFECHA_DESDE]; +end; + +function TMedicacionBusinessProcessorRules.GetOldFECHA_DESDEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionFECHA_DESDE]); +end; + +procedure TMedicacionBusinessProcessorRules.SetFECHA_DESDEValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_DESDE] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetFECHA_DESDEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_DESDE] := Null; +end; + +function TMedicacionBusinessProcessorRules.GetFECHA_HASTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_HASTA]; +end; + +function TMedicacionBusinessProcessorRules.GetFECHA_HASTAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_HASTA]); +end; + +function TMedicacionBusinessProcessorRules.GetOldFECHA_HASTAValue: DateTime; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionFECHA_HASTA]; +end; + +function TMedicacionBusinessProcessorRules.GetOldFECHA_HASTAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionFECHA_HASTA]); +end; + +procedure TMedicacionBusinessProcessorRules.SetFECHA_HASTAValue(const aValue: DateTime); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_HASTA] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetFECHA_HASTAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionFECHA_HASTA] := Null; +end; + +function TMedicacionBusinessProcessorRules.GetTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionTIPO]; +end; + +function TMedicacionBusinessProcessorRules.GetTIPOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionTIPO]); +end; + +function TMedicacionBusinessProcessorRules.GetOldTIPOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionTIPO]; +end; + +function TMedicacionBusinessProcessorRules.GetOldTIPOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_MedicacionTIPO]); +end; + +procedure TMedicacionBusinessProcessorRules.SetTIPOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionTIPO] := aValue; +end; + +procedure TMedicacionBusinessProcessorRules.SetTIPOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_MedicacionTIPO] := Null; +end; + + +{ TMedicacion_DetallesBusinessProcessorRules } +constructor TMedicacion_DetallesBusinessProcessorRules.Create(aBusinessProcessor: TDABusinessProcessor); +begin + inherited; +end; + +destructor TMedicacion_DetallesBusinessProcessorRules.Destroy; +begin + inherited; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldIDValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesID]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldIDIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesID]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetIDValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetIDIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetID_MEDICACIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_MEDICACION]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetID_MEDICACIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_MEDICACION]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldID_MEDICACIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesID_MEDICACION]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldID_MEDICACIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesID_MEDICACION]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetID_MEDICACIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_MEDICACION] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetID_MEDICACIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_MEDICACION] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSICION]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetPOSICIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSICION]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldPOSICIONValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesPOSICION]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldPOSICIONIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesPOSICION]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetPOSICIONValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSICION] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetPOSICIONIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSICION] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetTIPO_DETALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesTIPO_DETALLE]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetTIPO_DETALLEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesTIPO_DETALLE]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldTIPO_DETALLEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesTIPO_DETALLE]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldTIPO_DETALLEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesTIPO_DETALLE]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetTIPO_DETALLEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesTIPO_DETALLE] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetTIPO_DETALLEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesTIPO_DETALLE] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetID_ARTICULOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_ARTICULO]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetID_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_ARTICULO]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldID_ARTICULOValue: Integer; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesID_ARTICULO]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldID_ARTICULOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesID_ARTICULO]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetID_ARTICULOValue(const aValue: Integer); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_ARTICULO] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetID_ARTICULOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesID_ARTICULO] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesREFERENCIA]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetREFERENCIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesREFERENCIA]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldREFERENCIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesREFERENCIA]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldREFERENCIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesREFERENCIA]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetREFERENCIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesREFERENCIA] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetREFERENCIAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesREFERENCIA] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCONCEPTO]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCONCEPTO]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldCONCEPTOValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesCONCEPTO]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldCONCEPTOIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesCONCEPTO]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetCONCEPTOValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCONCEPTO] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetCONCEPTOIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCONCEPTO] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetCANTIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCANTIDAD]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetCANTIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCANTIDAD]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldCANTIDADValue: Currency; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesCANTIDAD]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldCANTIDADIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesCANTIDAD]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetCANTIDADValue(const aValue: Currency); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCANTIDAD] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetCANTIDADIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesCANTIDAD] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetPOSOLOGIAValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSOLOGIA]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetPOSOLOGIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSOLOGIA]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldPOSOLOGIAValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesPOSOLOGIA]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldPOSOLOGIAIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesPOSOLOGIA]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetPOSOLOGIAValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSOLOGIA] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetPOSOLOGIAIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesPOSOLOGIA] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetFORMA_COLORValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesFORMA_COLOR]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetFORMA_COLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesFORMA_COLOR]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldFORMA_COLORValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesFORMA_COLOR]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldFORMA_COLORIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesFORMA_COLOR]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetFORMA_COLORValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesFORMA_COLOR] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetFORMA_COLORIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesFORMA_COLOR] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetLOTEValue: String; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesLOTE]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetLOTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesLOTE]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldLOTEValue: String; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesLOTE]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldLOTEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesLOTE]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetLOTEValue(const aValue: String); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesLOTE] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetLOTEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesLOTE] := Null; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetVISIBLEValue: SmallInt; +begin + result := BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesVISIBLE]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetVISIBLEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesVISIBLE]); +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldVISIBLEValue: SmallInt; +begin + result := BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesVISIBLE]; +end; + +function TMedicacion_DetallesBusinessProcessorRules.GetOldVISIBLEIsNull: Boolean; +begin + result := VarIsNull(BusinessProcessor.CurrentChange.OldValueByName[fld_Medicacion_DetallesVISIBLE]); +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetVISIBLEValue(const aValue: SmallInt); +begin + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesVISIBLE] := aValue; +end; + +procedure TMedicacion_DetallesBusinessProcessorRules.SetVISIBLEIsNull(const aValue: Boolean); +begin + if aValue then + BusinessProcessor.CurrentChange.NewValueByName[fld_Medicacion_DetallesVISIBLE] := Null; +end; + + +initialization + RegisterBusinessProcessorRules(RID_MedicacionDelta, TMedicacionBusinessProcessorRules); + RegisterBusinessProcessorRules(RID_Medicacion_DetallesDelta, TMedicacion_DetallesBusinessProcessorRules); + +end. diff --git a/Source/Modulos/Medicaciones/Model/uBizDetallesMedicacion.pas b/Source/Modulos/Medicaciones/Model/uBizDetallesMedicacion.pas new file mode 100644 index 0000000..d0618c5 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/uBizDetallesMedicacion.pas @@ -0,0 +1,49 @@ +unit uBizDetallesMedicacion; + +interface + +uses + uDADataTable, schMedicacionClient_Intf; + +const + BIZ_CLIENT_DETALLES_MEDICACION = 'Client.DetallesMedicacion'; + + +type + IBizDetallesMedicacion = interface(IMedicacion_Detalles) + ['{B5ECBD8F-6311-4A96-843D-4ED4B00137BB}'] + end; + + TBizDetallesMedicacion = class(TMedicacion_DetallesDataTableRules, IBizDetallesMedicacion) + protected + procedure OnNewRecord(Sender: TDADataTable); override; + procedure BeforeInsert(Sender: TDADataTable); override; + end; + +implementation + +uses + DB; + +{ TBizDetallesMedicacion } + +procedure TBizDetallesMedicacion.BeforeInsert(Sender: TDADataTable); +var + AMasterTable : TDADataTable; +begin + inherited; + AMasterTable := DataTable.GetMasterDataTable; + if Assigned(AMasterTable) and (AMasterTable.State = dsInsert) then + AMasterTable.Post; +end; + +procedure TBizDetallesMedicacion.OnNewRecord(Sender: TDADataTable); +begin + inherited; + VISIBLE := 1; +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_DETALLES_MEDICACION, TBizDetallesMedicacion); + +end. diff --git a/Source/Modulos/Articulos/Model/uBizArticulosServer.pas b/Source/Modulos/Medicaciones/Model/uBizMedicacionServer.pas similarity index 55% rename from Source/Modulos/Articulos/Model/uBizArticulosServer.pas rename to Source/Modulos/Medicaciones/Model/uBizMedicacionServer.pas index 22ba357..72e4158 100644 --- a/Source/Modulos/Articulos/Model/uBizArticulosServer.pas +++ b/Source/Modulos/Medicaciones/Model/uBizMedicacionServer.pas @@ -1,38 +1,40 @@ -unit uBizArticulosServer; +unit uBizMedicacionServer; interface uses uDAInterfaces, uDADelta, uDABusinessProcessor, - schArticulosServer_Intf; + schMedicacionServer_Intf; const - BIZ_SERVER_ARTICULOS = 'Server.Articulos'; + BIZ_SERVER_MEDICACION = 'Server.Medicacion'; type - TBizArticulosServer = class(TArticulosBusinessProcessorRules) + TBizMedicacionServer = class(TMedicacionBusinessProcessorRules) private FReferenciaAutomatica : Boolean; function DarReferencia : String; function IncrementarReferencia : Boolean; protected - procedure BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta); override; - procedure AfterProcessChange(Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; + procedure BeforeProcessDelta(Sender: TDABusinessProcessor; + const aDelta: IDADelta); override; + procedure AfterProcessChange(Sender: TDABusinessProcessor; + aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); override; end; implementation uses - Variants, uDAClasses, Etiquetas_Intf, uROServer, SysUtils, uBusinessUtils, uROClasses, - uDataModuleServer, schArticulosClient_Intf; + Variants, uDAClasses, uReferenciasUtils, uBusinessUtils, uROClasses, uDataModuleServer, + schMedicacionClient_Intf, Etiquetas_Intf, uROServer, SysUtils, JclStrings; const - REF_ARTICULOS = 'REF_ARTICULOS'; - -{ TBizArticulosServer } + REF_MEDICACION = 'REF_MEDICACION'; -procedure TBizArticulosServer.AfterProcessChange( +{ TBizAlbaranClienteServer } + +procedure TBizMedicacionServer.AfterProcessChange( Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); begin @@ -51,9 +53,10 @@ begin end; end; -procedure TBizArticulosServer.BeforeProcessDelta( - Sender: TDABusinessProcessor; const aDelta: IDADelta); +procedure TBizMedicacionServer.BeforeProcessDelta(Sender: TDABusinessProcessor; const aDelta: IDADelta); begin + inherited; + FReferenciaAutomatica := False; case Sender.CurrentChange.ChangeType of @@ -68,34 +71,40 @@ begin end; end; -function TBizArticulosServer.DarReferencia: String; +function TBizMedicacionServer.DarReferencia: String; var AReferenciasService : IsrvReferencias; Intf : IInterface; AClientID : TGUID; + ACodigoReferencia : String; begin + ACodigoReferencia := REF_MEDICACION; + CreateGUID(AClientID); GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf); AReferenciasService := Intf as IsrvReferencias; - Result := AReferenciasService.DarNuevaReferencia(REF_ARTICULOS, -1) + Result := AReferenciasService.DarNuevaReferencia(ACodigoReferencia, -1) end; -function TBizArticulosServer.IncrementarReferencia: Boolean; +function TBizMedicacionServer.IncrementarReferencia: Boolean; var AReferenciasService : IsrvReferencias; Intf : IInterface; AClientID : TGUID; + ACodigoReferencia : String; begin + ACodigoReferencia := REF_MEDICACION; + CreateGUID(AClientID); GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf); AReferenciasService := Intf as IsrvReferencias; - Result := AReferenciasService.IncrementarValorReferencia(REF_ARTICULOS, Self.REFERENCIA, -1) + Result := AReferenciasService.IncrementarValorReferencia(ACodigoReferencia, Self.REFERENCIA, -1) end; initialization - RegisterBusinessProcessorRules(BIZ_SERVER_ARTICULOS, TBizArticulosServer); + RegisterBusinessProcessorRules(BIZ_SERVER_MEDICACION, TBizMedicacionServer); end. diff --git a/Source/Modulos/Medicaciones/Model/uBizMedicaciones.pas b/Source/Modulos/Medicaciones/Model/uBizMedicaciones.pas new file mode 100644 index 0000000..752e292 --- /dev/null +++ b/Source/Modulos/Medicaciones/Model/uBizMedicaciones.pas @@ -0,0 +1,189 @@ +unit uBizMedicaciones; + +interface + +uses + Classes, uDADataTable, schMedicacionClient_Intf, uDBSelectionListUtils, + uBizContactos, uBizDetallesMedicacion, uROClasses, uDAInterfaces; + +const + BIZ_CLIENT_MEDICACION = 'Client.Medicacion'; + +type + IBizMedicacion = interface(IMedicacion) + ['{82A23629-60CC-4787-B9BC-2DB2A23A0653}'] + + procedure SetPaciente(AValue : IBizPaciente); + function GetPaciente : IBizPaciente; + property Paciente : IBizPaciente read GetPaciente write SetPaciente; + + // Esta propidad es para que el controlador pueda acceder directamente + // a la propiedad Paciente + procedure _SetPaciente(AValue : IBizPaciente); + function _GetPaciente : IBizPaciente; + property _Paciente : IBizPaciente read _GetPaciente write _SetPaciente; + + function GetDetalles: IBizDetallesMedicacion; + procedure SetDetalles(Value: IBizDetallesMedicacion); + property Detalles: IBizDetallesMedicacion read GetDetalles write SetDetalles; + + function EsNuevo : Boolean; + end; + + TBizMedicacion = class(TMedicacionDataTableRules, IBizMedicacion, ISeleccionable) + protected + FSeleccionableInterface : ISeleccionable; + FPaciente : IBizPaciente; + FDetalles : IBizDetallesMedicacion; + FDetallesLink : TDADataSource; + + procedure SetPaciente(AValue : IBizPaciente); + function GetPaciente : IBizPaciente; + + procedure _SetPaciente(AValue : IBizPaciente); + function _GetPaciente : IBizPaciente; + + function GetDetalles: IBizDetallesMedicacion; + procedure SetDetalles(Value: IBizDetallesMedicacion); + + procedure SetFECHA_DESDEValue(const aValue: TDateTime); override; + procedure SetFECHA_HASTAValue(const aValue: TDateTime); override; + + procedure OnNewRecord(Sender: TDADataTable); override; + procedure IniciarValoresMedicacionNueva; + + public + function EsNuevo : Boolean; + property Paciente : IBizPaciente read GetPaciente write SetPaciente; + property _Paciente : IBizPaciente read _GetPaciente write _SetPaciente; + property Detalles: IBizDetallesMedicacion read GetDetalles write SetDetalles; + + property SeleccionableInterface : ISeleccionable read FSeleccionableInterface + write FSeleccionableInterface implements ISeleccionable; + + constructor Create(aDataTable: TDADataTable); override; + destructor Destroy; override; + end; + +implementation + +uses + SysUtils, Variants, uDataModuleConfiguracion, uDataModuleUsuarios, + uDataTableUtils, DateUtils, uDateUtils, DB, uFactuGES_App; + +{ TBizAlbaranPaciente } + +constructor TBizMedicacion.Create(aDataTable: TDADataTable); +begin + inherited; + FPaciente := Nil; + FDetallesLink := TDADataSource.Create(NIL); + FDetallesLink.DataTable := aDataTable; + FSeleccionableInterface := TSeleccionable.Create(aDataTable); +end; + +destructor TBizMedicacion.Destroy; +begin + FPaciente := NIL; + FDetalles := NIL; + FDetallesLink.Free; + + FSeleccionableInterface := NIL; + inherited; +end; + +function TBizMedicacion.EsNuevo: Boolean; +begin + Result := (ID < 0); +end; + +function TBizMedicacion.GetPaciente: IBizPaciente; +begin + Result := FPaciente; +end; + +procedure TBizMedicacion.IniciarValoresMedicacionNueva; +begin + FECHA_DESDE := DateOf(Date); + FECHA_HASTA := DateOf(Date) + 6; + REFERENCIA := ''; +end; + +function TBizMedicacion.GetDetalles: IBizDetallesMedicacion; +begin + Result := FDetalles; +end; + +procedure TBizMedicacion.OnNewRecord(Sender: TDADataTable); +begin + inherited; + IniciarValoresMedicacionNueva; +end; + +procedure TBizMedicacion.SetPaciente(AValue: IBizPaciente); +var + bEnEdicion : Boolean; + +begin + FPaciente := AValue; + + if Assigned(FPaciente) then + begin + if not FPaciente.DataTable.Active then + FPaciente.DataTable.Active := True; + + if ID_Paciente <> FPaciente.ID then + begin + bEnEdicion := (DataTable.State in dsEditModes); + if not bEnEdicion then + DataTable.Edit; + + ID_PACIENTE := FPaciente.ID; + + DataTable.Post; //Muy importante ya que es necesario hacer un post de la cabecera antes de añadir detalles + //si se quita el id de la cabecera y los detalles se desincroniza + if bEnEdicion then + DataTable.Edit; + end; + end; +end; + +procedure TBizMedicacion.SetDetalles(Value: IBizDetallesMedicacion); +begin + FDetalles := Value; + EnlazarMaestroDetalle(FDetallesLink, FDetalles); +end; + +procedure TBizMedicacion.SetFECHA_DESDEValue(const aValue: TDateTime); +begin + if EsFechaVacia(aValue) then + SetFieldNull(DataTable, fld_MedicacionFECHA_DESDE) + else + inherited; +end; + +procedure TBizMedicacion.SetFECHA_HASTAValue(const aValue: TDateTime); +begin + if EsFechaVacia(aValue) then + SetFieldNull(DataTable, fld_MedicacionFECHA_HASTA) + else + inherited; +end; + +function TBizMedicacion._GetPaciente: IBizPaciente; +begin + Result := FPaciente; +end; + +procedure TBizMedicacion._SetPaciente(AValue: IBizPaciente); +begin + FPaciente := AValue; +end; + +initialization + RegisterDataTableRules(BIZ_CLIENT_MEDICACION, TBizMedicacion); + +finalization + +end. + diff --git a/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.bdsproj b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.bdsproj new file mode 100644 index 0000000..f846d1b --- /dev/null +++ b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.bdsproj @@ -0,0 +1,497 @@ + + + + + + + + + + + + Medicaciones_plugin.dpk + + + 7.0 + + + 8 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 1 + 1 + 1 + True + True + WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; + + False + + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + False + False + False + True + True + True + True + True + True + + + + 3 + 0 + False + 1 + False + False + False + 16384 + 1048576 + 4194304 + + + + + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + + + + False + + + + + + False + + + True + False + + + + $00000000 + + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + RemObjects Pascal Script - RemObjects SDK 3.0 Integration + EurekaLog 5.1.9 + + + + diff --git a/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.dpk b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.dpk new file mode 100644 index 0000000..23661d4 --- /dev/null +++ b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.dpk @@ -0,0 +1,40 @@ +package Medicaciones_plugin; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + Base, + GUIBase, + ApplicationBase, + Contactos_view, + Articulos_view, + Medicaciones_controller, + Medicaciones_view; + +contains + uPluginMedicaciones in 'uPluginMedicaciones.pas' {PluginMedicaciones}; + +end. + \ No newline at end of file diff --git a/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.dproj b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.dproj new file mode 100644 index 0000000..136bb1b --- /dev/null +++ b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.dproj @@ -0,0 +1,549 @@ + + + + {e7d762a1-3a15-46b2-bd5b-3821d13b8347} + Medicaciones_plugin.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Medicaciones_plugin.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + RemObjects Pascal Script - RemObjects SDK 3.0 Integration + EurekaLog 5.1.9 + Medicaciones_plugin.dpk + + + + + MainSource + + + + + + + + + +
PluginMedicaciones
+
+
+
+ diff --git a/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.rc b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.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/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.res b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/Source/Modulos/Medicaciones/Plugin/Medicaciones_plugin.res differ diff --git a/Source/Modulos/Medicaciones/Plugin/uPluginMedicaciones.dfm b/Source/Modulos/Medicaciones/Plugin/uPluginMedicaciones.dfm new file mode 100644 index 0000000..4b2ae84 --- /dev/null +++ b/Source/Modulos/Medicaciones/Plugin/uPluginMedicaciones.dfm @@ -0,0 +1,490 @@ +object PluginMedicaciones: TPluginMedicaciones + OldCreateOrder = True + DefaultAction = actMedicaciones + Description = 'Ventas' + ModuleMenu = MainMenu + ModuleName = 'Medicaciones de pacientes' + SmallImages = SmallImages + LargeImages = LargeImages + Author = 'Rodax Software' + Version = '1.0.0' + Height = 252 + Width = 401 + object LargeImages: TPngImageList + Height = 24 + Width = 24 + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + 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 + F73EE77CFEFC2FF784F3FB25D29F330000026A4944415478DA63FCFFFF3F032D + 0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601EBC0 + 7C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E62DDD + 84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C802E + 06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F605803F1 + 1FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB4E10 + 6701CCDBA480075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3C45B + 802BA86096C3E4616AE7E7EB32EC387486721F4C2C7064F8CA7E8E41F8D527BC + BE7AF2D589341FC02C6D2BE76788F0FBC520C1F883E1D74F0608FEC1C0F01346 + 03F1C9134458800DCC4C6464884D85B0F119CE2FC1C070F52E160B223C4DC1B9 + 139B0F62DE3B31B008E28FEC3FEF1186638D8350371370EEC4E60364D783C0A7 + F71017C330C80767CE4082C6CE701FC3A1F3587C10E46CC4E0567D04A70520CD + 8400C87010C06A819FA3018357ED31AC1A414184EC0310F8FB17182CBF19187E + FF02FAE23B03C38D1B0839AC1678DBE9C1CB155819032A7B40F49E7A51140B40 + 86FE061AFEE71784BD660D07839AC60F0636163C167858EB60351C54A1EC6F12 + C3880390C1201F80F0966D1C0C52F2100BD85819184E5CC662818BA51656C341 + F4A15609140BDEBE44180EB268E71E0E061169880557EE383134AFDACB886181 + BDA93AD8B07F7F11C532CCC2E39DD2700B4006BE7B85301C1454FB0E7230F089 + FF6078F0046238D6646A63A40A2E11B101D67D9E600B664EE5C09982DEFDB662 + D8FA491D7759D43B65214ECDF6BCFB187818A5F1265190E12000B300003BBC36 + ACFF3E80210000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F80000001974455874536F6674776172650041646F626520496D616765526561 + 647971C9653C000003294944415478DAB5956B4814511886DFD15557DD753531 + 352B495129723149222DAF61A921249A4216F4C37F81194445445028F5A32088 + 2E109991F443BAAB98B7F55A9AA1A549B4D2C5CAD2557775BDB4D7D9CE991A2F + EDACED62BD70383373CE7CCF79BF73E61BC662B1E07F8A590828AFECFC67B47D + BBB730820032E07030B39925CDC2F554717B0AD15D73C53660FB11C5A200AD17 + 936C065F38B7FA6C2CCAEE2B70B3FCF1D20047569E78B419A28810345DAB81A6 + F900EE3C6AFE3B40C8C19FCFA81ACEC523E5780BDA144AEE7EAC311F772B5B97 + E7C0C2925C936622ABA7D72696FDBD072C775D51DDEEB8037B445D7CA9C9C5C3 + DA0EFB00BC6D47F4A92A074F1A5ED80758EAE40889BE73BB488EAAA62EFB01B6 + 52C5C3F9717E6E6961246A5A5E2EDFC1A5C3499871EB86AF4ABBA4ABAF33C98E + 39E0A125C764C8CB342080D1C1A0C7AFA603F47C4F5A67871D00215D3FC82077 + 2F3055EF85498B3B64892360D8F9E0BA5940592581DB900903E2506B405E5A0C + F7750A39C8D72443E403F8770119AC044C50382A0CC3D0047F83B333E0A27582 + 4F8F3BBC4619F4497DA15E1B680DC849DDCC7D9D420EE8EAF71700E33D80D30D + 406C60200E5C87B7C15A98246AB82AC4981CD6A37B4D28E4D94AB4F408A4282B + 251AA927DB6C02685EA9BC54E3481BEC87C86C02239561624A8FA9193D7A42C2 + 1195F58E9B2308C84C8A42FAA96782F9A729A20E780D5493D271CB09D37A167A + 33C0CAC9C39DF3E382808C78F95C5DE16B0CAD3DB4AF3FED3707508F3318BE17 + 0453BD8AACDC001D014C93CD764907649B9600EC8ADB28189CFE501467567200 + DD2439450FC2607863C6C7FE0FC07AF232D9FCEF75E4341188349BA43012E8E8 + 1300ECD8BA413038ED5B8A033880A6DC1BA27E5FF4BE7E0F832F105C4436DD03 + A82B75817BAF1116B280B1383956B4F7BA5901126222B860AC79BE2CF3C0E7E7 + 833880AAC40F43DD1350CD1AB1FA10E0190A188D4063B318520F1DB4B5FEF0FC + 3C324222175B01B64587711551482E8D691CA0F4842BFC5E19C83917E1875CB4 + 688EDA188B2A6D040A9E5E4D259147AD00172E97C19612A48D90304160881B6F + E520A657F9C128932C9A43835311004323FF04D4D3607A0FD2DBC40000000049 + 454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 16 + Bitmap = {} + end + object ModuleActionList: TActionList + Images = LargeImages + Left = 40 + Top = 72 + object actMedicaciones: TAction + Category = 'Archivo' + Caption = 'Medicaciones' + ImageIndex = 0 + OnExecute = actMedicacionesExecute + end + end + object MainMenu: TMainMenu + Images = LargeImages + Left = 40 + Top = 16 + object Compras1: TMenuItem + Caption = 'Archivo' + object Medicaciones1: TMenuItem + Tag = 210 + Action = actMedicaciones + 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 + F73EE77CFEFC2FF784F3FB25D29F33000001744944415478DA63FCFFFF3FC394 + C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F19ACFDF319CEED + 98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC5BBA09D3007CE0 + D7EFBF609B4178C98683D80D40770136B0AED69461E59623B80D80391B04FE01 + E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D760CCEE587E036 + 07359F66585A6AC0B069CF49FC06C06CFE7CFB30C3CBC5B1F87CE48261C0C15E + 0706FBE20360D999EC710CCA0D350CECECE9183A7FFE9CC9302FB18501C30090 + B3617E7ED6A6C6A0D5FE18AC180E7EFC00E2EF0CB3771930306F4F45189011E5 + C6E0587A10C516900B500C0069FEF00E62C02927540392C39CC1B6C2423DA4F5 + 0CAA0130CD60037E32CCBE15846A405C90034A9445769E4718F0712242F3870F + 1017BC4A413520CA0FE177B841338C20063CAC47688679E15719AA01A15ED60C + ABB71D450903A76BA9E05898BD4A1E6B1CA218004A18E8409BF70D8315EB719C + 89C05E9EC10500D1295EA9BD5461080000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000001974455874536F6674776172650041646F626520496D616765526561 + 647971C9653C000002034944415478DA63FCFFFF3FC394C53BFE33900172623D + 1819610600394469FAF3F71FC3EF3F7F19ACFDF319CEED98866A806DD17E14C5 + 87FB1CC134B2F8AE761B86B9ABF632CC5BBA09D3007CE0D7EFBF609B4178C986 + 83D80D40770136B0AED69461E59623B80D80391B04FE01E5FEFCF907B7D9B7FE + 04C3AA4A6386B53B8EE13700E692BD9D760CCEE587E03607359F66585A6AC0B0 + 69CF49FC06C06CFE7CFB30C3CBC5B1F87CE48261C0C15E0706FBE20360D999EC + 710C5CD2D60C3C37FF333C0DCF66D0B7B1038B7F7D709FE14E4B3CC385339718 + 300C00391BE6E7676D6A0C5C6FCD19642EEF60782BABC1F035CF9581E3D53B86 + A78DEB186E73A9327C927A88302023CA8DC1B1F4208AFB402E502EB9C0702FC5 + 9A81E3F22D86DF02620CAF9EBF6360B6546538EBD7C3C0BC230D6140729833D8 + 5658A887B49E011BA0D5FE98E1C1A54686CF213D0C1FDE7D61F8CCC8C2603A2D + 8861E58F4406E6EDA90803E2821C50A22CB2F33CD800F9D28B0C379AA2197EAF + 3BC8F0919191E1D3BB9F0C2C527C0C4FF36730301F29461810E587F03BDCA019 + 460CA2FFBC18DEEDDCC870F7CD6706E33667861F4F5E331CE9BFC0F0894B8A81 + C1E83BC280502F6B86D5DB8EA28481D3B55486FFFBFE313CB8FE8CE1715C25C3 + 1F73482C307CFEC4C0BC643A03E39B3308034009031D68F3BE61B07DB28781E9 + E36F86DF060298F2BFBE4700003F4A71F77ECF59220000000049454E44AE4260 + 82} + 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 + F73EE77CFEFC2FF784F3FB25D29F33000003314944415478DABDD6494C135118 + 00E0BF05B489895E342C1E24C110A3D052281704840A14D0044414306AF460BC + 1835B8C478D0448D9EF4E48646148480AC65B1B4D0955228B2A9802146130FC4 + E845128D11289DE7BC99B67499373395C4BF7D999937F3E69BFF7F339D4A1042 + F03F43E20F765B3F301BB8CFDB02B6E90FF3F5AC33FB992F82086904277048A3 + 9410C12ECB2C2AC9DDF5CF574FD1E7A228046E37056E8A82CCD2F330A97F4806 + B5E61954AA4E82AC6A4BC8C9ECF7728950F0F186DBBBA1B6D50CB58DDDE2C070 + 038305AA4430FF5A01EB633DFC1C3A01751D1661B0D3348D0EEC4D2666C8D56F + BB9B037B2E5861C8F2D1D7B730781C1AB43661B0C3F81E95E5C9456786E7C9ED + 46CCD27FEE705F73AF5D186C37BE4307F3149C99880D9CE937E31168D5394480 + 033498CF82FE250A37BEF65741BB7E58186CEB7F8BCA0B521890EFAEE40B3CB6 + E9B212B4034E61B0D53085E80775CD60C34505F498DE08832D8649745893EA03 + F9E6D27B41FEC778C7D455CB41671913065FE927504561DA9A337C763609FAED + 1322C03E1A2C5A3BF8E4CC4E3039A684C1E6BE715459A4E22DA9FF85D49C9440 + 3831FF5B1D0836E9C65055713A6F86887EB0255229831D3B15BA7F79C9D31601 + 96BC4BBA8D3AB9C0D763A8A258C5FC54F195B4FE5C0C6C4FF80E292AF1D8A618 + 80D9CF416063EF283D87E9907BC9462CE9D1057A50243D17EB00A4EB85CBB8B2 + B08A85CC2106CB0BD220EF8A9D9821A9943893A53F9EA5A7E10CC7C7D952662B + CD3038159461438F1395E5A782E6AA8317C4270827308623047CD93D824AD44A + D8776D84381897942B436FB8DD74195D00AE6536E3B9B9D57D9CE0FE1C05F72B + 8762FF3E98AE6F21821871D1D8CA32BBDED62683C41D8BB02E9200D6770DA3E2 + 6C0511C3DBD61BD19C603086B3D476C9203E8106A3804143C03AAD031566C989 + 18DEB6DF8A0D01B930DC7A753288DBC6668851E77410F8A273086932E5440C97 + 7AF84E5C0048C2F0BAC12883CD5B5970E6931A6EB6982401E0F30E3BCACF4866 + DE65A4883217F9403E0CF79B6D32D818BD085FE6590C8F09006BDB07D1FDA7CD + BCB7F8E9D8470C58F34026E28100F8E1CAF06121A098A8AE4C401BA878D1C7FB + 6338FE02EAE8B9B9299A515A0000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D494844520000001C0000001C0806000000720DDF + 940000001974455874536F6674776172650041646F626520496D616765526561 + 647971C9653C000004754944415478DABD967B4C53571CC7BF17280FE521640D + 38F7706026228F01A29B8883CA4390E8C6DC9465EAB664CBFE58F6077B645B96 + BD62E65FEEBF2D99C974B81A51C6530429A5500A88838A22BE16962876A53640 + CBA3D207EDD9B9078A147A5B18C97EF79EDC7BCEBDF77C7EDFDFF99D7B0E4708 + C1FF69DC7C606DEB2D56E1DB9CC5A54E0F76CEDEB3E7EC24F0F5F1750B783D2F + 991304D6B4DC24FBB236FF67EF1DB42F8783C06E77C0EE7020A3F85DA8ABA4C2 + C06A453F7945128F8C9296459DA97ECC12042D7CBFF187749C2C57E054A57469 + C0E51A0FF4DB188D69A316ED657D186F7F1BA5952DDE8155CD37C8ABBB120415 + BA6B571ECFC4CB1FB7A2BDE5AFB93643DB6148AB95DE8195F23E52949DB86465 + FC38D9ED845DE78F1DDF5656A7F20EAC905F27AF6527B955B254E395EAE46FA2 + BCBE6309C0260ACC9901CE0FD1724D2B2B46C5A54EEFC03F64D7C8FEDC1718D0 + 53567A32FEDBB39F25A3BAA9CB3BB0BCB197D089BA62A0F493245C68FED33BF0 + 7CE355F2465ECA1CD0D3583A1D9AFF8EF39BD29244D4B7747B079EBBA4260776 + A7AE58E1AF1FC543A6522F01D84081F92B079EF8300ECD1DBDDE81650D3DE460 + FE168F21753A62D6EB213F1C8B69BB1DBAA7C6C17970C27FD81FE19A20DC0A7D + CE1578B6BE9B1417A4795448E8C4360D0E62A83006D11B62E1885C8FFBC15D58 + 5B340A8E52AD96D96206C61F02267924A6FB0946747AF4C7252C005EEC26070A + B6B05F95A790D6EE588DDCC9477475A00E8447C12F2611F7C3D410178EC0669D + 81E99522F8744660627014A3561B4C7B80DB66892BF04CDD153A8669C8FA5429 + 18D2B70C1216BE783510E7A09DDBE92FCE3F08C19B92A17C74170FD78F20F27A + 109ED1FA62C43009035D26CD7B296C4CB2780C79E0FEDC54647FAE1254F8CB3B + 1C0EBD0758C600DDB740B061066A7370088E7E1E5AA30E7E23668C4D5A600A04 + FE7909D07012EC4C56A0AD778142E9852E52949382BC2F3B3C0235A6196FFD4C + 66ECBAA94604B130E8FC622422F46F4D812D743583F1B608F87BED65B24F928C + 3D5F5F161C3F3EA4BC42A78D0D00F7BE027C6D8F61165A9E38044451BFEEDC79 + FCAE5B60616692FB25C731B37D68FE463C07E43F7D501382C9BA004C0D0FBB28 + B405D0706E0BC086172DF0F713009EAEE924053B9304617CBDF5FB4806A4CDD0 + 9C17236C7C2B061A2EC23A4D95F185B64FCF42A7441CC28E10AC8A02832E0296 + 567790DD19898230BEAE3ABA96011F9485E0596B26FA9A5A31619C60B055DB69 + 28336946FE0C4C68F844A259190A841FA1CFC440D78D05C0DFAADA49DE8E4441 + 181FEACE634F223FC117118A38E8F406DC1BD030353ED1C0A62FA872DA8FC504 + 0C9CA32195816D237DC2E97D7A3ABEABEBE05C80A72A5524677B025BCB844CA4 + C847817E1D42CD81E8B9F6375366A3E9BFF9184D9C601A4E9A3CFCE4B7D16B6B + B93F027B68C5C8B8B769C974019EAC68233F494FC093BDBFE60CB2B910E86556 + 8C4E5818509B2A82ED69F71B61C3D436ACAB52D220E3034A3ACE2D77AB5F7230 + 86AC318A117BE52A4454C69038124369C29BE7A3E50AF65FA7C46C4ABAFB2F29 + CA1A0E59AB7E850000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end> + Left = 232 + Top = 80 + Bitmap = {} + end +end diff --git a/Source/Modulos/Medicaciones/Plugin/uPluginMedicaciones.pas b/Source/Modulos/Medicaciones/Plugin/uPluginMedicaciones.pas new file mode 100644 index 0000000..c524aa6 --- /dev/null +++ b/Source/Modulos/Medicaciones/Plugin/uPluginMedicaciones.pas @@ -0,0 +1,75 @@ +unit uPluginMedicaciones; + +interface + +uses + uModuleController, uInterfaces, uHostManager, Menus, Classes, ActnList, + ImgList, Controls, PngImageList, uPlugins_Intf; + +type + IMCMedicaciones = interface(IInterface) + ['{81B8FEE3-CF5A-44ED-BDEA-1A3AB7E47365}'] + end; + + TPluginMedicaciones = class(TModuleController, IMCMedicaciones) + actMedicaciones: TAction; + ExtraImages: TPngImageList; + LargeImages: TPngImageList; + MainMenu: TMainMenu; + ModuleActionList: TActionList; + SmallImages: TPngImageList; + Compras1: TMenuItem; + Medicaciones1: TMenuItem; + procedure actMedicacionesExecute(Sender: TObject); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + Forms, Dialogs, SysUtils, cxControls, uMedicacionesViewRegister, + uMedicacionesController, uBizMedicaciones; + +function GetModule : TModuleController; +begin + Result := TPluginMedicaciones.Create(NIL); +end; + +exports + GetModule name GET_MODULE_FUNC; + +procedure TPluginMedicaciones.actMedicacionesExecute(Sender: TObject); +var + AMedicacionesController : IMedicacionesController; + AMedicaciones : IBizMedicacion; + +begin + AMedicacionesController := TMedicacionesController.Create; + AMedicaciones := (AMedicacionesController.BuscarTodos as IBizMedicacion); + AMedicacionesController.VerTodos(AMedicaciones); +end; + +constructor TPluginMedicaciones.Create(AOwner: TComponent); +begin + inherited; + ModuleName := 'Medicaciones'; + uMedicacionesViewRegister.RegisterViews; +end; + +destructor TPluginMedicaciones.Destroy; +begin + uMedicacionesViewRegister.UnregisterViews; + inherited; +end; + +initialization + RegisterModuleClass(TPluginMedicaciones); + +finalization + UnRegisterModuleClass(TPluginMedicaciones); + +end. diff --git a/Source/Modulos/Medicaciones/Servidor/srvMedicacion_Impl.dfm b/Source/Modulos/Medicaciones/Servidor/srvMedicacion_Impl.dfm new file mode 100644 index 0000000..75c71b2 --- /dev/null +++ b/Source/Modulos/Medicaciones/Servidor/srvMedicacion_Impl.dfm @@ -0,0 +1,763 @@ +object srvMedicacion: TsrvMedicacion + OldCreateOrder = True + OnCreate = DARemoteServiceCreate + ConnectionName = 'IBX' + ServiceSchema = schMedicacion + ServiceDataStreamer = Bin2DataStreamer + ExportedDataTables = <> + Height = 209 + Width = 347 + object schMedicacion: TDASchema + ConnectionManager = dmServer.ConnectionManager + DataDictionary = DADataDictionary + Datasets = < + item + Params = <> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'V_MEDICACION' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_PACIENTE' + TableField = 'ID_PACIENTE' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'NOMBRE' + TableField = 'NOMBRE' + end + item + DatasetField = 'FECHA_DESDE' + TableField = 'FECHA_DESDE' + end + item + DatasetField = 'FECHA_HASTA' + TableField = 'FECHA_HASTA' + end + item + DatasetField = 'TIPO' + TableField = 'TIPO' + end> + end> + Name = 'Medicacion' + Fields = < + item + Name = 'ID' + DataType = datAutoInc + GeneratorName = 'GEN_MEDICACION_ID' + DictionaryEntry = 'Medicacion_ID' + InPrimaryKey = True + end + item + Name = 'ID_PACIENTE' + DataType = datInteger + DictionaryEntry = 'Medicacion_ID_PACIENTE' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + DictionaryEntry = 'Medicacion_REFERENCIA' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + DictionaryEntry = 'Medicacion_NOMBRE' + end + item + Name = 'FECHA_DESDE' + DataType = datDateTime + DictionaryEntry = 'Medicacion_FECHA_DESDE' + end + item + Name = 'FECHA_HASTA' + DataType = datDateTime + DictionaryEntry = 'Medicacion_FECHA_HASTA' + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + DictionaryEntry = 'Medicacion_TIPO' + end> + end + item + Params = <> + Statements = < + item + Connection = 'IBX' + TargetTable = 'MEDICACION_DETALLES' + StatementType = stAutoSQL + ColumnMappings = < + item + DatasetField = 'ID' + TableField = 'ID' + end + item + DatasetField = 'ID_MEDICACION' + TableField = 'ID_MEDICACION' + end + item + DatasetField = 'POSICION' + TableField = 'POSICION' + end + item + DatasetField = 'TIPO_DETALLE' + TableField = 'TIPO_DETALLE' + end + item + DatasetField = 'ID_ARTICULO' + TableField = 'ID_ARTICULO' + end + item + DatasetField = 'REFERENCIA' + TableField = 'REFERENCIA' + end + item + DatasetField = 'CONCEPTO' + TableField = 'CONCEPTO' + end + item + DatasetField = 'CANTIDAD' + TableField = 'CANTIDAD' + end + item + DatasetField = 'POSOLOGIA' + TableField = 'POSOLOGIA' + end + item + DatasetField = 'FORMA_COLOR' + TableField = 'FORMA_COLOR' + end + item + DatasetField = 'LOTE' + TableField = 'LOTE' + end + item + DatasetField = 'VISIBLE' + TableField = 'VISIBLE' + end> + end> + Name = 'Medicacion_Detalles' + Fields = < + item + Name = 'ID' + DataType = datInteger + Required = True + InPrimaryKey = True + end + item + Name = 'ID_MEDICACION' + DataType = datInteger + Required = True + end + item + Name = 'POSICION' + DataType = datInteger + end + item + Name = 'TIPO_DETALLE' + DataType = datString + Size = 25 + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + end + item + Name = 'CANTIDAD' + DataType = datCurrency + end + item + Name = 'POSOLOGIA' + DataType = datString + Size = 255 + end + item + Name = 'FORMA_COLOR' + DataType = datString + Size = 255 + end + item + Name = 'LOTE' + DataType = datString + Size = 255 + end + item + Name = 'VISIBLE' + DataType = datSmallInt + end> + end> + JoinDataTables = <> + UnionDataTables = <> + Commands = < + item + Params = < + item + Name = 'OLD_ID' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'MEDICACION' + SQL = 'DELETE '#10' FROM'#10' MEDICACION'#10' WHERE'#10' (ID = :OLD_ID)'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Medicacion' + end + item + Params = < + item + Name = 'ID' + Value = '' + end + item + Name = 'ID_PACIENTE' + Value = '' + end + item + Name = 'REFERENCIA' + Value = '' + end + item + Name = 'NOMBRE' + Value = '' + end + item + Name = 'FECHA_DESDE' + Value = '' + end + item + Name = 'FECHA_HASTA' + Value = '' + end + item + Name = 'TIPO' + Value = '' + end + item + Name = 'USUARIO' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'MEDICACION' + SQL = + 'INSERT'#10' INTO MEDICACION'#10' (ID, ID_PACIENTE, REFERENCIA, NOMBR' + + 'E, FECHA_DESDE, FECHA_HASTA,'#10' TIPO, USUARIO, FECHA_ALTA)'#10' V' + + 'ALUES'#10' (:ID, :ID_PACIENTE, :REFERENCIA, :NOMBRE, :FECHA_DESDE' + + ', :FECHA_HASTA,'#10' :TIPO, :USUARIO, CURRENT_TIMESTAMP)'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Medicacion' + end + item + Params = < + item + Name = 'ID_PACIENTE' + DataType = datInteger + Value = '' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'NOMBRE' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'FECHA_DESDE' + DataType = datDateTime + Value = '' + end + item + Name = 'FECHA_HASTA' + DataType = datDateTime + Value = '' + end + item + Name = 'TIPO' + DataType = datString + Size = 1 + Value = '' + end + item + Name = 'OLD_ID' + DataType = datAutoInc + Value = '' + end> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'MEDICACION' + SQL = + 'UPDATE MEDICACION'#10' SET '#10' ID_PACIENTE = :ID_PACIENTE, '#10' RE' + + 'FERENCIA = :REFERENCIA, '#10' NOMBRE = :NOMBRE, '#10' FECHA_DESDE ' + + '= :FECHA_DESDE,'#10' FECHA_HASTA = :FECHA_HASTA, '#10' TIPO = :TIP' + + 'O,'#10' FECHA_MODIFICACION = CURRENT_TIMESTAMP'#10' WHERE'#10' (ID = ' + + ':OLD_ID)'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Medicacion' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + end + item + Name = 'ID_MEDICACION' + DataType = datInteger + Value = '' + end + item + Name = 'POSICION' + DataType = datInteger + Value = '' + end + item + Name = 'TIPO_DETALLE' + DataType = datString + Size = 25 + Value = '' + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + Value = '' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + Value = '' + end + item + Name = 'CANTIDAD' + DataType = datCurrency + Value = '' + end + item + Name = 'POSOLOGIA' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'FORMA_COLOR' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'LOTE' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'VISIBLE' + DataType = datSmallInt + Value = '' + end> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'MEDICACION_DETALLES' + SQL = + 'INSERT'#10' INTO MEDICACION_DETALLES'#10' (ID, ID_MEDICACION, POSICI' + + 'ON, TIPO_DETALLE, ID_ARTICULO, '#10' REFERENCIA, CONCEPTO, CANTI' + + 'DAD, POSOLOGIA, FORMA_COLOR, '#10' LOTE, VISIBLE)'#10' VALUES'#10' (' + + ':ID, :ID_MEDICACION, :POSICION, :TIPO_DETALLE, :ID_ARTICULO, '#10' ' + + ' :REFERENCIA, :CONCEPTO, :CANTIDAD, :POSOLOGIA, :FORMA_COLOR, ' + + #10' :LOTE, :VISIBLE)' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Insert_Medicacion_Detalles' + end + item + Params = < + item + Name = 'OLD_ID' + DataType = datInteger + Value = '' + end> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'MEDICACION_DETALLES' + SQL = + 'DELETE '#10' FROM'#10' MEDICACION_DETALLES'#10' WHERE'#10' (ID = :OLD_ID' + + ')' + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Delete_Medicacion_Detalles' + end + item + Params = < + item + Name = 'ID' + DataType = datInteger + Value = '' + end + item + Name = 'ID_MEDICACION' + DataType = datInteger + Value = '' + end + item + Name = 'POSICION' + DataType = datInteger + Value = '' + end + item + Name = 'TIPO_DETALLE' + DataType = datString + Size = 25 + Value = '' + end + item + Name = 'ID_ARTICULO' + DataType = datInteger + Value = '' + end + item + Name = 'REFERENCIA' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'CONCEPTO' + DataType = datString + Size = 2000 + Value = '' + end + item + Name = 'CANTIDAD' + DataType = datCurrency + Value = '' + end + item + Name = 'POSOLOGIA' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'FORMA_COLOR' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'LOTE' + DataType = datString + Size = 255 + Value = '' + end + item + Name = 'VISIBLE' + DataType = datSmallInt + Value = '' + end + item + Name = 'OLD_ID' + Value = '' + end> + Statements = < + item + Connection = 'IBX' + Default = True + TargetTable = 'MEDICACION_DETALLES' + SQL = + 'UPDATE MEDICACION_DETALLES'#10' SET '#10' ID = :ID,'#10' ID_MEDICACIO' + + 'N = :ID_MEDICACION,'#10' POSICION = :POSICION, '#10' TIPO_DETALLE ' + + '= :TIPO_DETALLE, '#10' ID_ARTICULO = :ID_ARTICULO, '#10' REFERENCI' + + 'A = :REFERENCIA, '#10' CONCEPTO = :CONCEPTO, '#10' CANTIDAD = :CAN' + + 'TIDAD, '#10' POSOLOGIA = :POSOLOGIA, '#10' FORMA_COLOR = :FORMA_CO' + + 'LOR, '#10' LOTE = :LOTE, '#10' VISIBLE = :VISIBLE'#10' WHERE'#10' (ID ' + + '= :OLD_ID)'#10 + StatementType = stSQL + ColumnMappings = <> + end> + Name = 'Update_Medicacion_Detalles' + end> + RelationShips = < + item + Name = 'FK_AlbaranesCliente_Detalles' + MasterDatasetName = 'Medicacion' + MasterFields = 'ID' + DetailDatasetName = 'Medicacion_Detalles' + DetailFields = 'ID_ALBARAN' + RelationshipType = rtForeignKey + end> + UpdateRules = < + item + Name = 'Insert AlbaranesCliente' + DoUpdate = False + DoDelete = False + DatasetName = 'AlbaranesCliente' + FailureBehavior = fbRaiseException + end + item + Name = 'Insert AlbaranesCliente_Detalles' + DoUpdate = False + DoDelete = False + DatasetName = 'AlbaranesCliente_Detalles' + FailureBehavior = fbRaiseException + end + item + Name = 'Update AlbaranesCliente' + DoInsert = False + DoDelete = False + DatasetName = 'AlbaranesCliente' + FailureBehavior = fbRaiseException + end + item + Name = 'Update AlbaranesCliente_Detalles' + DoInsert = False + DoDelete = False + DatasetName = 'AlbaranesCliente_Detalles' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete AlbaranesCliente_Detalles' + DoUpdate = False + DoInsert = False + DatasetName = 'AlbaranesCliente_Detalles' + FailureBehavior = fbRaiseException + end + item + Name = 'Delete AlbaranesCliente' + DoUpdate = False + DoInsert = False + DatasetName = 'AlbaranesCliente' + FailureBehavior = fbRaiseException + end> + Version = 0 + Left = 56 + Top = 24 + end + object bpMedicacion: TDABusinessProcessor + Schema = schMedicacion + InsertCommandName = 'Insert_AlbaranesCliente' + DeleteCommandName = 'Delete_AlbaranesCliente' + UpdateCommandName = 'Update_AlbaranesCliente' + ReferencedDataset = 'AlbaranesCliente' + ProcessorOptions = [poAutoGenerateRefreshDataset, poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 224 + Top = 24 + end + object bpMedicacion_Detalles: TDABusinessProcessor + Schema = schMedicacion + InsertCommandName = 'Insert_AlbaranesCliente_Detalles' + DeleteCommandName = 'Delete_AlbaranesCliente_Detalles' + UpdateCommandName = 'Update_AlbaranesCliente_Detalles' + ReferencedDataset = 'AlbaranesCliente_Detalles' + ProcessorOptions = [poPrepareCommands] + UpdateMode = updWhereKeyOnly + Left = 224 + Top = 88 + end + object DADataDictionary: TDADataDictionary + Fields = < + item + Name = 'Medicacion_ID' + DataType = datAutoInc + GeneratorName = 'GEN_MEDICACION_ID' + Required = True + DisplayLabel = 'ID' + ServerAutoRefresh = True + end + item + Name = 'Medicacion_ID_PACIENTE' + DataType = datInteger + DisplayLabel = 'ID_PACIENTE' + end + item + Name = 'Medicacion_NOMBRE' + DataType = datString + Size = 255 + DisplayLabel = 'Nombre del paciente' + end + item + Name = 'Medicacion_FECHA_HASTA' + DataType = datDateTime + DisplayLabel = 'Hasta' + end + item + Name = 'Medicacion_Detalles_ID' + DataType = datAutoInc + GeneratorName = 'GEN_MEDICACION_DETALLES_ID' + Required = True + DisplayLabel = 'ID' + ServerAutoRefresh = True + end + item + Name = 'AlbaranesCliente_Detalles_ID_PEDIDO' + DataType = datInteger + DisplayLabel = 'ID_PEDIDO' + end + item + Name = 'POSICIONCONCEPTO' + DataType = datInteger + DisplayLabel = 'POSICION' + end + item + Name = 'AlbaranesCliente_Detalles_TIPO_DETALLE' + DataType = datString + Size = 25 + DisplayLabel = 'TIPO_DETALLE' + end + item + Name = 'AlbaranesCliente_Detalles_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + end + item + Name = 'AlbaranesCliente_Detalles_ID_ARTICULO' + DataType = datInteger + DisplayLabel = 'ID_ARTICULO' + end + item + Name = 'AlbaranesCliente_Detalles_CONCEPTO' + DataType = datString + Size = 2000 + DisplayLabel = 'CONCEPTO' + end + item + Name = 'CANTIDAD' + DataType = datFloat + Alignment = taRightJustify + end + item + Name = 'AlbaranesCliente_Detalles_IMPORTE_UNIDAD' + DataType = datCurrency + DisplayLabel = 'Importe unidad' + Alignment = taRightJustify + end + item + Name = 'AlbaranesCliente_Detalles_IMPORTE_TOTAL' + DataType = datCurrency + DisplayLabel = 'Importe total' + Alignment = taRightJustify + end + item + Name = 'AlbaranesCliente_Detalles_DESCUENTO' + DataType = datFloat + DisplayLabel = 'Descuento' + DisplayFormat = ',0.00 %;-,0.00 %' + Alignment = taRightJustify + end + item + Name = 'AlbaranesCliente_Detalles_IMPORTE_PORTE' + DataType = datCurrency + DisplayLabel = 'Importe porte' + Alignment = taRightJustify + end + item + Name = 'AlbaranesCliente_Detalles_VISIBLE' + DataType = datInteger + DisplayLabel = 'VISIBLE' + end + item + Name = 'Medicacion_FECHA_DESDE' + DataType = datDateTime + DisplayLabel = 'Desde' + end + item + Name = 'Medicacion_ID_MEDICACION' + DataType = datInteger + DisplayLabel = 'ID_MEDICACION' + end + item + Name = 'AlbaranesCliente_Detalles_Refresh_ID_ALBARAN' + DataType = datInteger + DisplayLabel = 'ID_ALBARAN' + end + item + Name = 'AlbaranesCliente_Detalles_Refresh_DESCUENTO' + DataType = datFloat + DisplayLabel = 'DESCUENTO' + end + item + Name = 'AlbaranesCliente_Detalles_Refresh_IMPORTE_PORTE' + DataType = datFloat + DisplayLabel = 'IMPORTE_PORTE' + end + item + Name = 'AlbaranesCliente_Detalles_Refresh_REFERENCIA_PROVEEDOR' + DataType = datString + Size = 255 + DisplayLabel = 'REFERENCIA_PROVEEDOR' + end + item + Name = 'Medicacion_REFERENCIA' + DataType = datString + Size = 255 + DisplayLabel = 'Referencia' + ServerAutoRefresh = True + end + item + Name = 'Medicacion_TIPO' + DataType = datString + Size = 1 + DisplayLabel = 'Tipo' + end> + Left = 56 + Top = 144 + end + object Bin2DataStreamer: TDABin2DataStreamer + Left = 56 + Top = 80 + end +end diff --git a/Source/Modulos/Medicaciones/Servidor/srvMedicacion_Impl.pas b/Source/Modulos/Medicaciones/Servidor/srvMedicacion_Impl.pas new file mode 100644 index 0000000..1f7140f --- /dev/null +++ b/Source/Modulos/Medicaciones/Servidor/srvMedicacion_Impl.pas @@ -0,0 +1,91 @@ +unit srvMedicacion_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:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} Etiquetas_Intf, uDADataStreamer, uDABin2DataStreamer, uDAClasses, + uDAScriptingProvider, uDABusinessProcessor, + uDAInterfaces; + +type + { TsrvMedicacion } + TsrvMedicacion = class(TDataAbstractService, IsrvMedicacion) + bpMedicacion: TDABusinessProcessor; + bpMedicacion_Detalles: TDABusinessProcessor; + Bin2DataStreamer: TDABin2DataStreamer; + schMedicacion: TDASchema; + DADataDictionary: TDADataDictionary; + procedure DARemoteServiceCreate(Sender: TObject); + procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string); + protected + { IsrvMedicacion methods } + function GenerarInforme(const ListaID: TIntegerArray): Binary; + function GenerarInformeEtiquetas(const ID: Integer): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} Etiquetas_Invk, uDataModuleServer, uDatabaseUtils, + schMedicacionClient_Intf, uRestriccionesUsuarioUtils, + uSistemaFunc, uBizMedicacionServer; + + +procedure Create_srvMedicacion(out anInstance : IUnknown); +begin + anInstance := TsrvMedicacion.Create(nil); +end; + +{ srvMedicacion } +procedure TsrvMedicacion.DARemoteServiceCreate(Sender: TObject); +begin + bpMedicacion.BusinessRulesID := BIZ_SERVER_MEDICACION; +end; + +procedure TsrvMedicacion.DataAbstractServiceBeforeAcquireConnection( + aSender: TObject; var aConnectionName: string); +begin + ConnectionName := dmServer.ConnectionName; +end; + +function TsrvMedicacion.GenerarInforme(const ListaID: TIntegerArray): Binary; +begin + // +end; + +function TsrvMedicacion.GenerarInformeEtiquetas(const ID: Integer): Binary; +begin + // +end; + +function TsrvMedicacion.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; +begin + // +end; + +var + fClassFactory: IROClassFactory; +initialization + fClassFactory := TROClassFactory.Create('srvMedicacion', Create_srvMedicacion, TsrvMedicacion_Invoker); + +finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; + +end. diff --git a/Source/Modulos/Medicaciones/Views/Medicaciones_view.dpk b/Source/Modulos/Medicaciones/Views/Medicaciones_view.dpk new file mode 100644 index 0000000..4ce68f5 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/Medicaciones_view.dpk @@ -0,0 +1,88 @@ +package Medicaciones_view; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO ON} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$IMPLICITBUILD OFF} + +requires + Base, + GUIBase, + ApplicationBase, + Contactos_model, + Articulos_view, + Medicaciones_model, + Medicaciones_controller, + rtl, + vcl, + dbrtl, + PNG_D10, + PngComponentsD10, + vclactnband, + vclx, + tb2k_d10, + tbx_d10, + cxLibraryD11, + dxThemeD11, + dxGDIPlusD11, + dxCoreD11, + cxExtEditorsD11, + cxDataD11, + cxEditorsD11, + vcljpg, + vcldb, + DataAbstract_Core_D11, + dsnap, + adortl, + RemObjects_Core_D11, + GUISDK_D11R, + designide, + xmlrtl, + dxLayoutControlD11, + dxComnD11, + JvStdCtrlsD11R, + JclVcl, + Jcl, + JvCoreD11R, + JvSystemD11R, + JvPageCompsD11R, + cxPageControlD11, + cxGridD11, + cxExportD11, + dxPSCoreD11, + dxPScxCommonD11, + dxPSLnksD11, + vclshlctrls, + dxPScxGrid6LnkD11, + dclcxLibraryD11, + JSDialog100; + +contains + uMedicacionesViewRegister in 'uMedicacionesViewRegister.pas', + uViewMedicaciones in 'uViewMedicaciones.pas' {frViewMedicaciones: TFrame}, + uViewMedicacion in 'uViewMedicacion.pas' {frViewMedicacion: TFrame}, + uViewDatosYSeleccionPacienteMedicacion in 'uViewDatosYSeleccionPacienteMedicacion.pas' {frViewDatosYSeleccionClienteMedicacion: TCustomView}, + uViewDetallesMedicacion in 'uViewDetallesMedicacion.pas' {frViewDetallesMedicacion: TFrame}, + uEditorMedicacion in 'uEditorMedicacion.pas' {fEditorMedicacion: TFrame}, + uEditorMedicaciones in 'uEditorMedicaciones.pas' {fEditorMedicaciones: TEditor}; + +end. diff --git a/Source/Modulos/Medicaciones/Views/Medicaciones_view.dproj b/Source/Modulos/Medicaciones/Views/Medicaciones_view.dproj new file mode 100644 index 0000000..ce95ac1 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/Medicaciones_view.dproj @@ -0,0 +1,620 @@ + + + + {9e558626-cf49-4cff-a178-e12c186758ac} + Medicaciones_view.dpk + Debug + AnyCPU + DCC32 + ..\..\..\..\Output\Debug\Cliente\Medicaciones_view.bpl + + + 7.0 + False + False + 0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + RELEASE + + + 7.0 + 3 + .\ + .\ + .\ + ..\..\..\..\Output\Debug\Cliente + ..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + ..\..\..\Lib;..\..\Lib + + + Delphi.Personality + Package + +FalseTrueFalseFalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + + + + File c:\archivos de programa\borland\delphi10\Bin\dclIntraweb_80_100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclnet100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclsoap100.bpl not found + File c:\archivos de programa\borland\delphi10\Bin\dclie100.bpl not found + Medicaciones_view.dpk + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
fEditorMedicacion
+ TFrame +
+ +
fEditorMedicaciones
+ TEditor +
+ + +
frViewDatosYSeleccionClienteMedicacion
+ TCustomView +
+ +
frViewDetallesMedicacion
+ TFrame +
+ +
frViewMedicacion
+ TFrame +
+ +
frViewMedicaciones
+ TFrame +
+
+
+ diff --git a/Source/Modulos/Medicaciones/Views/Medicaciones_view.rc b/Source/Modulos/Medicaciones/Views/Medicaciones_view.rc new file mode 100644 index 0000000..153736a --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/Medicaciones_view.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/Source/Modulos/Medicaciones/Views/Medicaciones_view.res b/Source/Modulos/Medicaciones/Views/Medicaciones_view.res new file mode 100644 index 0000000..8b251f3 Binary files /dev/null and b/Source/Modulos/Medicaciones/Views/Medicaciones_view.res differ diff --git a/Source/Modulos/Medicaciones/Views/uEditorAlbaranesClienteReport.dfm b/Source/Modulos/Medicaciones/Views/uEditorAlbaranesClienteReport.dfm new file mode 100644 index 0000000..3926992 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorAlbaranesClienteReport.dfm @@ -0,0 +1,16 @@ +inherited fEditorAlbaranesClientePreview: TfEditorAlbaranesClientePreview + Caption = 'Previsualizar el albar'#225'n de cliente' + ExplicitWidth = 320 + ExplicitHeight = 240 + PixelsPerInch = 96 + TextHeight = 13 + inherited TBXDock: TTBXDock + inherited TBXToolbar1: TTBXToolbar + ExplicitWidth = 540 + object TBXItem58: TTBXItem [1] + Action = actExportarRTF + Images = SmallImages + end + end + end +end diff --git a/Source/Modulos/Medicaciones/Views/uEditorAlbaranesClienteReport.pas b/Source/Modulos/Medicaciones/Views/uEditorAlbaranesClienteReport.pas new file mode 100644 index 0000000..97b1850 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorAlbaranesClienteReport.pas @@ -0,0 +1,45 @@ +unit uEditorAlbaranesClienteReport; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorPreview, frxExportImage, frxExportPDF, frxDCtrl, frxClass, +// frxDMPExport, frxGradient, frxChBox, frxCross, frxRich, frxChart, frxOLE, +// frxBarcode, JvAppStorage, JvAppRegistryStorage, JvComponentBase, + JvFormPlacement, ImgList, PngImageList, StdActns, ActnList, ComCtrls, + TB2ExtItems, TBXExtItems, TBX, TB2Item, TB2Dock, TB2Toolbar, pngimage, + ExtCtrls, JvExControls, JvComponent, JvNavigationPane, uIEditorAlbaranesClientePreview, + JvExComCtrls, JvStatusBar, frxDMPExport, frxGradient, frxChBox, frxCross, + frxRich, frxOLE, frxBarcode, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, frxExportText, frxExportRTF, frxExportMail, frxExportXLS; + +type + TfEditorAlbaranesClientePreview = class(TfEditorPreview, IEditorAlbaranesClientePreview) + TBXItem58: TTBXItem; + procedure actExportarRTFExecute(Sender: TObject); + end; + + +implementation + +{$R *.dfm} + +uses + uAlbaranesClienteReportController, uDialogUtils; + +procedure TfEditorAlbaranesClientePreview.actExportarRTFExecute( + Sender: TObject); +var + I: Integer; +begin + // inherited; <- No llamar al padre + if not Assigned(Controller) then + raise Exception.Create('No se ha asignado el controlador necesario'); + + for I := 0 to ListaID.Count - 1 do + if (Controller as IAlbaranesClienteReportController).ExportToWord(ListaID[I]) then + ShowInfoMessage('El albarán se ha exportado correctamente.'); +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uEditorElegirAlbaranesCliente.dfm b/Source/Modulos/Medicaciones/Views/uEditorElegirAlbaranesCliente.dfm new file mode 100644 index 0000000..aa60e0c --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorElegirAlbaranesCliente.dfm @@ -0,0 +1,239 @@ +inherited fEditorElegirAlbaranesCliente: TfEditorElegirAlbaranesCliente + Caption = 'Seleccionar albar'#195#161'n de cliente' + ClientWidth = 790 + ExplicitWidth = 798 + ExplicitHeight = 538 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Top = 139 + Width = 790 + Visible = False + ExplicitLeft = -8 + ExplicitTop = 280 + ExplicitWidth = 790 + inherited Image1: TImage + Left = 763 + ExplicitLeft = 629 + end + end + inherited TBXDock: TTBXDock + Top = 64 + Width = 790 + ExplicitTop = 91 + ExplicitWidth = 790 + inherited tbxMain: TTBXToolbar + Left = 359 + ExplicitLeft = 359 + ExplicitWidth = 263 + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + inherited TBXItem4: TTBXItem + Visible = False + end + inherited TBXSeparatorItem6: TTBXSeparatorItem + Visible = False + end + inherited TBXItem7: TTBXItem + Visible = False + end + inherited TBXSeparatorItem3: TTBXSeparatorItem + Visible = False + end + inherited TBXItem23: TTBXItem + Visible = False + end + inherited TBXSeparatorItem17: TTBXSeparatorItem + Visible = False + end + inherited TBXItem3: TTBXItem + Visible = False + end + inherited TBXSeparatorItem10: TTBXSeparatorItem + Visible = False + end + inherited TBXSeparatorItem2: TTBXSeparatorItem + Visible = False + end + inherited TBXItem6: TTBXItem + Visible = False + end + inherited TBXItem36: TTBXItem + Action = actAnchoAuto2 + end + end + inherited tbxFiltro: TTBXToolbar + Top = 23 + DockPos = -185 + DockRow = 1 + ExplicitTop = 23 + ExplicitWidth = 359 + inherited TBXItem34: TTBXItem + Action = actQuitarFiltro2 + end + inherited TBXItem37: TTBXItem + Visible = False + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 790 + end + inherited TBXTMain2: TTBXToolbar + Left = 318 + Visible = False + ExplicitLeft = 318 + end + end + inherited StatusBar: TJvStatusBar + Width = 790 + ExplicitWidth = 790 + end + object pnlHeader: TPanel [3] + Left = 0 + Top = 0 + Width = 790 + Height = 64 + Align = alTop + BevelOuter = bvNone + Color = clWhite + Padding.Left = 25 + Padding.Top = 8 + Padding.Right = 25 + Padding.Bottom = 8 + ParentBackground = False + TabOrder = 4 + ExplicitTop = 27 + object lblTitle: TLabel + AlignWithMargins = True + Left = 25 + Top = 8 + Width = 740 + Height = 13 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 8 + Align = alTop + Caption = 'Seleccione el albar'#225'n de cliente' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [fsBold] + ParentFont = False + ExplicitWidth = 177 + end + object lblComments: TLabel + AlignWithMargins = True + Left = 50 + Top = 29 + Width = 715 + Height = 24 + Margins.Left = 25 + Margins.Top = 0 + Margins.Right = 0 + Align = alClient + ExplicitWidth = 3 + ExplicitHeight = 13 + end + end + inline frViewBarraSeleccion1: TfrViewBarraSeleccion [4] + Left = 0 + Top = 449 + Width = 790 + Height = 36 + Align = alBottom + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitTop = 449 + ExplicitWidth = 790 + ExplicitHeight = 36 + inherited JvFooter1: TJvFooter + Width = 790 + Height = 36 + ExplicitWidth = 790 + ExplicitHeight = 36 + inherited bSeleccionar: TJvFooterBtn + Left = 578 + Top = 3 + ExplicitLeft = 444 + ExplicitTop = 3 + end + inherited bCancelar: TJvFooterBtn + Left = 682 + Top = 4 + ExplicitLeft = 682 + ExplicitTop = 4 + end + end + inherited BarraSeleccionActionList: TActionList + inherited actSeleccionar: TAction + OnExecute = frViewBarraSeleccion1actSeleccionarExecute + OnUpdate = frViewBarraSeleccion1actSeleccionarUpdate + end + inherited actCancelar: TAction + OnExecute = frViewBarraSeleccion1actCancelarExecute + end + end + end + inherited EditorActionList: TActionList [5] + end + inherited SmallImages: TPngImageList [6] + end + inherited LargeImages: TPngImageList [7] + end + inherited JvFormStorage: TJvFormStorage [8] + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [9] + end + inherited dsDataTable: TDADataSource [10] + Left = 16 + Top = 168 + end + inherited StatusBarImages: TPngImageList [11] + end + inherited GridPopupMenu: TPopupMenu [12] + Left = 56 + Top = 192 + end + inherited JsNuevoAlbaranDialog: TJSDialog [13] + end + inherited JsImprimirDialog: TJSDialog [15] + end + object EditorSeleccionActionList: TActionList + Images = SmallImages + Left = 152 + Top = 192 + object actBuscar2: TAction + Category = 'Buscar' + Caption = 'Buscar' + ImageIndex = 10 + ShortCut = 114 + end + object actQuitarFiltro2: TAction + Category = 'Buscar' + Caption = 'Quitar filtro y ver todo' + ImageIndex = 19 + OnExecute = actQuitarFiltro2Execute + end + object actAnchoAuto2: TAction + Category = 'Ver' + Caption = 'Ancho autom'#225'tico' + ImageIndex = 21 + OnExecute = actAnchoAuto2Execute + end + end +end diff --git a/Source/Modulos/Medicaciones/Views/uEditorElegirAlbaranesCliente.pas b/Source/Modulos/Medicaciones/Views/uEditorElegirAlbaranesCliente.pas new file mode 100644 index 0000000..14b6df7 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorElegirAlbaranesCliente.pas @@ -0,0 +1,118 @@ +unit uEditorElegirAlbaranesCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, DB, uDADataTable, Menus, JvAppStorage, JvAppRegistryStorage, + JvComponentBase, JvFormPlacement, ImgList, PngImageList, StdActns, + ActnList, uCustomView, uViewBase, uViewGridBase, uViewGrid, + uViewAlbaranesCliente, ComCtrls, TB2ExtItems, TBXExtItems, TBX, + TB2Item, TB2Dock, TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, + JvNavigationPane, uViewBarraSeleccion, StdCtrls, + uEditorAlbaranesCliente, uBizAlbaranesCliente, uIEditorElegirAlbaranesCliente, + JvExComCtrls, JvStatusBar, JSDialog, uDAInterfaces; + +type + TfEditorElegirAlbaranesCliente = class(TfEditorAlbaranesCliente, IEditorElegirAlbaranesCliente) + frViewBarraSeleccion1: TfrViewBarraSeleccion; + lblTitle: TLabel; + lblComments: TLabel; + EditorSeleccionActionList: TActionList; + actBuscar2: TAction; + actQuitarFiltro2: TAction; + actAnchoAuto2: TAction; + pnlHeader: TPanel; + procedure frViewBarraSeleccion1actSeleccionarUpdate(Sender: TObject); + procedure frViewBarraSeleccion1actCancelarExecute(Sender: TObject); + procedure frViewBarraSeleccion1actSeleccionarExecute(Sender: TObject); + procedure FormShow(Sender: TObject); + procedure actAnchoAuto2Execute(Sender: TObject); + procedure actQuitarFiltro2Execute(Sender: TObject); + + protected + function GetAlbaranesClienteSeleccionados: IBizAlbaranCliente; + procedure SetViewGrid(const Value: IViewGridBase); override; + procedure SetMensaje (const AValue: String); + function GetMensaje: String; + + public + property Mensaje : String read GetMensaje write SetMensaje; + property AlbaranesClienteSeleccionados: IBizAlbaranCliente read GetAlbaranesClienteSeleccionados; + end; + +implementation + +uses + uEditorGridBase, cxGridCustomTableView, uIntegerListUtils, uDBSelectionListUtils, + uGridStatusUtils, uEditorBase, uAlbaranesClienteController, cxGridLevel; + +{$R *.dfm} + +{ TfEditorElegirAlbaranesCliente } + +procedure TfEditorElegirAlbaranesCliente.actAnchoAuto2Execute(Sender: TObject); +begin + inherited; + actAnchoAuto.Execute; +end; + +procedure TfEditorElegirAlbaranesCliente.actQuitarFiltro2Execute(Sender: TObject); +begin + inherited; + actQuitarFiltro.Execute; +end; + +procedure TfEditorElegirAlbaranesCliente.FormShow(Sender: TObject); +begin + inherited; + EditorActionList.State := asSuspended; +end; + +procedure TfEditorElegirAlbaranesCliente.frViewBarraSeleccion1actCancelarExecute( + Sender: TObject); +begin + inherited; + Close; +end; + +procedure TfEditorElegirAlbaranesCliente.frViewBarraSeleccion1actSeleccionarExecute( + Sender: TObject); +begin + inherited; + ModalResult := mrOk; +end; + +procedure TfEditorElegirAlbaranesCliente.frViewBarraSeleccion1actSeleccionarUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (ViewGrid._FocusedView.Controller.SelectedRowCount > 0) +end; + +function TfEditorElegirAlbaranesCliente.GetAlbaranesClienteSeleccionados: IBizAlbaranCliente; +begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Albaranes as ISeleccionable).SelectedRecords); + // En SelectedRecords tengo los ID de las filas seleccionadas del grid + Result := (Controller as IAlbaranesClienteController).ExtraerSeleccionados(Albaranes) as IBizAlbaranCliente; +end; + +function TfEditorElegirAlbaranesCliente.GetMensaje: String; +begin + Result := lblComments.Caption; +end; + +procedure TfEditorElegirAlbaranesCliente.SetMensaje(const AValue: String); +begin + lblComments.Caption := AValue; +end; + +procedure TfEditorElegirAlbaranesCliente.SetViewGrid(const Value: IViewGridBase); +begin + inherited; + //Para que no salgan las pestañas de filtrado + ViewGrid._Grid.RootLevelOptions.DetailTabsPosition := dtpNone; + ViewGrid.OnDblClick := frViewBarraSeleccion1.actSeleccionar.OnExecute; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uEditorElegirArticulosAlbaranCliente.dfm b/Source/Modulos/Medicaciones/Views/uEditorElegirArticulosAlbaranCliente.dfm new file mode 100644 index 0000000..b42d731 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorElegirArticulosAlbaranCliente.dfm @@ -0,0 +1,5 @@ +inherited fEditorElegirArticulosAlbaranCliente: TfEditorElegirArticulosAlbaranCliente + Caption = 'fEditorElegirArticulosAlbaranCliente' + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Source/Modulos/Medicaciones/Views/uEditorElegirArticulosAlbaranCliente.pas b/Source/Modulos/Medicaciones/Views/uEditorElegirArticulosAlbaranCliente.pas new file mode 100644 index 0000000..cec09f7 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorElegirArticulosAlbaranCliente.pas @@ -0,0 +1,35 @@ +unit uEditorElegirArticulosAlbaranCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uEditorElegirArticulos, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponentBase, JvFormPlacement, ImgList, PngImageList, + StdActns, ActnList, uCustomView, uViewBase, uViewBarraSeleccion, ComCtrls, + JvExComCtrls, JvStatusBar, TBX, TB2ExtItems, TBXExtItems, TB2Item, TB2Dock, + TB2Toolbar, pngimage, ExtCtrls, JvExControls, JvComponent, JvNavigationPane, + uIEditorElegirArticulosAlbaranesCliente, uDAInterfaces, + uViewGridBase, uViewGrid, uViewArticulos, StdCtrls; + +type + TfEditorElegirArticulosAlbaranCliente = class(TfEditorElegirArticulos, IEditorElegirArticulosAlbaranesCliente) + public + constructor Create(AOwner: TComponent); override; + end; + + +implementation +{$R *.dfm} + +uses uViewElegirArticulosAlbaranesCliente; + +{ TfEditorElegirArticulosAlbaranCliente } + +constructor TfEditorElegirArticulosAlbaranCliente.Create(AOwner: TComponent); +begin + inherited; + ViewGrid := CreateView(TfrViewElegirArticulosAlbaranesCliente) as IViewElegirArticulosAlbaranesCliente; +end; + +end. diff --git a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm b/Source/Modulos/Medicaciones/Views/uEditorMedicacion.dfm similarity index 82% rename from Source/Modulos/Articulos/Views/uEditorArticulos.dfm rename to Source/Modulos/Medicaciones/Views/uEditorMedicacion.dfm index 90e9cb1..d1c5d77 100644 --- a/Source/Modulos/Articulos/Views/uEditorArticulos.dfm +++ b/Source/Modulos/Medicaciones/Views/uEditorMedicacion.dfm @@ -1,306 +1,330 @@ -inherited fEditorArticulos: TfEditorArticulos - Left = 489 - Top = 325 - Caption = 'Lista de art'#237'culos' - ClientWidth = 657 - ExplicitWidth = 665 +inherited fEditorMedicacion: TfEditorMedicacion + Left = 332 + Top = 147 + Caption = 'Nueva medicaci'#162'n para paciente' + ClientHeight = 627 + ClientWidth = 765 + OnClose = CustomEditorClose + ExplicitWidth = 773 + ExplicitHeight = 661 PixelsPerInch = 96 TextHeight = 13 inherited JvNavPanelHeader: TJvNavPanelHeader - Width = 657 - Caption = 'Lista de articulos' - ExplicitWidth = 657 + Width = 765 + Caption = 'Nueva medicaci'#243'n para paciente' + ExplicitWidth = 765 inherited Image1: TImage - Left = 630 + Left = 632 Picture.Data = { - 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 - 00001C0806000000720DDF940000000970485973000017120000171201679FD2 - 520000000467414D410000AA11B57D14DC000001374944415478DA63FCFFFF3F - 033D01E3C8B2F04AA9943390DA43408F0B316A74BA9FED25C6C2FFAA2D350CEC - EC59584DF9F9731AC3ECD81686D4C584D5E4AC7AC648948540978135A180CF9F - 1818BE7C66987EC08A81655B2AC83062D4906921D42086CF40C3CEBA63B710BB - 1A322C443208ECFA9B219816E25643A2856806317CFDC230FD4902AA85F8D590 - 60E19B0E0C8318BE7C6598FE211B61216135245878B38481E1D72F148318BE01 - 5DFFAB1C61216135C45908CA16D397CB33E00220C340D982901A622D743EF010 - 7FA67690677021460D55333E2ED71303C8CDF834B4104FA626B6EC450E5E7233 - 3ECC4292A380DC8CCF88D581444401B9191FB78504CA5572333E760B892857C9 - CAF8582D24B25C2527E397022DE921270A302C2415901A0554B1909428A08685 - 4495BD38333E3DC0F0B71000FEC966E74A55381F0000000049454E44AE426082} - ExplicitLeft = 516 + 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 + 4D410000B18E7CFB51930000026A4944415478DA63FCFFFF3F032D0123B2054B + B79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601EBC07C86733BA6 + E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E62DDD84DF02525C + EE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C802E06027B3BEC + 189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F605803F11FA0EB41EC + 3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB4E106701CCDBA4 + 80075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3C45B802BA86096 + C3E4616AE7E7EB32EC387486721F4C2C7064F8CA7E8E41F8D527BCBE7AF2D589 + 341FC02C6D2BE76788F0FBC520C1F883E1D74F0608FEC1C0F0134603F1C91344 + 58800DCC4C6464884D85B0F119CE2FC1C070F52E160B223C4DC1B9139B0F62DE + 3B31B008E28FEC3FEF1186638D8350371370EEC4E60364D783C0A7F71017C330 + C80767CE4082C6CE701FC3A1F3587C10E46CC4E0567D04A70520CD8400C87010 + C06A819FA3018357ED31AC1A414184EC0310F8FB17182CBF19187EFF02FAE23B + 03C38D1B0839AC1678DBE9C1CB155819032A7B40F49E7A51140B4086FE061AFE + E71784BD660D07839AC60F0636163C167858EB60351C54A1EC6F12C3880390C1 + 201F80F0966D1C0C52F2100BD85819184E5CC662818BA51656C341F4A1560914 + 0BDEBE44180EB268E71E0E061169880557EE383134AFDACB886181BDA93AD8B0 + 7F7F11C532CCC2E39DD2700B4006BE7B85301C1454FB0E7230F089FF6078F004 + 6238D6646A63A40A2E11B101D67D9E600B664EE5C09982DEFDB662D8FA491D77 + 59D43B65214ECDF6BCFB187818A5F1265190E12000B300003BBC36ACFF3E8021 + 0000000049454E44AE426082} + ExplicitLeft = 735 + end + inherited lblDesbloquear: TcxLabel + Left = 667 + ExplicitLeft = 667 + AnchorX = 712 + AnchorY = 14 end end inherited TBXDock: TTBXDock - Width = 657 - ExplicitWidth = 657 + Width = 765 + ExplicitWidth = 765 inherited tbxMain: TTBXToolbar - ExplicitWidth = 657 - end - inherited tbxFiltro: TTBXToolbar - inherited tbxEditFiltro: TTBXEditItem - EditOptions = [tboUseEditWhenVertical] + ExplicitWidth = 488 + inherited TBXItem2: TTBXItem + Visible = False + end + inherited TBXSeparatorItem1: TTBXSeparatorItem + Visible = False + end + inherited TBXItem5: TTBXItem + Visible = False + end + object TBXItem33: TTBXItem [12] + Action = actEnviarEMail + DisplayMode = nbdmImageAndText + end + object TBXSeparatorItem6: TTBXSeparatorItem [13] end end inherited tbxMenu: TTBXToolbar - ExplicitWidth = 657 + ExplicitWidth = 765 + object TBXSubmenuItem2: TTBXSubmenuItem [4] + Caption = 'A&cciones' + object TBXItem7: TTBXItem + Action = actEnviarEMail + end + end end - inherited TBXTMain2: TTBXToolbar - DockPos = 267 + end + inherited pgPaginas: TPageControl + Width = 759 + Height = 526 + TabOrder = 1 + ExplicitWidth = 759 + ExplicitHeight = 526 + inherited pagGeneral: TTabSheet + ExplicitLeft = 4 + ExplicitTop = 24 + ExplicitWidth = 751 + ExplicitHeight = 411 + end + object pagContenido: TTabSheet + Caption = 'Contenido' + ImageIndex = 1 + ExplicitHeight = 411 + inline frViewDetallesMedicacion1: TfrViewDetallesMedicacion + Left = 0 + Top = 0 + Width = 751 + Height = 498 + Align = alClient + BiDiMode = bdLeftToRight + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentBiDiMode = False + ParentFont = False + TabOrder = 0 + ReadOnly = False + ExplicitWidth = 751 + ExplicitHeight = 411 + inherited ToolBar1: TToolBar + Width = 751 + Height = 51 + ExplicitWidth = 751 + ExplicitHeight = 51 + inherited ToolButton14: TToolButton + Wrap = False + end + inherited FontName: TJvFontComboBox + Left = 399 + Top = 0 + ExplicitLeft = 399 + ExplicitTop = 0 + end + inherited FontSize: TEdit + Left = 544 + Top = 0 + Width = 122 + ExplicitLeft = 544 + ExplicitTop = 0 + ExplicitWidth = 122 + end + inherited ToolButton13: TToolButton [7] + Left = 0 + Top = 0 + Wrap = True + ExplicitLeft = 0 + ExplicitTop = 0 + ExplicitHeight = 27 + end + inherited UpDown1: TUpDown [8] + Left = 0 + Top = 27 + ExplicitLeft = 0 + ExplicitTop = 27 + end + inherited ToolButton6: TToolButton + Left = 17 + Top = 27 + ExplicitLeft = 17 + ExplicitTop = 27 + end + inherited ToolButton7: TToolButton + Left = 83 + Top = 27 + ExplicitLeft = 83 + ExplicitTop = 27 + end + inherited ToolButton8: TToolButton + Left = 150 + Top = 27 + ExplicitLeft = 150 + ExplicitTop = 27 + end + inherited ToolButton12: TToolButton + Left = 233 + Top = 27 + Wrap = False + ExplicitLeft = 233 + ExplicitTop = 27 + ExplicitHeight = 22 + end + inherited ToolButton9: TToolButton + Left = 241 + Top = 27 + ExplicitLeft = 241 + ExplicitTop = 27 + end + inherited ToolButton10: TToolButton + Left = 386 + Top = 27 + ExplicitLeft = 386 + ExplicitTop = 27 + end + inherited ToolButton11: TToolButton + Left = 511 + Top = 27 + ExplicitLeft = 511 + ExplicitTop = 27 + end + end + inherited cxGrid: TcxGrid + Top = 77 + Width = 751 + Height = 421 + ExplicitTop = 77 + ExplicitWidth = 751 + ExplicitHeight = 334 + end + inherited TBXDock1: TTBXDock + Top = 51 + Width = 751 + ExplicitTop = 51 + ExplicitWidth = 751 + inherited TBXToolbar1: TTBXToolbar + ExplicitWidth = 751 + end + end + inherited cxGridPopupMenu: TcxGridPopupMenu + PopupMenus = < + item + GridView = frViewDetallesMedicacion1.cxGridView + HitTypes = [gvhtNone, gvhtCell, gvhtRecord, gvhtRowIndicator] + Index = 0 + PopupMenu = frViewDetallesMedicacion1.GridGeneralPopupMenu + end> + end + end end end inherited StatusBar: TJvStatusBar - Width = 657 - ExplicitWidth = 657 - end - object pgPaginas: TPageControl [3] - AlignWithMargins = True - Left = 3 - Top = 105 - Width = 651 - Height = 377 - ActivePage = pagArticulos - Align = alClient - TabOrder = 3 - OnChange = pgPaginasChange - object pagArticulos: TTabSheet - Caption = 'Todos los art'#237'culos' - inline frViewArticulos1: TfrViewArticulos - Left = 0 - Top = 0 - Width = 643 - Height = 349 - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - ReadOnly = False - ExplicitWidth = 643 - ExplicitHeight = 349 - inherited cxGrid: TcxGrid - Width = 643 - Height = 221 - ExplicitWidth = 643 - ExplicitHeight = 221 - inherited cxGridView: TcxGridDBTableView - DataController.Summary.FooterSummaryItems = < - item - Format = '0 Art'#237'culos' - Kind = skCount - Column = frViewArticulos1.cxGridViewDESCRIPCION - end> - end - end - inherited frViewFiltroBase1: TfrViewFiltroBase - Width = 643 - ExplicitWidth = 643 - inherited TBXDockablePanel1: TTBXDockablePanel - ExplicitWidth = 643 - inherited dxLayoutControl1: TdxLayoutControl - Width = 643 - ExplicitWidth = 643 - inherited txtFiltroTodo: TcxTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 567 - Width = 567 - end - inherited edtFechaIniFiltro: TcxDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - end - inherited edtFechaFinFiltro: TcxDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - end - inherited eLista: TcxComboBox - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 20 - Width = 20 - end - end - inherited TBXAlignmentPanel1: TTBXAlignmentPanel - Width = 643 - ExplicitWidth = 643 - inherited tbxBotones: TTBXToolbar - Width = 633 - ExplicitWidth = 633 - end - end - end - end - inherited pnlAgrupaciones: TTBXDockablePanel - Top = 323 - ExplicitTop = 323 - ExplicitWidth = 643 - inherited TBXAlignmentPanel1: TTBXAlignmentPanel - Width = 643 - ExplicitWidth = 643 - inherited TBXToolbar1: TTBXToolbar - Width = 633 - ExplicitWidth = 633 - end - end - end - inherited dxComponentPrinter: TdxComponentPrinter - inherited dxComponentPrinterLink: TdxGridReportLink - ReportDocument.CreationDate = 39632.498140370370000000 - BuiltInReportLink = True - end - end - inherited cxViewGridPopupMenu: TcxGridPopupMenu - PopupMenus = < - item - GridView = frViewArticulos1.cxGridView - HitTypes = [gvhtCell] - Index = 0 - end> - end - end - end - object pagArticulosPorProveedor: TTabSheet - Caption = 'Art'#237'culos por proveedor' - ImageIndex = 1 - inline frViewArticulosPorProveedor1: TfrViewArticulosPorProveedor - Left = 0 - Top = 0 - Width = 643 - Height = 349 - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - ReadOnly = False - ExplicitWidth = 643 - ExplicitHeight = 349 - inherited cxGrid: TcxGrid - Width = 643 - Height = 221 - ExplicitWidth = 643 - ExplicitHeight = 221 - inherited cxGridView: TcxGridDBTableView - DataController.Summary.FooterSummaryItems = < - item - Format = '0 Art'#237'culos por proveedor' - Kind = skCount - Column = frViewArticulosPorProveedor1.cxGridViewDESCRIPCION - end> - end - end - inherited frViewFiltroBase1: TfrViewFiltroBase - Width = 643 - ExplicitWidth = 643 - inherited TBXDockablePanel1: TTBXDockablePanel - ExplicitWidth = 643 - inherited dxLayoutControl1: TdxLayoutControl - Width = 643 - ExplicitWidth = 643 - inherited txtFiltroTodo: TcxTextEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 567 - Width = 567 - end - inherited edtFechaIniFiltro: TcxDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - end - inherited edtFechaFinFiltro: TcxDateEdit - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - end - inherited eLista: TcxComboBox - Style.LookAndFeel.SkinName = '' - StyleDisabled.LookAndFeel.SkinName = '' - StyleFocused.LookAndFeel.SkinName = '' - StyleHot.LookAndFeel.SkinName = '' - ExplicitWidth = 20 - Width = 20 - end - end - inherited TBXAlignmentPanel1: TTBXAlignmentPanel - Width = 643 - ExplicitWidth = 643 - inherited tbxBotones: TTBXToolbar - Width = 633 - ExplicitWidth = 633 - end - end - end - end - inherited pnlAgrupaciones: TTBXDockablePanel - Top = 323 - ExplicitTop = 323 - ExplicitWidth = 643 - inherited TBXAlignmentPanel1: TTBXAlignmentPanel - Width = 643 - ExplicitWidth = 643 - inherited TBXToolbar1: TTBXToolbar - Width = 633 - ExplicitWidth = 633 - end - end - end - inherited dxComponentPrinter: TdxComponentPrinter - inherited dxComponentPrinterLink: TdxGridReportLink - ReportDocument.CreationDate = 39632.498287210650000000 - BuiltInReportLink = True - end - end - inherited cxViewGridPopupMenu: TcxGridPopupMenu - PopupMenus = < - item - GridView = frViewArticulosPorProveedor1.cxGridView - HitTypes = [gvhtCell] - Index = 0 - end> - end - end - end + Top = 608 + Width = 765 + Panels = < + item + Width = 200 + end> + ExplicitTop = 566 + ExplicitWidth = 765 end inherited EditorActionList: TActionList - Left = 8 - Top = 160 - inherited actNuevo: TAction - ImageIndex = 24 - end - inherited actPrevisualizar: TAction - Visible = True - end - inherited actImprimir: TAction - Visible = True - end - inherited actExpandir: TAction - Visible = True - end - inherited actContraer: TAction - Visible = True - end - object actFamilias: TAction + Left = 32 + Top = 96 + object actEnviarEMail: TAction Category = 'Acciones' - Caption = 'Familias de art'#237'culos' - OnExecute = actFamiliasExecute + Caption = 'Enviar por e-mail...' + Enabled = False + ImageIndex = 21 + Visible = False end end inherited SmallImages: TPngImageList @@ -789,70 +813,23 @@ inherited fEditorArticulos: TfEditorArticulos item PngImage.Data = { 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF - 610000000970485973000017120000171201679FD252000001124944415478DA - 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 - 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC - 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 - 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 - 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC - E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC - 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 - CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 - 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + 610000000970485973000017120000171201679FD252000001964944415478DA + 63FCFFFF3F03232323033A58BCE9F87F647EAC9F258622B05E6C068034873B8A + 80D92019C62F8F194C1356339CDF399D91A0014B361FFB1FE6208AA299E1F323 + 306D52F90CC5100C03566E3DFC3FD04E02A2F9F727064690462066006A66FC02 + 64FFFAC8603451096E088A01CB361FFDFF8F819981183077D11A86FDAB7B18E1 + 062CDD7CE27F14573FC3B2EF450CD13E86181ABE7DFFCDF0F5DB6F866FDFFE30 + 1CB97897218AB38FC1B85B98E1DC8E698C600396000D8861696058FAB7116CC0 + 94C5FBB0DAEC6CAECF70EED6238668E67AB057500CF8F0E10383A0A0208A0B90 + 6D06B1BF01D9379E3C67387AFE09C389A37BD15CE06B01B47907434EAC13C3EF + 3F7F19662E3F8862BB898606C3EFDFFF1896EF3DCFA0A5C0CD306FE9265403FC + 9D20362F5CB71F4CE7C47AA01890D5BC164C7716F980D56018606BAC0656B079 + EF2986F82047AC6150DEB785A13CD911AC06C300234D05867DC72F30B8D818E1 + 8DC2494B0E63F702281075D455884A07576EDEC134404A5480E1DAED07441900 + 021806F44D5D44B46618801B400900007F4518F05E90AAF20000000049454E44 + AE426082} Name = 'PngImage21' Background = clWindow - end - item - PngImage.Data = { - 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF - 610000000970485973000017120000171201679FD252000000F84944415478DA - 63FCFFFF3F03084C59BC03C2200072E33C19616C905E46640372623DF06A06AA - 6198B77413C3F99DD3194936E0DFBF7F0CD396EE62D051576128AAEB031B42B4 - 0120CDBFFFFC6398BD720F43B0A70DC3CD7B2FC0869CDB318D91A00130CDBF7F - FF6558B06E3FD80B3040D00064CDBFFF40F0AA6D47C1722083F01A804D3304FF - 63D8B2EF147E03F06906D13B0F9DC56D0058E16F540D20FC07C607CA1D387911 - BB01E991AE043583F847CF5EC16E4052881341CD207CEAE275EC06C406D813D4 - 0CC2E7AFDEC26E40848F2D41CD20B12B37EF603720D8C38AA06610C069809F8B - 39C3A63D2789C994D80D404EA6C400900100F58BBFF09BC1E25C000000004945 - 4E44AE426082} - Name = 'PngImage22' - Background = clWindow - end - item - PngImage.Data = { - 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF - 61000001A34944415478DA9D922177E3300CC7655636C3B20596CD702C86C7E6 - B141C342EF1BE42318167AECD81916BA6CD0638582852A0BCBA46CCDDAF46E77 - EFF4E2A7D8F2FF2759B6724FD9354BF30B09810EF5B16C43866FACAC7DA67DD5 - E364655A15020ECEDD42AD47C839EE4AE9EC5CE492EBB2CF9DFC676BCA83772D - 6C133CEFE14D395F066B0C032AA4346AD5B9905D20C49BD255350196D4BEF40D - C48A47657F44073D05CEDC9AFBF0585F63B61D1379AF7BF2B702C67D8509B0F6 - 4329E52D1DE8CE2CF557B6B93144CAF13C04767702CCED62B12433587FB99141 - 4E1C03C2B70011B72EC02E479843CEAD6E60D04BEED9C1825B47A54E6273CF15 - F73CE9095226D00B891000FB66C1733E2F71CCACCC08EA36043165755141D334 - 2CE6EEAFE429F0552F3468CD5E370CE05842F04E4FE2DFF6A05979CE04633524 - 15F08707024484E0F9EA36C880ACAE7A70DE87931D7B0190BCD0B1326F11E256 - 20FF0098C454D92324167A5320163B95FF47C0518EC02219F4E9D3AB01C780F4 - 3780910A46D167763E3FF508B95A59BA105F037E76038EC28FE6C9B58DCDEC3F - E273F115E07FEC1D6B02010E884AA1F00000000049454E44AE426082} - Name = 'PngImage23' - Background = clWindow - end - item - PngImage.Data = { - 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF - 610000000970485973000017120000171201679FD252000001004944415478DA - 63BC5C22F99F8148A0D3FD8C115D8C1164806A4B0D84F7FD3B03C3FD3B0CB3DB - 3732A42EC614CB5985CF00A8C2E9177D1858B6A5420C4013C36D4075315821C3 - F5AB0CD37F95430C98852986DB80287FB02D300036A012530CA701071E121788 - F8C3002DC072573F67FCFF9F7004E10C449001403967A09A3D78F4BBE00C44A8 - 0160C3D9D9B33074FEFC398D61766C0BEE408419004C3C60C5700072E98FEF0C - D3771882D5E10C44AC0680347F7807A6A79F748618802FA0AE944A210C80697E - 0FC43F7E324CBF194C82011F7A119A3F7C80B8E0552A09063CA8466806BBE03B - 3CB0091A008A85E9CBE5B1CA13638033308071A6030779061700E6FAF742387F - 63F70000000049454E44AE426082} - Name = 'PngImage24' - Background = clWindow end> Bitmap = {} end @@ -1627,50 +1604,48 @@ inherited fEditorArticulos: TfEditorArticulos item PngImage.Data = { 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D - F80000000970485973000017120000171201679FD2520000018C4944415478DA - 63FCFFFF3F032D01E3A8054459C0C8C8C860E091F0FFC28E058C843490AA8E3E - 16187A26D22C9C864910812CA079102DD87000251E40E23F7FFE62F8F90B827F - C0D8405A47439528753D15A98C2816C4FBDBA3D8FEFBCF5F08FEFD17CEEE98B1 - 9461626D1651EA26D565E3B6009BA64BB75E306CD8B183617A733E51EA66B414 - 60B7009BA6DF7FFE315CBFF78A61F9860D0C0BBACB8952B7B0A70261C1FCF5FB - FF270438E0D404A2EF3C7ACB307FC54A861593EB8852B7724A3DC282192B76FE - 4F0A76C6A9E91750ECD1F30F0CD3162C625833BD8928759BE6B4212C98B868F3 - FF9450379C9A40F8C59BCF0C7D336633AC9FDD4694BA5D4B7A111674CD59FB3F - 2DCC13A7A65FBFFF30BCFBF89DA175E21486CD73BB88527778F51484054D5397 - FFCF8CF4C1A9E9D7AFBF0C5FBEFF62A8EDEC61D8B6B09F2875A737CF415850DD - BFF07F76B43F3889E103152D1D0CDB164D204A1D4A5151D231FBFF2F600EFCF5 - EB37C3F71F3F187EFCF809A47F42E89F20FA0730DCFF8035DB599912A50E6E01 - 2DC1D0B7000029AD9AF9DFD03E1F0000000049454E44AE426082} + F80000000970485973000017120000171201679FD252000002434944415478DA + B593DB6B13411C85CFA8AF0A11C5BED882977AA11A8A86A64AB5DA68ABB4DA17 + 9B071B94824F5510FF9022D8B4A2226AEA5DA434822951BC556D55225544E905 + A448895048369562B6D9ACFB1BC9CA38BBEB46D203CB4C7667BEEF4CD865BAAE + 6321C348C018B35D101978EDD82074A8D67633673B09081EDCB3426CA42A40D6 + B88C91E6BE536FF07EB097152D7003879A416FA21297AF0F584A6C056EE1BF47 + 053D63014B89A540826B3F0D5086C30B406859735E18C3D31D924412B8827368 + 4680334348E99E392D480401C19DDE26B75114059722FD5C620AFAA2C3FAFED9 + E3882FBB8AA3CD358E80F9790D2ABF727F8D1A129FBF625FE618EE6867F94912 + B11E662BE88EC45CB76ED8518DAC9AC3A7C96FF682743A0D8FC7637B02A7E604 + CF1ABF27A692285FBE1213E33F70EEE67951D0DEE247B86F109DED8D459FC0E7 + DD04D5904C2567904AA5103C5C8FC6B633A2A0ADC9C7175FB81547CBAE1A5454 + 7890CFEBBCE1F7E4AC25383537C79B131C2AC3E8E4184E869A7839E92F6ADD5B + 6D6EBC72FF0997AC2A5BCAE1D1E7239602EFDA4A684BF2589C5BC4E12782017E + FFE2ED47B2E060DD1661F38DE80B2E2138B5B20A352509C143ADBBCDFB91FE67 + B220E0DF2C01EEC55E99ADEC426D8F1CD829DCBBFBF0A52CA8DBB64158147D3C + 22B4720A356E6EF8F3F63D30F64A025FD51A73417C2821B5FA57A875BDDFCBE7 + 4F87476541D5FAD5FCE1D0DB8F429B6242CDB76FDD88771FBEC88275E565FC41 + A1C5FF86DA532CBF64B297228E272855244157F85AC9E085988285CC2F0A951A + EF05170AF90000000049454E44AE426082} Name = 'PngImage21' Background = clWindow - end - item - PngImage.Data = { - 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D - F80000000970485973000017120000171201679FD252000001684944415478DA - 63FCFFFF3F032D0123B2054BB79C24CBB6DE290B19CEEF9CCE882C063317C382 - 681F73920C07EA619016136628AAEB43B184AA1618682A30BC7EFB19C512AA58 - F0F7EF3F8615DB4F33D818AB337CF9F613C5128A2D0019FEF7EF7F86D5BBCE30 - 38596833FCFAFD07C592733BA6319265C1FF7FFF19FE02F11FA00520F6BABDE7 - C0918C0EC8B200D9F0BF50FCE7DF3F8623E71F307CFDF695E1EDDBB76075F396 - 6E22DD025C86A3B337EF3D45BA05C41AFE0F18275B0F9C26CD02520C07A9DB71 - E80CF116906A3848DD9EA3E788B3801CC341FCFD272E10B60096C6C106FCFF4F - B4E1207CE8F425FC1644789AC20DC7662818FFFB8FD311C7CE5EC16F41A89B09 - 4986A3AB3B7DF13A7E0B829C8DC8361C449FBB7213BF057E8E06641B0EC217AF - DFC66F81B79D1ED98683D45DB97907BF051ED63A641B0E02042D70B1D422DB70 - A22CB03755C799C6B1E50964C389B2C0C648155C225202F05A80ADF22007C02C - 0000E2A9A9FE0847986E0000000049454E44AE426082} - Name = 'PngImage22' - Background = clWindow end> Bitmap = {} end - inherited dsDataTable: TDADataSource - Left = 8 - Top = 128 + inherited JvAppRegistryStorage: TJvAppRegistryStorage [8] end - inherited GridPopupMenu: TPopupMenu - Left = 40 - Top = 128 + inherited dsDataTable: TDADataSource [9] + Left = 24 + Top = 136 + end + object dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 144 + Top = 280 + object dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel + GroupOptions.CaptionOptions.Font.Charset = DEFAULT_CHARSET + GroupOptions.CaptionOptions.Font.Color = clWindowText + GroupOptions.CaptionOptions.Font.Height = -11 + GroupOptions.CaptionOptions.Font.Name = 'Tahoma' + GroupOptions.CaptionOptions.Font.Style = [fsBold] + GroupOptions.CaptionOptions.TextColor = clHighlight + GroupOptions.CaptionOptions.UseDefaultFont = False + end end end diff --git a/Source/Modulos/Medicaciones/Views/uEditorMedicacion.pas b/Source/Modulos/Medicaciones/Views/uEditorMedicacion.pas new file mode 100644 index 0000000..908b101 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorMedicacion.pas @@ -0,0 +1,269 @@ +unit uEditorMedicacion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + uEditorDBItem, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock, + TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane, + uCustomView, uViewBase, JvComponentBase, + StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit, + uViewIncidencias, uMedicacionesController, uViewDetallesBase, uViewDetallesMedicacion, + dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales, + uIEditorMedicacion, uBizMedicaciones, uViewMedicacion, + uViewDetallesDTO, uViewDetallesArticulos, uDAInterfaces, + uViewDetallesArticulosParaVenta, cxLabel; + +type + TfEditorMedicacion = class(TfEditorDBItem, IEditorMedicacion) + pagContenido: TTabSheet; + dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList; + dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel; + frViewDetallesMedicacion1: TfrViewDetallesMedicacion; + actEnviarEMail: TAction; + TBXSubmenuItem2: TTBXSubmenuItem; + TBXItem7: TTBXItem; + TBXItem33: TTBXItem; + TBXSeparatorItem6: TTBXSeparatorItem; + + procedure FormShow(Sender: TObject); + procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction); + protected + FMedicacion: IBizMedicacion; + FViewMedicacion: IViewMedicacion; + FController : IMedicacionesController; + + function GetController : IMedicacionesController; + procedure SetController (const Value : IMedicacionesController); virtual; + + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); virtual; + + function GetViewMedicacion: IViewMedicacion; + procedure SetViewMedicacion(const Value: IViewMedicacion); + + procedure PrevisualizarInterno; override; + procedure ImprimirInterno; override; + procedure GuardarInterno; override; + procedure EliminarInterno; override; + + property ViewMedicacion: IViewMedicacion read GetViewMedicacion write SetViewMedicacion; + + procedure OnPacienteChanged(Sender : TObject); + + //Si queremos crear otra vista para el editor heredado solo tendriamos que + //sobreescribir este metodo + procedure AsignarVista; virtual; + function PuedoImprimir: Boolean; override; + + public + procedure PonerTitulos(const ATitulo: string = ''); override; + property Controller : IMedicacionesController read GetController write SetController; + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uViewDatosYSeleccionPaciente, uDataModuleUsuarios, uPacientesController, + uBizDireccionesContacto, schMedicacionClient_Intf, uDialogUtils, + uEditorDBBase, uDataTableUtils, uFactuGES_App; + +{$R *.dfm} + +{ TfEditorMedicacion } + +{ +**************************** TfEditorMedicacion **************************** +} +procedure TfEditorMedicacion.AsignarVista; +var + AViewMedicacion: TfrViewMedicacion; +begin + AViewMedicacion := TfrViewMedicacion.create(Self); + with AViewMedicacion do + begin + Parent := pagGeneral; + Align := alClient; + dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1; + end; + ViewMedicacion := AViewMedicacion; +end; + +constructor TfEditorMedicacion.Create(AOwner: TComponent); +begin + inherited; + pgPaginas.ActivePageIndex := 0; + + AsignarVista; +end; + +procedure TfEditorMedicacion.CustomEditorClose(Sender: TObject; + var Action: TCloseAction); +begin + inherited; + FViewMedicacion := NIL; + FMedicacion := NIL; +end; + +destructor TfEditorMedicacion.Destroy; +begin + // Utilizar mejor OnClose; + inherited; +end; + +function TfEditorMedicacion.PuedoImprimir: Boolean; +begin + Result := inherited PuedoImprimir and (not Medicacion.Paciente.IDIsNull); +end; + +procedure TfEditorMedicacion.EliminarInterno; +begin + if (ShowConfirmMessage('¿Desea borrar este albarán de cliente?', '') = IDYES) then + begin + FController.Eliminar(FMedicacion); + inherited + end +end; + +procedure TfEditorMedicacion.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(FViewMedicacion) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Medicacion) then + raise Exception.Create('No hay ningún Medicacion asignado'); + + Medicacion.DataTable.Active := True; + pgPaginas.ActivePage := pagGeneral; +end; + +function TfEditorMedicacion.GetController: IMedicacionesController; +begin + Result := FController; +end; + +function TfEditorMedicacion.GetMedicacion: IBizMedicacion; +begin + Result := FMedicacion; +end; + +function TfEditorMedicacion.GetViewMedicacion: IViewMedicacion; +begin + Result := FViewMedicacion; +end; + +procedure TfEditorMedicacion.GuardarInterno; +var + bEsNuevo : Boolean; +begin + inherited; + + ShowHourglassCursor; +// frViewDetallesPedidoCliente1.SaveGridStatus; + frViewDetallesMedicacion1.BeginUpdate; + try + bEsNuevo := FMedicacion.EsNuevo; + FController.Guardar(FMedicacion); + finally + frViewDetallesMedicacion1.EndUpdate; +// frViewDetallesPedidoCliente1.RestoreGridStatus; + HideHourglassCursor; + end; + if bEsNuevo then + ShowInfoMessage('Esta medicación se ha dado de alta con la referencia ' + FMedicacion.REFERENCIA); + Modified := False; +end; + +procedure TfEditorMedicacion.ImprimirInterno; +begin + inherited; + FController.Print(FMedicacion); +end; + +procedure TfEditorMedicacion.OnPacienteChanged(Sender: TObject); +begin + if Assigned(FMedicacion) then + FMedicacion.Paciente := ViewMedicacion.ViewPacienteMedicacion.Paciente; +end; + +procedure TfEditorMedicacion.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := ATitulo; + if (FTitulo = '') and Assigned(FMedicacion) then + begin + if FMedicacion.EsNuevo then + FTitulo := 'Nueva medicación de paciente' + else + FTitulo := 'Medicación de paciente' + ' - ' + FMedicacion.Paciente.Nombre; + end; + + inherited PonerTitulos(FTitulo); + + FTitulo := FTitulo + ' (' + AppFactuGES.EmpresaActiva.NOMBRE + ')'; + Self.Caption := FTitulo; +end; + +procedure TfEditorMedicacion.PrevisualizarInterno; +begin + inherited; + FController.Preview(FMedicacion); +end; + +procedure TfEditorMedicacion.SetController(const Value: IMedicacionesController); +begin + FController := Value; + + if Assigned(FController) then + frViewDetallesMedicacion1.Controller := Controller.DetallesController; +end; + +procedure TfEditorMedicacion.SetMedicacion(const Value: IBizMedicacion); +begin + FMedicacion := Value; + + if Assigned(FMedicacion) then + begin + dsDataTable.DataTable := FMedicacion.DataTable; + if Assigned(FViewMedicacion) then + begin + ViewMedicacion.ViewPacienteMedicacion.OnPacienteChanged := NIL; + try + FViewMedicacion.Medicacion := FMedicacion; + frViewDetallesMedicacion1.Detalles := FMedicacion.Detalles; + frViewDetallesMedicacion1.Medicacion := FMedicacion; //Para poder sacar los descuento del articulos segun el cliente seleccionado + finally + ViewMedicacion.ViewPacienteMedicacion.OnPacienteChanged := OnPacienteChanged; + end; + end; + end + else begin + dsDataTable.DataTable := NIL; + + if Assigned(FViewMedicacion) then + begin + FViewMedicacion.Medicacion := NIL; + ViewMedicacion.ViewPacienteMedicacion.OnPacienteChanged := NIL; + frViewDetallesMedicacion1.Detalles := NIL; + frViewDetallesMedicacion1.Medicacion := NIL; + end; + end; +end; + +procedure TfEditorMedicacion.SetViewMedicacion(const Value: IViewMedicacion); +begin + FViewMedicacion := Value; + + if Assigned(FViewMedicacion) and Assigned(Medicacion) then + FViewMedicacion.Medicacion := Medicacion; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uEditorMedicaciones.dfm b/Source/Modulos/Medicaciones/Views/uEditorMedicaciones.dfm new file mode 100644 index 0000000..f442c95 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorMedicaciones.dfm @@ -0,0 +1,2864 @@ +inherited fEditorMedicaciones: TfEditorMedicaciones + Caption = 'Lista de medicaciones de pacientes' + ClientWidth = 583 + ExplicitWidth = 591 + PixelsPerInch = 96 + TextHeight = 13 + inherited JvNavPanelHeader: TJvNavPanelHeader + Width = 583 + Caption = 'Lista de medicaciones de pacientes' + ExplicitWidth = 583 + inherited Image1: TImage + Left = 556 + 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 + 4D410000B18E7CFB51930000026A4944415478DA63FCFFFF3F032D0123B2054B + B79CA49A6DD13EE68C582D004A906CD8DFBFFF80F83F980601EBC07C86733BA6 + E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3C275FB19E62DDD84DF02525C + EE507A9081455D89E1C08C1D0CEF0FC6312CD97890B005D87C802E06027B3BEC + 189C2B0E311CD97F0BCC7FB32F8661F996C394F9E0FF3F605803F11FA0EB41EC + 3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F18E70860DBB4E106701CCDBA4 + 80075B431936EF3D459C05F8520E3600D2B3A8508F61EB81D3C45B802BA86096 + C3E4616AE7E7EB32EC387486721F4C2C7064F8CA7E8E41F8D527BCBE7AF2D589 + 341FC02C6D2BE76788F0FBC520C1F883E1D74F0608FEC1C0F0134603F1C91344 + 58800DCC4C6464884D85B0F119CE2FC1C070F52E160B223C4DC1B9139B0F62DE + 3B31B008E28FEC3FEF1186638D8350371370EEC4E60364D783C0A7F71017C330 + C80767CE4082C6CE701FC3A1F3587C10E46CC4E0567D04A70520CD8400C87010 + C06A819FA3018357ED31AC1A414184EC0310F8FB17182CBF19187EFF02FAE23B + 03C38D1B0839AC1678DBE9C1CB155819032A7B40F49E7A51140B4086FE061AFE + E71784BD660D07839AC60F0636163C167858EB60351C54A1EC6F12C3880390C1 + 201F80F0966D1C0C52F2100BD85819184E5CC662818BA51656C341F4A1560914 + 0BDEBE44180EB268E71E0E061169880557EE383134AFDACB886181BDA93AD8B0 + 7F7F11C532CCC2E39DD2700B4006BE7B85301C1454FB0E7230F089FF6078F004 + 6238D6646A63A40A2E11B101D67D9E600B664EE5C09982DEFDB662D8FA491D77 + 59D43B65214ECDF6BCFB187818A5F1265190E12000B300003BBC36ACFF3E8021 + 0000000049454E44AE426082} + ExplicitLeft = 563 + end + end + inherited TBXDock: TTBXDock + Width = 583 + ExplicitWidth = 583 + inherited tbxMain: TTBXToolbar + ExplicitWidth = 583 + object TBXSeparatorItem17: TTBXSeparatorItem [10] + end + end + inherited tbxMenu: TTBXToolbar + ExplicitWidth = 583 + object TBXSubmenuItem2: TTBXSubmenuItem [4] + Caption = 'A&cciones' + end + end + inherited TBXTMain2: TTBXToolbar + Visible = True + end + end + inherited StatusBar: TJvStatusBar + Width = 583 + ExplicitWidth = 583 + end + inherited EditorActionList: TActionList + inherited actNuevo: TAction + ImageIndex = 21 + end + inherited actPrevisualizar: TAction + Visible = True + end + inherited actImprimir: TAction + Visible = True + end + inherited actAnchoAuto: TAction + ImageIndex = 22 + end + object actGenerarEtiquetas: TAction + Category = 'Acciones' + Caption = 'Generar etiquetas' + Enabled = False + ImageIndex = 23 + Visible = False + OnExecute = actGenerarEtiquetasExecute + OnUpdate = actGenerarEtiquetasUpdate + end + end + inherited SmallImages: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001754944415478DA6364C001D6ECBE900CA4E640B9 + 2921AE0673B1A963C4A739C8598FE1DB8FDF0C33966C67505054C06A08232ECD + 3EF6BA0C250B7F315C7FF88F6179E15F86456BF76135841197CD79737F324C4E + E1008BF345BC63B833959561F13A4C4318D13507BBE833E4CEF9C160ACC1C290 + 60C30296734D5FCD70F2A333564318B1D90CD20C02D72E9C04D33C92A60CAFDF + FF6358B8E71B86218CE87E866986D90E738186A92FC397EF0C0C6B8FA21A0232 + E03FBACD5FBEFF07E30A3F36B801323ABE0C3F7FFF67F8FE938161EFC5EF7043 + C00678586B32F8B7FD61887167836BFEF59B81A12E186180A8BA0F58F3E76FFF + 194EDDFE0136A07DDA1AB001C90FEE3F98131BE4C4A092FD9BA12A8A07AC19E4 + 67582C800CE051F0C1D06C636994020F44902171214E0CCA99BF19E25DB8E09A + 91C301161330CDE040448E46649764D85C473160C6114D0CCD581312B221CEFA + 9C589D8D3521E13204047069C69B99608680002ECD380D4036E4C98B77383583 + 000005100EB8572466A60000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001074944415478DA + 63FCFFFF3F032580912A06303232E2543079D1766F201505C520B02C37CE331A + C400EBC5670054F3960057330631617E0690B2F357EF336CDA7786A1B5289211 + AF01C89A254505183E7FFDC1F0F5DB0F06311101A021F7184E5DBA733927D643 + 0FAB01E89ADF7EF802D6FCF5FB4F866F406CA6AFC21095DBC6B06C7215238601 + C4689EB27807C3B153E7300D2056F38B371F18B62EDA79EDFCF9F9DA700348D4 + CC70E1C2024420022548D68C128D40C906A0E67A5234631860A6A752AF202346 + B466740396C2521AD020B0A49EA622C39C95BB716AC64889C0405C0A541C2501 + 4C2830804F33D6A40C8A09A0A62DF7EEDD03F3AF1FB98D372301A39191E2DC08 + 0029AC32F01825AACD0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001514944415478DA + 635CB5E3DC7F062C20CCC388918108C0083220D4DD104570F5CEF30CEDFDB319 + CEEF9C4ED0109C06D818AB3278C7941134046E40CBAA0760819A3005B80B6000 + 9F21182EF8F1F30F10FF86E05F7F1882926B883300E60264C0C1805D5F69B802 + 238601E836FF04E2CDA7BF339484C9A368EE59F59261D9C1BB0CE7A75933C20D + F0B4D56698B0E5195617601AF09021DA4998C1297307C38D35A18C60031CCDD4 + C036FF84DAFCE7EF3F307DF0FA7FB001112D57C09A57D4E8800D98BBFA346A18 + 58EA2BC235C39C0FC2671EB0A2B8E0DBCF7F0C5F7FFE05E27F60B65DE26C8801 + 7316ADC11A58AEFE69282E4009C8284506F7F4B90C781349F7CA07FF4106A0DB + FCFD171003E980BCF9840D48F5916148EFBB8E2197EC2BCB1059B290B001512E + 92609BC1B602F1EF3FFFC1F437204EAE5A4CD8007F5B71B8E66F480681407AED + 12C20674CCDE884F0903000B1A00979E81F9710000000049454E44AE426082} + Name = 'PngImage3' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002574944415478DA + 63FCFFFF3F03258011D9004646468696696B17FFFECAD0DE581A7C0D596155CF + 0AF77F7FFFD975944755A3E8413760EA929DAF393938D62785D8A7C1C48BBB17 + 711BABAB5C7AF9F6FDDFC2446F354206BC75B6D4E35ABCFE90536B49F87190F8 + E4853B2779DA1BE46EDE7FE62ED00015BC06F4CFDBBA24CACF26FAD0A99B5B42 + BDCC7C6BFA563B057B986FFDFDE72FC7D20D072B26D62574E235A0A26DA999B0 + 98E0F2607713F9251B8E85692A4B5698E9AB9AAEDA7EE2DEBB571F3DDAAB226F + E33500044A3B979507B898B6BF78F3FEA3B1B612FF992BF7FF1F3975336E425D + CC52903C4103EAEBEB5998450D8FAA2A889BC94888306CD977664D675964284C + 1D0103EA99F8DDF50C8CD439E3FFFE67CB7DFFE9DB1F7E3E9EC637DF5977DC98 + B3E73C0343E33F9C0670B8AC555292175BC8F6FF9BEEDF6FEF995E7DF8F95941 + 55EDE5AB17AFBEFCFAC7C2F1ECC5FBEF0C4C4C89FF0F47DDC36A8056F2A103FF + DEDEE465FBFFB5F1D577EECB8C8CFFF72AAA6A7CFFF4F842CED54D7907184CE7 + 4631B0B227FC3F1AE38AD5008D981DDFD9BEDE48BABCA1703983DE226E09891F + D754B4756F7DBC7FBAEFF286BCED0C32BD9C0CB222B7FF1F8B93C16A805ED2EE + D74CEFAF445FDC50B48BC172858E34DFFB6582B2DAFB38BEDCFC7166456A0583 + CE0471063EA103FF8FC66A623540C063F55669B6E747AE3DE3E861E5E158A9C8 + FBF1D1FD6F628BF4147977FC7A79D3E3F2736E39060E9E84FF47A202B0C782ED + 627356C6FF935998FEB349737FB9FE95E975F2F32D8DDF98EC9647B1FCFF55F0 + EB1FD31FA08EC2FF87634F6235801C0000382740F0DFD997BD0000000049454E + 44AE426082} + Name = 'PngImage4' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002854944415478DA + A5935D48536118C7FFAFDB8CCD557E7F34B33167F9119617A91596495D781304 + 451021A651362821B1ABA49B6EA4460961D88542055D84DD6545415992174994 + 9625CC8F9C329D9B5F3BE9CED9D9797BCEA1C932A3A0079EC3CBE13CBFE7FF7F + 9FF330CE39FE2798FAB80BA4E61559EB2551E67B07279AE8D51FA98F2CC99546 + 031A3D6E5FF329993F631D80B52227A6D7929F9BAEA459D1D73BE8DC3330D6B8 + 1AD206641414DA5A6224E1E8ECA47779660955D532EF642F1371BD74331A14FA + 9C27A4439F5D88777DAE1B65FD230D11485786B9363D65FD35C1EB4B9817427E + 9F80C335C05BD53E23B2A934132FB23662B71406C2B14698F38AF0E9EB9473E8 + E3C8655BD686D6F858A5DA3F27B04511E37E0195B5C0A00AD6003FE5259758F0 + 3AD1843C15125218CCB6AD707FF34EAC93973217041154ECF608D8770E188BD8 + 5A01A8A1DEC5F60CF4980CB0A890E8A47AFFF477EC3F037C8EBE975F006ADC37 + 60A7351E3D061DE222C522A5270047AD82DBAB27B21AC09EDA373525E9A52BCB + 7E5F4CB4822509BE80848AB3C0C09A806380EE7CA1BDC55EB4CDE17AF2984932 + 75A60CCA088739742A84CE1E49C1010730F41BA03B27CD595C517CB1FFF92B04 + E6035AF142101DCB12DA743AB413243FA468331D0F01E51780D1154057AAF148 + D92E7BE794778E8DB92634C901116FA6451CAA27214EC06802AE5227AA839ED2 + 45A0729AC6A406182DD9329C10A7B7F57D18D63A93DF99D92076905F4FB4DF56 + A08C20ED9476027CD1209C7BD9FBDC947BC1C0E2C9596A4B003E27E2F8E9301E + AEB507B700334968A6631D019C759C5F627780822413BA194312CDFB41958C13 + 7FDB4052739000430ECEDD913F313B568F9B8B326AC8F7CCBFAEB27A073F0058 + 5538F0EAB25B380000000049454E44AE426082} + Name = 'PngImage5' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001934944415478DA + 6364C002662430FC47E6672C606064C001C0122726A06AB870818121A1632A98 + 5D169DCD10E58B90B32840358C11A4D920622A5C604145365833482308D4F5E6 + 3134154F62A8EE4805F35B2B66334CDA8B3004C50098E62F2F6E823581347F7F + FB80E1E58DBD0C8BD67D6588F6656258BAF91F7E03AE3D66C009081A800CD61F + B161C0072243F419711AF0F7F777864D275D192282F5B06A5EB1F23C43D7FCD9 + 0CE7774E67C43000A41984B79EF3C36AC08F9F7F18366CB8CC10116EC860E491 + 85EA0298E6BFBFBE33ECB8120E36C071E64DB8E6ED09CA40037E33ECD87E03EC + 02142F206BFEF7FB07C3AE9BF1282E00D90CD20CC6BFFE30EC3B719561CAECE5 + 100374837B503483E8BDF733305C000333DC04198E9EBB893040CBAF1945F3DF + 3FDF190E3C2E041B806EF34F283E73E52EC200758F2A865B3B3A506CB927739E + C1C75383C177F17D0C17745971325CBEF51062004820CF19352F808065E64506 + 172748A0C16CFDF3F71F9806B9E4F683A70803B081E56B2EFEB7B19663D875F4 + 32CEC444D080AED9331808010085EE16005695A1DA0000000049454E44AE4260 + 82} + Name = 'PngImage6' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000002164944415478DA95D35F4853511CC0F1EFD491DD + D9587F2C83AC8C328DFE4949908BC0AC142A147BC8077B88A01EECA5E718F958 + 410486C384B50A1F7A991023CBEC0F594F81E5D4C211E130D7D4DDCDA15B5EEF + DD5DD74B1B8EA9D90FCEC3EFC0EFC3EF9CF33B06FE46CBE3AE042B886B176B0C + 0B73C342A0A9B17AD9E2FB4F5EE0E878C6E79776C37F03AAAAD2DAD1CDDEDD3B + B96EBB9B425604CC17CB8A4AFBD31EEA6BAC0CFF08A4907F02C962598EE374BD + D58F908C2581442241603C8CCBFD89D86C9C9C9C1C0A365A282DDE446FDF37E6 + AB9277B128F02B10C6DDF385CD074B10D6593019211E9CC2EF1DA5A0C0821895 + 68BE6D5F1A6873BEA6D07A0879951945CD626B1E6C372978BD7EBC5F4710D608 + DC6A712C0EC84A9C7B6DDDECAF3B459E315B3B3B685B9835448DCD30F4BE0FC1 + 94CB9D56672670A5E1A47E590F1EBDE374C3091D88CD4120063359902B4719F9 + D88F201835E0612670E97CA5DE41578F870A6B296BD79B096BC0B8B6C4DF3252 + 4024E81960832071B3FD7926D0587B5C7F32DFE8243FC74214EDD906AB4D4C29 + 1011230487BC1419BFB32BE8E06CE7BE4CE0C299637A07B3928CCF37816F4CD4 + F2040943365234823134C8E1FC094A8A8D4C0DF6B2E5EA8774A0BEFAA80E283A + A21012A791E6E6B4618249FF08AFEC97292B2CA7B64221BFAC9C90E74DFA289F + AB3A42FFB07FD90FE5B255A510B754379D062C1CD3E5E240AC931D9537B03537 + 19FE00839434866373C4BA0000000049454E44AE426082} + Name = 'PngImage7' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD252000001724944415478DA6364A0103062135CB1E2C26E20 + E5824F63448401235603809AA381D412374F5506413E2EB0D89FBFFF187EFFF9 + 0BC62F3EFD6728A999C0B0795E15A60150CD1540CD3A7B4FDCC5B0D5D94299E1 + CAD3BF0CDD3D53F280064CC666C06EA066176C36FF05B25F7F6544B11DC50098 + D3C3C3F519D6ECBA8C61BBBDA922C38D17FF41B6C384B6020DF261846AFE0FA4 + AE809C0EB21DDD6610FFCF9F7F0CE91553194CF49518A4558D1836AE59037609 + 23C8E6AB4F2E2C2136DAE4B5AC186E9CD9C570F3C1278801B53D0BFE3715C7E3 + D4F0E5C75F86CFDF8118487FF9F18F61C3BA350C12CA260C3B366F4218408CCD + 17AE3D03D3065A520CEC42AA0C278F1CC4EF02749BBF82F0CFBF0CC7F66E64F8 + C92AC970FDE259DC06A06BAE3DEFC390ABB49EE1FEB5530CCF9F3F6778FA919D + E1F5D3FBD80DC066F3AC743D8680EEB30CAFEE9E61D8BEF72C4CA90CD080A770 + 03A62FDB45542C400D006B062724DFA4366920FD84D86844D68C9212C905001F + 16FA1194E3DBC30000000049454E44AE426082} + Name = 'PngImage8' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000774494D45000000000000000973942E000000097048597300001712 + 0000171201679FD2520000015F4944415478DA6364A000FC3060F8CF884D62C5 + 8A0BBB81940BB258E7FC99286A8EBF9CCEC06EE4C5C088457334905AE2E6A9CA + 20C8C70516FBF3F71F8399770E44D3F9FF0C3F0D19219AE76D6364C4A2B902A8 + 5967EF89BB2806B7F54D6738E7C4C1F073793F58B3D1537986F33BA76318B01B + A8D905D9E6DF7FFE82B1437011C3B91DD31818BA8AC07246FB7EA01A00737A78 + B83EC39A5D9731C205E40274003700A8F93F90BA02723AC876649BFF02D920FE + 9F3FFF18D22BA63298E82B3148AB1A316C5CB38661F5B92A064690CD579F5C58 + 4228CAB6EC3E893D166A7B16FC6F2A8EC7A9F1CB8FBF0C9FBFFF65F08E2CC01E + 0B20038849342017608D055C2E80D9FC19487FF9F18F2125B3147B2C6033005D + 73ED791F86E7B334B1C702BA01E89ABF02F1AC743D8680EEB30CAFEE9E61D8BE + F72C4CA9CCE679554FE1064C5FB68B98A0801900D60C6230FA26B54903E92744 + E946B219C661244123560000C9AFE6B31530CB2E0000000049454E44AE426082} + Name = 'PngImage9' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000016A4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D18616C905E466403A27DCCF16A06AA + 61E89DB290E1FCCEE98C241BF0EFDF3F86E5DB4E33488B093314D5F5810D21DA + 0090E6DF7FFE31ACD97596C1C9429BE1E6BD176043CEED98C688D3804D0F0E30 + F45E6A02B37779EC62E05CC0C6B058EA38D80B3080D30090E6805D4E182E7911 + FC91E1C4E5C70C8F1E3F6298B774137603609AFFA4FC013B1B64738BB13743CD + D9AD0C8FFDDF81C5B6EC3B85DB00A6594C289A91C13DEF3740F1BF0C3B0F9DC5 + 6D0048C1EFDF7F21F49F7F50FA2FC31F181F2877E0E445EC068479988015F02C + E640B1F98EE72BB066CDDD120C676D1E311C3D7B05BB0181CE8660DB049773C3 + FD8DAC3957BB80219A379FE1D4C5EBD80DF0B1D7032B165BCD8B110330CD200B + CE5FBD85DD00776B1DB002E9F502609B13CF8781E50C840DE09A41165CB97907 + BB014EE69A1801060B44986610C06980ADB11AC3A63D2789C994D80D404EA6C4 + 0090010087546EF0ACB0C7920000000049454E44AE426082} + Name = 'PngImage10' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001024944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305B3E7F1A2323BA66090111A9272F9F301CD9BE99119701110999 + FF416A0E6FDB843000A4F9CFCF1F52F834C2808DA72FD8DF700348D18C6C08D8 + 004B77AF69F292F299308987CF1F4E979256DEB076DEE45D207E7052AEDBB3A7 + 770390D58000DC0B20FFCC98D0CE70E1053FC3DBBF3F191E7F66603831A310C5 + B6E533A6311C7CC080228F624046C534B82408AC690C856B9611976140970719 + 20ACA0CB30A53E13624068693F5CF2F2E3F70C37E7A5C163019BFCD7AD4D0C2B + 164C07A72146981F999998C17EFCFBEF2FD630C0260F3660C0933200BCB3BCE1 + CDA578040000000049454E44AE426082} + Name = 'PngImage11' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001C04944415478DA + 63FCFFFF3F0325801164C0C20D47A381F41292353332C6800D58B0FEC8FF8440 + 1BA234FDF9FB8FE1F79FBF60EC105CC4806200A3E14C86FFE7D3C13408E0627F + 3C12CF70ECEC0D86AAB659D80D4007FF806AFEFC41D80CC2672FDFC1340019C8 + 7A2C6178F2F22B98ADAE20C0D09869CCE06E29CD2068B788E1D9AE48868BD7EF + 117601C8E673D7DF309846AF6310E66767B8BE3E8441CC6929C3C36D610CD76E + 3FC46DC0CBB7DF19EA679C613870E619C3C3679F197EFCFA0B36106433C8F97F + 80F8D6FD27B8BD1053BD8F61E9B6DB0C0B9B1C181C4C2518E43D5780C54136CB + 7BAD62B8B12E90E1FEE367D85DF0F75C1A836FDE0E866D471E315C5A15CCF0F1 + CB4F06DBA42D6003EE6E0A6650F65BCB7061B90FC3F357AFB11BF0F3540AC3B1 + 8B2F18A2ABF6313C7BFD8DC1C14412E895E76003AEAEF6077B4123528661FFC4 + F3A806C4F859C1A30839CAE0ECDF10BE41E416860F7F32188E4F453320DCCB9C + 81CB621ED8A6177BA218245C9681D9B7360431A805AC03B37F306430FCF8C3C0 + F0E61B0483D8700382DC4CF0DAFC1B498EDD5785E1FD4A3417F83919319CBA78 + 8BA8FCF0DFCF908171139201A0DC3871C6529273637E46740C00F128724C706C + 80060000000049454E44AE426082} + Name = 'PngImage12' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000E9C00000E9C01079453DD000002324944415478DA + 63FCFFFF3F03258011640023232386C4922BFF0D9818FFC57EFFFE57FDEFBFFF + CC8CFF19BEF0F1B36D5C73E9EAAAD5613ABF60166318505FFF9F4939F077F98B + 97BF6BEFDCFEC6F9EDDB3F86BF7F810A9918192424D9FEF3F1B32FBFFA93236E + 5528C35FB8018D9B7E2C6DF0E38859759581F5E7BF3FD36EDEF89AF4E51B03E3 + B72F7FC0867EF8F897E1EF3F06867F40ACA1C9F96FE392D5BA5737265D831BE0 + 58F9F0BF83A5F83245796696CB973E87FEF9C70CD6FCE2D92B86E78F6EFCFCF7 + EFEF17360E5E4151590326666626067D7DDE65F57E1CD12806288BB3FF676567 + 66E0E062036B7EFEF425C39307576E8A2A19B9EE6A557DA217B2A88E9B5FBA41 + 405C87C1DC9CEF01D0004514031444391804843918409ADFBFFFCE70E7EA91FB + 9F3FF06BDED9E1F513A450357481341FBBD03D611973362B4B2C067CF8C1C060 + A020C0F0E3FB4F86CF1FDEBCBE7FFD84C3B54DC9D760812B13DACB29CAAAF84A + 58C69AC7C61A8B01CF9FFF61E014646190E365627870FD40C3A535718DC8D1AA + E2B1988F5788E7B998823597A5392FA6010C1F1EC0157FF8F081E1DF9F4F0D1C + EC6AFDA7965A7C02899924ED550746C555793523665D1D2ED440C49690D08149 + D2A9764E3ED90A037DEEFF3696BC7161EA0C4B8836402FF6A41A37AFF0690E2E + 7E3E7B5B9E65C08494084C48BF8832402BF40A0F8F30DB3E0E2E4153277B9E65 + 0DFE9C60A7E34CCA280098ACCDDF3C5A2925C913ACAFCBB51CA6997803ECF7B3 + 301C74FC834D0AC5004A000026261CF09ABF155A0000000049454E44AE426082} + Name = 'PngImage13' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E64944415478DA + 8D936B4893511CC6FF67DA74BAC9BC9478C9357338CC4B0EBC1709F929A25414 + A13E48082D8CFC20267E1B925DD004B3120C75919AA99B5DADD485E56DA2791D + 739ABA2D9DB7A953379D6EEF5EDFDE14859C810F3C5F0ECFF33BFFF38783E0FF + 425902A13B668448DCB4C5B658709C40D8F0A4563120A97FB1B61F3AAC291008 + EDB1630ED7ECECA97C6F7F6FAEABB72BCDB46902B54CAD5BD4CCF7AAC68772C5 + 6F8A06C8286E05484EAEB3F10BB6A49FE2B2F2C2628318E0C440063300410050 + 910596D4B344F7BBB63169FBA7B4D6E65AA915205320E47A9EF4ECB89A7CCE85 + CDA021950141E2BD2E9049645029E683BB3301EB2AE5F657E15B4955457EAA15 + 205B5095CD8BE33D0C8BE0523C1002B50120E5C12EE03509D8A60078386EC1B7 + F2066DA3A89C8FFE1DBF9076CADFADFA4A467C829E70829C82AE43B79B97150D + B3522956F3F4C9B3030001DD87C3AE49C84CBCBC646640FCA5D29DF3A0B8A09D + 09F62469E1C3A4B4D7F2EAF1A3DA834FA064DC2D2D8E4DB9984E63F922ED2A02 + 161DE04EE1EE13D4ED7CB090CB5CD9C6E1439978A3FE655189D50E52D37263CE + 4486374725C5D2168DF6C88E2CE414ED02942400030246C6A7087149C5688DF0 + 7EC63EE0F38DB3C79974A8ECB70B7459649E0F64F17854767800C588D390830D + 02172A19226F5E58D211DFEB9AF40DD5CFCB46E5DD0568AFECC6C43FFA470747 + 2CEBF420D2048072C57ED3CB2F846005F9D19CBD4E80C96882B9F16942D1DBA7 + FBD15C2B960F77159355056AB919E0E3E24C17F9C58487E1737218966D429386 + 01F235CB8589854D87D3DCD0448613938D61669B89B1C1099552DEB9AA9B9790 + E559D204FA99C5EBF78D0A0FB5D5ABA0BF6F0D7AA66CA1757CC4B862D808E9D6 + 9826C990236927D236A4B748AF92C6F6FF82243F890861AE817CC8001D6A0A74 + 2A478D1AFD7A926CC6FC058E20743BEDFA2F1ECC70B45A0CDA2614CB5AFDFAAD + BE19B3E828E51D009FCFE710C6F546ED680F473DFF3B7E70DAFCFEA8E5BFFA03 + 503A4EA60D6AAC070000000049454E44AE426082} + Name = 'PngImage14' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A000002E44944415478DA + 8D936B48D35118C6DFB379D9D4C9BC94A8CB399B38CC4B0E9C9A45427D8C5251 + 82FA2021B430F08398F4258650145A615642A12E4A31AF6565795958A69B685E + C7BCB4B92D9D3AA74E7771BAFD37FFFDA728E40A7CE0FDF6FC9E73DE877310FC + 5FA850200CC22C90ECB06EB1EC76870347D8F88C6E7244D4F8D2B06FFA172910 + 082998BBD7154F8A079F11C5E0043002A8D64D2BA8A56AFDB2463BA8928F1537 + BF2D1B21AC0E9780ECEC06323BCE9E17CE61DE4D4C8BA5812F0D996C00380EE0 + 81ECB0A25EC0FBDFF74C4B7E7CCAEDEEAC97B8041408849C906321BD97B24FFB + B36854A43221106B01ECCE007780203F1CCC2AE576BBF09DA8A6BA24C725A048 + 5053C43DCFBD9F98C4210523046A13C0D0320099BCBBF0360920D87B0BBE56B5 + E8DA9AAAF8E8EFEB3FA2864705D65ECC4FCF30E2BE70BB54ECD28F542485D676 + 3E2C482458DDD327CF0E04087CC222597519059917566C34B8F358BC031C94A8 + 8B0F339241FBEB870FEA0FAE40CABFF5A23CEDF2B93C2A3302E9D611307D0002 + 29006EC4D529A4DD2ED6B61DF0A1B279A3F15559854B0739B9C5A92792799D29 + 5969D4650B05791200C31B804A74E046B831C061423E8B3757544FD509EFE5EF + 077CBE76F208DD07DE0C7BC6F82FD3CFC430B95C0F162F9A64715091171981BF + 0761224E5E5AD1E3DF1A3A8C2DB5CF2BA764FDA5680F0EA43B3E469D8A4B5AD5 + 1BA149130DCA35CA66283B1E67C6B2A97EA147C16AB1C2A27C0E9F1C1CD27FEF + AC6F968D8BCB097412755D8F0EF3F7F36962A7F2121D8B3218976E4287860632 + 83FDAC6269D3EB38272193E64B6761988DAC981E55A894B2BE75BD5644C00BC4 + E0E867217738228597E06654C1F090010666DDA05B3E6159336DC4F76BAC3384 + 8968007C8971BE842D62D6C159C5DE5F109564E1F17403C8C64CD0AB26419F72 + CAA2319AB3A4F3B62F7008A19BB9577F71613E52A7C3A04731B9AA339A6F0CCD + DB9A0E03EF04F0F9FC48DC626ED34D0D44AAB5BFD347E76CAD87859DFA0386D8 + 3FA68502A9830000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000032A4944415478DA + 6D937B4814411CC77FB3B7777A5E7276969AA4648A20A5592A4585FE654122BD + 0CAA3FE2841EA45946697591BD8DB27748A2BDA0A43FA2420C893252D2A244B4 + 7C24495986AFBC3BDDDBDB9DDDBDDDDB663714B366F9B2BB33DFCF777E3BB383 + E0DF66235A19342370912538D0CAB2825BF00A6DA4EF2D1133D5A8AA2AA029EF + 4126B3292B2E21BA70697A5262626A9C393422040D0FBAFCAD6F3BF187C68ED6 + 9F5F472E2992524FBCE2F400735884ED40E6BAE58539F6CCD0B9F323009111C5 + EF075191600C7BA0ABEBAB5AF7A071A4ADBEE71CE7C615849126032823B52D77 + EFBAEBF6BDEBAD164B20E941A092EBF89ED75050960C6ECC805B6060D8E984E7 + 379B9C2D8F3AB71353CD4440CC8ACCE49725D7F2626DB3AC60A028C2535092FF + 4A2FCD5E1A0F2E3C062E9E8171D1034303A3F0E24CF3A7910EF72A1230826813 + BDAFF87CEE85ACCD19269AA2C16030C0093273EDC372C8DE92FFD7EACEDDE902 + 06B3D0F1A41777DEED2D5015F5369A1335BBB6ACFA4056745C24A22903941636 + EBF044C38204BCE003FBEE62B0DAFBC1237A61B8C7A9B69DE979ECF3F836A1A4 + 65F15F4EDD2A880BB606A12B45AD93B02C2BE023D2604D79FB8F02B5F533B022 + 078C9B55BBCF7EEBC43F8424B4243DE19BA37C678CC962844A47B71E204F8212 + 09F1EBF783474E02BBB105BC1207DE711EFACA06BE8B7D520C8A8A0D6F70DCD9 + 951E343B1061598067A54EA8AEBAA4435A0826D22A3976B21406B31B80F76160 + FB3975E8E2E84785F12F460166E3E91D17361D8E5D1E45F332062C8BD07EC300 + D7CA4EC1BEA292BF16B177751D6893304D5E9979E0AD5265354FDBC694B4EC05 + 7599FB57844906093862D04CCEBB913AE4D9F01EBC3E1EBC22AF87635680F1FB + EC4FB95DC922DBD8A105A0008BF1444641DAA1A88C8800CE8F8123656AA59A1F + A740FF9A7AF22CE8B0208AC035F258A8911C20C3D5A9BF72D8CC79C197E3D7CE + CBB12D0D09106862D4A13F9F343133F70E63F18D740F7E818330E3D30FD31CA3 + D5986F5B68B55B532DE128923248269F0EF2DF05856FC58372AF52013C5412AF + EB7FA7516B34512232C2063A944E44C1C82C7B14CEEFF2B793929F92B16E2265 + EA71FE0D330BBCF031BDB9A60000000049454E44AE426082} + Name = 'PngImage15' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000031C4944415478DA + 6D536B481451143E779D5D5D37D95AD354523445905AB32C0A0DFD653F92252B + 8BFA130A3D40F385D1C3B09766A5652548D23B34FA1115624894A0F6502845CB + 079298A5F8CA75737677E6CECCCEA3BB532DAB75868F3B73EFF77DE7CCBDF720 + F8374C045BFC97F8AD3504F8191D0ECEC639B91E32D741407B13154501E4F5ED + AFD3EBD263E2220A37A5C49BCD1B62F481214BD1F4E49CDCDDD18F3FB4F7758F + 8FCC5C9504A98570F9C506FAE01053715A46526166565AE0CA552180C88A24CB + C04B02FCC476181818519A1BDA677A5A862E32365C473482C740A3D5ECCFCECF + A8C9CADF613418FCC80C02853C678EB4425E5502D8300D368E8669AB155EDE7C + 67FDF8A4FF002135FE35884A4E4B787DFA464EB469B9117C341AA2D78008329C + CF6D55CBB39406C11C4BC33C6F87A989597855FEFEF34C9F6D2B319841948E2A + 387639BB327D6FAA8ED2505056F066C18E363DAE05CBBE5C30E7BBE02767071A + 3BA0EFD930EEBF3F9CA748CA5D141A1ED454F5A8383D22260C511A1FA8287CAF + 8ABC037302ECC92E0263D618D879274C0F59959EF2A1A72EBB6B378ADF1CFBE5 + FC9DBC9800A33F2201D547BB3C06A228818B80E55C2A728A4E01B3AB0B689B43 + 19BCF0B51F7FE7E2D1FA94B8AF25B587A274062DD971173C2C1D560D448F5020 + 26B23A1E3D790EA62C6DE09C6761B46AE21B3F2A44A1F0E8156D25F70EA7F807 + F9212C72F0A2C20ACFEB6B3C62F788094E9496C12411B32E0C8E314699BA32FB + 49A2E575C857AF2D3B58B9FB44745238C58A183AAF890BFEFF5259A947CC082C + B893D0EF9C22DDE0BCAD884A8EFB1813375A5637A71525070B3E023084E02631 + 24136E88564D262DADE0E4DD621EB08383F97AC7B8D82BA59363EC731B205F83 + F66C6ADEC6E3E1A921BE8C8C55B1BB54FDD34418DBD642DE3955CCF13C30ED2C + E61A85127251AE7B5FE5E0659101D5B1DB23334D9B96FA721421AA22FC3BEB9F + CC4C27C6FC5BE101FC8012A2995FDC4CA15AA336D7B4C69865DC605881C2343E + 82CEA50AD96F9CC476E3497158AA03166E11EEDCFFBAD11D1481196961271548 + 995100D28B768991E7E45E52F273B236482079B7F32FB7E1BAF0E8F71C040000 + 000049454E44AE426082} + Name = 'PngImage16' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000019E4944415478DA + 63FCFFFF3F4341F1F9FF0C6402469801BEFE4A0C0B16DD60583CC71CABC21F3F + FF327CFFF90748FF6128ABBCC2A0A5CEC0B072C752E20C40D6FCE3D71F86BAFA + 1B0CEB963B31A85A241336005DF38FDF7F18DA5AEE3098997032CC5D3D07BF01 + D834FFFCF597A1B7EB3E612FE0D20CC253263C625092FFC5B0F1C06AEC06E0D3 + 0CE2CF99F68C4152EC0BC3AE931B310D983EC908A119AA11A409660008CC9FF9 + 9C4180F72DC3E14B3B500D00019021840048F3F7EF3F19CEDCDE8F6AC09F3F40 + DB7EFC024B82E81FDF816C280D11FFC5F0F9D337B03C08DF7C79126180A7B73C + 86E6CF9FBF43C460867DFB09D70C32ECD1A7F308036CEC44C18A976E9A82D7F9 + 7CFF8DC19A4186BCFE7D0D618089193FD896B5BB67311CDA309341504A87E1C9 + ED930CEF3FFD60F8F0F927C3FD671F1956AD59CDF0EC96105833C8BBEFFFDF44 + 18A0A3CB0976EAB6C30B182E1CDDCBA06768C8B073FD02B8CDF79F7E64E89C34 + 87E1EE456EB06610403140599519EC827D6796312447F833F072B130B0B0B2A1 + 387FF5D6430C37CF72C0F9700318191919F49D72C9CAD200FAC9B5C145016BDA + 0000000049454E44AE426082} + Name = 'PngImage17' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD2520000015D4944415478DA + 63FCFFFF3F03082CDD7212C22000627C2D1891F98CC80644FB98E3D50C54C3D0 + 3B6521C3F99DD3194936E0DFBF7F0CCBB79D6690161366B04C57058B715C6060 + 24CA0090E6DF7FFE31ACD9759621A4D68281352A97E1F7B2C90C8B2E10E10298 + E6DFBFFF325C5DC2C1F044E912C39B4B4B19984A3AB17BC171E64DACAEE860D0 + 60D0F399C2F0F2D636868587CC18A41A1A18D218F07801DD669866100E699161 + 10D5F6050726411720DB0CD35CDE369B61DED24DD80DF8FDE72FD856107D6319 + 1786E6ED7B4F311C387911BB01611E260C6E73EF80F9110C1F180C182C18C4D5 + BC5034830C3E7AF60A7603029D0D212E00FA7DEDAA2B0C2D2D210C6B6A9EA068 + 06E15317AF6337C0C75E8F2160D92330FF4E8B0B838B4B0D985D5CE907D70CC2 + E7AFDEC26E80BBB50E5CD11FA84B60E181C0FF18AEDCBC83DD0027734D829A41 + 00A701B6C66A0C9BF69C24265362370094D348012003002CB76B52FA97B19500 + 00000049454E44AE426082} + Name = 'PngImage18' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001B04944415478DA + 63FCFFFF3F03258071D400064674018780D0A7823C7C09EB97CCDD8D4B535EC3 + C493AF1EDC305BB1603A2323BA66090111A9272F9F301CD9BE99119701110999 + FF616A189135FFF9F9430A9F4618B0F1F405FB1B6E0021CDD70CF8FF0B09B0D7 + 481C78D50AE2FF7295B1FBC82F7AF0C585F30C8C96EE5ED3E425E533618A1F3E + 7F385D4A5A79C3DA79937781F8C149B96E6627F7F4F8B23ED3DD226BC2F04840 + 96A19CE72DC3E7E387182EDEF8389911E49F1913DA192EBCE06778FBF727C3E3 + CF0C0C276614A2B860F98C690C9BAA5A1854F7F530282A4830DC7FF08261E657 + 318689B76F33820DC8A89806D70C026B1A43E19A65C46518C0F25F3F3048CE28 + 6050BFBC9A61DB7F198693AE390C535AF220068496F6C3355F7EFC9EE1E6BC34 + 782CC0E47F5EBFC060D7E5C170E8BD208301F73B06BE7F1FFD642E316C6604F9 + F1D9D3BB01CC4CCCE070F8FBEF2F4618FC7D723D22F3EF93C4FB37DE301C1296 + D9E8FBE68198BED87F4BFEBF1FED084619087CB4178BB974FFD3D42B8F7E7801 + 6D390A12DB28C4BA51558ECB8F2803D6F1B2C67CFEF5C728EEE7FF62A006701A + 98C0C0202ECBCDB00A00547CD715F016991D0000000049454E44AE426082} + Name = 'PngImage19' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001034944415478DA + 636498F123988181610D032A0861C8E058CB400460041AF07F8201AA60C10520 + 91C1C1489201604DC40114D7313234DCF84FB4561868D080BB8E71F3BEBBFF7D + 1C9550E4FFFCFDC7F0E7CF5F86DF60FC0F4C83F8DF7EFC66084FAF6738BF733A + 7603D6DEFBC710B2FB378A61732CFF307888FF061B7AEDEE4B86EAD6C9B80D60 + 9CF993015B803EF0FDCAF0EBF75F863B8FDEE036006403EB9CDF0CA40628D800 + 0F3B05B01F393BEE911C9E6003ECCDA4188E9CBBCFF0F70F3B03A9010A36A0AE + B307ACB8A9BC04C5005C9A91031425B52107283ECDC8018AD500429A41F8D1F3 + F7D80D8005283ECDBF81F8F99B4FD80D8005283100AB01B0002516000097A51A + 7A68BA98860000000049454E44AE426082} + Name = 'PngImage20' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 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 + F73EE77CFEFC2FF784F3FB25D29F33000001744944415478DA63FCFFFF3FC394 + C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F19ACFDF319CEED + 98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC5BBA09D3007CE0 + D7EFBF609B4178C98683D80D40770136B0AED69461E59623B80D80391B04FE01 + E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D760CCEE587E036 + 07359F66585A6AC0B069CF49FC06C06CFE7CFB30C3CBC5B1F87CE48261C0C15E + 0706FBE20360D999EC710CCA0D350CECECE9183A7FFE9CC9302FB18501C30090 + B3617E7ED6A6C6A0D5FE18AC180E7EFC00E2EF0CB3771930306F4F45189011E5 + C6E0587A10C516900B500C0069FEF00E62C02927540392C39CC1B6C2423DA4F5 + 0CAA0130CD60037E32CCBE15846A405C90034A9445769E4718F0712242F3870F + 1017BC4A413520CA0FE177B841338C20063CAC47688679E15719AA01A15ED60C + ABB71D450903A76BA9E05898BD4A1E6B1CA218004A18E8409BF70D8315EB719C + 89C05E9EC10500D1295EA9BD5461080000000049454E44AE426082} + Name = 'PngImage23' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001124944415478DA + 63FCFFFF3F03258091620340848147C2FF0B3B1630A24B1223CE08E20CAC0B28 + 0A0098010B361C807BE3E7CF5F0C5FBF7D63F8F2ED3B98D65455C62ADE599ACC + 886240BCBF3D58E19FBFFF18BE7DFFC5F0EDC72F86D6A98B1826D7E760159FD2 + 908B69C0EF3F7F810A7E337C072ABC71FF15C3FC556B1916F69463155FD45B81 + 3060DAF21DFF93835D18BEFF80D8F0FDC71F8647CFDF334C9CB38061E5D446AC + E21B66B7220CE89AB3EE7F6AA80754D16F862F409BDE7FFCC6D0D43F8561DDCC + 76ACE2FB574C4418503771F1FFB4085F86DB0F5EA3847049633BC3C6F97D58C5 + CF6E9B8730A0A86DE6FF6FC0D0FDF4F90BC3E72F5FA1F417867FFFFE33589818 + 601587A78381CF4C941A00005C20FBD97F751C0A0000000049454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B3A00000B3A01647F570D0000015D4944415478DA + 63FCFFFF3F030830323232C0C0CEB58DCA2F6E6CBDF3FEF129B818C30F061490 + 3FFF3F58032336032E9C58FD9F8B47904155DB192EF6FFD72B867F9F2F31FCB9 + E3CA3063061E0380B6DBB373F01CB076CD66606165C7AAB96001923E6403809A + 9979F925FEC8299B32482B18E2D40C16C7614032D08039164EA97017810CF875 + 5E1CAC196F18EC5AD7C40F74FA073DB36006411179B8E6FF3F5F32FCBEA687A2 + 196B18000D681797D6AAD06008852B64D5BA0434E4251833000DFBFBA2087718 + 2CEF76FFFFE1E119865F5FDF81F9B993706BC61906D0589056D7D07F2223CE8D + 53332103DAC5C4A52B749438706AC6170BECACAC6C3FF4547918F8397FE3D48C + 3F1A79F9E7982A7F66F8FBBA16A7669C061CDB35E1BF9CAA1D83C84B23BC9AB1 + 1A008C466BA0F38F5888D632CC9AF907AF66AC065C383AF73FC7B7150C3B97ED + 21A819AB0137CE2CFBBF776E2643CE8C4F0435231B00004A4C11F0D3652A8300 + 00000049454E44AE426082} + 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 + 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 + F80000000970485973000017120000171201679FD252000001BE4944415478DA + 63FCFFFF3F032D0123B2054BB79CA49A6DD13EE68C582D004A906CD8DFBFFF80 + F83F980601EBC07C86733BA6E1B6C0B6683F8A0187FB1C711A8EAC765BB315C3 + C275FB19E62DDD84DF02525CEE507A9081455D89E1C08C1D0CEF0FC6312CD978 + 90B005D87C802E06027B3BEC189C2B0E311CD97F0BCC7FB32F8661F996C394F9 + E0FF3F605803F11FA0EB41EC3FFFFE41E3E01F98BD7ADB51D27D400C00F9E2F1 + 8E70860DBB4E106701CCDBA480075B431936EF3D459C05F8520E3600D2B3A850 + 8F61EB81D3C45B802BA86096C3E4616AE7E7EB32EC387486763E989DA3CDB0E7 + E839DAF96046A626C3FE131768E783A969EA0C874E5FC26F4184A729387792E3 + 838929AA0CC7CE5EC16F41A89B09387792E3839E042586D317AFE3B720C8D988 + C1ADFA08591674C62A309CBB7213BF057E8E060C5EB5C7F01A06B27CC1913F70 + 7E820D0BD882B62839868BD76FE3B7C0DB4E0F5EAEC0CA1850D9032BF393275F + C1881F18BF394296E1CACD3BF82DF0B0D6C16938884E9B760D6BF0116D818BA5 + 164EC3411667CDB88133E888B2C0DE541D6CD8BFBF88621966E1BFFFFFB1061F + 322068818D912AB844A404E0B5A077CA428A0C8701980500619929EF09CFCE42 + 0000000049454E44AE426082} + Name = 'PngImage21' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D4948445200000018000000180806000000E0773D + F8000000097048597300000B3A00000B3A01647F570D000001B94944415478DA + 63FCFFFF3F032D01E38058C0C8C888C2DFB9B651F9C58DAD77DE3F3E85AAF007 + 7643F3E7FF6724C9828B27D7FCE7E0E46350D3754511FFFFEB15C3BFCF9718FE + 7FB90CC40F18FE7D99C43063068916005D6FCEC2CA71C2CE239F8185959DA0E1 + 050B50CD2468C1C903F3FF4B486B32C8A9986375FDBF179B510C07CB116B01D0 + F5C15C3C426BAC5DB3512CC56738D116000D67061AFE4755DB99411CE803620D + 27C5827C0161B90966F6091841F3E7762BDC7064407410ED5AD7C40F8CD80FC6 + D6D10CFC42D22886FFFFF992E1EFA339600B9001497100B4A05B4246BB44CF2C + 18C3F0FFBF209801C4474B3D4407D1F26EF7FF1F1E9E61F8F5F51D5C2C77D225 + A20C272915415392B4BA9ACC13194939A20C27C7826E7131C1126D6521A20C27 + C902A0E1DC2C2CCC5F0CD5051878397E116538A916E40BF0734F3052FCCEF0FF + FB6BA20C27DA027046E364FFA322C5C420CCF28468C349B1C01F68C10633B967 + C0A021DE70A22D38B9A7E7BF28DF1F06A97F1524194E9405C08C660C8CDC3316 + 624D0CB367FE22C970A22CB87864F27FB66F5B18762DDF45B2E1445970E3F4F4 + FF7BE75530E4CCF844B2E14459404D40730B006B5E9AE0A24640FE0000000049 + 454E44AE426082} + Name = 'PngImage22' + Background = clWindow + end> + Bitmap = {} + end + inherited JvAppRegistryStorage: TJvAppRegistryStorage [7] + end + inherited dsDataTable: TDADataSource [8] + end + inherited GridPopupMenu: TPopupMenu + object N4: TMenuItem [5] + Caption = '-' + end + object Serviralbarn1: TMenuItem [6] + Caption = 'Enviar albar'#225'n...' + Enabled = False + ImageIndex = 23 + Visible = False + OnClick = actEnviarExecute + end + object Generarfactura1: TMenuItem [7] + Caption = 'Generar factura' + ImageIndex = 23 + end + object Enviarporemail1: TMenuItem [12] + Caption = 'Enviar por e-mail...' + end + end + object JsNuevoMedicacionDialog: TJSDialog + Content.Strings = ( + #191'C'#243'mo desea dar de alta el albar'#225'n?') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Nuevo albar'#225'n de cliente' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Albar'#225'n nuevo vac'#237'o.' + Value = 100 + end + item + Caption = 'Utilizar un pedido de cliente.' + Value = 200 + Info.Strings = ( + + 'Puede utilizar un pedido de cliente existente para dar de alta e' + + 'l albar'#225'n nuevo.') + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Left = 144 + Top = 112 + end + object JsImprimirDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Imprimir...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Imprimir el albaran/es seleccionado/s' + Value = 100 + Default = True + end + item + Caption = 'Imprimir la lista de Medicaciones actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 500 + Left = 264 + Top = 112 + end + object JsPrevisualizarDialog: TJSDialog + Content.Strings = ( + 'Elija una opci'#243'n:') + DialogOptions = [doCommandLinks, doModal] + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = 'Previsualizar...' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + CustomButtons = < + item + Caption = 'Previsualizar el albaran/es seleccionado/s' + Value = 100 + Default = True + end + item + Caption = 'Previsualizar la lista de Medicaciones actual' + Value = 200 + end> + ButtonBar.Buttons = [cbCancel] + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 500 + Left = 232 + Top = 112 + end + object JsListaMedicacionesNoEliminados: TJSDialog + Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Text = + 'Los siguientes Medicaciones no han podido ser eliminados, porque' + + ' est'#225'n enviados o tiene una factura asociada' + Instruction.Glyph.Data = { + 0A54504E474F626A65637489504E470D0A1A0A0000000D494844520000001C00 + 00001C0806000000720DDF940000000970485973000017120000171201679FD2 + 520000000467414D410000B18E7CFB5193000003104944415478DAAD96FB4B14 + 5114C7CFE463DC1E606444BFF54424D3DC55CA52B1CCD7165A219905054182FD + 1452FD5810FD100406610A669A998FC4F5BDB6266265DAB60F5DD15E58FE03B2 + 3F99D29ABBA7B9779C71C61D9D6177CFCE70CFDCB97B3EF7DCF3BD33C38082FD + B502B2B300CC656020048688A24F036233A0671F40D43160BA87BF62AEEE1010 + 60D7AE293AD8B835815E9B625C80DC8F1E88D4A7C1E8C1FB8F9FD6C3C44035B3 + 21500A65F6D700FE2EA580A5EC551F4A50359316B31D76EFDC0EE5F72A645045 + A067AE0623074B8140891108F1057064CC0D556053DF173812B707E6DCF332A8 + 225080D201DB4AF99BF335B4D502F371415BCC364833C4C29F458F0C2A031281 + 081734AB0B3C88403C1E6E3E2E7960F6A8FFD27A7D3EF07A11DA2C76C84A8D87 + A57FCB32E8B8A54A4C8C21B59365C9015996EF2240B6634DF435B51460A46D1F + 70C093AA46BF09C980C12CA914E6F371ADD707EF1DB3B0B0B8006EB79B8EA96B + EA5106121851245129118FD8BFA2DC5C53C6BAF5EBBBBA97C2D64EC064195B1F + 286C76E956A0EA5C51AEB4764A9929F5750D5A9581D2274B9B651C0BA2F514A8 + 6F28E36B70AD9A4253EF97A9AA55B0CEBA87D03B645B3F43C1DE589C58186D10 + 81150FCAC57B11E161B04517099BB953C78643141B01BA28EEE4DAB0B04DE2B8 + CA460B9C399902E661BB3AB0F5AD038BF30CD4D7E7DD14815A61023027DD00EF + 469C1A80FD1C307F1578FD4A81E665945AD68924181A9D5007B6F4DBF1527E32 + F5C9D3632351F8F549AEE916B14EAA039BCD362C31A6040D23E7887D4A03B0CF + 86C5C6641A24BB7646D3F2D51A77F8C1BCDCFFC79CD3EAC0D7BD56AE86294165 + 4660CB5C6B737DD3062CCA31D00069E76E05241862CF1EDD05E7D40F756063CF + 673C7F5A4F679A59541EF03E4C8C3B0893DF67D481AFBAC7B0F05412CD30EBE2 + ED80F7617CEC0198FEF94B1BF06C6622AD4B4EC99D80F7A1666043D7281A3312 + FD84C20B8417C3AA789405239826E0CBCE4F98979E10344C33B0BE630473D312 + 82866906D6993E62F6F1C3F45D160A5305BE68FF8095CF5B4302134CFE1185EA + 1FB8A1B4FF4FE32FF6FADB8B5E0000000049454E44AE426082} + Instruction.Icon = tdiCustom + ButtonBar.Buttons = [cbOK] + ButtonBar.Cancel = cbOK + ButtonBar.UseCancel = False + MainIcon = tdiCustom + Title = 'FactuGES' + Position = dpMainFormCenter + Icon.Data = { + 0000010003002020100001000400E8020000360000002020000001000800A808 + 00001E0300002020000001002000A8100000C60B000028000000200000004000 + 0000010004000000000000020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000000 + 0000000000000000000000000000000008777777777777777777777700000000 + 0877767777677776777767760000000008F88888888888888888888700000000 + 08F8FF8F8F888888888888860000000008FF8F8F88F8F8888888888C00000000 + 08F88888F8888888888888860000000008F8688878E8888E88E8788700000000 + 08F8688888F8F8FFFFFF88760000000008FF4888888F8FFFFFFF788700000000 + 08F8676767677677677658E50000000008FF8888888887878787888700000000 + 08FF8887887E8888888888860000000008FFE8E8E788C8E8FF8F8F8600000000 + 08FFF8F8F8F8FF8F88F8F8870000000008FFFFFF8FF8F8F8F88F888600000000 + 0FF8477878787878788788860000000008FF68888888F8FF8F8F788700000000 + 08B7588888FF8FFFFFFF78860000083008BB47887776777777776F86000000B7 + 8B9B73BB88788787E87878870000008BB8B9BB78888888EFF8F8FF8600000087 + B8BB8B888E8E8E88FFF8F886000000088BBB888FFFFFFFFFF8F877770000B9BB + B8FFBB9B9BFFFFFFF87466460000BBB9BB8FBBBBB8FFFFFFF88F888700000008 + B8BB88888FFFFFFFF88F8F7700000008BBBBBB8FFFFFFFFFFF8887700000007B + B7B98BB8FFFFFFFFF8887700000000B78B9B87B888F88F88F8877000000007B0 + 08BB883B78888788787700000000000000B9000000000000000000000000FFFF + FFFFF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000F9800000FC000000FC000000FC000000FE000000F0000 + 000F0000000FE000000FE000001FC000003FC000007F980000FFFCFFFFFF2800 + 0000200000004000000001000800000000000004000000000000000000000001 + 00000001000000000000694731007C5D49007E604C0081635000826451008567 + 540085685500886B5900896D5B008A6E5D008B705F008E715F008B7260008C72 + 61008E74640084766C00957A6900977D6D00887B72009A8171009D8272009C84 + 76009D8778009F897B00A28A7900A08B7D00A18C7E00E1B06E00E1B67D003E7A + 970073A0A5007AA2B70074AFBD007BB2BB003CAACE0028A5DB0020ADDF000D9A + E500209EE3000DA6E2001AA4EF0000A6FF000CABFE0009ACFE0010A4F10015AC + FA0000B5FB0000B0FD000CB6FC0000BFF90000BAFD0004BAFD0009BBFB0013B6 + F40015BFFA001CBDFB0026B7FD00589EC50040A4CD0040ABCC0050A2C7005DAE + C00060A3C20062A4C60060B7CB006AB0CD007BB6C80077BAC80061BADD0044AD + E50000C3F80007C6FB0000CAF80000CFFB0000D4F90026C8FA0026CDF8002BCC + F90039C4FB0039C2FC0039CAFA003FCFFB0024D6F80030D2F80039D5F80000F8 + F8001FF8F8002CF6F8003EF4F8005AC6DC0070CDDF0052C0E40054C9E3004DCE + FA005FC7FF004FD2FB004DD9F8005FD9FB006ED3E70063CDFE0060D1FB0060D8 + F90060DDF80046F8F90056F0F8005FFAFA0073E3F80073E4F90073EEF80060F1 + F800958A84009A918C0081999500A68F8200AD968500A3968C00AE988900AD9A + 8D00B19A8B00AF9C9000B09E9200B59F9200B7A29300B2A19600B5A19400B7A4 + 9700BDA79700B4A39800B1A59D00B4A79F00BAA69800BCA79900B4A89F00BCA8 + 9900BAA89C00BDAA9D00BEAC9E0083ADBD00B5A9A100BDABA000BEADA100BFAF + A500A0BABE00C0AB9E00C1AC9E00C6AE9F00E2B98100E4BA8300E4BB8400E5BC + 8500E1BD8E00E3BF9000C0ADA000C2B0A300C2B1A500C4B2A600C1B2A800C3B5 + AB00C8B4A800CCB9AD00CEBCB100D0BEB200D1BFB400E4C19300E5C29400E6C4 + 9600E8C69900D0C9A300CFC1B800D2C1B600D3C3B800D5C4B900D6C6BC00D8C6 + BC00D6C8BE00DAC9BF00ECD3B000EDD4B200EFD6B500E7D1B800E7D3BD00F0D8 + B6008CB7C40080BEC70097C3C70099C3C900ABD7CF00AFD9DD0086E3F90086E7 + F90086ECF8009EE5FB0090E8F900ACEDFC00BCEAFD00BCF1FB00BFF1FD00D7C9 + C000D9CAC100DCCBC200DACCC200DDCCC300DACCC400DDCEC400DED0C600DED1 + C900DED3CC00DFD4CD00E1D1C900E2D5CD00F0DCC200E3D8D200E5D9D200E2DA + D500E6DBD400E5DCD500E8DDD600E6DDD800E9DFD900E6E0DB00EAE0DA00EAE2 + DD00ECE3DE00EBE4DE00ECE4DE00F3E7D900C6E1EF00C9EFFD00D7F6FD00DFF3 + FF00DFFEFE00EBE7E300EDE6E100EFE7E400EEE8E400F0EAE600F2EDE900F2EE + EC00F4EFEC00F5F0EE00F9F4ED00E7FAFD00EBF8FF00F6F2F000F7F4F100F8F4 + F200F9F7F500FAF8F600FBF9F900FCFBFA00FCFCFB00FEFEFE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000007D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D + 0D0D0000000000000000009C9C19191919191919191919191919191919191919 + 1903000000000000000000ABDECBCBC7C7AFABABABABAAA3A2A2A0A0A0A0A0A0 + 8607000000000000000000ABECEAE9DEDEDEDED7D5D2D2D2CBCBCBCBB0CBB0CB + 9007000000000000000000ABEDECEAE9DEDEDBD7D7D5D2D2D2CDCDCBB0B0B0B0 + 9007000000000000000000AFEDE9A9CFD2CFD2CDCBCBCBB0B0ABACA3A3A3A3B0 + 9007000000000000000000AFF0D5017783838386868686869099909999907BB0 + 9007000000000000000000B0F4D501A0B0CBD2D5DEECEDF7FAFAFAFAFAF77BAA + 9007000000000000000000CBF4DC01A0B0B0B0D2D5DBEAEDF7FAFAFAFAF47BB0 + 9007000000000000000000CBF8DC010404070604090909090D0D110D110D02A3 + 9007000000000000000000CBFAED9E9E9E9C999E8C8C8C868683837E7D7D7ACB + 9007000000000000000000CBFAF1A7A7A6A6A6A69898989898B5DBDBD5D5D2D2 + 9907000000000000000000CDFAF796969696961D961D931D1DB4DEDBD7D5D5D2 + 9C07000000000000000000CFFAFAFAFAF8F7F0F0EDEDEDECE9E9DEDEDED7D5D5 + 9907000000000000000000CDFAFAEAF0EDEDECEAEAE9DEDEDBDCD5D5D5D5D2D5 + 9C07000000000000000000D2FAEC01737D7D7B7D7D7B7D7B7D7B7B7B7D7B7DD2 + 9907000000000000000000CFFAEC019EABB0CBD2D5DCDEECEDF4F4F4F4EA7BD2 + 9C07000000000000000000B9524601A0B0B0CBB5D5DEEAEDF7FAFAFAFAF47DD5 + 9C070000000000213F0000B83226010C3F5C1F111214141616191B1B1B1807D2 + 9C07000000000000253D8A5B322D711E2860BA7E7E7A7E797A797979767676D5 + 9E0700000000000041375E662F2B65314EBBB6B6B6B6B4B4B1E2F4EDEDEDECEA + 9C070000000000008F5D66663232394EC1A81C1C1C1C1C1C1CD3F7F4EDDED7D5 + 9C0700000000000000B7BE6E5758BEBDE4E6E6F3FAFAFAFAFAFAF7F4D5928675 + 7304000000002A2A2A2A4A6AFAE7562F2A2A2A5FFAFAFAFAFAFAF8D577010101 + 0101000000004747472F4A59C5E7564A32474766FAFAFAFAFAFAFADCA0D2CFB0 + A20C00000000000000436C6958686D6BC2C5C5E7FAFAFAFAFAFAFADEAADEDBCB + 1470000000000000004551534A4A5250C0E7FAFAFAFAFAFAFAFAFADEAAD7B514 + 700000000000000042384C54472B613550C3FAFAFAFAFAFAFAFAFADEA1B0196F + 000000000000000024234463322EBC5A3664E3ECE9E9E9E9E9E9E9CF90731300 + 000000000000003A3C00002232298B8B3E3B207E8B7E8B7E827E817E74100000 + 0000000000000000000000003227000000000000000000000000000000000000 + 000000000000FFFFFFFFF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000FF800000FF800000FF800000FF800 + 000FF800000FF800000FF800000FF800000F9800000FC000000FC000000FC000 + 000FE000000F0000000F0000000FE000000FE000001FC000003FC000007F9800 + 00FFFCFFFFFF2800000020000000400000000100200000000000801000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007067 + 5F70AA9382E570513CE3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E3735540E37355 + 40E3735540E3735540E3735540E3735540E3735540E3735540E372533EE5BAAB + A070000000000000000000000000000000000000000000000000000000005E54 + 4C7FCAB7ABFFC5B5AAFFA18877FFA28A78FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A + 79FFA28A79FFA28A79FFA28A79FFA28A79FFA28A79FFA58D7CFF7A5B46FFB2A1 + 967F000000000000000000000000000000000000000000000000000000006055 + 4D7ED7C6BBFFEDE4E0FFD9CCC4FFD9CCC4FFD9CBC3FFD8CAC1FFD7C9BFFFD6C7 + BDFFD5C6BBFFD4C4BAFFD3C3B8FFD2C1B7FFD1C0B5FFD0BEB3FFCFBDB2FFCEBC + B0FFCEBBAFFFCEBBAFFFCEBBAFFFCEBBAFFFCEBCB0FFBEAA9CFF82644FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006056 + 4D7ED7C8BCFFF2EBE8FFEFE9E5FFEEE7E2FFECE5E0FFEBE2DEFFEAE0DBFFE9DE + D8FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCDC4FFDCCB + C2FFDBC9BFFFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC1FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006155 + 4E7ED8C9BDFFF3EDE9FFF1EAE6FFF0E9E6FFEEE6E1FFECE4DFFFEBE2DDFFEAE0 + DAFFE9DED7FFE7DBD4FFE5D9D1FFE3D7CFFFE2D4CCFFE1D2C9FFDFD0C7FFDDCD + C4FFDCCBC2FFDBC9BFFFDBC9BFFFDBC9BFFFDCCAC0FFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006157 + 4E7ED9C9BFFFF4EFEDFFEFE8E3FFD0C2B9FFDFD5CEFFE0D5CEFFE0D4CCFFDED3 + CBFFDDD1C8FFDCCFC6FFDACCC4FFD9CBC1FFD8C9BFFFD7C7BDFFD6C5BBFFD5C4 + B9FFD3C2B7FFD2C0B5FFD2BFB4FFD2BFB4FFDAC8BEFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDACCC0FFF5F2EFFFE5DDD9FF5C3821FFB0998AFFB8A394FFB8A394FFB9A3 + 94FFB8A495FFB9A597FFB9A698FFBAA698FFBBA799FFBBA89AFFBBA89BFFBCA8 + 9BFFBCA89BFFBCA89BFFBBA89AFFB49E8FFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDBCBC1FFF8F4F3FFE7E0DBFF5F3C24FFD0BDB2FFDCCBC1FFDDCCC3FFE2D2 + CBFFE7DBD4FFEDE2DEFFF0E8E6FFF5F0EDFFF9F7F4FFFDFDFDFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFAF8F7FFB39D8DFFD8C6BBFFC1AC9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006256 + 4F7EDCCEC3FFFAF6F5FFE9E2DDFF5F3C24FFD2BFB5FFDFCDC4FFDECCC3FFE0CE + C6FFE4D4CDFFE9DDD6FFEFE4E0FFF1EAE8FFF7F1EFFFFBF8F6FFFFFEFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFBFAFFB5A090FFD9C7BEFFC1AD9FFF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006257 + 4F7EDDCFC4FFFCF9F9FFE9E4E0FF5F3A23FF7C5D49FF7F5F4CFF7E5F4CFF7E60 + 4DFF7F614DFF816350FF826552FF836654FF846856FF856A57FF866B59FF876C + 5BFF876D5BFF876D5BFF866B59FF72523DFFD5C3B9FFC1AFA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDECFC6FFFCFCFBFFF4F1F0FFC3B6AEFFC3B5ADFFC1B4ACFFC0B3AAFFBFB1 + A9FFBEB0A6FFBDAEA5FFBDACA3FFBCABA2FFBBAAA0FFBAA99FFFB8A69AFFB8A4 + 98FFB6A396FFB5A194FFB49F93FFB39D90FFDCCDC4FFC2AEA1FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006357 + 507EDFD2C7FFFEFEFDFFF9F5EFFFE8C696FFE9C799FFE8C697FFE7C596FFE7C4 + 95FFE6C394FFE5C293FFE4C091FFE4C090FFE3BF8FFFE2BD8CFFE9D5BFFFEBE1 + DCFFEADFD8FFE7DCD5FFE5DAD3FFE4D8D0FFE3D4CCFFC2AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE0D3C8FFFFFFFFFFFAF5EFFFE3B77CFFE4B97FFFE2B87EFFE3B77DFFE2B7 + 7CFFE2B67BFFE1B57AFFE1B479FFE0B478FFE0B377FFDFB174FFE6D0B7FFEBE1 + DCFFE8DFD9FFE8DDD6FFE6D9D2FFE3D8D1FFE4D7CFFFC3AFA2FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006458 + 517EE1D2C9FFFFFFFFFFFEFEFDFFFEFFFFFFFCFDFEFFFBFBFBFFF9F7F8FFF8F5 + F6FFF7F3F2FFF5F1F0FFF4EFEEFFF1EDEBFFF0EBE9FFEEE9E6FFEDE6E2FFECE3 + DEFFEBE1DBFFE9DFD9FFE8DDD6FFE6DAD3FFE5D9D2FFC3B0A3FF81634FFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006459 + 517EE1D4CAFFFFFFFFFFFDFDFCFFEEEBE8FFF5F2F0FFF4F0EFFFF3EFECFFF2ED + EAFFF1EBE8FFEEE9E5FFEFE7E3FFECE5E1FFEAE4DEFFEAE1DCFFE8E0DAFFE7DE + D8FFE6DDD6FFE5DBD4FFE4D8D1FFE2D6CEFFE6DBD4FFC3B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE2D4CAFFFFFFFFFFF0ECEAFF5B361EFFAB9383FFB39D8EFFB39D8DFFB39D + 8DFFB29D8DFFB29C8DFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C8CFFB29C + 8CFFB29C8CFFB29C8CFFB29C8DFFB39D8EFFE3D8D0FFC4B1A4FF81634EFFB2A1 + 967E000000000000000000000000000000000000000000000000000000006559 + 527EE5D4CAFFFFFFFFFFF7F0EBFF5F3B24FFCCB8ADFFD7C5BAFFD9C7BDFFDCCC + C3FFE1D4CCFFE5DAD4FFE8E0DBFFEDE5E1FFF1EBE9FFF5F2EFFFF7F5F3FFF8F6 + F4FFF8F5F4FFF8F6F4FFF1EEEAFFB29C8DFFE6DAD3FFC4B2A5FF81634EFFB2A1 + 967E00000000000000000000000000000000000000000000000000000000685A + 527E9AC6C9FF35CFFEFF3DAEEBFF663E24FFD2BFB4FFE0CBBFFFE0C9BDFFE1CD + C4FFE4D5CDFFE9DED7FFEEE5E0FFF2EBE8FFF6F2F0FFFCF8F8FFFFFFFEFFFFFF + FFFFFFFFFFFFFFFFFFFFFCFAF9FFB49E8FFFE7DED7FFC5B3A6FF81634EFFB2A1 + 967E00000000000000000000000000000000007792910072A7A3001E33366957 + 4C7C86C1C8FF00BFFBFF079AEBFF6A3E23FF926D57FF5FA3C8FF4AC1E8FF6C9C + A2FF917260FF927767FF947A69FF957C6CFF977E6FFF998171FF9A8374FF9B85 + 76FF9C8678FF9C8678FF998274FF7D5E49FFE3D9D4FFC5B3A7FF81634EFFB2A1 + 967E00000000000000000000000000000000005A6F7000A9E5E40075AEAE5C90 + A5BD75D0E0FF00BFFAFF0CA3F4FF8A9A91FF3C7492FF03A4E4FF4AD5FFFF98C4 + CBFFB3A196FFB1A197FFB0A096FFB09F95FFAF9D92FFAF9C91FFAD9A8EFFAC99 + 8CFFAB988AFFAB9789FFAA9688FFA99386FFE8E0DAFFC5B4A7FF81634EFFB2A1 + 967E00000000000000000000000000000000000000002DA5BFC110C2FFFF4DD0 + FDFF64DBF9FF00B3FAFF09A8FEFF68D7FFFF04B5FFFF24CCFBFFAFD8CEFFF7DA + B8FFF3DBBBFFF3DBBAFFF2D9B9FFF1D8B7FFF0D7B4FFEED5B2FFF6EADDFFF9F6 + F4FFF7F3F1FFF5F1EEFFF5EFECFFF4EDEAFFF1EBE7FFC6B4A8FF81634EFFB2A1 + 967E00000000000000000000000000000000000000005F8A909142C7E4E960DE + F8FF64D7FAFF00B6FDFF00B8FDFF21B2FDFF1ECCF7FF93EBFCFFD2C69BFFE1AB + 63FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDFAC66FFDEA961FFEFDBC0FFF8F6 + F5FFF6F2F0FFF3EDEBFFECE2DCFFE9DFD9FFE5DBD6FFC2B1A4FF81634FFFB2A1 + 967E000000000000000000000000000E171A000E171A00040B145994A4A990EB + FCFF61F1F7FF13FAF7FF23F9F7FF93EDF7FF8CE5F8FFD5F2FDFFE9F8FFFFE7F8 + FFFFF0FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFDFEFFFFFAFAF9FFF9F7 + F5FFF7F2F0FFE8DFD8FFC7AE9FFFBEA998FFAF9888FFB09A8AFF7F604DFFB2A1 + 967E00000000000000000000000000AAFFFF00AAFFFF00AAFFFF00A4FFFF00CD + FAFF5DFCF9FFFFFFFFFFEEFEFEFF00FBF7FF00AAFEFF00A1FFFF00A1FFFF00A0 + FFFF56C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFDFBFFFCFBFAFFFBFA + F8FFE6DDD6FFAA9180FF5D3922FF603D26FF613E27FF613E28FF634029FFB4A3 + 987E00000000000000000000000000CAFFFF00CAFFFF00CBFFFF00B0FFFF00CD + FBFF38F5F7FFC3EFFAFFF0FFFEFF00FAF7FF00C8F7FF00C2F7FF00C2F7FF00C1 + F7FF57D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFDFDFCFFFCFC + FBFFE7DED8FFCCB9ACFFE6DBD5FFE2D7D0FFDCCFC5FFD7C5BBFF8E705DFFB4A2 + 9680000000000000000000000000002E383C002E383C00252F364C99B0B57DE8 + FBFF59F1F7FF25F7F7FF41FAF8FF7CEEF7FF77E4F7FFB5EFFCFFC6F2FDFFC3F2 + FDFFD9F6FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFEFEFFFEFE + FEFFE9E1DAFFCEBCAFFFF1E9E3FFEADFD8FFE4D5CCFF9D816FFF3A291F868985 + 831C00000000000000000000000000000000000000004E7073774AB0DADC37C9 + FBFF22D5F7FF00D3F9FF02C3FBFF37D5F7FF34BEFCFFA2E6FAFFECFBFDFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF + FFFFEAE2DCFFCDBBADFFEADFD8FFE3D5CBFF9F8271FF3E2D2386050100200000 + 000000000000000000000000000000000000000000003E9CC4C219C0FFFF23C9 + FCFF30D3F8FF00BEF8FF06A8FEFF4FDCF8FF00B8FCFF32C2FBFFC0EBFCFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFEAE3DEFFCDB9ABFFDDCEC4FFA58979FF3E2C1F8F0905041B000000000000 + 000000000000000000000000000000000000003451510099DDDB0091C0C35DAD + BCCF76D7E9FF00BEF9FF10A9FBFFBDDEDEFF5AC8DDFF0AB5F7FF62CEFFFFCBE4 + F1FFF1E7E0FFEFE7E1FFEEE6E1FFEEE6E1FFEEE6E0FFEDE6E0FFEDE5E0FFEEE6 + E1FFE1D4CCFFC5AE9FFFA68D7FF53E2718A10402000E00000000000000000000 + 0000000000000000000000000000000000000075B7AF0099C7C500323E425442 + 3B5C6BA8B1DA00C1FCFF0EA1F3F8A98E80C0AB9081C12698B1C10088C4C14C85 + A3C1A18D80C19E8D81C19E8B81C19D8C80C19B8C7FC19B8A7FC19C897FC19A89 + 7EC19B8B7EC1897769C2432B1BAC000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000045565A00C5FFFF0094E6E2000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFFFFF0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F000 + 0007F0000007F0000007F0000007F0000007F0000007F0000007800000078000 + 0007C0000007C000000700000007000000070000000700000007C000000FC000 + 001F8000003F800000FFF8FFFFFF} + Width = 450 + Left = 184 + Top = 112 + end +end diff --git a/Source/Modulos/Medicaciones/Views/uEditorMedicaciones.pas b/Source/Modulos/Medicaciones/Views/uEditorMedicaciones.pas new file mode 100644 index 0000000..79acc27 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uEditorMedicaciones.pas @@ -0,0 +1,448 @@ +unit uEditorMedicaciones; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, Menus, DB, uDADataTable, JvAppStorage, + JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList, + PngImageList, StdActns, ActnList, ComCtrls, TB2ExtItems, TBXExtItems, + TBX, TB2Item, TB2Dock, TB2Toolbar, ExtCtrls, JvExControls, + JvNavigationPane, uViewGrid, pngimage, JvComponentBase, + uEditorGridBase, + uBizMedicaciones, uIEditorMedicaciones, uMedicacionesController, + uCustomView, uViewBase, uViewBarraSeleccion, uViewGridBase, + uViewMedicaciones, JvExComCtrls, JvStatusBar, JSDialog, uDAInterfaces; + +type + TfEditorMedicaciones = class(TfEditorGridBase, IEditorMedicaciones) + JsNuevoMedicacionDialog: TJSDialog; + N4: TMenuItem; + Generarfactura1: TMenuItem; + TBXSeparatorItem17: TTBXSeparatorItem; + Serviralbarn1: TMenuItem; + JsImprimirDialog: TJSDialog; + JsPrevisualizarDialog: TJSDialog; + actGenerarEtiquetas: TAction; + JsListaMedicacionesNoEliminados: TJSDialog; + Enviarporemail1: TMenuItem; + TBXSubmenuItem2: TTBXSubmenuItem; + procedure FormShow(Sender: TObject); + procedure actEnviarExecute(Sender: TObject); + procedure actEliminarUpdate(Sender: TObject); + procedure actCancelarEnvioExecute(Sender: TObject); + procedure actGenerarEtiquetasExecute(Sender: TObject); + procedure actGenerarEtiquetasUpdate(Sender: TObject); + + protected + FMedicaciones: IBizMedicacion; + FController : IMedicacionesController; + + function GetMedicaciones: IBizMedicacion; + procedure SetMedicaciones(const Value: IBizMedicacion); + + function GetController : IMedicacionesController; virtual; + procedure SetController (const Value : IMedicacionesController); virtual; + + procedure NuevoInterno; override; + procedure ModificarInterno; override; + procedure EliminarInterno; override; + procedure DuplicarInterno; override; + procedure ImprimirInterno; override; + procedure PrevisualizarInterno; override; + procedure RefrescarInterno; override; + + //Si queremos crear otra vista para el editor heredado solo tendriamos que + //sobreescribir este método + procedure AsignarVista; virtual; + + public + procedure PonerTitulos(const ATitulo: string = ''); override; + property Medicaciones: IBizMedicacion read GetMedicaciones write SetMedicaciones; + property Controller : IMedicacionesController read GetController write SetController; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +uses + uDataModuleMedicaciones, uDataModuleUsuarios, uFactuGES_App, + uDialogUtils, schMedicacionClient_Intf, + uEditorBase, + cxCustomData, uGridStatusUtils, uDBSelectionListUtils; + +{$R *.dfm} + +{ +*************************** TfEditorMedicaciones *************************** +} +procedure TfEditorMedicaciones.actCancelarEnvioExecute(Sender: TObject); +begin +{ + inherited; + + if (ShowConfirmMessage('Envío de albarán de cliente', '¿Desea cancelar el envío de este albarán de cliente?') = IDYES) then + begin + try + FController.CambiarSituacion(FMedicaciones, SITUACION_ALBARAN_PENDIENTE); + except + on E : Exception do + ShowErrorMessage('Error al cambiar la situación del albarán', E.Message, E); + end; + end; + actRefrescar.Execute; +} +end; + +procedure TfEditorMedicaciones.actEliminarUpdate(Sender: TObject); +begin + inherited; + // +end; + +procedure TfEditorMedicaciones.actGenerarEtiquetasExecute(Sender: TObject); +begin +{ + inherited; + //Miramos si viene de un pedido previo, si no es asi le preguntamos si desea imprimir la referencia del cliente + if (FMedicaciones.ID_PEDIDO > 0) then + FController.EtiquetasPreview(FMedicaciones, True) + else + begin + if (Application.MessageBox('¿El albarán seleccionado no está asociado a un pedido por internet, ¿desea imprimir la referencia del cliente para las etiquetas de este albarán?', 'Atención', MB_YESNO) = IDYES) then + FController.EtiquetasPreview(FMedicaciones, True) + else + FController.EtiquetasPreview(FMedicaciones, False); + end; +} +end; + +procedure TfEditorMedicaciones.actGenerarEtiquetasUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := HayDatos + and not (ViewGrid.NumSeleccionados > 1) + and ViewGrid.esSeleccionCeldaDatos; +end; + +procedure TfEditorMedicaciones.actEnviarExecute(Sender: TObject); +//var +// AInventarioController : IInventarioController; +// bCambiarEstado : Boolean; +// AFactura : IBizFacturaCliente; +// AFacturasController : IFacturasClienteController; +// AMedicacion : IBizMedicacion; +begin +{ + inherited; + bCambiarEstado := False; + + // ¿Hay almacén asociado al albarán? + if FMedicaciones.ID_ALMACEN = 0 then + begin + if (ShowConfirmMessage('Envío de albarán de cliente', 'Este albarán no tiene un almacén asociado por lo que no se realizará ningún cambio en el stock de los almacenes.' + + #10#13 + #10#13 + '¿Desea realizar el envío de este albarán de cliente?') = IDYES) then + bCambiarEstado := True // No hay almacén. Cambiamos el estado y ya está. + end + else begin + AInventarioController := TInventarioController.Create; + try + bCambiarEstado := AInventarioController.SalidaMedicacion(NIL, FMedicaciones.ID_ALMACEN, FMedicaciones.Detalles); + finally + AInventarioController := NIL; + end; + end; + + if bCambiarEstado then + begin + try + FController.CambiarSituacion(FMedicaciones, SITUACION_ALBARAN_ENVIADO, Now); +{ + if (ShowConfirmMessage('', 'Se ha realizado correctamente la salida del albarán de cliente. ¿Desea generar la factura de cliente correspondiente?') = IDYES) then + begin + AMedicacion := FController.Buscar(FMedicaciones.ID); + AMedicacion.DataTable.Active := True; + + AFacturasController := TFacturasClienteController.Create; + AFactura := AFacturasController.Nuevo; + try + if AFacturasController.Anadir(AFactura, AMedicacion) then + AFacturasController.Ver(AFactura) + finally + AFacturasController := NIL; + AMedicacion := NIL; + AFactura := NIL; + end; + end; +} + + +{ + except + on E : Exception do + ShowErrorMessage('Error al cambiar la situación del albarán', E.Message, E); + end; + end; + actRefrescar.Execute; +} +end; + +procedure TfEditorMedicaciones.AsignarVista; +begin + ViewGrid := CreateView(TfrViewMedicaciones) as IViewMedicaciones; +end; + +constructor TfEditorMedicaciones.Create(AOwner: TComponent); +begin + inherited; + + FHeaderText := 'Lista de medicaciones de pacientes'; + FWindowCaption := FHeaderText; + + AsignarVista; +end; + +destructor TfEditorMedicaciones.Destroy; +begin + FMedicaciones := NIL; + FController := NIL; + inherited; +end; + +procedure TfEditorMedicaciones.DuplicarInterno; +var + APedido : IBizMedicacion; +begin + inherited; + APedido := FController.Duplicar(Medicaciones); + try + FController.Ver(APedido); + finally + actRefrescar.Execute; + end; +end; + +procedure TfEditorMedicaciones.EliminarInterno; +var + AMedicaciones: IBizMedicacion; + AllItems: Boolean; +begin + AMedicaciones := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + if AllItems then + begin + if (Application.MessageBox('¿Desea borrar las medicaciones seleccionadas?', 'Atención', MB_YESNO) = IDYES) then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Medicaciones as ISeleccionable).SelectedRecords); + AMedicaciones := (Controller as IMedicacionesController).ExtraerSeleccionados(Medicaciones) as IBizMedicacion; + end + end + else begin + if (Application.MessageBox('¿Desea borrar la medicación seleccionada?', 'Atención', MB_YESNO) = IDYES) then + AMedicaciones := Medicaciones; + end; + + if Assigned(AMedicaciones) then + begin + FController.Eliminar(AMedicaciones, AllItems); + if AllItems then + begin + if (AMedicaciones.DataTable.RecordCount > 0) then + begin + with AMedicaciones.DataTable do + begin + First; + while not EOF do + begin + JsListaMedicacionesNoEliminados.Content.Add('Ref. medicación: ' + AMedicaciones.REFERENCIA + ' ' + AMedicaciones.NOMBRE); + Next; + end; + end; + JsListaMedicacionesNoEliminados.Execute; + end; + actRefrescar.Execute; + end; + end; + + ViewGrid.GotoFirst; +end; + +procedure TfEditorMedicaciones.FormShow(Sender: TObject); +begin + inherited; + + if not Assigned(ViewGrid) then + raise Exception.Create('No hay ninguna vista asignada'); + + if not Assigned(Medicaciones) then + raise Exception.Create('No hay ninguna medicacion asignada'); + + Medicaciones.DataTable.Active := True; + ViewGrid.GotoFirst; +end; + +function TfEditorMedicaciones.GetController: IMedicacionesController; +begin + Result := FController; +end; + +function TfEditorMedicaciones.GetMedicaciones: IBizMedicacion; +begin + Result := FMedicaciones; +end; + +procedure TfEditorMedicaciones.ImprimirInterno; +var + Respuesta : Integer; + AMedicaciones: IBizMedicacion; + AllItems: Boolean; + +begin + + AMedicaciones := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podré imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsImprimirDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsImprimirDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Medicaciones as ISeleccionable).SelectedRecords); + AMedicaciones := (Controller as IMedicacionesController).ExtraerSeleccionados(Medicaciones) as IBizMedicacion; + end + else + AMedicaciones := Medicaciones; + + if Assigned(AMedicaciones) then + FController.Print(AMedicaciones, AllItems); + end; + end; + end; + end; +end; + +procedure TfEditorMedicaciones.ModificarInterno; +begin + inherited; + FController.Ver(Medicaciones); +end; + +procedure TfEditorMedicaciones.NuevoInterno; +{var + Respuesta : Integer; + AMedicacion : IBizMedicacion; + IDMedicacionAux: Integer;} +begin + inherited; + +// Respuesta := JsNuevoMedicacionDialog.Execute; + +// if Respuesta <> IDCANCEL then +// begin +// case JsNuevoMedicacionDialog.CustomButtonResult of +// 200 : begin // Utilizar un pedido +// if ElegirPedidoYGenerarMedicacionCli(IDMedicacionAux) then +// actRefrescar.Execute; +// end; +// 100 : begin // Medicacion nuevo vacio + if FController.Anadir(Medicaciones) then + FController.Ver(Medicaciones); +// end; +// end; +// end; +end; + +procedure TfEditorMedicaciones.PonerTitulos(const ATitulo: string); +var + FTitulo : String; +begin + FTitulo := FWindowCaption + ' - ' + AppFactuGES.EmpresaActiva.NOMBRE; + inherited PonerTitulos(FTitulo); +end; + +procedure TfEditorMedicaciones.PrevisualizarInterno; +var + Respuesta : Integer; + AMedicaciones: IBizMedicacion; + AllItems: Boolean; +begin + AMedicaciones := Nil; + AllItems := False; + + if MultiSelect and Assigned(ViewGrid) then + AllItems := (ViewGrid.NumSeleccionados > 1); + + //Si esta agrupado solo podré imprimir la lista de elementos visibles + if not ViewGrid.esSeleccionCeldaDatos then + inherited + else + begin + Respuesta := JsPrevisualizarDialog.Execute; + if Respuesta <> IDCANCEL then + begin + case JsPrevisualizarDialog.CustomButtonResult of + 200 : begin // Lista de elementos visibles + inherited; + end; + 100 : begin // Elemento Seleccionado + if AllItems then + begin + SeleccionarFilasDesdeGrid(ViewGrid._FocusedView, (Medicaciones as ISeleccionable).SelectedRecords); + AMedicaciones := (Controller as IMedicacionesController).ExtraerSeleccionados(Medicaciones) as IBizMedicacion; + end + else + AMedicaciones := Medicaciones; + + if Assigned(AMedicaciones) then + FController.Preview(AMedicaciones, AllItems); + end; + end; + end; + end; +end; + +procedure TfEditorMedicaciones.RefrescarInterno; +begin + inherited; +end; + +procedure TfEditorMedicaciones.SetController(const Value: IMedicacionesController); +begin + FController := Value; +end; + +procedure TfEditorMedicaciones.SetMedicaciones(const Value: IBizMedicacion); +begin + FMedicaciones := Value; + + if Assigned(FMedicaciones) then + begin + //Se guarda el where de la sentencia origen, por si el editor tiene filtros que + //afecten a este where y en un futuro se desea volver al where origen (filtro de año)) + DynWhereDataTable := FMedicaciones.DataTable.DynamicWhere.Xml; + + dsDataTable.DataTable := FMedicaciones.DataTable; + if Assigned(ViewGrid) then + (ViewGrid as IViewMedicaciones).Medicaciones := Medicaciones; + end; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uMedicacionesViewRegister.pas b/Source/Modulos/Medicaciones/Views/uMedicacionesViewRegister.pas new file mode 100644 index 0000000..08dabcd --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uMedicacionesViewRegister.pas @@ -0,0 +1,26 @@ +unit uMedicacionesViewRegister; + +interface + +procedure RegisterViews; +procedure UnregisterViews; + +implementation + +uses + uEditorRegistryUtils, uEditorMedicaciones, uEditorMedicacion; + +procedure RegisterViews; +begin + EditorRegistry.RegisterClass(TfEditorMedicaciones, 'EditorMedicaciones'); + EditorRegistry.RegisterClass(TfEditorMedicacion, 'EditorMedicacion'); +end; + +procedure UnregisterViews; +begin + EditorRegistry.UnRegisterClass(TfEditorMedicaciones); + EditorRegistry.UnRegisterClass(TfEditorMedicacion); +end; + +end. + diff --git a/Source/Modulos/Medicaciones/Views/uViewDatosYSeleccionPacienteMedicacion.dfm b/Source/Modulos/Medicaciones/Views/uViewDatosYSeleccionPacienteMedicacion.dfm new file mode 100644 index 0000000..d2558f9 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewDatosYSeleccionPacienteMedicacion.dfm @@ -0,0 +1,372 @@ +inherited frViewDatosYSeleccionPacienteMedicacion: TfrViewDatosYSeleccionPacienteMedicacion + Width = 505 + Height = 109 + ExplicitWidth = 505 + ExplicitHeight = 109 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 505 + Height = 109 + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Align = alClient + ParentBackground = True + TabOrder = 0 + TabStop = False + AutoContentSizes = [acsWidth, acsHeight] + ExplicitHeight = 129 + DesignSize = ( + 505 + 109) + object edtlNombre: TcxDBTextEdit + Left = 56 + Top = 41 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NOMBRE' + DataBinding.DataSource = dsPaciente + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.SkinName = '' + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.SkinName = '' + TabOrder = 2 + Height = 21 + Width = 249 + end + object edtNUMERO_SS: TcxDBTextEdit + Left = 392 + Top = 41 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + DataBinding.DataField = 'NUMERO_SS' + DataBinding.DataSource = dsPaciente + ParentFont = False + Properties.ReadOnly = True + Properties.UseLeftAlignmentOnEditing = False + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.NativeStyle = True + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.SkinName = '' + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.SkinName = '' + TabOrder = 3 + Height = 21 + Width = 103 + end + object Button1: TBitBtn + Left = 10 + Top = 10 + Width = 115 + Height = 25 + Action = actElegirContacto + Caption = 'Elegir un paciente' + TabOrder = 0 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00EB00EB00C507C600AB13AD00A119A2009F19A000A215A400AA10 + AC00B608B800CE00CE00EF00EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00B426B000526840004A823400478F310043962F0042992F0043972F004690 + 3100488533004B7237005A405100D201D200FF00FF00FF00FF00FF00FF00FF00 + FF0062654E004F81350047903100409C2E003AA62C0038AA2B0039A72B003E9E + 2D00459230004D84340056753800A0189F00FF00FF00FF00FF00FF00FF00FF00 + FF005F6B4C004B89330042992F0039A82B0032B428002EBB260031B6270037AB + 2A00409C2E00498C3200527B3600B015B100FF00FF00FF00FF00FF00FF00FF00 + FF0090488700488D32003E9E2D0035AF290035B631007ACB7B002DBF280033B2 + 28003DA12D0047903100576A4800EC01EC00FF00FF00FF00FF00FF00FF00FF00 + FF00F008F1005F7351003E9F2D0034B0290080AC8100D2D3D30081BB820032B2 + 28003DA22D004A863A00C519C500FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00EE09EF007861730036923E00598CAE00498CBB004A81A6002B70 + 3A00606D5900D613D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00EA0CF400608CD00054A2D80053A1D6004F9DD300488B + C2009D11AC00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF008C67DE005CA9DD005CA9DD005AA7DC0056A4D900519F + D400565FAB00EA00EA00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00EC0DF60060A7DE0063B0E30063B0E30061AEE1005CA9DD0056A4 + D9004E94CC00C105C600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00C532ED0066B2E5006BB7E9006BB7E90067B3E60061AEE1005AA7 + DC00539FD500A817BE00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00BA3AE7004989B1004A85AC005895BD0068B2E30064B0E4005CA9 + DE0053A0D400AA1BC300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00CA23E8005098C400539AC7004E93BE00437DA2005190BA005198 + C6003C79A000BE08C300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00F804FC006995D40062ACDA005DA6D3005299C6004284AD003C7F + A900535AA100F300F300FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00C140ED0071BAEA0068B2E00059A1CF004990BC004378 + AA00C315D600FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00C83EF000808BDF00668BCC007C60C700D116 + E400FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object Button2: TBitBtn + Left = 131 + Top = 10 + Width = 143 + Height = 25 + Action = actAnadirContacto + Caption = 'Dar de alta un paciente' + TabOrder = 1 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947 + 3100694731006947310069473100694731006947310069473100694731006947 + 3100694731006947310069473100694731006947310069473100D5BFB100F6F2 + EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2 + 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB1002A80 + 1E00136F0D00136F0D00136F0D00136F0D00136F0D00136F0D002A801E00E3D5 + CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB10059A8 + 5100448B2F003CA02C0032A4260032A526003D9E2C00438D2E00136F0D00E7DB + D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB10080BC + 790042952E0031A62600369B3200369E320032A727003E952C00136F0D00EAE0 + DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100CFE8 + CD004CA741002D942F0071AB90006FA68E0030923100136F0D00EFE8E300EDE4 + DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF + FF00B9DDC2004F9DA000559BC8004E96C2004E8E8F00A8C2AA00F2ECE800EFE8 + E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF + FF00A5CDE8005DAADD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC + E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6 + FA006CB9DF0065B2E50065B1E5005FACDF0056A2D700689EBE00F7F4F100F5F0 + ED00F2ECE800006000000060000000600000B7A2930069473100D5BFB100E9F6 + FA005BB0D5005CA6D50065AFDF0062AFE20058A4D8003285A700FAF8F600F7F4 + F100F7A073000060000033CB510000600000B7A2930069473100D5BFB100F4FA + FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB000060 + 0000006000000060000040D86500006000000060000000600000D5BFB100FFFF + FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF000060 + 000060F898005AF28F004DE57A0040D865003AD25C0000600000D5BFB100FFFF + FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF000060 + 000000600000006000005AF28F00006000000060000000600000D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF + B100D5BFB1000060000060F8980000600000D5BFB100D5BFB100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00006000000060000000600000FF00FF00FF00FF00} + end + object Button3: TBitBtn + Left = 303 + Top = 68 + Width = 192 + Height = 25 + Action = actVerContacto + Caption = 'Ver ficha completa del paciente...' + TabOrder = 4 + Glyph.Data = { + 36040000424D3604000000000000360000002800000010000000100000000100 + 2000000000000004000000000000000000000000000000000000FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00D5BFB1006947 + 3100694731006947310069473100694731006947310069473100694731006947 + 3100694731006947310069473100694731006947310069473100D5BFB100F6F2 + EF00B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A29300B7A2 + 9300B7A29300B7A29300B7A29300B7A29300B7A2930069473100D5BFB1002A80 + 1E00136F0D00136F0D00136F0D00136F0D00136F0D00136F0D002A801E00E3D5 + CE00E0D1C900DFCFC600DCCBC100DBC9BF00B7A2930069473100D5BFB10059A8 + 5100448B2F003CA02C0032A4260032A526003D9E2C00438D2E00136F0D00E7DB + D500A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB10080BC + 790042952E0031A62600369B3200369E320032A727003E952C00136F0D00EAE0 + DA00E7DBD500E4D7D000E2D3CB00DFCFC600B7A2930069473100D5BFB100CFE8 + CD004CA741002D942F0071AB90006FA68E0030923100136F0D00EFE8E300EDE4 + DF00A1745C00A1745C00A1745C00A1745C00B7A2930069473100D5BFB100FFFF + FF00B9DDC2004F9DA000559BC8004E96C2004E8E8F00A8C2AA00F2ECE800EFE8 + E300EDE4DF00EAE0DA00E7DBD500E4D7D000B7A2930069473100D5BFB100FFFF + FF00A5CDE8005DAADD005CA9DD0057A4D900519ACC00A0BACA00F5F0ED00F2EC + E800EFE8E300EDE4DF00EAE0DA00E7DBD500B7A2930069473100D5BFB100ECF6 + FA006CB9DF0065B2E50065B1E5005FACDF0056A2D700689EBE00F7F4F100F5F0 + ED00F2ECE800EFE8E300EDE4DF00EAE0DA00B7A2930069473100D5BFB100E9F6 + FA005BB0D5005CA6D50065AFDF0062AFE20058A4D8003285A700FAF8F600F7F4 + F100F7A07300F7A07300F7A07300F7A07300B7A2930069473100D5BFB100F4FA + FC0078C0DD0056A0CD00569DCA00539CCA00448DBB003285A700FDFCFB00FAF8 + F600F7F4F100F5F0ED00F2ECE800EFE8E300B7A2930069473100D5BFB100FFFF + FF00CEEAF40062B5DE005DA7D5004B92BE003285A700C6DCE600FFFFFF00FDFC + FB00F7A07300F7A07300F7A07300F7A07300B7A2930069473100D5BFB100FFFF + FF00FFFFFF00CEEAF400A5CDE800A5CDE800CEEAF400FFFFFF00FFFFFF00FFFF + FF00FEFEFD00FCFAF900F9F6F400F6F2EF00F3EEEA0069473100D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BF + B100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100D5BFB100FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 + FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00} + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item7: TdxLayoutItem + Caption = 'Button1' + ShowCaption = False + Control = Button1 + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item8: TdxLayoutItem + Caption = 'Button2' + ShowCaption = False + Control = Button2 + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Nombre:' + Control = edtlNombre + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'NASS:' + Control = edtNUMERO_SS + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item9: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Button3' + ShowCaption = False + Control = Button3 + ControlOptions.ShowBorder = False + end + end + end + object dsPaciente: TDADataSource + Left = 400 + Top = 8 + end + object ActionList1: TActionList + Images = PngImageList + Left = 368 + Top = 8 + object actElegirContacto: TAction + Caption = 'Elegir un paciente' + ImageIndex = 1 + OnExecute = actElegirContactoExecute + end + object actAnadirContacto: TAction + Caption = 'Dar de alta un paciente' + ImageIndex = 0 + OnExecute = actAnadirContactoExecute + end + object actVerContacto: TAction + Caption = 'Ver ficha completa del paciente...' + ImageIndex = 2 + OnExecute = actVerContactoExecute + OnUpdate = actVerContactoUpdate + end + end + object PngImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000002224944415478DA + 95935D48936114C77FCB36584A6064161515DEA441108B240293E8A682246805 + DEA45020F40196505D081242DE94512B8C20169937056914D52E726B6083B114 + D44CD3D51A216BB6656B5FEF677B5FF31D23033DF070CE03CFFFF73F1CCE6362 + 29D1806AD44E4C5A32F5F58FAA8BD5D73DD8465757034D4D4EFA4E8C62000ED7 + 56E997647490DFE131BD2ED9584971D98EB9478D2603D279B39EE6733DC6DD00 + 68E2EF7E07E95F2291688C48629ABDC71DACABD8AD0334E7B420104D24F4A3D5 + DDD707E60087F66C2234D0CECF2F41643987556566676799C9C4387AD18FF964 + 91E178EA522DF73ADC851D1CA85ECD27D77948995861B552844C2A9962303441 + DD051FA22473E5095C735B3972DAC6D3DB016EED7BC9FD47CFE601E57CF3B661 + C966D1E62C880299549A696915B6639D4892A243D6B6AC349C0B00DA0C22EF7B + 484EBDCA015424512491125036D751B1CBAE8BB5330F12459937EF860A01DEA0 + 8BA0FB0E5B154BAE832C810CACDF594F4DD5C17FC45AF6FA87F3800D95022DFD + ADC47E84682CDF8F222A3C9CF1303915E6C3E5495DDC7AE379C14E546F5F9307 + F8E4C7BC187F4BA6344E49D24C6E8A24AD12E65809A1895102CD6386B3F8B793 + C0F0C73CC0196927188E2297651096A7D096D4922D6659DCC2E7AF43F8CE8C70 + F5AEEBFF1D9CF5D889C7230BAE6F696939BDF6D7BAABACA87A567279647C320F + A8B16DA1BBD7B3A47FA5850168EB702C596C6CA2AA2EFA332E187F0080F1503E + 182A98A90000000049454E44AE426082} + Name = 'PngImage0' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AC400000AC401666D82D4000002A94944415478DA + 7D925D48536118C79FF3B5AF36DD66B639CB924243225010BC49BA914004CDE8 + E32228B482EA4689A22289C8CBA28B32B1061688902912D28D16991F6062B2DC + 45921FB954669BF39C9D6DE7EC9CF3EEBC9D2D8C2CB7079E9BF779FEBFF7F922 + 30C69034822060D3665F5F3A0B90B8C672FCAEC07AD8E35DF0DFBFE3F64EC05F + F647F72FC0DB75AED1E1B43D138438C9B26108B11C0443BC30ECF959D731303F + 9411D0D35C612C2ADBEF3319F5B992AC402412037F9003A4C8E05F17679BDA3E + 976BA9D1F4807B95552E877D90222910250556023170E66481D900F0CD17C0AD + 5DDE63F3CBFC505AC0685B6DE34654762B88009B350B8AF658815011C8521C04 + 518487DD530D9D83BECEB480C98EDA13F9798E5E9A61526F098440D1CA572409 + 24298EEFBA271B7BC756D203FA5A8FE49516EDF3313A5D8AA0AAAAD6BF929A01 + CFC7505DCBBBAAD590349C710BD3EEFA57D916D3A954920648249255283031B3 + 3A7BE1D164A5F61CCC0878D15C917FA8C43165D6334E558B25DBD80847E51BCF + A79B3E7D65DB33AEF1E04D570EE5723DB513C4C966E9006101ED0662043C6697 + 30B7DB3021CE6D5C5EEA58FAB22DE0F0ADBD36D25E38A6E6E2126413E00CAA81 + FAE27AE85FEB876EF10D30DC0E2083542432F3E3F8E2CBC5F7FF01CA5A8E3E21 + 6CC6AB8A264636110C7A80EADC2AE88B0E004474C0B026A035C76BF2B2A7ED43 + 29E671680BA0FC76B50F5BC902641501658B90304BA0EA11100A05544C0774D8 + 0834A7396B04DFE8C8E9B58FC19EAD80EB358B84852E44D9F1DF62930C9856B5 + 6320801419A0A27AA079430AB4303E722530EE6FDF3A838B15E729B3E50195C3 + D855B34A247F074A8BA91A40A2808C91803955E6E70233F36F3D0D58C6DEEDD6 + B8D35040179B9DA602305266AC028925A4A0B822A090C20BAB09BF96F35D736E + 53F70B90E997F07974AFDF0000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 610000000970485973000017120000171201679FD252000001EC4944415478DA + A5934B6813511486BF541B88CD26620DA262A51BDB8520158308D5852055B01B + A3E8CEBD2E7CE063512852D09D2E82E04604AB1B5D4451B059D8A6010D84D842 + 5B6B6B1A8D414A4C9B18EB4C27F3F466D41943ED4233309C3BDC39DFFFDF9F7B + 3C9665D1C8E379323CD510C1061C3DD0697F48C531BEE7A7EDB57F6B072DADBB + 9C1F4DE154D74D34DD70DE43272FB9805AF3975484E56F1A856289C2D23CFB4F + 44D8D4BE17DD30B932A8D629B7358D70F7C1D39F8023FBB6917B35C0D78F590C + 43EC5A06954A8505A5C4B1CB2947F14F07D158D205F48436F03E761E640FEB7C + 3ED660204B3263B9597A2F24ED866B8F59DD414F28C8E7443FDE6A55A883AAA9 + 28F232F3FA7ABA8EDFAC53FEBD1E1A4DBB805A0685370F91E65E0880084BD358 + 9255CCB65EDAF784571E413378F97ABC1E90C8C6C88EDC6687E9150EAAA415D8 + BCFB14DD9D875734D76A2235E102B674A85C1CEEA3B498E374F020A666727F21 + 4E662ECFDBAB19BBB9EFD6B3BA0C423B37BA80A4F188E733A32881327EA91991 + 22924FA7B9E427373B45FADCB4A3ACFD72929E78E702EE1506C8E68B18AD0AEA + 5A595C2F44A02D3495BD7CF8344EF2CC24D7EFC4567770361EA65C2EFCF5AA06 + 0241A2E1215BD5302DBB9AA24ECE645C4077D77606A3F17F9E0307D07F23F2FF + C3D4E838FF008E7263BE13CA147C0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 304 + Top = 8 + Bitmap = {} + end + object dsMedicacion: TDADataSource + Left = 336 + Top = 8 + end +end diff --git a/Source/Modulos/Medicaciones/Views/uViewDatosYSeleccionPacienteMedicacion.pas b/Source/Modulos/Medicaciones/Views/uViewDatosYSeleccionPacienteMedicacion.pas new file mode 100644 index 0000000..fd1b8c7 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewDatosYSeleccionPacienteMedicacion.pas @@ -0,0 +1,278 @@ +unit uViewDatosYSeleccionPacienteMedicacion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel, + cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos, + ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit, + pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask, + DBCtrls, dxLayoutControl, Buttons, uDAInterfaces, + cxMaskEdit, cxButtonEdit, uBizMedicaciones, uPacientesController, + uDireccionesContactoController, Menus, cxLookAndFeelPainters, cxButtons, + cxMemo; + +type + IViewDatosYSeleccionPacienteMedicacion = interface(IViewBase) + ['{1BCBC024-2523-45C5-B83B-12A9B45FD443}'] + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + + function GetPaciente: IBizPaciente; + procedure SetPaciente(Value: IBizPaciente); + property Paciente: IBizPaciente read GetPaciente write SetPaciente; + + function GetID_Paciente: integer; + procedure SetID_Paciente(const Value: integer); + property ID_Paciente: integer read GetID_Paciente write SetID_Paciente; + + function GetOnPacienteChanged : TNotifyEvent; + procedure SetOnPacienteChanged (const Value : TNotifyEvent); + property OnPacienteChanged : TNotifyEvent read GetOnPacienteChanged + write SetOnPacienteChanged; + + procedure ElegirPaciente; + procedure VerFichaPaciente; + procedure AnadirNuevoPaciente; + end; + + TfrViewDatosYSeleccionPacienteMedicacion = class(TfrViewBase, IViewDatosYSeleccionPacienteMedicacion) + dsPaciente: TDADataSource; + ActionList1: TActionList; + actElegirContacto: TAction; + actAnadirContacto: TAction; + actVerContacto: TAction; + PngImageList: TPngImageList; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item1: TdxLayoutItem; + edtlNombre: TcxDBTextEdit; + dxLayoutControl1Item2: TdxLayoutItem; + edtNUMERO_SS: TcxDBTextEdit; + Button1: TBitBtn; + dxLayoutControl1Item7: TdxLayoutItem; + Button2: TBitBtn; + dxLayoutControl1Item8: TdxLayoutItem; + Button3: TBitBtn; + dxLayoutControl1Item9: TdxLayoutItem; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + dsMedicacion: TDADataSource; + procedure actElegirContactoExecute(Sender: TObject); + procedure actAnadirContactoExecute(Sender: TObject); + procedure actVerContactoUpdate(Sender: TObject); + procedure actVerContactoExecute(Sender: TObject); + procedure actElegirDireccionUpdate(Sender: TObject); + procedure actElegirPersonaContactoUpdate(Sender: TObject); + + private + FOnPacienteChanged : TNotifyEvent; + FMsgElegirPaciente: String; + protected + FPacientesController : IPacientesController; + FMedicacion : IBizMedicacion; + FPaciente : IBizPaciente; + function GetPaciente: IBizPaciente; virtual; + procedure SetPaciente(Value: IBizPaciente); virtual; + function GetOnPacienteChanged : TNotifyEvent; + procedure SetOnPacienteChanged (const Value : TNotifyEvent); + procedure SetReadOnly(Value: Boolean); override; + function GetID_Paciente: integer; virtual; + procedure SetID_Paciente(const Value: integer); virtual; + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure ElegirPaciente; + procedure VerFichaPaciente; + procedure AnadirNuevoPaciente; + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + property Paciente: IBizPaciente read GetPaciente write SetPaciente; + property OnPacienteChanged : TNotifyEvent read GetOnPacienteChanged write SetOnPacienteChanged; + property ID_Paciente: integer read GetID_Paciente write SetID_Paciente; + end; + +implementation + +{$R *.dfm} + +uses + uDataModulePacientes, Math, uCustomView, uBizContactosPersonal, uDialogUtils; + + +procedure TfrViewDatosYSeleccionPacienteMedicacion.actElegirContactoExecute(Sender: TObject); +begin + ElegirPaciente; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.actElegirDireccionUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FPaciente.Direcciones) and + (FPaciente.Direcciones.Active) and (FPaciente.Direcciones.RecordCount > 0); +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.actElegirPersonaContactoUpdate( + Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := Assigned(FPaciente.Personal) and + (FPaciente.Personal.Active) and (FPaciente.Personal.RecordCount > 0); +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.actAnadirContactoExecute( + Sender: TObject); +begin + AnadirNuevoPaciente; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.actVerContactoExecute( + Sender: TObject); +begin + inherited; + VerFichaPaciente; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.actVerContactoUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0); +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.AnadirNuevoPaciente; +var + APaciente : IBizPaciente; +begin + inherited; + APaciente := (FPacientesController.Nuevo as IBizPaciente); + FPacientesController.Ver(APaciente); + Self.Paciente := APaciente; +end; + +constructor TfrViewDatosYSeleccionPacienteMedicacion.Create(AOwner: TComponent); +begin + inherited; + FMsgElegirPaciente := 'Elija el paciente para esta medicación.'; + FPacientesController := TPacientesController.Create; + + edtlNombre.Enabled := False; + edtNUMERO_SS.Enabled := False; +end; + +destructor TfrViewDatosYSeleccionPacienteMedicacion.Destroy; +begin + FPacientesController := NIL; + inherited; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.ElegirPaciente; +var + APaciente : IBizPaciente; +begin + inherited; + + APaciente := (FPacientesController.ElegirContacto(FPacientesController.BuscarTodos, FMsgElegirPaciente, False) as IBizPaciente); + + if Assigned(APaciente) then + Self.Paciente := APaciente; + APaciente := Nil; +end; + +function TfrViewDatosYSeleccionPacienteMedicacion.GetPaciente: IBizPaciente; +begin + Result := FPaciente; +end; + +function TfrViewDatosYSeleccionPacienteMedicacion.GetID_Paciente: integer; +begin + Result := -1; + if Assigned(FPaciente) then + Result := FPaciente.ID; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.SetPaciente(Value: IBizPaciente); +begin + FPaciente := Value; + if Assigned(FPaciente) then + begin + dsPaciente.DataTable := FPaciente.DataTable; + + if not FPaciente.DataTable.Active then + FPaciente.DataTable.Active := True; + end + else begin + dsPaciente.DataTable := NIL; + FPaciente := NIL; + end; + + if Assigned(FOnPacienteChanged) then + FOnPacienteChanged(Self); +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.SetID_Paciente(const Value: integer); +begin + Self.Paciente := IBizPaciente(FPacientesController.Buscar(Value)); +end; + +function TfrViewDatosYSeleccionPacienteMedicacion.GetOnPacienteChanged: TNotifyEvent; +begin + Result := FOnPacienteChanged; +end; + +function TfrViewDatosYSeleccionPacienteMedicacion.GetMedicacion: IBizMedicacion; +begin + Result := FMedicacion; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.SetOnPacienteChanged( + const Value: TNotifyEvent); +begin + FOnPacienteChanged := Value; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.SetMedicacion( + const Value: IBizMedicacion); +begin + FMedicacion := Value; + if Assigned(FMedicacion) then + begin + dsMedicacion.DataTable := FMedicacion.DataTable; + + FPaciente := FMedicacion.Paciente; + dsPaciente.DataTable := FPaciente.DataTable; + + if not FPaciente.DataTable.Active then + FPaciente.DataTable.Active := True; + + end + else begin + dsMedicacion.DataTable := NIL; + FPaciente := NIL; + end; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.SetReadOnly(Value: Boolean); +begin + inherited; + + if (csLoading in Self.ComponentState) then + Exit; + + actAnadirContacto.Enabled := not ReadOnly; + actElegirContacto.Enabled := not ReadOnly; +end; + +procedure TfrViewDatosYSeleccionPacienteMedicacion.VerFichaPaciente; +begin + if not Assigned(Paciente) then + ShowErrorMessage('No se ha indicado un paciente', 'No hay ningún paciente asociado a mostrar.') + else begin + FPacientesController.Ver(Paciente); + end; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uViewDetallesMedicacion.dfm b/Source/Modulos/Medicaciones/Views/uViewDetallesMedicacion.dfm new file mode 100644 index 0000000..b3b8eb4 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewDetallesMedicacion.dfm @@ -0,0 +1,38 @@ +inherited frViewDetallesMedicacion: TfrViewDetallesMedicacion + inherited cxGrid: TcxGrid + ExplicitTop = 121 + ExplicitHeight = 183 + inherited cxGridView: TcxGridDBTableView + inherited cxGridViewTIPO: TcxGridDBColumn + Visible = False + VisibleForCustomization = False + end + end + end + inherited TBXDock1: TTBXDock + ExplicitTop = 95 + inherited TBXToolbar1: TTBXToolbar + DockPos = 0 + inherited TBXSubmenuItem1: TTBXSubmenuItem + Visible = False + end + object TBXItem18: TTBXItem [1] + Action = actAnadirArticulos + DisplayMode = nbdmImageAndText + end + end + end + inherited ActionListContenido: TActionList + inherited actAnadirArticulos: TAction + Caption = 'A'#241'adir art'#237'culos...' + end + end + inherited GridGeneralPopupMenu: TPopupMenu + object Aadirartculos1: TMenuItem [4] + Action = actAnadirArticulos + end + object N2: TMenuItem [5] + Caption = '-' + end + end +end diff --git a/Source/Modulos/Medicaciones/Views/uViewDetallesMedicacion.pas b/Source/Modulos/Medicaciones/Views/uViewDetallesMedicacion.pas new file mode 100644 index 0000000..5b7e421 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewDetallesMedicacion.pas @@ -0,0 +1,78 @@ +unit uViewDetallesMedicacion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, ImgList, PngImageList, + uDADataTable, ActnList, ComCtrls, ToolWin, cxGridLevel, cxClasses, cxControls, + cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxGrid, cxImageComboBox, cxTextEdit, cxMaskEdit, cxCheckBox, cxCurrencyEdit, + Grids, DBGrids, StdCtrls, ExtCtrls, cxRichEdit, ExtActns, StdActns, + JvExStdCtrls, JvCombobox, JvColorCombo, TB2Item, TBX, TB2Dock, TB2Toolbar, + uArticulosController, uBizMedicaciones, cxDropDownEdit, + cxCalendar, cxDBEdit, dxLayoutControl, cxContainer, cxLookupEdit, + cxDBLookupEdit, cxDBLookupComboBox, uDAInterfaces, cxButtonEdit, + uViewDetallesArticulos, Menus, cxGridCustomPopupMenu, cxGridPopupMenu, + cxEditRepositoryItems; + +type + IViewDetallesMedicacion = interface(IViewDetallesArticulos) + ['{E880166F-89E8-4D0D-96FA-FF3770F6DCDB}'] + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + end; + + TfrViewDetallesMedicacion = class(TfrViewDetallesArticulos, IViewDetallesMedicacion) + N2: TMenuItem; + Aadirartculos1: TMenuItem; + TBXItem18: TTBXItem; + protected + FMedicacion: IBizMedicacion; + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); + + procedure AnadirArticulosInterno; override; + procedure RellenarArticulosInterno; override; + function AnadirArticulo(pReferencia: String): Boolean; + + public + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + end; + +implementation +{$R *.dfm} + +uses + uDetallesMedicacionController, uViewDetallesBase; + +{ TfrViewDetallesMedicacion } + +function TfrViewDetallesMedicacion.AnadirArticulo(pReferencia: String): Boolean; +begin + Result := (Controller as IDetallesMedicacionController).AnadirArticulo(Detalles, pReferencia); +end; + +procedure TfrViewDetallesMedicacion.AnadirArticulosInterno; +begin + (Controller as IDetallesMedicacionController).AnadirArticulos(Detalles); +end; + +function TfrViewDetallesMedicacion.GetMedicacion: IBizMedicacion; +begin + Result := FMedicacion; +end; + +procedure TfrViewDetallesMedicacion.RellenarArticulosInterno; +begin + (Controller as IDetallesMedicacionController).AnadirArticulos(Detalles, False); +end; + +procedure TfrViewDetallesMedicacion.SetMedicacion(const Value: IBizMedicacion); +begin + FMedicacion := Value; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uViewDireccionEntregaAlbaranCliente.dfm b/Source/Modulos/Medicaciones/Views/uViewDireccionEntregaAlbaranCliente.dfm new file mode 100644 index 0000000..5e29e3f --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewDireccionEntregaAlbaranCliente.dfm @@ -0,0 +1,217 @@ +inherited frViewDireccionEntregaAlbaranCliente: TfrViewDireccionEntregaAlbaranCliente + Width = 337 + Height = 126 + ExplicitWidth = 337 + ExplicitHeight = 126 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 337 + Height = 126 + Align = alClient + ParentBackground = True + TabOrder = 0 + TabStop = False + AutoContentSizes = [acsWidth, acsHeight] + object eCalle: TcxDBTextEdit + Left = 64 + Top = 10 + DataBinding.DataField = 'CALLE' + DataBinding.DataSource = dsAlbaran + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 0 + Width = 263 + end + object eCodigoPostal: TcxDBTextEdit + Left = 262 + Top = 37 + DataBinding.DataField = 'CODIGO_POSTAL' + DataBinding.DataSource = dsAlbaran + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 2 + Width = 65 + end + object eTlfTrabajo: TcxDBTextEdit + Left = 205 + Top = 91 + DataBinding.DataField = 'TELEFONO' + DataBinding.DataSource = dsAlbaran + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 5 + Width = 122 + end + object ePersonaContacto: TcxDBTextEdit + Left = 64 + Top = 91 + DataBinding.DataField = 'PERSONA_CONTACTO' + DataBinding.DataSource = dsAlbaran + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clWindow + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 4 + Width = 84 + end + object cbProvincia: TcxDBComboBox + Left = 64 + Top = 37 + DataBinding.DataField = 'PROVINCIA' + DataBinding.DataSource = dsAlbaran + Properties.ImmediatePost = True + Properties.ImmediateUpdateText = True + Properties.PostPopupValueOnTab = True + Properties.OnInitPopup = cbProvinciaPropertiesInitPopup + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 1 + Width = 162 + end + object cbPoblacion: TcxDBComboBox + Left = 64 + Top = 64 + DataBinding.DataField = 'POBLACION' + DataBinding.DataSource = dsAlbaran + Properties.ImmediatePost = True + Properties.ImmediateUpdateText = True + Properties.PostPopupValueOnTab = True + Properties.OnInitPopup = cbPoblacionPropertiesInitPopup + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.ButtonStyle = bts3D + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + TabOrder = 3 + Width = 263 + end + object dxLayoutGroup1: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Item1: TdxLayoutItem + Caption = 'Calle:' + Control = eCalle + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group3: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group2: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Provincia:' + Control = cbProvincia + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item4: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'C.P.:' + Control = eCodigoPostal + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'Poblaci'#243'n:' + Control = cbPoblacion + ControlOptions.ShowBorder = False + end + end + object dxLayoutControl1Group4: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item6: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Contacto:' + Control = ePersonaContacto + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item5: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahRight + Caption = 'Tel'#233'fono:' + Control = eTlfTrabajo + ControlOptions.ShowBorder = False + end + end + end + end + end + object dsAlbaran: TDADataSource + Left = 8 + Top = 8 + end + object dsAlmacenes: TDADataSource + Left = 8 + Top = 40 + end +end diff --git a/Source/Modulos/Medicaciones/Views/uViewDireccionEntregaAlbaranCliente.pas b/Source/Modulos/Medicaciones/Views/uViewDireccionEntregaAlbaranCliente.pas new file mode 100644 index 0000000..8246f11 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewDireccionEntregaAlbaranCliente.pas @@ -0,0 +1,243 @@ +unit uViewDireccionEntregaAlbaranCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizAlbaranesCliente, cxGraphics, dxLayoutControl, cxMemo, + cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit, + cxDBLookupEdit, cxDBLookupComboBox, StdCtrls, cxControls, DB, uDADataTable, + ActnList, uAlbaranesClienteController, Buttons, cxDBEdit, uDAInterfaces; + +type + IViewDireccionEntregaAlbaranCliente = interface(IViewBase) + ['{C23A361A-98CA-450C-9F29-2DA7877601EE}'] + function GetAlbaranCliente: IBizAlbaranCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranCliente); + property AlbaranCliente: IBizAlbaranCliente read GetAlbaranCliente write SetAlbaranCliente; + end; + + TfrViewDireccionEntregaAlbaranCliente = class(TfrViewBase, IViewDireccionEntregaAlbaranCliente) + dxLayoutControl1: TdxLayoutControl; + dxLayoutGroup1: TdxLayoutGroup; + dsAlbaran: TDADataSource; + dsAlmacenes: TDADataSource; + dxLayoutControl1Item1: TdxLayoutItem; + eCalle: TcxDBTextEdit; + dxLayoutControl1Item4: TdxLayoutItem; + eCodigoPostal: TcxDBTextEdit; + dxLayoutControl1Item5: TdxLayoutItem; + eTlfTrabajo: TcxDBTextEdit; + dxLayoutControl1Item6: TdxLayoutItem; + ePersonaContacto: TcxDBTextEdit; + dxLayoutControl1Group3: TdxLayoutGroup; + dxLayoutControl1Group4: TdxLayoutGroup; + dxLayoutControl1Item2: TdxLayoutItem; + cbProvincia: TcxDBComboBox; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Item3: TdxLayoutItem; + cbPoblacion: TcxDBComboBox; + dxLayoutControl1Group2: TdxLayoutGroup; + procedure cbListaPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + procedure cbProvinciaPropertiesInitPopup(Sender: TObject); + procedure cbPoblacionPropertiesInitPopup(Sender: TObject); + protected +// FAlmacenesController : IAlmacenesController; +// FAlmacenes: IBizAlmacen; + FAlbaran : IBizAlbaranCliente; + FController : IAlbaranesClienteController; + FProvincias : TStringList; + FIDProvincia : Integer; //Almacenará la provincia que hay seleccionada para no cargar las poblaciones si no es necesario + FPoblaciones : TStringList; + procedure CargarProvincias; + procedure CargarPoblaciones; + function GetAlbaranCliente: IBizAlbaranCliente; + procedure SetAlbaranCliente(const Value: IBizAlbaranCliente); + procedure RefrescarDireccion; + public + property AlbaranCliente: IBizAlbaranCliente read GetAlbaranCliente write SetAlbaranCliente; + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + end; + +implementation + +{$R *.dfm} + +uses + uEditorRegistryUtils, + uProvinciasPoblacionesController, uStringsUtils; + + +procedure TfrViewDireccionEntregaAlbaranCliente.CargarPoblaciones; +var + i : integer; + +begin + if (FIDProvincia <> StrToInt(FProvincias.Values[cbProvincia.Text])) then + Begin + FIDProvincia := StrToInt(FProvincias.Values[cbProvincia.Text]); + with TProvinciasPoblacionesController.Create do + try + FPoblaciones := DarListaPoblaciones(FIDProvincia); + + with cbPoblacion.Properties.Items do + begin + BeginUpdate; + try + Clear; + for i := 0 to FPoblaciones.Count - 1 do + Add(FPoblaciones.Names[i]); + finally + EndUpdate; + end; + end; + finally + Free; + end; + End; +end; + +procedure TfrViewDireccionEntregaAlbaranCliente.CargarProvincias; +var + i : integer; +begin + with TProvinciasPoblacionesController.Create do + try + FProvincias := DarListaProvincias; + + with cbProvincia.Properties.Items do + begin + BeginUpdate; + try + Clear; + for i := 0 to FProvincias.Count - 1 do + Add(FProvincias.Names[i]); + finally + EndUpdate; + end; + end; + finally + Free; + end; +end; + +procedure TfrViewDireccionEntregaAlbaranCliente.cbListaPropertiesValidate( + Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; + var Error: Boolean); +begin +{ if Assigned(FAlbaran) and (FAlbaran.ID_ALMACEN <> FAlmacenes.ID) then + begin + FAlbaran.Edit; + FAlbaran.CALLE := FAlmacenes.CALLE; + FAlbaran.POBLACION := FAlmacenes.POBLACION; + FAlbaran.POBLACION := FAlmacenes.POBLACION; + FAlbaran.PROVINCIA := FAlmacenes.PROVINCIA; + FAlbaran.CODIGO_POSTAL := FAlmacenes.CODIGO_POSTAL; + FAlbaran.PERSONA_CONTACTO := FAlmacenes.PERSONA_CONTACTO; + FAlbaran.TELEFONO := FAlmacenes.TELEFONO; + RefrescarDireccion; + end;} +end; + +procedure TfrViewDireccionEntregaAlbaranCliente.cbPoblacionPropertiesInitPopup( + Sender: TObject); +begin + inherited; + ShowHourglassCursor; + try + FreeANDNIL(FPoblaciones); + if not Assigned(FProvincias) then + CargarProvincias; + if not EsCadenaVacia(cbProvincia.Text) and (FProvincias.IndexOfName(cbProvincia.Text) <> -1) then + CargarPoblaciones + finally + HideHourglassCursor; + end; +end; + +procedure TfrViewDireccionEntregaAlbaranCliente.cbProvinciaPropertiesInitPopup( + Sender: TObject); +begin + inherited; + ShowHourglassCursor; + try + if not Assigned(FProvincias) then + CargarProvincias; + finally + HideHourglassCursor; + end; +end; + +constructor TfrViewDireccionEntregaAlbaranCliente.Create(AOwner: TComponent); +begin + inherited; + FIDProvincia := 0; + FAlbaran := NIL; + FProvincias := NIL; + FPoblaciones := NIL; + + { FController := TAlbaranesClienteController.Create; + FAlmacenesController := TAlmacenesController.Create; + FAlmacenes := FAlmacenesController.BuscarTodos; + FAlmacenes.DataTable.Active := True; + dsAlmacenes.DataTable := FAlmacenes.DataTable;} +end; + +destructor TfrViewDireccionEntregaAlbaranCliente.Destroy; +begin +{ cbLista.Properties.OnValidate := Nil; + FAlmacenesController := Nil; + FAlmacenes := Nil; + FController := NIL; +} + if Assigned(FProvincias) then + FreeANDNIL(FProvincias); + + if Assigned(FPoblaciones) then + FreeANDNIL(FPoblaciones); + + FAlbaran := NIL; + inherited; +end; + +function TfrViewDireccionEntregaAlbaranCliente.GetAlbaranCliente: IBizAlbaranCliente; +begin + Result := FAlbaran; +end; + +procedure TfrViewDireccionEntregaAlbaranCliente.RefrescarDireccion; +begin +{ memDireccion.Lines.Clear; + if Assigned(FAlbaran) then + begin + memDireccion.Lines.Add(FAlbaran.CALLE); + memDireccion.Lines.Add(FAlbaran.CODIGO_POSTAL + ' ' + FPedido.POBLACION); + memDireccion.Lines.Add(FAlbaran.PROVINCIA); + end;} +end; + +procedure TfrViewDireccionEntregaAlbaranCliente.SetAlbaranCliente( + const Value: IBizAlbaranCliente); +begin + + FAlbaran := Value; + if Assigned(FAlbaran) then + dsAlbaran.DataTable := FAlbaran.DataTable + else + dsAlbaran.DataTable := NIL; + +{ cbLista.Properties.OnValidate := NIL; + dsAlbaran.DataTable := nil; + + FAlbaran := Value; + + if not FAlbaran.EsNuevo then + RefrescarDireccion; + + // Esto al final para que no salten los eventos del cxComboBox + dsAlbaran.DataTable := FAlbaran.DataTable; + cbLista.Properties.OnValidate := cbListaPropertiesValidate;} +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uViewElegirArticulosAlbaranesCliente.dfm b/Source/Modulos/Medicaciones/Views/uViewElegirArticulosAlbaranesCliente.dfm new file mode 100644 index 0000000..05a03b2 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewElegirArticulosAlbaranesCliente.dfm @@ -0,0 +1,30 @@ +inherited frViewElegirArticulosAlbaranesCliente: TfrViewElegirArticulosAlbaranesCliente + inherited frViewFiltroBase1: TfrViewFiltroBase + inherited TBXDockablePanel1: TTBXDockablePanel + inherited dxLayoutControl1: TdxLayoutControl + inherited edtFechaIniFiltro: TcxDateEdit + ExplicitWidth = 121 + Width = 121 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 225 + ExplicitLeft = 225 + ExplicitWidth = 121 + Width = 121 + end + inherited eLista: TcxComboBox + Left = 383 + ExplicitLeft = 383 + ExplicitWidth = 322 + Width = 322 + end + end + end + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39226.746968310190000000 + BuiltInReportLink = True + end + end +end diff --git a/Source/Modulos/Medicaciones/Views/uViewElegirArticulosAlbaranesCliente.pas b/Source/Modulos/Medicaciones/Views/uViewElegirArticulosAlbaranesCliente.pas new file mode 100644 index 0000000..489bc42 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewElegirArticulosAlbaranesCliente.pas @@ -0,0 +1,28 @@ +unit uViewElegirArticulosAlbaranesCliente; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewArticulos, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, + cxDataStorage, cxEdit, DB, cxDBData, cxImageComboBox, cxCurrencyEdit, + cxSpinEdit, dxPSGlbl, dxPSUtl, dxPSEngn, dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, + dxPSCompsProvider, dxPSFillPatterns, dxPSEdgePatterns, ImgList, PngImageList, + cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, + uDADataTable, cxGridLevel, cxGridCustomTableView, cxGridTableView, + cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, dxPgsDlg, + ActnList, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, uViewFiltroBase, + uDAInterfaces; + +type + IViewElegirArticulosAlbaranesCliente = interface(IViewArticulos) + ['{4143BB25-0992-4F6E-9D39-BC55BC20EEBE}'] + end; + + TfrViewElegirArticulosAlbaranesCliente = class(TfrViewArticulos, IViewElegirArticulosAlbaranesCliente) + end; + +implementation +{$R *.dfm} + +end. diff --git a/Source/Modulos/Medicaciones/Views/uViewMedicacion.dfm b/Source/Modulos/Medicaciones/Views/uViewMedicacion.dfm new file mode 100644 index 0000000..708fb2c --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewMedicacion.dfm @@ -0,0 +1,239 @@ +inherited frViewMedicacion: TfrViewMedicacion + Width = 516 + Height = 248 + OnCreate = CustomViewCreate + OnDestroy = CustomViewDestroy + ExplicitWidth = 516 + ExplicitHeight = 248 + object dxLayoutControl1: TdxLayoutControl + Left = 0 + Top = 0 + Width = 516 + Height = 248 + Align = alClient + ParentBackground = True + TabOrder = 0 + TabStop = False + AutoContentSizes = [acsWidth, acsHeight] + ExplicitHeight = 257 + DesignSize = ( + 516 + 248) + object edtFechaHasta: TcxDBDateEdit + Left = 338 + Top = 55 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHA_HASTA' + DataBinding.DataSource = DADataSource + Properties.ImmediatePost = True + Properties.OnValidate = edtFechaHastaPropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clInfoBk + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.LookAndFeel.SkinName = '' + Style.Shadow = False + Style.ButtonStyle = bts3D + Style.ButtonTransparency = ebtNone + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.SkinName = '' + TabOrder = 2 + Width = 182 + end + object eReferencia: TcxDBTextEdit + Left = 92 + Top = 28 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'REFERENCIA' + DataBinding.DataSource = DADataSource + Enabled = False + Properties.ReadOnly = False + Properties.ValidateOnEnter = True + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clInfoBk + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.LookAndFeel.SkinName = '' + StyleDisabled.Color = clMenuBar + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.SkinName = '' + StyleDisabled.TextColor = clWindowText + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.SkinName = '' + TabOrder = 0 + Width = 336 + end + object edtFechaDesde: TcxDBDateEdit + Left = 92 + Top = 55 + Anchors = [akLeft, akTop, akRight] + DataBinding.DataField = 'FECHA_DESDE' + DataBinding.DataSource = DADataSource + Properties.ImmediatePost = True + Properties.OnValidate = edtFechaDesdePropertiesValidate + Style.BorderColor = clWindowFrame + Style.BorderStyle = ebs3D + Style.Color = clInfoBk + Style.HotTrack = False + Style.LookAndFeel.Kind = lfStandard + Style.LookAndFeel.NativeStyle = True + Style.LookAndFeel.SkinName = '' + Style.Shadow = False + Style.ButtonStyle = bts3D + Style.ButtonTransparency = ebtNone + Style.PopupBorderStyle = epbsFrame3D + StyleDisabled.LookAndFeel.Kind = lfStandard + StyleDisabled.LookAndFeel.NativeStyle = True + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.Kind = lfStandard + StyleFocused.LookAndFeel.NativeStyle = True + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.Kind = lfStandard + StyleHot.LookAndFeel.NativeStyle = True + StyleHot.LookAndFeel.SkinName = '' + TabOrder = 1 + Width = 200 + end + inline frViewDatosYSeleccionPacienteMedicacion1: TfrViewDatosYSeleccionPacienteMedicacion + Left = 22 + Top = 112 + Width = 859 + Height = 107 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + ParentFont = False + TabOrder = 3 + ReadOnly = False + ExplicitLeft = 22 + ExplicitTop = 112 + ExplicitWidth = 859 + ExplicitHeight = 107 + inherited dxLayoutControl1: TdxLayoutControl + Width = 859 + Height = 107 + ExplicitWidth = 406 + ExplicitHeight = 181 + inherited edtlNombre: TcxDBTextEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 224 + Width = 224 + end + inherited edtNUMERO_SS: TcxDBTextEdit + Left = 359 + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitLeft = 359 + end + inherited Button3: TBitBtn + Left = 270 + ExplicitLeft = 270 + end + end + inherited dsPaciente: TDADataSource + Left = 272 + Top = 32 + end + inherited ActionList1: TActionList + Left = 312 + Top = 32 + end + inherited PngImageList: TPngImageList + Left = 232 + Top = 32 + end + end + object dxLayoutControl1Group_Root: TdxLayoutGroup + ShowCaption = False + Hidden = True + ShowBorder = False + object dxLayoutControl1Group1: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + Caption = 'Datos del blister de medicaci'#243'n' + object dxLayoutControl1Item3: TdxLayoutItem + Caption = 'Referencia:' + Control = eReferencia + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Group3: TdxLayoutGroup + ShowCaption = False + Hidden = True + LayoutDirection = ldHorizontal + ShowBorder = False + object dxLayoutControl1Item24: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Fecha desde:' + Control = edtFechaDesde + ControlOptions.ShowBorder = False + end + object dxLayoutControl1Item2: TdxLayoutItem + AutoAligns = [aaVertical] + AlignHorz = ahClient + Caption = 'Fecha hasta:' + Control = edtFechaHasta + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group2: TdxLayoutGroup + Caption = 'Datos del paciente' + object dxLayoutControl1Item1: TdxLayoutItem + Control = frViewDatosYSeleccionPacienteMedicacion1 + ControlOptions.AutoColor = True + ControlOptions.ShowBorder = False + end + end + end + object dxLayoutControl1Group8: TdxLayoutGroup + AutoAligns = [] + AlignHorz = ahClient + Caption = 'Direcci'#243'n de entrega' + Visible = False + end + object dxLayoutControl1Group11: TdxLayoutGroup + Caption = 'Almac'#233'n de origen' + Visible = False + end + object dxLayoutControl1Group7: TdxLayoutGroup + AutoAligns = [aaHorizontal] + AlignVert = avClient + Caption = 'Observaciones' + end + object dxLayoutControl1Group12: TdxLayoutGroup + Caption = 'Fechas de envio y recepci'#243'n' + Visible = False + end + end + object DADataSource: TDADataSource + Left = 8 + end + object ActionList1: TActionList + Left = 40 + end +end diff --git a/Source/Modulos/Medicaciones/Views/uViewMedicacion.pas b/Source/Modulos/Medicaciones/Views/uViewMedicacion.pas new file mode 100644 index 0000000..01502f0 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewMedicacion.pas @@ -0,0 +1,140 @@ +unit uViewMedicacion; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, uViewBase, uBizMedicaciones, DB, uDADataTable, uCustomView, + AppEvnts, StdCtrls, Mask, DBCtrls, uViewObservaciones, + cxGraphics, cxDropDownEdit, cxImageComboBox, cxDBEdit, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxCalendar, dxLayoutControl, cxControls, cxMemo, + Buttons, ActnList, ExtCtrls, cxLookupEdit, cxDBLookupEdit, + cxDBLookupComboBox, uDAInterfaces, uViewDatosYSeleccionPacienteMedicacion; + +type + IViewMedicacion = interface(IViewBase) + ['{140BEFAF-925B-43E2-A4EC-9349B54B3D64}'] + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + + function GetViewPacienteMedicacion: IViewDatosYSeleccionPacienteMedicacion; + property ViewPacienteMedicacion: IViewDatosYSeleccionPacienteMedicacion read GetViewPacienteMedicacion; + end; + + TfrViewMedicacion = class(TfrViewBase, IViewMedicacion) + DADataSource: TDADataSource; + dxLayoutControl1Group_Root: TdxLayoutGroup; + dxLayoutControl1: TdxLayoutControl; + dxLayoutControl1Item2: TdxLayoutItem; + edtFechaHasta: TcxDBDateEdit; + dxLayoutControl1Group1: TdxLayoutGroup; + dxLayoutControl1Group2: TdxLayoutGroup; + dxLayoutControl1Item3: TdxLayoutItem; + eReferencia: TcxDBTextEdit; + dxLayoutControl1Group7: TdxLayoutGroup; + dxLayoutControl1Group8: TdxLayoutGroup; + ActionList1: TActionList; + dxLayoutControl1Group11: TdxLayoutGroup; + dxLayoutControl1Group12: TdxLayoutGroup; + dxLayoutControl1Item24: TdxLayoutItem; + edtFechaDesde: TcxDBDateEdit; + frViewDatosYSeleccionPacienteMedicacion1: TfrViewDatosYSeleccionPacienteMedicacion; + dxLayoutControl1Item1: TdxLayoutItem; + dxLayoutControl1Group3: TdxLayoutGroup; + procedure CustomViewCreate(Sender: TObject); + procedure CustomViewDestroy(Sender: TObject); + procedure edtFechaHastaPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + procedure edtFechaDesdePropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); + + protected + FMedicacion : IBizMedicacion; + FViewPacienteMedicacion : IViewDatosYSeleccionPacienteMedicacion; + + function GetMedicacion: IBizMedicacion; + procedure SetMedicacion(const Value: IBizMedicacion); virtual; + function GetViewPacienteMedicacion: IViewDatosYSeleccionPacienteMedicacion; + public + property Medicacion: IBizMedicacion read GetMedicacion write SetMedicacion; + property ViewPacienteMedicacion: IViewDatosYSeleccionPacienteMedicacion read GetViewPacienteMedicacion; + end; + +implementation + +{$R *.dfm} + +{ TfrViewMedicacion } + +uses + uBizDireccionesContacto, uMedicacionesController, + schMedicacionClient_Intf, uDateUtils, + uDialogUtils, uProvinciasPoblacionesController, uStringsUtils; + + +procedure TfrViewMedicacion.CustomViewCreate(Sender: TObject); +begin + inherited; + FViewPacienteMedicacion := frViewDatosYSeleccionPacienteMedicacion1; +end; + +procedure TfrViewMedicacion.CustomViewDestroy(Sender: TObject); +begin + inherited; + FViewPacienteMedicacion := Nil; +end; + +procedure TfrViewMedicacion.edtFechaDesdePropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +begin + inherited; + if not (VarIsNull(DisplayValue) or (DisplayValue = '')) then + begin + if (edtFechaHasta.Date < edtFechaDesde.Date) then + begin + ShowWarningMessage('La fecha inicial debe ser anterior a la fecha inicial'); + edtFechaDesde.SetFocus; + end; + end; +end; + +procedure TfrViewMedicacion.edtFechaHastaPropertiesValidate(Sender: TObject; + var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean); +begin + inherited; + if not (VarIsNull(DisplayValue) or (DisplayValue = '')) then + begin + if (edtFechaHasta.Date < edtFechaDesde.Date) then + begin + ShowWarningMessage('La fecha final debe ser posterior a la fecha inicial'); + edtFechaHasta.SetFocus; + end; + end; +end; + +function TfrViewMedicacion.GetMedicacion: IBizMedicacion; +begin + Result := FMedicacion; +end; + +function TfrViewMedicacion.GetViewPacienteMedicacion: IViewDatosYSeleccionPacienteMedicacion; +begin + Result := FViewPacienteMedicacion; +end; + +procedure TfrViewMedicacion.SetMedicacion(const Value: IBizMedicacion); +begin + FMedicacion := Value; + if Assigned(FMedicacion) then + begin + DADataSource.DataTable := FMedicacion.DataTable; + FViewPacienteMedicacion.Medicacion := FMedicacion; + end + else begin + DADataSource.DataTable := NIL; + FViewPacienteMedicacion.Medicacion := NIL; + end; +end; + +end. diff --git a/Source/Modulos/Medicaciones/Views/uViewMedicaciones.dfm b/Source/Modulos/Medicaciones/Views/uViewMedicaciones.dfm new file mode 100644 index 0000000..798d0e7 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewMedicaciones.dfm @@ -0,0 +1,416 @@ +inherited frViewMedicaciones: TfrViewMedicaciones + Width = 802 + Height = 490 + ExplicitWidth = 802 + ExplicitHeight = 490 + inherited cxGrid: TcxGrid + Width = 802 + Height = 362 + RootLevelOptions.DetailTabsPosition = dtpTop + OnActiveTabChanged = cxGridActiveTabChanged + ExplicitWidth = 802 + ExplicitHeight = 362 + inherited cxGridView: TcxGridDBTableView + DataController.KeyFieldNames = 'ID' + DataController.Options = [dcoAnsiSort, dcoAssignMasterDetailKeys, dcoSaveExpanding, dcoSortByDisplayText, dcoGroupsAlwaysExpanded] + DataController.Summary.FooterSummaryItems = < + item + Format = '0 medicaciones' + Kind = skCount + Column = cxGridViewREFERENCIA + end> + DataController.OnCompare = cxGridViewDataControllerCompare + OptionsCustomize.ColumnHidingOnGrouping = False + OptionsView.GroupFooters = gfAlwaysVisible + object cxGridViewREFERENCIA: TcxGridDBColumn + DataBinding.FieldName = 'REFERENCIA' + BestFitMaxWidth = 45 + SortIndex = 0 + SortOrder = soDescending + Width = 108 + end + object cxGridViewNOMBRE: TcxGridDBColumn + Caption = 'Paciente' + DataBinding.FieldName = 'NOMBRE' + Width = 418 + end + object cxGridViewNUMERO_SS: TcxGridDBColumn + Caption = 'Numero SS' + DataBinding.FieldName = 'NUMERO_SS' + BestFitMaxWidth = 45 + end + object cxGridViewFECHA_DESDE: TcxGridDBColumn + Caption = 'Desde' + DataBinding.FieldName = 'FECHA_DESDE' + BestFitMaxWidth = 45 + Width = 238 + end + object cxGridViewFECHA_HASTA: TcxGridDBColumn + Caption = 'Hasta' + DataBinding.FieldName = 'FECHA_HASTA' + BestFitMaxWidth = 45 + Width = 45 + end + end + inherited cxGridLevel: TcxGridLevel + Caption = 'Todos' + end + end + inherited frViewFiltroBase1: TfrViewFiltroBase + Width = 802 + ExplicitWidth = 802 + inherited TBXDockablePanel1: TTBXDockablePanel + ExplicitWidth = 802 + inherited dxLayoutControl1: TdxLayoutControl + Width = 802 + ExplicitWidth = 802 + inherited txtFiltroTodo: TcxTextEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 705 + Width = 705 + end + inherited edtFechaIniFiltro: TcxDateEdit + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitWidth = 228 + Width = 228 + end + inherited edtFechaFinFiltro: TcxDateEdit + Left = 257 + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitLeft = 257 + ExplicitWidth = 460 + Width = 460 + end + inherited eLista: TcxComboBox + Left = 638 + Style.LookAndFeel.SkinName = '' + StyleDisabled.LookAndFeel.SkinName = '' + StyleFocused.LookAndFeel.SkinName = '' + StyleHot.LookAndFeel.SkinName = '' + ExplicitLeft = 638 + ExplicitWidth = 215 + Width = 215 + end + end + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 802 + ExplicitWidth = 802 + inherited tbxBotones: TTBXToolbar + Width = 792 + ExplicitWidth = 792 + end + end + end + inherited dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList + Left = 32 + Top = 56 + end + end + inherited pnlAgrupaciones: TTBXDockablePanel + Top = 464 + Visible = True + ExplicitTop = 464 + ExplicitWidth = 802 + inherited TBXAlignmentPanel1: TTBXAlignmentPanel + Width = 802 + ExplicitWidth = 802 + inherited TBXToolbar1: TTBXToolbar + Width = 792 + ExplicitWidth = 792 + object TBXSeparatorItem1: TTBXSeparatorItem + end + object TBXItem3: TTBXItem + Action = actPacientes + end + end + end + end + inherited dsDataSource: TDADataSource + Left = 32 + Top = 24 + end + inherited dxComponentPrinter: TdxComponentPrinter + inherited dxComponentPrinterLink: TdxGridReportLink + ReportDocument.CreationDate = 39217.578907326390000000 + BuiltInReportLink = True + end + end + inherited dxPSEngineController1: TdxPSEngineController + Top = 160 + end + inherited cxStyleRepository1: TcxStyleRepository + Left = 272 + Top = 160 + object cxStyleProximosAEnviar: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = clFuchsia + TextColor = clBlue + end + object cxStylePENDIENTES: TcxStyle + AssignedValues = [svTextColor] + TextColor = clGreen + end + object cxStyleENVIADOS: TcxStyle + AssignedValues = [svTextColor] + TextColor = clBlue + end + object cxStyleSERVIDOS: TcxStyle + end + object cxStyleRETRASADOS: TcxStyle + AssignedValues = [svColor, svTextColor] + Color = 15527167 + TextColor = clRed + end + end + inherited ActionList1: TActionList + Left = 240 + Top = 160 + object actPacientes: TAction + Caption = 'Pacientes' + OnExecute = actPacientesExecute + OnUpdate = actPacientesUpdate + end + end + inherited GridPNGImageList: TPngImageList + PngImages = < + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000B1300000B1301009A9C1800000A4F694343505068 + 6F746F73686F70204943432070726F66696C65000078DA9D53675453E9163DF7 + DEF4424B8880944B6F5215082052428B801491262A2109104A8821A1D91551C1 + 114545041BC8A088038E8E808C15512C0C8A0AD807E421A28E83A3888ACAFBE1 + 7BA36BD6BCF7E6CDFEB5D73EE7ACF39DB3CF07C0080C9648335135800CA9421E + 11E083C7C4C6E1E42E40810A2470001008B3642173FD230100F87E3C3C2B22C0 + 07BE000178D30B0800C04D9BC0301C87FF0FEA42995C01808401C07491384B08 + 801400407A8E42A600404601809D98265300A0040060CB6362E300502D006027 + 7FE6D300809DF8997B01005B94211501A09100201365884400683B00ACCF568A + 450058300014664BC43900D82D00304957664800B0B700C0CE100BB200080C00 + 305188852900047B0060C8232378008499001446F2573CF12BAE10E72A000078 + 99B23CB9243945815B082D710757572E1E28CE49172B14366102619A402EC279 + 99193281340FE0F3CC0000A0911511E083F3FD78CE0EAECECE368EB60E5F2DEA + BF06FF226262E3FEE5CFAB70400000E1747ED1FE2C2FB31A803B06806DFEA225 + EE04685E0BA075F78B66B20F40B500A0E9DA57F370F87E3C3C45A190B9D9D9E5 + E4E4D84AC4425B61CA577DFE67C25FC057FD6CF97E3CFCF7F5E0BEE22481325D + 814704F8E0C2CCF44CA51CCF92098462DCE68F47FCB70BFFFC1DD322C44962B9 + 582A14E35112718E449A8CF332A52289429229C525D2FF64E2DF2CFB033EDF35 + 00B06A3E017B912DA85D6303F64B27105874C0E2F70000F2BB6FC1D428080380 + 6883E1CF77FFEF3FFD47A02500806649927100005E44242E54CAB33FC7080000 + 44A0812AB0411BF4C1182CC0061CC105DCC10BFC6036844224C4C24210420A64 + 801C726029AC82422886CDB01D2A602FD4401D34C051688693700E2EC255B80E + 3D700FFA61089EC128BC81090441C808136121DA8801628A58238E08179985F8 + 21C14804128B2420C9881451224B91354831528A542055481DF23D720239875C + 46BA913BC8003282FC86BC47319481B2513DD40CB543B9A8371A8446A20BD064 + 74319A8F16A09BD072B41A3D8C36A1E7D0AB680FDA8F3E43C730C0E8180733C4 + 6C302EC6C342B1382C099363CBB122AC0CABC61AB056AC03BB89F563CFB17704 + 128145C0093604774220611E4148584C584ED848A8201C243411DA0937090384 + 51C2272293A84BB426BA11F9C4186232318758482C23D6128F132F107B8843C4 + 37241289433227B9900249B1A454D212D246D26E5223E92CA99B34481A2393C9 + DA646BB20739942C202BC885E49DE4C3E433E41BE421F25B0A9D624071A4F853 + E22852CA6A4A19E510E534E5066598324155A39A52DDA8A15411358F5A42ADA1 + B652AF5187A81334759A39CD8316494BA5ADA295D31A681768F769AFE874BA11 + DD951E4E97D057D2CBE947E897E803F4770C0D861583C7886728199B18071867 + 197718AF984CA619D38B19C754303731EB98E7990F996F55582AB62A7C1591CA + 0A954A9526951B2A2F54A9AAA6AADEAA0B55F355CB548FA95E537DAE46553353 + E3A909D496AB55AA9D50EB531B5367A93BA887AA67A86F543FA47E59FD890659 + C34CC34F43A451A0B15FE3BCC6200B6319B3782C216B0DAB86758135C426B1CD + D97C762ABB98FD1DBB8B3DAAA9A13943334A3357B352F394663F07E39871F89C + 744E09E728A797F37E8ADE14EF29E2291BA6344CB931655C6BAA96979658AB48 + AB51AB47EBBD36AEEDA79DA6BD45BB59FB810E41C74A275C2747678FCE059DE7 + 53D953DDA70AA7164D3D3AF5AE2EAA6BA51BA1BB4477BF6EA7EE989EBE5E809E + 4C6FA7DE79BDE7FA1C7D2FFD54FD6DFAA7F5470C5806B30C2406DB0CCE183CC5 + 35716F3C1D2FC7DBF151435DC34043A561956197E18491B9D13CA3D5468D460F + 8C69C65CE324E36DC66DC6A326062621264B4DEA4DEE9A524DB9A629A63B4C3B + 4CC7CDCCCDA2CDD699359B3D31D732E79BE79BD79BDFB7605A785A2CB6A8B6B8 + 6549B2E45AA659EEB6BC6E855A3959A558555A5DB346AD9DAD25D6BBADBBA711 + A7B94E934EAB9ED667C3B0F1B6C9B6A9B719B0E5D806DBAEB66DB67D61676217 + 67B7C5AEC3EE93BD937DBA7D8DFD3D070D87D90EAB1D5A1D7E73B472143A563A + DE9ACE9CEE3F7DC5F496E92F6758CF10CFD833E3B613CB29C4699D539BD34767 + 1767B97383F3888B894B82CB2E973E2E9B1BC6DDC8BDE44A74F5715DE17AD2F5 + 9D9BB39BC2EDA8DBAFEE36EE69EE87DC9FCC349F299E593373D0C3C843E051E5 + D13F0B9F95306BDFAC7E4F434F8167B5E7232F632F9157ADD7B0B7A577AAF761 + EF173EF63E729FE33EE33C37DE32DE595FCC37C0B7C8B7CB4FC36F9E5F85DF43 + 7F23FF64FF7AFFD100A78025016703898141815B02FBF87A7C21BF8E3F3ADB65 + F6B2D9ED418CA0B94115418F82AD82E5C1AD2168C8EC90AD21F7E798CE91CE69 + 0E85507EE8D6D00761E6618BC37E0C2785878557863F8E7088581AD131973577 + D1DC4373DF44FA449644DE9B67314F39AF2D4A352A3EAA2E6A3CDA37BA34BA3F + C62E6659CCD5589D58496C4B1C392E2AAE366E6CBEDFFCEDF387E29DE20BE37B + 17982FC85D7079A1CEC2F485A716A92E122C3A96404C884E3894F041102AA816 + 8C25F21377258E0A79C21DC267222FD136D188D8435C2A1E4EF2482A4D7A92EC + 91BC357924C533A52CE5B98427A990BC4C0D4CDD9B3A9E169A76206D323D3ABD + 31839291907142AA214D93B667EA67E66676CBAC6585B2FEC56E8BB72F1E9507 + C96BB390AC05592D0AB642A6E8545A28D72A07B267655766BFCD89CA3996AB9E + 2BCDEDCCB3CADB90379CEF9FFFED12C212E192B6A5864B572D1D58E6BDAC6A39 + B23C7179DB0AE315052B865606AC3CB88AB62A6DD54FABED5797AE7EBD267A4D + 6B815EC1CA82C1B5016BEB0B550AE5857DEBDCD7ED5D4F582F59DFB561FA869D + 1B3E15898AAE14DB1797157FD828DC78E51B876FCABF99DC94B4A9ABC4B964CF + 66D266E9E6DE2D9E5B0E96AA97E6970E6E0DD9DAB40DDF56B4EDF5F645DB2F97 + CD28DBBB83B643B9A3BF3CB8BC65A7C9CECD3B3F54A454F454FA5436EED2DDB5 + 61D7F86ED1EE1B7BBCF634ECD5DB5BBCF7FD3EC9BEDB5501554DD566D565FB49 + FBB3F73FAE89AAE9F896FB6D5DAD4E6D71EDC703D203FD07230EB6D7B9D4D51D + D23D54528FD62BEB470EC71FBEFE9DEF772D0D360D558D9CC6E223704479E4E9 + F709DFF71E0D3ADA768C7BACE107D31F761D671D2F6A429AF29A469B539AFB5B + 625BBA4FCC3ED1D6EADE7AFC47DB1F0F9C343C59794AF354C969DAE982D39367 + F2CF8C9D959D7D7E2EF9DC60DBA2B67BE763CEDF6A0F6FEFBA1074E1D245FF8B + E73BBC3BCE5CF2B874F2B2DBE51357B8579AAF3A5F6DEA74EA3CFE93D34FC7BB + 9CBB9AAEB95C6BB9EE7ABDB57B66F7E91B9E37CEDDF4BD79F116FFD6D59E393D + DDBDF37A6FF7C5F7F5DF16DD7E7227FDCECBBBD97727EEADBC4FBC5FF440ED41 + D943DD87D53F5BFEDCD8EFDC7F6AC077A0F3D1DC47F7068583CFFE91F58F0F43 + 058F998FCB860D86EB9E383E3939E23F72FDE9FCA743CF64CF269E17FEA2FECB + AE17162F7EF8D5EBD7CED198D1A197F29793BF6D7CA5FDEAC0EB19AFDBC6C2C6 + 1EBEC97833315EF456FBEDC177DC771DEFA3DF0F4FE47C207F28FF68F9B1F553 + D0A7FB93199393FF040398F3FC63332DDB000000434944415478DA63FCFFFF3F + 03258011D900464646ACA601D530126D00BA6298A1B80C21CA0090183639925C + 80CB3B040DC0E69A510306BD010C04005E03C801036F00008D248BE16F9028BA + 0000000049454E44AE426082} + Name = 'Icono_header' + 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 + F73EE77CFEFC2FF784F3FB25D29F33000001744944415478DA63FCFFFF3FC394 + C53BFE33900172623D1819610600394469FAF3F71FC3EF3F7F19ACFDF319CEED + 98866A806DD17E14C587FB1CC134B2F8AE761B86B9ABF632CC5BBA09D3007CE0 + D7EFBF609B4178C98683D80D40770136B0AED69461E59623B80D80391B04FE01 + E5FEFCF907B7D9B7FE04C3AA4A6386B53B8EE13700E692BD9D760CCEE587E036 + 07359F66585A6AC0B069CF49FC06C06CFE7CFB30C3CBC5B1F87CE48261C0C15E + 0706FBE20360D999EC710CCA0D350CECECE9183A7FFE9CC9302FB18501C30090 + B3617E7ED6A6C6A0D5FE18AC180E7EFC00E2EF0CB3771930306F4F45189011E5 + C6E0587A10C516900B500C0069FEF00E62C02927540392C39CC1B6C2423DA4F5 + 0CAA0130CD60037E32CCBE15846A405C90034A9445769E4718F0712242F3870F + 1017BC4A413520CA0FE177B841338C20063CAC47688679E15719AA01A15ED60C + ABB71D450903A76BA9E05898BD4A1E6B1CA218004A18E8409BF70D8315EB719C + 89C05E9EC10500D1295EA9BD5461080000000049454E44AE426082} + Name = 'PngImage1' + Background = clWindow + end + item + PngImage.Data = { + 89504E470D0A1A0A0000000D49484452000000100000001008060000001FF3FF + 61000000097048597300000AEB00000AEB01828B0D5A0000027F4944415478DA + 95926D48535118C79FDB268AA54485D62C4C50962CDC87F5416D9AB966CEA440 + A4E84D828C304C89B217DB87D00F65252B69422F9A4161D6A0507C6D595A6450 + 83CC55787129CE19949B6DD3DDEDDE9D73BABB561835D3030FCF39E739FFDFF3 + C2A1608EF5A1467A415632783A589C100254B0A0EB5A623A9392DCD365B89DBE + FF3CBC5830C0DD9DD726922B34EFDAEB5B53F75972170470D4C8E461DB724D78 + 091139AC66F4FC5E9BA24007FDF3064C75E6DE7DE94BD8DBDC4A834615014B5D + BD8D6985E37BE6056074D2B544934357DCFA1CD2FBEA1B6C908742E96EAFBFFB + 7E5FE2A15A18FA2FC0F978B35E9CBAE94895EE2DB474D82053B918CA4BA2A1BF + D37823B3D879784E80BB36298ADA98368C97937043F3185CACA1E164F12AD89E + 1509132316E659BB39A14807B6A000E74365A5282D43EB67BFC020FD1D76159A + C0502785D8984580B8691830BEA9561F634EFC1340AAA4111E55C60817859611 + E4038EF34256FE6BE86C5A0F807D4010035F2DA3EE1EA32DEEA81EEC7F0126EF + 288E87A8D597389F8DC28280858ACB9FE06C690CBFF702E60DB153E463EF70C5 + D632EEDC1F00FA6A7CA824397D888B46AB671EF300CC826DDC092B5710411CB0 + 406C62D86EEFEA72C69DAA07F76FC0645DD241B15A7D93E3C6A85FE2471D5E68 + 6872C1CE1C2FE46BF0AC2A1842F7B9CBB2CFF8AB05007900A26949819995E075 + 184D43A0FF400B95575CD0FED4010A9907AAB5E1BC9801EC9FA9C261656D0346 + 7FFC8106E2A55C7A591EA551197CC84A1121BB4FC8346AF540CB1307A8950462 + 25E8670B8CD01E6611B198C445D9E5DC75EABD7E4DA32B322C05630F3F15BE54 + 82788F788FF9E9FB679D9110C781FBC077B753433BB478CB0F7C3B8CF0987D51 + CF0000000049454E44AE426082} + Name = 'PngImage2' + Background = clWindow + end> + Left = 208 + Top = 160 + Bitmap = {} + end + inherited cxViewGridPopupMenu: TcxGridPopupMenu + Left = 304 + Top = 160 + end +end diff --git a/Source/Modulos/Medicaciones/Views/uViewMedicaciones.pas b/Source/Modulos/Medicaciones/Views/uViewMedicaciones.pas new file mode 100644 index 0000000..2480d68 --- /dev/null +++ b/Source/Modulos/Medicaciones/Views/uViewMedicaciones.pas @@ -0,0 +1,160 @@ +unit uViewMedicaciones; + +interface + +uses + Types, uViewGrid, cxStyles, cxCustomData, cxGraphics, cxFilter, + cxData, cxDataStorage, cxEdit, DB, cxDBData, dxPSGlbl, dxPSUtl, dxPSEngn, + dxPrnPg, dxBkgnd, dxWrap, dxPrnDev, dxPSCompsProvider, dxPSFillPatterns, + dxPSEdgePatterns, cxImageComboBox, ImgList, Controls, PngImageList, + cxGridCustomTableView, cxGridTableView, cxGridDBTableView, + cxGridCustomPopupMenu, cxGridPopupMenu, dxPSCore, dxPScxCommon, dxPScxGrid6Lnk, + uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes, + cxGrid, + uBizMedicaciones, cxCurrencyEdit, Forms, uViewFiltroBase, ComCtrls, Tabs, + cxPC, ActnList, TB2Item, TBX, TB2Dock, TB2Toolbar, TBXDkPanels, dxPgsDlg, + uDAInterfaces, uCustomView, uViewBase; + +type + IViewMedicaciones = interface(IViewGrid) + ['{DD6FBD03-6903-4828-8471-4DB6BF36858F}'] + function GetMedicaciones: IBizMedicacion; + procedure SetMedicaciones(const Value: IBizMedicacion); + property Medicaciones: IBizMedicacion read GetMedicaciones write SetMedicaciones; + end; + + TfrViewMedicaciones = class(TfrViewGrid, IViewMedicaciones) + cxGridViewREFERENCIA: TcxGridDBColumn; + cxGridViewFECHA_DESDE: TcxGridDBColumn; + cxGridViewNOMBRE: TcxGridDBColumn; + cxGridViewNUMERO_SS: TcxGridDBColumn; + cxStyleProximosAEnviar: TcxStyle; + cxStylePENDIENTES: TcxStyle; + cxStyleENVIADOS: TcxStyle; + cxStyleSERVIDOS: TcxStyle; + actPacientes: TAction; + TBXItem3: TTBXItem; + TBXSeparatorItem1: TTBXSeparatorItem; + cxGridViewFECHA_HASTA: TcxGridDBColumn; + cxStyleRETRASADOS: TcxStyle; + procedure cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: + TcxGridLevel); + + procedure actPacientesExecute(Sender: TObject); + procedure actPacientesUpdate(Sender: TObject); + procedure cxGridViewDataControllerCompare( + ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, + AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); + + private + //Filtros relativos a la vista + procedure AnadirFiltroFechas; + + protected + FMedicaciones: IBizMedicacion; + function GetMedicaciones: IBizMedicacion; + procedure SetMedicaciones(const Value: IBizMedicacion); + public + procedure AnadirOtrosFiltros; override; + property Medicaciones: IBizMedicacion read GetMedicaciones write SetMedicaciones; + end; + +implementation + +uses + SysUtils, DateUtils, variants, windows, uDataModuleMedicaciones, + schMedicacionClient_Intf, + uViewGridBase, uReferenciasUtils, cxVariants; + +{$R *.dfm} + +procedure TfrViewMedicaciones.actPacientesExecute(Sender: TObject); +begin + inherited; + if (cxGridViewNOMBRE.GroupIndex < 0) then + begin + cxGridViewNOMBRE.GroupIndex := cxGridView.GroupedColumnCount; + cxGridViewNOMBRE.Visible := False; + end + else + begin + cxGridViewNOMBRE.GroupIndex := -1; + cxGridViewNOMBRE.Visible := True; + end; +end; + +procedure TfrViewMedicaciones.actPacientesUpdate(Sender: TObject); +begin + inherited; + (Sender as TAction).Checked := not (cxGridViewNOMBRE.GroupIndex < 0); +end; + +procedure TfrViewMedicaciones.AnadirFiltroFechas; +var + Columna: TcxGridDBColumn; + Fecha1, Fecha2: Variant; + FFiltro : TcxFilterCriteriaItemList; +begin + Fecha1 := frViewFiltroBase1.edtFechaIniFiltro.EditValue; + Fecha2 := frViewFiltroBase1.edtFechaFinFiltro.EditValue; + + if not VarIsNull(Fecha1) + and not VarIsNull(Fecha2) then + begin + cxGridView.DataController.Filter.Options := [fcoCaseInsensitive, fcoSoftCompare]; + FFiltro := AddFilterGrid(fboAnd); + + Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_PREVISTA_ENVIO'); + FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + +// FFiltro.BoolOperatorKind := fboOr; +// Columna := (cxGridView as TcxGridDBTableView).GetColumnByFieldName('FECHA_ALBARAN'); +// FFiltro.AddItem(Columna, foBetween, varArrayOf([Fecha1, Fecha2]), VarToStr(Fecha1) + ' and ' + VarToStr(Fecha2)); + end; +end; + +procedure TfrViewMedicaciones.AnadirOtrosFiltros; +begin + inherited; + + AnadirFiltroFechas; + + //Finalmente activamos el filtro si tenemos algo + if cxGridView.DataController.Filter.IsEmpty then + cxGridView.DataController.Filter.Active := False + else + cxGridView.DataController.Filter.Active := True; + cxGrid.ActiveLevel.GridView := cxGridView; +end; + +procedure TfrViewMedicaciones.cxGridActiveTabChanged(Sender: TcxCustomGrid; ALevel: TcxGridLevel); +begin + inherited; + RefrescarFiltro; +end; + +procedure TfrViewMedicaciones.cxGridViewDataControllerCompare( + ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, + AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); +begin + inherited; + if (AItemIndex = cxGridViewREFERENCIA.Index) and + (VarType(V1) = VarType(V2)) and (VarType(V1) = varString) then + Compare := CompararReferencias(V1, V2) + else + Compare := VarCompare(V1, V2); +end; + +function TfrViewMedicaciones.GetMedicaciones: IBizMedicacion; +begin + Result := FMedicaciones; +end; + +procedure TfrViewMedicaciones.SetMedicaciones(const Value: IBizMedicacion); +begin + FMedicaciones := Value; + if Assigned(FMedicaciones) then + dsDataSource.DataTable := FMedicaciones.DataTable; +end; + +end. diff --git a/Source/Modulos/Referencias/Servidor/srvReferencias_Impl.pas b/Source/Modulos/Referencias/Servidor/srvReferencias_Impl.pas index b3b439f..5902a65 100644 --- a/Source/Modulos/Referencias/Servidor/srvReferencias_Impl.pas +++ b/Source/Modulos/Referencias/Servidor/srvReferencias_Impl.pas @@ -150,9 +150,13 @@ begin end; end; +var + fClassFactory: IROClassFactory; initialization - TROClassFactory.Create('srvReferencias', Create_srvReferencias, TsrvReferencias_Invoker); + fClassFactory := TROClassFactory.Create('srvReferencias', Create_srvReferencias, TsrvReferencias_Invoker); finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; end. diff --git a/Source/Modulos/Unidades de medida/Servidor/srvUnidadesMedida_Impl.pas b/Source/Modulos/Unidades de medida/Servidor/srvUnidadesMedida_Impl.pas index 797f221..77e611b 100644 --- a/Source/Modulos/Unidades de medida/Servidor/srvUnidadesMedida_Impl.pas +++ b/Source/Modulos/Unidades de medida/Servidor/srvUnidadesMedida_Impl.pas @@ -55,9 +55,14 @@ begin ConnectionName := dmServer.ConnectionName; end; + +var + fClassFactory: IROClassFactory; initialization - TROClassFactory.Create('srvUnidadesMedida', Create_srvUnidadesMedida, TsrvUnidadesMedida_Invoker); + fClassFactory := TROClassFactory.Create('srvUnidadesMedida', Create_srvUnidadesMedida, TsrvUnidadesMedida_Invoker); finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; end. diff --git a/Source/Servicios/Etiquetas.RODL b/Source/Servicios/Etiquetas.RODL index dc109ad..4f330d7 100644 --- a/Source/Servicios/Etiquetas.RODL +++ b/Source/Servicios/Etiquetas.RODL @@ -101,19 +101,11 @@ - - - - - - - - - + @@ -131,8 +123,6 @@ - - diff --git a/Source/Servicios/Etiquetas_Intf.pas b/Source/Servicios/Etiquetas_Intf.pas index aa9287c..ec14649 100644 --- a/Source/Servicios/Etiquetas_Intf.pas +++ b/Source/Servicios/Etiquetas_Intf.pas @@ -29,7 +29,7 @@ const IsrvConfiguracion_IID : TGUID = '{0882B8A4-C8AA-424E-8FC1-C6226B670522}'; IsrvUsuarios_IID : TGUID = '{29388459-1A0B-46BE-AF9E-66A9E7AABB0B}'; IsrvArticulos_IID : TGUID = '{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}'; - IsrvAlbaranesCliente_IID : TGUID = '{6E910718-9AB0-47BB-9875-B0DE66A68D7A}'; + IsrvMedicacion_IID : TGUID = '{6E910718-9AB0-47BB-9875-B0DE66A68D7A}'; IsrvReferencias_IID : TGUID = '{B957528D-3BE1-412D-A35E-801C97CCD252}'; IsrvUnidadesMedida_IID : TGUID = '{8B4C72F0-5ACE-46FF-9F00-D70C2B611652}'; IsrvProvinciasPoblaciones_IID : TGUID = '{551D8756-51AE-4929-B235-107CD7B05C38}'; @@ -44,7 +44,7 @@ type IsrvConfiguracion = interface; IsrvUsuarios = interface; IsrvArticulos = interface; - IsrvAlbaranesCliente = interface; + IsrvMedicacion = interface; IsrvReferencias = interface; IsrvUnidadesMedida = interface; IsrvProvinciasPoblaciones = interface; @@ -261,7 +261,6 @@ type { IsrvArticulos } IsrvArticulos = interface(IDataAbstractService) ['{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}'] - function DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; end; { CosrvArticulos } @@ -274,29 +273,28 @@ type protected function __GetInterfaceName:string; override; - function DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; end; - { IsrvAlbaranesCliente } - IsrvAlbaranesCliente = interface(IDataAbstractService) + { IsrvMedicacion } + IsrvMedicacion = interface(IDataAbstractService) ['{6E910718-9AB0-47BB-9875-B0DE66A68D7A}'] function GenerarInforme(const ListaID: TIntegerArray): Binary; - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; + function GenerarInformeEtiquetas(const ID: Integer): Binary; function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; end; - { CosrvAlbaranesCliente } - CosrvAlbaranesCliente = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente; + { CosrvMedicacion } + CosrvMedicacion = class + class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvMedicacion; end; - { TsrvAlbaranesCliente_Proxy } - TsrvAlbaranesCliente_Proxy = class(TDataAbstractService_Proxy, IsrvAlbaranesCliente) + { TsrvMedicacion_Proxy } + TsrvMedicacion_Proxy = class(TDataAbstractService_Proxy, IsrvMedicacion) protected function __GetInterfaceName:string; override; function GenerarInforme(const ListaID: TIntegerArray): Binary; - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; + function GenerarInformeEtiquetas(const ID: Integer): Binary; function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; end; @@ -936,45 +934,26 @@ begin result := TsrvArticulos_Proxy.Create(aMessage, aTransportChannel); end; -{ TsrvArticulos_Proxy } - function TsrvArticulos_Proxy.__GetInterfaceName:string; begin result := 'srvArticulos'; end; -function TsrvArticulos_Proxy.DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; +{ CosrvMedicacion } + +class function CosrvMedicacion.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvMedicacion; begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'DarListaProveedoresConArticulos'); - __Message.Write('IDEmpresa', TypeInfo(Integer), IDEmpresa, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end + result := TsrvMedicacion_Proxy.Create(aMessage, aTransportChannel); end; -{ CosrvAlbaranesCliente } +{ TsrvMedicacion_Proxy } -class function CosrvAlbaranesCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente; +function TsrvMedicacion_Proxy.__GetInterfaceName:string; begin - result := TsrvAlbaranesCliente_Proxy.Create(aMessage, aTransportChannel); + result := 'srvMedicacion'; end; -{ TsrvAlbaranesCliente_Proxy } - -function TsrvAlbaranesCliente_Proxy.__GetInterfaceName:string; -begin - result := 'srvAlbaranesCliente'; -end; - -function TsrvAlbaranesCliente_Proxy.GenerarInforme(const ListaID: TIntegerArray): Binary; +function TsrvMedicacion_Proxy.GenerarInforme(const ListaID: TIntegerArray): Binary; begin try result := nil; @@ -991,13 +970,12 @@ begin end end; -function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; +function TsrvMedicacion_Proxy.GenerarInformeEtiquetas(const ID: Integer): Binary; begin try result := nil; __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'GenerarInformeEtiquetas'); __Message.Write('ID', TypeInfo(Integer), ID, []); - __Message.Write('withRefCliente', TypeInfo(Boolean), withRefCliente, []); __Message.Finalize; __TransportChannel.Dispatch(__Message); @@ -1009,7 +987,7 @@ begin end end; -function TsrvAlbaranesCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; +function TsrvMedicacion_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; begin try result := nil; @@ -1144,7 +1122,7 @@ initialization RegisterProxyClass(IsrvConfiguracion_IID, TsrvConfiguracion_Proxy); RegisterProxyClass(IsrvUsuarios_IID, TsrvUsuarios_Proxy); RegisterProxyClass(IsrvArticulos_IID, TsrvArticulos_Proxy); - RegisterProxyClass(IsrvAlbaranesCliente_IID, TsrvAlbaranesCliente_Proxy); + RegisterProxyClass(IsrvMedicacion_IID, TsrvMedicacion_Proxy); RegisterProxyClass(IsrvReferencias_IID, TsrvReferencias_Proxy); RegisterProxyClass(IsrvUnidadesMedida_IID, TsrvUnidadesMedida_Proxy); RegisterProxyClass(IsrvProvinciasPoblaciones_IID, TsrvProvinciasPoblaciones_Proxy); @@ -1160,7 +1138,7 @@ finalization UnregisterProxyClass(IsrvConfiguracion_IID); UnregisterProxyClass(IsrvUsuarios_IID); UnregisterProxyClass(IsrvArticulos_IID); - UnregisterProxyClass(IsrvAlbaranesCliente_IID); + UnregisterProxyClass(IsrvMedicacion_IID); UnregisterProxyClass(IsrvReferencias_IID); UnregisterProxyClass(IsrvUnidadesMedida_IID); UnregisterProxyClass(IsrvProvinciasPoblaciones_IID); diff --git a/Source/Servicios/Etiquetas_Invk.pas b/Source/Servicios/Etiquetas_Invk.pas index c2ef542..8504ca8 100644 --- a/Source/Servicios/Etiquetas_Invk.pas +++ b/Source/Servicios/Etiquetas_Invk.pas @@ -72,10 +72,9 @@ type public constructor Create; override; published - procedure Invoke_DarListaProveedoresConArticulos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); end; - TsrvAlbaranesCliente_Invoker = class(TDataAbstractService_Invoker) + TsrvMedicacion_Invoker = class(TDataAbstractService_Invoker) private protected public @@ -313,43 +312,15 @@ begin FAbstract := False; end; -procedure TsrvArticulos_Invoker.Invoke_DarListaProveedoresConArticulos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; } -var - IDEmpresa: Integer; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - lResult := nil; - try - __Message.Read('IDEmpresa', TypeInfo(Integer), IDEmpresa, []); +{ TsrvMedicacion_Invoker } - lResult := (__Instance as IsrvArticulos).DarListaProveedoresConArticulos(IDEmpresa); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvArticulos', 'DarListaProveedoresConArticulosResponse'); - __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; - -{ TsrvAlbaranesCliente_Invoker } - -constructor TsrvAlbaranesCliente_Invoker.Create; +constructor TsrvMedicacion_Invoker.Create; begin inherited Create; FAbstract := False; end; -procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +procedure TsrvMedicacion_Invoker.Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); { function GenerarInforme(const ListaID: TIntegerArray): Binary; } var ListaID: Etiquetas_Intf.TIntegerArray; @@ -361,9 +332,9 @@ begin try __Message.Read('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInforme(ListaID); + lResult := (__Instance as IsrvMedicacion).GenerarInforme(ListaID); - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvAlbaranesCliente', 'GenerarInformeResponse'); + __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvMedicacion', 'GenerarInformeResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); __Message.Finalize; __Message.UnsetAttributes(__Transport); @@ -379,22 +350,20 @@ begin end; end; -procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; } +procedure TsrvMedicacion_Invoker.Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +{ function GenerarInformeEtiquetas(const ID: Integer): Binary; } var ID: Integer; - withRefCliente: Boolean; lResult: Binary; __lObjectDisposer: TROObjectDisposer; begin lResult := nil; try __Message.Read('ID', TypeInfo(Integer), ID, []); - __Message.Read('withRefCliente', TypeInfo(Boolean), withRefCliente, []); - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEtiquetas(ID, withRefCliente); + lResult := (__Instance as IsrvMedicacion).GenerarInformeEtiquetas(ID); - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvAlbaranesCliente', 'GenerarInformeEtiquetasResponse'); + __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvMedicacion', 'GenerarInformeEtiquetasResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); __Message.Finalize; __Message.UnsetAttributes(__Transport); @@ -409,7 +378,7 @@ begin end; end; -procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); +procedure TsrvMedicacion_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); { function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; } var ListaID: Etiquetas_Intf.TIntegerArray; @@ -421,9 +390,9 @@ begin try __Message.Read('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEnPDF(ListaID); + lResult := (__Instance as IsrvMedicacion).GenerarInformeEnPDF(ListaID); - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvAlbaranesCliente', 'GenerarInformeEnPDFResponse'); + __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvMedicacion', 'GenerarInformeEnPDFResponse'); __Message.Write('Result', TypeInfo(Binary), lResult, []); __Message.Finalize; __Message.UnsetAttributes(__Transport); diff --git a/Source/Servicios/RODLFILE.res b/Source/Servicios/RODLFILE.res index 9cc6310..d27cf85 100644 Binary files a/Source/Servicios/RODLFILE.res and b/Source/Servicios/RODLFILE.res differ diff --git a/Source/Servidor/Configuracion/uConexionBD_MSSQL.dfm b/Source/Servidor/Configuracion/uConexionBD_MSSQL.dfm new file mode 100644 index 0000000..f6d629c --- /dev/null +++ b/Source/Servidor/Configuracion/uConexionBD_MSSQL.dfm @@ -0,0 +1,120 @@ +inherited frConexionBD_MSSQL: TfrConexionBD_MSSQL + object GroupBox1: TGroupBox + Left = 8 + Top = 8 + Width = 375 + Height = 209 + Caption = 'Servidor de base de datos de Farmatic (MS SQL Server)' + TabOrder = 0 + DesignSize = ( + 375 + 209) + object Label1: TLabel + Left = 18 + Top = 30 + Width = 100 + Height = 13 + Caption = 'Nombre del servidor:' + end + object Label2: TLabel + Left = 18 + Top = 60 + Width = 93 + Height = 13 + Caption = 'Puerto de escucha:' + end + object Label3: TLabel + Left = 18 + Top = 92 + Width = 72 + Height = 13 + Caption = 'Base de datos:' + end + object Label4: TLabel + Left = 18 + Top = 150 + Width = 36 + Height = 13 + Caption = 'Usuario' + end + object Label5: TLabel + Left = 18 + Top = 180 + Width = 60 + Height = 13 + Caption = 'Contrase'#241'a:' + end + object Bevel1: TBevel + Left = 16 + Top = 120 + Width = 343 + Height = 10 + Anchors = [akLeft, akTop, akRight] + Shape = bsBottomLine + end + object edtServer: TEdit + Left = 128 + Top = 24 + Width = 231 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + Text = 'localhost' + end + object edtPort: TEdit + Left = 128 + Top = 56 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + Text = '3050' + OnExit = edtPortExit + end + object edtUser: TEdit + Left = 128 + Top = 144 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 3 + Text = 'sysdba' + end + object edtPassword: TEdit + Left = 128 + Top = 176 + Width = 116 + Height = 21 + Anchors = [akLeft, akTop, akRight] + PasswordChar = '*' + TabOrder = 4 + end + object edtDatabaseName: TEdit + Left = 128 + Top = 88 + Width = 231 + Height = 21 + TabOrder = 2 + end + end + object bProbar: TButton + Left = 240 + Top = 224 + Width = 143 + Height = 25 + Caption = 'Probar la conexi'#243'n' + TabOrder = 1 + OnClick = bProbarClick + end + object OpenDialog: TOpenDialog + Filter = 'Base de datos Firebird (*.fdb)|*.FDB' + Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Title = 'Abrir base de datos Firebird' + Left = 264 + Top = 56 + end + object ADOConnection1: TADOConnection + Left = 184 + Top = 224 + end +end diff --git a/Source/Servidor/Configuracion/uConexionBD_MSSQL.pas b/Source/Servidor/Configuracion/uConexionBD_MSSQL.pas new file mode 100644 index 0000000..c479ec2 --- /dev/null +++ b/Source/Servidor/Configuracion/uConexionBD_MSSQL.pas @@ -0,0 +1,99 @@ +unit uConexionBD_MSSQL; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, ExtCtrls, IBServices, + DB, IBDatabase, uFrameConfiguracion, cxControls, cxContainer, cxEdit, + cxTextEdit, cxMaskEdit, cxButtonEdit, ADODB; + +type + TfrConexionBD_MSSQL = class(TFrameConfiguracion) + GroupBox1: TGroupBox; + edtServer: TEdit; + edtPort: TEdit; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + bProbar: TButton; + Label4: TLabel; + edtUser: TEdit; + Label5: TLabel; + edtPassword: TEdit; + Bevel1: TBevel; + OpenDialog: TOpenDialog; + edtDatabaseName: TEdit; + ADOConnection1: TADOConnection; + procedure bProbarClick(Sender: TObject); + procedure edtPortExit(Sender: TObject); + protected + procedure Finalize; override; + public + procedure Init; override; + end; + +implementation + +uses uDataModuleServer; + +{$R *.dfm} + +procedure TfrConexionBD_MSSQL.bProbarClick(Sender: TObject); +var + Aux : string; + AConnStr : string; +begin + AConnStr := 'Provider=sqloledb;' + + 'Data Source=' + edtServer.Text + ';' + + 'Initial Catalog=' + edtDatabaseName.Text + ';' + + 'User Id=' + edtUser.Text + ';' + + 'Password=' + edtPassword.Text; + + with ADOConnection1 do + begin + Close; + ConnectionString := AConnStr; + LoginPrompt := False; + + try + Open; + Application.MessageBox('Conexión válida con la base de datos de Farmatic.', 'FactuGES', MB_OK); + Close; + except + on E : Exception do + begin + 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_MSSQL.Init; +begin + edtServer.Text := dmServer.FMSSQLServer; + edtPort.Text := dmServer.FMSSQLPort; + edtDatabaseName.Text := dmServer.FMSSQLPath; + edtUser.Text := dmServer.FMSSQLUser; + edtPassword.Text := Decrypt(dmServer.FMSSQLPass); +end; + +procedure TfrConexionBD_MSSQL.Finalize; +begin + dmServer.FMSSQLServer := edtServer.Text; + dmServer.FMSSQLPort := edtPort.Text; + dmServer.FMSSQLPath := edtDatabaseName.Text; + dmServer.FMSSQLUser := edtUser.Text; + dmServer.FMSSQLPass := Encrypt(edtPassword.Text); +end; + +procedure TfrConexionBD_MSSQL.edtPortExit(Sender: TObject); +begin + inherited; + if Length(edtPort.Text) = 0 then + edtPort.Text := MSSQL_PORT; +end; + +end. diff --git a/Source/Servidor/Configuracion/uConfiguracion.dfm b/Source/Servidor/Configuracion/uConfiguracion.dfm index 9120b1b..96c3087 100644 --- a/Source/Servidor/Configuracion/uConfiguracion.dfm +++ b/Source/Servidor/Configuracion/uConfiguracion.dfm @@ -40,7 +40,7 @@ object fConfiguracion: TfConfiguracion Top = 8 Width = 399 Height = 289 - ActivePage = pagGeneral + ActivePage = Farmatic Images = PngImageList1 TabOrder = 2 OnChange = PageControl1Change @@ -76,6 +76,18 @@ object fConfiguracion: TfConfiguracion ExplicitHeight = 260 end end + object Farmatic: TTabSheet + Caption = 'Farmatic' + ImageIndex = 2 + inline frConexionBD_MSSQL1: TfrConexionBD_MSSQL + Left = 0 + Top = 0 + Width = 391 + Height = 260 + Align = alClient + TabOrder = 0 + end + end end object ActionList1: TActionList Left = 8 diff --git a/Source/Servidor/Configuracion/uConfiguracion.pas b/Source/Servidor/Configuracion/uConfiguracion.pas index 9bbbf59..f7419e7 100644 --- a/Source/Servidor/Configuracion/uConfiguracion.pas +++ b/Source/Servidor/Configuracion/uConfiguracion.pas @@ -8,7 +8,7 @@ uses JvAppStorage, JvAppRegistryStorage, Contnrs, ExtCtrls, ImgList, PngImageList, JvExControls, JvGradientHeaderPanel, uFrameConfiguracion, JvComponentBase, JvPageList, JvExComCtrls, JvPageListTreeView, - uConexionBD, uConfGeneral; + uConexionBD, uConfGeneral, uConexionBD_MSSQL; type TfConfiguracion = class(TForm) @@ -24,6 +24,8 @@ type pagGeneral: TTabSheet; pagBD: TTabSheet; frConexionBD1: TfrConexionBD; + Farmatic: TTabSheet; + frConexionBD_MSSQL1: TfrConexionBD_MSSQL; procedure actAceptarExecute(Sender: TObject); procedure actCancelarExecute(Sender: TObject); procedure FormShow(Sender: TObject); @@ -93,6 +95,7 @@ begin case PageControl1.ActivePageIndex of 0 : FPaginaActual := frConfGeneral1; 1 : FPaginaActual := frConexionBD1; + 2 : FPaginaActual := frConexionBD_MSSQL1; end; if Assigned(FPaginaActual) then diff --git a/Source/Servidor/Etiquetas_Intf.pas b/Source/Servidor/Etiquetas_Intf.pas deleted file mode 100644 index aa9287c..0000000 --- a/Source/Servidor/Etiquetas_Intf.pas +++ /dev/null @@ -1,1168 +0,0 @@ -unit Etiquetas_Intf; - -{----------------------------------------------------------------------------} -{ This unit was automatically generated by the RemObjects SDK after reading } -{ the RODL file associated with this project . } -{ } -{ Do not modify this unit manually, or your changes will be lost when this } -{ unit is regenerated the next time you compile the project. } -{----------------------------------------------------------------------------} - -{$I RemObjects.inc} - -interface - -uses - {vcl:} Classes, TypInfo, - {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf, - {Used RODLs:} DataAbstract4_Intf; - -const - { Library ID } - LibraryUID = '{99553DD5-13B5-40EB-B7E6-D2B9A7C1B4D6}'; - TargetNamespace = ''; - - { Service Interface ID's } - IsrvContactos_IID : TGUID = '{28CCDC07-A3A4-4917-89B4-64423DC70C9D}'; - IsrvLogin_IID : TGUID = '{399F9DB4-1B34-4140-AB6E-3BC10C0A7034}'; - IsrvEmpresas_IID : TGUID = '{590F06D1-26B4-435B-B636-50CB8FFE6353}'; - IsrvConfiguracion_IID : TGUID = '{0882B8A4-C8AA-424E-8FC1-C6226B670522}'; - IsrvUsuarios_IID : TGUID = '{29388459-1A0B-46BE-AF9E-66A9E7AABB0B}'; - IsrvArticulos_IID : TGUID = '{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}'; - IsrvAlbaranesCliente_IID : TGUID = '{6E910718-9AB0-47BB-9875-B0DE66A68D7A}'; - IsrvReferencias_IID : TGUID = '{B957528D-3BE1-412D-A35E-801C97CCD252}'; - IsrvUnidadesMedida_IID : TGUID = '{8B4C72F0-5ACE-46FF-9F00-D70C2B611652}'; - IsrvProvinciasPoblaciones_IID : TGUID = '{551D8756-51AE-4929-B235-107CD7B05C38}'; - - { Event ID's } - -type - { Forward declarations } - IsrvContactos = interface; - IsrvLogin = interface; - IsrvEmpresas = interface; - IsrvConfiguracion = interface; - IsrvUsuarios = interface; - IsrvArticulos = interface; - IsrvAlbaranesCliente = interface; - IsrvReferencias = interface; - IsrvUnidadesMedida = interface; - IsrvProvinciasPoblaciones = interface; - - TRdxEmpresasArray = class; - TIntegerArray = class; - - TRdxLoginInfo = class; - - - - { Enumerateds } - TRdxAlmacenes = (TRdxAlmacenes_Presupuestos); - - { TRdxLoginInfo } - TRdxLoginInfo = class(TROComplexType) - private - fUserID: Integer; - fSessionID: AnsiString; - fUsuario: AnsiString; - fPerfiles: StringArray; - fEmpresas: TRdxEmpresasArray; - function GetPerfiles: StringArray; - function GetEmpresas: TRdxEmpresasArray; - public - procedure Assign(iSource: TPersistent); override; - procedure ReadComplex(ASerializer: TObject); override; - procedure WriteComplex(ASerializer: TObject); override; - published - property UserID:Integer read fUserID write fUserID; - property SessionID:AnsiString read fSessionID write fSessionID; - property Usuario:AnsiString read fUsuario write fUsuario; - property Perfiles:StringArray read GetPerfiles write fPerfiles; - property Empresas:TRdxEmpresasArray read GetEmpresas write fEmpresas; - end; - - { TRdxLoginInfoCollection } - TRdxLoginInfoCollection = class(TROCollection) - protected - constructor Create(aItemClass: TCollectionItemClass); overload; - function GetItems(aIndex: integer): TRdxLoginInfo; - procedure SetItems(aIndex: integer; const Value: TRdxLoginInfo); - public - constructor Create; overload; - function Add: TRdxLoginInfo; reintroduce; - property Items[Index: integer]:TRdxLoginInfo read GetItems write SetItems; default; - end; - - { TRdxEmpresasArray } - TRdxEmpresasArray_Integer = array of Integer; - TRdxEmpresasArray = class(TROArray) - private - fCount: Integer; - fItems : TRdxEmpresasArray_Integer; - protected - procedure Grow; virtual; - function GetItems(aIndex: integer): Integer; - procedure SetItems(aIndex: integer; const Value: Integer); - function GetCount: integer; override; - public - class function GetItemType: PTypeInfo; override; - class function GetItemSize: integer; override; - - function GetItemRef(aIndex: integer): pointer; override; - procedure Clear; override; - procedure Delete(aIndex: integer); override; - procedure Resize(ElementCount: integer); override; - - procedure Assign(iSource:TPersistent); override; - procedure ReadComplex(ASerializer: TObject); override; - procedure WriteComplex(ASerializer: TObject); override; - function Add(const Value:Integer): integer; - function GetIndex(const aPropertyName : string; - const aPropertyValue : Variant; - StartFrom : integer = 0; - Options : TROSearchOptions = [soIgnoreCase]) : integer; override; - - property Count : integer read GetCount; - property Items[Index: integer]:Integer read GetItems write SetItems; default; - property InnerArray: TRdxEmpresasArray_Integer read fItems; - end; - - { TIntegerArray } - TIntegerArray_Integer = array of Integer; - TIntegerArray = class(TROArray) - private - fCount: Integer; - fItems : TIntegerArray_Integer; - protected - procedure Grow; virtual; - function GetItems(aIndex: integer): Integer; - procedure SetItems(aIndex: integer; const Value: Integer); - function GetCount: integer; override; - public - class function GetItemType: PTypeInfo; override; - class function GetItemSize: integer; override; - - function GetItemRef(aIndex: integer): pointer; override; - procedure Clear; override; - procedure Delete(aIndex: integer); override; - procedure Resize(ElementCount: integer); override; - - procedure Assign(iSource:TPersistent); override; - procedure ReadComplex(ASerializer: TObject); override; - procedure WriteComplex(ASerializer: TObject); override; - function Add(const Value:Integer): integer; - function GetIndex(const aPropertyName : string; - const aPropertyValue : Variant; - StartFrom : integer = 0; - Options : TROSearchOptions = [soIgnoreCase]) : integer; override; - - property Count : integer read GetCount; - property Items[Index: integer]:Integer read GetItems write SetItems; default; - property InnerArray: TIntegerArray_Integer read fItems; - end; - - { IsrvContactos } - IsrvContactos = interface(IDataAbstractService) - ['{28CCDC07-A3A4-4917-89B4-64423DC70C9D}'] - function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; - function GenerarInformeFichaPaciente(const ListaID: TIntegerArray): Binary; - end; - - { CosrvContactos } - CosrvContactos = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos; - end; - - { TsrvContactos_Proxy } - TsrvContactos_Proxy = class(TDataAbstractService_Proxy, IsrvContactos) - protected - function __GetInterfaceName:string; override; - - function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; - function GenerarInformeFichaPaciente(const ListaID: TIntegerArray): Binary; - end; - - { IsrvLogin } - IsrvLogin = interface(IDataAbstractService) - ['{399F9DB4-1B34-4140-AB6E-3BC10C0A7034}'] - function Login(const User: AnsiString; const Password: AnsiString; out LoginInfo: TRdxLoginInfo): Boolean; - procedure Logout; - function Ping: Boolean; - end; - - { CosrvLogin } - CosrvLogin = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; - end; - - { TsrvLogin_Proxy } - TsrvLogin_Proxy = class(TDataAbstractService_Proxy, IsrvLogin) - protected - function __GetInterfaceName:string; override; - - function Login(const User: AnsiString; const Password: AnsiString; out LoginInfo: TRdxLoginInfo): Boolean; - procedure Logout; - function Ping: Boolean; - end; - - { IsrvEmpresas } - IsrvEmpresas = interface(IDataAbstractService) - ['{590F06D1-26B4-435B-B636-50CB8FFE6353}'] - end; - - { CosrvEmpresas } - CosrvEmpresas = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEmpresas; - end; - - { TsrvEmpresas_Proxy } - TsrvEmpresas_Proxy = class(TDataAbstractService_Proxy, IsrvEmpresas) - protected - function __GetInterfaceName:string; override; - - end; - - { IsrvConfiguracion } - IsrvConfiguracion = interface(IDataAbstractService) - ['{0882B8A4-C8AA-424E-8FC1-C6226B670522}'] - function darValor(const CODIGO: AnsiString; const ValorPorDefecto: AnsiString): AnsiString; - end; - - { CosrvConfiguracion } - CosrvConfiguracion = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion; - end; - - { TsrvConfiguracion_Proxy } - TsrvConfiguracion_Proxy = class(TDataAbstractService_Proxy, IsrvConfiguracion) - protected - function __GetInterfaceName:string; override; - - function darValor(const CODIGO: AnsiString; const ValorPorDefecto: AnsiString): AnsiString; - end; - - { IsrvUsuarios } - IsrvUsuarios = interface(IDataAbstractService) - ['{29388459-1A0B-46BE-AF9E-66A9E7AABB0B}'] - end; - - { CosrvUsuarios } - CosrvUsuarios = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUsuarios; - end; - - { TsrvUsuarios_Proxy } - TsrvUsuarios_Proxy = class(TDataAbstractService_Proxy, IsrvUsuarios) - protected - function __GetInterfaceName:string; override; - - end; - - { IsrvArticulos } - IsrvArticulos = interface(IDataAbstractService) - ['{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}'] - function DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; - end; - - { CosrvArticulos } - CosrvArticulos = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos; - end; - - { TsrvArticulos_Proxy } - TsrvArticulos_Proxy = class(TDataAbstractService_Proxy, IsrvArticulos) - protected - function __GetInterfaceName:string; override; - - function DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; - end; - - { IsrvAlbaranesCliente } - IsrvAlbaranesCliente = interface(IDataAbstractService) - ['{6E910718-9AB0-47BB-9875-B0DE66A68D7A}'] - function GenerarInforme(const ListaID: TIntegerArray): Binary; - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; - end; - - { CosrvAlbaranesCliente } - CosrvAlbaranesCliente = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente; - end; - - { TsrvAlbaranesCliente_Proxy } - TsrvAlbaranesCliente_Proxy = class(TDataAbstractService_Proxy, IsrvAlbaranesCliente) - protected - function __GetInterfaceName:string; override; - - function GenerarInforme(const ListaID: TIntegerArray): Binary; - function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; - function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; - end; - - { IsrvReferencias } - - { Description: - Para uso interno del servidor. Para modulo de gestion de referencias del cliente } - IsrvReferencias = interface(IDataAbstractService) - ['{B957528D-3BE1-412D-A35E-801C97CCD252}'] - function DarNuevaReferencia(const NombreReferencia: AnsiString; const EmpresaID: Integer): AnsiString; - function IncrementarValorReferencia(const NombreReferencia: AnsiString; const Valor: AnsiString; const EmpresaID: Integer): Boolean; - end; - - { CosrvReferencias } - CosrvReferencias = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvReferencias; - end; - - { TsrvReferencias_Proxy } - TsrvReferencias_Proxy = class(TDataAbstractService_Proxy, IsrvReferencias) - protected - function __GetInterfaceName:string; override; - - function DarNuevaReferencia(const NombreReferencia: AnsiString; const EmpresaID: Integer): AnsiString; - function IncrementarValorReferencia(const NombreReferencia: AnsiString; const Valor: AnsiString; const EmpresaID: Integer): Boolean; - end; - - { IsrvUnidadesMedida } - IsrvUnidadesMedida = interface(IDataAbstractService) - ['{8B4C72F0-5ACE-46FF-9F00-D70C2B611652}'] - end; - - { CosrvUnidadesMedida } - CosrvUnidadesMedida = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUnidadesMedida; - end; - - { TsrvUnidadesMedida_Proxy } - TsrvUnidadesMedida_Proxy = class(TDataAbstractService_Proxy, IsrvUnidadesMedida) - protected - function __GetInterfaceName:string; override; - - end; - - { IsrvProvinciasPoblaciones } - IsrvProvinciasPoblaciones = interface - ['{551D8756-51AE-4929-B235-107CD7B05C38}'] - function DarListaProvincias: Binary; - function DarListaPoblaciones(const ID_Provincia: Integer): Binary; - end; - - { CosrvProvinciasPoblaciones } - CosrvProvinciasPoblaciones = class - class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvProvinciasPoblaciones; - end; - - { TsrvProvinciasPoblaciones_Proxy } - TsrvProvinciasPoblaciones_Proxy = class(TROProxy, IsrvProvinciasPoblaciones) - protected - function __GetInterfaceName:string; override; - - function DarListaProvincias: Binary; - function DarListaPoblaciones(const ID_Provincia: Integer): Binary; - end; - -implementation - -uses - {vcl:} SysUtils, - {RemObjects:} uROEventRepository, uROSerializer, uRORes; - -{ TRdxEmpresasArray } - -procedure TRdxEmpresasArray.Assign(iSource: TPersistent); -var lSource:TRdxEmpresasArray; - i:integer; -begin - if (iSource is TRdxEmpresasArray) then begin - lSource := TRdxEmpresasArray(iSource); - Clear(); - Resize(lSource.Count); - - for i := 0 to Count-1 do begin - Items[i] := lSource.Items[i]; - end; - end - else begin - inherited Assign(iSource); - end; -end; - -class function TRdxEmpresasArray.GetItemType: PTypeInfo; -begin - result := TypeInfo(Integer); -end; - -class function TRdxEmpresasArray.GetItemSize: integer; -begin - result := SizeOf(Integer); -end; - -function TRdxEmpresasArray.GetItems(aIndex: integer): Integer; -begin - if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); - result := fItems[aIndex]; -end; - -function TRdxEmpresasArray.GetItemRef(aIndex: integer): pointer; -begin - if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); - result := @fItems[aIndex]; -end; - -procedure TRdxEmpresasArray.Clear; -begin - SetLength(fItems, 0); - FCount := 0; -end; - -procedure TRdxEmpresasArray.Delete(aIndex: integer); -var i: integer; -begin - if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); - - if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); - fItems[aIndex] := Value; -end; - -procedure TRdxEmpresasArray.Resize(ElementCount: integer); -begin - if fCount = ElementCount then Exit; - SetLength(fItems, ElementCount); - FCount := ElementCount; -end; - -function TRdxEmpresasArray.GetCount: integer; -begin - result := FCount; -end; - -procedure TRdxEmpresasArray.Grow; -var - Delta, Capacity: Integer; -begin - Capacity := Length(fItems); - if Capacity > 64 then - Delta := Capacity div 4 - else - if Capacity > 8 then - Delta := 16 - else - Delta := 4; - SetLength(fItems, Capacity + Delta); -end; - -function TRdxEmpresasArray.Add(const Value: Integer): integer; -begin - Result := Count; - if Length(fItems) = Result then - Grow; - fItems[result] := Value; - Inc(fCount); -end; - -function TRdxEmpresasArray.GetIndex(const aPropertyName: string; - const aPropertyValue: Variant; StartFrom: integer; - Options: TROSearchOptions): integer; -begin - result := -1; -end; - -procedure TRdxEmpresasArray.ReadComplex(ASerializer: TObject); -var - lval: Integer; - i: integer; -begin - for i := 0 to Count-1 do begin - with TROSerializer(ASerializer) do - ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i); - Items[i] := lval; - end; -end; - -procedure TRdxEmpresasArray.WriteComplex(ASerializer: TObject); -var - i: integer; -begin - for i := 0 to Count-1 do - with TROSerializer(ASerializer) do - WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i); -end; - -{ TIntegerArray } - -procedure TIntegerArray.Assign(iSource: TPersistent); -var lSource:TIntegerArray; - i:integer; -begin - if (iSource is TIntegerArray) then begin - lSource := TIntegerArray(iSource); - Clear(); - Resize(lSource.Count); - - for i := 0 to Count-1 do begin - Items[i] := lSource.Items[i]; - end; - end - else begin - inherited Assign(iSource); - end; -end; - -class function TIntegerArray.GetItemType: PTypeInfo; -begin - result := TypeInfo(Integer); -end; - -class function TIntegerArray.GetItemSize: integer; -begin - result := SizeOf(Integer); -end; - -function TIntegerArray.GetItems(aIndex: integer): Integer; -begin - if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); - result := fItems[aIndex]; -end; - -function TIntegerArray.GetItemRef(aIndex: integer): pointer; -begin - if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); - result := @fItems[aIndex]; -end; - -procedure TIntegerArray.Clear; -begin - SetLength(fItems, 0); - FCount := 0; -end; - -procedure TIntegerArray.Delete(aIndex: integer); -var i: integer; -begin - if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]); - - if (aIndex= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]); - fItems[aIndex] := Value; -end; - -procedure TIntegerArray.Resize(ElementCount: integer); -begin - if fCount = ElementCount then Exit; - SetLength(fItems, ElementCount); - FCount := ElementCount; -end; - -function TIntegerArray.GetCount: integer; -begin - result := FCount; -end; - -procedure TIntegerArray.Grow; -var - Delta, Capacity: Integer; -begin - Capacity := Length(fItems); - if Capacity > 64 then - Delta := Capacity div 4 - else - if Capacity > 8 then - Delta := 16 - else - Delta := 4; - SetLength(fItems, Capacity + Delta); -end; - -function TIntegerArray.Add(const Value: Integer): integer; -begin - Result := Count; - if Length(fItems) = Result then - Grow; - fItems[result] := Value; - Inc(fCount); -end; - -function TIntegerArray.GetIndex(const aPropertyName: string; - const aPropertyValue: Variant; StartFrom: integer; - Options: TROSearchOptions): integer; -begin - result := -1; -end; - -procedure TIntegerArray.ReadComplex(ASerializer: TObject); -var - lval: Integer; - i: integer; -begin - for i := 0 to Count-1 do begin - with TROSerializer(ASerializer) do - ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i); - Items[i] := lval; - end; -end; - -procedure TIntegerArray.WriteComplex(ASerializer: TObject); -var - i: integer; -begin - for i := 0 to Count-1 do - with TROSerializer(ASerializer) do - WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i); -end; - -{ TRdxLoginInfo } - -procedure TRdxLoginInfo.Assign(iSource: TPersistent); -var lSource: Etiquetas_Intf.TRdxLoginInfo; -begin - inherited Assign(iSource); - if (iSource is Etiquetas_Intf.TRdxLoginInfo) then begin - lSource := Etiquetas_Intf.TRdxLoginInfo(iSource); - UserID := lSource.UserID; - SessionID := lSource.SessionID; - Usuario := lSource.Usuario; - Perfiles.Assign(lSource.Perfiles); - Empresas.Assign(lSource.Empresas); - end; -end; - -function TRdxLoginInfo.GetPerfiles: StringArray; -begin - if (fPerfiles = nil) then fPerfiles := StringArray.Create(); - result := fPerfiles; -end; - -function TRdxLoginInfo.GetEmpresas: TRdxEmpresasArray; -begin - if (fEmpresas = nil) then fEmpresas := TRdxEmpresasArray.Create(); - result := fEmpresas; -end; - -procedure TRdxLoginInfo.ReadComplex(ASerializer: TObject); -var - l_Empresas: TRdxEmpresasArray; - l_Perfiles: StringArray; - l_SessionID: AnsiString; - l_UserID: Integer; - l_Usuario: AnsiString; -begin - if TROSerializer(ASerializer).RecordStrictOrder then begin - l_UserID := UserID; - TROSerializer(ASerializer).ReadInteger('UserID', otSLong, l_UserID); - UserID := l_UserID; - l_SessionID := SessionID; - TROSerializer(ASerializer).ReadAnsiString('SessionID', l_SessionID); - SessionID := l_SessionID; - l_Usuario := Usuario; - TROSerializer(ASerializer).ReadAnsiString('Usuario', l_Usuario); - Usuario := l_Usuario; - l_Perfiles := Perfiles; - TROSerializer(ASerializer).ReadArray('Perfiles', StringArray, l_Perfiles); - if Perfiles <> l_Perfiles then Perfiles.Free; - Perfiles := l_Perfiles; - l_Empresas := Empresas; - TROSerializer(ASerializer).ReadArray('Empresas', TRdxEmpresasArray, l_Empresas); - if Empresas <> l_Empresas then Empresas.Free; - Empresas := l_Empresas; - end - else begin - l_Empresas := Empresas; - TROSerializer(ASerializer).ReadArray('Empresas', TRdxEmpresasArray, l_Empresas); - if Empresas <> l_Empresas then Empresas.Free; - Empresas := l_Empresas; - l_Perfiles := Perfiles; - TROSerializer(ASerializer).ReadArray('Perfiles', StringArray, l_Perfiles); - if Perfiles <> l_Perfiles then Perfiles.Free; - Perfiles := l_Perfiles; - l_SessionID := SessionID; - TROSerializer(ASerializer).ReadAnsiString('SessionID', l_SessionID); - SessionID := l_SessionID; - l_UserID := UserID; - TROSerializer(ASerializer).ReadInteger('UserID', otSLong, l_UserID); - UserID := l_UserID; - l_Usuario := Usuario; - TROSerializer(ASerializer).ReadAnsiString('Usuario', l_Usuario); - Usuario := l_Usuario; - end; -end; - -procedure TRdxLoginInfo.WriteComplex(ASerializer: TObject); -var - l_Empresas: TRdxEmpresasArray; - l_Perfiles: StringArray; - l_SessionID: AnsiString; - l_UserID: Integer; - l_Usuario: AnsiString; -begin - if TROSerializer(ASerializer).RecordStrictOrder then begin - TROSerializer(ASerializer).ChangeClass(TRdxLoginInfo); - l_UserID := UserID; - TROSerializer(ASerializer).WriteInteger('UserID', otSLong, l_UserID); - l_SessionID := SessionID; - TROSerializer(ASerializer).WriteAnsiString('SessionID', l_SessionID); - l_Usuario := Usuario; - TROSerializer(ASerializer).WriteAnsiString('Usuario', l_Usuario); - l_Perfiles := Perfiles; - TROSerializer(ASerializer).WriteArray('Perfiles', l_Perfiles, StringArray); - l_Empresas := Empresas; - TROSerializer(ASerializer).WriteArray('Empresas', l_Empresas, TRdxEmpresasArray); - end - else begin - l_Empresas := Empresas; - TROSerializer(ASerializer).WriteArray('Empresas', l_Empresas, TRdxEmpresasArray); - l_Perfiles := Perfiles; - TROSerializer(ASerializer).WriteArray('Perfiles', l_Perfiles, StringArray); - l_SessionID := SessionID; - TROSerializer(ASerializer).WriteAnsiString('SessionID', l_SessionID); - l_UserID := UserID; - TROSerializer(ASerializer).WriteInteger('UserID', otSLong, l_UserID); - l_Usuario := Usuario; - TROSerializer(ASerializer).WriteAnsiString('Usuario', l_Usuario); - end; -end; - -{ TRdxLoginInfoCollection } -constructor TRdxLoginInfoCollection.Create; -begin - inherited Create(TRdxLoginInfo); -end; - -constructor TRdxLoginInfoCollection.Create(aItemClass: TCollectionItemClass); -begin - inherited Create(aItemClass); -end; - -function TRdxLoginInfoCollection.Add: TRdxLoginInfo; -begin - result := TRdxLoginInfo(inherited Add); -end; - -function TRdxLoginInfoCollection.GetItems(aIndex: integer): TRdxLoginInfo; -begin - result := TRdxLoginInfo(inherited Items[aIndex]); -end; - -procedure TRdxLoginInfoCollection.SetItems(aIndex: integer; const Value: TRdxLoginInfo); -begin - TRdxLoginInfo(inherited Items[aIndex]).Assign(Value); -end; - -{ CosrvContactos } - -class function CosrvContactos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos; -begin - result := TsrvContactos_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvContactos_Proxy } - -function TsrvContactos_Proxy.__GetInterfaceName:string; -begin - result := 'srvContactos'; -end; - -function TsrvContactos_Proxy.GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'GenerarInformeEtiquetas'); - __Message.Write('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -function TsrvContactos_Proxy.GenerarInformeFichaPaciente(const ListaID: TIntegerArray): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'GenerarInformeFichaPaciente'); - __Message.Write('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -{ CosrvLogin } - -class function CosrvLogin.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin; -begin - result := TsrvLogin_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvLogin_Proxy } - -function TsrvLogin_Proxy.__GetInterfaceName:string; -begin - result := 'srvLogin'; -end; - -function TsrvLogin_Proxy.Login(const User: AnsiString; const Password: AnsiString; out LoginInfo: TRdxLoginInfo): Boolean; -begin - try - LoginInfo := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'Login'); - __Message.Write('User', TypeInfo(AnsiString), User, []); - __Message.Write('Password', TypeInfo(AnsiString), Password, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Boolean), result, []); - __Message.Read('LoginInfo', TypeInfo(Etiquetas_Intf.TRdxLoginInfo), LoginInfo, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -procedure TsrvLogin_Proxy.Logout; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'Logout'); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - finally - __Message.FreeStream; - end -end; - -function TsrvLogin_Proxy.Ping: Boolean; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'Ping'); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Boolean), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -{ CosrvEmpresas } - -class function CosrvEmpresas.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEmpresas; -begin - result := TsrvEmpresas_Proxy.Create(aMessage, aTransportChannel); -end; - -function TsrvEmpresas_Proxy.__GetInterfaceName:string; -begin - result := 'srvEmpresas'; -end; - -{ CosrvConfiguracion } - -class function CosrvConfiguracion.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion; -begin - result := TsrvConfiguracion_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvConfiguracion_Proxy } - -function TsrvConfiguracion_Proxy.__GetInterfaceName:string; -begin - result := 'srvConfiguracion'; -end; - -function TsrvConfiguracion_Proxy.darValor(const CODIGO: AnsiString; const ValorPorDefecto: AnsiString): AnsiString; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'darValor'); - __Message.Write('CODIGO', TypeInfo(AnsiString), CODIGO, []); - __Message.Write('ValorPorDefecto', TypeInfo(AnsiString), ValorPorDefecto, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(AnsiString), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -{ CosrvUsuarios } - -class function CosrvUsuarios.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUsuarios; -begin - result := TsrvUsuarios_Proxy.Create(aMessage, aTransportChannel); -end; - -function TsrvUsuarios_Proxy.__GetInterfaceName:string; -begin - result := 'srvUsuarios'; -end; - -{ CosrvArticulos } - -class function CosrvArticulos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos; -begin - result := TsrvArticulos_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvArticulos_Proxy } - -function TsrvArticulos_Proxy.__GetInterfaceName:string; -begin - result := 'srvArticulos'; -end; - -function TsrvArticulos_Proxy.DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'DarListaProveedoresConArticulos'); - __Message.Write('IDEmpresa', TypeInfo(Integer), IDEmpresa, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -{ CosrvAlbaranesCliente } - -class function CosrvAlbaranesCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente; -begin - result := TsrvAlbaranesCliente_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvAlbaranesCliente_Proxy } - -function TsrvAlbaranesCliente_Proxy.__GetInterfaceName:string; -begin - result := 'srvAlbaranesCliente'; -end; - -function TsrvAlbaranesCliente_Proxy.GenerarInforme(const ListaID: TIntegerArray): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'GenerarInforme'); - __Message.Write('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'GenerarInformeEtiquetas'); - __Message.Write('ID', TypeInfo(Integer), ID, []); - __Message.Write('withRefCliente', TypeInfo(Boolean), withRefCliente, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -function TsrvAlbaranesCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'GenerarInformeEnPDF'); - __Message.Write('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -{ CosrvReferencias } - -class function CosrvReferencias.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvReferencias; -begin - result := TsrvReferencias_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvReferencias_Proxy } - -function TsrvReferencias_Proxy.__GetInterfaceName:string; -begin - result := 'srvReferencias'; -end; - -function TsrvReferencias_Proxy.DarNuevaReferencia(const NombreReferencia: AnsiString; const EmpresaID: Integer): AnsiString; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'DarNuevaReferencia'); - __Message.Write('NombreReferencia', TypeInfo(AnsiString), NombreReferencia, []); - __Message.Write('EmpresaID', TypeInfo(Integer), EmpresaID, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(AnsiString), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -function TsrvReferencias_Proxy.IncrementarValorReferencia(const NombreReferencia: AnsiString; const Valor: AnsiString; const EmpresaID: Integer): Boolean; -begin - try - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'IncrementarValorReferencia'); - __Message.Write('NombreReferencia', TypeInfo(AnsiString), NombreReferencia, []); - __Message.Write('Valor', TypeInfo(AnsiString), Valor, []); - __Message.Write('EmpresaID', TypeInfo(Integer), EmpresaID, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Boolean), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -{ CosrvUnidadesMedida } - -class function CosrvUnidadesMedida.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUnidadesMedida; -begin - result := TsrvUnidadesMedida_Proxy.Create(aMessage, aTransportChannel); -end; - -function TsrvUnidadesMedida_Proxy.__GetInterfaceName:string; -begin - result := 'srvUnidadesMedida'; -end; - -{ CosrvProvinciasPoblaciones } - -class function CosrvProvinciasPoblaciones.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvProvinciasPoblaciones; -begin - result := TsrvProvinciasPoblaciones_Proxy.Create(aMessage, aTransportChannel); -end; - -{ TsrvProvinciasPoblaciones_Proxy } - -function TsrvProvinciasPoblaciones_Proxy.__GetInterfaceName:string; -begin - result := 'srvProvinciasPoblaciones'; -end; - -function TsrvProvinciasPoblaciones_Proxy.DarListaProvincias: Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'DarListaProvincias'); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -function TsrvProvinciasPoblaciones_Proxy.DarListaPoblaciones(const ID_Provincia: Integer): Binary; -begin - try - result := nil; - __Message.InitializeRequestMessage(__TransportChannel, 'Etiquetas', __InterfaceName, 'DarListaPoblaciones'); - __Message.Write('ID_Provincia', TypeInfo(Integer), ID_Provincia, []); - __Message.Finalize; - - __TransportChannel.Dispatch(__Message); - - __Message.Read('Result', TypeInfo(Binary), result, []); - finally - __Message.UnsetAttributes(__TransportChannel); - __Message.FreeStream; - end -end; - -initialization - RegisterROClass(TRdxLoginInfo); - RegisterROClass(TRdxEmpresasArray); - RegisterROClass(TIntegerArray); - RegisterProxyClass(IsrvContactos_IID, TsrvContactos_Proxy); - RegisterProxyClass(IsrvLogin_IID, TsrvLogin_Proxy); - RegisterProxyClass(IsrvEmpresas_IID, TsrvEmpresas_Proxy); - RegisterProxyClass(IsrvConfiguracion_IID, TsrvConfiguracion_Proxy); - RegisterProxyClass(IsrvUsuarios_IID, TsrvUsuarios_Proxy); - RegisterProxyClass(IsrvArticulos_IID, TsrvArticulos_Proxy); - RegisterProxyClass(IsrvAlbaranesCliente_IID, TsrvAlbaranesCliente_Proxy); - RegisterProxyClass(IsrvReferencias_IID, TsrvReferencias_Proxy); - RegisterProxyClass(IsrvUnidadesMedida_IID, TsrvUnidadesMedida_Proxy); - RegisterProxyClass(IsrvProvinciasPoblaciones_IID, TsrvProvinciasPoblaciones_Proxy); - - -finalization - UnregisterROClass(TRdxLoginInfo); - UnregisterROClass(TRdxEmpresasArray); - UnregisterROClass(TIntegerArray); - UnregisterProxyClass(IsrvContactos_IID); - UnregisterProxyClass(IsrvLogin_IID); - UnregisterProxyClass(IsrvEmpresas_IID); - UnregisterProxyClass(IsrvConfiguracion_IID); - UnregisterProxyClass(IsrvUsuarios_IID); - UnregisterProxyClass(IsrvArticulos_IID); - UnregisterProxyClass(IsrvAlbaranesCliente_IID); - UnregisterProxyClass(IsrvReferencias_IID); - UnregisterProxyClass(IsrvUnidadesMedida_IID); - UnregisterProxyClass(IsrvProvinciasPoblaciones_IID); - -end. diff --git a/Source/Servidor/Etiquetas_Invk.pas b/Source/Servidor/Etiquetas_Invk.pas deleted file mode 100644 index c2ef542..0000000 --- a/Source/Servidor/Etiquetas_Invk.pas +++ /dev/null @@ -1,566 +0,0 @@ -unit Etiquetas_Invk; - -{----------------------------------------------------------------------------} -{ This unit was automatically generated by the RemObjects SDK after reading } -{ the RODL file associated with this project . } -{ } -{ Do not modify this unit manually, or your changes will be lost when this } -{ unit is regenerated the next time you compile the project. } -{----------------------------------------------------------------------------} - -{$I RemObjects.inc} - -interface - -uses - {vcl:} Classes, - {RemObjects:} uROXMLIntf, uROServer, uROServerIntf, uROTypes, uROClientIntf, - {Used RODL Intf's:} DataAbstract4_Intf, - {Used RODL Invk's:} DataAbstract4_Invk, - {Generated:} Etiquetas_Intf; - -type - TsrvContactos_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_GenerarInformeFichaPaciente(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - - TsrvLogin_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_Ping(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - - TsrvEmpresas_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - end; - - TsrvConfiguracion_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_darValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - - TsrvUsuarios_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - end; - - TsrvArticulos_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_DarListaProveedoresConArticulos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - - TsrvAlbaranesCliente_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - - TsrvReferencias_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_IncrementarValorReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - - TsrvUnidadesMedida_Invoker = class(TDataAbstractService_Invoker) - private - protected - public - constructor Create; override; - published - end; - - TsrvProvinciasPoblaciones_Invoker = class(TROInvoker) - private - protected - public - constructor Create; override; - published - procedure Invoke_DarListaProvincias(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - procedure Invoke_DarListaPoblaciones(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); - end; - -implementation - -uses - {RemObjects:} uRORes, uROClient; - -{ TsrvContactos_Invoker } - -constructor TsrvContactos_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvContactos_Invoker.Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEtiquetas(const ListaID: TIntegerArray): Binary; } -var - ListaID: Etiquetas_Intf.TIntegerArray; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - ListaID := nil; - lResult := nil; - try - __Message.Read('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - - lResult := (__Instance as IsrvContactos).GenerarInformeEtiquetas(ListaID); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvContactos', 'GenerarInformeEtiquetasResponse'); - __Message.Write('Result', TypeInfo(Binary), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - __lObjectDisposer := TROObjectDisposer.Create(__Instance); - try - __lObjectDisposer.Add(ListaID); - __lObjectDisposer.Add(lResult); - finally - __lObjectDisposer.Free(); - end; - end; -end; - -procedure TsrvContactos_Invoker.Invoke_GenerarInformeFichaPaciente(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeFichaPaciente(const ListaID: TIntegerArray): Binary; } -var - ListaID: Etiquetas_Intf.TIntegerArray; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - ListaID := nil; - lResult := nil; - try - __Message.Read('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - - lResult := (__Instance as IsrvContactos).GenerarInformeFichaPaciente(ListaID); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvContactos', 'GenerarInformeFichaPacienteResponse'); - __Message.Write('Result', TypeInfo(Binary), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - __lObjectDisposer := TROObjectDisposer.Create(__Instance); - try - __lObjectDisposer.Add(ListaID); - __lObjectDisposer.Add(lResult); - finally - __lObjectDisposer.Free(); - end; - end; -end; - -{ TsrvLogin_Invoker } - -constructor TsrvLogin_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvLogin_Invoker.Invoke_Login(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function Login(const User: AnsiString; const Password: AnsiString; out LoginInfo: TRdxLoginInfo): Boolean; } -var - User: AnsiString; - Password: AnsiString; - LoginInfo: Etiquetas_Intf.TRdxLoginInfo; - lResult: Boolean; - __lObjectDisposer: TROObjectDisposer; -begin - LoginInfo := nil; - try - __Message.Read('User', TypeInfo(AnsiString), User, []); - __Message.Read('Password', TypeInfo(AnsiString), Password, []); - - lResult := (__Instance as IsrvLogin).Login(User, Password, LoginInfo); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvLogin', 'LoginResponse'); - __Message.Write('Result', TypeInfo(Boolean), lResult, []); - __Message.Write('LoginInfo', TypeInfo(Etiquetas_Intf.TRdxLoginInfo), LoginInfo, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - __lObjectDisposer := TROObjectDisposer.Create(__Instance); - try - __lObjectDisposer.Add(LoginInfo); - finally - __lObjectDisposer.Free(); - end; - end; -end; - -procedure TsrvLogin_Invoker.Invoke_Logout(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ procedure Logout; } -begin - try - (__Instance as IsrvLogin).Logout; - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', '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, 'Etiquetas', 'srvLogin', 'PingResponse'); - __Message.Write('Result', TypeInfo(Boolean), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - end; -end; - -{ TsrvEmpresas_Invoker } - -constructor TsrvEmpresas_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -{ TsrvConfiguracion_Invoker } - -constructor TsrvConfiguracion_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvConfiguracion_Invoker.Invoke_darValor(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function darValor(const CODIGO: AnsiString; const ValorPorDefecto: AnsiString): AnsiString; } -var - CODIGO: AnsiString; - ValorPorDefecto: AnsiString; - lResult: AnsiString; -begin - try - __Message.Read('CODIGO', TypeInfo(AnsiString), CODIGO, []); - __Message.Read('ValorPorDefecto', TypeInfo(AnsiString), ValorPorDefecto, []); - - lResult := (__Instance as IsrvConfiguracion).darValor(CODIGO, ValorPorDefecto); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvConfiguracion', 'darValorResponse'); - __Message.Write('Result', TypeInfo(AnsiString), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - end; -end; - -{ TsrvUsuarios_Invoker } - -constructor TsrvUsuarios_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -{ TsrvArticulos_Invoker } - -constructor TsrvArticulos_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvArticulos_Invoker.Invoke_DarListaProveedoresConArticulos(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function DarListaProveedoresConArticulos(const IDEmpresa: Integer): Binary; } -var - IDEmpresa: Integer; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - lResult := nil; - try - __Message.Read('IDEmpresa', TypeInfo(Integer), IDEmpresa, []); - - lResult := (__Instance as IsrvArticulos).DarListaProveedoresConArticulos(IDEmpresa); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvArticulos', 'DarListaProveedoresConArticulosResponse'); - __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; - -{ TsrvAlbaranesCliente_Invoker } - -constructor TsrvAlbaranesCliente_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInforme(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInforme(const ListaID: TIntegerArray): Binary; } -var - ListaID: Etiquetas_Intf.TIntegerArray; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - ListaID := nil; - lResult := nil; - try - __Message.Read('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInforme(ListaID); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvAlbaranesCliente', 'GenerarInformeResponse'); - __Message.Write('Result', TypeInfo(Binary), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - __lObjectDisposer := TROObjectDisposer.Create(__Instance); - try - __lObjectDisposer.Add(ListaID); - __lObjectDisposer.Add(lResult); - finally - __lObjectDisposer.Free(); - end; - end; -end; - -procedure TsrvAlbaranesCliente_Invoker.Invoke_GenerarInformeEtiquetas(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary; } -var - ID: Integer; - withRefCliente: Boolean; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - lResult := nil; - try - __Message.Read('ID', TypeInfo(Integer), ID, []); - __Message.Read('withRefCliente', TypeInfo(Boolean), withRefCliente, []); - - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEtiquetas(ID, withRefCliente); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvAlbaranesCliente', 'GenerarInformeEtiquetasResponse'); - __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 TsrvAlbaranesCliente_Invoker.Invoke_GenerarInformeEnPDF(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; } -var - ListaID: Etiquetas_Intf.TIntegerArray; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - ListaID := nil; - lResult := nil; - try - __Message.Read('ListaID', TypeInfo(Etiquetas_Intf.TIntegerArray), ListaID, []); - - lResult := (__Instance as IsrvAlbaranesCliente).GenerarInformeEnPDF(ListaID); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvAlbaranesCliente', 'GenerarInformeEnPDFResponse'); - __Message.Write('Result', TypeInfo(Binary), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - __lObjectDisposer := TROObjectDisposer.Create(__Instance); - try - __lObjectDisposer.Add(ListaID); - __lObjectDisposer.Add(lResult); - finally - __lObjectDisposer.Free(); - end; - end; -end; - -{ TsrvReferencias_Invoker } - -constructor TsrvReferencias_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvReferencias_Invoker.Invoke_DarNuevaReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function DarNuevaReferencia(const NombreReferencia: AnsiString; const EmpresaID: Integer): AnsiString; } -var - NombreReferencia: AnsiString; - EmpresaID: Integer; - lResult: AnsiString; -begin - try - __Message.Read('NombreReferencia', TypeInfo(AnsiString), NombreReferencia, []); - __Message.Read('EmpresaID', TypeInfo(Integer), EmpresaID, []); - - lResult := (__Instance as IsrvReferencias).DarNuevaReferencia(NombreReferencia, EmpresaID); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvReferencias', 'DarNuevaReferenciaResponse'); - __Message.Write('Result', TypeInfo(AnsiString), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - end; -end; - -procedure TsrvReferencias_Invoker.Invoke_IncrementarValorReferencia(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function IncrementarValorReferencia(const NombreReferencia: AnsiString; const Valor: AnsiString; const EmpresaID: Integer): Boolean; } -var - NombreReferencia: AnsiString; - Valor: AnsiString; - EmpresaID: Integer; - lResult: Boolean; -begin - try - __Message.Read('NombreReferencia', TypeInfo(AnsiString), NombreReferencia, []); - __Message.Read('Valor', TypeInfo(AnsiString), Valor, []); - __Message.Read('EmpresaID', TypeInfo(Integer), EmpresaID, []); - - lResult := (__Instance as IsrvReferencias).IncrementarValorReferencia(NombreReferencia, Valor, EmpresaID); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvReferencias', 'IncrementarValorReferenciaResponse'); - __Message.Write('Result', TypeInfo(Boolean), lResult, []); - __Message.Finalize; - __Message.UnsetAttributes(__Transport); - - finally - end; -end; - -{ TsrvUnidadesMedida_Invoker } - -constructor TsrvUnidadesMedida_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -{ TsrvProvinciasPoblaciones_Invoker } - -constructor TsrvProvinciasPoblaciones_Invoker.Create; -begin - inherited Create; - FAbstract := False; -end; - -procedure TsrvProvinciasPoblaciones_Invoker.Invoke_DarListaProvincias(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function DarListaProvincias: Binary; } -var - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - lResult := nil; - try - lResult := (__Instance as IsrvProvinciasPoblaciones).DarListaProvincias; - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvProvinciasPoblaciones', 'DarListaProvinciasResponse'); - __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 TsrvProvinciasPoblaciones_Invoker.Invoke_DarListaPoblaciones(const __Instance:IInterface; const __Message:IROMessage; const __Transport:IROTransport; out __oResponseOptions:TROResponseOptions); -{ function DarListaPoblaciones(const ID_Provincia: Integer): Binary; } -var - ID_Provincia: Integer; - lResult: Binary; - __lObjectDisposer: TROObjectDisposer; -begin - lResult := nil; - try - __Message.Read('ID_Provincia', TypeInfo(Integer), ID_Provincia, []); - - lResult := (__Instance as IsrvProvinciasPoblaciones).DarListaPoblaciones(ID_Provincia); - - __Message.InitializeResponseMessage(__Transport, 'Etiquetas', 'srvProvinciasPoblaciones', 'DarListaPoblacionesResponse'); - __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; - -initialization -end. diff --git a/Source/Servidor/Etiquetas_Server.dpr b/Source/Servidor/Etiquetas_Server.dpr index 625da4d..3eb4f8b 100644 --- a/Source/Servidor/Etiquetas_Server.dpr +++ b/Source/Servidor/Etiquetas_Server.dpr @@ -30,12 +30,9 @@ uses uBizPacientesServer in '..\Modulos\Contactos\Model\uBizPacientesServer.pas', schBase_Intf in '..\Base\schBase_Intf.pas', srvArticulos_Impl in '..\Modulos\Articulos\Servidor\srvArticulos_Impl.pas' {srvArticulos: TDARemoteService}, - srvAlbaranesCliente_Impl in '..\Modulos\Albaranes de cliente\Servidor\srvAlbaranesCliente_Impl.pas' {srvAlbaranesCliente: TDataAbstractService}, - uBizAlbaranClienteServer in '..\Modulos\Albaranes de cliente\Model\uBizAlbaranClienteServer.pas', srvUnidadesMedida_Impl in '..\Modulos\Unidades de medida\Servidor\srvUnidadesMedida_Impl.pas' {srvUnidadesMedida: TDataAbstractService}, schUnidadesMedidaClient_Intf in '..\Modulos\Unidades de medida\Model\schUnidadesMedidaClient_Intf.pas', schUnidadesMedidaServer_Intf in '..\Modulos\Unidades de medida\Model\schUnidadesMedidaServer_Intf.pas', - uRptAlbaranesCliente_Server in '..\Modulos\Albaranes de cliente\Reports\uRptAlbaranesCliente_Server.pas' {RptAlbaranesCliente: TDataModule}, uStringsUtils in '..\Base\Utiles\uStringsUtils.pas', uSistemaFunc in '..\Base\Utiles\uSistemaFunc.pas', srvReferencias_Impl in '..\Modulos\Referencias\Servidor\srvReferencias_Impl.pas' {srvReferencias: TDataAbstractService}, @@ -44,10 +41,7 @@ uses uRptFichasPaciente_Server in '..\Modulos\Contactos\Reports\uRptFichasPaciente_Server.pas' {RptFichasPaciente: TDataModule}, uRptEtiquetasContacto_Server in '..\Modulos\Contactos\Reports\uRptEtiquetasContacto_Server.pas' {RptEtiquetasContacto: TDataModule}, srvProvinciasPoblaciones_Impl in '..\ApplicationBase\ProvinciasPoblaciones\Servidor\srvProvinciasPoblaciones_Impl.pas' {srvProvinciasPoblaciones_Impl: TDataModule}, - uBizArticulosServer in '..\Modulos\Articulos\Model\uBizArticulosServer.pas', uBizEmpresasServer in '..\ApplicationBase\Empresas\Model\uBizEmpresasServer.pas', - schAlbaranesClienteClient_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteClient_Intf.pas', - schAlbaranesClienteServer_Intf in '..\Modulos\Albaranes de cliente\Model\schAlbaranesClienteServer_Intf.pas', schUsuariosClient_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosClient_Intf.pas', schUsuariosServer_Intf in '..\ApplicationBase\Usuarios\Model\schUsuariosServer_Intf.pas', MidasSpeedFix in 'Utiles\MidasSpeedFix.pas', @@ -57,8 +51,13 @@ uses schArticulosServer_Intf in '..\Modulos\Articulos\Model\schArticulosServer_Intf.pas', schContactosClient_Intf in '..\Modulos\Contactos\Model\schContactosClient_Intf.pas', schContactosServer_Intf in '..\Modulos\Contactos\Model\schContactosServer_Intf.pas', + uConexionBD_MSSQL in 'Configuracion\uConexionBD_MSSQL.pas' {frConexionBD_MSSQL: TFrame}, + srvMedicacion_Impl in '..\Modulos\Medicaciones\Servidor\srvMedicacion_Impl.pas' {srvMedicacion: TDataAbstractService}, + Etiquetas_Invk in '..\Servicios\Etiquetas_Invk.pas', Etiquetas_Intf in '..\Servicios\Etiquetas_Intf.pas', - Etiquetas_Invk in '..\Servicios\Etiquetas_Invk.pas'; + schMedicacionClient_Intf in '..\Modulos\Medicaciones\Model\schMedicacionClient_Intf.pas', + schMedicacionServer_Intf in '..\Modulos\Medicaciones\Model\schMedicacionServer_Intf.pas', + uBizMedicacionServer in '..\Modulos\Medicaciones\Model\uBizMedicacionServer.pas'; {$R *.res} {$R ..\Servicios\RODLFile.res} diff --git a/Source/Servidor/Etiquetas_Server.dproj b/Source/Servidor/Etiquetas_Server.dproj index 248a5dc..5e1d968 100644 --- a/Source/Servidor/Etiquetas_Server.dproj +++ b/Source/Servidor/Etiquetas_Server.dproj @@ -69,20 +69,8 @@ - - - - -
RptAlbaranesCliente
- TDataModule -
- -
srvAlbaranesCliente
- TDataAbstractService -
-
srvArticulos
TDARemoteService @@ -103,6 +91,13 @@
srvContactos
TDARemoteService
+ + + + +
srvMedicacion
+ TDataAbstractService +
@@ -125,6 +120,10 @@
frConexionBD
TFrame
+ +
frConexionBD_MSSQL
+ TFrame +
frConfGeneral
TFrame @@ -137,8 +136,6 @@
FrameConfiguracion
TFrame
- -
srvLogin
TDARemoteService diff --git a/Source/Servidor/Etiquetas_Server.rc b/Source/Servidor/Etiquetas_Server.rc index f3687fe..36dd6b1 100644 --- a/Source/Servidor/Etiquetas_Server.rc +++ b/Source/Servidor/Etiquetas_Server.rc @@ -17,7 +17,7 @@ BEGIN VALUE "InternalName", "Etiquetas Server\0" VALUE "ProductName", "Etiquetas Server\0" VALUE "ProductVersion", "1.0.0.0\0" - VALUE "CompileDate", "martes, 15 de noviembre de 2011 19:45\0" + VALUE "CompileDate", "miércoles, 23 de noviembre de 2011 16:42\0" END END BLOCK "VarFileInfo" diff --git a/Source/Servidor/Etiquetas_Server.res b/Source/Servidor/Etiquetas_Server.res index e65dbe9..bab54ff 100644 Binary files a/Source/Servidor/Etiquetas_Server.res and b/Source/Servidor/Etiquetas_Server.res differ diff --git a/Source/Servidor/srvMedicacion_Impl.dfm b/Source/Servidor/srvMedicacion_Impl.dfm new file mode 100644 index 0000000..76bb6cf --- /dev/null +++ b/Source/Servidor/srvMedicacion_Impl.dfm @@ -0,0 +1,7 @@ +inherited srvMedicacion: TsrvMedicacion + OldCreateOrder = True + Left = 200 + Top = 200 + Height = 300 + Width = 300 +end diff --git a/Source/Servidor/srvMedicacion_Impl.pas b/Source/Servidor/srvMedicacion_Impl.pas new file mode 100644 index 0000000..eb0e69f --- /dev/null +++ b/Source/Servidor/srvMedicacion_Impl.pas @@ -0,0 +1,66 @@ +unit srvMedicacion_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:} DataAbstractService_Impl, + {Used RODLs:} DataAbstract4_Intf, + {Generated:} Etiquetas_Intf; + +type + { TsrvMedicacion } + TsrvMedicacion = class(TDataAbstractService, IsrvMedicacion) + private + protected + { IsrvMedicacion methods } + function GenerarInforme(const ListaID: TIntegerArray): Binary; + function GenerarInformeEtiquetas(const ID: Integer): Binary; + function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; + end; + +implementation + +{$R *.dfm} +uses + {Generated:} Etiquetas_Invk; + +procedure Create_srvMedicacion(out anInstance : IUnknown); +begin + anInstance := TsrvMedicacion.Create(nil); +end; + +{ srvMedicacion } +function TsrvMedicacion.GenerarInforme(const ListaID: TIntegerArray): Binary; +begin +end; + +function TsrvMedicacion.GenerarInformeEtiquetas(const ID: Integer): Binary; +begin +end; + +function TsrvMedicacion.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary; +begin +end; + +var + fClassFactory: IROClassFactory; +initialization + fClassFactory := TROClassFactory.Create('srvMedicacion', Create_srvMedicacion, TsrvMedicacion_Invoker); + +finalization + UnRegisterClassFactory(fClassFactory); + fClassFactory := nil; + +end. diff --git a/Source/Servidor/uDataModuleServer.dfm b/Source/Servidor/uDataModuleServer.dfm index bd013eb..04af9e6 100644 --- a/Source/Servidor/uDataModuleServer.dfm +++ b/Source/Servidor/uDataModuleServer.dfm @@ -36,6 +36,13 @@ object dmServer: TdmServer object ConnectionManager: TDAConnectionManager OnConnectionAcquired = ConnectionManagerConnectionAcquired Connections = < + item + Name = 'FARMATIC' + ConnectionString = + 'ADO?AuxDriver=SQLOLEDB.1;Server=ROB_VM_FARMACIA\FARMATIC;Databas' + + 'e=farmatic;UserID=rodax;Password=rodax;' + ConnectionType = 'MSSQL' + end item Name = 'IBX' ConnectionString = diff --git a/Source/Servidor/uDataModuleServer.pas b/Source/Servidor/uDataModuleServer.pas index 21de8c6..584ae07 100644 --- a/Source/Servidor/uDataModuleServer.pas +++ b/Source/Servidor/uDataModuleServer.pas @@ -11,6 +11,7 @@ uses const SERVER_PORT = '8099'; // Puerto por defecto DBSERVER_PORT = '3050'; // Puerto de la BD por defecto + MSSQL_PORT = '1433'; // Puerto de la BD por defecto en SQL Server SESION_LOGININFO = 'LoginInfo'; @@ -46,7 +47,11 @@ type FDBUser : string; FDBPass : string; - FOSCServer : string; + FMSSQLServer: string; + FMSSQLPort : string; + FMSSQLPath : string; + FMSSQLUser : string; + FMSSQLPass : string; FInicioWindows : Boolean; FServerPort : string; @@ -205,7 +210,11 @@ begin FDBUser := ReadString('UserDB', ''); FDBPass := ReadString('PassDB', ''); - FOSCServer := ReadString('ServerOSC'); + FMSSQLServer := ReadString('ServerDB', 'localhost'); + FDBPort := ReadString('PortDB', DBSERVER_PORT); + FDBPath := ReadString('PathDB'); + FDBUser := ReadString('UserDB', ''); + FDBPass := ReadString('PassDB', ''); FServerPort := ReadString('ServerPort', SERVER_PORT); FInicioWindows := ReadBoolean('InicioWindows', False); @@ -225,8 +234,6 @@ begin WriteString('PassDB', FDBPass); WriteString('ServerPort', FServerPort); - WriteString('ServerOSC', FOSCServer); - WriteBoolean('InicioWindows', FInicioWindows); if FInicioWindows then WriteAutoRun('AdminPV_Server', Application.ExeName) diff --git a/Tools/Firebird/Firebird-2.0.1.12855-1-Win32.exe b/Tools/Firebird/Firebird-2.0.1.12855-1-Win32.exe new file mode 100644 index 0000000..da6b2b5 Binary files /dev/null and b/Tools/Firebird/Firebird-2.0.1.12855-1-Win32.exe differ